<?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 równoważenie hydrauliczne - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/tag/rownowazenie-hydrauliczne/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/tag/rownowazenie-hydrauliczne/</link>
	<description>Ogrzewanie podłogowe i systemy HVAC oparte na obliczeniach.</description>
	<lastBuildDate>Fri, 11 Sep 2026 07:52:23 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2026/10/Projekt-Ogrzewania-favicon-512-100x100.webp</url>
	<title>Archiwa równoważenie hydrauliczne - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/rownowazenie-hydrauliczne/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Obieg grzewczy w wodnym ogrzewaniu podłogowym &#8211; – schemat, pompa i przepływ.</title>
		<link>https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Wed, 21 Jan 2026 09:39:43 +0000</pubDate>
				<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Hydraulika grzewcza]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></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[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[hydraulika ogrzewania]]></category>
		<category><![CDATA[instalacja c.o.]]></category>
		<category><![CDATA[obieg grzewczy]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[podłogówka wodna]]></category>
		<category><![CDATA[pompa obiegowa]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[równoważenie hydrauliczne]]></category>
		<category><![CDATA[rozdzielacz podłogówki]]></category>
		<category><![CDATA[zawór mieszający]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3252</guid>

					<description><![CDATA[<p>Na pierwszy rzut oka wodne ogrzewanie podłogowe wydaje się banalnie proste, jednak to obieg grzewczy w wodnym ogrzewaniu podłogowym decyduje o tym, czy system będzie komfortowy, energooszczędny i bezproblemowy przez lata. W artykule krok po kroku wyjaśniamy, jak działa układ hydrauliczny podłogówki, z jakich elementów się składa, jakie parametry są kluczowe oraz dlaczego równoważenie hydrauliczne jest absolutną podstawą poprawnego działania instalacji. To praktyczna wiedza zarówno dla inwestorów, jak i instalatorów, którzy chcą uniknąć kosztownych błędów.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/">Obieg grzewczy w wodnym ogrzewaniu podłogowym &#8211; – schemat, pompa i przepływ.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-circuit-guide {
    --rk-circuit-navy: #123247;
    --rk-circuit-navy-deep: #0b2536;
    --rk-circuit-teal: #0e7787;
    --rk-circuit-cyan: #5fdef0;
    --rk-circuit-orange: #ff7a21;
    --rk-circuit-green: #248c68;
    --rk-circuit-red: #c64b48;
    --rk-circuit-amber: #b77812;
    --rk-circuit-ink: #173246;
    --rk-circuit-muted: #5d7180;
    --rk-circuit-line: #d7e1e7;
    --rk-circuit-soft: #f3f7f9;
    --rk-circuit-white: #ffffff;
    --rk-circuit-shadow: 0 18px 48px rgba(13, 43, 60, 0.12);
    color: var(--rk-circuit-ink);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    font-size: 18px;
    line-height: 1.72;
    overflow-x: hidden;
  }

  #rk-circuit-guide,
  #rk-circuit-guide *,
  #rk-circuit-guide *::before,
  #rk-circuit-guide *::after {
    box-sizing: border-box;
  }

  #rk-circuit-guide .rk-circuit-shell {
    width: min(1240px, 100%);
    margin: 0 auto;
  }

  #rk-circuit-guide a {
    color: #087a9f;
    text-decoration-thickness: 1.5px;
    text-underline-offset: 3px;
    overflow-wrap: anywhere;
  }

  #rk-circuit-guide a:hover {
    color: #055d79;
  }

  #rk-circuit-guide p,
  #rk-circuit-guide ul,
  #rk-circuit-guide ol {
    margin: 0 0 1.1rem;
  }

  #rk-circuit-guide strong {
    color: inherit;
  }

  #rk-circuit-guide .rk-circuit-hero {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    padding: clamp(42px, 6vw, 78px);
    border-radius: 32px;
    background:
      radial-gradient(circle at 90% 112%, rgba(95, 222, 240, 0.16) 0 150px, transparent 151px),
      radial-gradient(circle at 90% 112%, transparent 0 205px, rgba(95, 222, 240, 0.09) 206px 275px, transparent 276px),
      linear-gradient(115deg, #122f43 0%, #123c4f 56%, #0d5b63 100%);
    color: #ffffff;
    box-shadow: var(--rk-circuit-shadow);
  }

  #rk-circuit-guide .rk-circuit-hero::before {
    content: "";
    position: absolute;
    z-index: -1;
    left: -120px;
    bottom: -180px;
    width: 440px;
    height: 440px;
    border-radius: 50%;
    background: rgba(255, 122, 33, 0.10);
    filter: blur(2px);
  }

  #rk-circuit-guide .rk-circuit-hero-inner {
    position: relative;
    z-index: 1;
  }

  #rk-circuit-guide .rk-circuit-kicker,
  #rk-circuit-guide .rk-circuit-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 18px;
    color: var(--rk-circuit-orange);
    font-size: 0.78rem;
    font-weight: 850;
    letter-spacing: 0.13em;
    line-height: 1.35;
    text-transform: uppercase;
  }

  #rk-circuit-guide .rk-circuit-kicker::before,
  #rk-circuit-guide .rk-circuit-eyebrow::before {
    content: "";
    flex: 0 0 9px;
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: currentColor;
  }

  #rk-circuit-guide .rk-circuit-hero-title {
    max-width: 1110px;
    margin: 0;
    color: #ffffff;
    font-size: clamp(2.55rem, 6.1vw, 5.2rem);
    font-weight: 900;
    letter-spacing: -0.055em;
    line-height: 0.98;
    text-wrap: balance;
  }

  #rk-circuit-guide .rk-circuit-hero-title span {
    color: var(--rk-circuit-cyan);
  }

  #rk-circuit-guide .rk-circuit-hero-lead {
    max-width: 1050px;
    margin: 30px 0 0;
    color: #eef9fc;
    font-size: clamp(1.05rem, 2vw, 1.34rem);
    line-height: 1.62;
  }

  #rk-circuit-guide .rk-circuit-hero-tags {
    display: flex;
    flex-wrap: wrap;
    gap: 11px;
    margin: 28px 0 0;
  }

  #rk-circuit-guide .rk-circuit-hero-tag {
    display: inline-flex;
    align-items: center;
    min-height: 42px;
    padding: 8px 17px;
    border: 1px solid rgba(255, 255, 255, 0.26);
    border-radius: 999px;
    background: rgba(255, 255, 255, 0.08);
    color: #ffffff;
    font-size: 0.84rem;
    font-weight: 800;
    line-height: 1.3;
  }

  #rk-circuit-guide .rk-circuit-byline {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 24px;
    margin: 34px 0 0;
    color: #e5f0f4;
    font-size: 0.85rem;
    font-weight: 700;
  }

  #rk-circuit-guide .rk-circuit-hero-metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
    margin-top: 38px;
  }

  #rk-circuit-guide .rk-circuit-hero-metric {
    min-width: 0;
    padding: 22px 24px;
    border: 1px solid rgba(255, 255, 255, 0.22);
    border-radius: 19px;
    background: rgba(255, 255, 255, 0.08);
    color: #eff9fb;
    backdrop-filter: blur(5px);
  }

  #rk-circuit-guide .rk-circuit-hero-metric b {
    display: block;
    margin-bottom: 7px;
    color: #ffffff;
    font-size: 1.02rem;
    line-height: 1.3;
  }

  #rk-circuit-guide .rk-circuit-hero-metric span {
    display: block;
    color: #e2f1f5;
    font-size: 0.88rem;
    line-height: 1.55;
  }

  #rk-circuit-guide .rk-circuit-shortcuts {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin: 24px 0;
    padding: 22px;
    border: 1px solid var(--rk-circuit-line);
    border-radius: 22px;
    background: #ffffff;
    box-shadow: 0 10px 30px rgba(18, 50, 71, 0.07);
  }

  #rk-circuit-guide .rk-circuit-shortcuts-label {
    display: block;
    flex-basis: 100%;
    color: var(--rk-circuit-navy);
    font-size: 0.8rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
  }

  #rk-circuit-guide .rk-circuit-shortcuts a {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 7px 13px;
    border: 1px solid #cbd9e1;
    border-radius: 999px;
    background: var(--rk-circuit-soft);
    color: var(--rk-circuit-navy);
    font-size: 0.76rem;
    font-weight: 800;
    line-height: 1.25;
    text-decoration: none;
  }

  #rk-circuit-guide .rk-circuit-shortcuts a:hover {
    border-color: var(--rk-circuit-teal);
    background: #e8f6f8;
    color: #075f6b;
  }

  #rk-circuit-guide .rk-circuit-section,
  #rk-circuit-guide .rk-circuit-author {
    margin: 24px 0;
    padding: clamp(30px, 5vw, 62px);
    border: 1px solid var(--rk-circuit-line);
    border-radius: 28px;
    background: #ffffff;
    box-shadow: 0 14px 42px rgba(18, 50, 71, 0.07);
    scroll-margin-top: 28px;
  }

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

  #rk-circuit-guide .rk-circuit-section-dark {
    border-color: #234c61;
    background:
      radial-gradient(circle at 105% 100%, rgba(95, 222, 240, 0.12) 0 190px, transparent 191px),
      linear-gradient(135deg, #102d40, #0e4854);
    color: #eff8fb;
  }

  #rk-circuit-guide .rk-circuit-section-dark .rk-circuit-section-title,
  #rk-circuit-guide .rk-circuit-section-dark h3,
  #rk-circuit-guide .rk-circuit-section-dark strong {
    color: #ffffff;
  }

  #rk-circuit-guide .rk-circuit-section-dark .rk-circuit-lead,
  #rk-circuit-guide .rk-circuit-section-dark p,
  #rk-circuit-guide .rk-circuit-section-dark li {
    color: #e3f0f4;
  }

  #rk-circuit-guide .rk-circuit-section-title,
  #rk-circuit-guide .rk-circuit-author-title {
    max-width: 1010px;
    margin: 0 0 18px;
    color: var(--rk-circuit-navy);
    font-size: clamp(1.8rem, 3.7vw, 3.05rem);
    font-weight: 900;
    letter-spacing: -0.035em;
    line-height: 1.12;
    text-wrap: balance;
  }

  #rk-circuit-guide .rk-circuit-lead {
    max-width: 1040px;
    color: #314c5e;
    font-size: 1.08rem;
    line-height: 1.75;
  }

  #rk-circuit-guide .rk-circuit-answer {
    margin: 24px 0;
    padding: 26px 28px;
    border-left: 6px solid var(--rk-circuit-cyan);
    border-radius: 8px 20px 20px 8px;
    background: var(--rk-circuit-navy);
    color: #ffffff;
  }

  #rk-circuit-guide .rk-circuit-answer-label {
    display: block;
    margin-bottom: 9px;
    color: var(--rk-circuit-cyan);
    font-size: 0.76rem;
    font-weight: 900;
    letter-spacing: 0.1em;
    text-transform: uppercase;
  }

  #rk-circuit-guide .rk-circuit-answer p {
    margin: 0;
    color: #ffffff;
    font-size: 1.06rem;
  }

  #rk-circuit-guide .rk-circuit-grid-2,
  #rk-circuit-guide .rk-circuit-grid-3,
  #rk-circuit-guide .rk-circuit-grid-4 {
    display: grid;
    gap: 18px;
    margin: 24px 0;
  }

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

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

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

  #rk-circuit-guide .rk-circuit-card {
    min-width: 0;
    padding: 23px;
    border: 1px solid var(--rk-circuit-line);
    border-radius: 20px;
    background: #ffffff;
    color: var(--rk-circuit-ink);
  }

  #rk-circuit-guide .rk-circuit-card h3 {
    margin: 0 0 10px;
    color: var(--rk-circuit-navy);
    font-size: 1.06rem;
    line-height: 1.35;
  }

  #rk-circuit-guide .rk-circuit-card p,
  #rk-circuit-guide .rk-circuit-card li {
    color: #3e5869;
    font-size: 0.92rem;
    line-height: 1.65;
  }

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

  #rk-circuit-guide .rk-circuit-card-number {
    display: inline-grid;
    place-items: center;
    width: 36px;
    height: 36px;
    margin-bottom: 14px;
    border-radius: 50%;
    background: #dff8fb;
    color: #086678;
    font-size: 0.85rem;
    font-weight: 900;
  }

  #rk-circuit-guide .rk-circuit-callout,
  #rk-circuit-guide .rk-circuit-note,
  #rk-circuit-guide .rk-circuit-warning {
    margin: 24px 0 0;
    padding: 20px 22px;
    border-radius: 16px;
    color: #274657;
    font-size: 0.94rem;
    line-height: 1.68;
  }

  #rk-circuit-guide .rk-circuit-callout {
    border: 1px solid #b9e7ed;
    background: #eaf9fb;
  }

  #rk-circuit-guide .rk-circuit-note {
    border: 1px solid #d7e1e7;
    background: #ffffff;
  }

  #rk-circuit-guide .rk-circuit-warning {
    border: 1px solid #efd0a1;
    background: #fff6e9;
  }

  #rk-circuit-guide .rk-circuit-tool {
    overflow: hidden;
    margin: 28px 0 0;
    border: 1px solid #aacbd2;
    border-radius: 26px;
    background: #ffffff;
    box-shadow: 0 18px 46px rgba(15, 66, 78, 0.12);
  }

  #rk-circuit-guide .rk-circuit-tool-head {
    padding: 28px clamp(22px, 4vw, 40px);
    background: linear-gradient(125deg, var(--rk-circuit-navy), #0d5962);
    color: #ffffff;
  }

  #rk-circuit-guide .rk-circuit-tool-head .rk-circuit-eyebrow {
    color: #ffad73;
  }

  #rk-circuit-guide .rk-circuit-tool-head h3 {
    margin: 0 0 10px;
    color: #ffffff;
    font-size: clamp(1.35rem, 3vw, 2.05rem);
    line-height: 1.2;
  }

  #rk-circuit-guide .rk-circuit-tool-head p {
    max-width: 920px;
    margin: 0;
    color: #e9f7fa;
    font-size: 0.94rem;
  }

  #rk-circuit-guide .rk-circuit-tool-body {
    padding: clamp(22px, 4vw, 40px);
  }

  #rk-circuit-guide .rk-circuit-control-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 18px;
    margin-bottom: 22px;
  }

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

  #rk-circuit-guide .rk-circuit-control-label {
    display: block;
    margin-bottom: 11px;
    color: var(--rk-circuit-navy);
    font-size: 0.84rem;
    font-weight: 900;
  }

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

  #rk-circuit-guide .rk-circuit-segmented button {
    min-width: 0;
    min-height: 48px;
    padding: 9px 12px;
    border: 1px solid #bfd0d9;
    border-radius: 13px;
    background: #ffffff;
    color: var(--rk-circuit-navy);
    font: inherit;
    font-size: 0.84rem;
    font-weight: 850;
    line-height: 1.25;
    cursor: pointer;
    transition: background-color 0.18s ease, color 0.18s ease, border-color 0.18s ease, transform 0.18s ease;
  }

  #rk-circuit-guide .rk-circuit-segmented button:hover {
    transform: translateY(-1px);
    border-color: var(--rk-circuit-teal);
  }

  #rk-circuit-guide .rk-circuit-segmented button[aria-pressed="true"] {
    border-color: var(--rk-circuit-navy);
    background: var(--rk-circuit-navy);
    color: #ffffff;
    box-shadow: 0 8px 18px rgba(18, 50, 71, 0.18);
  }

  #rk-circuit-guide .rk-circuit-state-summary {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 16px;
    align-items: center;
    margin: 0 0 22px;
    padding: 20px;
    border: 1px solid #b9e7ed;
    border-radius: 18px;
    background: #eaf9fb;
  }

  #rk-circuit-guide .rk-circuit-state-dot {
    display: grid;
    place-items: center;
    width: 50px;
    height: 50px;
    border-radius: 50%;
    background: var(--rk-circuit-green);
    color: #ffffff;
    font-size: 1.25rem;
    font-weight: 900;
  }

  #rk-circuit-guide .rk-circuit-state-summary[data-flow="closed"] {
    border-color: #e5c4c2;
    background: #fff1f0;
  }

  #rk-circuit-guide .rk-circuit-state-summary[data-flow="closed"] .rk-circuit-state-dot {
    background: var(--rk-circuit-red);
  }

  #rk-circuit-guide .rk-circuit-state-summary strong {
    display: block;
    margin-bottom: 2px;
    color: var(--rk-circuit-navy);
    font-size: 1.05rem;
  }

  #rk-circuit-guide .rk-circuit-state-summary p {
    margin: 0;
    color: #405c6d;
    font-size: 0.91rem;
    line-height: 1.55;
  }

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

  #rk-circuit-guide .rk-circuit-flow-step {
    position: relative;
    min-width: 0;
    padding: 22px;
    border: 1px solid var(--rk-circuit-line);
    border-radius: 20px;
    background: #ffffff;
    color: var(--rk-circuit-ink);
    transition: border-color 0.2s ease, box-shadow 0.2s ease, transform 0.2s ease;
  }

  #rk-circuit-guide .rk-circuit-flow-step.is-active {
    border-color: #64c7d2;
    box-shadow: 0 12px 28px rgba(14, 119, 135, 0.13);
    transform: translateY(-2px);
  }

  #rk-circuit-guide .rk-circuit-flow-step.is-rest {
    background: #f7f9fa;
  }

  #rk-circuit-guide .rk-circuit-flow-top {
    display: flex;
    gap: 13px;
    align-items: center;
    margin-bottom: 14px;
  }

  #rk-circuit-guide .rk-circuit-flow-icon {
    display: grid;
    flex: 0 0 52px;
    place-items: center;
    width: 52px;
    height: 52px;
    border-radius: 16px;
    background: #e6f7f9;
    color: #087083;
  }

  #rk-circuit-guide .rk-circuit-flow-icon svg {
    width: 29px;
    height: 29px;
    fill: none;
    stroke: currentColor;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-width: 1.8;
  }

  #rk-circuit-guide .rk-circuit-flow-number {
    display: block;
    color: var(--rk-circuit-orange);
    font-size: 0.7rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
  }

  #rk-circuit-guide .rk-circuit-flow-step h4 {
    margin: 2px 0 0;
    color: var(--rk-circuit-navy);
    font-size: 1rem;
    line-height: 1.25;
  }

  #rk-circuit-guide .rk-circuit-flow-value {
    display: inline-flex;
    align-items: center;
    min-height: 31px;
    margin-bottom: 10px;
    padding: 5px 11px;
    border-radius: 999px;
    background: #dff6e9;
    color: #176a4e;
    font-size: 0.77rem;
    font-weight: 900;
    line-height: 1.2;
  }

  #rk-circuit-guide .rk-circuit-flow-value.is-off {
    background: #eef1f3;
    color: #5c6e79;
  }

  #rk-circuit-guide .rk-circuit-flow-value.is-closed {
    background: #fde7e6;
    color: #9c3936;
  }

  #rk-circuit-guide .rk-circuit-flow-copy {
    margin: 0;
    color: #405b6c;
    font-size: 0.87rem;
    line-height: 1.6;
  }

  #rk-circuit-guide .rk-circuit-tool-disclaimer {
    margin: 22px 0 0;
    padding: 17px 19px;
    border: 1px solid #efd0a1;
    border-radius: 15px;
    background: #fff6e9;
    color: #5f4a2c;
    font-size: 0.86rem;
    line-height: 1.6;
  }

  #rk-circuit-guide .rk-circuit-compare-table,
  #rk-circuit-guide .rk-circuit-diagnostic-table {
    overflow: hidden;
    margin: 24px 0;
    border: 1px solid var(--rk-circuit-line);
    border-radius: 20px;
    background: #ffffff;
  }

  #rk-circuit-guide .rk-circuit-table-row {
    display: grid;
    grid-template-columns: minmax(150px, 0.8fr) repeat(2, minmax(0, 1fr));
    border-top: 1px solid var(--rk-circuit-line);
  }

  #rk-circuit-guide .rk-circuit-table-row:first-child {
    border-top: 0;
  }

  #rk-circuit-guide .rk-circuit-table-row > div {
    min-width: 0;
    padding: 18px 20px;
    border-left: 1px solid var(--rk-circuit-line);
    color: #3b5667;
    font-size: 0.89rem;
    line-height: 1.58;
  }

  #rk-circuit-guide .rk-circuit-table-row > div:first-child {
    border-left: 0;
  }

  #rk-circuit-guide .rk-circuit-table-head {
    background: var(--rk-circuit-navy);
  }

  #rk-circuit-guide .rk-circuit-table-head > div {
    color: #ffffff;
    font-weight: 850;
  }

  #rk-circuit-guide .rk-circuit-table-label {
    background: #f2f6f8;
    color: var(--rk-circuit-navy) !important;
    font-weight: 850;
  }

  #rk-circuit-guide .rk-circuit-diagnostic-table .rk-circuit-table-row {
    grid-template-columns: minmax(180px, 0.8fr) minmax(0, 1fr) minmax(0, 1.15fr);
  }

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

  #rk-circuit-guide .rk-circuit-spec {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 14px;
    align-items: start;
    min-width: 0;
    padding: 18px;
    border: 1px solid var(--rk-circuit-line);
    border-radius: 17px;
    background: #ffffff;
  }

  #rk-circuit-guide .rk-circuit-spec-mark {
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: #daf4f7;
    color: #0b7180;
    font-weight: 900;
  }

  #rk-circuit-guide .rk-circuit-spec strong {
    display: block;
    margin-bottom: 4px;
    color: var(--rk-circuit-navy);
    font-size: 0.94rem;
  }

  #rk-circuit-guide .rk-circuit-spec span {
    display: block;
    color: #4b6474;
    font-size: 0.84rem;
    line-height: 1.55;
  }

  #rk-circuit-guide .rk-circuit-chain {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 12px;
    align-items: stretch;
    margin: 26px 0;
  }

  #rk-circuit-guide .rk-circuit-chain-item {
    position: relative;
    min-width: 0;
    padding: 19px 15px;
    border: 1px solid var(--rk-circuit-line);
    border-radius: 17px;
    background: #ffffff;
    color: var(--rk-circuit-ink);
    text-align: center;
  }

  #rk-circuit-guide .rk-circuit-chain-item::after {
    content: "→";
    position: absolute;
    top: 50%;
    right: -15px;
    z-index: 2;
    width: 18px;
    color: var(--rk-circuit-orange);
    font-size: 1.15rem;
    font-weight: 900;
    line-height: 1;
    transform: translateY(-50%);
  }

  #rk-circuit-guide .rk-circuit-chain-item:last-child::after {
    display: none;
  }

  #rk-circuit-guide .rk-circuit-chain-item strong {
    display: block;
    color: var(--rk-circuit-navy);
    font-size: 0.9rem;
    line-height: 1.35;
  }

  #rk-circuit-guide .rk-circuit-chain-item span {
    display: block;
    margin-top: 5px;
    color: #56707f;
    font-size: 0.75rem;
    line-height: 1.45;
  }

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

  #rk-circuit-guide .rk-circuit-step {
    position: relative;
    min-width: 0;
    padding: 21px 21px 21px 67px;
    border: 1px solid var(--rk-circuit-line);
    border-radius: 19px;
    background: #ffffff;
    color: var(--rk-circuit-ink);
    counter-increment: rk-circuit-step;
  }

  #rk-circuit-guide .rk-circuit-step::before {
    content: counter(rk-circuit-step);
    position: absolute;
    top: 20px;
    left: 20px;
    display: grid;
    place-items: center;
    width: 34px;
    height: 34px;
    border-radius: 50%;
    background: var(--rk-circuit-navy);
    color: #ffffff;
    font-size: 0.82rem;
    font-weight: 900;
  }

  #rk-circuit-guide .rk-circuit-step h3 {
    margin: 0 0 7px;
    color: var(--rk-circuit-navy);
    font-size: 1rem;
    line-height: 1.35;
  }

  #rk-circuit-guide .rk-circuit-step p {
    margin: 0;
    color: #435e6f;
    font-size: 0.88rem;
    line-height: 1.6;
  }

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

  #rk-circuit-guide .rk-circuit-mistake {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 13px;
    min-width: 0;
    padding: 19px;
    border: 1px solid #ead4d2;
    border-radius: 17px;
    background: #fff7f6;
  }

  #rk-circuit-guide .rk-circuit-mistake-icon {
    display: grid;
    place-items: center;
    width: 32px;
    height: 32px;
    border-radius: 50%;
    background: var(--rk-circuit-red);
    color: #ffffff;
    font-weight: 900;
  }

  #rk-circuit-guide .rk-circuit-mistake strong {
    color: #7e302e;
    font-size: 0.94rem;
  }

  #rk-circuit-guide .rk-circuit-mistake p {
    margin: 4px 0 0;
    color: #5f4d4c;
    font-size: 0.85rem;
    line-height: 1.55;
  }

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

  #rk-circuit-guide .rk-circuit-checklist-item {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 13px;
    align-items: start;
    min-width: 0;
    padding: 18px;
    border: 1px solid var(--rk-circuit-line);
    border-radius: 17px;
    background: #ffffff;
    color: #425d6e;
    font-size: 0.86rem;
    line-height: 1.55;
  }

  #rk-circuit-guide .rk-circuit-checklist-item > span {
    display: grid;
    place-items: center;
    width: 31px;
    height: 31px;
    border-radius: 50%;
    background: #dff6e9;
    color: var(--rk-circuit-green);
    font-weight: 900;
  }

  #rk-circuit-guide .rk-circuit-checklist-item strong {
    color: var(--rk-circuit-navy);
    font-size: 0.92rem;
  }

  #rk-circuit-guide .rk-circuit-formula {
    display: grid;
    grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
    gap: 18px;
    align-items: stretch;
    margin: 24px 0;
  }

  #rk-circuit-guide .rk-circuit-formula-box {
    display: grid;
    place-items: center;
    min-height: 170px;
    padding: 24px;
    border-radius: 20px;
    background: var(--rk-circuit-navy);
    color: #ffffff;
    text-align: center;
  }

  #rk-circuit-guide .rk-circuit-formula-box strong {
    display: block;
    color: var(--rk-circuit-cyan);
    font-size: clamp(1.35rem, 3vw, 2rem);
    line-height: 1.25;
  }

  #rk-circuit-guide .rk-circuit-formula-box span {
    display: block;
    margin-top: 8px;
    color: #dcecf2;
    font-size: 0.82rem;
  }

  #rk-circuit-guide .rk-circuit-formula-copy {
    padding: 23px;
    border: 1px solid var(--rk-circuit-line);
    border-radius: 20px;
    background: #ffffff;
    color: #3f596a;
  }

  #rk-circuit-guide .rk-circuit-formula-copy h3 {
    margin: 0 0 9px;
    color: var(--rk-circuit-navy);
    font-size: 1.08rem;
  }

  #rk-circuit-guide .rk-circuit-formula-copy p:last-child {
    margin-bottom: 0;
  }

  #rk-circuit-guide .rk-circuit-cta {
    margin: 32px 0 0;
    padding: clamp(27px, 4vw, 42px);
    border-radius: 24px;
    background:
      radial-gradient(circle at 100% 110%, rgba(95, 222, 240, 0.14) 0 130px, transparent 131px),
      linear-gradient(125deg, var(--rk-circuit-navy), #0b5761);
    color: #ffffff;
    box-shadow: 0 18px 45px rgba(11, 45, 62, 0.18);
  }

  #rk-circuit-guide .rk-circuit-cta-title {
    max-width: 930px;
    margin: 0 0 12px;
    color: #ffffff;
    font-size: clamp(1.45rem, 3.2vw, 2.35rem);
    font-weight: 900;
    letter-spacing: -0.03em;
    line-height: 1.16;
  }

  #rk-circuit-guide .rk-circuit-cta p {
    max-width: 980px;
    margin-bottom: 20px;
    color: #e7f3f6;
  }

  #rk-circuit-guide .rk-circuit-cta-button {
    display: inline-flex;
    justify-content: center;
    align-items: center;
    min-height: 52px;
    padding: 12px 20px;
    border: 2px solid var(--rk-circuit-orange);
    border-radius: 12px;
    background: var(--rk-circuit-orange);
    color: #ffffff !important;
    font-weight: 900;
    line-height: 1.3;
    text-align: center;
    text-decoration: none !important;
    box-shadow: 0 10px 22px rgba(255, 122, 33, 0.22);
  }

  #rk-circuit-guide .rk-circuit-cta-button:hover {
    border-color: #ff9652;
    background: #ff9652;
    color: #ffffff !important;
  }

  #rk-circuit-guide .rk-circuit-link-disclosure {
    display: block;
    margin-top: 13px;
    color: #cfe1e6;
    font-size: 0.72rem;
    line-height: 1.45;
  }

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

  #rk-circuit-guide .rk-circuit-source-card {
    min-width: 0;
    padding: 20px;
    border: 1px solid var(--rk-circuit-line);
    border-radius: 18px;
    background: #ffffff;
  }

  #rk-circuit-guide .rk-circuit-source-card a {
    display: inline-block;
    color: var(--rk-circuit-navy);
    font-size: 0.93rem;
    font-weight: 900;
    line-height: 1.45;
  }

  #rk-circuit-guide .rk-circuit-source-card p {
    margin: 8px 0 0;
    color: #516a79;
    font-size: 0.83rem;
    line-height: 1.55;
  }

  #rk-circuit-guide .rk-circuit-responsibility {
    margin-top: 20px;
    padding: 21px;
    border: 1px solid #d7e1e7;
    border-radius: 18px;
    background: #ffffff;
    color: #405a6b;
    font-size: 0.87rem;
    line-height: 1.62;
  }

  #rk-circuit-guide .rk-circuit-responsibility p:last-child {
    margin-bottom: 0;
  }

  #rk-circuit-guide .rk-circuit-faq details {
    overflow: hidden;
    margin: 12px 0;
    border: 1px solid var(--rk-circuit-line);
    border-radius: 16px;
    background: #ffffff;
  }

  #rk-circuit-guide .rk-circuit-faq summary {
    position: relative;
    padding: 18px 52px 18px 20px;
    color: var(--rk-circuit-navy);
    font-size: 0.96rem;
    font-weight: 850;
    line-height: 1.45;
    cursor: pointer;
    list-style: none;
  }

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

  #rk-circuit-guide .rk-circuit-faq summary::after {
    content: "+";
    position: absolute;
    top: 50%;
    right: 20px;
    color: var(--rk-circuit-teal);
    font-size: 1.4rem;
    font-weight: 700;
    transform: translateY(-50%);
  }

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

  #rk-circuit-guide .rk-circuit-faq-answer {
    padding: 0 20px 18px;
    color: #415c6d;
    font-size: 0.9rem;
    line-height: 1.65;
  }

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

  #rk-circuit-guide .rk-circuit-author {
    background:
      radial-gradient(circle at 98% 100%, rgba(95, 222, 240, 0.12) 0 150px, transparent 151px),
      linear-gradient(130deg, #102d40, #113f4e);
    color: #eaf4f7;
  }

  #rk-circuit-guide .rk-circuit-author .rk-circuit-eyebrow {
    color: #ff9a57;
  }

  #rk-circuit-guide .rk-circuit-author-title {
    color: #ffffff;
  }

  #rk-circuit-guide .rk-circuit-author-layout {
    display: grid;
    grid-template-columns: minmax(210px, 0.34fr) minmax(0, 1fr);
    gap: 28px;
    align-items: start;
    margin-top: 25px;
  }

  #rk-circuit-guide .rk-circuit-author-side {
    padding: 22px;
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 20px;
    background: rgba(255, 255, 255, 0.07);
    text-align: center;
  }

  #rk-circuit-guide .rk-circuit-author-photo {
    width: 150px;
    height: 150px;
    margin: 0 auto 16px;
    overflow: hidden;
    border: 4px solid rgba(255, 255, 255, 0.24);
    border-radius: 50%;
    background: #ffffff;
  }

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

  #rk-circuit-guide .rk-circuit-author-name a {
    color: #ffffff;
    font-size: 1.12rem;
    font-weight: 900;
  }

  #rk-circuit-guide .rk-circuit-author-role {
    margin: 7px 0 13px;
    color: #dbeaf0;
    font-size: 0.82rem;
    line-height: 1.5;
  }

  #rk-circuit-guide .rk-circuit-author-social {
    display: flex;
    justify-content: center;
    gap: 9px;
  }

  #rk-circuit-guide .rk-circuit-author-social a {
    display: grid;
    place-items: center;
    width: 36px;
    height: 36px;
    border: 1px solid rgba(255, 255, 255, 0.24);
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.08);
    color: #ffffff;
    font-size: 0.8rem;
    font-weight: 900;
    text-decoration: none;
  }

  #rk-circuit-guide .rk-circuit-author-main p {
    color: #dcecf1;
    font-size: 0.92rem;
  }

  #rk-circuit-guide .rk-circuit-author-main a {
    color: var(--rk-circuit-cyan);
  }

  #rk-circuit-guide .rk-circuit-author-quote {
    margin-bottom: 21px;
    padding: 22px;
    border-left: 5px solid var(--rk-circuit-cyan);
    border-radius: 7px 17px 17px 7px;
    background: rgba(255, 255, 255, 0.08);
    color: #ffffff;
    font-size: 1.03rem;
    font-weight: 750;
    line-height: 1.6;
  }

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

  #rk-circuit-guide .rk-circuit-author-fact {
    min-width: 0;
    padding: 15px;
    border: 1px solid rgba(255, 255, 255, 0.16);
    border-radius: 15px;
    background: rgba(255, 255, 255, 0.06);
    color: #d7e8ed;
    font-size: 0.75rem;
    line-height: 1.45;
  }

  #rk-circuit-guide .rk-circuit-author-fact strong {
    display: block;
    margin-bottom: 4px;
    color: #ffffff;
    font-size: 0.8rem;
  }

  #rk-circuit-guide .rk-circuit-tool-tabs,
  #rk-circuit-guide .rk-circuit-graphic-controls {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin: 0 0 22px;
  }

  #rk-circuit-guide .rk-circuit-tool-tabs button,
  #rk-circuit-guide .rk-circuit-graphic-controls button {
    min-height: 44px;
    padding: 9px 15px;
    border: 1px solid #bdd0d8;
    border-radius: 999px;
    background: #ffffff;
    color: var(--rk-circuit-navy);
    font: inherit;
    font-size: 0.8rem;
    font-weight: 850;
    line-height: 1.25;
    cursor: pointer;
  }

  #rk-circuit-guide .rk-circuit-tool-tabs button[aria-selected="true"],
  #rk-circuit-guide .rk-circuit-graphic-controls button[aria-pressed="true"] {
    border-color: var(--rk-circuit-navy);
    background: var(--rk-circuit-navy);
    color: #ffffff;
    box-shadow: 0 8px 20px rgba(18, 50, 71, 0.18);
  }

  #rk-circuit-guide .rk-circuit-panel[hidden],
  #rk-circuit-guide .rk-circuit-is-hidden {
    display: none !important;
  }

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

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

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

  #rk-circuit-guide .rk-circuit-field label,
  #rk-circuit-guide .rk-circuit-field-label {
    display: block;
    margin: 0 0 7px;
    color: var(--rk-circuit-navy);
    font-size: 0.79rem;
    font-weight: 900;
    line-height: 1.4;
  }

  #rk-circuit-guide .rk-circuit-field input,
  #rk-circuit-guide .rk-circuit-field select,
  #rk-circuit-guide .rk-circuit-loop-row input,
  #rk-circuit-guide .rk-circuit-curve-row input {
    width: 100%;
    min-height: 47px;
    margin: 0;
    padding: 10px 12px;
    border: 1px solid #b9cbd4;
    border-radius: 11px;
    background: #ffffff;
    color: #173246;
    font: inherit;
    font-size: 0.91rem;
    line-height: 1.2;
  }

  #rk-circuit-guide .rk-circuit-field input:focus,
  #rk-circuit-guide .rk-circuit-field select:focus,
  #rk-circuit-guide .rk-circuit-loop-row input:focus,
  #rk-circuit-guide .rk-circuit-curve-row input:focus {
    outline: 3px solid rgba(95, 222, 240, 0.34);
    border-color: var(--rk-circuit-teal);
  }

  #rk-circuit-guide .rk-circuit-field-help {
    display: block;
    margin-top: 7px;
    color: #5c7180;
    font-size: 0.7rem;
    line-height: 1.45;
  }

  #rk-circuit-guide .rk-circuit-tool-subtitle {
    margin: 26px 0 10px;
    color: var(--rk-circuit-navy);
    font-size: 1.12rem;
    font-weight: 900;
    line-height: 1.35;
  }

  #rk-circuit-guide .rk-circuit-loop-editor,
  #rk-circuit-guide .rk-circuit-curve-editor {
    margin: 18px 0;
    padding: 18px;
    border: 1px solid var(--rk-circuit-line);
    border-radius: 18px;
    background: var(--rk-circuit-soft);
  }

  #rk-circuit-guide .rk-circuit-loop-row,
  #rk-circuit-guide .rk-circuit-curve-row {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(120px, 0.46fr) auto;
    gap: 9px;
    align-items: end;
    margin-top: 10px;
  }

  #rk-circuit-guide .rk-circuit-curve-row {
    grid-template-columns: 42px repeat(2, minmax(110px, 1fr));
  }

  #rk-circuit-guide .rk-circuit-loop-row:first-child,
  #rk-circuit-guide .rk-circuit-curve-row:first-child {
    margin-top: 0;
  }

  #rk-circuit-guide .rk-circuit-loop-cell label,
  #rk-circuit-guide .rk-circuit-curve-cell label {
    display: block;
    margin-bottom: 5px;
    color: #496371;
    font-size: 0.68rem;
    font-weight: 850;
    line-height: 1.35;
  }

  #rk-circuit-guide .rk-circuit-remove-loop,
  #rk-circuit-guide .rk-circuit-add-loop {
    min-height: 45px;
    padding: 9px 13px;
    border: 1px solid #c7d5dc;
    border-radius: 11px;
    background: #ffffff;
    color: var(--rk-circuit-navy);
    font: inherit;
    font-size: 0.77rem;
    font-weight: 850;
    cursor: pointer;
  }

  #rk-circuit-guide .rk-circuit-remove-loop {
    width: 45px;
    padding: 8px;
    color: #9b3b38;
  }

  #rk-circuit-guide .rk-circuit-add-loop {
    margin-top: 13px;
    border-color: #86cdd5;
    background: #eaf9fb;
    color: #075f6b;
  }

  #rk-circuit-guide .rk-circuit-calc-layout {
    display: grid;
    grid-template-columns: minmax(0, 0.92fr) minmax(0, 1.08fr);
    gap: 20px;
    align-items: start;
  }

  #rk-circuit-guide .rk-circuit-results {
    min-width: 0;
  }

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

  #rk-circuit-guide .rk-circuit-result {
    min-width: 0;
    padding: 17px;
    border: 1px solid #b8dce1;
    border-radius: 16px;
    background: #effbfc;
  }

  #rk-circuit-guide .rk-circuit-result span {
    display: block;
    color: #4c6876;
    font-size: 0.7rem;
    font-weight: 850;
    line-height: 1.35;
  }

  #rk-circuit-guide .rk-circuit-result strong {
    display: block;
    margin-top: 4px;
    color: var(--rk-circuit-navy);
    font-size: clamp(1.2rem, 2.5vw, 1.7rem);
    line-height: 1.2;
  }

  #rk-circuit-guide .rk-circuit-breakdown {
    padding: 18px;
    border: 1px solid var(--rk-circuit-line);
    border-radius: 17px;
    background: #ffffff;
  }

  #rk-circuit-guide .rk-circuit-breakdown-title {
    display: block;
    margin-bottom: 12px;
    color: var(--rk-circuit-navy);
    font-size: 0.86rem;
    font-weight: 900;
  }

  #rk-circuit-guide .rk-circuit-break-row {
    display: grid;
    grid-template-columns: minmax(104px, 0.62fr) minmax(0, 1fr) auto;
    gap: 10px;
    align-items: center;
    margin: 9px 0;
    color: #496371;
    font-size: 0.73rem;
    line-height: 1.35;
  }

  #rk-circuit-guide .rk-circuit-break-row strong,
  #rk-circuit-guide .rk-circuit-curve-row > strong {
    color: var(--rk-circuit-navy);
  }

  #rk-circuit-guide .rk-circuit-section-dark .rk-circuit-callout strong {
    color: var(--rk-circuit-navy);
  }

  #rk-circuit-guide .rk-circuit-break-track {
    height: 9px;
    overflow: hidden;
    border-radius: 999px;
    background: #e8eef1;
  }

  #rk-circuit-guide .rk-circuit-break-fill {
    display: block;
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--rk-circuit-teal), var(--rk-circuit-cyan));
  }

  #rk-circuit-guide .rk-circuit-chart-card {
    min-width: 0;
    padding: 18px;
    border: 1px solid var(--rk-circuit-line);
    border-radius: 18px;
    background: #ffffff;
  }

  #rk-circuit-guide .rk-circuit-chart-title {
    margin: 0 0 11px;
    color: var(--rk-circuit-navy);
    font-size: 0.95rem;
    font-weight: 900;
  }

  #rk-circuit-guide .rk-circuit-chart-wrap {
    width: 100%;
    min-width: 0;
    overflow: hidden;
    border-radius: 13px;
    background: #f8fbfc;
  }

  #rk-circuit-guide .rk-circuit-chart-wrap svg {
    display: block;
    width: 100%;
    height: auto;
    min-height: 310px;
  }

  #rk-circuit-guide .rk-circuit-chart-grid-line {
    stroke: #dbe5ea;
    stroke-width: 1;
  }

  #rk-circuit-guide .rk-circuit-chart-axis {
    stroke: #6f8592;
    stroke-width: 1.4;
  }

  #rk-circuit-guide .rk-circuit-system-path {
    fill: none;
    stroke: var(--rk-circuit-teal);
    stroke-width: 4;
  }

  #rk-circuit-guide .rk-circuit-device-path {
    fill: none;
    stroke: var(--rk-circuit-orange);
    stroke-width: 4;
  }

  #rk-circuit-guide .rk-circuit-design-point {
    fill: var(--rk-circuit-navy);
    stroke: #ffffff;
    stroke-width: 4;
  }

  #rk-circuit-guide .rk-circuit-operating-point {
    fill: var(--rk-circuit-orange);
    stroke: #ffffff;
    stroke-width: 4;
  }

  #rk-circuit-guide .rk-circuit-chart-tick,
  #rk-circuit-guide .rk-circuit-chart-label {
    fill: #55707f;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 12px;
  }

  #rk-circuit-guide .rk-circuit-chart-label {
    fill: var(--rk-circuit-navy);
    font-size: 13px;
    font-weight: 800;
  }

  #rk-circuit-guide .rk-circuit-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 15px;
    margin-top: 12px;
    color: #536d7b;
    font-size: 0.69rem;
    font-weight: 800;
  }

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

  #rk-circuit-guide .rk-circuit-legend i {
    display: inline-block;
    width: 25px;
    height: 4px;
    border-radius: 999px;
    background: var(--rk-circuit-teal);
  }

  #rk-circuit-guide .rk-circuit-legend .is-pump i {
    background: var(--rk-circuit-orange);
  }

  #rk-circuit-guide .rk-circuit-legend .is-point i {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--rk-circuit-navy);
  }

  #rk-circuit-guide .rk-circuit-status {
    margin: 15px 0 0;
    padding: 15px 17px;
    border: 1px solid #b8dce1;
    border-radius: 14px;
    background: #effbfc;
    color: #315261;
    font-size: 0.79rem;
    line-height: 1.55;
  }

  #rk-circuit-guide .rk-circuit-status.is-warning {
    border-color: #efd0a1;
    background: #fff6e9;
    color: #664d2b;
  }

  #rk-circuit-guide .rk-circuit-status.is-bad {
    border-color: #e6c2c0;
    background: #fff2f1;
    color: #743b38;
  }

  #rk-circuit-guide .rk-circuit-status.is-good {
    border-color: #b8ddce;
    background: #eefaf5;
    color: #245d48;
  }

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

  #rk-circuit-guide .rk-circuit-hydraulic-card {
    min-width: 0;
    padding: 20px;
    border: 1px solid var(--rk-circuit-line);
    border-radius: 18px;
    background: #ffffff;
    transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.18s ease;
  }

  #rk-circuit-guide .rk-circuit-hydraulic-card.is-active {
    border-color: #5fc6d1;
    box-shadow: 0 12px 28px rgba(14, 119, 135, 0.13);
    transform: translateY(-2px);
  }

  #rk-circuit-guide .rk-circuit-hydraulic-card.is-muted {
    opacity: 0.58;
    background: #f3f6f7;
  }

  #rk-circuit-guide .rk-circuit-hydraulic-number {
    display: inline-grid;
    place-items: center;
    width: 34px;
    height: 34px;
    margin-bottom: 12px;
    border-radius: 50%;
    background: #ddf6f8;
    color: #086878;
    font-size: 0.78rem;
    font-weight: 900;
  }

  #rk-circuit-guide .rk-circuit-hydraulic-card h3 {
    margin: 0 0 8px;
    color: var(--rk-circuit-navy);
    font-size: 1rem;
    line-height: 1.35;
  }

  #rk-circuit-guide .rk-circuit-hydraulic-value {
    display: inline-flex;
    min-height: 29px;
    align-items: center;
    margin: 0 0 9px;
    padding: 5px 10px;
    border-radius: 999px;
    background: #eef4f6;
    color: #3f5e6d;
    font-size: 0.71rem;
    font-weight: 900;
  }

  #rk-circuit-guide .rk-circuit-hydraulic-card.is-active .rk-circuit-hydraulic-value {
    background: #dff6e9;
    color: #21664e;
  }

  #rk-circuit-guide .rk-circuit-hydraulic-card p {
    margin: 0;
    color: #466171;
    font-size: 0.82rem;
    line-height: 1.58;
  }

  #rk-circuit-guide .rk-circuit-graphic-result {
    margin-top: 16px;
    padding: 20px;
    border-left: 5px solid var(--rk-circuit-cyan);
    border-radius: 8px 16px 16px 8px;
    background: var(--rk-circuit-navy);
    color: #ffffff;
  }

  #rk-circuit-guide .rk-circuit-graphic-result strong {
    display: block;
    margin-bottom: 5px;
    color: #ffffff;
  }

  #rk-circuit-guide .rk-circuit-graphic-result p {
    margin: 0;
    color: #e8f5f8;
    font-size: 0.87rem;
  }

  #rk-circuit-guide .rk-circuit-equation {
    overflow-wrap: anywhere;
    font-variant-numeric: tabular-nums;
  }

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

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

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

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

    #rk-circuit-guide .rk-circuit-chain-item::after {
      display: none;
    }

    #rk-circuit-guide .rk-circuit-calc-layout {
      grid-template-columns: 1fr;
    }
  }

  @media (max-width: 820px) {
    #rk-circuit-guide {
      font-size: 17px;
    }

    #rk-circuit-guide .rk-circuit-hero {
      border-radius: 24px;
    }

    #rk-circuit-guide .rk-circuit-hero-metrics,
    #rk-circuit-guide .rk-circuit-grid-3,
    #rk-circuit-guide .rk-circuit-source-grid,
    #rk-circuit-guide .rk-circuit-author-facts {
      grid-template-columns: 1fr;
    }

    #rk-circuit-guide .rk-circuit-control-grid,
    #rk-circuit-guide .rk-circuit-formula,
    #rk-circuit-guide .rk-circuit-author-layout {
      grid-template-columns: 1fr;
    }

    #rk-circuit-guide .rk-circuit-author-side {
      max-width: 430px;
    }

    #rk-circuit-guide .rk-circuit-field-grid-3,
    #rk-circuit-guide .rk-circuit-hydraulic-grid {
      grid-template-columns: 1fr;
    }
  }

  @media (max-width: 700px) {
    #rk-circuit-guide .rk-circuit-section,
    #rk-circuit-guide .rk-circuit-author {
      border-radius: 22px;
    }

    #rk-circuit-guide .rk-circuit-grid-2,
    #rk-circuit-guide .rk-circuit-grid-4,
    #rk-circuit-guide .rk-circuit-flow-grid,
    #rk-circuit-guide .rk-circuit-spec-grid,
    #rk-circuit-guide .rk-circuit-steps,
    #rk-circuit-guide .rk-circuit-mistakes,
    #rk-circuit-guide .rk-circuit-checklist,
    #rk-circuit-guide .rk-circuit-chain {
      grid-template-columns: 1fr;
    }

    #rk-circuit-guide .rk-circuit-field-grid,
    #rk-circuit-guide .rk-circuit-result-grid {
      grid-template-columns: 1fr;
    }

    #rk-circuit-guide .rk-circuit-table-row,
    #rk-circuit-guide .rk-circuit-diagnostic-table .rk-circuit-table-row {
      display: block;
      padding: 8px 0;
      border-top: 8px solid var(--rk-circuit-soft);
    }

    #rk-circuit-guide .rk-circuit-table-row:first-child {
      display: none;
    }

    #rk-circuit-guide .rk-circuit-table-row > div {
      display: grid;
      grid-template-columns: minmax(104px, 0.42fr) minmax(0, 1fr);
      gap: 10px;
      padding: 12px 15px;
      border: 0;
    }

    #rk-circuit-guide .rk-circuit-table-row > div::before {
      content: attr(data-label);
      color: var(--rk-circuit-navy);
      font-size: 0.76rem;
      font-weight: 900;
      line-height: 1.45;
    }

    #rk-circuit-guide .rk-circuit-table-label {
      background: #eef4f6;
    }

    #rk-circuit-guide .rk-circuit-loop-row {
      grid-template-columns: minmax(0, 1fr) minmax(100px, 0.6fr) auto;
    }
  }

  @media (max-width: 520px) {
    #rk-circuit-guide {
      font-size: 16px;
    }

    #rk-circuit-guide .rk-circuit-hero {
      padding: 34px 22px;
      border-radius: 20px;
    }

    #rk-circuit-guide .rk-circuit-hero-title {
      font-size: clamp(2.25rem, 12vw, 3.5rem);
      letter-spacing: -0.05em;
    }

    #rk-circuit-guide .rk-circuit-hero-lead {
      margin-top: 23px;
    }

    #rk-circuit-guide .rk-circuit-hero-tag {
      min-height: 38px;
      padding: 7px 12px;
      font-size: 0.75rem;
    }

    #rk-circuit-guide .rk-circuit-byline {
      display: grid;
      gap: 7px;
    }

    #rk-circuit-guide .rk-circuit-hero-metric {
      padding: 19px;
    }

    #rk-circuit-guide .rk-circuit-shortcuts {
      padding: 17px;
      border-radius: 18px;
    }

    #rk-circuit-guide .rk-circuit-shortcuts a {
      font-size: 0.72rem;
    }

    #rk-circuit-guide .rk-circuit-section,
    #rk-circuit-guide .rk-circuit-author {
      padding: 28px 19px;
    }

    #rk-circuit-guide .rk-circuit-answer,
    #rk-circuit-guide .rk-circuit-card,
    #rk-circuit-guide .rk-circuit-flow-step {
      padding: 20px;
    }

    #rk-circuit-guide .rk-circuit-tool-head,
    #rk-circuit-guide .rk-circuit-tool-body {
      padding: 22px 17px;
    }

    #rk-circuit-guide .rk-circuit-segmented {
      grid-template-columns: 1fr;
    }

    #rk-circuit-guide .rk-circuit-state-summary {
      grid-template-columns: 1fr;
    }

    #rk-circuit-guide .rk-circuit-state-dot {
      width: 44px;
      height: 44px;
    }

    #rk-circuit-guide .rk-circuit-step {
      padding: 66px 19px 19px;
    }

    #rk-circuit-guide .rk-circuit-step::before {
      top: 19px;
      left: 19px;
    }

    #rk-circuit-guide .rk-circuit-cta-button {
      width: 100%;
    }

    #rk-circuit-guide .rk-circuit-table-row > div {
      grid-template-columns: 1fr;
      gap: 4px;
    }

    #rk-circuit-guide .rk-circuit-loop-row,
    #rk-circuit-guide .rk-circuit-curve-row {
      grid-template-columns: 1fr;
      padding: 13px;
      border: 1px solid var(--rk-circuit-line);
      border-radius: 14px;
      background: #ffffff;
    }

    #rk-circuit-guide .rk-circuit-remove-loop {
      width: 100%;
    }

    #rk-circuit-guide .rk-circuit-chart-wrap svg {
      min-height: 260px;
    }

    #rk-circuit-guide .rk-circuit-break-row {
      grid-template-columns: 1fr auto;
    }

    #rk-circuit-guide .rk-circuit-break-track {
      grid-column: 1 / -1;
      grid-row: 2;
    }
  }

  @media print {
    #rk-circuit-guide .rk-circuit-shortcuts,
    #rk-circuit-guide .rk-circuit-control-grid {
      display: none !important;
    }

    #rk-circuit-guide .rk-circuit-section,
    #rk-circuit-guide .rk-circuit-author,
    #rk-circuit-guide .rk-circuit-hero {
      break-inside: avoid;
      box-shadow: none;
    }

    #rk-circuit-guide .rk-circuit-faq details {
      break-inside: avoid;
    }

    #rk-circuit-guide .rk-circuit-faq details:not([open]) .rk-circuit-faq-answer {
      display: block;
    }
  }

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

  #rk-circuit-guide .rk-circuit-field input.rk-circuit-range {
    width: 100%;
    min-height: 10px;
    height: 10px;
    padding: 0;
    border: 0;
    border-radius: 999px;
    background: #dce8ed;
    accent-color: var(--rk-circuit-orange);
    cursor: pointer;
  }

  #rk-circuit-guide .rk-circuit-field input.rk-circuit-range:focus {
    outline: 3px solid rgba(95, 222, 240, 0.34);
    outline-offset: 5px;
  }

  #rk-circuit-guide .rk-circuit-control-label {
    display: block;
    margin: 22px 0 10px;
    color: var(--rk-circuit-navy);
    font-size: 0.82rem;
    font-weight: 900;
  }

  #rk-circuit-guide .rk-circuit-limit-line {
    stroke: #ad6f13;
    stroke-width: 2;
    stroke-dasharray: 7 6;
  }

  #rk-circuit-guide .rk-circuit-limit-label {
    fill: #8a5914;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 11px;
    font-weight: 800;
  }

  #rk-circuit-guide .rk-circuit-current-guide {
    stroke: #8da0aa;
    stroke-width: 1.5;
    stroke-dasharray: 3 5;
  }

  #rk-circuit-guide .rk-circuit-section-dark .rk-circuit-card {
    border-color: #cbd9e1;
    background: #ffffff;
    color: #173246;
  }

  #rk-circuit-guide .rk-circuit-section-dark .rk-circuit-card h3 {
    color: #123247;
  }

  #rk-circuit-guide .rk-circuit-section-dark .rk-circuit-card p,
  #rk-circuit-guide .rk-circuit-section-dark .rk-circuit-card li {
    color: #3e5869;
  }

  #rk-circuit-guide .rk-circuit-section-dark .rk-circuit-card a {
    color: #087a9f;
  }

  #rk-circuit-guide button:focus-visible,
  #rk-circuit-guide a:focus-visible,
  #rk-circuit-guide summary:focus-visible {
    outline: 3px solid var(--rk-circuit-cyan);
    outline-offset: 3px;
  }

  @media (max-width: 520px) {
    #rk-circuit-guide .rk-circuit-chart-card {
      padding: 12px;
    }

    #rk-circuit-guide .rk-circuit-chart-wrap svg {
      min-height: 235px;
    }

    #rk-circuit-guide .rk-circuit-graphic-controls button {
      width: 100%;
    }
  }



  #rk-circuit-guide .rk-circuit-equation-box {
    margin: 20px 0;
    padding: clamp(20px, 3vw, 30px);
    border: 1px solid #add6dc;
    border-radius: 20px;
    background: linear-gradient(135deg, #f0fbfc 0%, #ffffff 100%);
    box-shadow: 0 12px 30px rgba(13, 73, 88, 0.08);
  }

  #rk-circuit-guide .rk-circuit-equation-label {
    display: block;
    margin-bottom: 8px;
    color: #087083;
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
  }

  #rk-circuit-guide .rk-circuit-equation-main {
    margin-bottom: 10px;
    color: var(--rk-circuit-navy);
    font-size: clamp(1.18rem, 3vw, 1.78rem);
    font-weight: 950;
    line-height: 1.25;
    overflow-wrap: anywhere;
    font-variant-numeric: tabular-nums;
  }

  #rk-circuit-guide .rk-circuit-equation-box p {
    margin: 0;
    color: #3f5b69;
  }

  #rk-circuit-guide .rk-circuit-chart-bar {
    fill: var(--rk-circuit-teal);
    stroke: transparent;
    stroke-width: 0;
    transition: opacity 0.18s ease, fill 0.18s ease;
  }

  #rk-circuit-guide .rk-circuit-chart-bar:hover,
  #rk-circuit-guide .rk-circuit-chart-bar:focus {
    opacity: 0.78;
    outline: none;
  }

  #rk-circuit-guide .rk-circuit-chart-bar.is-selected {
    fill: var(--rk-circuit-orange);
  }

  #rk-circuit-guide .rk-circuit-chart-bar.is-over {
    fill: var(--rk-circuit-red);
  }

  #rk-circuit-guide .rk-circuit-chart-bar.is-selected.is-over {
    fill: var(--rk-circuit-red);
    stroke: var(--rk-circuit-orange);
    stroke-width: 4;
  }

  #rk-circuit-guide .rk-circuit-chart-target-line {
    stroke: #9b6512;
    stroke-width: 2;
    stroke-dasharray: 8 6;
  }

  #rk-circuit-guide .rk-circuit-chart-target-label {
    fill: #81540e;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 12px;
    font-weight: 900;
  }

  #rk-circuit-guide .rk-circuit-chart-value {
    fill: #294b5c;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 12px;
    font-weight: 900;
  }

  #rk-circuit-guide .rk-circuit-chart-axis-title {
    fill: #476474;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 12px;
    font-weight: 800;
  }

  #rk-circuit-guide .rk-circuit-legend .is-danger i {
    background: var(--rk-circuit-red);
  }

  @media (max-width: 620px) {
    #rk-circuit-guide .rk-circuit-equation-main {
      font-size: 1.08rem;
    }

    #rk-circuit-guide .rk-circuit-chart-value,
    #rk-circuit-guide .rk-circuit-chart-target-label,
    #rk-circuit-guide .rk-circuit-chart-axis-title {
      font-size: 10px;
    }
  }



  #rk-circuit-guide .rk-circuit-circuit-editor {
    display: grid;
    gap: 11px;
    margin: 22px 0 12px;
  }

  #rk-circuit-guide .rk-circuit-circuit-row {
    display: grid;
    grid-template-columns: minmax(135px, 1.2fr) minmax(105px, 0.8fr) minmax(135px, 0.9fr) minmax(112px, 0.7fr) 42px;
    gap: 10px;
    align-items: end;
    padding: 12px;
    border: 1px solid var(--rk-circuit-line);
    border-radius: 15px;
    background: #ffffff;
  }

  #rk-circuit-guide .rk-circuit-circuit-cell label,
  #rk-circuit-guide .rk-circuit-circuit-flow span {
    display: block;
    margin-bottom: 6px;
    color: #496674;
    font-size: 0.72rem;
    font-weight: 900;
  }

  #rk-circuit-guide .rk-circuit-circuit-cell input {
    width: 100%;
    min-height: 44px;
    margin: 0;
    padding: 9px 10px;
    border: 1px solid #b9ccd5;
    border-radius: 10px;
    background: #ffffff;
    color: var(--rk-circuit-navy);
    font: inherit;
    font-weight: 750;
    line-height: 1.25;
  }

  #rk-circuit-guide .rk-circuit-circuit-cell input:focus {
    border-color: var(--rk-circuit-teal);
    outline: 3px solid rgba(15, 137, 151, 0.18);
  }

  #rk-circuit-guide .rk-circuit-circuit-flow {
    min-height: 44px;
    padding: 7px 9px;
    border-radius: 10px;
    background: #eef8fa;
  }

  #rk-circuit-guide .rk-circuit-circuit-flow span {
    margin-bottom: 2px;
  }

  #rk-circuit-guide .rk-circuit-circuit-flow strong {
    display: block;
    color: var(--rk-circuit-navy);
    font-size: 0.94rem;
    font-variant-numeric: tabular-nums;
  }

  #rk-circuit-guide .rk-circuit-add-loop:disabled {
    cursor: not-allowed;
    opacity: 0.56;
  }

  #rk-circuit-guide .rk-circuit-chart-common {
    fill: #80cbd3;
  }

  #rk-circuit-guide .rk-circuit-chart-branch {
    fill: var(--rk-circuit-teal);
  }

  #rk-circuit-guide .rk-circuit-chart-critical-outline {
    fill: none;
    stroke: var(--rk-circuit-orange);
    stroke-width: 4;
  }

  #rk-circuit-guide .rk-circuit-chart-grid {
    stroke: #dbe5e9;
    stroke-width: 1;
  }

  #rk-circuit-guide .rk-circuit-chart-tick,
  #rk-circuit-guide .rk-circuit-chart-name,
  #rk-circuit-guide .rk-circuit-chart-index,
  #rk-circuit-guide .rk-circuit-chart-value,
  #rk-circuit-guide .rk-circuit-chart-axis-title {
    fill: #3f5d6c;
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 11px;
    font-weight: 800;
  }

  #rk-circuit-guide .rk-circuit-chart-value {
    fill: var(--rk-circuit-navy);
    font-size: 12px;
    font-weight: 950;
  }

  #rk-circuit-guide .rk-circuit-chart-index {
    fill: #6e8490;
    font-size: 9px;
  }

  #rk-circuit-guide .rk-circuit-legend .is-common i {
    background: #80cbd3;
  }

  #rk-circuit-guide .rk-circuit-legend .is-pump i {
    border: 3px solid var(--rk-circuit-orange);
    background: transparent;
  }

  #rk-circuit-guide .rk-circuit-state-controls {
    margin-bottom: 18px;
  }

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

    #rk-circuit-guide .rk-circuit-circuit-flow {
      align-self: end;
    }

    #rk-circuit-guide .rk-circuit-remove-loop {
      width: 100%;
      grid-column: 1 / -1;
    }
  }

  @media (max-width: 560px) {
    #rk-circuit-guide .rk-circuit-circuit-row {
      grid-template-columns: 1fr;
    }

    #rk-circuit-guide .rk-circuit-chart-tick,
    #rk-circuit-guide .rk-circuit-chart-name,
    #rk-circuit-guide .rk-circuit-chart-value,
    #rk-circuit-guide .rk-circuit-chart-axis-title {
      font-size: 9px;
    }
  }

</style>

<article id="rk-circuit-guide" aria-labelledby="rk-circuit-visual-title">
  <div class="rk-circuit-shell">
    <header class="rk-circuit-hero">
      <div class="rk-circuit-hero-inner">
        <span class="rk-circuit-kicker">Od źródła ciepła do powrotu</span>
        <div class="rk-circuit-hero-title" id="rk-circuit-visual-title">Obieg to więcej niż <span>pętla</span></div>
        <p class="rk-circuit-hero-lead">Pętla grzewcza jest tylko jedną równoległą gałęzią podłogówki. Poprawnie zaprojektowany obieg musi jeszcze dostarczyć do rozdzielacza wodę o właściwej temperaturze, zapewnić sumaryczny przepływ oraz pokonać opory najbardziej wymagającej drogi hydraulicznej.</p>

        <div class="rk-circuit-hero-tags" aria-label="Zakres poradnika">
          <span class="rk-circuit-hero-tag">schemat obiegu</span>
          <span class="rk-circuit-hero-tag">przepływ całkowity</span>
          <span class="rk-circuit-hero-tag">pompa obiegowa</span>
          <span class="rk-circuit-hero-tag">mieszanie i bufor</span>
          <span class="rk-circuit-hero-tag">równoważenie</span>
        </div>

        <div class="rk-circuit-byline">
          <span>Autor: <strong>Robert Kucharski</strong></span>
          <span>Czas czytania: około 36 minut</span>
          <span>Aktualizacja techniczna: 11 września 2026 r.</span>
        </div>

        <div class="rk-circuit-hero-metrics" aria-label="Trzy warstwy prawidłowego obiegu grzewczego">
          <div class="rk-circuit-hero-metric">
            <b>Temperatura wody</b>
            <span>Źródło lub układ mieszający ma wytworzyć parametr wynikający z obciążenia, podłogi i regulacji pogodowej.</span>
          </div>
          <div class="rk-circuit-hero-metric">
            <b>Przepływ całkowity</b>
            <span>W rozdzielaczu sumują się projektowe przepływy pętli pracujących jednocześnie.</span>
          </div>
          <div class="rk-circuit-hero-metric">
            <b>Różnica ciśnień</b>
            <span>Pompa pokonuje wspólne opory oraz stratę jednej, najbardziej wymagającej drogi — nie sumę strat wszystkich pętli.</span>
          </div>
        </div>
      </div>
    </header>

    <nav class="rk-circuit-shortcuts" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-circuit-shortcuts-label">Na skróty</span>
      <a href="#rk-circuit-answer">Czym jest obieg?</a>
      <a href="#rk-circuit-terms">Obieg a pętla</a>
      <a href="#rk-circuit-data">Dane projektowe</a>
      <a href="#rk-circuit-graphic">Trzy schematy</a>
      <a href="#rk-circuit-direct">Obieg bezpośredni</a>
      <a href="#rk-circuit-mixed">Obieg mieszany</a>
      <a href="#rk-circuit-separated">Bufor lub sprzęgło</a>
      <a href="#rk-circuit-temperature">Temperatura</a>
      <a href="#rk-circuit-flow">Przepływ i opory</a>
      <a href="#rk-circuit-calculator">Kalkulator</a>
      <a href="#rk-circuit-pump">Pompa obiegowa</a>
      <a href="#rk-circuit-manifold">Rozdzielacz</a>
      <a href="#rk-circuit-zones">Zamykanie stref</a>
      <a href="#rk-circuit-source">Źródło ciepła</a>
      <a href="#rk-circuit-balancing">Równoważenie</a>
      <a href="#rk-circuit-diagnostics">Diagnostyka</a>
      <a href="#rk-circuit-design">Projektowanie</a>
      <a href="#rk-circuit-errors">Błędy</a>
      <a href="#rk-circuit-checklist">Lista kontrolna</a>
      <a href="#rk-circuit-conclusions">Wnioski</a>
      <a href="#rk-circuit-references">Źródła</a>
      <a href="#rk-circuit-faq">FAQ</a>
      <a href="#rk-circuit-author">Autor</a>
    </nav>

    <section class="rk-circuit-section" id="rk-circuit-answer">
      <span class="rk-circuit-eyebrow">Odpowiedź w 30 sekund</span>
      <h2 class="rk-circuit-section-title">Czym jest obieg grzewczy ogrzewania podłogowego?</h2>
      <div class="rk-circuit-answer">
        <span class="rk-circuit-answer-label">Definicja praktyczna</span>
        <p><strong>Obieg grzewczy to kompletna droga hydrauliczna, którą czynnik pokonuje od miejsca wytworzenia lub regulacji temperatury, przez pompę, przewody wspólne, rozdzielacz i jedną z pętli, aż do powrotu. Kilka pętli podłączonych do jednego rozdzielacza pracuje równolegle w ramach tego samego obiegu temperaturowego.</strong></p>
      </div>

      <div class="rk-circuit-grid-4">
        <article class="rk-circuit-card"><span class="rk-circuit-card-number">1</span><h3>Źródło energii</h3><p>Pompa ciepła, kocioł albo inny układ przekazuje do wody energię potrzebną do pokrycia aktualnego obciążenia budynku.</p></article>
        <article class="rk-circuit-card"><span class="rk-circuit-card-number">2</span><h3>Regulacja temperatury</h3><p>Temperaturę może wyznaczać bezpośrednio źródło lub oddzielny układ mieszający, zależnie od architektury instalacji.</p></article>
        <article class="rk-circuit-card"><span class="rk-circuit-card-number">3</span><h3>Wymuszenie przepływu</h3><p>Pompa wytwarza różnicę ciśnień potrzebną do uzyskania projektowych przepływów w aktywnych drogach hydraulicznych.</p></article>
        <article class="rk-circuit-card"><span class="rk-circuit-card-number">4</span><h3>Oddawanie ciepła</h3><p>Równoległe pętle przekazują energię jastrychowi lub suchemu systemowi, a schłodzona woda wraca do ponownego ogrzania.</p></article>
      </div>

      <p>Ogólną zasadę emisji opisuje poradnik <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/">jak działa ogrzewanie podłogowe</a>. Tutaj koncentrujemy się na tym, jak połączyć odbiorniki ze źródłem bez traktowania każdego elementu jako osobnego urządzenia.</p>
      <div class="rk-circuit-callout"><strong>Obieg nie jest synonimem jednej pętli.</strong> Pętla ma własną moc, długość, przepływ i opór, natomiast wspólny obieg obejmuje również elementy odpowiedzialne za temperaturę oraz transport wody do wszystkich pętli.</div>
    </section>

    <section class="rk-circuit-section rk-circuit-section-soft" id="rk-circuit-terms">
      <span class="rk-circuit-eyebrow">Najpierw uporządkujmy nazwy</span>
      <h2 class="rk-circuit-section-title">Obieg grzewczy a pętla, strefa i obieg źródłowy</h2>
      <p class="rk-circuit-lead">Dokumentacje producentów nie zawsze używają nazw identycznie. Dlatego przed obliczeniami trzeba ustalić, czy słowo „obieg” oznacza całą grupę temperaturową, obieg pierwotny źródła, czy pojedynczą gałąź na rozdzielaczu.</p>

      <div class="rk-circuit-compare-table" role="table" aria-label="Porównanie pojęć hydraulicznych">
        <div class="rk-circuit-table-row rk-circuit-table-head" role="row"><div role="columnheader">Pojęcie</div><div role="columnheader">Co obejmuje</div><div role="columnheader">Najważniejszy parametr</div></div>
        <div class="rk-circuit-table-row" role="row"><div class="rk-circuit-table-label" data-label="Pojęcie" role="cell">Obieg grzewczy podłogówki</div><div data-label="Co obejmuje" role="cell">Pompę lub pompę źródła, przewody wspólne, armaturę, rozdzielacz i równoległe pętle pracujące na wspólnej temperaturze.</div><div data-label="Najważniejszy parametr" role="cell">Temperatura, sumaryczny przepływ oraz opór drogi krytycznej.</div></div>
        <div class="rk-circuit-table-row" role="row"><div class="rk-circuit-table-label" data-label="Pojęcie" role="cell">Pętla grzewcza</div><div data-label="Co obejmuje" role="cell">Jeden ciągły odcinek rury od belki zasilającej przez pole grzewcze do belki powrotnej.</div><div data-label="Najważniejszy parametr" role="cell">Przypisana moc, przepływ, długość i spadek ciśnienia.</div></div>
        <div class="rk-circuit-table-row" role="row"><div class="rk-circuit-table-label" data-label="Pojęcie" role="cell">Strefa regulacyjna</div><div data-label="Co obejmuje" role="cell">Jedną lub kilka pętli sterowanych wspólnym regulatorem zgodnie z funkcją pomieszczeń.</div><div data-label="Najważniejszy parametr" role="cell">Sposób sterowania oraz minimalny odbiór po zamknięciu innych stref.</div></div>
        <div class="rk-circuit-table-row" role="row"><div class="rk-circuit-table-label" data-label="Pojęcie" role="cell">Obieg źródłowy</div><div data-label="Co obejmuje" role="cell">Drogę między źródłem a buforem, sprzęgłem lub wymiennikiem, jeżeli zastosowano rozdzielenie hydrauliczne.</div><div data-label="Najważniejszy parametr" role="cell">Przepływ wymagany przez źródło i warunki przekazywania mocy.</div></div>
      </div>

      <p>Szczegółowe zasady dotyczące pojedynczej gałęzi znajdują się w artykule <a href="https://projekt-ogrzewania.pl/petla-grzewcza/">pętla grzewcza — długość, przepływ i rozstaw</a>. Rozdzielenie tych dwóch intencji zapobiega dobieraniu całego układu wyłącznie na podstawie liczby metrów rury.</p>
    </section>

    <section class="rk-circuit-section" id="rk-circuit-data">
      <span class="rk-circuit-eyebrow">Schemat wynika z wymagań, nie z przyzwyczajenia</span>
      <h2 class="rk-circuit-section-title">Jakie dane są potrzebne do zaprojektowania obiegu?</h2>
      <p class="rk-circuit-lead">Nie zaczyna się od wyboru zestawu pompowego. Najpierw trzeba ustalić wymagania cieplne odbiorników, parametry źródła oraz wszystkie stany, w których instalacja będzie pracowała.</p>

      <div class="rk-circuit-spec-grid">
        <div class="rk-circuit-spec"><span class="rk-circuit-spec-mark">1</span><div><strong>OZC pomieszczeń</strong><span><a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">Projektowe obciążenie cieplne</a> określa moc, którą mają przekazać poszczególne powierzchnie.</span></div></div>
        <div class="rk-circuit-spec"><span class="rk-circuit-spec-mark">2</span><div><strong>Model emisji podłogi</strong><span>Powierzchnia czynna, rozstaw, warstwy i okładzina określają wymagane temperatury wody.</span></div></div>
        <div class="rk-circuit-spec"><span class="rk-circuit-spec-mark">3</span><div><strong>Przepływy pętli</strong><span>Dla każdej pętli trzeba znać przypisaną moc oraz projektową różnicę temperatur.</span></div></div>
        <div class="rk-circuit-spec"><span class="rk-circuit-spec-mark">4</span><div><strong>Opory hydrauliczne</strong><span>Obliczenie obejmuje dokładną rurę, zawory, rozdzielacz, przewody wspólne i pozostałą armaturę.</span></div></div>
        <div class="rk-circuit-spec"><span class="rk-circuit-spec-mark">5</span><div><strong>Charakterystyka źródła</strong><span>Znaczenie mają minimalny przepływ, objętość, zakres temperatur, modulacja i pompa wbudowana.</span></div></div>
        <div class="rk-circuit-spec"><span class="rk-circuit-spec-mark">6</span><div><strong>Inne odbiorniki</strong><span>Grzejniki, nagrzewnice lub kilka temperatur zasilania mogą uzasadniać oddzielne obiegi.</span></div></div>
        <div class="rk-circuit-spec"><span class="rk-circuit-spec-mark">7</span><div><strong>Sterowanie strefowe</strong><span>Liczba jednocześnie otwartych pętli zmienia przepływ, objętość czynną i warunki pracy pompy.</span></div></div>
        <div class="rk-circuit-spec"><span class="rk-circuit-spec-mark">8</span><div><strong>Medium i jakość wody</strong><span>Rodzaj czynnika, temperatura oraz stan instalacji wpływają na opory, trwałość i procedurę uruchomienia.</span></div></div>
      </div>

      <div class="rk-circuit-chain" aria-label="Kolejność projektowania obiegu">
        <div class="rk-circuit-chain-item"><strong>Obciążenia</strong><span>moc pomieszczeń</span></div>
        <div class="rk-circuit-chain-item"><strong>Powierzchnia</strong><span>emisja i temperatury</span></div>
        <div class="rk-circuit-chain-item"><strong>Pętle</strong><span>przepływy i opory</span></div>
        <div class="rk-circuit-chain-item"><strong>Obieg wspólny</strong><span>Q i droga krytyczna</span></div>
        <div class="rk-circuit-chain-item"><strong>Źródło</strong><span>pompa i sterowanie</span></div>
      </div>

      <p>Punktem wyjścia jest <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">obliczenie strat ciepła budynku</a>, a nie założenie jednej temperatury zasilania dla wszystkich inwestycji. Dopiero po sprawdzeniu podłogi można ustalać architekturę hydrauliczną.</p>
    </section>

    <section class="rk-circuit-section rk-circuit-section-soft" id="rk-circuit-graphic">
      <span class="rk-circuit-eyebrow">Interaktywna grafika edukacyjna</span>
      <h2 class="rk-circuit-section-title">Jak wygląda obieg bezpośredni, mieszany i rozdzielony?</h2>
      <p class="rk-circuit-lead">Wybierz konfigurację i stan pracy. Sześć oddzielnych modułów pokaże, kto ustala temperaturę, która pompa wymusza przepływ przez pętle i jak zamykanie stref wpływa na układ.</p>

      <div class="rk-circuit-tool" id="rk-circuit-topology-tool">
        <div class="rk-circuit-tool-head">
          <span class="rk-circuit-eyebrow">Trzy architektury, trzy stany odbioru</span>
          <h3>Prześledź drogę wody od źródła do powrotu</h3>
          <p>Moduł nie wskazuje automatycznie najlepszego rozwiązania. Pokazuje funkcje elementów, które muszą zostać zweryfikowane dla konkretnego źródła oraz instalacji.</p>
        </div>
        <div class="rk-circuit-tool-body">
          <span class="rk-circuit-control-label">1. Wybierz konfigurację hydrauliczną</span>
          <div class="rk-circuit-graphic-controls" role="group" aria-label="Wybierz konfigurację obiegu">
            <button type="button" data-rk-circuit-config="direct" aria-pressed="true">Obieg bezpośredni</button>
            <button type="button" data-rk-circuit-config="mixed" aria-pressed="false">Pompa i mieszacz</button>
            <button type="button" data-rk-circuit-config="separated" aria-pressed="false">Bufor lub sprzęgło</button>
          </div>

          <span class="rk-circuit-control-label">2. Wybierz stan pracy odbiorników</span>
          <div class="rk-circuit-graphic-controls rk-circuit-state-controls" role="group" aria-label="Wybierz stan pracy stref">
            <button type="button" data-rk-circuit-state="all" aria-pressed="true">Wszystkie pętle otwarte</button>
            <button type="button" data-rk-circuit-state="partial" aria-pressed="false">Część stref zamknięta</button>
            <button type="button" data-rk-circuit-state="minimum" aria-pressed="false">Minimalny odbiór</button>
          </div>

          <div class="rk-circuit-hydraulic-grid" aria-live="polite">
            <article class="rk-circuit-hydraulic-card is-active" data-rk-circuit-component="source"><span class="rk-circuit-hydraulic-number">1</span><h3>Źródło ciepła</h3><span class="rk-circuit-hydraulic-value" data-rk-circuit-component-value="">Wytwarza temperaturę obiegu</span><p data-rk-circuit-component-copy="">Źródło bezpośrednio zasila podłogówkę parametrem wynikającym z regulacji i ograniczeń urządzenia.</p></article>
            <article class="rk-circuit-hydraulic-card is-active" data-rk-circuit-component="temperature"><span class="rk-circuit-hydraulic-number">2</span><h3>Regulacja temperatury</h3><span class="rk-circuit-hydraulic-value" data-rk-circuit-component-value="">Krzywa źródła bez mieszania</span><p data-rk-circuit-component-copy="">Temperatura zasilania jest sterowana w źródle; nie ma oddzielnego zaworu obniżającego parametr.</p></article>
            <article class="rk-circuit-hydraulic-card is-active" data-rk-circuit-component="pump"><span class="rk-circuit-hydraulic-number">3</span><h3>Pompa i różnica ciśnień</h3><span class="rk-circuit-hydraulic-value" data-rk-circuit-component-value="">Pompa źródła obsługuje pętle</span><p data-rk-circuit-component-copy="">Jej dostępna charakterystyka musi pokryć przepływ całkowity oraz opór krytycznej drogi instalacji.</p></article>
            <article class="rk-circuit-hydraulic-card is-active" data-rk-circuit-component="manifold"><span class="rk-circuit-hydraulic-number">4</span><h3>Rozdzielacz</h3><span class="rk-circuit-hydraulic-value" data-rk-circuit-component-value="">Rozdziela strumień równolegle</span><p data-rk-circuit-component-copy="">Przepływ wspólny dzieli się na wartości ustawione dla poszczególnych pętli.</p></article>
            <article class="rk-circuit-hydraulic-card is-active" data-rk-circuit-component="loops"><span class="rk-circuit-hydraulic-number">5</span><h3>Pętle i podłoga</h3><span class="rk-circuit-hydraulic-value" data-rk-circuit-component-value="">Odbierają projektową moc</span><p data-rk-circuit-component-copy="">Każda aktywna pętla otrzymuje własny przepływ i przekazuje energię przypisanej powierzchni.</p></article>
            <article class="rk-circuit-hydraulic-card is-active" data-rk-circuit-component="return"><span class="rk-circuit-hydraulic-number">6</span><h3>Powrót</h3><span class="rk-circuit-hydraulic-value" data-rk-circuit-component-value="">Wraca bezpośrednio do źródła</span><p data-rk-circuit-component-copy="">Strumienie pętli łączą się na belce powrotnej i wspólnym przewodem wracają do ponownego ogrzania.</p></article>
          </div>

          <div class="rk-circuit-graphic-result" id="rk-circuit-topology-result" role="status" aria-live="polite">
            <strong>Obieg bezpośredni jest najprostszy, jeżeli źródło może samo wytworzyć wymagany parametr i przepływ.</strong>
            <p>Przy wszystkich pętlach otwartych pompa źródła obsługuje ich sumaryczny przepływ. Trzeba sprawdzić dostępną charakterystykę, opory wspólne i drogę krytyczną.</p>
          </div>
          <div class="rk-circuit-tool-disclaimer"><strong>Granica grafiki:</strong> sam typ schematu nie przesądza o poprawności instalacji. O zastosowaniu mieszania, bufora, sprzęgła lub pompy wtórnej decydują wymagania źródła, odbiorników, automatyki oraz obliczenia przepływów i oporów.</div>
        </div>
      </div>
    </section>

    <section class="rk-circuit-section" id="rk-circuit-direct">
      <span class="rk-circuit-eyebrow">Najmniej elementów, ale pełna weryfikacja</span>
      <h2 class="rk-circuit-section-title">Kiedy możliwy jest bezpośredni obieg podłogówki?</h2>
      <p class="rk-circuit-lead">W obiegu bezpośrednim źródło wytwarza temperaturę odpowiednią dla podłogi, a jego pompa zapewnia przepływ przez rozdzielacz i pętle. Brak mieszacza nie oznacza braku regulacji — funkcję temperaturową realizuje automatyka źródła.</p>

      <div class="rk-circuit-grid-3">
        <article class="rk-circuit-card"><h3>Jedna temperatura odbiorników</h3><p>Wszystkie podłączone powierzchnie powinny poprawnie pracować na wspólnej temperaturze wynikającej z projektu.</p></article>
        <article class="rk-circuit-card"><h3>Wystarczająca pompa</h3><p>Trzeba sprawdzić nie tylko maksymalny przepływ pompy, lecz jej dostępny punkt pracy po uwzględnieniu oporów urządzenia i instalacji.</p></article>
        <article class="rk-circuit-card"><h3>Zgodność ze źródłem</h3><p>Minimalny przepływ, minimalna objętość, praca przy zamykaniu stref i logika odszraniania muszą odpowiadać dokumentacji konkretnego urządzenia.</p></article>
      </div>

      <p>Taką architekturę często rozważa się w <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekcie podłogówki z pompą ciepła</a>, ale nie wynika ona automatycznie z samej nazwy źródła. Kluczowa jest najniższa temperatura pozwalająca pokryć obciążenie, a nie jedna nastawa właściwa dla każdego domu.</p>
      <div class="rk-circuit-note"><strong>Osobna grupa pompowa nie jest obowiązkowym wyposażeniem każdego rozdzielacza.</strong> Dodanie kolejnej pompy bez potrzeby może zwiększyć zużycie energii, koszty i liczbę punktów wymagających regulacji.</div>
    </section>

    <section class="rk-circuit-section rk-circuit-section-soft" id="rk-circuit-mixed">
      <span class="rk-circuit-eyebrow">Oddzielna temperatura dla obiegu podłogowego</span>
      <h2 class="rk-circuit-section-title">Kiedy stosuje się obieg pompowo-mieszający?</h2>
      <p class="rk-circuit-lead">Układ mieszający ma sens wtedy, gdy temperatura w części źródłowej lub w innym obiegu jest wyższa niż wymagana przez podłogę. Zawór reguluje proporcję strumieni, a pompa wtórna wymusza przepływ po stronie ogrzewania płaszczyznowego.</p>

      <div class="rk-circuit-grid-3">
        <article class="rk-circuit-card"><h3>Dwa poziomy temperatury</h3><p>Przykładem może być instalacja łącząca odbiorniki zaprojektowane na różne parametry. Wcześniej trzeba jednak sprawdzić, czy taki podział rzeczywiście jest konieczny.</p></article>
        <article class="rk-circuit-card"><h3>Bilans przepływów mieszania</h3><p>Temperatura za zaworem zależy od temperatur oraz strumieni zasilania pierwotnego i powrotu. Sama pozycja pokrętła nie jest obliczeniem.</p></article>
        <article class="rk-circuit-card"><h3>Współpraca dwóch pomp</h3><p>Jeżeli pompy nie są rozdzielone hydraulicznie, ich wzajemne oddziaływanie trzeba uwzględnić w schemacie i nastawach.</p></article>
      </div>

      <p>Budowę oraz sposoby regulacji omawia osobny poradnik o <a href="https://projekt-ogrzewania.pl/zawor-mieszajacy-w-ogrzewaniu-podlogowym/">zaworze mieszającym w ogrzewaniu podłogowym</a>. Mieszacz nie naprawi zbyt małej powierzchni grzewczej, błędnych przepływów ani źle dobranej pompy.</p>
      <div class="rk-circuit-warning"><strong>Nie należy projektować układu na zasadzie „źródło zawsze 65°C, podłoga zawsze 40°C”.</strong> Obie temperatury wynikają z konkretnego źródła, obciążeń, odbiorników i sposobu regulacji.</div>
    </section>

    <section class="rk-circuit-section" id="rk-circuit-separated">
      <span class="rk-circuit-eyebrow">Dwa obiegi połączone energetycznie</span>
      <h2 class="rk-circuit-section-title">Co zmienia bufor lub sprzęgło hydrauliczne?</h2>
      <p class="rk-circuit-lead">Rozdzielenie hydrauliczne ogranicza bezpośrednią zależność przepływu obiegu źródłowego od przepływu obiegu odbiorczego. Nie oznacza jednak, że oba strumienie i temperatury mogą być dowolne.</p>

      <div class="rk-circuit-compare-table" role="table" aria-label="Funkcje rozdzielenia hydraulicznego">
        <div class="rk-circuit-table-row rk-circuit-table-head" role="row"><div role="columnheader">Obszar</div><div role="columnheader">Co zyskujemy</div><div role="columnheader">Co nadal trzeba policzyć</div></div>
        <div class="rk-circuit-table-row" role="row"><div class="rk-circuit-table-label" data-label="Obszar" role="cell">Obieg źródłowy</div><div data-label="Co zyskujemy" role="cell">Pompa źródła może realizować wymagany dla urządzenia przepływ niezależniej od położenia zaworów strefowych.</div><div data-label="Co nadal trzeba policzyć" role="cell">Przepływ, opory, minimalną objętość i temperatury po stronie źródła.</div></div>
        <div class="rk-circuit-table-row" role="row"><div class="rk-circuit-table-label" data-label="Obszar" role="cell">Obieg podłogowy</div><div data-label="Co zyskujemy" role="cell">Pompa wtórna może zostać dobrana do przepływów rozdzielaczy i ich krytycznej drogi.</div><div data-label="Co nadal trzeba policzyć" role="cell">Sumę przepływów, wspólne przewody, pętle, zawory i tryb regulacji pompy.</div></div>
        <div class="rk-circuit-table-row" role="row"><div class="rk-circuit-table-label" data-label="Obszar" role="cell">Wymiana energii</div><div data-label="Co zyskujemy" role="cell">Bufor może zwiększyć czynną objętość i wpłynąć na dynamikę układu.</div><div data-label="Co nadal trzeba policzyć" role="cell">Bilans strumieni, mieszanie temperatur, pojemność oraz straty postojowe.</div></div>
      </div>

      <p>Różne funkcje zbiornika wyjaśnia <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">poradnik o buforze ciepła w podłogówce</a>. Sam bufor nie zastępuje obliczenia pompy wtórnej ani równoważenia rozdzielaczy.</p>
      <div class="rk-circuit-callout"><strong>Rozdzielenie hydrauliczne nie jest automatycznie ani dobre, ani złe.</strong> Rozwiązuje określone wymagania, ale dodaje pompę, armaturę, sterowanie oraz straty, które powinny mieć konkretne uzasadnienie.</div>
    </section>

    <section class="rk-circuit-section rk-circuit-section-soft" id="rk-circuit-temperature">
      <span class="rk-circuit-eyebrow">Temperatura ma wynikać z wymaganej emisji</span>
      <h2 class="rk-circuit-section-title">Kto ustala temperaturę zasilania obiegu?</h2>
      <p class="rk-circuit-lead">W obiegu bezpośrednim temperaturę zadaną wyznacza zwykle regulator źródła. W obiegu mieszanym robi to automatyka zaworu lub grupy mieszającej. W obu przypadkach punktem odniesienia powinno być zapotrzebowanie powierzchni, a nie stała nastawa.</p>

      <div class="rk-circuit-grid-3">
        <article class="rk-circuit-card"><h3>Warunki projektowe</h3><p>Maksymalna potrzebna temperatura wynika z OZC, powierzchni czynnej, konstrukcji podłogi, rozstawu i okładziny.</p></article>
        <article class="rk-circuit-card"><h3>Warunki częściowego obciążenia</h3><p>Przez większość sezonu budynek potrzebuje mniejszej mocy, dlatego temperatura może być korygowana wraz z pogodą.</p></article>
        <article class="rk-circuit-card"><h3>Ograniczenia materiałów</h3><p>Trzeba respektować temperaturę powierzchni, wymagania okładziny oraz dokumentację systemu i źródła.</p></article>
      </div>

      <p>Sposób tworzenia zależności pogodowej opisuje artykuł <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywa grzewcza w ogrzewaniu podłogowym</a>. Warto też sprawdzić, z czego naprawdę wynika <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalna temperatura zasilania podłogówki</a>.</p>
      <div class="rk-circuit-note"><strong>Termostat pokojowy nie powinien zastępować doboru temperatury wody.</strong> Może zgłaszać zapotrzebowanie albo zamykać strefę, lecz nie oblicza mocy powierzchni i nie równoważy hydrauliki.</div>
    </section>

    <section class="rk-circuit-section" id="rk-circuit-flow">
      <span class="rk-circuit-eyebrow">Dwie różne operacje: suma przepływów i maksimum oporu</span>
      <h2 class="rk-circuit-section-title">Jak oblicza się przepływ i opór całego obiegu?</h2>
      <p class="rk-circuit-lead">Przepływ wspólnych przewodów jest sumą przepływów równoległych pętli pracujących w rozpatrywanym stanie. Wymaganej różnicy ciśnień nie wyznacza się przez zsumowanie strat wszystkich pętli.</p>

      <div class="rk-circuit-equation-box">
        <span class="rk-circuit-equation-label">Przepływ wody wynikający z mocy</span>
        <div class="rk-circuit-equation-main">V̇ [l/h] ≈ 0,86 × P [W] ÷ ΔT [K]</div>
        <p>Dla 2800 W oraz projektowego ΔT = 5 K przepływ całkowity wynosi około 482 l/h, czyli 0,482 m³/h. Jeżeli moc jest rozdzielona na cztery pętle, ich indywidualne przepływy sumują się na przewodzie wspólnym.</p>
      </div>

      <div class="rk-circuit-grid-2">
        <article class="rk-circuit-card"><h3>Przepływy się sumują</h3><p>Jeżeli aktywne pętle wymagają 2,58; 2,15; 1,43 i 1,86 l/min, wspólny przewód przenosi około 8,02 l/min.</p></article>
        <article class="rk-circuit-card"><h3>Spadki równoległych gałęzi się nie sumują</h3><p>Do wspólnych oporów dodaje się stratę tej drogi przez rozdzielacz i pętlę, która przy wymaganym przepływie potrzebuje największej różnicy ciśnień.</p></article>
      </div>

      <p>Znaczenie projektowej różnicy temperatur wyjaśnia materiał o <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">ΔT między zasilaniem i powrotem</a>. Dla glikolu nie należy bez korekty stosować współczynnika właściwego dla wody.</p>
      <div class="rk-circuit-warning"><strong>Najdłuższa pętla często, ale nie zawsze jest drogą krytyczną.</strong> Krótsza gałąź może wymagać większego przepływu, mieć inną średnicę lub bardziej oporową armaturę.</div>
    </section>

    <section class="rk-circuit-section rk-circuit-section-soft" id="rk-circuit-calculator">
      <span class="rk-circuit-eyebrow">Kalkulator edukacyjny i interaktywny wykres</span>
      <h2 class="rk-circuit-section-title">Kalkulator przepływu całkowitego i obiegu krytycznego</h2>
      <p class="rk-circuit-lead">Wprowadź moc oraz obliczony spadek ciśnienia każdej pętli. Narzędzie policzy przepływy dla wskazanego ΔT, zsumuje je i pokaże drogę wymagającą największej różnicy ciśnień.</p>

      <div class="rk-circuit-tool" id="rk-circuit-calculator-tool">
        <div class="rk-circuit-tool-head">
          <span class="rk-circuit-eyebrow">Suma Q, maksimum Δp</span>
          <h3>Zbuduj uproszczony bilans rozdzielacza</h3>
          <p>Możesz dodać maksymalnie osiem pętli. Spadek każdej gałęzi jest daną wejściową — kalkulator nie zgaduje oporu na podstawie samej długości.</p>
        </div>

        <div class="rk-circuit-tool-body">
          <div class="rk-circuit-field-grid">
            <div class="rk-circuit-field">
              <label for="rk-circuit-delta">Projektowe ΔT wody</label>
              <input id="rk-circuit-delta" type="number" min="1" max="20" step="0.5" value="5" inputmode="decimal">
              <span class="rk-circuit-field-help">Różnica temperatur zasilania i powrotu przy projektowej mocy.</span>
            </div>
            <div class="rk-circuit-field">
              <label for="rk-circuit-common-loss">Wspólne straty ciśnienia</label>
              <input id="rk-circuit-common-loss" type="number" min="0" max="100" step="0.5" value="8" inputmode="decimal">
              <span class="rk-circuit-field-help">Przewody wspólne i elementy leżące na analizowanej drodze poza stratą wpisaną dla pętli.</span>
            </div>
          </div>

          <div class="rk-circuit-circuit-editor" id="rk-circuit-row-editor" aria-label="Dane pętli rozdzielacza">
            <div class="rk-circuit-circuit-row" data-rk-circuit-row="">
              <div class="rk-circuit-circuit-cell"><label>Nazwa pętli</label><input data-rk-circuit-name="" type="text" value="Salon A" maxlength="30"></div>
              <div class="rk-circuit-circuit-cell"><label>Moc [W]</label><input data-rk-circuit-power="" type="number" min="0" max="10000" step="10" value="900" inputmode="decimal"></div>
              <div class="rk-circuit-circuit-cell"><label>Spadek pętli [kPa]</label><input data-rk-circuit-loss="" type="number" min="0" max="100" step="0.5" value="12" inputmode="decimal"></div>
              <div class="rk-circuit-circuit-flow"><span>Przepływ</span><strong data-rk-circuit-flow="">2,58 l/min</strong></div>
              <button class="rk-circuit-remove-loop" data-rk-circuit-remove="" type="button" aria-label="Usuń pętlę Salon A">×</button>
            </div>
            <div class="rk-circuit-circuit-row" data-rk-circuit-row="">
              <div class="rk-circuit-circuit-cell"><label>Nazwa pętli</label><input data-rk-circuit-name="" type="text" value="Salon B" maxlength="30"></div>
              <div class="rk-circuit-circuit-cell"><label>Moc [W]</label><input data-rk-circuit-power="" type="number" min="0" max="10000" step="10" value="750" inputmode="decimal"></div>
              <div class="rk-circuit-circuit-cell"><label>Spadek pętli [kPa]</label><input data-rk-circuit-loss="" type="number" min="0" max="100" step="0.5" value="14" inputmode="decimal"></div>
              <div class="rk-circuit-circuit-flow"><span>Przepływ</span><strong data-rk-circuit-flow="">2,15 l/min</strong></div>
              <button class="rk-circuit-remove-loop" data-rk-circuit-remove="" type="button" aria-label="Usuń pętlę Salon B">×</button>
            </div>
            <div class="rk-circuit-circuit-row" data-rk-circuit-row="">
              <div class="rk-circuit-circuit-cell"><label>Nazwa pętli</label><input data-rk-circuit-name="" type="text" value="Kuchnia" maxlength="30"></div>
              <div class="rk-circuit-circuit-cell"><label>Moc [W]</label><input data-rk-circuit-power="" type="number" min="0" max="10000" step="10" value="500" inputmode="decimal"></div>
              <div class="rk-circuit-circuit-cell"><label>Spadek pętli [kPa]</label><input data-rk-circuit-loss="" type="number" min="0" max="100" step="0.5" value="9" inputmode="decimal"></div>
              <div class="rk-circuit-circuit-flow"><span>Przepływ</span><strong data-rk-circuit-flow="">1,43 l/min</strong></div>
              <button class="rk-circuit-remove-loop" data-rk-circuit-remove="" type="button" aria-label="Usuń pętlę Kuchnia">×</button>
            </div>
            <div class="rk-circuit-circuit-row" data-rk-circuit-row="">
              <div class="rk-circuit-circuit-cell"><label>Nazwa pętli</label><input data-rk-circuit-name="" type="text" value="Łazienka" maxlength="30"></div>
              <div class="rk-circuit-circuit-cell"><label>Moc [W]</label><input data-rk-circuit-power="" type="number" min="0" max="10000" step="10" value="650" inputmode="decimal"></div>
              <div class="rk-circuit-circuit-cell"><label>Spadek pętli [kPa]</label><input data-rk-circuit-loss="" type="number" min="0" max="100" step="0.5" value="16" inputmode="decimal"></div>
              <div class="rk-circuit-circuit-flow"><span>Przepływ</span><strong data-rk-circuit-flow="">1,86 l/min</strong></div>
              <button class="rk-circuit-remove-loop" data-rk-circuit-remove="" type="button" aria-label="Usuń pętlę Łazienka">×</button>
            </div>
          </div>
          <button class="rk-circuit-add-loop" id="rk-circuit-add-row" type="button">+ Dodaj pętlę</button>

          <div class="rk-circuit-calc-layout">
            <div class="rk-circuit-results" aria-live="polite">
              <div class="rk-circuit-result-grid">
                <div class="rk-circuit-result"><span>Łączna moc</span><strong id="rk-circuit-result-power">2800 W</strong></div>
                <div class="rk-circuit-result"><span>Przepływ całkowity</span><strong id="rk-circuit-result-flow">0,482 m³/h</strong></div>
                <div class="rk-circuit-result"><span>Suma przepływów</span><strong id="rk-circuit-result-flow-minute">8,03 l/min</strong></div>
                <div class="rk-circuit-result"><span>Obieg krytyczny</span><strong id="rk-circuit-result-critical">Łazienka</strong></div>
                <div class="rk-circuit-result"><span>Wymagane Δp drogi</span><strong id="rk-circuit-result-pressure">24,0 kPa</strong></div>
                <div class="rk-circuit-result"><span>Odpowiednik wysokości</span><strong id="rk-circuit-result-head">2,45 m</strong></div>
              </div>

              <div class="rk-circuit-breakdown">
                <span class="rk-circuit-breakdown-title">Co dokładnie policzono?</span>
                <p class="rk-circuit-equation" id="rk-circuit-flow-equation">0,86 × 2800 W ÷ 5 K = 482 l/h = 0,482 m³/h.</p>
                <p class="rk-circuit-equation" id="rk-circuit-pressure-equation">8,0 kPa wspólnych strat + 16,0 kPa pętli krytycznej = 24,0 kPa.</p>
              </div>
              <div class="rk-circuit-status is-good" id="rk-circuit-calculator-status">Przepływy czterech pętli zsumowano, natomiast do wspólnych strat dodano opór tylko najbardziej wymagającej gałęzi.</div>
            </div>

            <div class="rk-circuit-chart-card">
              <div class="rk-circuit-chart-title">Spadek ciśnienia każdej drogi przy wymaganym przepływie</div>
              <div class="rk-circuit-chart-wrap">
                <svg id="rk-circuit-pressure-chart" viewBox="0 0 800 430" role="img" aria-labelledby="rk-circuit-chart-title-svg rk-circuit-chart-desc">
                  <title id="rk-circuit-chart-title-svg">Porównanie oporów dróg hydraulicznych</title>
                  <desc id="rk-circuit-chart-desc">Wykres słupkowy porównuje wspólne straty oraz spadki ciśnienia poszczególnych pętli i wskazuje drogę krytyczną.</desc>
                </svg>
              </div>
              <div class="rk-circuit-legend" aria-label="Legenda wykresu">
                <span><i></i>opór pętli</span>
                <span class="is-common"><i></i>straty wspólne</span>
                <span class="is-pump"><i></i>droga krytyczna</span>
              </div>
            </div>
          </div>

          <div class="rk-circuit-tool-disclaimer"><strong>Zakres kalkulatora:</strong> dla wody przepływ jest liczony z wpisanej mocy i ΔT. Spadki ciśnienia pętli oraz wspólnych elementów muszą pochodzić z obliczeń dla konkretnej rury, czynnika, rozdzielacza i armatury. Odpowiednik wysokości nie jest automatycznym doborem pompy — trzeba porównać cały punkt Q–H z jej charakterystyką i wymaganiami źródła.</div>
        </div>
      </div>

      <p>Pełną analizę średnic, prędkości i punktu pracy rozwija <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulator doboru pompy obiegowej</a>. Tutaj najważniejsze jest rozróżnienie sumowania strumieni od wyznaczania krytycznej drogi.</p>

      <div class="rk-circuit-cta">
        <div class="rk-circuit-cta-title">Znasz przepływ całkowity i obieg krytyczny? Teraz trzeba sprawdzić cały układ</div>
        <p>Wynik nie rozstrzyga jeszcze, czy wystarczy pompa wbudowana w źródło, czy potrzebny będzie oddzielny obieg, mieszacz albo rozdzielenie hydrauliczne. Projekt łączy OZC, temperatury wody, rzeczywiste trasy, przepływy pętli, wspólne opory i wymagania konkretnego źródła.</p>
        <a class="rk-circuit-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów kompletny projekt ogrzewania podłogowego</a>
        <small class="rk-circuit-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-circuit-section" id="rk-circuit-pump">
      <span class="rk-circuit-eyebrow">Punkt pracy zamiast samego numeru biegu</span>
      <h2 class="rk-circuit-section-title">Czy podłogówka zawsze potrzebuje osobnej pompy?</h2>
      <p class="rk-circuit-lead">Przepływ wodnego ogrzewania podłogowego musi być wymuszony, lecz nie zawsze potrzebna jest pompa zamontowana przy każdym rozdzielaczu. W obiegu bezpośrednim funkcję tę może spełniać pompa źródła, jeżeli jej dostępna charakterystyka wystarcza dla całej drogi.</p>

      <div class="rk-circuit-grid-3">
        <article class="rk-circuit-card"><h3>Wymagany przepływ Q</h3><p>Jest sumą strumieni obiegów czynnych w stanie przyjętym do doboru. Inny będzie przy wszystkich strefach otwartych i po ich częściowym zamknięciu.</p></article>
        <article class="rk-circuit-card"><h3>Wymagana wysokość H</h3><p>Wynika ze strat krytycznej drogi, obejmującej urządzenie, przewody wspólne, armaturę, rozdzielacz i pętlę.</p></article>
        <article class="rk-circuit-card"><h3>Tryb regulacji</h3><p>Stałe lub proporcjonalne ciśnienie zmienia zachowanie pompy po zamykaniu zaworów. Tryb powinien odpowiadać hydraulice i automatyce.</p></article>
      </div>

      <p>Metodę tworzenia punktu Q–H opisuje artykuł o <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompie obiegowej w ogrzewaniu podłogowym</a>. Dobór samej średnicy przewodu wspólnego można sprawdzić w poradniku o <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">średnicy rury zasilającej rozdzielacz</a>.</p>
      <div class="rk-circuit-warning"><strong>Nie wolno sumować wysokości podnoszenia dwóch pomp tylko dlatego, że znajdują się na jednym schemacie.</strong> Ich współpraca zależy od połączenia hydraulicznego, punktów wspólnych oraz zastosowanego rozdzielenia.</div>
    </section>

    <section class="rk-circuit-section rk-circuit-section-soft" id="rk-circuit-manifold">
      <span class="rk-circuit-eyebrow">Miejsce podziału i ponownego połączenia strumieni</span>
      <h2 class="rk-circuit-section-title">Jaką rolę pełni rozdzielacz w obiegu?</h2>
      <p class="rk-circuit-lead">Rozdzielacz tworzy równoległe gałęzie. Na belce zasilającej wspólny strumień dzieli się między pętle, a na belce powrotnej przepływy ponownie się sumują.</p>

      <div class="rk-circuit-grid-4">
        <article class="rk-circuit-card"><h3>Rozdział</h3><p>Liczba króćców odpowiada liczbie podłączonych pętli, a nie liczbie pomieszczeń lub termostatów.</p></article>
        <article class="rk-circuit-card"><h3>Nastawa</h3><p>Rotametr lub zawór regulacyjny pozwala ustawić przepływ wynikający z mocy konkretnej pętli.</p></article>
        <article class="rk-circuit-card"><h3>Odcinanie</h3><p>Zawór i siłownik mogą zamknąć pętlę, ale zmieniają wtedy warunki pozostałych gałęzi oraz pompy.</p></article>
        <article class="rk-circuit-card"><h3>Serwis</h3><p>Odpowietrzanie, napełnianie, pomiary i opis pętli wymagają dostępu oraz prawidłowego wyposażenia.</p></article>
      </div>

      <p>Budowę elementu omawia poradnik o <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielaczu do podłogówki</a>, a sposób interpretacji wskazań — materiał o <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrze i przepływie pętli</a>.</p>
      <div class="rk-circuit-callout"><strong>Rozdzielacz nie wysyła jednakowego przepływu do każdej pętli.</strong> Prawidłowe wartości mogą być różne, ponieważ obiegi obsługują inne moce, powierzchnie i warunki cieplne.</div>
    </section>

    <section class="rk-circuit-section" id="rk-circuit-zones">
      <span class="rk-circuit-eyebrow">Instalacja musi działać również przy częściowym odbiorze</span>
      <h2 class="rk-circuit-section-title">Co dzieje się po zamknięciu części pętli?</h2>
      <p class="rk-circuit-lead">Zamknięcie siłownika usuwa przepływ jednej gałęzi z sumy, ale jednocześnie zmienia opór zastępczy instalacji, czynną objętość wody oraz najmniejszy możliwy odbiór mocy.</p>

      <div class="rk-circuit-state-summary"><div class="rk-circuit-state-dot"><span>Q</span></div><div><strong>Spada wymagany przepływ całkowity</strong><p>Pompa powinna odpowiednio reagować, aby na pozostałych zaworach nie pojawiła się nadmierna różnica ciśnień i hałas.</p></div></div>
      <div class="rk-circuit-state-summary"><div class="rk-circuit-state-dot"><span>V</span></div><div><strong>Zmniejsza się czynna objętość</strong><p>Dla części źródeł ma to znaczenie dla minimalnego czasu pracy, odszraniania lub ochrony przepływu.</p></div></div>
      <div class="rk-circuit-state-summary"><div class="rk-circuit-state-dot"><span>P</span></div><div><strong>Spada dostępny odbiór mocy</strong><p>Jeżeli źródło nie może wystarczająco obniżyć mocy, może częściej się wyłączać lub wymagać innego sposobu organizacji odbioru.</p></div></div>

      <p>Mechanikę zamykania wyjaśniają poradniki o <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłownikach termoelektrycznych</a> oraz o tym, kiedy <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowanie strefowe ogrzewaniem</a> wnosi wartość. Sam <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostat pokojowy</a> nie zabezpiecza automatycznie minimalnego przepływu źródła.</p>
      <div class="rk-circuit-note"><strong>Obliczenie dla wszystkich pętli otwartych to tylko jeden stan instalacji.</strong> Projekt powinien dodatkowo sprawdzić przewidywane zamykanie stref i najmniejszy dopuszczalny odbiór.</div>
    </section>

    <section class="rk-circuit-section rk-circuit-section-dark" id="rk-circuit-source">
      <span class="rk-circuit-eyebrow">Jedna podłoga, różne wymagania urządzeń</span>
      <h2 class="rk-circuit-section-title">Jak źródło ciepła wpływa na schemat obiegu?</h2>
      <p class="rk-circuit-lead">Podłogówka pozostaje niskotemperaturowym odbiornikiem, ale sposób zasilania zależy od charakterystyki urządzenia, innych odbiorników i automatyki. Nie istnieje jeden schemat odpowiedni dla każdego źródła.</p>

      <div class="rk-circuit-grid-3">
        <article class="rk-circuit-card"><h3>Pompa ciepła</h3><p>Dąży się do możliwie niskiej temperatury zasilania oraz stabilnego przepływu. Trzeba sprawdzić pompę wbudowaną, minimalny przepływ, objętość i zachowanie przy odszranianiu.</p></article>
        <article class="rk-circuit-card"><h3>Kocioł kondensacyjny</h3><p>Może bezpośrednio obsługiwać niskotemperaturowy obieg, jeżeli jego hydraulika, minimalna moc, automatyka i ochrona urządzenia są z tym zgodne.</p></article>
        <article class="rk-circuit-card"><h3>Kocioł na paliwo stałe</h3><p>Schemat musi uwzględnić ochronę źródła, akumulację, bezpieczeństwo i regulację temperatury odbiorników zgodnie z projektem oraz dokumentacją urządzenia.</p></article>
      </div>

      <p>Wymagania poszczególnych źródeł rozwijają materiały: <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">pompa ciepła i podłogówka</a>, <a href="https://projekt-ogrzewania.pl/kociol-gazowy/">kocioł gazowy w ogrzewaniu podłogowym</a> oraz <a href="https://projekt-ogrzewania.pl/kotly-na-paliwa-stale-w-ogrzewaniu-podlogowym/">kotły na paliwa stałe</a>.</p>
      <div class="rk-circuit-callout"><strong>Źródło nie powinno być dobierane wyłącznie do sumy mocy urządzeń katalogowych.</strong> Potrzebne są obciążenie projektowe budynku, warunki przygotowania ciepłej wody i analiza minimalnego obciążenia w sezonie.</div>
    </section>

    <section class="rk-circuit-section" id="rk-circuit-balancing">
      <span class="rk-circuit-eyebrow">Każda równoległa droga ma otrzymać projektowy strumień</span>
      <h2 class="rk-circuit-section-title">Jak równoważy się obieg ogrzewania podłogowego?</h2>
      <p class="rk-circuit-lead">Równoważenie polega na ustawieniu oporów regulacyjnych tak, aby przy ustalonym punkcie pracy pompy każda aktywna pętla otrzymała przepływ wynikający z przypisanej mocy i ΔT.</p>

      <div class="rk-circuit-steps">
        <article class="rk-circuit-step"><h3>Opisz pętle</h3><p>Numery rozdzielacza muszą odpowiadać dokumentacji, pomieszczeniom, długościom i przepływom projektowym.</p></article>
        <article class="rk-circuit-step"><h3>Ustal stan zaworów</h3><p>Uruchomienie prowadzi się przy znanym położeniu zaworów i siłowników oraz w ustalonym trybie pompy.</p></article>
        <article class="rk-circuit-step"><h3>Odpowietrz i sprawdź filtr</h3><p>Brak przepływu nie zawsze wynika z błędnej nastawy — trzeba wykluczyć powietrze, zabrudzenie i zamknięcie armatury.</p></article>
        <article class="rk-circuit-step"><h3>Ustaw strumienie</h3><p>Reguluje się wartości przypisane do pętli, a nie jedną liczbę litrów na minutę dla wszystkich pomieszczeń.</p></article>
        <article class="rk-circuit-step"><h3>Sprawdź interakcje</h3><p>Korekta jednej gałęzi może zmienić pozostałe odczyty, dlatego cały rozdzielacz kontroluje się ponownie.</p></article>
        <article class="rk-circuit-step"><h3>Zapisz punkt pracy</h3><p>Końcowe przepływy, tryb pompy, temperatury i stany automatyki powinny znaleźć się w protokole.</p></article>
      </div>

      <p>Jeżeli wskazania pozostają niestabilne, nie należy natychmiast zwiększać temperatury. Najpierw trzeba sprawdzić pompę, zawory, filtr, powietrze i zgodność tras z projektem. Pomocny jest poradnik o <a href="https://projekt-ogrzewania.pl/objawy-zapowietrzenia-ogrzewania-podlogowego/">objawach zapowietrzenia podłogówki</a>.</p>
      <div class="rk-circuit-warning"><strong>Dławienie krótszej pętli nie „wpycha” automatycznie określonego przepływu do dłuższej.</strong> Efekt zależy od charakterystyki pompy, całej sieci i nastaw wszystkich równoległych gałęzi.</div>
    </section>

    <section class="rk-circuit-section rk-circuit-section-soft" id="rk-circuit-diagnostics">
      <span class="rk-circuit-eyebrow">Objaw wskazuje kierunek pomiarów, nie gotową przyczynę</span>
      <h2 class="rk-circuit-section-title">Jak diagnozować problemy w obiegu grzewczym?</h2>
      <p class="rk-circuit-lead">Podobny objaw może wynikać z temperatury, braku przepływu, regulacji, zabrudzenia lub zbyt małej powierzchni czynnej. Diagnoza wymaga jednoczesnego sprawdzenia strony cieplnej i hydraulicznej.</p>

      <div class="rk-circuit-diagnostic-table" role="table" aria-label="Objawy i diagnostyka obiegu grzewczego">
        <div class="rk-circuit-table-row rk-circuit-table-head" role="row"><div role="columnheader">Objaw</div><div role="columnheader">Możliwe przyczyny</div><div role="columnheader">Co sprawdzić najpierw</div></div>
        <div class="rk-circuit-table-row" role="row"><div class="rk-circuit-table-label" data-label="Objaw" role="cell">Brak przepływu na całym rozdzielaczu</div><div data-label="Możliwe przyczyny" role="cell">Pompa nie pracuje, zawór jest zamknięty, filtr zabrudzony, układ zapowietrzony albo brakuje różnicy ciśnień.</div><div data-label="Co sprawdzić" role="cell">Stan pompy, armatury, filtra, odpowietrzenie oraz schemat połączeń.</div></div>
        <div class="rk-circuit-table-row" role="row"><div class="rk-circuit-table-label" data-label="Objaw" role="cell">Jedna pętla nie osiąga przepływu</div><div data-label="Możliwe przyczyny" role="cell">Duży opór, zamknięty zawór, siłownik, powietrze, zabrudzenie lub niewłaściwa nastawa.</div><div data-label="Co sprawdzić" role="cell">Drożność gałęzi, zawory, przypisanie siłownika i dostępne ciśnienie różnicowe.</div></div>
        <div class="rk-circuit-table-row" role="row"><div class="rk-circuit-table-label" data-label="Objaw" role="cell">Wszystkie przepływy są za małe</div><div data-label="Możliwe przyczyny" role="cell">Niewystarczający punkt pracy pompy, opór wspólny, filtr, błędna średnica lub wzajemne oddziaływanie pomp.</div><div data-label="Co sprawdzić" role="cell">Przepływ sumaryczny, krytyczną drogę, charakterystykę pompy i przewody wspólne.</div></div>
        <div class="rk-circuit-table-row" role="row"><div class="rk-circuit-table-label" data-label="Objaw" role="cell">Szum po zamknięciu stref</div><div data-label="Możliwe przyczyny" role="cell">Nadmierna różnica ciśnień na pozostałych zaworach lub nieodpowiedni tryb regulacji pompy.</div><div data-label="Co sprawdzić" role="cell">Reakcję pompy, liczbę aktywnych pętli, obejście i wymagania źródła.</div></div>
        <div class="rk-circuit-table-row" role="row"><div class="rk-circuit-table-label" data-label="Objaw" role="cell">Podłoga jest chłodna mimo przepływu</div><div data-label="Możliwe przyczyny" role="cell">Za niska temperatura, za mała moc powierzchni, inna okładzina, stan przejściowy lub błąd przypisania pętli.</div><div data-label="Co sprawdzić" role="cell">OZC, temperatury, powierzchnię czynną, projektową moc i warunki pomiaru.</div></div>
        <div class="rk-circuit-table-row" role="row"><div class="rk-circuit-table-label" data-label="Objaw" role="cell">Źródło często się włącza</div><div data-label="Możliwe przyczyny" role="cell">Mały czynny odbiór, nadmiar mocy, niewielka objętość, sterowanie strefowe lub nieprawidłowa logika.</div><div data-label="Co sprawdzić" role="cell">Minimalny stan obiegu, modulację, objętość oraz wymagania konkretnego urządzenia.</div></div>
      </div>

      <p>Zanieczyszczenia mogą równocześnie ograniczać przepływ i pogarszać wymianę ciepła. Zasady ochrony omawia materiał o <a href="https://projekt-ogrzewania.pl/separator-zanieczyszczen-i-powietrza-w-ogrzewaniu-podlogowym-dobor-schemat-montazu-spadek-cisnienia-i-normy/">separatorze zanieczyszczeń i powietrza</a>.</p>
      <div class="rk-circuit-callout"><strong>Duże ΔT nie dowodzi samo w sobie, że pompa jest za mała.</strong> Wynik opisuje relację aktualnie przekazywanej mocy i przepływu, dlatego musi być oceniany w stabilnym oraz znanym stanie instalacji.</div>
    </section>

    <section class="rk-circuit-section" id="rk-circuit-design">
      <span class="rk-circuit-eyebrow">Od bilansu cieplnego do protokołu nastaw</span>
      <h2 class="rk-circuit-section-title">Jak zaprojektować obieg grzewczy krok po kroku?</h2>
      <p class="rk-circuit-lead">Kolejność chroni przed sytuacją, w której pompa, mieszacz albo bufor zostają wybrane wcześniej, a później próbuje się dopasować do nich ogrzewanie podłogowe.</p>

      <div class="rk-circuit-steps">
        <article class="rk-circuit-step"><h3>Policz obciążenia pomieszczeń</h3><p>Wyznacz moc w projektowych warunkach z uwzględnieniem przegród, wentylacji i temperatur wewnętrznych.</p></article>
        <article class="rk-circuit-step"><h3>Sprawdź możliwości podłogi</h3><p>Ustal powierzchnie czynne, okładziny, rozstawy i temperatury pozwalające dostarczyć wymaganą moc.</p></article>
        <article class="rk-circuit-step"><h3>Zaprojektuj pętle</h3><p>Narysuj rzeczywiste trasy, przypisz moce i policz indywidualne przepływy oraz opory.</p></article>
        <article class="rk-circuit-step"><h3>Wybierz architekturę</h3><p>Sprawdź, czy możliwy jest obieg bezpośredni, czy potrzebne są różne temperatury albo rozdzielenie hydrauliczne.</p></article>
        <article class="rk-circuit-step"><h3>Policz wspólne przewody</h3><p>Zsumuj przepływy czynnych gałęzi i dobierz średnice z kontrolą prędkości oraz strat ciśnienia.</p></article>
        <article class="rk-circuit-step"><h3>Wyznacz drogę krytyczną</h3><p>Dodaj opory elementów leżących kolejno na najbardziej wymagającej trasie od pompy i z powrotem.</p></article>
        <article class="rk-circuit-step"><h3>Dobierz pompę i sterowanie</h3><p>Porównaj punkt Q–H z charakterystyką oraz przeanalizuj stany po zamknięciu części odbiorników.</p></article>
        <article class="rk-circuit-step"><h3>Uruchom i udokumentuj</h3><p>Wykonaj próbę, odpowietrz, ustaw przepływy, zweryfikuj temperatury i zapisz końcowe nastawy.</p></article>
      </div>

      <p>Zakres dokumentacji przedstawia artykuł o tym, <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">jak powinien wyglądać profesjonalny projekt podłogówki</a>. Napełnianie i przygotowanie medium opisuje poradnik <a href="https://projekt-ogrzewania.pl/czym-napelnic-instalacje-ogrzewania-podlogowego/">czym napełnić instalację ogrzewania podłogowego</a>.</p>
    </section>

    <section class="rk-circuit-section rk-circuit-section-soft" id="rk-circuit-errors">
      <span class="rk-circuit-eyebrow">Błędy wynikające z projektowania pojedynczych elementów</span>
      <h2 class="rk-circuit-section-title">Najczęstsze błędy w obiegu podłogówki</h2>
      <div class="rk-circuit-mistakes">
        <div class="rk-circuit-mistake"><span class="rk-circuit-mistake-icon">!</span><div><strong>Obowiązkowy mieszacz</strong><p>Dodawanie grupy mieszającej bez sprawdzenia temperatur źródła i odbiorników komplikuje układ bez uzasadnienia.</p></div></div>
        <div class="rk-circuit-mistake"><span class="rk-circuit-mistake-icon">!</span><div><strong>Osobna pompa przy każdym rozdzielaczu</strong><p>Liczba pomp powinna wynikać z obiegów temperaturowych, oporów i sposobu rozdzielenia hydraulicznego.</p></div></div>
        <div class="rk-circuit-mistake"><span class="rk-circuit-mistake-icon">!</span><div><strong>Sumowanie oporów równoległych pętli</strong><p>Do doboru wysokości podnoszenia analizuje się jedną krytyczną drogę, a nie wszystkie pętle kolejno.</p></div></div>
        <div class="rk-circuit-mistake"><span class="rk-circuit-mistake-icon">!</span><div><strong>Najdłuższa pętla jako pewny obieg krytyczny</strong><p>Moc, przepływ, średnica i armatura mogą sprawić, że bardziej wymagająca będzie inna gałąź.</p></div></div>
        <div class="rk-circuit-mistake"><span class="rk-circuit-mistake-icon">!</span><div><strong>Jednakowy przepływ wszystkich pętli</strong><p>Strumień powinien odpowiadać mocy przypisanej do konkretnej powierzchni oraz przyjętemu ΔT.</p></div></div>
        <div class="rk-circuit-mistake"><span class="rk-circuit-mistake-icon">!</span><div><strong>Pomijanie przewodów wspólnych</strong><p>Magistrala, źródło, filtr, armatura i rozdzielacz także zużywają dostępną różnicę ciśnień.</p></div></div>
        <div class="rk-circuit-mistake"><span class="rk-circuit-mistake-icon">!</span><div><strong>Brak analizy zamykania stref</strong><p>Minimalny aktywny odbiór może mieć większe znaczenie dla źródła niż stan wszystkich pętli otwartych.</p></div></div>
        <div class="rk-circuit-mistake"><span class="rk-circuit-mistake-icon">!</span><div><strong>Temperatura podnoszona zamiast diagnozy</strong><p>Zwiększenie parametru nie usuwa powietrza, zabrudzenia, błędnej nastawy ani niedostatecznego przepływu.</p></div></div>
      </div>

      <p>Problemy wykonawcze szerzej omawia zestawienie <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">najczęstszych błędów montażu ogrzewania podłogowego</a>. W gotowej instalacji każdą korektę należy zacząć od pomiarów i dokumentacji.</p>
    </section>

    <section class="rk-circuit-section" id="rk-circuit-checklist">
      <span class="rk-circuit-eyebrow">Przed zatwierdzeniem schematu i uruchomieniem</span>
      <h2 class="rk-circuit-section-title">Lista kontrolna obiegu grzewczego</h2>
      <p class="rk-circuit-lead">Jeżeli któregoś parametru nie ma w projekcie, nie powinien być zastępowany domyślną liczbą zaczerpniętą z innej instalacji.</p>

      <div class="rk-circuit-checklist">
        <div class="rk-circuit-checklist-item"><span>✓</span><div><strong>OZC pomieszczeń</strong><br>Czy każda powierzchnia ma określoną projektową moc?</div></div>
        <div class="rk-circuit-checklist-item"><span>✓</span><div><strong>Powierzchnie i okładziny</strong><br>Czy sprawdzono moc podłogi oraz ograniczenia wszystkich warstw?</div></div>
        <div class="rk-circuit-checklist-item"><span>✓</span><div><strong>Temperatury projektowe</strong><br>Czy zasilanie i powrót wynikają z obliczeń, a nie z jednej reguły?</div></div>
        <div class="rk-circuit-checklist-item"><span>✓</span><div><strong>Pętle grzewcze</strong><br>Czy znane są rzeczywiste długości, moce, przepływy i spadki ciśnienia?</div></div>
        <div class="rk-circuit-checklist-item"><span>✓</span><div><strong>Przepływ całkowity</strong><br>Czy zsumowano właściwe pętle dla analizowanego stanu pracy?</div></div>
        <div class="rk-circuit-checklist-item"><span>✓</span><div><strong>Przewody wspólne</strong><br>Czy ich średnice, prędkości i straty odpowiadają sumarycznemu przepływowi?</div></div>
        <div class="rk-circuit-checklist-item"><span>✓</span><div><strong>Droga krytyczna</strong><br>Czy ustalono najbardziej wymagającą trasę zamiast tylko najdłuższej pętli?</div></div>
        <div class="rk-circuit-checklist-item"><span>✓</span><div><strong>Punkt pracy pompy</strong><br>Czy Q oraz H porównano z charakterystyką w odpowiednim trybie regulacji?</div></div>
        <div class="rk-circuit-checklist-item"><span>✓</span><div><strong>Architektura obiegu</strong><br>Czy mieszanie lub rozdzielenie hydrauliczne ma opisane zadanie?</div></div>
        <div class="rk-circuit-checklist-item"><span>✓</span><div><strong>Wymagania źródła</strong><br>Czy zachowano minimalny przepływ, objętość i dopuszczalne temperatury?</div></div>
        <div class="rk-circuit-checklist-item"><span>✓</span><div><strong>Stany częściowego odbioru</strong><br>Czy sprawdzono zachowanie po zamknięciu części siłowników?</div></div>
        <div class="rk-circuit-checklist-item"><span>✓</span><div><strong>Zabezpieczenia i jakość medium</strong><br>Czy przewidziano wymagane elementy ochronne, filtrację i procedurę napełnienia?</div></div>
        <div class="rk-circuit-checklist-item"><span>✓</span><div><strong>Równoważenie</strong><br>Czy każda pętla ma przepływ do ustawienia podczas uruchomienia?</div></div>
        <div class="rk-circuit-checklist-item"><span>✓</span><div><strong>Dokumentacja końcowa</strong><br>Czy zapisano schemat, opis pętli, tryb pompy, przepływy i temperatury?</div></div>
      </div>
    </section>

    <section class="rk-circuit-section rk-circuit-section-soft" id="rk-circuit-conclusions">
      <span class="rk-circuit-eyebrow">Wnioski projektanta</span>
      <h2 class="rk-circuit-section-title">Kiedy obieg grzewczy jest prawidłowo zaprojektowany?</h2>
      <p class="rk-circuit-lead">Poprawny obieg dostarcza wszystkim aktywnym pętlom wodę o temperaturze i przepływie potrzebnych do pokrycia obciążeń, a jednocześnie pozostaje zgodny z charakterystyką pompy, wymaganiami źródła i automatyką.</p>

      <div class="rk-circuit-grid-3">
        <article class="rk-circuit-card"><h3>Temperatura odpowiada podłodze</h3><p>Parametr wynika z emisji, warstw i obciążenia, a w sezonie jest regulowany bez niepotrzebnego przegrzewania wody.</p></article>
        <article class="rk-circuit-card"><h3>Hydraulika się bilansuje</h3><p>Sumaryczny przepływ i krytyczna droga mieszczą się w osiągalnym punkcie pracy, a pętle można wyregulować.</p></article>
        <article class="rk-circuit-card"><h3>Każdy stan jest przewidziany</h3><p>Źródło i pompa poprawnie współpracują zarówno przy pełnym odbiorze, jak i po zamknięciu części stref.</p></article>
      </div>

      <div class="rk-circuit-answer"><span class="rk-circuit-answer-label">Reguła końcowa</span><p><strong>Najpierw policz moc pomieszczeń i możliwości podłogi, później pętle oraz ich przepływy, następnie wspólne przewody i drogę krytyczną, a dopiero na końcu wybierz pompę, mieszanie oraz sposób połączenia ze źródłem.</strong></p></div>

      <div class="rk-circuit-cta">
        <div class="rk-circuit-cta-title">Zaprojektuj źródło, pompę, rozdzielacze i pętle jako jeden układ</div>
        <p>Kompletny projekt obejmuje OZC, temperatury podłogi, rzeczywiste trasy, przepływy, opory, średnice przewodów, punkt pracy pompy, architekturę hydrauliczną oraz nastawy potrzebne wykonawcy i użytkownikowi.</p>
        <a class="rk-circuit-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt instalacji ogrzewania podłogowego</a>
        <small class="rk-circuit-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-circuit-section" id="rk-circuit-references">
      <span class="rk-circuit-eyebrow">Podstawa techniczna i granice obliczeń</span>
      <h2 class="rk-circuit-section-title">Źródła i zakres odpowiedzialności</h2>
      <p class="rk-circuit-lead">Projekt obiegu łączy obliczenia mocy powierzchniowej, temperatur, przepływów i oporów. Normy opisują metody obliczania oraz wymagania dla systemów płaszczyznowych, ale nie zastępują dokumentacji konkretnego źródła, pompy, rozdzielacza ani armatury.</p>

      <div class="rk-circuit-source-grid">
        <article class="rk-circuit-source-card"><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 wraz z Amd 1:2023 — określanie mocy</a><p>Oficjalna karta wydania dotyczącego wyznaczania strumienia ciepła, temperatur powierzchni i zależności charakterystycznych wodnych systemów ogrzewania oraz chłodzenia.</p></article>
        <article class="rk-circuit-source-card"><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-3:2021 wraz z Amd 1:2023 — projektowanie i wymiarowanie</a><p>Oficjalna karta wydania opisującego metodę projektowania i wymiarowania wbudowanych wodnych systemów ogrzewania oraz chłodzenia.</p></article>
        <article class="rk-circuit-source-card"><a href="https://www.iso.org/standard/74685.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-5:2021 wraz z Amd 1:2023 — wykonanie</a><p>Oficjalna karta wydania dotyczącego wymagań instalacyjnych dla elementów tworzących ogrzewaną lub chłodzoną powierzchnię.</p></article>
      </div>

      <div class="rk-circuit-responsibility">
        <p><strong>Status źródeł:</strong> oficjalne karty ISO wskazują, że przywołane wydania z 2021 r. wraz z poprawkami Amd 1:2023 są opublikowane i we wrześniu 2026 r. znajdują się w przeglądzie systematycznym.</p>
        <p><strong>Zakres kalkulatora:</strong> narzędzie bilansuje przepływ wody i porównuje podane przez użytkownika straty ciśnienia gałęzi. Nie wyznacza oporów z długości rury, nie uwzględnia charakterystyk zaworów ani nie dobiera konkretnego modelu pompy.</p>
        <p><strong>Odpowiedzialność:</strong> artykuł ma charakter edukacyjny. Nie jest projektem wykonawczym, instrukcją producenta, protokołem uruchomienia ani oceną stanu istniejącej instalacji. Stan techniczny materiału zweryfikowano 11 września 2026 r.</p>
      </div>
    </section>

    <section class="rk-circuit-section rk-circuit-section-soft" id="rk-circuit-faq">
      <span class="rk-circuit-eyebrow">Najczęstsze pytania inwestorów i wykonawców</span>
      <h2 class="rk-circuit-section-title">FAQ — obieg grzewczy w ogrzewaniu podłogowym</h2>
      <div class="rk-circuit-faq">
        <details><summary>Co to jest obieg grzewczy ogrzewania podłogowego?</summary><div class="rk-circuit-faq-answer"><p>To kompletna droga przepływu od miejsca wytworzenia lub regulacji temperatury, przez pompę, przewody wspólne, rozdzielacz i jedną z równoległych pętli, aż do powrotu. W jednym obiegu temperaturowym może pracować wiele pętli.</p></div></details>
        <details><summary>Czym obieg grzewczy różni się od pętli podłogówki?</summary><div class="rk-circuit-faq-answer"><p>Pętla jest pojedynczą gałęzią rury podłączoną do rozdzielacza. Obieg obejmuje dodatkowo elementy wspólne: źródło lub wymiennik, regulację temperatury, pompę, magistralę, armaturę, rozdzielacz i powrót.</p></div></details>
        <details><summary>Czy każdy rozdzielacz podłogówki potrzebuje osobnej pompy?</summary><div class="rk-circuit-faq-answer"><p>Nie. Jedna pompa może obsługiwać kilka rozdzielaczy, jeżeli jej osiągalny punkt pracy, średnice przewodów, sposób regulacji oraz wymagania źródła są zgodne z projektem. Osobna pompa ma mieć określoną funkcję hydrauliczną, a nie wynikać wyłącznie z liczby rozdzielaczy.</p></div></details>
        <details><summary>Czy w obiegu podłogówki zawsze potrzebny jest zawór mieszający?</summary><div class="rk-circuit-faq-answer"><p>Nie. Jeżeli źródło bezpośrednio wytwarza temperaturę odpowiednią dla wszystkich odbiorników podłogowych, oddzielne mieszanie może być zbędne. Zawór mieszający stosuje się wtedy, gdy trzeba utworzyć inną temperaturę obiegu lub spełnić wymagania konkretnego układu.</p></div></details>
        <details><summary>Jak obliczyć całkowity przepływ obiegu podłogówki?</summary><div class="rk-circuit-faq-answer"><p>Najpierw oblicza się projektowy przepływ każdej czynnej pętli z jej mocy i przyjętego ΔT, a następnie sumuje przepływy pętli pracujących jednocześnie. Dla wody można orientacyjnie użyć zależności V w l/h około 0,86 razy moc w watach podzielona przez ΔT w kelwinach.</p></div></details>
        <details><summary>Czy spadki ciśnienia wszystkich pętli się sumują?</summary><div class="rk-circuit-faq-answer"><p>Nie, ponieważ pętle na rozdzielaczu są połączone równolegle. Do wymaganego ciśnienia pompy dodaje się opory elementów wspólnych i spadek ciśnienia jednej najbardziej wymagającej drogi. Sumują się natomiast przepływy równoległych pętli.</p></div></details>
        <details><summary>Co oznacza krytyczny obieg lub krytyczna droga?</summary><div class="rk-circuit-faq-answer"><p>To droga wymagająca największej dostępnej różnicy ciśnień przy swoim projektowym przepływie. Nie musi nią być najdłuższa pętla, ponieważ znaczenie mają także przepływ, średnica wewnętrzna, armatura i elementy leżące na trasie.</p></div></details>
        <details><summary>Co dzieje się po zamknięciu części siłowników na rozdzielaczu?</summary><div class="rk-circuit-faq-answer"><p>Maleje sumaryczny przepływ odbiorników i czynna objętość instalacji, a różnica ciśnień na pozostających otwartych gałęziach może wzrosnąć. Projekt musi sprawdzić reakcję pompy, minimalny przepływ źródła oraz najmniejszy dopuszczalny odbiór.</p></div></details>
        <details><summary>Czy pompa ciepła zawsze wymaga bufora w obiegu podłogowym?</summary><div class="rk-circuit-faq-answer"><p>Nie. Potrzeba bufora zależy od wymaganej objętości, minimalnego przepływu, modulacji urządzenia, odszraniania, sterowania strefowego i architektury hydraulicznej. Decyzję podejmuje się na podstawie dokumentacji konkretnej pompy oraz obliczeń instalacji.</p></div></details>
        <details><summary>Jak ustawić przepływy na rozdzielaczu ogrzewania podłogowego?</summary><div class="rk-circuit-faq-answer"><p>Każdą pętlę ustawia się według wartości projektowej wynikającej z przypisanej mocy i ΔT. Regulację prowadzi się przy odpowietrzonej, czystej instalacji, znanym trybie pompy i określonym stanie zaworów, a po korektach ponownie sprawdza się wszystkie gałęzie.</p></div></details>
      </div>
    </section>

    <section class="rk-circuit-author" id="rk-circuit-author">
      <span class="rk-circuit-eyebrow">Opracowanie eksperckie</span>
      <h2 class="rk-circuit-author-title">Autor i weryfikacja merytoryczna</h2>
      <div class="rk-circuit-author-layout">
        <aside class="rk-circuit-author-side">
          <div class="rk-circuit-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 HVAC" width="400" height="400" loading="lazy" decoding="async"></div>
          <div class="rk-circuit-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
          <p class="rk-circuit-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
          <div class="rk-circuit-author-social" aria-label="Profile autora">
            <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" 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-circuit-author-main">
          <div class="rk-circuit-author-quote">„Przepływy równoległych pętli się sumują, ale ich spadków ciśnienia nie dodaje się tak, jakby były połączone szeregowo.”</div>
          <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz dokumentację wykonawczą dla inwestorów i wykonawców. W projekcie łączy obciążenia pomieszczeń, temperatury, przepływy pętli, straty ciśnienia przewodów wspólnych, punkt pracy pompy i wymagania źródła.</p>
          <p>W tej aktualizacji rozdzielono pojęcia obiegu, pętli i strefy, usunięto kategoryczne wymaganie mieszacza oraz osobnej pompy, a dobór wysokości podnoszenia oparto na drodze krytycznej zamiast sumie oporów równoległych pętli. Dodano także analizę stanów po zamknięciu odbiorników.</p>
          <p>Interaktywna grafika służy do zrozumienia funkcji elementów, natomiast kalkulator wykonuje jawny bilans przepływu oraz podanych strat. Żadne z narzędzi nie zastępuje charakterystyki producenta ani pełnego obliczenia hydraulicznego.</p>
          <p>Autor 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</a>.</p>
          <div class="rk-circuit-author-facts">
            <div class="rk-circuit-author-fact"><strong>Zakres</strong>ogrzewanie podłogowe, hydraulika i źródła niskotemperaturowe</div>
            <div class="rk-circuit-author-fact"><strong>Metoda pracy</strong>OZC, emisja podłogi, przepływy, opory i dobór punktu pracy</div>
            <div class="rk-circuit-author-fact"><strong>Aktualizacja</strong>stan techniczny materiału sprawdzony 11 września 2026 r.</div>
          </div>
        </div>
      </div>
    </section>
  </div>
</article>

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

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

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

  function numberFrom(element, fallback) {
    if (!element) {
      return fallback;
    }
    var raw = String(element.value).replace(",", ".");
    var parsed = Number(raw);
    if (!Number.isFinite(parsed)) {
      return fallback;
    }
    return parsed;
  }

  function formatNumber(value, digits) {
    return new Intl.NumberFormat("pl-PL", {
      minimumFractionDigits: digits,
      maximumFractionDigits: digits
    }).format(value);
  }

  var topology = {
    direct: {
      components: {
        source: ["Wytwarza temperaturę obiegu", "Źródło bezpośrednio zasila podłogówkę parametrem wynikającym z regulacji i ograniczeń urządzenia."],
        temperature: ["Krzywa źródła bez mieszania", "Temperatura zasilania jest sterowana w źródle; nie ma oddzielnego zaworu obniżającego parametr."],
        pump: ["Pompa źródła obsługuje pętle", "Jej dostępna charakterystyka musi pokryć przepływ całkowity oraz opór krytycznej drogi instalacji."],
        manifold: ["Rozdziela strumień równolegle", "Przepływ wspólny dzieli się na wartości ustawione dla poszczególnych pętli."],
        loops: ["Odbierają projektową moc", "Każda aktywna pętla otrzymuje własny przepływ i przekazuje energię przypisanej powierzchni."],
        return: ["Wraca bezpośrednio do źródła", "Strumienie pętli łączą się na belce powrotnej i wspólnym przewodem wracają do ponownego ogrzania."]
      },
      messages: {
        all: ["Obieg bezpośredni jest najprostszy, jeżeli źródło może samo wytworzyć wymagany parametr i przepływ.", "Przy wszystkich pętlach otwartych pompa źródła obsługuje ich sumaryczny przepływ. Trzeba sprawdzić dostępną charakterystykę, opory wspólne i drogę krytyczną."],
        partial: ["Po zamknięciu części pętli źródło i jego pompa nadal muszą pracować w dopuszczalnym zakresie.", "Maleje przepływ całkowity oraz czynna objętość. Regulacja pompy, minimalny przepływ źródła i logika siłowników stają się częścią jednego problemu."],
        minimum: ["Minimalny odbiór może być stanem ograniczającym obieg bezpośredni.", "Trzeba potwierdzić, że najmniejsza aktywna strefa zapewnia wymagany przepływ i pojemność albo zastosować rozwiązanie przewidziane przez producenta oraz projektanta."]
      }
    },
    mixed: {
      components: {
        source: ["Zasila stronę pierwotną", "Źródło przekazuje energię do zespołu regulującego temperaturę obiegu podłogowego."],
        temperature: ["Zawór tworzy niższy parametr", "Układ mieszający łączy odpowiednie strumienie zasilania i powrotu, aby uzyskać temperaturę wymaganą przez podłogę."],
        pump: ["Pompa wtórna obsługuje pętle", "Pompa grupy odpowiada za przepływ po stronie rozdzielacza i musi pokonać jej krytyczną drogę."],
        manifold: ["Rozdziela przepływ wtórny", "Rotametry i zawory umożliwiają ustawienie projektowych strumieni równoległych pętli."],
        loops: ["Pracują na wspólnej temperaturze", "Pętle należące do tej grupy temperaturowej powinny mieć obliczone moce, przepływy i opory."],
        return: ["Część strumienia uczestniczy w mieszaniu", "Powrót z pętli łączy się w układzie zgodnie ze schematem zaworu, a bilans przepływów musi być policzony dla obu stron."]
      },
      messages: {
        all: ["Grupa pompowo-mieszająca ma sens wtedy, gdy tworzy rzeczywiście potrzebną temperaturę obiegu.", "Przy pełnym odbiorze pompa wtórna zapewnia sumę przepływów pętli, a zawór utrzymuje obliczony parametr. Ważne są także autorytet zaworu i współpraca obu pomp."],
        partial: ["Zamknięcie stref zmienia przepływ po stronie wtórnej i warunki pracy mieszania.", "Automatyka powinna ograniczyć nadmierną różnicę ciśnień oraz zachować stabilność temperatury, gdy przepływ przez rozdzielacz maleje."],
        minimum: ["Przy minimalnym odbiorze grupa nie może krążyć bez kontroli między zasilaniem i powrotem.", "Projekt sprawdza najmniejszy czynny strumień, zakres regulacji zaworu, reakcję pompy wtórnej i możliwość odbioru energii dostarczanej ze strony źródła."]
      }
    },
    separated: {
      components: {
        source: ["Pracuje w obiegu pierwotnym", "Źródło oraz jego pompa realizują wymagany przepływ po stronie bufora lub sprzęgła."],
        temperature: ["Zależy od strategii obu stron", "Temperaturę może regulować źródło, obieg wtórny albo oba układy w skoordynowany sposób."],
        pump: ["Dwie strony mają własne pompy", "Pompa wtórna pokonuje opory rozdzielaczy i pętli niezależnie od pompy obiegu źródłowego."],
        manifold: ["Odbiera wodę ze strony wtórnej", "Przepływ rozdzielaczy wynika z zapotrzebowania pętli, natomiast bilans separatora może być chwilowo inny."],
        loops: ["Tworzą odbiór po stronie wtórnej", "Aktywne pętle oddają ciepło i wyznaczają chwilowy przepływ wtórnego obiegu grzewczego."],
        return: ["Wraca przez element rozdzielający", "Bufor lub sprzęgło pozwala na różnicę przepływów stron, ale nie naprawia błędnej temperatury ani źle dobranych pomp."]
      },
      messages: {
        all: ["Rozdzielenie hydrauliczne uniezależnia różnice ciśnień, lecz tworzy dwa bilanse przepływu.", "Każda pompa ma własną drogę krytyczną. Trzeba sprawdzić, jak różnica przepływów pierwotnego i wtórnego wpływa na temperatury oraz pracę źródła."],
        partial: ["Po zamknięciu stref maleje przepływ wtórny, podczas gdy strona źródłowa może pracować inaczej.", "Bufor lub sprzęgło przejmuje różnicę strumieni zgodnie ze swoim układem, ale sterowanie nadal musi ograniczyć przegrzewanie, taktowanie i niepotrzebną pracę pomp."],
        minimum: ["Rozdzielenie może zabezpieczyć wymagany przepływ źródła, ale nie jest automatycznie potrzebne w każdej instalacji.", "Przy minimalnym odbiorze kluczowe są objętość czynna, moc minimalna, temperatury w separatorze, czas pracy oraz logika załączania obu pomp."]
      }
    }
  };

  var stateOverrides = {
    all: {
      focus: ["source", "temperature", "pump", "manifold", "loops", "return"],
      values: {
        loops: ["Wszystkie pętle aktywne", "Przepływy wszystkich czynnych pętli sumują się w przewodach wspólnych."]
      }
    },
    partial: {
      focus: ["pump", "manifold", "loops"],
      values: {
        pump: ["Musi zareagować na mniejszy Q", "Po zamknięciu gałęzi punkt pracy przesuwa się, dlatego znaczenie ma tryb regulacji i dostępna różnica ciśnień."],
        manifold: ["Część zaworów jest zamknięta", "Przepływ pozostałych pętli nie powinien niekontrolowanie wzrosnąć wskutek większej różnicy ciśnień."],
        loops: ["Pracuje tylko część powierzchni", "Maleją sumaryczny przepływ, czynna powierzchnia oraz objętość odbierająca energię."]
      }
    },
    minimum: {
      focus: ["source", "pump", "loops", "return"],
      values: {
        source: ["Sprawdź minimalne warunki pracy", "Źródło musi zachować wymagany przepływ, objętość i możliwość oddania mocy przy najmniejszym odbiorze."],
        pump: ["Najmniejszy dopuszczalny punkt", "Pompa powinna ograniczyć różnicę ciśnień bez utraty warunków wymaganych przez aktywną drogę oraz źródło."],
        loops: ["Minimalna liczba pętli otwarta", "Najmniejsza czynna strefa pokazuje, czy układ pozostaje stabilny poza warunkami pełnego obciążenia."],
        return: ["Bilans ma się domknąć", "Obejście, bufor lub logika sterowania mogą być potrzebne tylko wtedy, gdy wynika to z obliczeń i dokumentacji urządzeń."]
      }
    }
  };

  var currentConfig = "direct";
  var currentState = "all";

  function containsValue(list, value) {
    return list.indexOf(value) !== -1;
  }

  function renderTopology() {
    var selected = topology[currentConfig];
    var state = stateOverrides[currentState];
    var cards = Array.prototype.slice.call(root.querySelectorAll("[data-rk-circuit-component]"));

    cards.forEach(function (card) {
      var key = card.getAttribute("data-rk-circuit-component");
      var data = selected.components[key];
      if (state.values[key]) {
        data = state.values[key];
      }
      var valueElement = card.querySelector("[data-rk-circuit-component-value]");
      var copyElement = card.querySelector("[data-rk-circuit-component-copy]");
      valueElement.textContent = data[0];
      copyElement.textContent = data[1];
      card.classList.toggle("is-active", containsValue(state.focus, key));
      card.classList.toggle("is-muted", !containsValue(state.focus, key));
    });

    var configButtons = Array.prototype.slice.call(root.querySelectorAll("[data-rk-circuit-config]"));
    configButtons.forEach(function (button) {
      button.setAttribute("aria-pressed", String(button.getAttribute("data-rk-circuit-config") === currentConfig));
    });

    var stateButtons = Array.prototype.slice.call(root.querySelectorAll("[data-rk-circuit-state]"));
    stateButtons.forEach(function (button) {
      button.setAttribute("aria-pressed", String(button.getAttribute("data-rk-circuit-state") === currentState));
    });

    var result = byId("rk-circuit-topology-result");
    var message = selected.messages[currentState];
    var heading = result.querySelector("strong");
    var copy = result.querySelector("p");
    heading.textContent = message[0];
    copy.textContent = message[1];
  }

  var configButtons = Array.prototype.slice.call(root.querySelectorAll("[data-rk-circuit-config]"));
  configButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      currentConfig = button.getAttribute("data-rk-circuit-config");
      renderTopology();
    });
  });

  var stateButtons = Array.prototype.slice.call(root.querySelectorAll("[data-rk-circuit-state]"));
  stateButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      currentState = button.getAttribute("data-rk-circuit-state");
      renderTopology();
    });
  });

  var editor = byId("rk-circuit-row-editor");
  var addButton = byId("rk-circuit-add-row");
  var svgNamespace = "http://www.w3.org/2000/svg";

  function svgElement(name, attributes, textValue) {
    var element = document.createElementNS(svgNamespace, name);
    Object.keys(attributes).forEach(function (key) {
      element.setAttribute(key, String(attributes[key]));
    });
    if (typeof textValue === "string") {
      element.textContent = textValue;
    }
    return element;
  }

  function readRows(delta) {
    var rowElements = Array.prototype.slice.call(editor.querySelectorAll("[data-rk-circuit-row]"));
    return rowElements.map(function (row, index) {
      var nameInput = row.querySelector("[data-rk-circuit-name]");
      var powerInput = row.querySelector("[data-rk-circuit-power]");
      var lossInput = row.querySelector("[data-rk-circuit-loss]");
      var name = nameInput.value.trim();
      if (!name) {
        name = "Pętla " + String(index + 1);
      }
      var power = Math.max(0, numberFrom(powerInput, 0));
      var loss = Math.max(0, numberFrom(lossInput, 0));
      var flowHour = delta > 0 ? 0.86 * power / delta : 0;
      var flowMinute = flowHour / 60;
      var flowOutput = row.querySelector("[data-rk-circuit-flow]");
      flowOutput.textContent = formatNumber(flowMinute, 2) + " l/min";
      var removeButton = row.querySelector("[data-rk-circuit-remove]");
      removeButton.setAttribute("aria-label", "Usuń pętlę " + name);
      return {
        name: name,
        power: power,
        loss: loss,
        flowHour: flowHour,
        flowMinute: flowMinute
      };
    });
  }

  function clearChart(chart) {
    var oldLayer = chart.querySelector("[data-rk-circuit-chart-layer]");
    if (oldLayer) {
      oldLayer.remove();
    }
  }

  function shortName(name) {
    if (name.length <= 11) {
      return name;
    }
    return name.slice(0, 10) + "…";
  }

  function drawChart(rows, commonLoss, criticalIndex) {
    var chart = byId("rk-circuit-pressure-chart");
    clearChart(chart);
    var layer = svgElement("g", { "data-rk-circuit-chart-layer": "true" });
    chart.appendChild(layer);

    var left = 58;
    var right = 20;
    var top = 38;
    var bottom = 338;
    var width = 800 - left - right;
    var height = bottom - top;
    var highest = 0;

    rows.forEach(function (row) {
      highest = Math.max(highest, commonLoss + row.loss);
    });
    var scaleMaximum = Math.max(20, Math.ceil((highest + 5) / 5) * 5);

    function y(value) {
      return bottom - value / scaleMaximum * height;
    }

    for (var tick = 0; tick <= 5; tick += 1) {
      var tickValue = scaleMaximum * tick / 5;
      var tickY = y(tickValue);
      layer.appendChild(svgElement("line", { x1: left, y1: tickY, x2: 780, y2: tickY, class: "rk-circuit-chart-grid" }));
      layer.appendChild(svgElement("text", { x: left - 10, y: tickY + 4, "text-anchor": "end", class: "rk-circuit-chart-tick" }, formatNumber(tickValue, 0)));
    }

    layer.appendChild(svgElement("text", { x: 18, y: 195, transform: "rotate(-90 18 195)", "text-anchor": "middle", class: "rk-circuit-chart-axis-title" }, "Spadek ciśnienia [kPa]"));

    var slot = width / rows.length;
    var barWidth = Math.min(58, slot * 0.62);
    rows.forEach(function (row, index) {
      var x = left + slot * index + (slot - barWidth) / 2;
      var commonY = y(commonLoss);
      var totalY = y(commonLoss + row.loss);
      var commonHeight = bottom - commonY;
      var branchHeight = commonY - totalY;
      var group = svgElement("g", { tabindex: "0", role: "img", "aria-label": row.name + ": łącznie " + formatNumber(commonLoss + row.loss, 1) + " kPa" });
      group.appendChild(svgElement("title", {}, row.name + ": " + formatNumber(commonLoss, 1) + " kPa strat wspólnych i " + formatNumber(row.loss, 1) + " kPa pętli"));
      group.appendChild(svgElement("rect", { x: x, y: commonY, width: barWidth, height: commonHeight, rx: 5, class: "rk-circuit-chart-common" }));
      group.appendChild(svgElement("rect", { x: x, y: totalY, width: barWidth, height: branchHeight, rx: 5, class: "rk-circuit-chart-branch" }));
      if (index === criticalIndex) {
        group.appendChild(svgElement("rect", { x: x - 4, y: totalY - 4, width: barWidth + 8, height: bottom - totalY + 8, rx: 9, class: "rk-circuit-chart-critical-outline" }));
      }
      group.appendChild(svgElement("text", { x: x + barWidth / 2, y: totalY - 9, "text-anchor": "middle", class: "rk-circuit-chart-value" }, formatNumber(commonLoss + row.loss, 1)));
      group.appendChild(svgElement("text", { x: x + barWidth / 2, y: bottom + 23, "text-anchor": "middle", class: "rk-circuit-chart-name" }, shortName(row.name)));
      group.appendChild(svgElement("text", { x: x + barWidth / 2, y: bottom + 43, "text-anchor": "middle", class: "rk-circuit-chart-index" }, "P" + String(index + 1)));
      layer.appendChild(group);
    });

    var chartDescription = byId("rk-circuit-chart-desc");
    var criticalName = rows[criticalIndex] ? rows[criticalIndex].name : "brak";
    chartDescription.textContent = "Porównanie " + String(rows.length) + " dróg. Wspólna strata wynosi " + formatNumber(commonLoss, 1) + " kPa. Drogą krytyczną jest " + criticalName + ".";
  }

  function setEmptyResults(message) {
    byId("rk-circuit-result-power").textContent = "—";
    byId("rk-circuit-result-flow").textContent = "—";
    byId("rk-circuit-result-flow-minute").textContent = "—";
    byId("rk-circuit-result-critical").textContent = "—";
    byId("rk-circuit-result-pressure").textContent = "—";
    byId("rk-circuit-result-head").textContent = "—";
    byId("rk-circuit-flow-equation").textContent = "Uzupełnij dodatnią moc i projektowe ΔT.";
    byId("rk-circuit-pressure-equation").textContent = "Wykres pojawi się po wprowadzeniu danych.";
    var status = byId("rk-circuit-calculator-status");
    status.className = "rk-circuit-status is-bad";
    status.textContent = message;
    clearChart(byId("rk-circuit-pressure-chart"));
  }

  function updateCalculator() {
    var delta = numberFrom(byId("rk-circuit-delta"), 0);
    var commonLoss = Math.max(0, numberFrom(byId("rk-circuit-common-loss"), 0));
    var rows = readRows(delta);

    if (delta <= 0) {
      setEmptyResults("Projektowe ΔT musi być większe od zera.");
      return;
    }

    var totalPower = 0;
    var totalFlowHour = 0;
    var criticalIndex = -1;
    var maximumLoss = -1;
    rows.forEach(function (row, index) {
      totalPower += row.power;
      totalFlowHour += row.flowHour;
      if (row.power > 0) {
        if (row.loss > maximumLoss) {
          maximumLoss = row.loss;
          criticalIndex = index;
        }
      }
    });

    if (criticalIndex < 0) {
      setEmptyResults("Wpisz dodatnią moc przynajmniej jednej pętli.");
      return;
    }

    var critical = rows[criticalIndex];
    var totalPressure = commonLoss + critical.loss;
    var head = totalPressure / 9.80665;
    var totalFlowMinute = totalFlowHour / 60;

    byId("rk-circuit-result-power").textContent = formatNumber(totalPower, 0) + " W";
    byId("rk-circuit-result-flow").textContent = formatNumber(totalFlowHour / 1000, 3) + " m³/h";
    byId("rk-circuit-result-flow-minute").textContent = formatNumber(totalFlowMinute, 2) + " l/min";
    byId("rk-circuit-result-critical").textContent = critical.name;
    byId("rk-circuit-result-pressure").textContent = formatNumber(totalPressure, 1) + " kPa";
    byId("rk-circuit-result-head").textContent = formatNumber(head, 2) + " m";
    byId("rk-circuit-flow-equation").textContent = "0,86 × " + formatNumber(totalPower, 0) + " W ÷ " + formatNumber(delta, 1) + " K = " + formatNumber(totalFlowHour, 0) + " l/h = " + formatNumber(totalFlowHour / 1000, 3) + " m³/h.";
    byId("rk-circuit-pressure-equation").textContent = formatNumber(commonLoss, 1) + " kPa wspólnych strat + " + formatNumber(critical.loss, 1) + " kPa pętli krytycznej = " + formatNumber(totalPressure, 1) + " kPa.";

    var status = byId("rk-circuit-calculator-status");
    status.className = "rk-circuit-status is-good";
    status.textContent = "Przepływy " + String(rows.length) + " pętli zsumowano. Do wspólnych strat dodano opór tylko drogi krytycznej: " + critical.name + ". Wynik Q–H trzeba porównać z charakterystyką pompy.";
    drawChart(rows, commonLoss, criticalIndex);
  }

  function bindRow(row) {
    if (row.getAttribute("data-rk-circuit-bound") === "true") {
      return;
    }
    row.setAttribute("data-rk-circuit-bound", "true");
    var inputs = Array.prototype.slice.call(row.querySelectorAll("input"));
    inputs.forEach(function (input) {
      input.addEventListener("input", updateCalculator);
      input.addEventListener("change", updateCalculator);
    });
    var removeButton = row.querySelector("[data-rk-circuit-remove]");
    removeButton.addEventListener("click", function () {
      var rows = editor.querySelectorAll("[data-rk-circuit-row]");
      if (rows.length > 1) {
        row.remove();
        updateAddButton();
        updateCalculator();
      }
    });
  }

  function updateAddButton() {
    var count = editor.querySelectorAll("[data-rk-circuit-row]").length;
    addButton.disabled = count >= 8;
    addButton.textContent = count >= 8 ? "Maksymalnie 8 pętli" : "+ Dodaj pętlę";
  }

  addButton.addEventListener("click", function () {
    var rows = editor.querySelectorAll("[data-rk-circuit-row]");
    if (rows.length >= 8) {
      return;
    }
    var template = rows[0];
    var clone = template.cloneNode(true);
    clone.removeAttribute("data-rk-circuit-bound");
    var nextNumber = rows.length + 1;
    clone.querySelector("[data-rk-circuit-name]").value = "Pętla " + String(nextNumber);
    clone.querySelector("[data-rk-circuit-power]").value = "500";
    clone.querySelector("[data-rk-circuit-loss]").value = "10";
    clone.querySelector("[data-rk-circuit-flow]").textContent = "1,43 l/min";
    editor.appendChild(clone);
    bindRow(clone);
    updateAddButton();
    updateCalculator();
  });

  var initialRows = Array.prototype.slice.call(editor.querySelectorAll("[data-rk-circuit-row]"));
  initialRows.forEach(bindRow);
  byId("rk-circuit-delta").addEventListener("input", updateCalculator);
  byId("rk-circuit-delta").addEventListener("change", updateCalculator);
  byId("rk-circuit-common-loss").addEventListener("input", updateCalculator);
  byId("rk-circuit-common-loss").addEventListener("change", updateCalculator);

  renderTopology();
  updateAddButton();
  updateCalculator();
}());
</script>

<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",
      "description": "Profesjonalne projektowanie ogrzewania podłogowego i poradniki techniczne HVAC.",
      "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"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "logo": {
        "@id": "https://projekt-ogrzewania.pl/#logo"
      },
      "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": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/#logo",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg",
      "width": 1024,
      "height": 1024,
      "caption": "Projekt Ogrzewania"
    },
    {
      "@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"
      },
      "affiliation": [
        {
          "@id": "https://remont.biz.pl/#organization"
        },
        {
          "@id": "https://sobir.pl/#organization"
        }
      ],
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "obiegi grzewcze",
        "projektowanie hydrauliczne",
        "pompy obiegowe",
        "równoważenie instalacji",
        "źródła niskotemperaturowe"
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/01/Obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/01/Obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym.webp",
      "width": 945,
      "height": 945,
      "caption": "Obieg grzewczy w wodnym ogrzewaniu podłogowym",
      "representativeOfPage": true,
      "inLanguage": "pl-PL"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Projekt Ogrzewania",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Poradniki",
          "item": "https://projekt-ogrzewania.pl/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Obieg grzewczy w ogrzewaniu podłogowym",
          "item": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#webpage",
      "url": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/",
      "name": "Obieg grzewczy w wodnym ogrzewaniu podłogowym – schemat, przepływ i dobór hydrauliki",
      "description": "Obieg grzewczy podłogówki: zobacz schemat, policz przepływ całkowity i obieg krytyczny. Sprawdź, kiedy potrzebne są pompa, mieszacz i równoważenie instalacji.",
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/#website"
      },
      "breadcrumb": {
        "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#breadcrumb"
      },
      "primaryImageOfPage": {
        "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#primaryimage"
      },
      "datePublished": "2026-01-21T09:39:43+00:00",
      "dateModified": "2026-09-11T00:00:00+00:00",
      "inLanguage": "pl-PL",
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          "#rk-circuit-answer .rk-circuit-answer",
          "#rk-circuit-flow .rk-circuit-equation-box",
          "#rk-circuit-conclusions .rk-circuit-answer"
        ]
      }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#article",
      "mainEntityOfPage": {
        "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#webpage"
      },
      "headline": "Obieg grzewczy w wodnym ogrzewaniu podłogowym – schemat, przepływ i dobór hydrauliki",
      "description": "Obieg grzewczy podłogówki: zobacz schemat, policz przepływ całkowity i obieg krytyczny. Sprawdź, kiedy potrzebne są pompa, mieszacz i równoważenie instalacji.",
      "image": {
        "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#primaryimage"
      },
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "datePublished": "2026-01-21T09:39:43+00:00",
      "dateModified": "2026-09-11T00:00:00+00:00",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "wordCount": 4570,
      "timeRequired": "PT36M",
      "articleSection": [
        "Schematy obiegów ogrzewania podłogowego",
        "Przepływ i krytyczna droga hydrauliczna",
        "Dobór pompy oraz rozdzielacza",
        "Sterowanie, równoważenie i diagnostyka"
      ],
      "keywords": [
        "obieg grzewczy ogrzewania podłogowego",
        "schemat obiegu podłogówki",
        "jak obliczyć przepływ całkowity podłogówki",
        "krytyczny obieg ogrzewania podłogowego",
        "czy podłogówka potrzebuje osobnej pompy",
        "czy do podłogówki potrzebny jest mieszacz",
        "równoważenie obiegu ogrzewania podłogowego",
        "bufor lub sprzęgło hydrauliczne"
      ],
      "citation": [
        "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": "Wodne ogrzewanie podłogowe"
        },
        {
          "@type": "Thing",
          "name": "Obieg grzewczy"
        },
        {
          "@type": "Thing",
          "name": "Hydrauliczne równoważenie instalacji"
        },
        {
          "@type": "Thing",
          "name": "Pompa obiegowa"
        }
      ],
      "hasPart": [
        {
          "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#calculator-app"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#topology-app"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#howto"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#checklist-schema"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#faq-schema"
        }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#calculator-app",
      "name": "Kalkulator przepływu całkowitego i krytycznego obiegu podłogówki",
      "url": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#rk-circuit-calculator",
      "description": "Kalkulator sumuje przepływy wody wynikające z mocy pętli i projektowego delta T, wskazuje gałąź o największym podanym oporze oraz pokazuje wymagane ciśnienie drogi na interaktywnym wykresie.",
      "applicationCategory": "EducationalApplication",
      "applicationSubCategory": "Kalkulator hydrauliczny",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      },
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#article"
      }
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#topology-app",
      "name": "Interaktywna grafika architektury obiegu podłogówki",
      "url": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#rk-circuit-graphic",
      "description": "Modułowa grafika porównuje obieg bezpośredni, pompowo-mieszający i rozdzielony buforem lub sprzęgłem w trzech stanach pracy odbiorników.",
      "applicationCategory": "EducationalApplication",
      "applicationSubCategory": "Interaktywna grafika edukacyjna",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      },
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#article"
      }
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#howto",
      "name": "Jak zaprojektować obieg ogrzewania podłogowego",
      "description": "Osiem etapów od obciążenia cieplnego pomieszczeń do uruchomienia i zapisania nastaw obiegu.",
      "image": {
        "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#primaryimage"
      },
      "totalTime": "PT4H",
      "inLanguage": "pl-PL",
      "supply": [
        {
          "@type": "HowToSupply",
          "name": "Obliczenia obciążenia cieplnego pomieszczeń"
        },
        {
          "@type": "HowToSupply",
          "name": "Rzut instalacji i dane konstrukcji podłogi"
        },
        {
          "@type": "HowToSupply",
          "name": "Charakterystyki rur, armatury, pompy i źródła"
        }
      ],
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Policz obciążenia pomieszczeń",
          "text": "Wyznacz projektową moc dla każdego pomieszczenia.",
          "url": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#rk-circuit-design"
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Sprawdź możliwości podłogi",
          "text": "Ustal powierzchnie czynne, warstwy, rozstawy oraz wymagane temperatury.",
          "url": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#rk-circuit-design"
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Zaprojektuj pętle",
          "text": "Narysuj trasy i oblicz ich moce, przepływy oraz opory.",
          "url": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#rk-circuit-design"
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Wybierz architekturę obiegu",
          "text": "Zweryfikuj obieg bezpośredni, potrzebę mieszania albo rozdzielenia hydraulicznego.",
          "url": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#rk-circuit-graphic"
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Policz wspólne przewody",
          "text": "Zsumuj przepływy czynnych pętli i sprawdź średnice oraz straty.",
          "url": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#rk-circuit-flow"
        },
        {
          "@type": "HowToStep",
          "position": 6,
          "name": "Wyznacz drogę krytyczną",
          "text": "Dodaj straty kolejnych elementów najbardziej wymagającej drogi.",
          "url": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#rk-circuit-calculator"
        },
        {
          "@type": "HowToStep",
          "position": 7,
          "name": "Dobierz pompę i sterowanie",
          "text": "Porównaj punkt Q–H i sprawdź pracę po zamknięciu części stref.",
          "url": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#rk-circuit-pump"
        },
        {
          "@type": "HowToStep",
          "position": 8,
          "name": "Uruchom i udokumentuj",
          "text": "Odpowietrz instalację, ustaw przepływy, zweryfikuj temperatury i zapisz nastawy.",
          "url": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#rk-circuit-balancing"
        }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#checklist-schema",
      "name": "Lista kontrolna obiegu ogrzewania podłogowego",
      "description": "Czternaście punktów do sprawdzenia przed zatwierdzeniem schematu i uruchomieniem obiegu.",
      "numberOfItems": 14,
      "itemListOrder": "https://schema.org/ItemListOrderAscending",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "OZC pomieszczeń",
          "description": "Czy każda powierzchnia ma określoną projektową moc?"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Powierzchnie i okładziny",
          "description": "Czy sprawdzono moc podłogi oraz ograniczenia wszystkich warstw?"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Temperatury projektowe",
          "description": "Czy zasilanie i powrót wynikają z obliczeń, a nie z jednej reguły?"
        },
        {
          "@type": "ListItem",
          "position": 4,
          "name": "Pętle grzewcze",
          "description": "Czy znane są rzeczywiste długości, moce, przepływy i spadki ciśnienia?"
        },
        {
          "@type": "ListItem",
          "position": 5,
          "name": "Przepływ całkowity",
          "description": "Czy zsumowano właściwe pętle dla analizowanego stanu pracy?"
        },
        {
          "@type": "ListItem",
          "position": 6,
          "name": "Przewody wspólne",
          "description": "Czy ich średnice, prędkości i straty odpowiadają sumarycznemu przepływowi?"
        },
        {
          "@type": "ListItem",
          "position": 7,
          "name": "Droga krytyczna",
          "description": "Czy ustalono najbardziej wymagającą trasę zamiast tylko najdłuższej pętli?"
        },
        {
          "@type": "ListItem",
          "position": 8,
          "name": "Punkt pracy pompy",
          "description": "Czy Q oraz H porównano z charakterystyką w odpowiednim trybie regulacji?"
        },
        {
          "@type": "ListItem",
          "position": 9,
          "name": "Architektura obiegu",
          "description": "Czy mieszanie lub rozdzielenie hydrauliczne ma opisane zadanie?"
        },
        {
          "@type": "ListItem",
          "position": 10,
          "name": "Wymagania źródła",
          "description": "Czy zachowano minimalny przepływ, objętość i dopuszczalne temperatury?"
        },
        {
          "@type": "ListItem",
          "position": 11,
          "name": "Stany częściowego odbioru",
          "description": "Czy sprawdzono zachowanie po zamknięciu części siłowników?"
        },
        {
          "@type": "ListItem",
          "position": 12,
          "name": "Zabezpieczenia i jakość medium",
          "description": "Czy przewidziano wymagane elementy ochronne, filtrację i procedurę napełnienia?"
        },
        {
          "@type": "ListItem",
          "position": 13,
          "name": "Równoważenie",
          "description": "Czy każda pętla ma przepływ do ustawienia podczas uruchomienia?"
        },
        {
          "@type": "ListItem",
          "position": 14,
          "name": "Dokumentacja końcowa",
          "description": "Czy zapisano schemat, opis pętli, tryb pompy, przepływy i temperatury?"
        }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#faq-schema",
      "url": "https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/#rk-circuit-faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Co to jest obieg grzewczy ogrzewania podłogowego?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "To kompletna droga przepływu od miejsca wytworzenia lub regulacji temperatury, przez pompę, przewody wspólne, rozdzielacz i jedną z równoległych pętli, aż do powrotu. W jednym obiegu temperaturowym może pracować wiele pętli."
          }
        },
        {
          "@type": "Question",
          "name": "Czym obieg grzewczy różni się od pętli podłogówki?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Pętla jest pojedynczą gałęzią rury podłączoną do rozdzielacza. Obieg obejmuje dodatkowo elementy wspólne: źródło lub wymiennik, regulację temperatury, pompę, magistralę, armaturę, rozdzielacz i powrót."
          }
        },
        {
          "@type": "Question",
          "name": "Czy każdy rozdzielacz podłogówki potrzebuje osobnej pompy?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Jedna pompa może obsługiwać kilka rozdzielaczy, jeżeli jej osiągalny punkt pracy, średnice przewodów, sposób regulacji oraz wymagania źródła są zgodne z projektem. Osobna pompa ma mieć określoną funkcję hydrauliczną, a nie wynikać wyłącznie z liczby rozdzielaczy."
          }
        },
        {
          "@type": "Question",
          "name": "Czy w obiegu podłogówki zawsze potrzebny jest zawór mieszający?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Jeżeli źródło bezpośrednio wytwarza temperaturę odpowiednią dla wszystkich odbiorników podłogowych, oddzielne mieszanie może być zbędne. Zawór mieszający stosuje się wtedy, gdy trzeba utworzyć inną temperaturę obiegu lub spełnić wymagania konkretnego układu."
          }
        },
        {
          "@type": "Question",
          "name": "Jak obliczyć całkowity przepływ obiegu podłogówki?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Najpierw oblicza się projektowy przepływ każdej czynnej pętli z jej mocy i przyjętego ΔT, a następnie sumuje przepływy pętli pracujących jednocześnie. Dla wody można orientacyjnie użyć zależności V w l/h około 0,86 razy moc w watach podzielona przez ΔT w kelwinach."
          }
        },
        {
          "@type": "Question",
          "name": "Czy spadki ciśnienia wszystkich pętli się sumują?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie, ponieważ pętle na rozdzielaczu są połączone równolegle. Do wymaganego ciśnienia pompy dodaje się opory elementów wspólnych i spadek ciśnienia jednej najbardziej wymagającej drogi. Sumują się natomiast przepływy równoległych pętli."
          }
        },
        {
          "@type": "Question",
          "name": "Co oznacza krytyczny obieg lub krytyczna droga?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "To droga wymagająca największej dostępnej różnicy ciśnień przy swoim projektowym przepływie. Nie musi nią być najdłuższa pętla, ponieważ znaczenie mają także przepływ, średnica wewnętrzna, armatura i elementy leżące na trasie."
          }
        },
        {
          "@type": "Question",
          "name": "Co dzieje się po zamknięciu części siłowników na rozdzielaczu?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Maleje sumaryczny przepływ odbiorników i czynna objętość instalacji, a różnica ciśnień na pozostających otwartych gałęziach może wzrosnąć. Projekt musi sprawdzić reakcję pompy, minimalny przepływ źródła oraz najmniejszy dopuszczalny odbiór."
          }
        },
        {
          "@type": "Question",
          "name": "Czy pompa ciepła zawsze wymaga bufora w obiegu podłogowym?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Potrzeba bufora zależy od wymaganej objętości, minimalnego przepływu, modulacji urządzenia, odszraniania, sterowania strefowego i architektury hydraulicznej. Decyzję podejmuje się na podstawie dokumentacji konkretnej pompy oraz obliczeń instalacji."
          }
        },
        {
          "@type": "Question",
          "name": "Jak ustawić przepływy na rozdzielaczu ogrzewania podłogowego?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Każdą pętlę ustawia się według wartości projektowej wynikającej z przypisanej mocy i ΔT. Regulację prowadzi się przy odpowietrzonej, czystej instalacji, znanym trybie pompy i określonym stanie zaworów, a po korektach ponownie sprawdza się wszystkie gałęzie."
          }
        }
      ]
    }
  ]
}
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/obieg-grzewczy-w-wodnym-ogrzewaniu-podlogowym/">Obieg grzewczy w wodnym ogrzewaniu podłogowym &#8211; – schemat, pompa i przepływ.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Maksymalna długość pętli ogrzewania podłogowego.</title>
		<link>https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/</link>
					<comments>https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Wed, 05 Feb 2025 20:55:07 +0000</pubDate>
				<category><![CDATA[Budowa i remont]]></category>
		<category><![CDATA[Dom pasywny]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Technologie budowlane]]></category>
		<category><![CDATA[długość pętli grzewczej]]></category>
		<category><![CDATA[izolacja termiczna]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[pętla ogrzewania podłogowego]]></category>
		<category><![CDATA[pex 16 mm]]></category>
		<category><![CDATA[pex 20 mm]]></category>
		<category><![CDATA[pompa obiegowa]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<category><![CDATA[równoważenie hydrauliczne]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2095</guid>

					<description><![CDATA[<p>Planujesz montaż ogrzewania podłogowego? Maksymalna długość pętli ogrzewania podłogowego to parametr, od którego zależy komfort cieplny i oszczędność energii. Zbyt długa pętla powoduje zimne strefy na podłodze, przeciąża pompę i zwiększa rachunki. W artykule wyjaśniamy, jak dobrać optymalną długość rur PEX 16 mm i 20 mm, jak obliczyć wydajność pompy oraz dlaczego izolacja podłogi jest kluczowa. Poznaj praktyczne przykłady, wzory i błędy, których warto uniknąć, by system działał sprawnie przez lata!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">Maksymalna długość pętli ogrzewania podłogowego.</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-navy-2: #0c2d40;
    --rk-blue: #078fbe;
    --rk-cyan: #27c8d9;
    --rk-cyan-soft: #e9fbff;
    --rk-orange: #ff6f3d;
    --rk-orange-soft: #fff1eb;
    --rk-green: #17846d;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #e7ad2f;
    --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-loop-guide,
  #rk-loop-guide * {
    box-sizing: border-box;
  }

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

  #rk-loop-guide a {
    color: var(--rk-blue);
    text-decoration-thickness: 1.5px;
    text-underline-offset: 3px;
  }

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

  #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;
  }

  #rk-loop-guide button,
  #rk-loop-guide input,
  #rk-loop-guide select,
  #rk-loop-guide summary,
  #rk-loop-guide a {
    outline-offset: 3px;
  }

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

  #rk-loop-guide .rk-loop-hero {
    position: relative;
    overflow: hidden;
    padding: 68px 58px 62px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 88% 18%, rgba(39, 200, 217, 0.26) 0, rgba(39, 200, 217, 0) 34%),
      linear-gradient(135deg, var(--rk-dark) 0%, var(--rk-navy) 58%, #175269 100%);
  }

  #rk-loop-guide .rk-loop-hero::before,
  #rk-loop-guide .rk-loop-hero::after {
    position: absolute;
    border-radius: 999px;
    content: "";
    pointer-events: none;
  }

  #rk-loop-guide .rk-loop-hero::before {
    top: -110px;
    right: -85px;
    width: 330px;
    height: 330px;
    border: 34px solid rgba(255, 255, 255, 0.055);
  }

  #rk-loop-guide .rk-loop-hero::after {
    right: 80px;
    bottom: -145px;
    width: 290px;
    height: 290px;
    border: 2px solid rgba(39, 200, 217, 0.35);
  }

  #rk-loop-guide .rk-loop-hero-inner {
    position: relative;
    z-index: 1;
    max-width: 910px;
  }

  #rk-loop-guide .rk-loop-eyebrow,
  #rk-loop-guide .rk-loop-kicker {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
    color: var(--rk-blue);
    font-size: 0.76rem;
    font-weight: 850;
    letter-spacing: 0.1em;
    line-height: 1.35;
    text-transform: uppercase;
  }

  #rk-loop-guide .rk-loop-eyebrow {
    color: #8af2ff;
  }

  #rk-loop-guide .rk-loop-eyebrow b {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 6px rgba(255, 111, 61, 0.14);
  }

  #rk-loop-guide .rk-loop-hero-title {
    max-width: 860px;
    margin: 0;
    color: var(--rk-white);
    font-size: clamp(2.15rem, 5vw, 4.15rem);
    font-weight: 920;
    letter-spacing: -0.055em;
    line-height: 1.02;
  }

  #rk-loop-guide .rk-loop-hero-lead {
    max-width: 820px;
    margin: 25px 0 0;
    color: #d8edf5;
    font-size: 1.12rem;
    line-height: 1.72;
  }

  #rk-loop-guide .rk-loop-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 22px;
    margin-top: 29px;
    color: #b9d7e2;
    font-size: 0.84rem;
    font-weight: 700;
  }

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

  #rk-loop-guide .rk-loop-meta i {
    display: inline-block;
    width: 8px;
    height: 8px;
    border-radius: 50%;
    background: var(--rk-cyan);
  }

  #rk-loop-guide .rk-loop-nav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 10px;
    padding: 22px 28px;
    background: var(--rk-white);
    border-bottom: 1px solid var(--rk-line);
  }

  #rk-loop-guide .rk-loop-nav strong {
    margin-right: 5px;
    color: var(--rk-dark);
    font-size: 0.76rem;
    font-weight: 900;
    letter-spacing: 0.07em;
    text-transform: uppercase;
  }

  #rk-loop-guide .rk-loop-nav a {
    display: inline-flex;
    align-items: center;
    min-height: 42px;
    padding: 9px 15px;
    color: var(--rk-navy);
    background: var(--rk-soft);
    border: 1px solid transparent;
    border-radius: 999px;
    font-size: 0.8rem;
    font-weight: 820;
    line-height: 1.25;
    text-decoration: none;
  }

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

  #rk-loop-guide .rk-loop-section {
    padding: 66px 58px;
    scroll-margin-top: 24px;
  }

  #rk-loop-guide .rk-loop-section:nth-of-type(even) {
    background: #fbfdfe;
  }

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

  #rk-loop-guide h2,
  #rk-loop-guide h3,
  #rk-loop-guide h4,
  #rk-loop-guide p {
    margin-top: 0;
  }

  #rk-loop-guide h2 {
    max-width: 900px;
    margin-bottom: 20px;
    color: var(--rk-dark);
    font-size: clamp(1.8rem, 3.5vw, 2.75rem);
    font-weight: 900;
    letter-spacing: -0.04em;
    line-height: 1.12;
  }

  #rk-loop-guide h3 {
    margin-bottom: 10px;
    color: var(--rk-navy);
    font-size: 1.2rem;
    font-weight: 850;
    letter-spacing: -0.02em;
    line-height: 1.28;
  }

  #rk-loop-guide h4 {
    margin-bottom: 8px;
    color: var(--rk-dark);
    font-size: 0.98rem;
    font-weight: 850;
    line-height: 1.35;
  }

  #rk-loop-guide p {
    margin-bottom: 18px;
    color: var(--rk-text);
  }

  #rk-loop-guide .rk-loop-intro {
    max-width: 940px;
    margin-bottom: 30px;
    color: #3e5361;
    font-size: 1.08rem;
    line-height: 1.78;
  }

  #rk-loop-guide .rk-loop-answer {
    display: grid;
    grid-template-columns: minmax(0, 1.45fr) minmax(260px, 0.75fr);
    gap: 18px;
    margin: 30px 0;
  }

  #rk-loop-guide .rk-loop-answer-main,
  #rk-loop-guide .rk-loop-answer-side,
  #rk-loop-guide .rk-loop-card,
  #rk-loop-guide .rk-loop-note,
  #rk-loop-guide .rk-loop-step,
  #rk-loop-guide .rk-loop-error {
    border: 1px solid var(--rk-line);
    border-radius: 19px;
  }

  #rk-loop-guide .rk-loop-answer-main {
    padding: 28px;
    background: linear-gradient(135deg, var(--rk-cyan-soft), var(--rk-white));
    border-left: 5px solid var(--rk-cyan);
  }

  #rk-loop-guide .rk-loop-answer-side {
    padding: 28px;
    background: var(--rk-yellow-soft);
    border-left: 5px solid var(--rk-yellow);
  }

  #rk-loop-guide .rk-loop-answer p:last-child,
  #rk-loop-guide .rk-loop-card p:last-child,
  #rk-loop-guide .rk-loop-note p:last-child,
  #rk-loop-guide .rk-loop-step p:last-child,
  #rk-loop-guide .rk-loop-error 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;
    margin: 28px 0;
  }

  #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 {
    padding: 25px;
    background: var(--rk-white);
    box-shadow: 0 8px 25px rgba(16, 37, 54, 0.045);
  }

  #rk-loop-guide .rk-loop-card-number {
    display: inline-flex;
    margin-bottom: 13px;
    color: var(--rk-blue);
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.075em;
    text-transform: uppercase;
  }

  #rk-loop-guide .rk-loop-badge {
    display: inline-flex;
    align-items: center;
    padding: 5px 10px;
    margin: 0 4px 4px 0;
    color: var(--rk-dark);
    background: var(--rk-cyan-soft);
    border: 1px solid #a9eaf1;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 820;
  }

  #rk-loop-guide .rk-loop-formula {
    display: grid;
    gap: 7px;
    margin: 27px 0;
    padding: 23px 27px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-dark), var(--rk-navy));
    border-radius: 18px;
  }

  #rk-loop-guide .rk-loop-formula strong {
    overflow-wrap: anywhere;
    color: #8af2ff;
    font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
    font-size: 1.06rem;
    line-height: 1.55;
  }

  #rk-loop-guide .rk-loop-formula span {
    color: #c5dfe8;
    font-size: 0.83rem;
    line-height: 1.55;
  }

  #rk-loop-guide .rk-loop-note {
    margin: 25px 0;
    padding: 22px 25px;
    background: var(--rk-soft);
    border-left: 5px solid var(--rk-blue);
  }

  #rk-loop-guide .rk-loop-note.rk-loop-warning {
    background: var(--rk-yellow-soft);
    border-left-color: var(--rk-yellow);
  }

  #rk-loop-guide .rk-loop-note.rk-loop-danger {
    background: var(--rk-red-soft);
    border-left-color: var(--rk-red);
  }

  #rk-loop-guide .rk-loop-route {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 10px;
    align-items: stretch;
    margin: 30px 0;
  }

  #rk-loop-guide .rk-loop-route-item {
    position: relative;
    display: flex;
    min-height: 115px;
    flex-direction: column;
    justify-content: center;
    padding: 18px 16px;
    color: var(--rk-dark);
    text-align: center;
    background: var(--rk-soft);
    border: 1px solid var(--rk-line);
    border-radius: 16px;
  }

  #rk-loop-guide .rk-loop-route-item:not(:last-child)::after {
    position: absolute;
    top: 50%;
    right: -15px;
    z-index: 2;
    width: 20px;
    height: 20px;
    color: var(--rk-blue);
    background: var(--rk-white);
    border-radius: 50%;
    content: "›";
    font-size: 1.5rem;
    font-weight: 900;
    line-height: 17px;
  }

  #rk-loop-guide .rk-loop-route-item b {
    display: block;
    margin-bottom: 5px;
    color: var(--rk-navy);
    font-size: 0.92rem;
  }

  #rk-loop-guide .rk-loop-route-item span {
    color: var(--rk-muted);
    font-size: 0.76rem;
    line-height: 1.45;
  }

  #rk-loop-guide .rk-loop-sequence {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 12px;
    margin: 28px 0;
  }

  #rk-loop-guide .rk-loop-sequence article {
    padding: 20px 17px;
    background: var(--rk-white);
    border: 1px solid var(--rk-line);
    border-top: 4px solid var(--rk-cyan);
    border-radius: 15px;
  }

  #rk-loop-guide .rk-loop-sequence b {
    display: inline-grid;
    width: 31px;
    height: 31px;
    margin-bottom: 11px;
    place-items: center;
    color: var(--rk-white);
    background: var(--rk-navy);
    border-radius: 10px;
    font-size: 0.8rem;
  }

  #rk-loop-guide .rk-loop-sequence strong {
    display: block;
    margin-bottom: 6px;
    color: var(--rk-dark);
    font-size: 0.9rem;
    line-height: 1.35;
  }

  #rk-loop-guide .rk-loop-sequence span {
    display: block;
    color: var(--rk-muted);
    font-size: 0.76rem;
    line-height: 1.45;
  }

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

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

  #rk-loop-guide thead {
    color: var(--rk-white);
    background: var(--rk-navy);
  }

  #rk-loop-guide th,
  #rk-loop-guide td {
    padding: 15px 17px;
    text-align: left;
    vertical-align: top;
  }

  #rk-loop-guide th {
    font-size: 0.76rem;
    font-weight: 850;
    letter-spacing: 0.025em;
    line-height: 1.35;
  }

  #rk-loop-guide td {
    color: var(--rk-text);
    border-top: 1px solid var(--rk-line);
    line-height: 1.5;
  }

  #rk-loop-guide tbody tr:first-child td {
    border-top: 0;
  }

  #rk-loop-guide tbody tr:nth-child(even) {
    background: #f8fbfc;
  }

  #rk-loop-guide .rk-loop-tool-section {
    padding: 0;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 90% 10%, rgba(39, 200, 217, 0.18), transparent 31%),
      linear-gradient(155deg, #0d2b3d 0%, #12384d 58%, #102d3f 100%);
  }

  #rk-loop-guide .rk-loop-tool-head {
    padding: 58px 58px 31px;
  }

  #rk-loop-guide .rk-loop-tool-head .rk-loop-kicker {
    color: #7ff1ff;
  }

  #rk-loop-guide .rk-loop-tool-head h2 {
    margin-bottom: 16px;
    color: var(--rk-white);
  }

  #rk-loop-guide .rk-loop-tool-head p {
    max-width: 930px;
    margin-bottom: 0;
    color: #c3dce6;
  }

  #rk-loop-guide .rk-loop-tool {
    padding: 0 34px 45px;
  }

  #rk-loop-guide .rk-loop-tool-panel {
    padding: 29px;
    background: rgba(255, 255, 255, 0.045);
    border: 1px solid rgba(157, 221, 235, 0.24);
    border-radius: 21px;
  }

  #rk-loop-guide .rk-loop-tool-panel + .rk-loop-tool-panel {
    margin-top: 20px;
  }

  #rk-loop-guide .rk-loop-tool-panel h3 {
    margin-bottom: 7px;
    color: var(--rk-white);
  }

  #rk-loop-guide .rk-loop-tool-panel > p {
    margin-bottom: 23px;
    color: #b8d2dd;
    font-size: 0.84rem;
  }

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

  #rk-loop-guide .rk-loop-fieldset {
    min-width: 0;
    margin: 0;
    padding: 22px;
    border: 1px solid rgba(166, 220, 233, 0.25);
    border-radius: 17px;
  }

  #rk-loop-guide .rk-loop-fieldset legend {
    padding: 0 9px;
    color: #86f2ff;
    font-size: 0.79rem;
    font-weight: 900;
    letter-spacing: 0.055em;
    text-transform: uppercase;
  }

  #rk-loop-guide .rk-loop-field {
    display: block;
    margin-bottom: 16px;
  }

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

  #rk-loop-guide .rk-loop-field-label {
    display: block;
    margin-bottom: 7px;
    color: #eaf8fc;
    font-size: 0.78rem;
    font-weight: 800;
    line-height: 1.35;
  }

  #rk-loop-guide .rk-loop-field small {
    display: block;
    margin-top: 6px;
    color: #8fb3c1;
    font-size: 0.69rem;
    line-height: 1.42;
  }

  #rk-loop-guide .rk-loop-input-row {
    position: relative;
  }

  #rk-loop-guide .rk-loop-input-row input,
  #rk-loop-guide .rk-loop-input-row select {
    width: 100%;
    min-height: 48px;
    padding: 10px 48px 10px 13px;
    color: var(--rk-dark);
    background: var(--rk-white);
    border: 1px solid #bed3dc;
    border-radius: 10px;
    font-size: 0.91rem;
    font-weight: 750;
  }

  #rk-loop-guide .rk-loop-input-row select {
    padding-right: 13px;
  }

  #rk-loop-guide .rk-loop-input-row input:disabled {
    color: #78909b;
    background: #dbe6ea;
    cursor: not-allowed;
  }

  #rk-loop-guide .rk-loop-unit {
    position: absolute;
    top: 50%;
    right: 13px;
    color: #667d88;
    font-size: 0.69rem;
    font-weight: 850;
    transform: translateY(-50%);
    pointer-events: none;
  }

  #rk-loop-guide .rk-loop-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 22px;
  }

  #rk-loop-guide .rk-loop-button {
    min-height: 48px;
    padding: 11px 20px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    border: 0;
    border-radius: 11px;
    cursor: pointer;
    font-size: 0.82rem;
    font-weight: 900;
  }

  #rk-loop-guide .rk-loop-button:hover,
  #rk-loop-guide .rk-loop-button:focus-visible {
    background: #72e9f4;
  }

  #rk-loop-guide .rk-loop-button-secondary {
    color: #d9edf4;
    background: transparent;
    border: 1px solid #53778a;
  }

  #rk-loop-guide .rk-loop-button-secondary:hover,
  #rk-loop-guide .rk-loop-button-secondary:focus-visible {
    color: var(--rk-white);
    background: rgba(255, 255, 255, 0.08);
  }

  #rk-loop-guide .rk-loop-results {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 13px;
    margin-top: 23px;
  }

  #rk-loop-guide .rk-loop-result {
    min-width: 0;
    padding: 18px;
    background: rgba(6, 29, 42, 0.48);
    border: 1px solid rgba(152, 218, 232, 0.2);
    border-radius: 14px;
  }

  #rk-loop-guide .rk-loop-result span {
    display: block;
    margin-bottom: 7px;
    color: #91b7c5;
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.045em;
    line-height: 1.35;
    text-transform: uppercase;
  }

  #rk-loop-guide .rk-loop-result strong {
    display: block;
    overflow-wrap: anywhere;
    color: var(--rk-white);
    font-size: 1.32rem;
    font-weight: 900;
    line-height: 1.15;
  }

  #rk-loop-guide .rk-loop-result small {
    display: block;
    margin-top: 6px;
    color: #759cab;
    font-size: 0.65rem;
    line-height: 1.35;
  }

  #rk-loop-guide .rk-loop-status {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 15px;
    align-items: start;
    margin-top: 18px;
    padding: 19px 21px;
    background: rgba(23, 132, 109, 0.19);
    border: 1px solid rgba(96, 224, 186, 0.4);
    border-left: 5px solid #4fd5af;
    border-radius: 14px;
  }

  #rk-loop-guide .rk-loop-status.rk-loop-status-warning {
    background: rgba(231, 173, 47, 0.16);
    border-color: rgba(239, 195, 94, 0.42);
    border-left-color: var(--rk-yellow);
  }

  #rk-loop-guide .rk-loop-status.rk-loop-status-danger {
    background: rgba(217, 75, 61, 0.17);
    border-color: rgba(235, 118, 104, 0.42);
    border-left-color: var(--rk-red);
  }

  #rk-loop-guide .rk-loop-status-icon {
    display: grid;
    width: 38px;
    height: 38px;
    place-items: center;
    color: var(--rk-dark);
    background: #5addb7;
    border-radius: 12px;
    font-weight: 950;
  }

  #rk-loop-guide .rk-loop-status-warning .rk-loop-status-icon {
    background: var(--rk-yellow);
  }

  #rk-loop-guide .rk-loop-status-danger .rk-loop-status-icon {
    color: var(--rk-white);
    background: var(--rk-red);
  }

  #rk-loop-guide .rk-loop-status strong {
    display: block;
    margin-bottom: 4px;
    color: var(--rk-white);
    font-size: 0.96rem;
  }

  #rk-loop-guide .rk-loop-status p {
    margin: 0;
    color: #c4dce5;
    font-size: 0.8rem;
    line-height: 1.55;
  }

  #rk-loop-guide .rk-loop-chart-wrap {
    padding: 20px;
    background: var(--rk-white);
    border-radius: 17px;
  }

  #rk-loop-guide .rk-loop-chart {
    display: block;
    width: 100%;
    min-height: 350px;
  }

  #rk-loop-guide .rk-loop-chart-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 18px;
    margin-top: 13px;
    color: #52707d;
    font-size: 0.72rem;
    font-weight: 780;
  }

  #rk-loop-guide .rk-loop-legend-item {
    display: inline-flex;
    align-items: center;
    gap: 7px;
  }

  #rk-loop-guide .rk-loop-legend-line {
    width: 23px;
    height: 4px;
    border-radius: 4px;
  }

  #rk-loop-guide .rk-loop-chart-note {
    margin: 14px 0 0;
    color: #657c87;
    font-size: 0.72rem;
    line-height: 1.5;
  }

  #rk-loop-guide .rk-loop-tool-table table {
    background: rgba(255, 255, 255, 0.04);
    border-color: rgba(161, 218, 231, 0.22);
  }

  #rk-loop-guide .rk-loop-tool-table thead {
    background: rgba(6, 29, 42, 0.65);
  }

  #rk-loop-guide .rk-loop-tool-table td {
    color: #d1e5ec;
    border-color: rgba(161, 218, 231, 0.18);
  }

  #rk-loop-guide .rk-loop-tool-table tbody tr:nth-child(even) {
    background: rgba(255, 255, 255, 0.025);
  }

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

  #rk-loop-guide .rk-loop-diagnostic {
    padding: 17px;
    color: #c4dce5;
    background: rgba(6, 29, 42, 0.36);
    border: 1px solid rgba(155, 214, 228, 0.18);
    border-radius: 13px;
    font-size: 0.74rem;
    line-height: 1.5;
  }

  #rk-loop-guide .rk-loop-diagnostic b {
    display: block;
    margin-bottom: 5px;
    color: #8af2ff;
    font-size: 0.76rem;
  }

  #rk-loop-guide .rk-loop-tool-disclaimer {
    margin: 22px 0 0;
    padding: 18px 20px;
    color: #b5d0da;
    background: rgba(255, 255, 255, 0.05);
    border-left: 4px solid var(--rk-orange);
    border-radius: 12px;
    font-size: 0.75rem;
    line-height: 1.55;
  }

  #rk-loop-guide .rk-loop-cta,
  #rk-loop-guide .rk-loop-final-cta {
    padding: 48px 52px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 90% 12%, rgba(39, 200, 217, 0.22), transparent 32%),
      linear-gradient(135deg, var(--rk-dark), var(--rk-navy));
  }

  #rk-loop-guide .rk-loop-cta {
    margin: 0;
    border-top: 1px solid rgba(160, 220, 233, 0.18);
  }

  #rk-loop-guide .rk-loop-cta-title {
    max-width: 860px;
    margin: 0 0 13px;
    color: var(--rk-white);
    font-size: clamp(1.65rem, 3vw, 2.35rem);
    font-weight: 900;
    letter-spacing: -0.035em;
    line-height: 1.15;
  }

  #rk-loop-guide .rk-loop-cta p,
  #rk-loop-guide .rk-loop-final-cta p {
    max-width: 900px;
    color: #c5dfe8;
  }

  #rk-loop-guide .rk-loop-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    padding: 12px 23px;
    margin-top: 8px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    border: 0;
    border-radius: 12px;
    box-shadow: 0 10px 28px rgba(39, 200, 217, 0.19);
    font-size: 0.84rem;
    font-weight: 900;
    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-dark);
    background: #7cf0fa;
    transform: translateY(-1px);
  }

  #rk-loop-guide .rk-loop-disclosure {
    display: block;
    margin-top: 13px;
    color: #87adbc;
    font-size: 0.67rem;
    line-height: 1.45;
  }

  #rk-loop-guide .rk-loop-steps {
    display: grid;
    gap: 13px;
    margin: 28px 0;
    counter-reset: rk-loop-step;
  }

  #rk-loop-guide .rk-loop-step {
    position: relative;
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr);
    gap: 17px;
    padding: 21px 23px;
    background: var(--rk-white);
    counter-increment: rk-loop-step;
  }

  #rk-loop-guide .rk-loop-step::before {
    display: grid;
    width: 44px;
    height: 44px;
    place-items: center;
    color: var(--rk-white);
    background: var(--rk-blue);
    border-radius: 13px;
    content: counter(rk-loop-step, decimal-leading-zero);
    font-size: 0.76rem;
    font-weight: 900;
  }

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

  #rk-loop-guide .rk-loop-error {
    padding: 23px;
    background: var(--rk-white);
    border-left: 5px solid var(--rk-red);
  }

  #rk-loop-guide .rk-loop-error b {
    display: inline-flex;
    margin-bottom: 10px;
    color: var(--rk-red);
    font-size: 0.73rem;
    font-weight: 900;
    letter-spacing: 0.07em;
    text-transform: uppercase;
  }

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

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

  #rk-loop-guide .rk-loop-faq summary {
    position: relative;
    padding: 19px 55px 19px 21px;
    color: var(--rk-dark);
    cursor: pointer;
    font-size: 0.94rem;
    font-weight: 850;
    line-height: 1.4;
    list-style: none;
  }

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

  #rk-loop-guide .rk-loop-faq summary::after {
    position: absolute;
    top: 50%;
    right: 20px;
    display: grid;
    width: 29px;
    height: 29px;
    place-items: center;
    color: var(--rk-white);
    background: var(--rk-blue);
    border-radius: 9px;
    content: "+";
    font-size: 1.15rem;
    transform: translateY(-50%);
  }

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

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

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

  #rk-loop-guide .rk-loop-sources {
    display: grid;
    gap: 12px;
    margin-top: 26px;
  }

  #rk-loop-guide .rk-loop-source {
    padding: 19px 21px;
    background: var(--rk-white);
    border: 1px solid var(--rk-line);
    border-radius: 14px;
  }

  #rk-loop-guide .rk-loop-source b {
    display: block;
    margin-bottom: 5px;
    color: var(--rk-dark);
  }

  #rk-loop-guide .rk-loop-source p {
    margin-bottom: 7px;
    font-size: 0.82rem;
  }

  #rk-loop-guide .rk-loop-source a {
    overflow-wrap: anywhere;
    font-size: 0.79rem;
    font-weight: 800;
  }

  #rk-loop-guide .rk-loop-update {
    margin-top: 25px;
    color: var(--rk-muted);
    font-size: 0.72rem;
    font-weight: 750;
  }

  #rk-loop-guide .rk-loop-author {
    position: relative;
    padding: 0;
    background: #f4f9fb;
    border-top: 1px solid var(--rk-line);
    scroll-margin-top: 24px;
  }

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

  #rk-loop-guide .rk-loop-author-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 20px;
    padding: 42px 50px 28px;
    background: var(--rk-white);
    border-bottom: 1px solid var(--rk-line);
  }

  #rk-loop-guide .rk-loop-author-head h2 {
    margin: 0 0 5px;
    font-size: 2rem;
  }

  #rk-loop-guide .rk-loop-author-head p {
    margin: 0;
    font-size: 0.84rem;
  }

  #rk-loop-guide .rk-loop-author-mark {
    flex: 0 0 auto;
    padding: 8px 12px;
    color: var(--rk-dark);
    background: var(--rk-cyan-soft);
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 900;
    letter-spacing: 0.065em;
  }

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

  #rk-loop-guide .rk-loop-author-side {
    padding: 38px 31px;
    color: var(--rk-white);
    text-align: center;
    background: var(--rk-dark);
  }

  #rk-loop-guide .rk-loop-author-photo {
    width: 158px;
    height: 158px;
    margin: 0 auto 20px;
    overflow: hidden;
    background: var(--rk-white);
    border: 6px solid rgba(255, 255, 255, 0.18);
    border-radius: 50%;
  }

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

  #rk-loop-guide .rk-loop-author-name {
    color: var(--rk-white);
    font-size: 1.23rem;
    font-weight: 900;
  }

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

  #rk-loop-guide .rk-loop-author-role {
    margin-top: 7px;
    color: #b7d0db;
    font-size: 0.76rem;
    line-height: 1.55;
  }

  #rk-loop-guide .rk-loop-author-social-label {
    margin-top: 27px;
    color: #89a9b7;
    font-size: 0.65rem;
    font-weight: 850;
    letter-spacing: 0.07em;
    text-transform: uppercase;
  }

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

  #rk-loop-guide .rk-loop-author-social a {
    display: grid;
    width: 43px;
    height: 43px;
    place-items: center;
    color: #d7edf5;
    border: 1px solid #456879;
    border-radius: 50%;
  }

  #rk-loop-guide .rk-loop-author-social a:hover,
  #rk-loop-guide .rk-loop-author-social a:focus-visible {
    color: var(--rk-dark);
    background: var(--rk-cyan);
    border-color: var(--rk-cyan);
  }

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

  #rk-loop-guide .rk-loop-author-main {
    padding: 36px 40px 42px;
  }

  #rk-loop-guide .rk-loop-author-quote {
    position: relative;
    margin: 0 0 24px;
    padding: 25px 28px 25px 68px;
    background: var(--rk-white);
    border: 1px solid var(--rk-line);
    border-radius: 17px;
  }

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

  #rk-loop-guide .rk-loop-author-quote p {
    margin: 0;
    color: var(--rk-dark);
    font-size: 0.92rem;
    font-weight: 780;
  }

  #rk-loop-guide .rk-loop-author-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin-bottom: 19px;
  }

  #rk-loop-guide .rk-loop-author-tab {
    padding: 9px 15px;
    color: #69808b;
    background: #e6eff3;
    border-radius: 999px;
    cursor: pointer;
    font-size: 0.72rem;
    font-weight: 850;
  }

  #rk-loop-guide .rk-loop-author-panel {
    display: none;
    padding: 20px 22px;
    background: var(--rk-white);
    border: 1px solid var(--rk-line);
    border-radius: 15px;
  }

  #rk-loop-guide .rk-loop-author-panel p {
    font-size: 0.85rem;
  }

  #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-white);
    background: var(--rk-blue);
  }

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

  #rk-loop-guide .rk-loop-site-links a {
    padding: 7px 11px;
    background: var(--rk-soft);
    border-radius: 9px;
    font-size: 0.73rem;
    font-weight: 820;
    text-decoration: none;
  }

  #rk-loop-guide .rk-loop-final-cta {
    border-top: 1px solid rgba(161, 220, 233, 0.2);
  }

  @media (max-width: 960px) {
    #rk-loop-guide .rk-loop-input-grid,
    #rk-loop-guide .rk-loop-grid-3,
    #rk-loop-guide .rk-loop-grid-4,
    #rk-loop-guide .rk-loop-results,
    #rk-loop-guide .rk-loop-diagnostics {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

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

    #rk-loop-guide .rk-loop-route-item:not(:last-child)::after {
      display: none;
    }

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

  @media (max-width: 760px) {
    #rk-loop-guide {
      margin: 16px auto 48px;
      font-size: 16px;
    }

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

    #rk-loop-guide .rk-loop-hero,
    #rk-loop-guide .rk-loop-section {
      padding: 45px 24px;
    }

    #rk-loop-guide .rk-loop-tool-head {
      padding: 45px 24px 25px;
    }

    #rk-loop-guide .rk-loop-tool {
      padding: 0 16px 30px;
    }

    #rk-loop-guide .rk-loop-nav {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 8px;
      padding: 18px;
    }

    #rk-loop-guide .rk-loop-nav strong {
      grid-column: 1 / -1;
      margin: 0 0 2px;
    }

    #rk-loop-guide .rk-loop-nav a {
      justify-content: center;
      min-height: 44px;
      padding: 8px 10px;
      border-radius: 11px;
      text-align: center;
    }

    #rk-loop-guide .rk-loop-answer,
    #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-input-grid,
    #rk-loop-guide .rk-loop-results,
    #rk-loop-guide .rk-loop-diagnostics,
    #rk-loop-guide .rk-loop-errors,
    #rk-loop-guide .rk-loop-route,
    #rk-loop-guide .rk-loop-sequence,
    #rk-loop-guide .rk-loop-author-layout {
      grid-template-columns: 1fr;
    }

    #rk-loop-guide .rk-loop-fieldset {
      padding: 18px;
    }

    #rk-loop-guide .rk-loop-tool-panel {
      padding: 20px;
    }

    #rk-loop-guide .rk-loop-chart-wrap {
      padding: 10px;
    }

    #rk-loop-guide .rk-loop-chart {
      min-height: 300px;
    }

    #rk-loop-guide .rk-loop-cta,
    #rk-loop-guide .rk-loop-final-cta {
      padding: 40px 24px;
    }

    #rk-loop-guide .rk-loop-author-head {
      align-items: flex-start;
      flex-direction: column;
      padding: 34px 24px 23px;
    }

    #rk-loop-guide .rk-loop-author-side,
    #rk-loop-guide .rk-loop-author-main {
      padding: 32px 24px;
    }

    #rk-loop-guide .rk-loop-author-quote {
      padding: 58px 20px 22px;
    }

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

    #rk-loop-guide table,
    #rk-loop-guide thead,
    #rk-loop-guide tbody,
    #rk-loop-guide tr,
    #rk-loop-guide th,
    #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 table {
      background: transparent;
      border: 0;
      border-radius: 0;
    }

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

    #rk-loop-guide tbody tr,
    #rk-loop-guide .rk-loop-tool-table tbody tr {
      padding: 9px 15px;
      background: var(--rk-white);
      border: 1px solid var(--rk-line);
      border-radius: 15px;
    }

    #rk-loop-guide .rk-loop-tool-table tbody tr {
      background: rgba(255, 255, 255, 0.055);
      border-color: rgba(161, 218, 231, 0.22);
    }

    #rk-loop-guide td,
    #rk-loop-guide .rk-loop-tool-table td {
      display: grid;
      grid-template-columns: minmax(110px, 0.9fr) minmax(0, 1.1fr);
      gap: 12px;
      padding: 10px 0;
      border-top: 1px solid var(--rk-line);
    }

    #rk-loop-guide .rk-loop-tool-table td {
      border-color: rgba(161, 218, 231, 0.18);
    }

    #rk-loop-guide td:first-child {
      border-top: 0;
    }

    #rk-loop-guide td::before {
      color: var(--rk-dark);
      content: attr(data-label);
      font-size: 0.69rem;
      font-weight: 850;
      letter-spacing: 0.025em;
      line-height: 1.4;
      text-transform: uppercase;
    }

    #rk-loop-guide .rk-loop-tool-table td::before {
      color: #8ec2d2;
    }
  }

  @media (max-width: 500px) {
    #rk-loop-guide .rk-loop-nav {
      grid-template-columns: 1fr;
    }

    #rk-loop-guide .rk-loop-hero-title {
      font-size: 2.05rem;
    }

    #rk-loop-guide .rk-loop-meta {
      align-items: flex-start;
      flex-direction: column;
    }

    #rk-loop-guide .rk-loop-results,
    #rk-loop-guide .rk-loop-diagnostics {
      grid-template-columns: 1fr;
    }

    #rk-loop-guide .rk-loop-actions {
      flex-direction: column;
    }

    #rk-loop-guide .rk-loop-button,
    #rk-loop-guide .rk-loop-cta-button {
      width: 100%;
    }

    #rk-loop-guide .rk-loop-status {
      grid-template-columns: 1fr;
    }

    #rk-loop-guide .rk-loop-step {
      grid-template-columns: 1fr;
    }
  }

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

<article id="rk-loop-guide" aria-label="Maksymalna długość pętli ogrzewania podłogowego">
  <div class="rk-loop-shell">
    <header class="rk-loop-hero">
      <div class="rk-loop-hero-inner">
        <span class="rk-loop-eyebrow"><b aria-hidden="true"></b> Hydraulika pętli • aktualizacja 2026</span>
        <div class="rk-loop-hero-title">100 metrów to punkt kontrolny, a nie uniwersalna granica</div>
        <p class="rk-loop-hero-lead">Maksymalna długość pętli wynika z przepływu, średnicy wewnętrznej, właściwości medium, oporów armatury i dostępnego budżetu ciśnienia. Sprawdź konkretny obwód zamiast dobierać go z jednej tabeli.</p>
        <div class="rk-loop-meta">
          <span><i aria-hidden="true"></i> Model Darcy’ego-Weisbacha</span>
          <span><i aria-hidden="true"></i> Analizator hydrauliczny i wykres</span>
          <span><i aria-hidden="true"></i> Aktualizacja: 1 września 2026 r.</span>
        </div>
      </div>
    </header>

    <nav class="rk-loop-nav" aria-label="Nawigacja po wszystkich nagłówkach H2">
      <strong>Na skróty — wszystkie H2</strong>
      <a href="#rk-loop-answer">Szybka odpowiedź</a>
      <a href="#rk-loop-100m">Dlaczego nie zawsze 100 m</a>
      <a href="#rk-loop-total">Długość całkowita</a>
      <a href="#rk-loop-hydraulics">Przepływ i opory</a>
      <a href="#rk-loop-analyzer">Analizator</a>
      <a href="#rk-loop-parallel">Pętle równoległe</a>
      <a href="#rk-loop-diameters">Średnice rur</a>
      <a href="#rk-loop-balancing">Różne długości</a>
      <a href="#rk-loop-split">Podział na pętle</a>
      <a href="#rk-loop-diagnosis">Pętla 120–140 m</a>
      <a href="#rk-loop-errors">Błędy</a>
      <a href="#rk-loop-checklist">Checklista</a>
      <a href="#rk-loop-faq">FAQ</a>
      <a href="#rk-loop-sources">Źródła</a>
      <a href="#rk-loop-author">Autor</a>
    </nav>

    <main>
      <section class="rk-loop-section" id="rk-loop-answer">
        <span class="rk-loop-kicker">Odpowiedź w 60 sekund</span>
        <h2>Jaka jest maksymalna długość pętli ogrzewania podłogowego?</h2>
        <p class="rk-loop-intro">Nie istnieje jedna długość właściwa dla każdego obwodu. Dla popularnej rury 16 × 2 mm zakres około 80–100 m jest rozsądnym punktem wstępnej kontroli, ale poprawność pętli trzeba potwierdzić przy projektowym przepływie oraz rzeczywistym budżecie ciśnienia.</p>

        <div class="rk-loop-answer">
          <div class="rk-loop-answer-main">
            <h3>Najważniejsza zasada</h3>
            <p><strong>Maksymalna długość jest wynikiem obliczenia, a nie daną wejściową.</strong> Najpierw ustala się moc pętli i przepływ, następnie średnicę wewnętrzną, stratę ciśnienia oraz opory elementów wspólnych. Dopiero później ocenia się, czy pompa zapewni wymagany przepływ.</p>
          </div>
          <div class="rk-loop-answer-side">
            <h3>80–100 m dla 16 × 2</h3>
            <p>Traktuj ten zakres jako praktyczny alarm kontrolny. Nie oznacza on, że 99 m zawsze działa, a 101 m zawsze przestaje działać.</p>
          </div>
        </div>

        <div class="rk-loop-grid-3">
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Długość</span>
            <h3>Cały obwód od belki do belki</h3>
            <p>Wlicza się rurę w polu grzewczym, zasilający dobieg do pomieszczenia oraz powrót do rozdzielacza.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Przepływ</span>
            <h3>Wynika z mocy i ΔT</h3>
            <p>Ta sama rura przy 0,8 l/min stawia zdecydowanie mniejszy opór niż przy 2,5 l/min.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Ocena</span>
            <h3>Dotyczy całej drogi krytycznej</h3>
            <p>Do pętli dochodzą opory rozdzielacza, zaworów, magistrali, filtrów i pozostałych elementów obiegu.</p>
          </article>
        </div>

        <p>Jeżeli chcesz najpierw wyznaczyć ilość rury z powierzchni, rozstawu oraz dobiegów, skorzystaj z osobnego poradnika <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/">ile metrów podłogówki można zaplanować na jednej pętli</a>. Ten artykuł odpowiada na inne pytanie: czy wskazana długość jest hydraulicznie możliwa przy konkretnym przepływie.</p>
      </section>

      <section class="rk-loop-section" id="rk-loop-100m">
        <span class="rk-loop-kicker">Bez „magicznej” liczby</span>
        <h2>Dlaczego 100 m nie jest uniwersalną granicą pętli?</h2>
        <p class="rk-loop-intro">Opór nie wykonuje skoku pomiędzy 100 a 101 metrem. Rośnie wraz z długością, ale jego wartość zależy jednocześnie od przepływu, średnicy wewnętrznej, lepkości medium i oporów miejscowych.</p>

        <div class="rk-loop-grid-3">
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Przykład A</span>
            <h3>100 m przy małym przepływie</h3>
            <p>Obwód obsługujący niewielką moc może wymagać małego przepływu. Jego strata ciśnienia może mieścić się w przyjętym budżecie mimo długości wynoszącej 100 m.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Przykład B</span>
            <h3>80 m przy dużym przepływie</h3>
            <p>Krótsza pętla o dużej mocy i wysokim przepływie może stawiać większy opór niż dłuższy obwód pracujący przy spokojniejszych warunkach.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Przykład C</span>
            <h3>Ta sama średnica zewnętrzna</h3>
            <p>Rury 16 × 2 i 16 × 2,2 mm nie mają tej samej średnicy wewnętrznej. Nie wolno przypisywać im identycznej charakterystyki hydraulicznej.</p>
          </article>
        </div>

        <div class="rk-loop-note rk-loop-warning">
          <h3>Co wynika z norm?</h3>
          <p>Dokumenty z serii ISO 11855 i EN 1264 dotyczą określania wydajności, projektowania oraz wymiarowania wodnych systemów powierzchniowych. Nie będziemy przypisywać im uniwersalnej tabeli „16 mm = 100 m”, ponieważ jedna liczba nie zastępuje obliczenia konkretnego obwodu.</p>
        </div>

        <p>W praktyce projektowej długość kontrolna nadal jest przydatna. Pozwala szybko zauważyć obwód wymagający dokładniejszego sprawdzenia, ale nie może być jedynym kryterium akceptacji.</p>
      </section>

      <section class="rk-loop-section" id="rk-loop-total">
        <span class="rk-loop-kicker">Od zasilania do powrotu</span>
        <h2>Co wlicza się do całkowitej długości pętli?</h2>
        <p class="rk-loop-intro">Pętla zaczyna się na belce zasilającej rozdzielacza i kończy na belce powrotnej. Rura biegnąca przez korytarz nie znika z hydrauliki tylko dlatego, że nie ogrzewa docelowego pomieszczenia.</p>

        <div class="rk-loop-route" aria-label="Droga rury w pętli ogrzewania podłogowego">
          <div class="rk-loop-route-item"><b>Belka zasilająca</b><span>Początek analizowanego obwodu</span></div>
          <div class="rk-loop-route-item"><b>Dobieg zasilający</b><span>Droga od szafki do pola grzewczego</span></div>
          <div class="rk-loop-route-item"><b>Pole grzewcze</b><span>Rura ułożona w pomieszczeniu lub strefie</span></div>
          <div class="rk-loop-route-item"><b>Dobieg powrotny</b><span>Powrót z pola do szafki</span></div>
          <div class="rk-loop-route-item"><b>Belka powrotna</b><span>Koniec analizowanego obwodu</span></div>
        </div>

        <div class="rk-loop-formula">
          <strong>L całkowita = L pola + L dobiegu zasilającego + L dobiegu powrotnego</strong>
          <span>Jeżeli rozdzielacz znajduje się 8 m od początku pola, same dobiegi mogą zużyć około 16 m rury.</span>
        </div>

        <div class="rk-loop-grid-2">
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Geometria</span>
            <h3>Rozstaw nie wyznacza sam hydrauliki</h3>
            <p>Gęstszy rozstaw zwiększa ilość rury w polu i zwykle wymaga większej liczby obwodów. Najpierw trzeba jednak sprawdzić, czy wybrany rozstaw zapewni wymaganą moc cieplną. Zobacz porównanie <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstawu rur 10 i 15 cm</a>.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Lokalizacja szafki</span>
            <h3>Długie dobiegi zmieniają podział pętli</h3>
            <p>Położenie rozdzielacza nie musi być geometrycznie centralne za wszelką cenę, ale powinno zostać ocenione razem z przebiegiem rur, długościami obwodów, strefami tranzytowymi i możliwością regulacji.</p>
          </article>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-hydraulics">
        <span class="rk-loop-kicker">Właściwa kolejność obliczeń</span>
        <h2>Jak przepływ i średnica wyznaczają opór pętli?</h2>
        <p class="rk-loop-intro">Nie zaczynamy od wyboru maksymalnej liczby metrów. Zaczynamy od mocy, którą obwód ma przekazać, oraz od projektowej różnicy temperatury wody.</p>

        <div class="rk-loop-sequence">
          <article><b>1</b><strong>Moc pętli</strong><span>Wynika ze strat ciepła i udziału obwodu w ogrzewaniu strefy.</span></article>
          <article><b>2</b><strong>Przepływ</strong><span>Obliczany z mocy i przyjętego ΔT.</span></article>
          <article><b>3</b><strong>Prędkość</strong><span>Zależy od przepływu oraz średnicy wewnętrznej.</span></article>
          <article><b>4</b><strong>Spadek ciśnienia</strong><span>Rura i elementy miejscowe tworzą opór obwodu.</span></article>
          <article><b>5</b><strong>Weryfikacja</strong><span>Wynik porównujemy z dostępnym budżetem ciśnienia.</span></article>
        </div>

        <div class="rk-loop-formula">
          <strong>V̇ [l/min] ≈ Q [W] ÷ (69,8 × ΔT [K])</strong>
          <span>Orientacyjna zależność dla wody w typowych temperaturach ogrzewania podłogowego.</span>
        </div>

        <div class="rk-loop-formula">
          <strong>Δp = λ × (L ÷ dᵢ) × (ρv² ÷ 2) + ΣΔp miejscowe</strong>
          <span>Model Darcy’ego-Weisbacha łączy długość, średnicę wewnętrzną, prędkość, gęstość, współczynnik tarcia oraz dodatkowe opory.</span>
        </div>

        <div class="rk-loop-note">
          <h3>Budżet 20 kPa nie jest uniwersalną normą</h3>
          <p>Może być przyjętym celem projektowym dla pętli, ale analizator pozostawia tę wartość edytowalną. Ostateczna ocena wymaga charakterystyki pompy i uwzględnienia wszystkich elementów wspólnych instalacji.</p>
        </div>
      </section>

      <section class="rk-loop-tool-section" id="rk-loop-analyzer">
        <div class="rk-loop-tool-head">
          <span class="rk-loop-kicker">Narzędzie interaktywne</span>
          <h2>Analizator hydraulicznej długości pętli</h2>
          <p>Wpisz dane jednego kompletnego obwodu. Narzędzie obliczy przepływ, prędkość, spadek ciśnienia i długość odpowiadającą wprowadzonemu budżetowi. Wynik nie jest normowym limitem — dotyczy wyłącznie podanych założeń.</p>
        </div>

        <div class="rk-loop-tool" id="rk-loop-tool">
          <div class="rk-loop-tool-panel">
            <h3>Dane do analizy</h3>
            <p>Jeżeli znasz przepływ z projektu, wybierz tryb „Znany przepływ”. W przeciwnym razie analizator obliczy go z mocy pętli i ΔT.</p>

            <div class="rk-loop-input-grid">
              <fieldset class="rk-loop-fieldset">
                <legend>1. Moc i przepływ</legend>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Sposób określenia przepływu</span>
                  <span class="rk-loop-input-row">
                    <select id="rk-loop-mode">
                      <option value="power" selected>Z mocy pętli i ΔT</option>
                      <option value="flow">Znany przepływ z projektu</option>
                    </select>
                  </span>
                </label>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Projektowa moc pętli</span>
                  <span class="rk-loop-input-row">
                    <input id="rk-loop-power" type="number" min="50" max="4000" step="10" value="600" inputmode="decimal">
                    <span class="rk-loop-unit">W</span>
                  </span>
                  <small>Moc przypisana do jednego obwodu, nie do całego budynku.</small>
                </label>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Projektowa różnica temperatur ΔT</span>
                  <span class="rk-loop-input-row">
                    <input id="rk-loop-delta" type="number" min="1" max="20" step="0.1" value="5" inputmode="decimal">
                    <span class="rk-loop-unit">K</span>
                  </span>
                </label>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Znany przepływ pętli</span>
                  <span class="rk-loop-input-row">
                    <input id="rk-loop-known-flow" type="number" min="0.1" max="8" step="0.01" value="1.72" inputmode="decimal" disabled>
                    <span class="rk-loop-unit">l/min</span>
                  </span>
                  <small>Aktywny tylko w trybie przepływu z projektu.</small>
                </label>
              </fieldset>

              <fieldset class="rk-loop-fieldset">
                <legend>2. Rura i medium</legend>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Wymiar rury</span>
                  <span class="rk-loop-input-row">
                    <select id="rk-loop-pipe">
                      <option value="12" selected>16 × 2,0 mm — dᵢ 12,0 mm</option>
                      <option value="11.6">16 × 2,2 mm — dᵢ 11,6 mm</option>
                      <option value="13">17 × 2,0 mm — dᵢ 13,0 mm</option>
                      <option value="16">20 × 2,0 mm — dᵢ 16,0 mm</option>
                      <option value="custom">Własna średnica wewnętrzna</option>
                    </select>
                  </span>
                </label>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Własna średnica wewnętrzna</span>
                  <span class="rk-loop-input-row">
                    <input id="rk-loop-custom-id" type="number" min="6" max="30" step="0.1" value="12" inputmode="decimal" disabled>
                    <span class="rk-loop-unit">mm</span>
                  </span>
                  <small>Wpisz wartość z dokumentacji konkretnej rury.</small>
                </label>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Średnia temperatura wody</span>
                  <span class="rk-loop-input-row">
                    <input id="rk-loop-water-temp" type="number" min="10" max="60" step="1" value="30" inputmode="decimal">
                    <span class="rk-loop-unit">°C</span>
                  </span>
                  <small>Model interpoluje gęstość i lepkość wody w zakresie 10–60°C.</small>
                </label>
              </fieldset>

              <fieldset class="rk-loop-fieldset">
                <legend>3. Długość i budżet</legend>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Całkowita długość pętli</span>
                  <span class="rk-loop-input-row">
                    <input id="rk-loop-length" type="number" min="5" max="220" step="1" value="90" inputmode="decimal">
                    <span class="rk-loop-unit">m</span>
                  </span>
                  <small>Łącznie z dobiegami od rozdzielacza i do rozdzielacza.</small>
                </label>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Dodatkowe opory obwodu</span>
                  <span class="rk-loop-input-row">
                    <input id="rk-loop-extra" type="number" min="0" max="50" step="0.1" value="3" inputmode="decimal">
                    <span class="rk-loop-unit">kPa</span>
                  </span>
                  <small>Rozdzielacz, zawór, przyłącza i inne elementy przypisane do pętli.</small>
                </label>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Przyjęty budżet ciśnienia dla pętli</span>
                  <span class="rk-loop-input-row">
                    <input id="rk-loop-budget" type="number" min="1" max="100" step="0.5" value="20" inputmode="decimal">
                    <span class="rk-loop-unit">kPa</span>
                  </span>
                  <small>Edytowalne założenie projektowe, a nie limit normowy.</small>
                </label>
              </fieldset>
            </div>

            <div class="rk-loop-actions">
              <button class="rk-loop-button" id="rk-loop-calculate" type="button">Przelicz analizę</button>
              <button class="rk-loop-button rk-loop-button-secondary" id="rk-loop-reset" type="button">Przywróć przykład</button>
            </div>
          </div>

          <div class="rk-loop-tool-panel" aria-live="polite">
            <h3>Wynik dla wprowadzonych danych</h3>
            <p>Wartości dotyczą wody i gładkiej rury tworzywowej o referencyjnej chropowatości. Dla mieszaniny z glikolem należy użyć właściwości konkretnego medium.</p>

            <div class="rk-loop-results">
              <div class="rk-loop-result"><span>Przepływ pętli</span><strong id="rk-loop-result-flow">—</strong><small id="rk-loop-result-flow-hour">—</small></div>
              <div class="rk-loop-result"><span>Prędkość w rurze</span><strong id="rk-loop-result-velocity">—</strong><small>wartość kontrolna</small></div>
              <div class="rk-loop-result"><span>Gradient ciśnienia</span><strong id="rk-loop-result-gradient">—</strong><small>strata liniowa</small></div>
              <div class="rk-loop-result"><span>Strata na rurze</span><strong id="rk-loop-result-pipe-loss">—</strong><small>bez oporów dodatkowych</small></div>
              <div class="rk-loop-result"><span>Strata całej pętli</span><strong id="rk-loop-result-total-loss">—</strong><small>rura i wpisane dodatki</small></div>
              <div class="rk-loop-result"><span>Rezerwa budżetu</span><strong id="rk-loop-result-reserve">—</strong><small>wartość może być ujemna</small></div>
              <div class="rk-loop-result"><span>Długość z budżetu</span><strong id="rk-loop-result-max-length">—</strong><small>dla niezmienionego przepływu</small></div>
              <div class="rk-loop-result"><span>Liczba Reynoldsa</span><strong id="rk-loop-result-reynolds">—</strong><small id="rk-loop-result-regime">—</small></div>
            </div>

            <div class="rk-loop-status" id="rk-loop-status">
              <span class="rk-loop-status-icon" id="rk-loop-status-icon">✓</span>
              <div>
                <strong id="rk-loop-status-title">Trwa obliczanie</strong>
                <p id="rk-loop-status-copy">Wynik pojawi się po przeliczeniu danych.</p>
              </div>
            </div>

            <div class="rk-loop-diagnostics" id="rk-loop-diagnostics"></div>
          </div>

          <div class="rk-loop-tool-panel">
            <h3>Spadek ciśnienia a długość pętli</h3>
            <p>Krzywe porównują popularne średnice przy tym samym przepływie. Pozioma linia pokazuje wpisany budżet, a punkt — analizowaną długość i wybraną rurę.</p>
            <div class="rk-loop-chart-wrap">
              <svg class="rk-loop-chart" id="rk-loop-chart" viewBox="0 0 920 430" role="img" aria-label="Wykres spadku ciśnienia w zależności od długości pętli"></svg>
              <div class="rk-loop-chart-legend" aria-hidden="true">
                <span class="rk-loop-legend-item"><i class="rk-loop-legend-line" style="background:#078fbe"></i>16 × 2,0</span>
                <span class="rk-loop-legend-item"><i class="rk-loop-legend-line" style="background:#17846d"></i>17 × 2,0</span>
                <span class="rk-loop-legend-item"><i class="rk-loop-legend-line" style="background:#ff6f3d"></i>20 × 2,0</span>
                <span class="rk-loop-legend-item"><i class="rk-loop-legend-line" style="height:2px;background:#d94b3d"></i>budżet ciśnienia</span>
              </div>
              <p class="rk-loop-chart-note">Wykres nie pokazuje charakterystyki pompy ani oporów wspólnej magistrali. Te elementy trzeba dodać podczas oceny najbardziej wymagającej drogi przepływu.</p>
            </div>
          </div>

          <div class="rk-loop-tool-panel rk-loop-tool-table">
            <h3>Te same warunki, różne średnice</h3>
            <p>Porównanie zachowuje identyczny przepływ, długość, temperaturę wody, opory dodatkowe i budżet ciśnienia. Dzięki temu widać wpływ samej średnicy wewnętrznej.</p>
            <div class="rk-loop-table-wrap">
              <table>
                <thead>
                  <tr>
                    <th>Rura</th>
                    <th>Średnica wewnętrzna</th>
                    <th>Prędkość</th>
                    <th>Gradient</th>
                    <th>Strata całkowita</th>
                    <th>Długość z budżetu</th>
                  </tr>
                </thead>
                <tbody id="rk-loop-comparison-body"></tbody>
              </table>
            </div>
          </div>

          <p class="rk-loop-tool-disclaimer"><strong>Zakres modelu:</strong> wynik jest wstępną analizą referencyjną jednego obwodu. Nie sprawdza mocy powierzchni grzewczej, temperatury posadzki, charakterystyki pompy, oporów magistrali, filtrów, źródła ciepła ani zachowania zaworów przy częściowo zamkniętych pętlach. Nie zastępuje projektu i dokumentacji konkretnego systemu.</p>
        </div>
      </section>

      <aside class="rk-loop-cta" aria-label="Projekt z obliczoną hydrauliką pętli">
        <span class="rk-loop-kicker" style="color:#7ff1ff">Wynik jednej pętli to dopiero początek</span>
        <div class="rk-loop-cta-title" role="heading" aria-level="2">Analizator nie zna całej drogi krytycznej Twojej instalacji</div>
        <p>Narzędzie sprawdza jeden obwód dla wprowadzonych danych, ale nie zna przebiegu wszystkich pętli, oporów magistrali, rozdzielacza, zaworów, krzywej pompy ani wymaganych nastaw. Jeżeli chcesz otrzymać pętle naniesione na rzut wraz z długościami, przepływami, stratami ciśnienia i nastawami rozdzielacza, potrzebny jest indywidualny projekt.</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 obliczoną hydrauliką pętli</a>
        <small class="rk-loop-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
      </aside>

      <section class="rk-loop-section" id="rk-loop-parallel">
        <span class="rk-loop-kicker">Rozdzielacz i pompa</span>
        <h2>Jak pracują równoległe pętle i droga krytyczna?</h2>
        <p class="rk-loop-intro">Pętle podłączone do wspólnego rozdzielacza są gałęziami równoległymi. Nie dodajemy do siebie ich strat ciśnienia. Sumujemy natomiast przepływy obwodów pracujących jednocześnie.</p>

        <div class="rk-loop-grid-3">
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Ciśnienie</span>
            <h3>Każda pętla ma tę samą różnicę pomiędzy belkami</h3>
            <p>Przepływ w gałęzi wynika z jej oporu i położenia zaworu. Nie opisujemy tego jako „uciekania całego ciśnienia” do krótkiej pętli.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Przepływ całkowity</span>
            <h3>Pompa obsługuje sumę aktywnych obwodów</h3>
            <p>Jeżeli dziesięć pętli wymaga po 1,5 l/min, przepływ rozdzielacza wynosi łącznie około 15 l/min.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Wysokość podnoszenia</span>
            <h3>Liczy się najbardziej wymagająca droga</h3>
            <p>Do krytycznej pętli dodaje się opory wspólnej magistrali, źródła, filtrów, zaworów i rozdzielacza.</p>
          </article>
        </div>

        <p>Dobór całego urządzenia możesz prześledzić w osobnym <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulatorze pompy obiegowej do ogrzewania podłogowego</a>. Nie należy dobierać pompy wyłącznie do liczby sekcji rozdzielacza ani zwiększać jej biegu bez sprawdzenia punktu pracy.</p>
      </section>

      <section class="rk-loop-section" id="rk-loop-diameters">
        <span class="rk-loop-kicker">Liczy się światło przepływu</span>
        <h2>Rura 16 × 2, 16 × 2,2, 17 × 2 i 20 × 2 — co się zmienia?</h2>
        <p class="rk-loop-intro">Porównanie rur musi opierać się na rzeczywistej średnicy wewnętrznej oraz danych konkretnego wyrobu. Oznaczenie handlowe nie jest kompletną charakterystyką hydrauliczną.</p>

        <div class="rk-loop-table-wrap">
          <table>
            <thead>
              <tr>
                <th>Wymiar nominalny</th>
                <th>Średnica wewnętrzna z geometrii</th>
                <th>Znaczenie hydrauliczne</th>
                <th>Wniosek projektowy</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td data-label="Wymiar nominalny"><strong>16 × 2,0 mm</strong></td>
                <td data-label="Średnica wewnętrzna">około 12,0 mm</td>
                <td data-label="Znaczenie">Popularny punkt odniesienia dla pętli podłogowych.</td>
                <td data-label="Wniosek">Zakres 80–100 m może być kontrolą wstępną, ale wymaga obliczenia przepływu i oporów.</td>
              </tr>
              <tr>
                <td data-label="Wymiar nominalny"><strong>16 × 2,2 mm</strong></td>
                <td data-label="Średnica wewnętrzna">około 11,6 mm</td>
                <td data-label="Znaczenie">Mniejsze światło zwiększa prędkość i opór przy tym samym przepływie.</td>
                <td data-label="Wniosek">Nie wolno kopiować wyniku obliczonego dla rury 16 × 2,0 mm.</td>
              </tr>
              <tr>
                <td data-label="Wymiar nominalny"><strong>17 × 2,0 mm</strong></td>
                <td data-label="Średnica wewnętrzna">około 13,0 mm</td>
                <td data-label="Znaczenie">Większe światło może zmniejszyć spadek ciśnienia.</td>
                <td data-label="Wniosek">Nie oznacza automatycznego pozwolenia na konkretną długość bez pozostałych danych.</td>
              </tr>
              <tr>
                <td data-label="Wymiar nominalny"><strong>20 × 2,0 mm</strong></td>
                <td data-label="Średnica wewnętrzna">około 16,0 mm</td>
                <td data-label="Znaczenie">Znacznie mniejszy opór przy tym samym przepływie.</td>
                <td data-label="Wniosek">Trzeba równocześnie uwzględnić system podłogi, promień gięcia, wysokość konstrukcji i sposób wykonania.</td>
              </tr>
            </tbody>
          </table>
        </div>

        <div class="rk-loop-note rk-loop-warning">
          <h3>Wymiary geometryczne nie zastępują dokumentacji</h3>
          <p>Rzeczywista średnica, tolerancje, dopuszczalne promienie gięcia, temperatura i ciśnienie pracy muszą pochodzić z dokumentacji zastosowanej rury. W artykule nie linkujemy do producentów ani sklepów.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-balancing">
        <span class="rk-loop-kicker">Nie wyrównuj metrów na siłę</span>
        <h2>Czy pętle na jednym rozdzielaczu muszą mieć podobną długość?</h2>
        <p class="rk-loop-intro">Podobne długości mogą ułatwić regulację, ale nie istnieje uniwersalna zasada, że różnica musi zawsze mieścić się w 10, 15 albo 20%. Każdy obwód powinien otrzymać przepływ wynikający z przypisanej mu mocy i ΔT.</p>

        <div class="rk-loop-grid-2">
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Dobra praktyka</span>
            <h3>Projektuj pętle możliwe do wyregulowania</h3>
            <p>Trzeba sprawdzić wymagany przepływ, opór gałęzi, zakres rotametru lub zaworu oraz dostępne ciśnienie. Krótszą pętlę można zdławić do wartości projektowej, jeżeli armatura pozwala na stabilną regulację.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Zła praktyka</span>
            <h3>Nie dodawaj rury tylko dla równej liczby metrów</h3>
            <p>Niepotrzebne prowadzenie przewodu zwiększa materiał, pojemność i opór. Celem nie są identyczne długości, lecz poprawne przepływy i równomierna praca instalacji.</p>
          </article>
        </div>

        <p>Do regulacji służą przepływomierze i zawory. Zobacz, jak prawidłowo <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">odczytać i ustawić rotametr na rozdzielaczu</a>.</p>
      </section>

      <section class="rk-loop-section" id="rk-loop-split">
        <span class="rk-loop-kicker">Podział wynika z kilku kryteriów</span>
        <h2>Kiedy pomieszczenie trzeba podzielić na dwie lub więcej pętli?</h2>
        <p class="rk-loop-intro">O liczbie obwodów nie decyduje wyłącznie metraż. Podział powinien jednocześnie spełnić wymagania cieplne, geometryczne i hydrauliczne.</p>

        <div class="rk-loop-grid-3">
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Kryterium 1</span>
            <h3>Za duża ilość rury</h3>
            <p>Powierzchnia czynna i rozstaw prowadzą do długości, która przy wymaganym przepływie przekracza przyjęty budżet ciśnienia.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Kryterium 2</span>
            <h3>Za duża moc jednej pętli</h3>
            <p>Duża moc przy niewielkim ΔT wymaga przepływu powodującego wysoką prędkość albo stratę ciśnienia.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Kryterium 3</span>
            <h3>Geometria i dylatacje</h3>
            <p>Układ pomieszczenia, strefy bez rur, przejścia przez drzwi i pola jastrychu mogą wymagać osobnych obwodów niezależnie od samej hydrauliki.</p>
          </article>
        </div>

        <p>Dla dużej otwartej strefy warto przejść do praktycznego poradnika <a href="https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/">ile pętli podłogówki zaplanować w salonie</a>. Liczbę obwodów należy ustalić przed wykonaniem jastrychu, gdy można jeszcze bezpiecznie zmienić przebieg instalacji.</p>
      </section>

      <section class="rk-loop-section" id="rk-loop-diagnosis">
        <span class="rk-loop-kicker">Najpierw pomiar, później decyzja</span>
        <h2>Czy istniejąca pętla 120 albo 140 m może działać?</h2>
        <p class="rk-loop-intro">Sama długość nie pozwala wydać wiarygodnego wyroku. Długi obwód może mieć problem z osiągnięciem projektowego przepływu, ale diagnoza powinna zacząć się od danych, a nie od automatycznej wymiany pompy.</p>

        <div class="rk-loop-steps">
          <article class="rk-loop-step">
            <div><h3>Ustal rzeczywistą długość i średnicę wewnętrzną</h3><p>Sprawdź dokumentację powykonawczą, oznaczenie rury i przebieg dobiegów. Bez tych informacji obliczenie będzie tylko zgadywaniem.</p></div>
          </article>
          <article class="rk-loop-step">
            <div><h3>Sprawdź wymagany oraz rzeczywisty przepływ</h3><p>Odczytaj rotametr przy otwartej pętli, stabilnej pracy pompy i odpowietrzonej instalacji. Porównaj odczyt z wartością projektową.</p></div>
          </article>
          <article class="rk-loop-step">
            <div><h3>Zmierz temperaturę zasilania i powrotu</h3><p>ΔT pomaga ocenić, czy obwód przenosi zakładaną moc. Nie przypisuj długiej pętli z góry różnicy 10 K.</p></div>
          </article>
          <article class="rk-loop-step">
            <div><h3>Sprawdź zawory, siłownik, filtr i zapowietrzenie</h3><p>Brak przepływu może wynikać z zamknięcia, zanieczyszczenia, powietrza albo nieprawidłowej nastawy, a nie wyłącznie z długości rury.</p></div>
          </article>
          <article class="rk-loop-step">
            <div><h3>Porównaj punkt pracy pompy z drogą krytyczną</h3><p>Nie zwiększaj biegu w ciemno. Oceń wymagany przepływ całkowity, wysokość podnoszenia oraz zachowanie pozostałych obwodów.</p></div>
          </article>
        </div>

        <div class="rk-loop-note rk-loop-danger">
          <h3>Mocniejsza pompa nie jest automatycznym „ratunkiem”</h3>
          <p>Może zwiększyć dostępne ciśnienie, ale również zmienić przepływy wszystkich gałęzi, zwiększyć hałas i pobór energii. Jeżeli problemem jest zbyt mała powierzchnia grzewcza albo błędny rozstaw, sama pompa tego nie naprawi. Więcej objawów znajdziesz w opracowaniu o <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">za długiej pętli podłogówki</a>.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-errors">
        <span class="rk-loop-kicker">Bez skrótów projektowych</span>
        <h2>Najczęstsze błędy przy ustalaniu maksymalnej długości pętli</h2>

        <div class="rk-loop-errors">
          <article class="rk-loop-error"><b>Błąd 01</b><h3>„Norma pozwala na 100 m”</h3><p>Jedna długość nie zastępuje wyznaczenia przepływu, oporów i dostępnego ciśnienia.</p></article>
          <article class="rk-loop-error"><b>Błąd 02</b><h3>Pomijanie dobiegów</h3><p>Odcinki od rozdzielacza do pola i z powrotem należą do tej samej drogi przepływu.</p></article>
          <article class="rk-loop-error"><b>Błąd 03</b><h3>Dobór z samej średnicy zewnętrznej</h3><p>O hydraulice decyduje między innymi rzeczywista średnica wewnętrzna.</p></article>
          <article class="rk-loop-error"><b>Błąd 04</b><h3>Przypisywanie stałego ΔT do długości</h3><p>Różnica temperatur wynika z mocy oddawanej przez obwód i rzeczywistego przepływu.</p></article>
          <article class="rk-loop-error"><b>Błąd 05</b><h3>Sumowanie strat równoległych pętli</h3><p>Sumuje się przepływy gałęzi, natomiast ciśnienie sprawdza się na najbardziej wymagającej drodze.</p></article>
          <article class="rk-loop-error"><b>Błąd 06</b><h3>Jednakowy przepływ na wszystkich rotametrach</h3><p>Każda pętla może mieć inną moc i inną wartość projektową.</p></article>
          <article class="rk-loop-error"><b>Błąd 07</b><h3>Większa pompa bez obliczeń</h3><p>Zmiana urządzenia może zamaskować część problemów i rozregulować pozostałe obwody.</p></article>
          <article class="rk-loop-error"><b>Błąd 08</b><h3>Wyrównywanie długości zbędną rurą</h3><p>Nie projektujemy dodatkowych metrów wyłącznie po to, aby wszystkie obwody wyglądały podobnie w tabeli.</p></article>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-checklist">
        <span class="rk-loop-kicker">Przed ułożeniem rur</span>
        <h2>Checklista weryfikacji długości pętli</h2>
        <p class="rk-loop-intro">Poniższa kolejność ogranicza ryzyko, że długość zostanie wybrana z przyzwyczajenia zamiast z obliczeń.</p>

        <div class="rk-loop-steps">
          <article class="rk-loop-step"><div><h3>Oblicz stratę ciepła pomieszczenia</h3><p>Bez wymaganej mocy nie da się uczciwie wyznaczyć przepływu ani sprawdzić, czy powierzchnia podłogi wystarczy.</p></div></article>
          <article class="rk-loop-step"><div><h3>Wyznacz powierzchnię czynną i rozstaw rur</h3><p>Odejmij trwałą zabudowę oraz pola wyłączone z ogrzewania. Rozstaw sprawdź cieplnie.</p></div></article>
          <article class="rk-loop-step"><div><h3>Rozrysuj rzeczywisty przebieg wraz z dobiegami</h3><p>Uwzględnij przejścia przez drzwi, dylatacje, strefy brzegowe i drogę powrotną do rozdzielacza.</p></div></article>
          <article class="rk-loop-step"><div><h3>Przypisz moc i ΔT do każdego obwodu</h3><p>Na tej podstawie oblicz wymagany przepływ, zamiast ustawiać wszystkim pętlom jedną wartość.</p></div></article>
          <article class="rk-loop-step"><div><h3>Policz opór rury oraz elementów miejscowych</h3><p>Użyj średnicy wewnętrznej, właściwości medium, rzeczywistej długości i danych armatury.</p></div></article>
          <article class="rk-loop-step"><div><h3>Sprawdź drogę krytyczną i pompę</h3><p>Dodaj opory elementów wspólnych i porównaj wymagany punkt Q/H z charakterystyką urządzenia.</p></div></article>
          <article class="rk-loop-step"><div><h3>Przygotuj tabelę przepływów i nastaw</h3><p>Każda pętla powinna mieć numer, pomieszczenie, długość, moc, przepływ i wartość do ustawienia na rozdzielaczu.</p></div></article>
          <article class="rk-loop-step"><div><h3>Zweryfikuj układ przed jastrychem</h3><p>Po próbie szczelności porównaj wykonanie z projektem i nanieś zmiany do dokumentacji powykonawczej.</p></div></article>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-faq">
        <span class="rk-loop-kicker">Najczęstsze pytania</span>
        <h2>FAQ — maksymalna długość pętli podłogówki</h2>

        <div class="rk-loop-faq">
          <details>
            <summary>Ile maksymalnie metrów może mieć pętla z rury 16 × 2 mm?</summary>
            <div class="rk-loop-faq-answer"><p>Zakres około 80–100 m jest często stosowany jako praktyczny punkt kontroli, ale nie jest uniwersalnym limitem. Poprawność pętli zależy od wymaganego przepływu, średnicy wewnętrznej, temperatury i rodzaju medium, oporów armatury oraz dostępnego ciśnienia.</p></div>
          </details>
          <details>
            <summary>Czy pętla 120 m z rury 16 mm będzie grzać?</summary>
            <div class="rk-loop-faq-answer"><p>Może działać, ale sama długość nie wystarcza do oceny. Trzeba obliczyć wymagany przepływ, prędkość, spadek ciśnienia i sprawdzić całą drogę krytyczną wraz z pompą. Przy dużym przepływie taki obwód może być trudny do prawidłowej regulacji.</p></div>
          </details>
          <details>
            <summary>Co zrobić, jeśli wykonano już pętlę 140 m?</summary>
            <div class="rk-loop-faq-answer"><p>Najpierw należy ustalić rzeczywisty przepływ, temperaturę zasilania i powrotu, opór obwodu, ustawienie zaworów, odpowietrzenie oraz punkt pracy pompy. Większa pompa nie jest automatycznie właściwym rozwiązaniem. Sposób naprawy zależy od przyczyny i etapu wykonania podłogi.</p></div>
          </details>
          <details>
            <summary>Czy dobiegi wliczają się do długości pętli?</summary>
            <div class="rk-loop-faq-answer"><p>Tak. Do całkowitej długości wlicza się odcinek od belki zasilającej do pola grzewczego, rurę w polu oraz powrót do belki powrotnej. Każdy z tych odcinków powoduje stratę ciśnienia.</p></div>
          </details>
          <details>
            <summary>Czy norma PN-EN 1264 ustala 100 m dla rury 16 mm?</summary>
            <div class="rk-loop-faq-answer"><p>Nie należy przedstawiać 100 m jako uniwersalnego limitu normowego. Projektowanie wymaga uwzględnienia wydajności powierzchni, przepływu, temperatur, oporów hydraulicznych i warunków konkretnego systemu.</p></div>
          </details>
          <details>
            <summary>Czy wszystkie pętle powinny mieć jednakową długość?</summary>
            <div class="rk-loop-faq-answer"><p>Nie. Podobne długości mogą ułatwiać regulację, lecz każda pętla powinna otrzymać przepływ wynikający z jej mocy i ΔT. Możliwość regulacji zależy od oporów oraz zakresu zastosowanych zaworów i rotametrów.</p></div>
          </details>
          <details>
            <summary>Czy większa średnica pozwala zawsze ułożyć dłuższą pętlę?</summary>
            <div class="rk-loop-faq-answer"><p>Większa średnica wewnętrzna zmniejsza prędkość i zwykle ogranicza spadek ciśnienia przy tym samym przepływie. Nie wyznacza jednak samodzielnie dopuszczalnej długości. Trzeba uwzględnić cały system, konstrukcję podłogi i warunki wykonania.</p></div>
          </details>
          <details>
            <summary>Czy długa pętla zawsze ma zimny koniec?</summary>
            <div class="rk-loop-faq-answer"><p>Nie. Spadek temperatury wody zależy od mocy oddawanej przez obwód i rzeczywistego przepływu. Nadmierny opór może ograniczyć przepływ i zwiększyć ΔT, ale sama liczba metrów nie narzuca jednej temperatury końca.</p></div>
          </details>
          <details>
            <summary>Czy mocniejsza pompa rozwiąże problem za długiej pętli?</summary>
            <div class="rk-loop-faq-answer"><p>Tylko w niektórych przypadkach i po obliczeniu całego punktu pracy. Zwiększenie ciśnienia wpływa na wszystkie obwody, może zwiększyć hałas i nie naprawi niewystarczającej powierzchni grzewczej, błędnego rozstawu ani problemu z zaworem lub zapowietrzeniem.</p></div>
          </details>
          <details>
            <summary>Czy można połączyć rurę pod jastrychem, aby wydłużyć pętlę?</summary>
            <div class="rk-loop-faq-answer"><p>Pętle projektuje się jako ciągłe odcinki od rozdzielacza do rozdzielacza. Każde połączenie pod jastrychem musi być ocenione zgodnie z wymaganiami zastosowanego systemu i dokumentacją techniczną. Wydłużanie obwodu złączką nie rozwiązuje problemu hydraulicznego.</p></div>
          </details>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-sources">
        <span class="rk-loop-kicker">Dokumenty odniesienia</span>
        <h2>Źródła i zakres techniczny opracowania</h2>
        <p class="rk-loop-intro">Linki zewnętrzne prowadzą wyłącznie do oficjalnych organizacji normalizacyjnych. Artykuł nie odsyła do producentów, sklepów ani konkurencyjnych serwisów.</p>

        <div class="rk-loop-sources">
          <article class="rk-loop-source">
            <b>ISO 11855-3:2021</b>
            <p>Projektowanie i wymiarowanie wbudowanych systemów ogrzewania oraz chłodzenia płaszczyznowego.</p>
            <a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">Oficjalna karta standardu ISO 11855-3:2021</a>
          </article>
          <article class="rk-loop-source">
            <b>ISO 11855-2:2021</b>
            <p>Wyznaczanie projektowej wydajności grzewczej i chłodniczej systemów płaszczyznowych.</p>
            <a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">Oficjalna karta standardu ISO 11855-2:2021</a>
          </article>
          <article class="rk-loop-source">
            <b>BS EN 1264-3:2021</b>
            <p>Wymiarowanie wodnych systemów ogrzewania i chłodzenia wbudowanych w powierzchnie przegród.</p>
            <a href="https://knowledge.bsigroup.com/products/water-based-surface-embedded-heating-and-cooling-systems-dimensioning-1" target="_blank" rel="nofollow noopener noreferrer">Oficjalna karta BS EN 1264-3:2021</a>
          </article>
        </div>

        <div class="rk-loop-note">
          <h3>Zakres odpowiedzialności</h3>
          <p>Analizator jest modelem edukacyjnym. W projekcie wykonawczym należy użyć danych konkretnej rury, rozdzielacza, zaworów, medium i pompy oraz sprawdzić wymagania systemu, warunki budynku i rzeczywisty przebieg instalacji.</p>
        </div>

        <div class="rk-loop-update">Ostatnia aktualizacja merytoryczna: 1 września 2026 r.</div>
      </section>
    </main>

    <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>
          <span class="rk-loop-kicker">Autor opracowania</span>
          <h2>Robert Kucharski</h2>
          <p>Projektant instalacji sanitarnych • specjalista HVAC i ogrzewania podłogowego</p>
        </div>
        <span class="rk-loop-author-mark">HYDRAULIKA • 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 ogrzewania podłogowego" width="600" height="600" loading="lazy" decoding="async">
          </div>
          <div class="rk-loop-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
          <div class="rk-loop-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
          <div class="rk-loop-author-social-label">Profile autora</div>
          <div class="rk-loop-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="nofollow noopener noreferrer me" aria-label="Robert Kucharski na LinkedIn" title="LinkedIn">
              <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5.2 7.7H1.6V22h3.6V7.7ZM3.4 2A2.1 2.1 0 1 0 3.4 6.2 2.1 2.1 0 0 0 3.4 2ZM22.4 13.8c0-4.3-2.3-6.3-5.4-6.3a4.7 4.7 0 0 0-4.2 2.3V7.7H9.2V22h3.6v-7.1c0-1.9.4-3.7 2.7-3.7 2.3 0 2.3 2.1 2.3 3.8v7h3.6l1-8.2Z"></path></svg>
            </a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Projekt-Ogrzewania.pl na Facebooku" title="Facebook">
              <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M14.2 22v-9h3l.5-3.5h-3.5V7.3c0-1 .3-1.7 1.8-1.7h1.9V2.5c-.3 0-1.5-.1-2.8-.1-2.8 0-4.7 1.7-4.7 4.8v2.3H7.2V13h3.2v9h3.8Z"></path></svg>
            </a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Projekt HVAC w serwisie X" title="X">
              <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.9 2H22l-6.8 7.8L23.2 22H17l-4.9-6.4L6.5 22H3.3l7.3-8.4L2.8 2h6.4l4.4 5.8L18.9 2Zm-1.1 17.8h1.7L8.3 4.1H6.5l11.3 15.7Z"></path></svg>
            </a>
          </div>
        </aside>

        <div class="rk-loop-author-main">
          <blockquote class="rk-loop-author-quote">
            <p>„Długość pętli jest tylko jednym z parametrów. Dopiero połączenie mocy, przepływu, średnicy, oporów i dostępnego ciśnienia pozwala ocenić, czy obwód będzie pracował prawidłowo.”</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>Robert Kucharski opracowuje projekty wodnego ogrzewania podłogowego dla domów nowych i modernizowanych. Łączy obliczenia strat ciepła z doborem temperatury zasilania i powrotu, rozstawów rur, powierzchni czynnej, długości obwodów oraz przepływów.</p>
            <p>Materiały edukacyjne przygotowuje z perspektywy dokumentacji, którą musi później wykorzystać instalator na budowie. Dlatego w poradnikach oddziela założenia wstępne od parametrów wymagających obliczenia konkretnego układu.</p>
          </div>

          <div class="rk-loop-author-panel rk-loop-author-panel-exp">
            <p>W praktyce projektowej analizuje nie tylko pojedynczą pętlę, ale całą drogę krytyczną: magistralę, rozdzielacz, zawory, przepływy wszystkich równoległych obwodów, straty ciśnienia i wymagany punkt pracy pompy.</p>
            <p>Dokumentacja zawiera przebieg pętli naniesiony na rzut, długości, przypisane moce, przepływy, nastawy rozdzielacza oraz dane potrzebne do uruchomienia i późniejszej kontroli instalacji.</p>
          </div>

          <div class="rk-loop-author-panel rk-loop-author-panel-sites">
            <p>Robert Kucharski jest właścicielem trzech serwisów branżowych. Informacja o powiązaniu portali jest podawana jawnie, aby czytelnik znał autorstwo, doświadczenie i kontekst publikowanych materiałów.</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="nofollow noopener noreferrer">Remont.biz.pl</a>
              <a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a>
            </div>
          </div>
        </div>
      </div>
    </section>

    <section class="rk-loop-final-cta" aria-label="Końcowe zamówienie projektu ogrzewania podłogowego">
      <span class="rk-loop-kicker" style="color:#7ff1ff">Zamknij długości i przepływy przed wykonaniem jastrychu</span>
      <div class="rk-loop-cta-title" role="heading" aria-level="2">Otrzymaj projekt z każdą pętlą rozrysowaną i policzoną</div>
      <p>Projekt obejmuje straty ciepła, powierzchnie czynne, rozstawy rur, długości obwodów, przepływy, spadki ciśnienia, dobór rozdzielaczy i nastawy. Instalator otrzymuje konkretne wartości zamiast jednej ogólnej zasady „maksymalnie 100 m”.</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>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#article",
      "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/",
      "headline": "Maksymalna długość pętli ogrzewania podłogowego – od czego naprawdę zależy?",
      "description": "Techniczny poradnik i analizator długości pętli ogrzewania podłogowego uwzględniający przepływ, średnicę wewnętrzną, spadek ciśnienia i budżet hydrauliczny.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-09-01",
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#webpage"},
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "proficiencyLevel": "Expert",
      "about": [
        {"@type": "Thing", "name": "Maksymalna długość pętli ogrzewania podłogowego"},
        {"@type": "Thing", "name": "Opory hydrauliczne"},
        {"@type": "Thing", "name": "Spadek ciśnienia"},
        {"@type": "Thing", "name": "Równoważenie hydrauliczne"},
        {"@type": "Thing", "name": "Ogrzewanie podłogowe"}
      ],
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"}
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#webpage",
      "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/",
      "name": "Maksymalna długość pętli ogrzewania podłogowego",
      "description": "Jak sprawdzić maksymalną długość pętli podłogówki z przepływu, średnicy i spadku ciśnienia.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-09-01",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#breadcrumb"},
      "mainEntity": [
        {"@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#application"},
        {"@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#howto"},
        {"@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#faq"}
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-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": "Maksymalna długość pętli ogrzewania podłogowego", "item": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/"}
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#application",
      "name": "Analizator hydraulicznej długości pętli",
      "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#rk-loop-analyzer",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "Obsługa JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "description": "Narzędzie oblicza przepływ, prędkość, spadek ciśnienia oraz hydrauliczną długość pętli dla wprowadzonego budżetu ciśnienia."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#howto",
      "name": "Jak sprawdzić maksymalną długość pętli ogrzewania podłogowego?",
      "description": "Kolejność weryfikacji cieplnej, geometrycznej i hydraulicznej pętli przed wykonaniem jastrychu.",
      "inLanguage": "pl-PL",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Oblicz stratę ciepła pomieszczenia", "text": "Ustal wymaganą moc cieplną pomieszczenia i udział analizowanej pętli."},
        {"@type": "HowToStep", "position": 2, "name": "Wyznacz powierzchnię czynną i rozstaw rur", "text": "Odejmij trwałą zabudowę i sprawdź cieplnie wybrany rozstaw."},
        {"@type": "HowToStep", "position": 3, "name": "Rozrysuj przebieg wraz z dobiegami", "text": "Uwzględnij całą długość od belki zasilającej do belki powrotnej."},
        {"@type": "HowToStep", "position": 4, "name": "Przypisz moc i delta T", "text": "Oblicz wymagany przepływ każdego obwodu z jego mocy i projektowej różnicy temperatur."},
        {"@type": "HowToStep", "position": 5, "name": "Policz opory", "text": "Uwzględnij średnicę wewnętrzną, medium, długość oraz opory rozdzielacza i armatury."},
        {"@type": "HowToStep", "position": 6, "name": "Sprawdź drogę krytyczną i pompę", "text": "Dodaj elementy wspólne i porównaj wymagany punkt pracy z charakterystyką pompy."},
        {"@type": "HowToStep", "position": 7, "name": "Przygotuj tabelę przepływów", "text": "Zapisz dla każdej pętli długość, moc, przepływ i wymaganą nastawę rozdzielacza."},
        {"@type": "HowToStep", "position": 8, "name": "Zweryfikuj wykonanie przed jastrychem", "text": "Porównaj rzeczywisty przebieg z projektem i nanieś zmiany do dokumentacji powykonawczej."}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {"@type": "Question", "name": "Ile maksymalnie metrów może mieć pętla z rury 16 × 2 mm?", "acceptedAnswer": {"@type": "Answer", "text": "Zakres około 80–100 m jest często stosowany jako praktyczny punkt kontroli, ale nie jest uniwersalnym limitem. Poprawność pętli zależy od wymaganego przepływu, średnicy wewnętrznej, temperatury i rodzaju medium, oporów armatury oraz dostępnego ciśnienia."}},
        {"@type": "Question", "name": "Czy pętla 120 m z rury 16 mm będzie grzać?", "acceptedAnswer": {"@type": "Answer", "text": "Może działać, ale sama długość nie wystarcza do oceny. Trzeba obliczyć wymagany przepływ, prędkość, spadek ciśnienia i sprawdzić całą drogę krytyczną wraz z pompą."}},
        {"@type": "Question", "name": "Co zrobić, jeśli wykonano już pętlę 140 m?", "acceptedAnswer": {"@type": "Answer", "text": "Najpierw należy ustalić rzeczywisty przepływ, temperaturę zasilania i powrotu, opór obwodu, ustawienie zaworów, odpowietrzenie oraz punkt pracy pompy. Większa pompa nie jest automatycznie właściwym rozwiązaniem."}},
        {"@type": "Question", "name": "Czy dobiegi wliczają się do długości pętli?", "acceptedAnswer": {"@type": "Answer", "text": "Tak. Do całkowitej długości wlicza się odcinek od belki zasilającej do pola grzewczego, rurę w polu oraz powrót do belki powrotnej."}},
        {"@type": "Question", "name": "Czy norma PN-EN 1264 ustala 100 m dla rury 16 mm?", "acceptedAnswer": {"@type": "Answer", "text": "Nie należy przedstawiać 100 m jako uniwersalnego limitu normowego. Projektowanie wymaga uwzględnienia wydajności powierzchni, przepływu, temperatur, oporów hydraulicznych i warunków konkretnego systemu."}},
        {"@type": "Question", "name": "Czy wszystkie pętle powinny mieć jednakową długość?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Podobne długości mogą ułatwiać regulację, lecz każda pętla powinna otrzymać przepływ wynikający z jej mocy i delta T."}},
        {"@type": "Question", "name": "Czy większa średnica pozwala zawsze ułożyć dłuższą pętlę?", "acceptedAnswer": {"@type": "Answer", "text": "Większa średnica wewnętrzna zwykle ogranicza spadek ciśnienia przy tym samym przepływie, ale nie wyznacza samodzielnie dopuszczalnej długości."}},
        {"@type": "Question", "name": "Czy długa pętla zawsze ma zimny koniec?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Spadek temperatury wody zależy od mocy oddawanej przez obwód i rzeczywistego przepływu. Sama liczba metrów nie narzuca jednej temperatury końca."}},
        {"@type": "Question", "name": "Czy mocniejsza pompa rozwiąże problem za długiej pętli?", "acceptedAnswer": {"@type": "Answer", "text": "Tylko w niektórych przypadkach i po obliczeniu całego punktu pracy. Zwiększenie ciśnienia wpływa na wszystkie obwody i nie naprawi błędów cieplnych ani wykonawczych."}},
        {"@type": "Question", "name": "Czy można połączyć rurę pod jastrychem, aby wydłużyć pętlę?", "acceptedAnswer": {"@type": "Answer", "text": "Pętle projektuje się jako ciągłe odcinki od rozdzielacza do rozdzielacza. Każde połączenie pod jastrychem musi być ocenione zgodnie z wymaganiami zastosowanego systemu. Wydłużanie obwodu złączką nie rozwiązuje problemu hydraulicznego."}}
      ]
    },
    {
      "@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"},
      "affiliation": [
        {"@id": "https://projekt-ogrzewania.pl/#organization"},
        {"@id": "https://remont.biz.pl/#organization"},
        {"@id": "https://sobir.pl/#organization"}
      ],
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "hydraulika instalacji grzewczych",
        "obliczenia strat ciepła",
        "dobór pomp obiegowych",
        "równoważenie hydrauliczne",
        "projektowanie instalacji sanitarnych"
      ],
      "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-loop-guide");
  if (!root) {
    return;
  }

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

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

  function clamp(value, minimum, maximum) {
    if (value < minimum) {
      return minimum;
    }
    if (value > maximum) {
      return maximum;
    }
    return value;
  }

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

  function waterProperties(temperature) {
    var points = [
      {t: 10, rho: 999.7, mu: 0.001307},
      {t: 20, rho: 998.2, mu: 0.001002},
      {t: 30, rho: 995.7, mu: 0.000798},
      {t: 40, rho: 992.2, mu: 0.000653},
      {t: 50, rho: 988.1, mu: 0.000547},
      {t: 60, rho: 983.2, mu: 0.000466}
    ];
    var temp = clamp(temperature, 10, 60);
    var i;
    var low;
    var high;
    var fraction;

    for (i = 0; i < points.length - 1; i += 1) {
      low = points[i];
      high = points[i + 1];
      if (temp >= low.t) {
        if (temp <= high.t) {
          fraction = (temp - low.t) / (high.t - low.t);
          return {
            rho: low.rho + fraction * (high.rho - low.rho),
            mu: low.mu + fraction * (high.mu - low.mu)
          };
        }
      }
    }
    return {rho: points[5].rho, mu: points[5].mu};
  }

  function frictionFactor(reynolds, diameterM) {
    var roughnessM = 0.000007;
    var term;
    var logValue;
    if (reynolds <= 0) {
      return 0;
    }
    if (reynolds < 2300) {
      return 64 / reynolds;
    }
    term = roughnessM / (3.7 * diameterM) + 5.74 / Math.pow(reynolds, 0.9);
    logValue = Math.log(term) / Math.LN10;
    return 0.25 / Math.pow(logValue, 2);
  }

  function calculateHydraulics(flowLMin, diameterMm, lengthM, waterTemp, extraKpa, budgetKpa) {
    var props = waterProperties(waterTemp);
    var diameterM = diameterMm / 1000;
    var area = Math.PI * diameterM * diameterM / 4;
    var flowM3S = flowLMin / 60000;
    var velocity = flowM3S / area;
    var reynolds = props.rho * velocity * diameterM / props.mu;
    var factor = frictionFactor(reynolds, diameterM);
    var gradientPaM = factor / diameterM * props.rho * velocity * velocity / 2;
    var pipeLossKpa = gradientPaM * lengthM / 1000;
    var totalLossKpa = pipeLossKpa + extraKpa;
    var remainingKpa = budgetKpa - totalLossKpa;
    var availableForPipeKpa = budgetKpa - extraKpa;
    var maxLengthM = 0;

    if (availableForPipeKpa > 0) {
      if (gradientPaM > 0) {
        maxLengthM = availableForPipeKpa * 1000 / gradientPaM;
      }
    }

    return {
      rho: props.rho,
      mu: props.mu,
      diameterMm: diameterMm,
      velocity: velocity,
      reynolds: reynolds,
      factor: factor,
      gradientPaM: gradientPaM,
      pipeLossKpa: pipeLossKpa,
      totalLossKpa: totalLossKpa,
      remainingKpa: remainingKpa,
      maxLengthM: maxLengthM
    };
  }

  function getSelectedDiameter() {
    var pipe = byId("rk-loop-pipe");
    if (!pipe) {
      return 12;
    }
    if (pipe.value === "custom") {
      return clamp(readNumber("rk-loop-custom-id", 12), 6, 30);
    }
    return clamp(parseFloat(pipe.value), 6, 30);
  }

  function getFlow() {
    var mode = byId("rk-loop-mode").value;
    var power;
    var delta;
    if (mode === "flow") {
      return clamp(readNumber("rk-loop-known-flow", 1.72), 0.1, 8);
    }
    power = clamp(readNumber("rk-loop-power", 600), 50, 4000);
    delta = clamp(readNumber("rk-loop-delta", 5), 1, 20);
    return power / (69.78 * delta);
  }

  function updateFieldStates() {
    var mode = byId("rk-loop-mode").value;
    var custom = byId("rk-loop-pipe").value === "custom";
    byId("rk-loop-power").disabled = mode === "flow";
    byId("rk-loop-delta").disabled = mode === "flow";
    byId("rk-loop-known-flow").disabled = mode !== "flow";
    byId("rk-loop-custom-id").disabled = !custom;
  }

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

  function regimeLabel(reynolds) {
    if (reynolds < 2300) {
      return "przepływ laminarny";
    }
    if (reynolds < 4000) {
      return "obszar przejściowy";
    }
    return "przepływ turbulentny";
  }

  function setStatus(result, budgetKpa, lengthM) {
    var box = byId("rk-loop-status");
    var title = byId("rk-loop-status-title");
    var copy = byId("rk-loop-status-copy");
    var icon = byId("rk-loop-status-icon");
    var ratio = result.totalLossKpa / budgetKpa;

    box.className = "rk-loop-status";
    if (result.totalLossKpa <= budgetKpa) {
      if (ratio <= 0.85) {
        icon.textContent = "✓";
        title.textContent = "Pętla mieści się w przyjętym budżecie";
        copy.textContent = "Dla wpisanych danych całkowita strata jest niższa od założonego budżetu. To nie kończy doboru — trzeba jeszcze dodać elementy wspólne i sprawdzić punkt pracy pompy.";
      } else {
        box.className += " rk-loop-status-warning";
        icon.textContent = "!";
        title.textContent = "Wariant graniczny względem wpisanego budżetu";
        copy.textContent = "Obwód mieści się w założeniu, ale rezerwa jest mała. Zweryfikuj dane konkretnej rury, armatury, magistrali i pompy oraz rzeczywisty przebieg na rzucie.";
      }
    } else {
      box.className += " rk-loop-status-danger";
      icon.textContent = "×";
      title.textContent = "Pętla przekracza przyjęty budżet ciśnienia";
      copy.textContent = "Przy niezmienionym przepływie, średnicy i oporach dodatkowych długość " + formatNumber(lengthM, 0) + " m wymaga większej różnicy ciśnienia niż wpisano. Sprawdź podział obwodu i całą drogę krytyczną.";
    }
  }

  function diagnosticCard(title, copy) {
    var card = document.createElement("div");
    var heading = document.createElement("b");
    var text = document.createTextNode(copy);
    card.className = "rk-loop-diagnostic";
    heading.textContent = title;
    card.appendChild(heading);
    card.appendChild(text);
    return card;
  }

  function renderDiagnostics(result, budgetKpa, extraKpa, diameterMm, flowLMin) {
    var container = byId("rk-loop-diagnostics");
    var velocityCopy;
    var budgetCopy;
    var diameterCopy;

    while (container.firstChild) {
      container.removeChild(container.firstChild);
    }

    if (result.velocity < 0.15) {
      velocityCopy = "Prędkość jest niższa niż orientacyjny zakres kontrolny 0,15–0,60 m/s. Nie jest to automatyczny błąd, ale wymaga oceny odpowietrzania, regulacji i rzeczywistych warunków pracy.";
    } else {
      if (result.velocity > 0.60) {
        velocityCopy = "Prędkość przekracza orientacyjny poziom kontrolny 0,60 m/s. Sprawdź hałas, opory i możliwość podziału mocy na więcej obwodów.";
      } else {
        velocityCopy = "Prędkość mieści się w orientacyjnym zakresie kontrolnym 0,15–0,60 m/s. Nadal trzeba ocenić cały układ i dane zastosowanej armatury.";
      }
    }

    if (extraKpa >= budgetKpa) {
      budgetCopy = "Same wpisane opory dodatkowe wykorzystują cały budżet lub go przekraczają. Długość rury nie może wtedy otrzymać dodatniej rezerwy w tym modelu.";
    } else {
      budgetCopy = "Po odjęciu oporów dodatkowych na samą rurę pozostaje " + formatNumber(budgetKpa - extraKpa, 1) + " kPa.";
    }

    diameterCopy = "Dla średnicy wewnętrznej " + formatNumber(diameterMm, 1) + " mm i przepływu " + formatNumber(flowLMin, 2) + " l/min analizator obliczył gradient " + formatNumber(result.gradientPaM, 0) + " Pa/m.";

    container.appendChild(diagnosticCard("Prędkość przepływu", velocityCopy));
    container.appendChild(diagnosticCard("Podział budżetu", budgetCopy));
    container.appendChild(diagnosticCard("Warunki porównania", diameterCopy));
  }

  function renderComparison(flowLMin, lengthM, waterTemp, extraKpa, budgetKpa) {
    var tbody = byId("rk-loop-comparison-body");
    var pipes = [
      {name: "16 × 2,0", diameter: 12},
      {name: "16 × 2,2", diameter: 11.6},
      {name: "17 × 2,0", diameter: 13},
      {name: "20 × 2,0", diameter: 16}
    ];
    var i;
    var result;
    var row;
    var values;
    var labels = ["Rura", "Średnica wewnętrzna", "Prędkość", "Gradient", "Strata całkowita", "Długość z budżetu"];
    var j;
    var cell;

    while (tbody.firstChild) {
      tbody.removeChild(tbody.firstChild);
    }

    for (i = 0; i < pipes.length; i += 1) {
      result = calculateHydraulics(flowLMin, pipes[i].diameter, lengthM, waterTemp, extraKpa, budgetKpa);
      values = [
        pipes[i].name + " mm",
        formatNumber(pipes[i].diameter, 1) + " mm",
        formatNumber(result.velocity, 2) + " m/s",
        formatNumber(result.gradientPaM, 0) + " Pa/m",
        formatNumber(result.totalLossKpa, 1) + " kPa",
        result.maxLengthM > 0 ? formatNumber(result.maxLengthM, 0) + " m" : "brak rezerwy"
      ];
      row = document.createElement("tr");
      for (j = 0; j < values.length; j += 1) {
        cell = document.createElement("td");
        cell.setAttribute("data-label", labels[j]);
        cell.textContent = values[j];
        row.appendChild(cell);
      }
      tbody.appendChild(row);
    }
  }

  function svgText(x, y, value, options) {
    var anchor = options.anchor || "middle";
    var size = options.size || 12;
    var fill = options.fill || "#58717d";
    var weight = options.weight || 650;
    var rotate = options.rotate || 0;
    var transform = "";
    if (rotate !== 0) {
      transform = ' transform="rotate(' + rotate + " " + x + " " + y + ')"';
    }
    return '<text x="' + x + '" y="' + y + '" text-anchor="' + anchor + '" font-size="' + size + '" font-weight="' + weight + '" fill="' + fill + '"' + transform + ">" + value + "</text>";
  }

  function renderChart(flowLMin, selectedDiameter, lengthM, waterTemp, extraKpa, budgetKpa, selectedResult) {
    var svg = byId("rk-loop-chart");
    var width = 920;
    var height = 430;
    var left = 78;
    var right = 25;
    var top = 24;
    var bottom = 62;
    var plotWidth = width - left - right;
    var plotHeight = height - top - bottom;
    var xMax = 160;
    var maxCandidate = selectedResult.maxLengthM;
    var curves = [
      {name: "16 × 2,0", diameter: 12, color: "#078fbe"},
      {name: "17 × 2,0", diameter: 13, color: "#17846d"},
      {name: "20 × 2,0", diameter: 16, color: "#ff6f3d"}
    ];
    var i;
    var x;
    var result;
    var maxLoss = budgetKpa;
    var yMax;
    var parts = [];
    var gridCountY = 5;
    var gridCountX = 8;
    var gx;
    var gy;
    var tickValue;
    var path;
    var step;
    var px;
    var py;
    var selectedX;
    var selectedY;
    var budgetY;

    if (lengthM * 1.25 > xMax) {
      xMax = Math.ceil(lengthM * 1.25 / 20) * 20;
    }
    if (maxCandidate > xMax) {
      if (maxCandidate < 220) {
        xMax = Math.ceil(maxCandidate / 20) * 20;
      }
    }
    xMax = clamp(xMax, 120, 220);

    for (i = 0; i < curves.length; i += 1) {
      result = calculateHydraulics(flowLMin, curves[i].diameter, xMax, waterTemp, extraKpa, budgetKpa);
      if (result.totalLossKpa > maxLoss) {
        maxLoss = result.totalLossKpa;
      }
    }
    if (selectedResult.totalLossKpa > maxLoss) {
      maxLoss = selectedResult.totalLossKpa;
    }
    yMax = Math.ceil(maxLoss * 1.14 / 10) * 10;
    if (yMax < 20) {
      yMax = 20;
    }

    parts.push('<rect x="0" y="0" width="' + width + '" height="' + height + '" rx="12" fill="#ffffff"></rect>');

    for (i = 0; i <= gridCountY; i += 1) {
      gy = top + plotHeight - i * plotHeight / gridCountY;
      tickValue = i * yMax / gridCountY;
      parts.push('<line x1="' + left + '" y1="' + gy + '" x2="' + (width - right) + '" y2="' + gy + '" stroke="#dce8ed" stroke-width="1"></line>');
      parts.push(svgText(left - 12, gy + 4, formatNumber(tickValue, 0), {anchor: "end", size: 11}));
    }

    for (i = 0; i <= gridCountX; i += 1) {
      gx = left + i * plotWidth / gridCountX;
      tickValue = i * xMax / gridCountX;
      parts.push('<line x1="' + gx + '" y1="' + top + '" x2="' + gx + '" y2="' + (height - bottom) + '" stroke="#e5eef2" stroke-width="1"></line>');
      parts.push(svgText(gx, height - bottom + 23, formatNumber(tickValue, 0), {size: 11}));
    }

    parts.push('<line x1="' + left + '" y1="' + (height - bottom) + '" x2="' + (width - right) + '" y2="' + (height - bottom) + '" stroke="#78909b" stroke-width="1.4"></line>');
    parts.push('<line x1="' + left + '" y1="' + top + '" x2="' + left + '" y2="' + (height - bottom) + '" stroke="#78909b" stroke-width="1.4"></line>');

    budgetY = top + plotHeight - budgetKpa / yMax * plotHeight;
    if (budgetY >= top) {
      if (budgetY <= height - bottom) {
        parts.push('<line x1="' + left + '" y1="' + budgetY + '" x2="' + (width - right) + '" y2="' + budgetY + '" stroke="#d94b3d" stroke-width="2.2" stroke-dasharray="8 7"></line>');
        parts.push(svgText(width - right - 4, budgetY - 8, "budżet " + formatNumber(budgetKpa, 1) + " kPa", {anchor: "end", size: 11, fill: "#c13d31", weight: 800}));
      }
    }

    for (i = 0; i < curves.length; i += 1) {
      path = "";
      for (step = 0; step <= 48; step += 1) {
        x = step * xMax / 48;
        result = calculateHydraulics(flowLMin, curves[i].diameter, x, waterTemp, extraKpa, budgetKpa);
        px = left + x / xMax * plotWidth;
        py = top + plotHeight - result.totalLossKpa / yMax * plotHeight;
        if (step === 0) {
          path += "M " + px.toFixed(2) + " " + py.toFixed(2);
        } else {
          path += " L " + px.toFixed(2) + " " + py.toFixed(2);
        }
      }
      parts.push('<path d="' + path + '" fill="none" stroke="' + curves[i].color + '" stroke-width="3.3" stroke-linecap="round"></path>');
    }

    selectedX = left + clamp(lengthM, 0, xMax) / xMax * plotWidth;
    selectedY = top + plotHeight - clamp(selectedResult.totalLossKpa, 0, yMax) / yMax * plotHeight;
    parts.push('<line x1="' + selectedX + '" y1="' + top + '" x2="' + selectedX + '" y2="' + (height - bottom) + '" stroke="#695ac9" stroke-width="1.8" stroke-dasharray="5 6"></line>');
    parts.push('<circle cx="' + selectedX + '" cy="' + selectedY + '" r="7" fill="#695ac9" stroke="#ffffff" stroke-width="3"></circle>');
    parts.push(svgText(selectedX, Math.max(top + 14, selectedY - 13), formatNumber(lengthM, 0) + " m • " + formatNumber(selectedResult.totalLossKpa, 1) + " kPa", {size: 11, fill: "#5447aa", weight: 850}));

    parts.push(svgText(left + plotWidth / 2, height - 13, "całkowita długość pętli [m]", {size: 12, fill: "#3e5966", weight: 800}));
    parts.push(svgText(20, top + plotHeight / 2, "całkowity spadek ciśnienia [kPa]", {size: 12, fill: "#3e5966", weight: 800, rotate: -90}));

    svg.innerHTML = parts.join("");
    svg.setAttribute("aria-label", "Wykres spadku ciśnienia. Wybrana średnica wewnętrzna " + formatNumber(selectedDiameter, 1) + " mm, długość " + formatNumber(lengthM, 0) + " m, wynik " + formatNumber(selectedResult.totalLossKpa, 1) + " kPa.");
  }

  function calculate() {
    var flowLMin = getFlow();
    var diameterMm = getSelectedDiameter();
    var lengthM = clamp(readNumber("rk-loop-length", 90), 5, 220);
    var waterTemp = clamp(readNumber("rk-loop-water-temp", 30), 10, 60);
    var extraKpa = clamp(readNumber("rk-loop-extra", 3), 0, 50);
    var budgetKpa = clamp(readNumber("rk-loop-budget", 20), 1, 100);
    var result = calculateHydraulics(flowLMin, diameterMm, lengthM, waterTemp, extraKpa, budgetKpa);
    var reservePrefix = result.remainingKpa >= 0 ? "+" : "";

    setText("rk-loop-result-flow", formatNumber(flowLMin, 2) + " l/min");
    setText("rk-loop-result-flow-hour", formatNumber(flowLMin * 60, 0) + " l/h");
    setText("rk-loop-result-velocity", formatNumber(result.velocity, 2) + " m/s");
    setText("rk-loop-result-gradient", formatNumber(result.gradientPaM, 0) + " Pa/m");
    setText("rk-loop-result-pipe-loss", formatNumber(result.pipeLossKpa, 1) + " kPa");
    setText("rk-loop-result-total-loss", formatNumber(result.totalLossKpa, 1) + " kPa");
    setText("rk-loop-result-reserve", reservePrefix + formatNumber(result.remainingKpa, 1) + " kPa");
    setText("rk-loop-result-max-length", result.maxLengthM > 0 ? formatNumber(result.maxLengthM, 0) + " m" : "brak");
    setText("rk-loop-result-reynolds", formatNumber(result.reynolds, 0));
    setText("rk-loop-result-regime", regimeLabel(result.reynolds));

    setStatus(result, budgetKpa, lengthM);
    renderDiagnostics(result, budgetKpa, extraKpa, diameterMm, flowLMin);
    renderComparison(flowLMin, lengthM, waterTemp, extraKpa, budgetKpa);
    renderChart(flowLMin, diameterMm, lengthM, waterTemp, extraKpa, budgetKpa, result);
  }

  function resetExample() {
    byId("rk-loop-mode").value = "power";
    byId("rk-loop-power").value = "600";
    byId("rk-loop-delta").value = "5";
    byId("rk-loop-known-flow").value = "1.72";
    byId("rk-loop-pipe").value = "12";
    byId("rk-loop-custom-id").value = "12";
    byId("rk-loop-water-temp").value = "30";
    byId("rk-loop-length").value = "90";
    byId("rk-loop-extra").value = "3";
    byId("rk-loop-budget").value = "20";
    updateFieldStates();
    calculate();
  }

  var interactiveInputs = root.querySelectorAll("#rk-loop-tool input, #rk-loop-tool select");
  var i;
  for (i = 0; i < interactiveInputs.length; i += 1) {
    interactiveInputs[i].addEventListener("input", function () {
      updateFieldStates();
      calculate();
    });
    interactiveInputs[i].addEventListener("change", function () {
      updateFieldStates();
      calculate();
    });
  }

  byId("rk-loop-calculate").addEventListener("click", calculate);
  byId("rk-loop-reset").addEventListener("click", resetExample);

  var faqItems = root.querySelectorAll(".rk-loop-faq details");
  for (i = 0; i < faqItems.length; i += 1) {
    faqItems[i].addEventListener("toggle", function () {
      var current = this;
      var j;
      if (!current.open) {
        return;
      }
      for (j = 0; j < faqItems.length; j += 1) {
        if (faqItems[j] !== current) {
          faqItems[j].open = false;
        }
      }
    });
  }

  updateFieldStates();
  calculate();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">Maksymalna długość pętli 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/maksymalna-dlugosc-petli-ogrzewania-podlogowego/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
