<?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 remonty - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/tag/remonty/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/tag/remonty/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Mon, 14 Sep 2026 20:49:18 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.3</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa remonty - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/remonty/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Kalkulator do obliczania ilości metrów rury potrzebnych do ogrzewania podłogowego.</title>
		<link>https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/</link>
					<comments>https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Fri, 14 Mar 2025 11:52:06 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Materiały budowlane]]></category>
		<category><![CDATA[Narzędzia i kalkulatory]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Optymalizacja kosztów]]></category>
		<category><![CDATA[Poradniki budowlane]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Systemy grzewcze]]></category>
		<category><![CDATA[budowa domu]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[kalkulator rury]]></category>
		<category><![CDATA[materiały budowlane]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[poradniki]]></category>
		<category><![CDATA[projekt ogrzewania]]></category>
		<category><![CDATA[remonty]]></category>
		<category><![CDATA[systemy grzewcze]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2407</guid>

					<description><![CDATA[<p>Planujesz montaż ogrzewania podłogowego i zastanawiasz się, ile metrów rury będzie potrzebnych? Kalkulator do obliczania ilości metrów rury do ogrzewania podłogowego to narzędzie, które pomoże Ci precyzyjnie oszacować potrzebne materiały. Dzięki niemu unikniesz błędów, które mogą wpłynąć na efektywność systemu. W artykule znajdziesz praktyczne przykłady obliczeń, wskazówki dotyczące stref grzewczych oraz informacje, dlaczego warto zlecić projekt profesjonalistom. Sprawdź, jak zaoszczędzić czas i pieniądze!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/">Kalkulator do obliczania ilości metrów rury potrzebnych do ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-pipe-calc {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-blue: #078fbe;
    --rk-cyan: #28c9da;
    --rk-cyan-soft: #eafcff;
    --rk-orange: #ff7438;
    --rk-red: #e34837;
    --rk-green: #148369;
    --rk-green-soft: #eaf8f4;
    --rk-yellow: #f1b83d;
    --rk-yellow-soft: #fff9e8;
    --rk-ink: #1f2937;
    --rk-text: #465866;
    --rk-muted: #687986;
    --rk-line: #dce8ee;
    --rk-soft: #f5f9fb;
    --rk-warm: #fff4ed;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 70px;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.76;
  }

  #rk-pipe-calc,
  #rk-pipe-calc * {
    box-sizing: border-box;
  }

  #rk-pipe-calc img,
  #rk-pipe-calc svg {
    max-width: 100%;
  }

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

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

  #rk-pipe-calc a:hover,
  #rk-pipe-calc a:focus-visible {
    color: var(--rk-red);
  }

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

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

  #rk-pipe-calc h3 {
    margin-bottom: 12px;
    font-size: clamp(1.16rem, 2.5vw, 1.52rem);
  }

  #rk-pipe-calc h4 {
    margin-bottom: 8px;
    font-size: 1.04rem;
    letter-spacing: -0.018em;
  }

  #rk-pipe-calc h2::before,
  #rk-pipe-calc h2::after,
  #rk-pipe-calc h3::before,
  #rk-pipe-calc h3::after,
  #rk-pipe-calc h4::before,
  #rk-pipe-calc h4::after {
    content: none !important;
    display: none !important;
  }

  #rk-pipe-calc p {
    margin: 0 0 1.18em;
    color: var(--rk-text);
  }

  #rk-pipe-calc strong {
    color: var(--rk-dark);
  }

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

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

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

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

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

  #rk-pipe-calc .rk-pipe-hero::before {
    content: "";
    position: absolute;
    z-index: -1;
    right: -115px;
    bottom: -178px;
    width: 410px;
    height: 410px;
    border: 58px solid rgba(255, 255, 255, 0.055);
    border-radius: 50%;
    pointer-events: none;
  }

  #rk-pipe-calc .rk-pipe-hero-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.18fr) minmax(260px, 0.82fr);
    gap: clamp(28px, 5vw, 62px);
    align-items: center;
  }

  #rk-pipe-calc .rk-pipe-eyebrow {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 23px;
    padding: 8px 15px;
    border: 1px solid rgba(255, 255, 255, 0.25);
    border-radius: 999px;
    color: #9ef5ff;
    background: rgba(255, 255, 255, 0.06);
    font-size: 0.76rem;
    font-weight: 900;
    letter-spacing: 0.105em;
    line-height: 1.25;
    text-transform: uppercase;
  }

  #rk-pipe-calc .rk-pipe-eyebrow b {
    display: inline-block;
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 7px rgba(255, 116, 56, 0.17);
  }

  #rk-pipe-calc .rk-pipe-hero-title {
    max-width: 800px;
    margin: 0 0 24px;
    color: var(--rk-white);
    font-size: clamp(2.05rem, 5vw, 4rem);
    font-weight: 950;
    letter-spacing: -0.055em;
    line-height: 1.02;
  }

  #rk-pipe-calc .rk-pipe-hero-lead {
    max-width: 790px;
    margin-bottom: 26px;
    color: #dcecf4;
    font-size: clamp(1.02rem, 2.1vw, 1.24rem);
    line-height: 1.62;
  }

  #rk-pipe-calc .rk-pipe-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 11px 22px;
    color: #c8d9e3;
    font-size: 0.82rem;
    font-weight: 780;
  }

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

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

  #rk-pipe-calc .rk-pipe-hero-formula {
    padding: 28px;
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 24px;
    background: rgba(255, 255, 255, 0.08);
    box-shadow: 0 18px 45px rgba(0, 0, 0, 0.12);
    backdrop-filter: blur(7px);
  }

  #rk-pipe-calc .rk-pipe-hero-formula small {
    display: block;
    margin-bottom: 13px;
    color: #89effa;
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    text-transform: uppercase;
  }

  #rk-pipe-calc .rk-pipe-hero-formula code {
    display: block;
    color: var(--rk-white);
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: clamp(1.05rem, 2.5vw, 1.45rem);
    font-weight: 850;
    line-height: 1.5;
    white-space: normal;
  }

  #rk-pipe-calc .rk-pipe-hero-formula p {
    margin: 16px 0 0;
    color: #d0e3ec;
    font-size: 0.82rem;
    line-height: 1.6;
  }

  #rk-pipe-calc .rk-pipe-nav {
    display: flex;
    gap: 9px;
    overflow-x: auto;
    padding: 15px clamp(20px, 5vw, 56px);
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
    scrollbar-width: thin;
  }

  #rk-pipe-calc .rk-pipe-nav a {
    flex: 0 0 auto;
    padding: 8px 13px;
    border: 1px solid var(--rk-line);
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-soft);
    font-size: 0.74rem;
    font-weight: 880;
    text-decoration: none;
    white-space: nowrap;
  }

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

  #rk-pipe-calc .rk-pipe-body {
    padding: clamp(28px, 6vw, 70px);
  }

  #rk-pipe-calc .rk-pipe-section {
    margin-bottom: clamp(55px, 8vw, 94px);
  }

  #rk-pipe-calc .rk-pipe-section:last-child {
    margin-bottom: 0;
  }

  #rk-pipe-calc .rk-pipe-kicker {
    display: block;
    margin-bottom: 9px;
    color: var(--rk-orange);
    font-size: 0.73rem;
    font-weight: 930;
    letter-spacing: 0.095em;
    line-height: 1.4;
    text-transform: uppercase;
  }

  #rk-pipe-calc .rk-pipe-lead {
    max-width: 930px;
    font-size: 1.08rem;
    line-height: 1.82;
  }

  #rk-pipe-calc .rk-pipe-dropcap::first-letter {
    float: left;
    margin: 0.08em 0.12em 0 0;
    color: var(--rk-orange);
    font-size: 3.65rem;
    font-weight: 950;
    line-height: 0.82;
  }

  #rk-pipe-calc .rk-pipe-summary-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 16px;
    margin-top: 28px;
  }

  #rk-pipe-calc .rk-pipe-summary-card {
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-soft);
  }

  #rk-pipe-calc .rk-pipe-summary-card b {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 42px;
    height: 42px;
    margin-bottom: 13px;
    border-radius: 13px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: 0.8rem;
  }

  #rk-pipe-calc .rk-pipe-summary-card h3 {
    font-size: 1.12rem;
  }

  #rk-pipe-calc .rk-pipe-summary-card p {
    margin-bottom: 0;
    font-size: 0.88rem;
    line-height: 1.65;
  }

  #rk-pipe-calc .rk-pipe-correction {
    display: grid;
    grid-template-columns: minmax(0, 0.8fr) minmax(0, 1.2fr);
    gap: 0;
    overflow: hidden;
    border: 1px solid #f0c7b6;
    border-radius: 25px;
    background: var(--rk-white);
  }

  #rk-pipe-calc .rk-pipe-correction-copy {
    padding: clamp(25px, 4vw, 42px);
    background: var(--rk-warm);
  }

  #rk-pipe-calc .rk-pipe-correction-copy p:last-child {
    margin-bottom: 0;
  }

  #rk-pipe-calc .rk-pipe-correction-math {
    display: grid;
    gap: 15px;
    align-content: center;
    padding: clamp(25px, 4vw, 42px);
  }

  #rk-pipe-calc .rk-pipe-equation {
    padding: 18px 20px;
    border-left: 5px solid var(--rk-blue);
    border-radius: 8px 15px 15px 8px;
    background: var(--rk-soft);
  }

  #rk-pipe-calc .rk-pipe-equation.is-wrong {
    border-left-color: var(--rk-red);
    background: #fff1ef;
  }

  #rk-pipe-calc .rk-pipe-equation small {
    display: block;
    margin-bottom: 6px;
    color: var(--rk-muted);
    font-size: 0.7rem;
    font-weight: 900;
    letter-spacing: 0.07em;
    text-transform: uppercase;
  }

  #rk-pipe-calc .rk-pipe-equation code {
    color: var(--rk-dark);
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.96rem;
    font-weight: 850;
    white-space: normal;
  }

  #rk-pipe-calc .rk-pipe-calculator {
    overflow: hidden;
    border: 1px solid #b9dce7;
    border-radius: 28px;
    background: var(--rk-white);
    box-shadow: 0 24px 62px rgba(16, 37, 54, 0.12);
  }

  #rk-pipe-calc .rk-pipe-calculator-head {
    padding: clamp(30px, 5vw, 54px);
    color: var(--rk-white);
    background:
      radial-gradient(circle at 90% 5%, rgba(255, 116, 56, 0.34), transparent 28%),
      linear-gradient(125deg, var(--rk-dark), #174b63);
  }

  #rk-pipe-calc .rk-pipe-calculator-head h2 {
    max-width: 860px;
    margin-bottom: 13px;
    color: var(--rk-white);
  }

  #rk-pipe-calc .rk-pipe-calculator-head p {
    max-width: 880px;
    margin-bottom: 0;
    color: #d7e9f1;
  }

  #rk-pipe-calc .rk-pipe-calculator-layout {
    display: grid;
    grid-template-columns: minmax(320px, 0.86fr) minmax(0, 1.14fr);
  }

  #rk-pipe-calc .rk-pipe-controls {
    padding: clamp(25px, 4vw, 40px);
    border-right: 1px solid var(--rk-line);
    background: var(--rk-soft);
  }

  #rk-pipe-calc .rk-pipe-control {
    margin-bottom: 21px;
  }

  #rk-pipe-calc .rk-pipe-control:last-child {
    margin-bottom: 0;
  }

  #rk-pipe-calc .rk-pipe-control label {
    display: block;
    margin-bottom: 8px;
    color: var(--rk-dark);
    font-size: 0.82rem;
    font-weight: 880;
    line-height: 1.45;
  }

  #rk-pipe-calc .rk-pipe-control small {
    display: block;
    margin-top: 6px;
    color: var(--rk-muted);
    font-size: 0.7rem;
    line-height: 1.5;
  }

  #rk-pipe-calc .rk-pipe-control input,
  #rk-pipe-calc .rk-pipe-control select {
    display: block;
    width: 100%;
    min-height: 49px;
    padding: 9px 12px;
    border: 1px solid #bfd4de;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-weight: 780;
    outline: none;
  }

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

  #rk-pipe-calc .rk-pipe-results {
    min-width: 0;
    padding: clamp(25px, 4vw, 40px);
  }

  #rk-pipe-calc .rk-pipe-result-primary {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
    margin-bottom: 18px;
  }

  #rk-pipe-calc .rk-pipe-result-card {
    min-width: 0;
    padding: 18px;
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    background: var(--rk-soft);
  }

  #rk-pipe-calc .rk-pipe-result-card.is-main {
    color: var(--rk-white);
    border-color: var(--rk-blue);
    background: linear-gradient(135deg, var(--rk-blue), #0a718f);
  }

  #rk-pipe-calc .rk-pipe-result-card small {
    display: block;
    margin-bottom: 6px;
    color: var(--rk-muted);
    font-size: 0.68rem;
    font-weight: 880;
    letter-spacing: 0.045em;
    line-height: 1.4;
    text-transform: uppercase;
  }

  #rk-pipe-calc .rk-pipe-result-card.is-main small {
    color: #caf6ff;
  }

  #rk-pipe-calc .rk-pipe-result-number {
    overflow-wrap: anywhere;
    color: var(--rk-dark);
    font-size: clamp(1.42rem, 3vw, 2.1rem);
    font-weight: 950;
    letter-spacing: -0.04em;
    line-height: 1.1;
  }

  #rk-pipe-calc .rk-pipe-result-card.is-main .rk-pipe-result-number {
    color: var(--rk-white);
  }

  #rk-pipe-calc .rk-pipe-result-secondary {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
  }

  #rk-pipe-calc .rk-pipe-result-note {
    margin-top: 18px;
    padding: 16px 18px;
    border-left: 5px solid var(--rk-cyan);
    border-radius: 8px 14px 14px 8px;
    background: var(--rk-cyan-soft);
    color: var(--rk-dark);
    font-size: 0.82rem;
    font-weight: 730;
    line-height: 1.6;
  }

  #rk-pipe-calc .rk-pipe-result-note.is-warning {
    border-left-color: var(--rk-orange);
    background: var(--rk-warm);
  }

  #rk-pipe-calc .rk-pipe-chart {
    margin-top: 24px;
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 19px;
    background: var(--rk-white);
  }

  #rk-pipe-calc .rk-pipe-chart h3 {
    margin-bottom: 5px;
    font-size: 1.14rem;
  }

  #rk-pipe-calc .rk-pipe-chart-intro {
    margin-bottom: 18px;
    font-size: 0.76rem;
  }

  #rk-pipe-calc .rk-pipe-bar-row {
    display: grid;
    grid-template-columns: 58px minmax(0, 1fr) 88px;
    gap: 11px;
    align-items: center;
    margin: 10px 0;
  }

  #rk-pipe-calc .rk-pipe-bar-label,
  #rk-pipe-calc .rk-pipe-bar-value {
    color: var(--rk-dark);
    font-size: 0.72rem;
    font-weight: 900;
  }

  #rk-pipe-calc .rk-pipe-bar-value {
    text-align: right;
  }

  #rk-pipe-calc .rk-pipe-bar-track {
    height: 14px;
    overflow: hidden;
    border-radius: 999px;
    background: #e8f0f4;
  }

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

  #rk-pipe-calc .rk-pipe-bar-row.is-selected .rk-pipe-bar {
    background: linear-gradient(90deg, var(--rk-orange), var(--rk-red));
  }

  #rk-pipe-calc .rk-pipe-bar-row.is-selected .rk-pipe-bar-label,
  #rk-pipe-calc .rk-pipe-bar-row.is-selected .rk-pipe-bar-value {
    color: var(--rk-red);
  }

  #rk-pipe-calc .rk-pipe-inline-cta {
    padding: clamp(26px, 4vw, 42px);
    border-top: 1px solid rgba(255, 255, 255, 0.14);
    color: var(--rk-white);
    background: var(--rk-dark);
  }

  #rk-pipe-calc .rk-pipe-inline-cta h3 {
    margin-bottom: 9px;
    color: var(--rk-white);
  }

  #rk-pipe-calc .rk-pipe-inline-cta p {
    color: #d7e8ef;
  }

  #rk-pipe-calc .rk-pipe-cta-button {
    display: flex;
    width: 100%;
    min-height: 62px;
    align-items: center;
    justify-content: center;
    margin-top: 21px;
    padding: 15px 22px;
    border-radius: 16px;
    color: var(--rk-white);
    background: linear-gradient(90deg, var(--rk-orange), var(--rk-red));
    box-shadow: 0 16px 36px rgba(227, 72, 55, 0.28);
    font-weight: 950;
    line-height: 1.35;
    text-align: center;
    text-decoration: none;
  }

  #rk-pipe-calc .rk-pipe-cta-button:hover,
  #rk-pipe-calc .rk-pipe-cta-button:focus-visible {
    color: var(--rk-white);
    background: linear-gradient(90deg, var(--rk-red), var(--rk-orange));
    transform: translateY(-1px);
  }

  #rk-pipe-calc .rk-pipe-disclosure {
    display: block;
    margin-top: 11px;
    color: #bcd1dc;
    font-size: 0.69rem;
    line-height: 1.5;
    text-align: center;
  }

  #rk-pipe-calc .rk-pipe-grid-2,
  #rk-pipe-calc .rk-pipe-grid-3 {
    display: grid;
    gap: 17px;
  }

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

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

  #rk-pipe-calc .rk-pipe-card {
    min-width: 0;
    padding: 24px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-white);
  }

  #rk-pipe-calc .rk-pipe-card-number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 48px;
    height: 48px;
    margin-bottom: 16px;
    padding: 0 12px;
    border-radius: 14px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: 0.8rem;
    font-weight: 930;
  }

  #rk-pipe-calc .rk-pipe-card p:last-child {
    margin-bottom: 0;
  }

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

  #rk-pipe-calc .rk-pipe-formula {
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 19px;
    background: var(--rk-soft);
  }

  #rk-pipe-calc .rk-pipe-formula span {
    display: block;
    margin-bottom: 8px;
    color: var(--rk-orange);
    font-size: 0.7rem;
    font-weight: 930;
    letter-spacing: 0.07em;
    text-transform: uppercase;
  }

  #rk-pipe-calc .rk-pipe-formula code {
    display: block;
    margin-bottom: 9px;
    color: var(--rk-dark);
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: 0.91rem;
    font-weight: 850;
    line-height: 1.55;
    white-space: normal;
  }

  #rk-pipe-calc .rk-pipe-formula p {
    margin-bottom: 0;
    font-size: 0.79rem;
    line-height: 1.62;
  }

  #rk-pipe-calc .rk-pipe-table-wrap {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
  }

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

  #rk-pipe-calc th,
  #rk-pipe-calc td {
    padding: 15px 17px;
    border: 0;
    border-bottom: 1px solid var(--rk-line);
    color: var(--rk-text);
    text-align: left;
    vertical-align: top;
  }

  #rk-pipe-calc th {
    color: var(--rk-white);
    background: var(--rk-dark);
    font-size: 0.74rem;
    font-weight: 900;
    line-height: 1.4;
  }

  #rk-pipe-calc td {
    font-size: 0.84rem;
    line-height: 1.55;
  }

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

  #rk-pipe-calc tbody tr:last-child td {
    border-bottom: 0;
  }

  #rk-pipe-calc .rk-pipe-note,
  #rk-pipe-calc .rk-pipe-warning,
  #rk-pipe-calc .rk-pipe-success {
    margin-top: 22px;
    padding: 20px 22px;
    border-left: 6px solid var(--rk-blue);
    border-radius: 9px 17px 17px 9px;
    background: var(--rk-cyan-soft);
  }

  #rk-pipe-calc .rk-pipe-warning {
    border-left-color: var(--rk-orange);
    background: var(--rk-warm);
  }

  #rk-pipe-calc .rk-pipe-success {
    border-left-color: var(--rk-green);
    background: var(--rk-green-soft);
  }

  #rk-pipe-calc .rk-pipe-note p:last-child,
  #rk-pipe-calc .rk-pipe-warning p:last-child,
  #rk-pipe-calc .rk-pipe-success p:last-child {
    margin-bottom: 0;
  }

  #rk-pipe-calc .rk-pipe-example-grid {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 12px;
    margin-top: 24px;
  }

  #rk-pipe-calc .rk-pipe-example {
    padding: 19px 15px;
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    background: var(--rk-soft);
    text-align: center;
  }

  #rk-pipe-calc .rk-pipe-example strong {
    display: block;
    color: var(--rk-blue);
    font-size: 1.45rem;
    font-weight: 950;
    letter-spacing: -0.04em;
  }

  #rk-pipe-calc .rk-pipe-example b {
    display: block;
    margin: 5px 0;
    color: var(--rk-dark);
    font-size: 0.78rem;
  }

  #rk-pipe-calc .rk-pipe-example small {
    display: block;
    color: var(--rk-muted);
    font-size: 0.66rem;
    line-height: 1.45;
  }

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

  #rk-pipe-calc .rk-pipe-checklist li {
    position: relative;
    margin: 0;
    padding: 17px 18px 17px 52px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    color: var(--rk-text);
    background: var(--rk-soft);
    font-size: 0.84rem;
    line-height: 1.6;
  }

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

  #rk-pipe-calc .rk-pipe-faq {
    display: grid;
    gap: 12px;
  }

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

  #rk-pipe-calc .rk-pipe-faq summary {
    position: relative;
    padding: 18px 52px 18px 20px;
    color: var(--rk-dark);
    background: var(--rk-soft);
    font-weight: 880;
    line-height: 1.45;
    cursor: pointer;
    list-style: none;
  }

  #rk-pipe-calc .rk-pipe-faq summary::-webkit-details-marker {
    display: none;
  }

  #rk-pipe-calc .rk-pipe-faq summary::after {
    content: "+";
    position: absolute;
    top: 50%;
    right: 20px;
    color: var(--rk-blue);
    font-size: 1.35rem;
    font-weight: 900;
    transform: translateY(-50%);
  }

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

  #rk-pipe-calc .rk-pipe-faq-answer {
    padding: 18px 20px;
  }

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

  #rk-pipe-calc .rk-pipe-sources {
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-soft);
    font-size: 0.76rem;
    line-height: 1.65;
  }

  #rk-pipe-calc .rk-pipe-sources strong {
    display: block;
    margin-bottom: 7px;
  }

  #rk-pipe-calc .rk-pipe-author {
    overflow: hidden;
    margin-bottom: clamp(55px, 8vw, 90px);
    border: 1px solid #bdd9e5;
    border-radius: 27px;
    background: var(--rk-white);
    box-shadow: 0 22px 50px rgba(16, 37, 54, 0.09);
  }

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

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

  #rk-pipe-calc .rk-pipe-author-head h2 {
    margin-bottom: 7px;
    color: var(--rk-white);
  }

  #rk-pipe-calc .rk-pipe-author-head p {
    margin-bottom: 0;
    color: #d5e7ef;
  }

  #rk-pipe-calc .rk-pipe-author-mark {
    flex: 0 0 auto;
    padding: 10px 15px;
    border: 1px solid rgba(40, 201, 218, 0.38);
    border-radius: 15px;
    color: #6aefff;
    font-size: 0.75rem;
    font-weight: 950;
    letter-spacing: 0.08em;
    white-space: nowrap;
  }

  #rk-pipe-calc .rk-pipe-author-layout {
    display: grid;
    grid-template-columns: 330px minmax(0, 1fr);
  }

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

  #rk-pipe-calc .rk-pipe-author-photo {
    width: 184px;
    height: 184px;
    margin: 0 auto 21px;
    overflow: hidden;
    border: 8px solid var(--rk-white);
    border-radius: 50%;
    box-shadow: 0 14px 34px rgba(16, 37, 54, 0.15);
  }

  #rk-pipe-calc .rk-pipe-author-photo img {
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

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

  #rk-pipe-calc .rk-pipe-author-role {
    margin-top: 6px;
    color: var(--rk-blue);
    font-size: 0.73rem;
    font-weight: 900;
    letter-spacing: 0.06em;
    line-height: 1.55;
    text-transform: uppercase;
  }

  #rk-pipe-calc .rk-pipe-author-main {
    min-width: 0;
    padding: 34px 38px 38px;
  }

  #rk-pipe-calc .rk-pipe-author-quote {
    margin: 0 0 26px;
    padding: 23px 25px 23px 72px;
    border: 0;
    border-radius: 19px;
    background: var(--rk-cyan-soft);
  }

  #rk-pipe-calc .rk-pipe-author-quote::before {
    content: "“";
    position: absolute;
    margin: -15px 0 0 -49px;
    color: var(--rk-cyan);
    font-size: 3.7rem;
    font-weight: 950;
    line-height: 1;
  }

  #rk-pipe-calc .rk-pipe-author-quote p {
    margin-bottom: 0;
    color: var(--rk-dark);
    font-style: italic;
    font-weight: 820;
  }

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

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

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

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

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

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

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

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

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

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

  #rk-pipe-calc .rk-pipe-final-cta {
    overflow: hidden;
    border-radius: 27px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 92% 15%, rgba(255, 116, 56, 0.38), transparent 28%),
      linear-gradient(125deg, var(--rk-dark), #15465e);
  }

  #rk-pipe-calc .rk-pipe-final-cta-content {
    padding: clamp(30px, 5vw, 53px);
  }

  #rk-pipe-calc .rk-pipe-final-cta h2 {
    max-width: 900px;
    margin-bottom: 13px;
    color: var(--rk-white);
  }

  #rk-pipe-calc .rk-pipe-final-cta p {
    max-width: 900px;
    color: #d8e9f1;
  }

  @media (max-width: 980px) {
    #rk-pipe-calc .rk-pipe-hero-grid,
    #rk-pipe-calc .rk-pipe-calculator-layout,
    #rk-pipe-calc .rk-pipe-correction,
    #rk-pipe-calc .rk-pipe-author-layout {
      grid-template-columns: 1fr;
    }

    #rk-pipe-calc .rk-pipe-controls,
    #rk-pipe-calc .rk-pipe-author-side {
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
    }

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

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

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

    #rk-pipe-calc .rk-pipe-shell {
      border-radius: 20px;
    }

    #rk-pipe-calc .rk-pipe-hero,
    #rk-pipe-calc .rk-pipe-body {
      padding: 27px 19px;
    }

    #rk-pipe-calc .rk-pipe-result-secondary,
    #rk-pipe-calc .rk-pipe-summary-grid,
    #rk-pipe-calc .rk-pipe-grid-2,
    #rk-pipe-calc .rk-pipe-grid-3,
    #rk-pipe-calc .rk-pipe-formulas,
    #rk-pipe-calc .rk-pipe-checklist,
    #rk-pipe-calc .rk-pipe-example-grid {
      grid-template-columns: 1fr;
    }

    #rk-pipe-calc .rk-pipe-result-primary {
      grid-template-columns: 1fr 1fr;
    }

    #rk-pipe-calc .rk-pipe-bar-row {
      grid-template-columns: 50px minmax(0, 1fr) 75px;
      gap: 8px;
    }

    #rk-pipe-calc .rk-pipe-author-head {
      display: block;
    }

    #rk-pipe-calc .rk-pipe-author-mark {
      display: inline-block;
      margin-top: 16px;
    }

    #rk-pipe-calc .rk-pipe-author-main {
      padding: 25px 18px 28px;
    }

    #rk-pipe-calc .rk-pipe-author-quote {
      padding: 22px;
    }

    #rk-pipe-calc .rk-pipe-author-quote::before {
      display: none;
    }

    #rk-pipe-calc .rk-pipe-author-tabs {
      grid-template-columns: 1fr;
      border-radius: 14px 14px 0 0;
    }

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

    #rk-pipe-calc .rk-pipe-table-wrap {
      overflow: visible;
      border: 0;
      border-radius: 0;
    }

    #rk-pipe-calc table,
    #rk-pipe-calc thead,
    #rk-pipe-calc tbody,
    #rk-pipe-calc tr,
    #rk-pipe-calc th,
    #rk-pipe-calc td {
      display: block;
      width: 100%;
    }

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

    #rk-pipe-calc tbody tr {
      margin-bottom: 14px;
      overflow: hidden;
      border: 1px solid var(--rk-line);
      border-radius: 15px;
      background: var(--rk-white);
    }

    #rk-pipe-calc td,
    #rk-pipe-calc tbody tr:nth-child(even) td {
      display: grid;
      grid-template-columns: minmax(115px, 0.75fr) minmax(0, 1.25fr);
      gap: 12px;
      padding: 12px 14px;
      background: var(--rk-white);
    }

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

  @media (max-width: 430px) {
    #rk-pipe-calc .rk-pipe-result-primary {
      grid-template-columns: 1fr;
    }

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

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

<article id="rk-pipe-calc" data-rk-pipe-version="2026-08-26" aria-label="Kalkulator długości rury do ogrzewania podłogowego">
  <div class="rk-pipe-shell">
    <div class="rk-pipe-progress-track" aria-hidden="true"><div class="rk-pipe-progress"></div></div>

    <header class="rk-pipe-hero">
      <div class="rk-pipe-hero-grid">
        <div>
          <span class="rk-pipe-eyebrow"><b aria-hidden="true"></b> Kalkulator techniczny • aktualizacja 2026</span>
          <div class="rk-pipe-hero-title" role="heading" aria-level="2">Kalkulator długości rury do ogrzewania podłogowego</div>
          <p class="rk-pipe-hero-lead">Oblicz orientacyjną ilość rury na powierzchni, długość podejść do rozdzielacza, liczbę pętli i zapas zakupowy. Wynik pokazuje materiał — nie zastępuje obliczeń cieplnych ani hydraulicznych.</p>
          <div class="rk-pipe-meta">
            <span><i aria-hidden="true"></i> Autor: Robert Kucharski</span>
            <span><i aria-hidden="true"></i> Aktualizacja: 26 sierpnia 2026 r.</span>
            <span><i aria-hidden="true"></i> Czas czytania: ok. 15 minut</span>
          </div>
        </div>
        <aside class="rk-pipe-hero-formula" aria-label="Podstawowa zasada obliczenia">
          <small>Najważniejsza zasada</small>
          <code>L<sub>pow.</sub> ≈ A<sub>czynna</sub> ÷ s</code>
          <p>Rozstaw <strong style="color:#fff">s</strong> należy podać w metrach. Podejścia od rozdzielacza do pól grzewczych dolicza się osobno — nie przez mnożenie całego wyniku razy dwa.</p>
        </aside>
      </div>
    </header>

    <nav class="rk-pipe-nav" aria-label="Spis treści artykułu">
      <a href="#rk-pipe-answer">Szybka odpowiedź</a>
      <a href="#rk-pipe-tool">Kalkulator</a>
      <a href="#rk-pipe-formulas">Wzory</a>
      <a href="#rk-pipe-spacing">Rozstaw rur</a>
      <a href="#rk-pipe-loops">Pętle i podejścia</a>
      <a href="#rk-pipe-examples">Przykłady</a>
      <a href="#rk-pipe-errors">Błędy</a>
      <a href="#rk-pipe-faq">FAQ</a>
      <a href="#rk-pipe-author">Autor</a>
    </nav>

    <div class="rk-pipe-body">
      <section class="rk-pipe-section" id="rk-pipe-answer">
        <span class="rk-pipe-kicker">Odpowiedź bez zgadywania</span>
        <h2>Ile metrów rury potrzeba do ogrzewania podłogowego?</h2>
        <p class="rk-pipe-lead rk-pipe-dropcap"><strong>Kalkulator długości rury do ogrzewania podłogowego</strong> powinien rozdzielać trzy różne wartości: rurę układaną na czynnej powierzchni podłogi, odcinki zasilające i powrotne prowadzone do rozdzielacza oraz zapas potrzebny przy zamówieniu. Przy rozstawie 10 cm na 1 m² przypada geometrycznie około 10 m rury, przy 15 cm około 6,67 m, a przy 20 cm około 5 m. To jednak dopiero początek obliczenia.</p>

        <div class="rk-pipe-summary-grid">
          <article class="rk-pipe-summary-card"><b>01</b><h3>Powierzchnia czynna</h3><p>Od całej podłogi odejmuje się tylko strefy świadomie i trwale wyłączone z ogrzewania, a nie każdy ruchomy mebel.</p></article>
          <article class="rk-pipe-summary-card"><b>02</b><h3>Rozstaw projektowy</h3><p>Rozstaw 10, 15 lub 20 cm nie jest wyborem kalkulatora. Musi wynikać z obciążenia cieplnego, okładziny i temperatury wody.</p></article>
          <article class="rk-pipe-summary-card"><b>03</b><h3>Pętle i podejścia</h3><p>Każda pętla potrzebuje drogi do rozdzielacza i z powrotem. Im więcej obwodów, tym większa łączna długość podejść.</p></article>
        </div>
      </section>

      <section class="rk-pipe-section" aria-labelledby="rk-pipe-correction-title">
        <div class="rk-pipe-correction">
          <div class="rk-pipe-correction-copy">
            <span class="rk-pipe-kicker">Ważna korekta metodologii</span>
            <h2 id="rk-pipe-correction-title">Wzór nie może podwajać długości rury</h2>
            <p>W regularnym układzie równoległych przewodów długość na powierzchni wynika w przybliżeniu z podzielenia pola przez rozstaw. Zasilanie i powrót są już elementami tej samej pętli; nie stanowią powodu, aby cały wynik mnożyć przez dwa.</p>
            <p><strong>Przykład:</strong> 30 m² przy rozstawie 15 cm to około 200 m rury na powierzchni, a nie 400 m. Dopiero potem dodaje się indywidualnie policzone podejścia.</p>
          </div>
          <div class="rk-pipe-correction-math">
            <div class="rk-pipe-equation is-wrong"><small>Błędne uproszczenie</small><code>(A ÷ s) × 2</code></div>
            <div class="rk-pipe-equation"><small>Poprawny szacunek powierzchniowy</small><code>L<sub>pow.</sub> ≈ A<sub>czynna</sub> ÷ s</code></div>
            <div class="rk-pipe-equation"><small>Całość instalowana</small><code>L<sub>inst.</sub> ≈ L<sub>pow.</sub> + N × 2d</code></div>
          </div>
        </div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-tool">
        <div class="rk-pipe-calculator">
          <div class="rk-pipe-calculator-head">
            <span class="rk-pipe-kicker" style="color:#76f2ff">Interaktywne narzędzie obliczeniowe</span>
            <h2>Kalkulator ilości rury do podłogówki i liczby pętli</h2>
            <p>Wprowadź założenia. Narzędzie najpierw obliczy rurę na powierzchni, następnie minimalną liczbę pętli, łączne podejścia i zapas materiałowy. Wszystkie etapy pozostają widoczne.</p>
          </div>

          <div class="rk-pipe-calculator-layout">
            <form class="rk-pipe-controls" id="rk-pipe-form" aria-label="Dane do kalkulatora" onsubmit="return false;">
              <div class="rk-pipe-control">
                <label for="rk-pipe-area">Całkowita powierzchnia podłogi [m²]</label>
                <input id="rk-pipe-area" type="number" min="1" max="1000" step="1" value="100" inputmode="decimal">
                <small>Powierzchnia analizowanej kondygnacji lub zespołu pomieszczeń.</small>
              </div>
              <div class="rk-pipe-control">
                <label for="rk-pipe-excluded">Powierzchnia trwale wyłączona [m²]</label>
                <input id="rk-pipe-excluded" type="number" min="0" max="999" step="0.5" value="10" inputmode="decimal">
                <small>Na przykład stała zabudowa, schody, brodzik lub inne strefy określone w projekcie.</small>
              </div>
              <div class="rk-pipe-control">
                <label for="rk-pipe-spacing-input">Założony rozstaw rur [cm]</label>
                <select id="rk-pipe-spacing-input">
                  <option value="10">10 cm</option>
                  <option value="12.5">12,5 cm</option>
                  <option value="15" selected="">15 cm</option>
                  <option value="20">20 cm</option>
                  <option value="25">25 cm</option>
                </select>
                <small>Rozstaw powinien wynikać z projektu cieplnego; kalkulator go nie dobiera.</small>
              </div>
              <div class="rk-pipe-control">
                <label for="rk-pipe-distance">Średnia odległość pola od rozdzielacza w jedną stronę [m]</label>
                <input id="rk-pipe-distance" type="number" min="0" max="30" step="0.5" value="4" inputmode="decimal">
                <small>Jedna pętla wymaga drogi tam i z powrotem, dlatego w podejściach występuje mnożnik 2.</small>
              </div>
              <div class="rk-pipe-control">
                <label for="rk-pipe-zones">Minimalna liczba pomieszczeń lub niezależnych stref</label>
                <input id="rk-pipe-zones" type="number" min="1" max="100" step="1" value="8" inputmode="numeric">
                <small>Kalkulator nie połączy różnych stref w mniejszą liczbę obwodów niż podana.</small>
              </div>
              <div class="rk-pipe-control">
                <label for="rk-pipe-loop-max">Założony limit całkowitej długości jednej pętli</label>
                <select id="rk-pipe-loop-max">
                  <option value="80">80 m</option>
                  <option value="90" selected="">90 m</option>
                  <option value="100">100 m</option>
                </select>
                <small>To ograniczenie szacunkowe. Ostateczny limit wynika z przepływu, średnicy i dopuszczalnej straty ciśnienia.</small>
              </div>
              <div class="rk-pipe-control">
                <label for="rk-pipe-reserve">Zapas materiałowy do zakupu [%]</label>
                <input id="rk-pipe-reserve" type="number" min="0" max="10" step="1" value="5" inputmode="numeric">
                <small>Zapas zakupowy nie jest dodawany do projektowej długości hydraulicznej pętli.</small>
              </div>
            </form>

            <div class="rk-pipe-results" aria-live="polite">
              <div class="rk-pipe-result-primary">
                <div class="rk-pipe-result-card is-main"><small>Orientacyjnie do zamówienia</small><div class="rk-pipe-result-number" id="rk-pipe-order-result">0 m</div></div>
                <div class="rk-pipe-result-card"><small>Łącznie w instalacji</small><div class="rk-pipe-result-number" id="rk-pipe-installed-result">0 m</div></div>
              </div>
              <div class="rk-pipe-result-secondary">
                <div class="rk-pipe-result-card"><small>Powierzchnia czynna</small><div class="rk-pipe-result-number" id="rk-pipe-active-result">0 m²</div></div>
                <div class="rk-pipe-result-card"><small>Rura na powierzchni</small><div class="rk-pipe-result-number" id="rk-pipe-surface-result">0 m</div></div>
                <div class="rk-pipe-result-card"><small>Łączne podejścia</small><div class="rk-pipe-result-number" id="rk-pipe-approach-result">0 m</div></div>
                <div class="rk-pipe-result-card"><small>Szacowana liczba pętli</small><div class="rk-pipe-result-number" id="rk-pipe-loops-result">0</div></div>
                <div class="rk-pipe-result-card"><small>Średnia długość pętli</small><div class="rk-pipe-result-number" id="rk-pipe-average-result">0 m</div></div>
                <div class="rk-pipe-result-card"><small>Średnio na jedną pętlę</small><div class="rk-pipe-result-number" id="rk-pipe-area-loop-result">0 m²</div></div>
              </div>
              <div class="rk-pipe-result-note" id="rk-pipe-result-note">Uzupełnij dane, aby otrzymać wynik.</div>

              <div class="rk-pipe-chart" aria-label="Porównanie ilości rury dla różnych rozstawów">
                <h3>Jak rozstaw zmienia ilość rury?</h3>
                <p class="rk-pipe-chart-intro">Porównanie pokazuje orientacyjną długość do zamówienia dla tej samej powierzchni i pozostałych założeń.</p>
                <div class="rk-pipe-bar-row" id="rk-pipe-row-10"><span class="rk-pipe-bar-label">10 cm</span><span class="rk-pipe-bar-track"><span class="rk-pipe-bar" id="rk-pipe-bar-10"></span></span><span class="rk-pipe-bar-value" id="rk-pipe-bar-value-10">0 m</span></div>
                <div class="rk-pipe-bar-row" id="rk-pipe-row-12-5"><span class="rk-pipe-bar-label">12,5 cm</span><span class="rk-pipe-bar-track"><span class="rk-pipe-bar" id="rk-pipe-bar-12-5"></span></span><span class="rk-pipe-bar-value" id="rk-pipe-bar-value-12-5">0 m</span></div>
                <div class="rk-pipe-bar-row" id="rk-pipe-row-15"><span class="rk-pipe-bar-label">15 cm</span><span class="rk-pipe-bar-track"><span class="rk-pipe-bar" id="rk-pipe-bar-15"></span></span><span class="rk-pipe-bar-value" id="rk-pipe-bar-value-15">0 m</span></div>
                <div class="rk-pipe-bar-row" id="rk-pipe-row-20"><span class="rk-pipe-bar-label">20 cm</span><span class="rk-pipe-bar-track"><span class="rk-pipe-bar" id="rk-pipe-bar-20"></span></span><span class="rk-pipe-bar-value" id="rk-pipe-bar-value-20">0 m</span></div>
                <div class="rk-pipe-bar-row" id="rk-pipe-row-25"><span class="rk-pipe-bar-label">25 cm</span><span class="rk-pipe-bar-track"><span class="rk-pipe-bar" id="rk-pipe-bar-25"></span></span><span class="rk-pipe-bar-value" id="rk-pipe-bar-value-25">0 m</span></div>
              </div>
            </div>
          </div>

          <div class="rk-pipe-inline-cta">
            <h3>Kalkulator ma charakter poglądowy</h3>
            <p>Nie dobiera rozstawu, nie rozrysowuje rzeczywistych tras, nie oblicza strat ciśnienia, wymaganych przepływów ani nastaw rozdzielacza. Jeżeli chcesz znać dokładną długość rur, liczbę obwodów i parametry każdej pętli, należy wykonać projekt ogrzewania podłogowego.</p>
            <a class="rk-pipe-cta-button rk-pipe-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów dokładny projekt ogrzewania podłogowego</a>
            <small class="rk-pipe-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
          </div>
        </div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-formulas">
        <span class="rk-pipe-kicker">Pełna przejrzystość obliczeń</span>
        <h2>Jak kalkulator oblicza długość rury do podłogówki?</h2>
        <p>Kolejność jest ważna. Najpierw powstaje czynna powierzchnia, następnie długość przewodu pokrywającego tę powierzchnię. Dopiero z założonego limitu obwodu i średniej odległości od rozdzielacza wynika orientacyjna liczba pętli oraz suma podejść. Rezerwa jest ostatnim, zakupowym etapem rachunku.</p>

        <div class="rk-pipe-formulas">
          <article class="rk-pipe-formula"><span>Krok 1 • powierzchnia</span><code>A<sub>czynna</sub> = A<sub>całkowita</sub> − A<sub>wyłączona</sub></code><p>Odejmowane strefy muszą być znane i trwale wyłączone z układania rur.</p></article>
          <article class="rk-pipe-formula"><span>Krok 2 • rura na podłodze</span><code>L<sub>pow.</sub> ≈ A<sub>czynna</sub> ÷ (s / 100)</code><p>Rozstaw wpisany w centymetrach jest dzielony przez 100, aby uzyskać metry.</p></article>
          <article class="rk-pipe-formula"><span>Krok 3 • liczba pętli</span><code>N ≥ L<sub>pow.</sub> ÷ (L<sub>max</sub> − 2d)</code><p>Wynik zaokrągla się w górę i porównuje z minimalną liczbą niezależnych stref.</p></article>
          <article class="rk-pipe-formula"><span>Krok 4 • podejścia</span><code>L<sub>podejść</sub> ≈ N × 2d</code><p>Każdy obwód biegnie od rozdzielacza do pola grzewczego i wraca do rozdzielacza.</p></article>
          <article class="rk-pipe-formula"><span>Krok 5 • instalacja</span><code>L<sub>inst.</sub> ≈ L<sub>pow.</sub> + L<sub>podejść</sub></code><p>To orientacyjna długość rzeczywiście znajdująca się w pętlach, jeszcze bez zapasu zakupowego.</p></article>
          <article class="rk-pipe-formula"><span>Krok 6 • zamówienie</span><code>L<sub>zakup</sub> ≈ L<sub>inst.</sub> × (1 + r / 100)</code><p>Rezerwę należy zestawić z długościami dostępnych kręgów i zakazem wykonywania połączeń w jastrychu.</p></article>
        </div>

        <div class="rk-pipe-warning">
          <p><strong>Co oznacza „≈”?</strong> Rzeczywisty rzut pętli zawiera łuki, omijanie dylatacji, wejścia do pomieszczeń, lokalne zagęszczenia i różne odległości od rozdzielacza. Wzór daje kontrolowany szacunek materiału, ale dokładne metry uzyskuje się dopiero z rozrysowanych tras.</p>
        </div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-spacing">
        <span class="rk-pipe-kicker">Ile rury przypada na 1 m²?</span>
        <h2>Tabela długości rury dla rozstawu 10, 12,5, 15, 20 i 25 cm</h2>
        <p>Współczynnik metrów rury na 1 m² jest geometryczną odwrotnością rozstawu wyrażonego w metrach. Tabela dotyczy wyłącznie rury układanej na powierzchni. Nie zawiera podejść ani zapasu.</p>

        <div class="rk-pipe-table-wrap">
          <table>
            <thead><tr><th>Rozstaw rur</th><th>Rura na 1 m² powierzchni czynnej</th><th>Rura na 10 m²</th><th>Znaczenie wyniku</th></tr></thead>
            <tbody>
              <tr><td data-label="Rozstaw"><strong>10 cm</strong></td><td data-label="Na 1 m²">10,00 m/m²</td><td data-label="Na 10 m²">100 m</td><td data-label="Znaczenie">Duża gęstość ułożenia; musi wynikać z wymaganej mocy i parametrów podłogi.</td></tr>
              <tr><td data-label="Rozstaw"><strong>12,5 cm</strong></td><td data-label="Na 1 m²">8,00 m/m²</td><td data-label="Na 10 m²">80 m</td><td data-label="Znaczenie">Rozstaw pośredni, przydatny wtedy, gdy wynika z obliczeń i siatki montażowej.</td></tr>
              <tr><td data-label="Rozstaw"><strong>15 cm</strong></td><td data-label="Na 1 m²">6,67 m/m²</td><td data-label="Na 10 m²">66,7 m</td><td data-label="Znaczenie">Często spotykane założenie, ale nie uniwersalna wartość dla całego domu.</td></tr>
              <tr><td data-label="Rozstaw"><strong>20 cm</strong></td><td data-label="Na 1 m²">5,00 m/m²</td><td data-label="Na 10 m²">50 m</td><td data-label="Znaczenie">Mniej rury i potencjalnie mniejsza moc jednostkowa przy tych samych parametrach wody.</td></tr>
              <tr><td data-label="Rozstaw"><strong>25 cm</strong></td><td data-label="Na 1 m²">4,00 m/m²</td><td data-label="Na 10 m²">40 m</td><td data-label="Znaczenie">Wartość geometryczna; przy dużym rozstawie trzeba szczególnie sprawdzić równomierność temperatury.</td></tr>
            </tbody>
          </table>
        </div>

        <p class="rk-pipe-note"><strong>Nie wybieraj rozstawu na podstawie ceny rury.</strong> O tym, czy zastosować 10, 15 czy 20 cm, decydują obliczeniowe straty ciepła pomieszczenia, dopuszczalna temperatura powierzchni, konstrukcja i opór okładziny, temperatura zasilania oraz planowany przepływ. Szczegóły opisuje analiza <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-wodnym-ogrzewaniu-podlogowym/">rozstawu rur w wodnym ogrzewaniu podłogowym</a>.</p>
      </section>

      <section class="rk-pipe-section" aria-labelledby="rk-pipe-active-title">
        <span class="rk-pipe-kicker">Powierzchnia wejściowa</span>
        <h2 id="rk-pipe-active-title">Jak obliczyć czynną powierzchnię ogrzewania podłogowego?</h2>
        <div class="rk-pipe-grid-2">
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Wlicz</span><h3>Strefy dostępne dla podłogówki</h3><p>Uwzględnia się podłogę, na której zgodnie z planem można poprowadzić pętlę i bezpiecznie oddawać ciepło. Ruchomy stół, krzesła czy meble na nóżkach nie muszą automatycznie wyłączać powierzchni.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Odejmij</span><h3>Trwale wyłączone pola</h3><p>Do odjęcia mogą kwalifikować się zabudowy stałe, szafki bez prześwitu, wanna lub brodzik, schody, kominek i strefy techniczne — jeśli tak przewiduje dokumentacja.</p></article>
        </div>
        <div class="rk-pipe-warning"><p>Nie należy mechanicznie odejmować całej powierzchni pod każdym meblem. Układ wnętrz może się zmienić, a zbyt duże ograniczenie czynnej podłogi zwiększa wymaganą moc z pozostałych metrów kwadratowych. Zasady planowania zabudowy opisuje artykuł <a href="https://projekt-ogrzewania.pl/wodne-ogrzewanie-podlogowe-a-meble-jak-polaczyc-komfort-i-aranzacje/">wodne ogrzewanie podłogowe a meble</a>.</p></div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-loops">
        <span class="rk-pipe-kicker">Długość to także hydraulika</span>
        <h2>Jak obliczyć liczbę pętli ogrzewania podłogowego?</h2>
        <p>Proste dzielenie łącznej ilości rury przez 100 m może być mylące. Do limitu jednej pętli wlicza się również odcinek od rozdzielacza do pola grzewczego oraz powrót. Jeżeli średnia odległość w jedną stronę wynosi 8 m, to każda pętla „zużywa” orientacyjnie 16 m limitu jeszcze przed rozpoczęciem układania właściwego pola.</p>

        <div class="rk-pipe-grid-3">
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">01</span><h3>Najpierw odejmij podejście</h3><p>Przy limicie 90 m i podejściu 4 m w jedną stronę na część powierzchniową pozostaje średnio około 82 m.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">02</span><h3>Uwzględnij strefy</h3><p>Nawet gdy matematycznie wystarczyłoby pięć obwodów, osiem niezależnych pomieszczeń może wymagać co najmniej ośmiu pętli.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">03</span><h3>Sprawdź opory</h3><p>Dwie pętle o tej samej długości nie muszą mieć identycznej straty ciśnienia, jeśli różnią się średnicą, przepływem lub liczbą łuków.</p></article>
        </div>

        <p class="rk-pipe-note"><strong>Limit 80, 90 lub 100 m nie jest prawem fizyki.</strong> To założenie robocze. Dopuszczalną długość trzeba powiązać z przepływem wymaganym przez moc pętli, średnicą wewnętrzną, właściwościami przewodu, stratą ciśnienia i dyspozycyjną wysokością podnoszenia pompy. Zobacz osobno: <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalna długość pętli ogrzewania podłogowego</a>, <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">skutki zbyt długiej pętli</a> oraz <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/">ile metrów podłogówki można ułożyć na jednej pętli</a>.</p>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-examples">
        <span class="rk-pipe-kicker">Przykłady porównawcze</span>
        <h2>Ile rury na 20, 50, 100, 150 i 200 m² podłogówki?</h2>
        <p>Poniższe wyniki przyjmują ten sam uproszczony scenariusz: cała wskazana powierzchnia jest czynna, rozstaw wynosi 15 cm, limit pętli 90 m, średnie podejście 4 m w jedną stronę, minimum jedna strefa i 5% zapasu. Liczby nie są projektem konkretnego budynku.</p>

        <div class="rk-pipe-table-wrap">
          <table>
            <thead><tr><th>Powierzchnia czynna</th><th>Rura na powierzchni</th><th>Szacowana liczba pętli</th><th>Podejścia łącznie</th><th>Orientacyjnie do zamówienia</th></tr></thead>
            <tbody>
              <tr><td data-label="Powierzchnia"><strong>20 m²</strong></td><td data-label="Na powierzchni">133,3 m</td><td data-label="Pętle">2</td><td data-label="Podejścia">16 m</td><td data-label="Do zamówienia"><strong>156,8 m</strong></td></tr>
              <tr><td data-label="Powierzchnia"><strong>50 m²</strong></td><td data-label="Na powierzchni">333,3 m</td><td data-label="Pętle">5</td><td data-label="Podejścia">40 m</td><td data-label="Do zamówienia"><strong>392,0 m</strong></td></tr>
              <tr><td data-label="Powierzchnia"><strong>100 m²</strong></td><td data-label="Na powierzchni">666,7 m</td><td data-label="Pętle">9</td><td data-label="Podejścia">72 m</td><td data-label="Do zamówienia"><strong>775,6 m</strong></td></tr>
              <tr><td data-label="Powierzchnia"><strong>150 m²</strong></td><td data-label="Na powierzchni">1000,0 m</td><td data-label="Pętle">13</td><td data-label="Podejścia">104 m</td><td data-label="Do zamówienia"><strong>1159,2 m</strong></td></tr>
              <tr><td data-label="Powierzchnia"><strong>200 m²</strong></td><td data-label="Na powierzchni">1333,3 m</td><td data-label="Pętle">17</td><td data-label="Podejścia">136 m</td><td data-label="Do zamówienia"><strong>1542,8 m</strong></td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-pipe-example-grid" aria-label="Skrócone przykłady ilości rury">
          <div class="rk-pipe-example"><strong>157 m</strong><b>dla 20 m²</b><small>2 pętle • 15 cm • zapas 5%</small></div>
          <div class="rk-pipe-example"><strong>392 m</strong><b>dla 50 m²</b><small>5 pętli • 15 cm • zapas 5%</small></div>
          <div class="rk-pipe-example"><strong>776 m</strong><b>dla 100 m²</b><small>9 pętli • 15 cm • zapas 5%</small></div>
          <div class="rk-pipe-example"><strong>1159 m</strong><b>dla 150 m²</b><small>13 pętli • 15 cm • zapas 5%</small></div>
          <div class="rk-pipe-example"><strong>1543 m</strong><b>dla 200 m²</b><small>17 pętli • 15 cm • zapas 5%</small></div>
        </div>

        <p class="rk-pipe-warning"><strong>Ile rury na 100 m² ogrzewania podłogowego?</strong> Nie istnieje jedna poprawna liczba bez podania rozstawu, powierzchni wyłączonej, liczby pętli i odległości od rozdzielacza. Sam odcinek powierzchniowy dla 100 m² wynosi około 1000 m przy 10 cm, 667 m przy 15 cm i 500 m przy 20 cm. Oddzielne omówienie znajdziesz w poradniku <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%c2%b2-ogrzewania-podlogowego/">ile rury na m² ogrzewania podłogowego</a>.</p>
      </section>

      <section class="rk-pipe-section" aria-labelledby="rk-pipe-material-title">
        <span class="rk-pipe-kicker">Średnica i rodzaj przewodu</span>
        <h2 id="rk-pipe-material-title">Czy kalkulator działa dla rury 16×2, PEX i PE-RT?</h2>
        <p>Wzór powierzchniowy wynika z geometrii rozstawu, dlatego sam w sobie nie zależy od tego, czy przewód wykonano jako PEX czy PE-RT. Materiał i wymiar mają jednak duże znaczenie dla promienia gięcia, średnicy wewnętrznej, straty ciśnienia, wymaganej pracy pompy oraz dopuszczalnych parametrów eksploatacyjnych.</p>
        <div class="rk-pipe-grid-3">
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">16×2</span><h3>Popularny wymiar nie oznacza jednego limitu</h3><p>Dwie rury opisane jako 16×2 mogą różnić się właściwościami i wymaganiami systemowymi. Długość pętli trzeba sprawdzić hydraulicznie.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">PEX</span><h3>Materiał nie naprawia złego projektu</h3><p>Dobór <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/">rury PEX do ogrzewania podłogowego</a> nie zastępuje obliczenia przepływów i oporów.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">PE-RT</span><h3>Sprawdź system i dokumentację</h3><p>Także <a href="https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/">rura PE-RT do ogrzewania podłogowego</a> powinna być oceniana w ramach kompletnego systemu.</p></article>
        </div>
        <p class="rk-pipe-note">Przed zakupem warto porównać <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnice rur w ogrzewaniu podłogowym</a> i upewnić się, że rozdzielacz, złączki oraz sposób mocowania są zgodne z wybranym systemem.</p>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-errors">
        <span class="rk-pipe-kicker">Kontrola przed zamówieniem</span>
        <h2>Najczęstsze błędy przy obliczaniu ilości rury do podłogówki</h2>
        <ul class="rk-pipe-checklist">
          <li><strong>Mnożenie wyniku powierzchniowego przez dwa</strong> pod pretekstem zasilania i powrotu, mimo że pętla już zawiera oba kierunki.</li>
          <li><strong>Liczenie całej powierzchni zabudowy</strong> bez odjęcia stref faktycznie i trwale wyłączonych z ogrzewania.</li>
          <li><strong>Odejmowanie wszystkich mebli</strong>, także ruchomych lub ustawionych na nóżkach, bez analizy obciążenia czynnej podłogi.</li>
          <li><strong>Brak podejść do rozdzielacza</strong>, szczególnie kosztowny przy wielu pętlach i centralnie lub niekorzystnie położonej szafce.</li>
          <li><strong>Dobór rozstawu z tabeli materiałowej</strong> zamiast na podstawie strat ciepła, okładziny i parametrów wody.</li>
          <li><strong>Traktowanie 100 m jako uniwersalnego limitu</strong> niezależnego od średnicy, przepływu i oporu hydraulicznego.</li>
          <li><strong>Dodawanie zapasu do długości projektowej pętli</strong> zamiast użycia go wyłącznie przy organizacji zakupu.</li>
          <li><strong>Dzielenie instalacji na zbyt mało obwodów</strong> bez uwzględnienia pomieszczeń, sterowania i możliwości hydraulicznego zrównoważenia.</li>
          <li><strong>Kupowanie przypadkowych długości kręgów</strong>, które wymuszają odpady albo niedopuszczalne połączenia w warstwie podłogi.</li>
          <li><strong>Brak rysunku tras</strong>, przez co kalkulacja nie uwzględnia dylatacji, stref brzegowych, przeszkód i realnych łuków.</li>
        </ul>
        <div class="rk-pipe-success"><p><strong>Dobra praktyka:</strong> najpierw oblicz straty ciepła pomieszczeń i dobierz rozstaw, potem rozrysuj każdą <a href="https://projekt-ogrzewania.pl/petla-grzewcza/">pętlę grzewczą</a>, policz jej rzeczywistą długość, przypisz wymagany przepływ, sprawdź opór i dopiero na tej podstawie przygotuj zestawienie materiałowe.</p></div>
      </section>

      <section class="rk-pipe-section" aria-labelledby="rk-pipe-interpret-title">
        <span class="rk-pipe-kicker">Jak czytać wynik?</span>
        <h2 id="rk-pipe-interpret-title">Kalkulator materiału nie jest projektem ogrzewania</h2>
        <div class="rk-pipe-grid-2">
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Policzy</span><h3>Kontrolny rząd wielkości</h3><p>Narzędzie porządkuje powierzchnię, rozstaw, podejścia, orientacyjną liczbę pętli i zapas. Pozwala szybko wykryć wynik zawyżony dwa razy albo nieuwzględniający rozdzielacza.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Nie dobierze</span><h3>Mocy, przepływu i oporu</h3><p>Kalkulator nie zna strat ciepła poszczególnych pomieszczeń, konstrukcji podłogi, temperatury wody, oporu okładziny ani charakterystyki pompy.</p></article>
        </div>
        <p class="rk-pipe-note">Do wstępnego sprawdzania kilku zależności w jednym miejscu służy także <a href="https://projekt-ogrzewania.pl/kompleksowy-kalkulator-ogrzewania-podlogowego/">kompleksowy kalkulator ogrzewania podłogowego</a>. Bieżąca strona pozostaje wyspecjalizowana w jednym zadaniu: szacowaniu metrów rury oraz liczby pętli.</p>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-faq">
        <span class="rk-pipe-kicker">Najczęściej zadawane pytania</span>
        <h2>FAQ: kalkulator długości rury do ogrzewania podłogowego</h2>
        <div class="rk-pipe-faq">
          <details><summary>Ile metrów rury potrzeba na 1 m² ogrzewania podłogowego?</summary><div class="rk-pipe-faq-answer"><p>Geometrycznie około 10 m przy rozstawie 10 cm, 8 m przy 12,5 cm, 6,67 m przy 15 cm, 5 m przy 20 cm i 4 m przy 25 cm. Są to wartości dla czynnej powierzchni, bez podejść do rozdzielacza i zapasu zakupowego.</p></div></details>
          <details><summary>Ile rury potrzeba na 100 m² podłogówki?</summary><div class="rk-pipe-faq-answer"><p>Na samej powierzchni około 1000 m przy rozstawie 10 cm, 667 m przy 15 cm lub 500 m przy 20 cm. Do tego trzeba dodać wszystkie podejścia, których długość zależy od liczby pętli i położenia rozdzielacza.</p></div></details>
          <details><summary>Czy długość rury oblicza się jako powierzchnia podzielona przez rozstaw razy dwa?</summary><div class="rk-pipe-faq-answer"><p>Nie. Dla regularnego układu część powierzchniową szacuje się jako powierzchnię czynną podzieloną przez rozstaw wyrażony w metrach. Mnożenie całego wyniku przez dwa podwaja go bez podstawy. Oddzielnie dolicza się drogę każdej pętli do rozdzielacza i z powrotem.</p></div></details>
          <details><summary>Jak doliczyć rurę od rozdzielacza?</summary><div class="rk-pipe-faq-answer"><p>Orientacyjnie należy pomnożyć liczbę pętli przez dwa i przez średnią odległość pola grzewczego od rozdzielacza w jedną stronę. Dokładny projekt liczy każde podejście oddzielnie, ponieważ pomieszczenia leżą w różnych odległościach.</p></div></details>
          <details><summary>Ile pętli ogrzewania podłogowego wychodzi z kalkulatora?</summary><div class="rk-pipe-faq-answer"><p>Narzędzie dzieli długość powierzchniową przez część limitu pętli pozostałą po odjęciu podejścia, zaokrągla wynik w górę i porównuje go z minimalną liczbą stref. To szacunek; projekt może wymagać dodatkowego podziału ze względu na geometrię lub hydraulikę.</p></div></details>
          <details><summary>Czy jedna pętla może mieć 100 metrów?</summary><div class="rk-pipe-faq-answer"><p>Może, jeżeli średnica, wymagany przepływ, strata ciśnienia i możliwości pompy na to pozwalają. Nie jest to jednak bezwarunkowa reguła. W wielu układach przyjmuje się krótsze obwody, aby ułatwić zrównoważenie hydrauliczne.</p></div></details>
          <details><summary>Ile procent zapasu rury należy kupić?</summary><div class="rk-pipe-faq-answer"><p>Do wstępnego zamówienia często analizuje się 3–10%, ale właściwa rezerwa zależy od dokładności rysunku i długości dostępnych kręgów. Zapas nie może sztucznie zwiększać długości hydraulicznej projektowanej pętli i nie uzasadnia połączeń w jastrychu.</p></div></details>
          <details><summary>Czy kalkulator dobiera rozstaw rur?</summary><div class="rk-pipe-faq-answer"><p>Nie. Użytkownik podaje założony rozstaw. Jego prawidłowa wartość musi wynikać z obliczeń strat ciepła, mocy podłogi, temperatury zasilania, dopuszczalnej temperatury powierzchni oraz oporu cieplnego okładziny.</p></div></details>
        </div>

        <div class="rk-pipe-sources" style="margin-top:24px">
          <strong>Podstawa techniczna i zakres opracowania</strong>
          Ogólne zasady wyznaczania mocy wodnego ogrzewania płaszczyznowego opisują m.in. <a href="https://sklep.pkn.pl/pn-en-1264-2-2021-10e.html" target="_blank" rel="noopener nofollow">PN-EN 1264-2:2021-10 — Polski Komitet Normalizacyjny</a> oraz <a href="https://www.iso.org/standard/74683.html" target="_blank" rel="noopener nofollow">ISO 11855-2:2021 — International Organization for Standardization</a>. Kalkulator jest autorskim modelem geometryczno-materiałowym. Nie odtwarza pełnej procedury normowej i nie zastępuje obliczeń cieplnych ani hydraulicznych.
        </div>
      </section>

      <section class="rk-pipe-author" id="rk-pipe-author" aria-labelledby="rk-pipe-author-title">
        <input type="radio" name="rk-pipe-author-tabs" id="rk-pipe-author-about" checked="">
        <input type="radio" name="rk-pipe-author-tabs" id="rk-pipe-author-exp">
        <input type="radio" name="rk-pipe-author-tabs" id="rk-pipe-author-sites">

        <div class="rk-pipe-author-head">
          <div><h2 id="rk-pipe-author-title">Autor opracowania</h2><p>Praktyka projektowa, wiedza techniczna i przejrzyste założenia obliczeniowe.</p></div>
          <div class="rk-pipe-author-mark">E-E-A-T • HVAC</div>
        </div>

        <div class="rk-pipe-author-layout">
          <div class="rk-pipe-author-side">
            <div class="rk-pipe-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 systemów HVAC" width="500" height="500" loading="lazy" decoding="async"></div>
            <div class="rk-pipe-author-name">Robert Kucharski</div>
            <div class="rk-pipe-author-role">CEO<br>Specjalista systemów HVAC i ogrzewania podłogowego</div>
          </div>

          <div class="rk-pipe-author-main">
            <blockquote class="rk-pipe-author-quote"><p>„Rura na powierzchni to dopiero połowa rachunku. Liczbę pętli, długość podejść, przepływy i opory trzeba policzyć razem — inaczej nawet poprawna liczba metrów może dać zły układ.”</p></blockquote>

            <div class="rk-pipe-author-tabs" role="tablist" aria-label="Informacje o autorze">
              <label class="rk-pipe-author-tab" for="rk-pipe-author-about">O autorze</label>
              <label class="rk-pipe-author-tab" for="rk-pipe-author-exp">Doświadczenie</label>
              <label class="rk-pipe-author-tab" for="rk-pipe-author-sites">Portale</label>
            </div>

            <div class="rk-pipe-author-panel rk-pipe-author-panel-about">
              <p>Specjalizuję się w projektowaniu wodnego ogrzewania podłogowego, obliczeniach obciążenia cieplnego i hydrauliki instalacji. W opracowaniach łączę parametry budynku, konstrukcję podłogi, długości pętli, przepływy i wymagania źródła ciepła w jeden możliwy do wykonania system.</p>
            </div>
            <div class="rk-pipe-author-panel rk-pipe-author-panel-exp">
              <p>Przygotowuję dokumentacje techniczne dla nowych i modernizowanych budynków. Analizuję rozstaw i przebieg rur, rzeczywistą długość każdego obwodu, wymagane przepływy, opory instalacji, rozdzielacze oraz nastawy. W publikacjach wyraźnie oddzielam szybki szacunek materiałowy od parametrów wymagających pełnych obliczeń.</p>
            </div>
            <div class="rk-pipe-author-panel rk-pipe-author-panel-sites">
              <p>Jestem właścicielem trzech serwisów branżowych. Informację podaję transparentnie, aby czytelnik znał autorstwo publikacji i kontekst linkowania.</p>
              <div class="rk-pipe-site-links">
                <a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a>
                <a href="https://remont.biz.pl/" target="_blank" rel="noopener nofollow">Remont.biz.pl</a>
                <a href="https://sobir.pl/" target="_blank" rel="noopener nofollow">Sobir.pl</a>
              </div>
            </div>
          </div>
        </div>
      </section>

      <section class="rk-pipe-final-cta" aria-labelledby="rk-pipe-final-cta-title">
        <div class="rk-pipe-final-cta-content">
          <span class="rk-pipe-kicker" style="color:#72efff">Dokładność zaczyna się od rysunku każdej pętli</span>
          <h2 id="rk-pipe-final-cta-title">Nie zamawiaj kilkuset metrów rury na podstawie jednego uśrednionego wyniku</h2>
          <p>Projekt określa rozstaw w każdym pomieszczeniu, długość i przebieg każdej pętli, podejścia, wymagane przepływy, opory hydrauliczne oraz nastawy rozdzielacza. Dzięki temu zestawienie materiałowe wynika z rzeczywistego układu, a nie z samej powierzchni domu.</p>
          <a class="rk-pipe-cta-button rk-pipe-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt instalacji ogrzewania podłogowego</a>
          <small class="rk-pipe-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
        </div>
      </section>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/#article",
      "url": "https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/",
      "headline": "Kalkulator długości rury do ogrzewania podłogowego – ile metrów rury i ile pętli?",
      "alternativeHeadline": "Kalkulator ilości rury do podłogówki z obliczeniem podejść i liczby pętli",
      "description": "Kalkulator długości rury do ogrzewania podłogowego oblicza metry, podejścia i liczbę pętli dla rozstawów 10–25 cm. Sprawdź wynik i uniknij błędów przed zakupem.",
      "inLanguage": "pl-PL",
      "datePublished": "2025-05-11T08:00:00+02:00",
      "dateModified": "2026-08-26T12:00:00+02:00",
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "mainEntityOfPage": {
        "@id": "https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/#webpage"
      },
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/#website"
      },
      "about": [
        {
          "@type": "Thing",
          "name": "Ogrzewanie podłogowe"
        },
        {
          "@type": "Thing",
          "name": "Długość rury ogrzewania podłogowego"
        },
        {
          "@type": "Thing",
          "name": "Pętla grzewcza"
        },
        {
          "@type": "Thing",
          "name": "Rozstaw rur"
        }
      ],
      "mentions": [
        {
          "@type": "Thing",
          "name": "Rura PEX"
        },
        {
          "@type": "Thing",
          "name": "Rura PE-RT"
        },
        {
          "@type": "Thing",
          "name": "Rozdzielacz ogrzewania podłogowego"
        },
        {
          "@type": "Thing",
          "name": "Strata ciśnienia"
        }
      ],
      "keywords": [
        "kalkulator długości rury do ogrzewania podłogowego",
        "kalkulator ilości rury do podłogówki",
        "ile metrów rury do ogrzewania podłogowego",
        "ile rury na 100 m² podłogówki",
        "ile rury przy rozstawie 10 cm",
        "ile rury przy rozstawie 15 cm",
        "ile rury przy rozstawie 20 cm",
        "jak obliczyć liczbę pętli podłogówki",
        "podejścia do rozdzielacza",
        "maksymalna długość pętli 16×2"
      ],
      "citation": [
        "https://sklep.pkn.pl/pn-en-1264-2-2021-10e.html",
        "https://www.iso.org/standard/74683.html"
      ],
      "mainEntity": [
        {
          "@id": "https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/#calculator"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/#howto"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/#faq"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/#webpage",
      "url": "https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/",
      "name": "Kalkulator długości rury do ogrzewania podłogowego – ile metrów rury i ile pętli?",
      "description": "Kalkulator długości rury do ogrzewania podłogowego oblicza metry, podejścia i liczbę pętli dla rozstawów 10–25 cm. Sprawdź wynik i uniknij błędów przed zakupem.",
      "inLanguage": "pl-PL",
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/#website"
      },
      "breadcrumb": {
        "@id": "https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/#breadcrumb"
      },
      "potentialAction": {
        "@type": "ReadAction",
        "target": "https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/"
      }
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Strona główna",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Blog",
          "item": "https://projekt-ogrzewania.pl/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Kalkulator długości rury do ogrzewania podłogowego",
          "item": "https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/"
        }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/#calculator",
      "name": "Kalkulator długości rury do ogrzewania podłogowego",
      "url": "https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/#rk-pipe-tool",
      "description": "Bezpłatny kalkulator szacujący długość rury na powierzchni, podejścia do rozdzielacza, liczbę pętli i zapas materiałowy.",
      "applicationCategory": "UtilitiesApplication",
      "applicationSubCategory": "Kalkulator instalacyjny",
      "operatingSystem": "Any",
      "browserRequirements": "Włączona obsługa JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN",
        "availability": "https://schema.org/InStock"
      },
      "featureList": [
        "Obliczenie czynnej powierzchni ogrzewania",
        "Obliczenie długości rury na powierzchni",
        "Szacowanie liczby pętli",
        "Obliczenie podejść do rozdzielacza",
        "Obliczenie zapasu zakupowego",
        "Porównanie rozstawów 10–25 cm"
      ]
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/#howto",
      "name": "Jak obliczyć orientacyjną długość rury do ogrzewania podłogowego",
      "description": "Sześć etapów szacowania rury na powierzchni, liczby pętli, podejść do rozdzielacza i zapasu zakupowego.",
      "inLanguage": "pl-PL",
      "totalTime": "PT10M",
      "supply": [
        {
          "@type": "HowToSupply",
          "name": "Rzut pomieszczeń z wymiarami"
        },
        {
          "@type": "HowToSupply",
          "name": "Informacja o położeniu rozdzielacza"
        }
      ],
      "tool": [
        {
          "@type": "HowToTool",
          "name": "Kalkulator długości rury do ogrzewania podłogowego"
        }
      ],
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Wyznacz powierzchnię czynną",
          "text": "Odejmij od całej podłogi wyłącznie powierzchnie trwale wyłączone z ogrzewania."
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Wprowadź rozstaw wynikający z projektu",
          "text": "Podaj rozstaw rur dobrany na podstawie obciążenia cieplnego, konstrukcji podłogi i parametrów wody."
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Oblicz rurę na powierzchni",
          "text": "Podziel powierzchnię czynną przez rozstaw wyrażony w metrach."
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Oszacuj liczbę pętli",
          "text": "Uwzględnij założony limit pętli, długość podejścia i minimalną liczbę niezależnych stref."
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Dodaj podejścia do rozdzielacza",
          "text": "Pomnóż liczbę pętli przez podwójną średnią odległość od rozdzielacza."
        },
        {
          "@type": "HowToStep",
          "position": 6,
          "name": "Dodaj zapas zakupowy",
          "text": "Dodaj rezerwę materiałową dopiero po obliczeniu orientacyjnej długości instalowanej."
        }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Ile metrów rury potrzeba na 1 m² ogrzewania podłogowego?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Geometrycznie około 10 m przy rozstawie 10 cm, 8 m przy 12,5 cm, 6,67 m przy 15 cm, 5 m przy 20 cm i 4 m przy 25 cm. Są to wartości dla czynnej powierzchni, bez podejść do rozdzielacza i zapasu zakupowego."
          }
        },
        {
          "@type": "Question",
          "name": "Ile rury potrzeba na 100 m² podłogówki?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Na samej powierzchni około 1000 m przy rozstawie 10 cm, 667 m przy 15 cm lub 500 m przy 20 cm. Do tego trzeba dodać wszystkie podejścia, których długość zależy od liczby pętli i położenia rozdzielacza."
          }
        },
        {
          "@type": "Question",
          "name": "Czy długość rury oblicza się jako powierzchnia podzielona przez rozstaw razy dwa?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Dla regularnego układu część powierzchniową szacuje się jako powierzchnię czynną podzieloną przez rozstaw wyrażony w metrach. Mnożenie całego wyniku przez dwa podwaja go bez podstawy. Oddzielnie dolicza się drogę każdej pętli do rozdzielacza i z powrotem."
          }
        },
        {
          "@type": "Question",
          "name": "Jak doliczyć rurę od rozdzielacza?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Orientacyjnie należy pomnożyć liczbę pętli przez dwa i przez średnią odległość pola grzewczego od rozdzielacza w jedną stronę. Dokładny projekt liczy każde podejście oddzielnie, ponieważ pomieszczenia leżą w różnych odległościach."
          }
        },
        {
          "@type": "Question",
          "name": "Ile pętli ogrzewania podłogowego wychodzi z kalkulatora?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Narzędzie dzieli długość powierzchniową przez część limitu pętli pozostałą po odjęciu podejścia, zaokrągla wynik w górę i porównuje go z minimalną liczbą stref. To szacunek; projekt może wymagać dodatkowego podziału ze względu na geometrię lub hydraulikę."
          }
        },
        {
          "@type": "Question",
          "name": "Czy jedna pętla może mieć 100 metrów?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Może, jeżeli średnica, wymagany przepływ, strata ciśnienia i możliwości pompy na to pozwalają. Nie jest to jednak bezwarunkowa reguła. W wielu układach przyjmuje się krótsze obwody, aby ułatwić zrównoważenie hydrauliczne."
          }
        },
        {
          "@type": "Question",
          "name": "Ile procent zapasu rury należy kupić?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Do wstępnego zamówienia często analizuje się 3–10%, ale właściwa rezerwa zależy od dokładności rysunku i długości dostępnych kręgów. Zapas nie może sztucznie zwiększać długości hydraulicznej projektowanej pętli i nie uzasadnia połączeń w jastrychu."
          }
        },
        {
          "@type": "Question",
          "name": "Czy kalkulator dobiera rozstaw rur?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Użytkownik podaje założony rozstaw. Jego prawidłowa wartość musi wynikać z obliczeń strat ciepła, mocy podłogi, temperatury zasilania, dopuszczalnej temperatury powierzchni oraz oporu cieplnego okładziny."
          }
        }
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
        "width": 500,
        "height": 500
      },
      "jobTitle": "Projektant instalacji sanitarnych i specjalista systemów HVAC",
      "description": "Projektant instalacji sanitarnych specjalizujący się w wodnym ogrzewaniu podłogowym, obciążeniach cieplnych i hydraulice instalacji. Właściciel serwisów Projekt-Ogrzewania.pl, Remont.biz.pl i Sobir.pl.",
      "knowsAbout": [
        "Projektowanie ogrzewania podłogowego",
        "Hydraulika instalacji grzewczych",
        "Obliczenia obciążenia cieplnego",
        "Rozstaw i długość pętli grzewczych",
        "Rozdzielacze ogrzewania podłogowego",
        "Systemy HVAC"
      ],
      "sameAs": [
        "https://projekt-ogrzewania.pl/",
        "https://remont.biz.pl/",
        "https://sobir.pl/",
        "https://www.facebook.com/robert.kucharski.budowa.bez.sciemy"
      ],
      "owns": [
        {
          "@id": "https://projekt-ogrzewania.pl/#organization"
        },
        {
          "@id": "https://remont.biz.pl/#organization"
        },
        {
          "@id": "https://sobir.pl/#organization"
        }
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "logo": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg"
      },
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "foundingDate": "2024",
      "knowsAbout": [
        "Ogrzewanie podłogowe",
        "Projektowanie instalacji grzewczych",
        "Hydraulika instalacji"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      }
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "inLanguage": "pl-PL",
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      }
    }
  ]
}
</script>

<script>
  (function (window, document) {
    "use strict";

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

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

    function numberFrom(element, fallback) {
      var parsed = parseFloat(element ? element.value : "");
      return Number.isFinite(parsed) ? parsed : fallback;
    }

    function formatPolish(value, decimals) {
      return Number(value).toLocaleString("pl-PL", {
        minimumFractionDigits: decimals,
        maximumFractionDigits: decimals
      });
    }

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

    function initializePipeCalculator() {
      var root = byId("rk-pipe-calc");
      var areaInput;
      var excludedInput;
      var spacingInput;
      var distanceInput;
      var zonesInput;
      var loopMaxInput;
      var reserveInput;
      var progress;
      var navLinks;
      var i;

      if (!root) return false;
      if (root.getAttribute("data-rk-pipe-ready") === "1") return true;
      root.setAttribute("data-rk-pipe-ready", "1");

      areaInput = byId("rk-pipe-area");
      excludedInput = byId("rk-pipe-excluded");
      spacingInput = byId("rk-pipe-spacing-input");
      distanceInput = byId("rk-pipe-distance");
      zonesInput = byId("rk-pipe-zones");
      loopMaxInput = byId("rk-pipe-loop-max");
      reserveInput = byId("rk-pipe-reserve");

      function calculateForSpacing(activeArea, spacingCm, distance, minimumZones, loopMaximum, reserve) {
        var spacingMetres = spacingCm / 100;
        var surfaceLength = activeArea / spacingMetres;
        var usableSurfaceLength = loopMaximum - (2 * distance);
        var hydraulicLoops;
        var loops;
        var approaches;
        var installed;
        var order;

        if (usableSurfaceLength > 0) {
          hydraulicLoops = Math.ceil(surfaceLength / usableSurfaceLength);
        } else {
          hydraulicLoops = Math.ceil(surfaceLength);
        }

        loops = Math.max(minimumZones, hydraulicLoops, 1);
        approaches = loops * 2 * distance;
        installed = surfaceLength + approaches;
        order = installed * (1 + reserve / 100);

        return {
          surface: surfaceLength,
          usable: usableSurfaceLength,
          loops: loops,
          approaches: approaches,
          installed: installed,
          order: order,
          averageLoop: installed / loops,
          areaPerLoop: activeArea / loops
        };
      }

      function updateComparison(activeArea, distance, minimumZones, loopMaximum, reserve, selectedSpacing) {
        var spacings = [10, 12.5, 15, 20, 25];
        var values = [];
        var maximum = 1;
        var index;
        var result;
        var key;
        var bar;
        var row;
        var width;

        for (index = 0; index < spacings.length; index += 1) {
          result = calculateForSpacing(activeArea, spacings[index], distance, minimumZones, loopMaximum, reserve);
          values.push(result.order);
          if (result.order > maximum) maximum = result.order;
        }

        for (index = 0; index < spacings.length; index += 1) {
          key = String(spacings[index]).replace(".", "-");
          bar = byId("rk-pipe-bar-" + key);
          row = byId("rk-pipe-row-" + key);
          width = (values[index] / maximum) * 100;
          if (bar) bar.style.width = width.toFixed(1) + "%";
          setText("rk-pipe-bar-value-" + key, formatPolish(Math.ceil(values[index]), 0) + " m");
          if (row) {
            row.classList.remove("is-selected");
            if (Math.abs(spacings[index] - selectedSpacing) < 0.01) row.classList.add("is-selected");
          }
        }
      }

      function updateCalculator() {
        var area = clamp(numberFrom(areaInput, 100), 1, 1000);
        var maximumExcluded = Math.max(area - 0.1, 0);
        var excluded = clamp(numberFrom(excludedInput, 10), 0, maximumExcluded);
        var spacing = clamp(numberFrom(spacingInput, 15), 5, 50);
        var distance = clamp(numberFrom(distanceInput, 4), 0, 30);
        var minimumZones = Math.round(clamp(numberFrom(zonesInput, 8), 1, 100));
        var loopMaximum = clamp(numberFrom(loopMaxInput, 90), 40, 150);
        var reserve = clamp(numberFrom(reserveInput, 5), 0, 10);
        var activeArea = area - excluded;
        var result = calculateForSpacing(activeArea, spacing, distance, minimumZones, loopMaximum, reserve);
        var resultNote = byId("rk-pipe-result-note");
        var note;

        if (areaInput) areaInput.value = String(area);
        if (excludedInput) excludedInput.value = String(excluded);
        if (distanceInput) distanceInput.value = String(distance);
        if (zonesInput) zonesInput.value = String(minimumZones);
        if (reserveInput) reserveInput.value = String(reserve);

        setText("rk-pipe-order-result", formatPolish(Math.ceil(result.order), 0) + " m");
        setText("rk-pipe-installed-result", formatPolish(result.installed, 1) + " m");
        setText("rk-pipe-active-result", formatPolish(activeArea, 1) + " m²");
        setText("rk-pipe-surface-result", formatPolish(result.surface, 1) + " m");
        setText("rk-pipe-approach-result", formatPolish(result.approaches, 1) + " m");
        setText("rk-pipe-loops-result", String(result.loops));
        setText("rk-pipe-average-result", formatPolish(result.averageLoop, 1) + " m");
        setText("rk-pipe-area-loop-result", formatPolish(result.areaPerLoop, 1) + " m²");

        if (resultNote) resultNote.className = "rk-pipe-result-note";

        if (result.usable <= 10) {
          note = "Założona droga do rozdzielacza zużywa prawie cały limit pętli. Zmień lokalizację rozdzielacza albo wykonaj indywidualny podział i obliczenia hydrauliczne.";
          if (resultNote) resultNote.classList.add("is-warning");
        } else if (excluded > area * 0.45) {
          note = "Wyłączono ponad 45% powierzchni. Sprawdź, czy pozostała czynna podłoga może pokryć obciążenie cieplne pomieszczeń i czy nie odjęto ruchomych mebli.";
          if (resultNote) resultNote.classList.add("is-warning");
        } else if (result.averageLoop > loopMaximum) {
          note = "Średnia długość przekracza założony limit. Wynik wymaga dodatkowego podziału pętli oraz sprawdzenia rzeczywistych tras.";
          if (resultNote) resultNote.classList.add("is-warning");
        } else {
          note = "Przy rozstawie " + formatPolish(spacing, spacing % 1 === 0 ? 0 : 1) + " cm na powierzchnię przypada około " + formatPolish(100 / spacing, 2) + " m rury na 1 m². Podejścia stanowią w tym wariancie " + formatPolish(result.approaches, 1) + " m. Wynik zakupowy zaokrąglono w górę do pełnego metra.";
        }

        if (resultNote) resultNote.textContent = note;
        updateComparison(activeArea, distance, minimumZones, loopMaximum, reserve, spacing);
      }

      if (areaInput) areaInput.addEventListener("input", updateCalculator, false);
      if (excludedInput) excludedInput.addEventListener("input", updateCalculator, false);
      if (spacingInput) spacingInput.addEventListener("change", updateCalculator, false);
      if (distanceInput) distanceInput.addEventListener("input", updateCalculator, false);
      if (zonesInput) zonesInput.addEventListener("input", updateCalculator, false);
      if (loopMaxInput) loopMaxInput.addEventListener("change", updateCalculator, false);
      if (reserveInput) reserveInput.addEventListener("input", updateCalculator, false);
      updateCalculator();

      navLinks = root.querySelectorAll('a[href^="#"]');
      for (i = 0; i < navLinks.length; i += 1) {
        navLinks[i].addEventListener("click", function (event) {
          var href = this.getAttribute("href");
          var target = href ? root.querySelector(href) : null;
          var reducedMotion;
          if (!target) return;
          event.preventDefault();
          reducedMotion = typeof window.matchMedia === "function" ? window.matchMedia("(prefers-reduced-motion: reduce)").matches : false;
          target.scrollIntoView({
            behavior: reducedMotion ? "auto" : "smooth",
            block: "start"
          });
        }, false);
      }

      progress = root.querySelector(".rk-pipe-progress");
      function updateProgress() {
        var rect;
        var viewport;
        var total;
        var passed;
        var percentage;
        if (!progress) return;
        rect = root.getBoundingClientRect();
        viewport = window.innerHeight || document.documentElement.clientHeight;
        total = Math.max(root.offsetHeight - viewport, 1);
        passed = Math.min(Math.max(-rect.top, 0), total);
        percentage = (passed / total) * 100;
        progress.style.width = percentage.toFixed(2) + "%";
      }

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

    if (document.readyState === "loading") {
      document.addEventListener("DOMContentLoaded", initializePipeCalculator, false);
    } else {
      initializePipeCalculator();
    }

    window.addEventListener("load", initializePipeCalculator, false);
    window.setTimeout(initializePipeCalculator, 250);
    window.setTimeout(initializePipeCalculator, 1200);
    window.setTimeout(initializePipeCalculator, 3000);

    if (window.MutationObserver ? !byId("rk-pipe-calc") : false) {
      var observer = new MutationObserver(function () {
        if (initializePipeCalculator()) observer.disconnect();
      });
      observer.observe(document.documentElement, { childList: true, subtree: true });
      window.setTimeout(function () { observer.disconnect(); }, 10000);
    }
  }(window, document));
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/">Kalkulator do obliczania ilości metrów rury potrzebnych do 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/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/feed/</wfw:commentRss>
			<slash:comments>2</slash:comments>
		
		
			</item>
		<item>
		<title>Ile wody potrzeba do wypełnienia instalacji podłogówki &#8211; Kalkulator.</title>
		<link>https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 08 Feb 2025 11:55:32 +0000</pubDate>
				<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Instalacje hydrauliczne]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki budowlane]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Technologie grzewcze]]></category>
		<category><![CDATA[domowe systemy grzewcze]]></category>
		<category><![CDATA[hydraulika]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[kalkulator wody]]></category>
		<category><![CDATA[obliczenia budowlane]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędności energii]]></category>
		<category><![CDATA[poradniki]]></category>
		<category><![CDATA[projektowanie instalacji]]></category>
		<category><![CDATA[remonty]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2128</guid>

					<description><![CDATA[<p>Planujesz montaż ogrzewania podłogowego i zastanawiasz się, ile wody potrzeba do wypełnienia instalacji podłogówki? Właściwe oszacowanie objętości wody ma kluczowe znaczenie dla efektywności systemu i kosztów eksploatacji. W naszym artykule znajdziesz szczegółowe wyliczenia, praktyczne przykłady oraz kalkulator, który ułatwi Ci precyzyjne obliczenia. Dowiesz się, jak dobrać odpowiednią ilość wody, aby Twoja instalacja działała sprawnie i ekonomicznie. Sprawdź już teraz!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/">Ile wody potrzeba do wypełnienia instalacji podłogówki &#8211; Kalkulator.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-volume-guide {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e8fbff;
    --rk-orange: #ff6a3d;
    --rk-orange-soft: #fff1eb;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #e5aa28;
    --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-volume-guide,
  #rk-volume-guide * { box-sizing: border-box; }

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

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

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

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

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

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

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

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

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

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

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

  #rk-volume-guide .rk-volume-hero::after {
    content: "";
    position: absolute;
    right: -105px;
    bottom: -135px;
    width: 330px;
    height: 330px;
    border: 42px solid rgba(255, 255, 255, 0.055);
    border-radius: 50%;
  }

  #rk-volume-guide .rk-volume-hero-grid {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: minmax(0, 1.4fr) minmax(270px, .6fr);
    gap: clamp(28px, 5vw, 62px);
    align-items: center;
  }

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

  #rk-volume-guide .rk-volume-eyebrow { color: #8ff4ff; }

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

  #rk-volume-guide .rk-volume-hero-title {
    max-width: 790px;
    margin-bottom: 19px;
    color: var(--rk-white);
    font-size: clamp(2.25rem, 6vw, 4.45rem);
    font-weight: 950;
    letter-spacing: -.055em;
    line-height: .98;
  }

  #rk-volume-guide .rk-volume-hero-lead {
    max-width: 760px;
    margin-bottom: 25px;
    color: #dceaf0;
    font-size: clamp(1.02rem, 2vw, 1.23rem);
    line-height: 1.68;
  }

  #rk-volume-guide .rk-volume-meta { display: flex; flex-wrap: wrap; gap: 10px; }

  #rk-volume-guide .rk-volume-meta span {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 999px;
    color: #eaf7fa;
    background: rgba(255, 255, 255, .075);
    font-size: .75rem;
    font-weight: 800;
  }

  #rk-volume-guide .rk-volume-hero-card {
    position: relative;
    padding: 26px;
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: 25px;
    background: rgba(5, 27, 42, .56);
    box-shadow: 0 20px 44px rgba(0, 0, 0, .19);
    backdrop-filter: blur(9px);
  }

  #rk-volume-guide .rk-volume-hero-card small {
    display: block;
    margin-bottom: 10px;
    color: #8eeef7;
    font-size: .67rem;
    font-weight: 900;
    letter-spacing: .07em;
    text-transform: uppercase;
  }

  #rk-volume-guide .rk-volume-hero-formula {
    margin-bottom: 17px;
    color: var(--rk-white);
    font-size: clamp(1.35rem, 3vw, 2rem);
    font-weight: 950;
    letter-spacing: -.035em;
    line-height: 1.25;
  }

  #rk-volume-guide .rk-volume-hero-values {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 9px;
  }

  #rk-volume-guide .rk-volume-hero-values div {
    padding: 12px;
    border-radius: 14px;
    color: #dcecf1;
    background: rgba(255, 255, 255, .075);
    font-size: .7rem;
  }

  #rk-volume-guide .rk-volume-hero-values strong {
    display: block;
    color: var(--rk-white);
    font-size: 1.12rem;
  }

  #rk-volume-guide .rk-volume-nav {
    display: flex;
    gap: 8px;
    overflow-x: auto;
    padding: 15px clamp(18px, 5vw, 58px);
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
    scrollbar-width: thin;
  }

  #rk-volume-guide .rk-volume-nav a {
    flex: 0 0 auto;
    padding: 8px 12px;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-soft);
    font-size: .72rem;
    font-weight: 900;
    text-decoration: none;
  }

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

  #rk-volume-guide .rk-volume-body { padding: 0 clamp(20px, 6vw, 76px) clamp(42px, 7vw, 76px); }

  #rk-volume-guide .rk-volume-section {
    padding: clamp(48px, 7vw, 82px) 0;
    border-bottom: 1px solid var(--rk-line);
    scroll-margin-top: 24px;
  }

  #rk-volume-guide .rk-volume-section:last-child { border-bottom: 0; }

  #rk-volume-guide .rk-volume-lead {
    max-width: 920px;
    color: var(--rk-text);
    font-size: clamp(1.02rem, 2vw, 1.16rem);
  }

  #rk-volume-guide .rk-volume-answer {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(260px, .65fr);
    gap: 20px;
    margin-top: 24px;
  }

  #rk-volume-guide .rk-volume-answer-main,
  #rk-volume-guide .rk-volume-answer-side,
  #rk-volume-guide .rk-volume-card,
  #rk-volume-guide .rk-volume-note,
  #rk-volume-guide .rk-volume-warning,
  #rk-volume-guide .rk-volume-step {
    padding: clamp(20px, 3vw, 28px);
    border: 1px solid var(--rk-line);
    border-radius: 21px;
    background: var(--rk-white);
  }

  #rk-volume-guide .rk-volume-answer-main { border-left: 7px solid var(--rk-cyan); background: var(--rk-cyan-soft); }
  #rk-volume-guide .rk-volume-answer-side { border-left: 7px solid var(--rk-orange); background: var(--rk-orange-soft); }

  #rk-volume-guide .rk-volume-grid-2,
  #rk-volume-guide .rk-volume-grid-3,
  #rk-volume-guide .rk-volume-grid-4 {
    display: grid;
    gap: 17px;
    margin-top: 23px;
  }

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

  #rk-volume-guide .rk-volume-card { position: relative; overflow: hidden; }

  #rk-volume-guide .rk-volume-card-number {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-width: 42px;
    height: 42px;
    margin-bottom: 14px;
    padding: 0 10px;
    border-radius: 13px;
    color: var(--rk-white);
    background: var(--rk-navy);
    font-weight: 950;
  }

  #rk-volume-guide .rk-volume-card p:last-child,
  #rk-volume-guide .rk-volume-note p:last-child,
  #rk-volume-guide .rk-volume-warning p:last-child,
  #rk-volume-guide .rk-volume-step p:last-child { margin-bottom: 0; }

  #rk-volume-guide .rk-volume-formula-box {
    display: grid;
    grid-template-columns: minmax(0, 1fr) minmax(270px, .62fr);
    gap: 24px;
    align-items: center;
    margin: 28px 0;
    padding: clamp(24px, 5vw, 42px);
    border-radius: 25px;
    color: var(--rk-white);
    background: linear-gradient(130deg, var(--rk-dark), var(--rk-navy));
  }

  #rk-volume-guide .rk-volume-formula-box h3 { color: var(--rk-white); }

  #rk-volume-guide .rk-volume-formula {
    padding: 22px;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 18px;
    background: rgba(255, 255, 255, .08);
    color: #92f4ff;
    font-size: clamp(1.2rem, 3vw, 1.78rem);
    font-weight: 950;
    letter-spacing: -.025em;
    text-align: center;
  }

  #rk-volume-guide .rk-volume-table-wrap { margin-top: 23px; }

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

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

  #rk-volume-guide th:last-child,
  #rk-volume-guide td:last-child { border-right: 0; }
  #rk-volume-guide tbody tr:last-child td { border-bottom: 0; }

  #rk-volume-guide th {
    color: var(--rk-white);
    background: var(--rk-navy);
    font-size: .76rem;
    font-weight: 900;
    letter-spacing: .025em;
  }

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

  #rk-volume-guide .rk-volume-tool {
    overflow: hidden;
    margin-top: 28px;
    border: 1px solid #315469;
    border-radius: 28px;
    background: #0f2636;
    box-shadow: 0 25px 54px rgba(16, 37, 54, .18);
  }

  #rk-volume-guide .rk-volume-tool-head {
    padding: clamp(27px, 5vw, 44px);
    color: #dcebf1;
    background:
      radial-gradient(circle at 92% 12%, rgba(255, 106, 61, .26), transparent 24%),
      linear-gradient(125deg, #102536, #17435a);
  }

  #rk-volume-guide .rk-volume-tool-head h2 { color: var(--rk-white); }
  #rk-volume-guide .rk-volume-tool-head p:last-child { margin-bottom: 0; }

  #rk-volume-guide .rk-volume-tool-body { padding: clamp(20px, 4vw, 38px); }

  #rk-volume-guide .rk-volume-mode-switch {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 12px;
    margin-bottom: 22px;
  }

  #rk-volume-guide .rk-volume-mode-switch input { position: absolute; opacity: 0; pointer-events: none; }

  #rk-volume-guide .rk-volume-mode-switch label {
    display: block;
    min-height: 100%;
    padding: 17px 19px;
    border: 1px solid #456579;
    border-radius: 16px;
    color: #dcebf1;
    background: rgba(255, 255, 255, .045);
    cursor: pointer;
  }

  #rk-volume-guide .rk-volume-mode-switch label strong { display: block; color: var(--rk-white); }
  #rk-volume-guide .rk-volume-mode-switch label small { display: block; margin-top: 3px; color: #a9c0cc; }

  #rk-volume-guide #rk-volume-mode-length:checked + label,
  #rk-volume-guide #rk-volume-mode-area:checked + label {
    border-color: var(--rk-cyan);
    background: rgba(37, 199, 216, .14);
    box-shadow: inset 0 0 0 1px var(--rk-cyan);
  }

  #rk-volume-guide .rk-volume-mode-panel[hidden],
  #rk-volume-guide .rk-volume-custom-diameter[hidden],
  #rk-volume-guide .rk-volume-dtr-fields[hidden] { display: none !important; }

  #rk-volume-guide .rk-volume-calc-block {
    margin-top: 18px;
    padding: 21px;
    border: 1px solid #38586c;
    border-radius: 20px;
    background: rgba(255, 255, 255, .04);
  }

  #rk-volume-guide .rk-volume-calc-block h3 { color: var(--rk-white); }
  #rk-volume-guide .rk-volume-calc-block > p { color: #b8cbd4; }

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

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

  #rk-volume-guide .rk-volume-field label {
    display: block;
    margin-bottom: 7px;
    color: #dcebf1;
    font-size: .69rem;
    font-weight: 900;
    line-height: 1.35;
  }

  #rk-volume-guide .rk-volume-field input,
  #rk-volume-guide .rk-volume-field select {
    width: 100%;
    min-height: 48px;
    padding: 10px 12px;
    border: 1px solid #557182;
    border-radius: 12px;
    outline: none;
    color: var(--rk-dark);
    background: var(--rk-white);
  }

  #rk-volume-guide .rk-volume-field input:focus,
  #rk-volume-guide .rk-volume-field select:focus { border-color: var(--rk-cyan); box-shadow: 0 0 0 3px rgba(37, 199, 216, .17); }

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

  #rk-volume-guide .rk-volume-pipe-row {
    display: grid;
    grid-template-columns: minmax(150px, 1.35fr) minmax(120px, .85fr) minmax(140px, .95fr) minmax(100px, .62fr) auto;
    gap: 11px;
    align-items: end;
    margin-top: 12px;
    padding: 15px;
    border: 1px solid #3d6073;
    border-radius: 15px;
    background: rgba(255, 255, 255, .04);
  }

  #rk-volume-guide .rk-volume-remove,
  #rk-volume-guide .rk-volume-add,
  #rk-volume-guide .rk-volume-calculate,
  #rk-volume-guide .rk-volume-reset {
    border: 0;
    border-radius: 12px;
    font-weight: 900;
    cursor: pointer;
    transition: transform .18s ease, background .18s ease, box-shadow .18s ease;
  }

  #rk-volume-guide .rk-volume-remove {
    width: 46px;
    height: 48px;
    color: #ffb4aa;
    background: rgba(217, 75, 61, .14);
    font-size: 1.25rem;
  }

  #rk-volume-guide .rk-volume-add {
    margin-top: 13px;
    padding: 11px 15px;
    color: #a9f7ff;
    background: rgba(37, 199, 216, .13);
  }

  #rk-volume-guide .rk-volume-actions { display: flex; flex-wrap: wrap; gap: 11px; margin-top: 21px; }

  #rk-volume-guide .rk-volume-calculate {
    padding: 14px 22px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-orange), #e9552c);
    box-shadow: 0 12px 24px rgba(255, 106, 61, .22);
  }

  #rk-volume-guide .rk-volume-reset { padding: 14px 19px; color: #dcebf1; background: #29485a; }

  #rk-volume-guide .rk-volume-remove:hover,
  #rk-volume-guide .rk-volume-add:hover,
  #rk-volume-guide .rk-volume-calculate:hover,
  #rk-volume-guide .rk-volume-reset:hover { transform: translateY(-2px); }

  #rk-volume-guide .rk-volume-results {
    padding: clamp(24px, 5vw, 42px);
    border-top: 1px solid #38586c;
    color: #dcebf1;
    background: #0b202e;
  }

  #rk-volume-guide .rk-volume-results h3,
  #rk-volume-guide .rk-volume-results h4 { color: var(--rk-white); }

  #rk-volume-guide .rk-volume-result-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
  }

  #rk-volume-guide .rk-volume-result-card {
    min-width: 0;
    padding: 17px;
    border: 1px solid #36566a;
    border-radius: 17px;
    background: rgba(255, 255, 255, .045);
  }

  #rk-volume-guide .rk-volume-result-card.is-main {
    border-color: var(--rk-cyan);
    background: linear-gradient(145deg, rgba(37, 199, 216, .2), rgba(37, 199, 216, .07));
  }

  #rk-volume-guide .rk-volume-result-card small {
    display: block;
    min-height: 2.8em;
    color: #9fb7c2;
    font-size: .65rem;
    font-weight: 800;
    line-height: 1.4;
  }

  #rk-volume-guide .rk-volume-result-number {
    margin-top: 7px;
    color: var(--rk-white);
    font-size: clamp(1.28rem, 3vw, 2rem);
    font-weight: 950;
    letter-spacing: -.04em;
    line-height: 1.1;
  }

  #rk-volume-guide .rk-volume-status {
    margin-top: 15px;
    padding: 15px 17px;
    border-left: 5px solid var(--rk-cyan);
    border-radius: 13px;
    color: #dcebf1;
    background: rgba(37, 199, 216, .1);
  }

  #rk-volume-guide .rk-volume-status.is-warning { border-color: var(--rk-yellow); background: rgba(229, 170, 40, .12); }
  #rk-volume-guide .rk-volume-status.is-danger { border-color: var(--rk-red); background: rgba(217, 75, 61, .13); }

  #rk-volume-guide .rk-volume-chart-wrap {
    margin-top: 23px;
    padding: 19px;
    border: 1px solid #36566a;
    border-radius: 18px;
    background: rgba(255, 255, 255, .035);
  }

  #rk-volume-guide .rk-volume-chart {
    display: flex;
    width: 100%;
    height: 52px;
    overflow: hidden;
    border-radius: 13px;
    background: #203d4e;
  }

  #rk-volume-guide .rk-volume-segment { min-width: 0; transition: width .25s ease; }
  #rk-volume-guide .rk-volume-segment.is-loops { background: var(--rk-cyan); }
  #rk-volume-guide .rk-volume-segment.is-mains { background: var(--rk-blue); }
  #rk-volume-guide .rk-volume-segment.is-source { background: var(--rk-orange); }
  #rk-volume-guide .rk-volume-segment.is-buffer { background: var(--rk-purple); }
  #rk-volume-guide .rk-volume-segment.is-other { background: var(--rk-yellow); }

  #rk-volume-guide .rk-volume-legend {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 8px;
    margin-top: 13px;
  }

  #rk-volume-guide .rk-volume-legend div { color: #a9c0cb; font-size: .63rem; line-height: 1.35; }
  #rk-volume-guide .rk-volume-legend b { display: block; color: var(--rk-white); font-size: .76rem; }
  #rk-volume-guide .rk-volume-dot { display: inline-block; width: 9px; height: 9px; margin-right: 5px; border-radius: 50%; }

  #rk-volume-guide .rk-volume-breakdown { margin-top: 22px; }
  #rk-volume-guide .rk-volume-breakdown table { border-color: #36566a; }
  #rk-volume-guide .rk-volume-breakdown th { background: #183649; }
  #rk-volume-guide .rk-volume-breakdown td { border-color: #36566a; color: #dcebf1; background: #102b3b; }
  #rk-volume-guide .rk-volume-breakdown tbody tr:nth-child(even) td { background: #143244; }

  #rk-volume-guide .rk-volume-inline-cta {
    position: relative;
    overflow: hidden;
    margin-top: 31px;
    padding: clamp(27px, 5vw, 42px);
    border-radius: 25px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 88% 15%, rgba(255, 106, 61, .26), transparent 25%),
      linear-gradient(126deg, #102536, #17465d);
  }

  #rk-volume-guide .rk-volume-inline-cta h3 { color: var(--rk-white); font-size: clamp(1.45rem, 3vw, 2.1rem); }
  #rk-volume-guide .rk-volume-inline-cta p { max-width: 850px; color: #d8e8ee; }

  #rk-volume-guide .rk-volume-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    padding: 13px 20px;
    border-radius: 14px;
    color: var(--rk-white) !important;
    background: linear-gradient(135deg, var(--rk-orange), #e9542d);
    box-shadow: 0 14px 26px rgba(255, 106, 61, .24);
    text-decoration: none !important;
  }

  #rk-volume-guide .rk-volume-cta-button:hover,
  #rk-volume-guide .rk-volume-cta-button:focus-visible { transform: translateY(-2px); box-shadow: 0 18px 30px rgba(255, 106, 61, .3); }

  #rk-volume-guide .rk-volume-disclosure { display: block; margin-top: 10px; color: #9eb6c2; font-size: .62rem; }

  #rk-volume-guide .rk-volume-callout {
    margin-top: 22px;
    padding: 20px 22px;
    border-left: 6px solid var(--rk-cyan);
    border-radius: 16px;
    background: var(--rk-cyan-soft);
  }

  #rk-volume-guide .rk-volume-callout.is-warm { border-color: var(--rk-orange); background: var(--rk-orange-soft); }
  #rk-volume-guide .rk-volume-callout.is-yellow { border-color: var(--rk-yellow); background: var(--rk-yellow-soft); }
  #rk-volume-guide .rk-volume-callout p:last-child { margin-bottom: 0; }

  #rk-volume-guide .rk-volume-compare {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 18px;
    margin-top: 23px;
  }

  #rk-volume-guide .rk-volume-compare > div {
    padding: 25px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
  }

  #rk-volume-guide .rk-volume-compare .is-wrong { background: var(--rk-red-soft); border-top: 6px solid var(--rk-red); }
  #rk-volume-guide .rk-volume-compare .is-right { background: var(--rk-green-soft); border-top: 6px solid var(--rk-green); }

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

  #rk-volume-guide .rk-volume-step { position: relative; padding-top: 62px; counter-increment: rk-volume-step; }

  #rk-volume-guide .rk-volume-step::before {
    content: counter(rk-volume-step, decimal-leading-zero);
    position: absolute;
    top: 18px;
    left: 22px;
    color: var(--rk-blue);
    font-size: 1.25rem;
    font-weight: 950;
  }

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

  #rk-volume-guide .rk-volume-checklist li {
    position: relative;
    margin: 0;
    padding: 14px 15px 14px 48px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: var(--rk-soft);
  }

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

  #rk-volume-guide .rk-volume-faq { display: grid; gap: 10px; margin-top: 23px; }

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

  #rk-volume-guide .rk-volume-faq summary {
    position: relative;
    padding: 17px 52px 17px 18px;
    color: var(--rk-dark);
    font-weight: 900;
    cursor: pointer;
    list-style: none;
  }

  #rk-volume-guide .rk-volume-faq summary::-webkit-details-marker { display: none; }
  #rk-volume-guide .rk-volume-faq summary::after { content: "+"; position: absolute; top: 13px; right: 17px; font-size: 1.35rem; }
  #rk-volume-guide .rk-volume-faq details[open] summary::after { content: "−"; }
  #rk-volume-guide .rk-volume-faq-answer { padding: 0 18px 18px; color: var(--rk-text); }
  #rk-volume-guide .rk-volume-faq-answer p:last-child { margin-bottom: 0; }

  #rk-volume-guide .rk-volume-sources {
    padding: 23px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-soft);
    color: var(--rk-text);
    font-size: .83rem;
  }

  #rk-volume-guide .rk-volume-sources strong { display: block; margin-bottom: 8px; color: var(--rk-dark); }
  #rk-volume-guide .rk-volume-update { margin-top: 12px; color: var(--rk-muted); font-size: .7rem; font-weight: 800; }

  #rk-volume-guide .rk-volume-author {
    position: relative;
    overflow: hidden;
    margin-top: clamp(48px, 7vw, 82px);
    border: 1px solid var(--rk-line);
    border-radius: 27px;
    background: var(--rk-white);
  }

  #rk-volume-guide .rk-volume-author > input { position: absolute; opacity: 0; pointer-events: none; }

  #rk-volume-guide .rk-volume-author-head {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    align-items: center;
    padding: 27px clamp(22px, 5vw, 42px);
    color: #dcebf1;
    background: linear-gradient(126deg, var(--rk-dark), var(--rk-navy));
  }

  #rk-volume-guide .rk-volume-author-head h2 { margin-bottom: 4px; color: var(--rk-white); }
  #rk-volume-guide .rk-volume-author-head p { margin-bottom: 0; }

  #rk-volume-guide .rk-volume-author-mark {
    flex: 0 0 auto;
    padding: 9px 12px;
    border: 1px solid rgba(255, 255, 255, .16);
    border-radius: 999px;
    color: #93f3fc;
    font-size: .65rem;
    font-weight: 950;
    letter-spacing: .06em;
  }

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

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

  #rk-volume-guide .rk-volume-author-photo {
    width: 150px;
    height: 150px;
    margin: 0 auto 16px;
    overflow: hidden;
    border: 6px solid var(--rk-white);
    border-radius: 50%;
    box-shadow: 0 12px 28px rgba(16, 37, 54, .16);
  }

  #rk-volume-guide .rk-volume-author-photo img { width: 100%; height: 100%; object-fit: cover; }
  #rk-volume-guide .rk-volume-author-name { color: var(--rk-dark); font-size: 1.18rem; font-weight: 950; }
  #rk-volume-guide .rk-volume-author-role { margin-top: 5px; color: var(--rk-muted); font-size: .72rem; line-height: 1.55; }
  #rk-volume-guide .rk-volume-author-social-label { margin-top: 24px; color: var(--rk-muted); font-size: .63rem; font-weight: 900; letter-spacing: .05em; text-transform: uppercase; }

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

  #rk-volume-guide .rk-volume-author-social a {
    display: grid;
    width: 42px;
    height: 42px;
    place-items: center;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    color: var(--rk-dark);
    background: var(--rk-white);
    transition: transform .18s ease, color .18s ease, border-color .18s ease;
  }

  #rk-volume-guide .rk-volume-author-social a:hover,
  #rk-volume-guide .rk-volume-author-social a:focus-visible { transform: translateY(-2px); color: var(--rk-blue); border-color: var(--rk-cyan); }
  #rk-volume-guide .rk-volume-author-social svg { width: 20px; height: 20px; fill: currentColor; }

  #rk-volume-guide .rk-volume-author-main { padding: clamp(24px, 5vw, 42px); }

  #rk-volume-guide .rk-volume-author-quote {
    position: relative;
    margin: 0;
    padding: 22px 22px 22px 28px;
    border-left: 6px solid var(--rk-orange);
    border-radius: 15px;
    background: var(--rk-orange-soft);
  }

  #rk-volume-guide .rk-volume-author-quote p { margin-bottom: 0; color: var(--rk-dark); font-weight: 760; }

  #rk-volume-guide .rk-volume-author-tabs {
    display: flex;
    margin-top: 24px;
    border-bottom: 1px solid var(--rk-line);
  }

  #rk-volume-guide .rk-volume-author-tab {
    padding: 11px 14px;
    border-bottom: 3px solid transparent;
    color: var(--rk-muted);
    font-size: .72rem;
    font-weight: 900;
    cursor: pointer;
  }

  #rk-volume-guide .rk-volume-author-panel { display: none; padding-top: 18px; color: var(--rk-text); }
  #rk-volume-guide .rk-volume-author-panel p:last-child { margin-bottom: 0; }

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

  #rk-volume-author-about:checked ~ .rk-volume-author-layout label[for="rk-volume-author-about"],
  #rk-volume-author-exp:checked ~ .rk-volume-author-layout label[for="rk-volume-author-exp"],
  #rk-volume-author-sites:checked ~ .rk-volume-author-layout label[for="rk-volume-author-sites"] { color: var(--rk-dark); border-bottom-color: var(--rk-cyan); }

  #rk-volume-guide .rk-volume-site-links { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 12px; }
  #rk-volume-guide .rk-volume-site-links a { padding: 8px 11px; border-radius: 999px; background: var(--rk-soft); font-size: .7rem; text-decoration: none; }

  #rk-volume-guide .rk-volume-final-cta {
    margin-top: 28px;
    padding: clamp(32px, 6vw, 58px);
    border-radius: 27px;
    color: #dcebf1;
    background:
      radial-gradient(circle at 89% 16%, rgba(255, 106, 61, .29), transparent 25%),
      linear-gradient(126deg, #102536, #17465d);
    text-align: center;
  }

  #rk-volume-guide .rk-volume-final-cta h2 { max-width: 850px; margin-right: auto; margin-left: auto; color: var(--rk-white); }
  #rk-volume-guide .rk-volume-final-cta p { max-width: 850px; margin-right: auto; margin-left: auto; }

  @media (max-width: 980px) {
    #rk-volume-guide .rk-volume-hero-grid,
    #rk-volume-guide .rk-volume-answer,
    #rk-volume-guide .rk-volume-formula-box { grid-template-columns: 1fr; }
    #rk-volume-guide .rk-volume-grid-4,
    #rk-volume-guide .rk-volume-result-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-volume-guide .rk-volume-grid-3,
    #rk-volume-guide .rk-volume-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-volume-guide .rk-volume-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-volume-guide .rk-volume-pipe-row { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-volume-guide .rk-volume-remove { width: 100%; }
    #rk-volume-guide .rk-volume-legend { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  }

  @media (max-width: 760px) {
    #rk-volume-guide { margin: 16px auto 46px; font-size: 16px; }
    #rk-volume-guide .rk-volume-shell { border-radius: 20px; }
    #rk-volume-guide .rk-volume-hero { padding: 34px 22px; }
    #rk-volume-guide .rk-volume-body { padding-right: 17px; padding-left: 17px; }
    #rk-volume-guide .rk-volume-section { padding: 46px 0; }
    #rk-volume-guide .rk-volume-grid-2,
    #rk-volume-guide .rk-volume-grid-3,
    #rk-volume-guide .rk-volume-grid-4,
    #rk-volume-guide .rk-volume-steps,
    #rk-volume-guide .rk-volume-compare,
    #rk-volume-guide .rk-volume-checklist,
    #rk-volume-guide .rk-volume-mode-switch,
    #rk-volume-guide .rk-volume-result-grid,
    #rk-volume-guide .rk-volume-fields,
    #rk-volume-guide .rk-volume-author-layout { grid-template-columns: 1fr; }
    #rk-volume-guide .rk-volume-author-side { border-right: 0; border-bottom: 1px solid var(--rk-line); }
    #rk-volume-guide .rk-volume-author-head { align-items: flex-start; flex-direction: column; }
    #rk-volume-guide .rk-volume-legend { grid-template-columns: repeat(2, minmax(0, 1fr)); }

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

    #rk-volume-guide table { overflow: visible; border: 0; background: transparent; }

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

    #rk-volume-guide tbody tr {
      display: block;
      margin-bottom: 14px;
      overflow: hidden;
      border: 1px solid var(--rk-line);
      border-radius: 15px;
      background: var(--rk-white);
    }

    #rk-volume-guide td,
    #rk-volume-guide tbody tr:nth-child(even) td {
      display: grid;
      grid-template-columns: minmax(120px, .82fr) minmax(0, 1.18fr);
      gap: 11px;
      padding: 12px 14px;
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
      background: var(--rk-white);
    }

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

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

    #rk-volume-guide .rk-volume-breakdown tbody tr { border-color: #36566a; }
    #rk-volume-guide .rk-volume-breakdown td,
    #rk-volume-guide .rk-volume-breakdown tbody tr:nth-child(even) td { border-color: #36566a; color: #dcebf1; background: #102b3b; }
    #rk-volume-guide .rk-volume-breakdown td::before { color: #9fc0cf; }
  }

  @media (max-width: 510px) {
    #rk-volume-guide .rk-volume-pipe-row { grid-template-columns: 1fr; }
    #rk-volume-guide .rk-volume-hero-values,
    #rk-volume-guide .rk-volume-legend { grid-template-columns: 1fr 1fr; }
    #rk-volume-guide td,
    #rk-volume-guide tbody tr:nth-child(even) td { grid-template-columns: 1fr; gap: 4px; }
    #rk-volume-guide .rk-volume-author-tabs { display: grid; grid-template-columns: 1fr; }
    #rk-volume-guide .rk-volume-author-tab { border-bottom: 1px solid var(--rk-line); }
  }

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

<article id="rk-volume-guide" data-rk-volume-version="2026-08-29" aria-label="Ile wody potrzeba do wypełnienia podłogówki">
  <div class="rk-volume-shell">
    <div class="rk-volume-progress-track" aria-hidden="true"><div class="rk-volume-progress"></div></div>

    <header class="rk-volume-hero">
      <div class="rk-volume-hero-grid">
        <div>
          <span class="rk-volume-eyebrow"><b aria-hidden="true"></b> Zład instalacji • kalkulator techniczny</span>
          <div class="rk-volume-hero-title" role="heading" aria-level="2">Policz litry w rurach i całej instalacji</div>
          <p class="rk-volume-hero-lead">Wprowadź rzeczywiste długości rur albo oszacuj je z powierzchni. Dodaj magistrale, rozdzielacze, źródło ciepła i bufor, aby oddzielić pojemność samych pętli od całkowitego zładu instalacji.</p>
          <div class="rk-volume-meta">
            <span>Autor: Robert Kucharski</span>
            <span>Aktualizacja: 29 sierpnia 2026 r.</span>
            <span>Wynik w litrach</span>
          </div>
        </div>

        <aside class="rk-volume-hero-card" aria-label="Najważniejszy wzór">
          <small>Objętość przewodu</small>
          <div class="rk-volume-hero-formula">V = 0,0007854 × dᵢ² × L</div>
          <div class="rk-volume-hero-values">
            <div><strong>0,113 l/m</strong>rura 16 × 2 mm</div>
            <div><strong>0,201 l/m</strong>rura 20 × 2 mm</div>
            <div><strong>dᵢ</strong>średnica wewnętrzna</div>
            <div><strong>L</strong>długość rury</div>
          </div>
        </aside>
      </div>
    </header>

    <nav class="rk-volume-nav" aria-label="Spis treści artykułu">
      <a href="#rk-volume-answer">Szybka odpowiedź</a>
      <a href="#rk-volume-components">Co liczymy</a>
      <a href="#rk-volume-formula">Wzór</a>
      <a href="#rk-volume-calculator">Kalkulator</a>
      <a href="#rk-volume-heat-pump">Pompa ciepła</a>
      <a href="#rk-volume-fluid">Woda i glikol</a>
      <a href="#rk-volume-filling">Napełnianie</a>
      <a href="#rk-volume-faq">FAQ</a>
      <a href="#rk-volume-author">Autor</a>
    </nav>

    <main class="rk-volume-body">
      <section class="rk-volume-section" id="rk-volume-answer">
        <span class="rk-volume-kicker">Najkrótsza poprawna odpowiedź</span>
        <h2>Ile wody potrzeba do wypełnienia ogrzewania podłogowego?</h2>
        <p class="rk-volume-lead"><strong>Nie istnieje jedna liczba litrów przypisana do 100 m² domu.</strong> Ilość płynu zależy przede wszystkim od rzeczywistej długości rur i ich średnicy wewnętrznej. Do objętości pętli trzeba następnie dodać przewody wspólne, rozdzielacze, część wodną źródła, bufor oraz pozostałe elementy instalacji.</p>

        <div class="rk-volume-answer">
          <div class="rk-volume-answer-main">
            <h3>Najdokładniejsza metoda</h3>
            <p>Zsumuj długości rur z projektu, pomnóż każdy odcinek przez pojemność jednego metra wynikającą ze średnicy wewnętrznej, a następnie dodaj objętości urządzeń podane w ich dokumentacji.</p>
            <p>Przykładowo 1000 m rury 16 × 2 mm mieści geometrycznie około 113,1 l płynu. Nie jest to jeszcze całkowity zład domu.</p>
          </div>
          <aside class="rk-volume-answer-side">
            <h3>Gdy nie masz projektu</h3>
            <p>Długość można oszacować z czynnej powierzchni i rozstawu, ale trzeba oddzielnie dodać zasilanie oraz powrót każdej pętli.</p>
            <p>Taki wynik traktuj jako kosztorysowy, nie wykonawczy.</p>
          </aside>
        </div>

        <div class="rk-volume-grid-4">
          <article class="rk-volume-card"><span class="rk-volume-card-number">01</span><h3>Rury w polu</h3><p>Pętle znajdujące się w posadzce i wykonujące zasadniczą pracę grzewczą.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">02</span><h3>Dobiegi i magistrale</h3><p>Zasilanie oraz powrót między źródłem, rozdzielaczem i granicą pomieszczeń.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">03</span><h3>Urządzenia</h3><p>Rozdzielacze, wymiennik źródła, bufor, sprzęgło i inne odbiorniki.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">04</span><h3>Stan pracy</h3><p>Część zładu może być czasowo odcięta przez zawory strefowe lub siłowniki.</p></article>
        </div>
      </section>

      <section class="rk-volume-section" id="rk-volume-components">
        <span class="rk-volume-kicker">Cztery różne wartości</span>
        <h2>Objętość rur, zład całkowity i zład dostępny to nie to samo</h2>
        <p class="rk-volume-lead">Najczęstszy błąd polega na policzeniu samych pętli i nazwaniu wyniku pojemnością całej instalacji. W praktyce potrzebne są cztery wyraźnie rozdzielone liczby.</p>

        <div class="rk-volume-grid-2">
          <article class="rk-volume-card"><span class="rk-volume-card-number">V₁</span><h3>Objętość pętli</h3><p>Płyn znajdujący się w rurach ogrzewania podłogowego, obliczony z długości i średnicy wewnętrznej.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">V₂</span><h3>Objętość przewodów wspólnych</h3><p>Magistrale, piony i inne odcinki łączące źródło z rozdzielaczami.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">V₃</span><h3>Całkowity zład zimnej instalacji</h3><p>Suma rur i wszystkich napełnionych elementów. To baza do przygotowania płynu i obliczania dawki dodatku.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">V₄</span><h3>Zład hydraulicznie dostępny</h3><p>Objętość pozostająca w aktywnym obiegu w analizowanym stanie sterowania. Jest istotna przy kontroli wymagań DTR źródła.</p></article>
        </div>

        <div class="rk-volume-callout is-yellow">
          <p><strong>Nie dodajemy automatycznie 10 albo 15% „na kotłownię”.</strong> Bufor może mieć kilkadziesiąt lub kilkaset litrów, a mała instalacja bez bufora znacznie mniej. Jeżeli nie znasz pojemności urządzenia, pozostaw pole puste i oznacz wynik jako niepełny.</p>
        </div>
      </section>

      <section class="rk-volume-section" id="rk-volume-formula">
        <span class="rk-volume-kicker">Geometria zamiast zgadywania</span>
        <h2>Jak obliczyć pojemność jednego metra rury?</h2>
        <p class="rk-volume-lead">O wyniku decyduje średnica wewnętrzna, a nie sama nazwa materiału ani średnica zewnętrzna. Rury opisane jako PEX, PE-RT lub wielowarstwowe mogą mieć różne grubości ścianek.</p>

        <div class="rk-volume-formula-box">
          <div>
            <h3>Wzór praktyczny</h3>
            <p>Jeżeli średnicę wewnętrzną podajesz w milimetrach, a długość w metrach, wynik otrzymasz bezpośrednio w litrach.</p>
            <p><strong>dᵢ</strong> — średnica wewnętrzna w mm<br><strong>L</strong> — długość rury w m<br><strong>V</strong> — objętość w l</p>
          </div>
          <div class="rk-volume-formula">V [l] = 0,0007854 × dᵢ² × L</div>
        </div>

        <div class="rk-volume-table-wrap">
          <table aria-label="Orientacyjna pojemność rur na jeden metr">
            <thead><tr><th>Wymiar rury</th><th>Średnica wewnętrzna</th><th>Pojemność 1 m</th><th>Pojemność 100 m</th></tr></thead>
            <tbody>
              <tr><td data-label="Wymiar rury">16 × 2,0 mm</td><td data-label="Średnica wewnętrzna">12 mm</td><td data-label="Pojemność 1 m">0,113 l</td><td data-label="Pojemność 100 m">11,31 l</td></tr>
              <tr><td data-label="Wymiar rury">17 × 2,0 mm</td><td data-label="Średnica wewnętrzna">13 mm</td><td data-label="Pojemność 1 m">0,133 l</td><td data-label="Pojemność 100 m">13,27 l</td></tr>
              <tr><td data-label="Wymiar rury">20 × 2,0 mm</td><td data-label="Średnica wewnętrzna">16 mm</td><td data-label="Pojemność 1 m">0,201 l</td><td data-label="Pojemność 100 m">20,11 l</td></tr>
              <tr><td data-label="Wymiar rury">25 × 2,5 mm</td><td data-label="Średnica wewnętrzna">20 mm</td><td data-label="Pojemność 1 m">0,314 l</td><td data-label="Pojemność 100 m">31,42 l</td></tr>
              <tr><td data-label="Wymiar rury">32 × 3,0 mm</td><td data-label="Średnica wewnętrzna">26 mm</td><td data-label="Pojemność 1 m">0,531 l</td><td data-label="Pojemność 100 m">53,09 l</td></tr>
            </tbody>
          </table>
        </div>

        <p style="margin-top:20px">Szczegółowe wyprowadzenie znajdziesz w opracowaniu <a href="https://projekt-ogrzewania.pl/ile-wody-miesci-sie-w-1-metrze-rury-pex-pert-16/">ile wody mieści się w jednym metrze rury 16 mm</a>. Jeżeli dopiero szacujesz długość przewodów, pomocny będzie również <a href="https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/">kalkulator ilości rury do podłogówki</a>.</p>
      </section>

      <section class="rk-volume-section" id="rk-volume-calculator">
        <span class="rk-volume-kicker">Jedno narzędzie zamiast kilku symulatorów</span>
        <h2>Kalkulator zładu instalacji podłogowej</h2>
        <p class="rk-volume-lead">Tryb długości jest dokładniejszy i powinien być używany, gdy masz tabelę pętli lub projekt. Tryb powierzchni daje wynik orientacyjny. Rozstaw i średnica rury pozostają niezależnymi danymi.</p>

        <div class="rk-volume-tool">
          <div class="rk-volume-tool-head">
            <span class="rk-volume-kicker" style="color:#84f3ff">Kalkulator interaktywny</span>
            <h2>Policz zład i ilość płynu do przygotowania</h2>
            <p>Uzupełnij rury oraz elementy instalacji. Kalkulator nie dopisuje ukrytych procentów za rozdzielacz, źródło ani bufor.</p>
          </div>

          <form id="rk-volume-form" class="rk-volume-tool-body" aria-label="Kalkulator zładu ogrzewania podłogowego">
            <div class="rk-volume-mode-switch" role="radiogroup" aria-label="Sposób obliczania długości rur">
              <input type="radio" name="rk-volume-mode" id="rk-volume-mode-length" value="length" checked>
              <label for="rk-volume-mode-length"><strong>Mam długości rur</strong><small>Rekomendowany tryb na podstawie projektu lub zestawienia pętli.</small></label>
              <input type="radio" name="rk-volume-mode" id="rk-volume-mode-area" value="area">
              <label for="rk-volume-mode-area"><strong>Znam tylko powierzchnię</strong><small>Szacunek długości z czynnego pola, rozstawu i dobiegów.</small></label>
            </div>

            <div class="rk-volume-mode-panel" id="rk-volume-panel-length">
              <div class="rk-volume-calc-block">
                <h3>Krok 1. Rzeczywiste odcinki rur</h3>
                <p>Jedna pozycja może oznaczać pojedynczą pętlę albo sumę odcinków wykonanych rurą o tym samym wymiarze.</p>
                <div id="rk-volume-length-rows">
                  <div class="rk-volume-pipe-row" data-row-kind="length">
                    <div class="rk-volume-field"><label>Nazwa odcinka</label><input class="rk-volume-row-name" type="text" value="Pętle podłogowe" maxlength="60"></div>
                    <div class="rk-volume-field"><label>Kategoria</label><select class="rk-volume-row-category"><option value="loops" selected>Pętle</option><option value="mains">Magistrale</option></select></div>
                    <div class="rk-volume-field"><label>Rura</label><select class="rk-volume-row-pipe"><option value="12" selected>16 × 2,0 mm</option><option value="13">17 × 2,0 mm</option><option value="16">20 × 2,0 mm</option><option value="20">25 × 2,5 mm</option><option value="26">32 × 3,0 mm</option><option value="custom">Własna średnica</option></select><input class="rk-volume-custom-diameter" type="number" min="2" max="100" step="0.1" value="12" inputmode="decimal" hidden><small>Własna wartość oznacza średnicę wewnętrzną.</small></div>
                    <div class="rk-volume-field"><label>Łączna długość</label><input class="rk-volume-row-length" type="number" min="0" max="20000" step="0.1" value="720" inputmode="decimal"><small>m</small></div>
                    <button class="rk-volume-remove" type="button" aria-label="Usuń odcinek">×</button>
                  </div>
                  <div class="rk-volume-pipe-row" data-row-kind="length">
                    <div class="rk-volume-field"><label>Nazwa odcinka</label><input class="rk-volume-row-name" type="text" value="Zasilanie i powrót" maxlength="60"></div>
                    <div class="rk-volume-field"><label>Kategoria</label><select class="rk-volume-row-category"><option value="loops">Pętle</option><option value="mains" selected>Magistrale</option></select></div>
                    <div class="rk-volume-field"><label>Rura</label><select class="rk-volume-row-pipe"><option value="12">16 × 2,0 mm</option><option value="13">17 × 2,0 mm</option><option value="16">20 × 2,0 mm</option><option value="20">25 × 2,5 mm</option><option value="26" selected>32 × 3,0 mm</option><option value="custom">Własna średnica</option></select><input class="rk-volume-custom-diameter" type="number" min="2" max="100" step="0.1" value="26" inputmode="decimal" hidden><small>Długość zasilania i powrotu łącznie.</small></div>
                    <div class="rk-volume-field"><label>Łączna długość</label><input class="rk-volume-row-length" type="number" min="0" max="20000" step="0.1" value="20" inputmode="decimal"><small>m</small></div>
                    <button class="rk-volume-remove" type="button" aria-label="Usuń odcinek">×</button>
                  </div>
                </div>
                <button class="rk-volume-add" id="rk-volume-add-length" type="button">+ Dodaj odcinek rury</button>
              </div>
            </div>

            <div class="rk-volume-mode-panel" id="rk-volume-panel-area" hidden>
              <div class="rk-volume-calc-block">
                <h3>Krok 1. Szacunek rur z powierzchni</h3>
                <p>Podaj powierzchnię rzeczywiście ogrzewaną. Długość dobiegów oznacza odległość w jedną stronę i jest mnożona przez dwa oraz liczbę pętli.</p>
                <div class="rk-volume-fields">
                  <div class="rk-volume-field"><label for="rk-volume-area">Powierzchnia czynna</label><input id="rk-volume-area" type="number" min="1" max="2000" step="0.1" value="100" inputmode="decimal"><small>m²</small></div>
                  <div class="rk-volume-field"><label for="rk-volume-spacing">Rozstaw rur</label><select id="rk-volume-spacing"><option value="5">5 cm</option><option value="10">10 cm</option><option value="12.5">12,5 cm</option><option value="15" selected>15 cm</option><option value="20">20 cm</option></select><small>Niezależny od średnicy rury.</small></div>
                  <div class="rk-volume-field"><label for="rk-volume-geometry">Korekta geometrii</label><input id="rk-volume-geometry" type="number" min="0" max="15" step="0.5" value="3" inputmode="decimal"><small>% na łuki i niedoskonałość podziału</small></div>
                  <div class="rk-volume-field"><label for="rk-volume-loop-count">Liczba pętli</label><input id="rk-volume-loop-count" type="number" min="1" max="100" step="1" value="8" inputmode="numeric"><small>szt.</small></div>
                  <div class="rk-volume-field"><label for="rk-volume-approach">Średni dobieg jednej pętli</label><input id="rk-volume-approach" type="number" min="0" max="100" step="0.5" value="7" inputmode="decimal"><small>m w jedną stronę</small></div>
                  <div class="rk-volume-field"><label for="rk-volume-area-pipe">Rura pętli</label><select id="rk-volume-area-pipe"><option value="12" selected>16 × 2,0 mm</option><option value="13">17 × 2,0 mm</option><option value="16">20 × 2,0 mm</option><option value="20">25 × 2,5 mm</option><option value="custom">Własna średnica</option></select><input id="rk-volume-area-custom" class="rk-volume-custom-diameter" type="number" min="2" max="100" step="0.1" value="12" inputmode="decimal" hidden><small>Liczy się światło przewodu.</small></div>
                </div>
              </div>

              <div class="rk-volume-calc-block">
                <h3>Krok 2. Przewody wspólne poza pętlami</h3>
                <p>Dodaj łączną długość zasilania i powrotu. Nie podwajaj odcinka, jeżeli wpisałeś już obie rury łącznie.</p>
                <div id="rk-volume-area-main-rows">
                  <div class="rk-volume-pipe-row" data-row-kind="area-main">
                    <div class="rk-volume-field"><label>Nazwa odcinka</label><input class="rk-volume-row-name" type="text" value="Zasilanie i powrót" maxlength="60"></div>
                    <div class="rk-volume-field"><label>Kategoria</label><select class="rk-volume-row-category" disabled><option value="mains" selected>Magistrale</option></select></div>
                    <div class="rk-volume-field"><label>Rura</label><select class="rk-volume-row-pipe"><option value="12">16 × 2,0 mm</option><option value="13">17 × 2,0 mm</option><option value="16">20 × 2,0 mm</option><option value="20">25 × 2,5 mm</option><option value="26" selected>32 × 3,0 mm</option><option value="custom">Własna średnica</option></select><input class="rk-volume-custom-diameter" type="number" min="2" max="100" step="0.1" value="26" inputmode="decimal" hidden><small>Średnica wewnętrzna z dokumentacji rury.</small></div>
                    <div class="rk-volume-field"><label>Łączna długość</label><input class="rk-volume-row-length" type="number" min="0" max="20000" step="0.1" value="20" inputmode="decimal"><small>m</small></div>
                    <button class="rk-volume-remove" type="button" aria-label="Usuń odcinek">×</button>
                  </div>
                </div>
                <button class="rk-volume-add" id="rk-volume-add-area-main" type="button">+ Dodaj magistralę</button>
              </div>
            </div>

            <div class="rk-volume-calc-block">
              <h3>Kolejny krok. Pojemność urządzeń</h3>
              <p>Wpisz wartości odczytane z dokumentacji. Zero oznacza brak elementu albo brak jego uwzględnienia w obliczeniu.</p>
              <div class="rk-volume-fields">
                <div class="rk-volume-field"><label for="rk-volume-manifolds">Rozdzielacze</label><input id="rk-volume-manifolds" type="number" min="0" max="5000" step="0.1" value="2" inputmode="decimal"><small>l łącznie</small></div>
                <div class="rk-volume-field"><label for="rk-volume-source">Źródło lub wymiennik</label><input id="rk-volume-source" type="number" min="0" max="5000" step="0.1" value="6" inputmode="decimal"><small>l po stronie instalacji</small></div>
                <div class="rk-volume-field"><label for="rk-volume-buffer">Bufor</label><input id="rk-volume-buffer" type="number" min="0" max="10000" step="0.1" value="0" inputmode="decimal"><small>l</small></div>
                <div class="rk-volume-field"><label for="rk-volume-separator">Sprzęgło lub separator</label><input id="rk-volume-separator" type="number" min="0" max="5000" step="0.1" value="0" inputmode="decimal"><small>l</small></div>
                <div class="rk-volume-field"><label for="rk-volume-other">Inne elementy</label><input id="rk-volume-other" type="number" min="0" max="10000" step="0.1" value="0" inputmode="decimal"><small>l, np. dodatkowe odbiorniki</small></div>
                <div class="rk-volume-field"><label for="rk-volume-isolated">Objętość odcinana</label><input id="rk-volume-isolated" type="number" min="0" max="10000" step="0.1" value="0" inputmode="decimal"><small>l niedostępne w analizowanym stanie</small></div>
              </div>
            </div>

            <div class="rk-volume-calc-block">
              <h3>Kontrola DTR, rezerwa i dodatek</h3>
              <div class="rk-volume-fields">
                <div class="rk-volume-field"><label for="rk-volume-dtr-mode">Wymaganie DTR</label><select id="rk-volume-dtr-mode"><option value="none" selected>Nie porównuj</option><option value="fixed">Minimalna objętość w litrach</option><option value="factor">Wartość w l/kW</option></select><small>Wpisz wyłącznie wartość z dokumentacji urządzenia.</small></div>
                <div class="rk-volume-field rk-volume-dtr-fields" id="rk-volume-dtr-fixed-wrap" hidden><label for="rk-volume-dtr-fixed">Minimum z DTR</label><input id="rk-volume-dtr-fixed" type="number" min="0" max="10000" step="0.1" value="100" inputmode="decimal"><small>l dostępnego zładu</small></div>
                <div class="rk-volume-field rk-volume-dtr-fields" id="rk-volume-dtr-factor-wrap" hidden><label for="rk-volume-dtr-factor">Wartość z DTR</label><input id="rk-volume-dtr-factor" type="number" min="0" max="100" step="0.1" value="10" inputmode="decimal"><small>l/kW</small></div>
                <div class="rk-volume-field rk-volume-dtr-fields" id="rk-volume-dtr-power-wrap" hidden><label for="rk-volume-dtr-power">Moc urządzenia</label><input id="rk-volume-dtr-power" type="number" min="0" max="500" step="0.1" value="8" inputmode="decimal"><small>kW według właściwego punktu DTR</small></div>
                <div class="rk-volume-field"><label for="rk-volume-reserve">Rezerwa płynu</label><input id="rk-volume-reserve" type="number" min="0" max="30" step="0.5" value="3" inputmode="decimal"><small>% do przygotowania, nie część zładu</small></div>
                <div class="rk-volume-field"><label for="rk-volume-fluid">Rodzaj płynu</label><select id="rk-volume-fluid"><option value="water" selected>Woda instalacyjna</option><option value="glycol">Roztwór glikolu</option></select><small>Objętość geometryczna rur pozostaje taka sama.</small></div>
                <div class="rk-volume-field"><label for="rk-volume-dose-mode">Sposób dawkowania dodatku</label><select id="rk-volume-dose-mode"><option value="none" selected>Nie obliczaj</option><option value="ml100">ml na 100 l zładu</option><option value="percent">Procent objętości</option></select><small>Proporcja musi pochodzić z instrukcji używanego środka.</small></div>
                <div class="rk-volume-field" id="rk-volume-dose-value-wrap" hidden><label for="rk-volume-dose-value">Dawka z instrukcji</label><input id="rk-volume-dose-value" type="number" min="0" max="10000" step="0.1" value="500" inputmode="decimal"><small id="rk-volume-dose-unit">ml na 100 l</small></div>
              </div>
            </div>

            <div class="rk-volume-actions">
              <button class="rk-volume-calculate" type="submit">Przelicz zład instalacji</button>
              <button class="rk-volume-reset" id="rk-volume-reset" type="button">Przywróć przykład</button>
            </div>
          </form>

          <div class="rk-volume-results" id="rk-volume-results" aria-live="polite">
            <h3>Wynik obliczenia</h3>
            <div class="rk-volume-result-grid">
              <div class="rk-volume-result-card"><small>Objętość pętli</small><div class="rk-volume-result-number" id="rk-volume-result-loops">— l</div></div>
              <div class="rk-volume-result-card"><small>Przewody wspólne</small><div class="rk-volume-result-number" id="rk-volume-result-mains">— l</div></div>
              <div class="rk-volume-result-card is-main"><small>Całkowity zład zimnej instalacji</small><div class="rk-volume-result-number" id="rk-volume-result-total">— l</div></div>
              <div class="rk-volume-result-card"><small>Zład dostępny w analizowanym stanie</small><div class="rk-volume-result-number" id="rk-volume-result-accessible">— l</div></div>
              <div class="rk-volume-result-card"><small>Płyn do przygotowania z rezerwą</small><div class="rk-volume-result-number" id="rk-volume-result-prepare">— l</div></div>
              <div class="rk-volume-result-card"><small>Orientacyjna długość wszystkich rur</small><div class="rk-volume-result-number" id="rk-volume-result-length">— m</div></div>
              <div class="rk-volume-result-card"><small>Dawka według wpisanej instrukcji</small><div class="rk-volume-result-number" id="rk-volume-result-dose">—</div></div>
              <div class="rk-volume-result-card"><small>Porównanie z wymaganiem DTR</small><div class="rk-volume-result-number" id="rk-volume-result-dtr">—</div></div>
            </div>

            <div class="rk-volume-status" id="rk-volume-status">Uzupełnij dane i przelicz instalację.</div>

            <div class="rk-volume-chart-wrap" aria-label="Dynamiczny wykres składu zładu instalacji">
              <h4>Skład całkowitego zładu</h4>
              <div class="rk-volume-chart" role="img" aria-label="Udział pętli, magistral, źródła, bufora i pozostałych elementów">
                <div class="rk-volume-segment is-loops" id="rk-volume-segment-loops"></div>
                <div class="rk-volume-segment is-mains" id="rk-volume-segment-mains"></div>
                <div class="rk-volume-segment is-source" id="rk-volume-segment-source"></div>
                <div class="rk-volume-segment is-buffer" id="rk-volume-segment-buffer"></div>
                <div class="rk-volume-segment is-other" id="rk-volume-segment-other"></div>
              </div>
              <div class="rk-volume-legend">
                <div><span class="rk-volume-dot" style="background:var(--rk-cyan)"></span>Pętle<b id="rk-volume-legend-loops">—</b></div>
                <div><span class="rk-volume-dot" style="background:var(--rk-blue)"></span>Magistrale<b id="rk-volume-legend-mains">—</b></div>
                <div><span class="rk-volume-dot" style="background:var(--rk-orange)"></span>Źródło<b id="rk-volume-legend-source">—</b></div>
                <div><span class="rk-volume-dot" style="background:var(--rk-purple)"></span>Bufor<b id="rk-volume-legend-buffer">—</b></div>
                <div><span class="rk-volume-dot" style="background:var(--rk-yellow)"></span>Pozostałe<b id="rk-volume-legend-other">—</b></div>
              </div>
            </div>

            <div class="rk-volume-breakdown">
              <h4>Szczegółowe składniki obliczenia</h4>
              <table aria-label="Szczegółowa tabela składników zładu">
                <thead><tr><th>Element</th><th>Dane</th><th>Objętość</th><th>Udział</th></tr></thead>
                <tbody id="rk-volume-breakdown-body"><tr><td data-label="Element">Brak wyniku</td><td data-label="Dane">—</td><td data-label="Objętość">—</td><td data-label="Udział">—</td></tr></tbody>
              </table>
            </div>
          </div>
        </div>

        <div class="rk-volume-inline-cta">
          <span class="rk-volume-kicker" style="color:#82f3ff">Granica kalkulatora</span>
          <h3>Kalkulator policzy to, co wpiszesz — nie wykryje brakujących odcinków</h3>
          <p>Jeżeli długości pętli są szacowane z powierzchni albo nie masz danych o magistralach, rozdzielaczach, wymienniku źródła, buforze i obiegach zamykanych przez siłowniki, wynik może być matematycznie poprawny, ale technicznie niepełny. W projekcie każda pętla i wspólny odcinek są rozrysowane, a zład można zestawić z wymaganiami DTR źródła.</p>
          <a class="rk-volume-cta-button rk-volume-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z obliczonym zładem instalacji</a>
          <small class="rk-volume-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
        </div>
      </section>

      <section class="rk-volume-section" id="rk-volume-estimate">
        <span class="rk-volume-kicker">Szacunek bez fałszywej precyzji</span>
        <h2>Ile wody mieści podłogówka na 100 m²?</h2>
        <p class="rk-volume-lead">Powierzchnia sama nie wystarcza. Ten sam dom może mieć inną powierzchnię czynną, rozstawy, liczbę pętli, dobiegi i średnice. Dlatego poprawny przykład musi ujawniać wszystkie założenia.</p>

        <div class="rk-volume-table-wrap">
          <table aria-label="Przykład pojemności rur na 100 metrów kwadratowych czynnej powierzchni">
            <thead><tr><th>Rozstaw</th><th>Długość w polu</th><th>Objętość w rurze 16 × 2</th><th>Czego nie obejmuje</th></tr></thead>
            <tbody>
              <tr><td data-label="Rozstaw">10 cm</td><td data-label="Długość w polu">około 1000 m</td><td data-label="Objętość w rurze 16 × 2">około 113,1 l</td><td data-label="Czego nie obejmuje">dobiegów i urządzeń</td></tr>
              <tr><td data-label="Rozstaw">12,5 cm</td><td data-label="Długość w polu">około 800 m</td><td data-label="Objętość w rurze 16 × 2">około 90,5 l</td><td data-label="Czego nie obejmuje">dobiegów i urządzeń</td></tr>
              <tr><td data-label="Rozstaw">15 cm</td><td data-label="Długość w polu">około 667 m</td><td data-label="Objętość w rurze 16 × 2">około 75,4 l</td><td data-label="Czego nie obejmuje">dobiegów i urządzeń</td></tr>
              <tr><td data-label="Rozstaw">20 cm</td><td data-label="Długość w polu">około 500 m</td><td data-label="Objętość w rurze 16 × 2">około 56,5 l</td><td data-label="Czego nie obejmuje">dobiegów i urządzeń</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-volume-callout">
          <p><strong>To zestawienie nie dobiera rozstawu.</strong> Pokazuje wyłącznie geometryczną zależność między rozstawem, długością i pojemnością przewodu. Rozstaw powinien wynikać z wymaganej mocy, temperatury wody, konstrukcji podłogi i oporu okładziny.</p>
        </div>

        <p style="margin-top:22px">Sposób dzielenia instalacji opisuje artykuł <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/">ile metrów podłogówki może mieć jedna pętla</a>. Sama długość nadal nie przesądza poprawności hydraulicznej obwodu.</p>
      </section>

      <section class="rk-volume-section" id="rk-volume-heat-pump">
        <span class="rk-volume-kicker">Całkowita objętość nie zawsze jest dostępna</span>
        <h2>Pompa ciepła, minimalny zład i wymagania DTR</h2>
        <p class="rk-volume-lead">Nie będziemy stosować uniwersalnego przelicznika 10 albo 15 l/kW jako zasady wynikającej z PN-EN 14511. Zakres tej serii dotyczy oceny i parametrów urządzeń, a nie jednego obowiązkowego zładu każdej instalacji. Wartość kontrolną należy przepisać z dokumentacji konkretnego urządzenia.</p>

        <div class="rk-volume-compare">
          <div class="is-wrong">
            <h3>Zbyt proste rozumowanie</h3>
            <p>Pompa ma 8 kW, więc instalacja zawsze musi mieć 120 l. Jeżeli kalkulator pokaże mniej, konieczny jest bufor.</p>
          </div>
          <div class="is-right">
            <h3>Poprawna kolejność</h3>
            <p>Odczytaj wymaganie z DTR, policz zład dostępny w najtrudniejszym stanie pracy i dopiero wtedy przeanalizuj sposób uzupełnienia ewentualnego deficytu.</p>
          </div>
        </div>

        <div class="rk-volume-grid-3">
          <article class="rk-volume-card"><span class="rk-volume-card-number">01</span><h3>Siłowniki i strefy</h3><p>Zamknięte pętle mogą odciąć część wody od obiegu aktywnego podczas pracy źródła.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">02</span><h3>Konfiguracja bufora</h3><p>Bufor szeregowy, równoległy i sprzęgło realizują inne funkcje. Nie są zamiennymi nazwami tego samego układu.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">03</span><h3>Sterowanie przepływem</h3><p>Minimalny przepływ i minimalna objętość to dwa różne wymagania, które trzeba sprawdzić osobno.</p></article>
        </div>

        <p style="margin-top:22px">Większy istniejący zład dostępny zwykle zmniejsza, a nie zwiększa brak objętości do uzupełnienia. Funkcje i sposoby włączenia zbiornika opisuje poradnik o <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">buforze ciepła w ogrzewaniu podłogowym</a>.</p>
      </section>

      <section class="rk-volume-section" id="rk-volume-hydraulics">
        <span class="rk-volume-kicker">Litry nie wyznaczają punktu pracy pompy</span>
        <h2>Zład instalacji a przepływ i strata ciśnienia</h2>
        <p class="rk-volume-lead">Całkowita ilość wody informuje o pojemności układu. Nie mówi, jaki przepływ ma zapewnić pompa ani jakie ciśnienie musi pokonać.</p>

        <div class="rk-volume-grid-3">
          <article class="rk-volume-card"><span class="rk-volume-card-number">V</span><h3>Zład w litrach</h3><p>Wynika z geometrii rur oraz objętości urządzeń. Służy m.in. do przygotowania płynu i obliczania jego rozszerzenia.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">V̇</span><h3>Przepływ</h3><p>Wynika z mocy przenoszonej przez instalację, właściwości płynu i projektowej różnicy temperatur.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">Δp</span><h3>Strata ciśnienia</h3><p>Zależy od przepływu, długości, średnicy wewnętrznej, armatury i właściwości medium na drodze krytycznej.</p></article>
        </div>

        <div class="rk-volume-callout is-warm">
          <p><strong>Większa średnica rury zwiększa pojemność, ale przy tym samym przepływie zazwyczaj zmniejsza opory liniowe.</strong> Nie oznacza automatycznie potrzeby mocniejszego źródła ani większej pompy. Bezwładność podłogówki zależy głównie od całej konstrukcji podłogi, zwłaszcza masy jastrychu, a nie tylko od kilku dodatkowych litrów wody.</p>
        </div>

        <p style="margin-top:22px">Zależności przepływu i wysokości podnoszenia rozwija artykuł <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa w instalacji ogrzewania podłogowego</a>.</p>
      </section>

      <section class="rk-volume-section" id="rk-volume-fluid">
        <span class="rk-volume-kicker">Ta sama geometria, inne właściwości</span>
        <h2>Woda, glikol i dodatki do instalacji</h2>
        <p class="rk-volume-lead">Rura o objętości 10 l nadal mieści geometrycznie 10 l, niezależnie od tego, czy napełnia ją woda, czy roztwór glikolu. Zmieniają się natomiast gęstość, ciepło właściwe, lepkość i rozszerzalność medium.</p>

        <div class="rk-volume-grid-3">
          <article class="rk-volume-card"><span class="rk-volume-card-number">H₂O</span><h3>Woda instalacyjna</h3><p>Jej przydatność ocenia się na podstawie parametrów chemicznych, materiałów systemu i wymagań dokumentacji. Sama nazwa „kranówka” nie wystarcza do oceny.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">GL</span><h3>Roztwór glikolu</h3><p>Stężenie powinno odpowiadać wymaganej ochronie, a hydraulika i naczynie wymagają sprawdzenia z właściwościami konkretnego roztworu.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">%</span><h3>Inhibitor lub dodatek</h3><p>Nie istnieje jedna dawka 0,5% dla wszystkich produktów. Kalkulator liczy ją dopiero po wpisaniu proporcji z instrukcji środka.</p></article>
        </div>

        <div class="rk-volume-callout">
          <p><strong>Woda demineralizowana i inhibitor nie są automatycznym zestawem dla każdej instalacji.</strong> Należy sprawdzić wymagania źródła, materiały, jakość wody napełniającej oraz zgodność zastosowanego uzdatniania. VDI 2035 opisuje zapobieganie osadom i korozji wodnej w instalacjach grzewczych, ale nie zastępuje dokumentacji konkretnego układu.</p>
        </div>

        <p style="margin-top:22px">Rozwinięcie znajdziesz w poradnikach: <a href="https://projekt-ogrzewania.pl/czym-napelnic-instalacje-ogrzewania-podlogowego/">czym napełnić ogrzewanie podłogowe</a>, <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-w-ogrzewaniu-podlogowym-dlaczego-to-najlepszy-wybor-zamiast-zwyklej-wody-z-kranu/">woda demineralizowana w podłogówce</a>, <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-z-inhibitorem-korozji-do-ogrzewania-podlogowego/">woda z inhibitorem korozji</a> oraz <a href="https://projekt-ogrzewania.pl/glikol-w-ogrzewaniu-podlogowym-prawda-i-mity-ktore-musi-znac-kazdy-inwestor/">glikol w ogrzewaniu podłogowym</a>.</p>
      </section>

      <section class="rk-volume-section" id="rk-volume-expansion">
        <span class="rk-volume-kicker">Zład jest dopiero pierwszą daną</span>
        <h2>Czy z kalkulatora można dobrać naczynie wzbiorcze?</h2>
        <p class="rk-volume-lead"><strong>Nie na podstawie samych litrów.</strong> Zład pozwala obliczyć przyrost objętości płynu po podgrzaniu, ale nominalna pojemność naczynia zależy również od ciśnień i warunków pracy instalacji.</p>

        <div class="rk-volume-grid-3">
          <article class="rk-volume-card"><span class="rk-volume-card-number">T</span><h3>Zakres temperatur</h3><p>Potrzebne są temperatura napełnienia, minimalna i maksymalna temperatura obliczeniowa płynu.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">p₀</span><h3>Ciśnienie wstępne</h3><p>Wynika m.in. z wysokości statycznej, lokalizacji naczynia i wymaganej rezerwy ciśnienia.</p></article>
          <article class="rk-volume-card"><span class="rk-volume-card-number">pₘ</span><h3>Ciśnienie maksymalne</h3><p>Trzeba uwzględnić dopuszczalne ciśnienie instalacji oraz nastawę zaworu bezpieczeństwa.</p></article>
        </div>

        <p style="margin-top:22px">Dlatego nie zastosujemy uproszczenia „naczynie ma mieć dwa razy objętość rozszerzenia”. Pełną procedurę należy przeprowadzić osobno — zobacz opracowanie <a href="https://projekt-ogrzewania.pl/naczynie-wzbiorcze/">jak dobrać naczynie wzbiorcze</a>.</p>
      </section>

      <section class="rk-volume-section" id="rk-volume-filling">
        <span class="rk-volume-kicker">Od obliczenia do uruchomienia</span>
        <h2>Jak przygotować i wykorzystać wynik podczas napełniania?</h2>
        <div class="rk-volume-steps">
          <article class="rk-volume-step"><h3>Zbierz długości rur</h3><p>Najlepiej użyj zestawienia pętli i rzeczywistych długości przewodów wspólnych. Nie podwajaj odcinka już wpisanego jako zasilanie plus powrót.</p></article>
          <article class="rk-volume-step"><h3>Sprawdź średnice wewnętrzne</h3><p>Odczytaj wymiar i grubość ścianki albo bezpośrednio średnicę wewnętrzną z dokumentacji zastosowanych rur.</p></article>
          <article class="rk-volume-step"><h3>Dodaj objętości urządzeń</h3><p>Zsumuj rozdzielacze, źródło, bufor, sprzęgło i dodatkowe obiegi. Brak danych oznacz w zestawieniu zamiast zastępować go przypadkowym procentem.</p></article>
          <article class="rk-volume-step"><h3>Określ wymagania płynu</h3><p>Sprawdź jakość wody, wymagane uzdatnianie, stężenie ochronne glikolu lub dawkowanie dodatku dla konkretnego produktu.</p></article>
          <article class="rk-volume-step"><h3>Napełniaj i płucz obwody</h3><p>Postępuj zgodnie z procedurą instalacji i urządzeń. Pętle płucze się w kontrolowany sposób, usuwając powietrze bez przypadkowego mieszania obiegów.</p></article>
          <article class="rk-volume-step"><h3>Udokumentuj dolewki</h3><p>Powtarzające się uzupełnianie płynu nie powinno być uznawane za normalny stały proces. Może wprowadzać tlen i wskazywać problem ze szczelnością lub ciśnieniem.</p></article>
        </div>

        <div class="rk-volume-callout is-yellow">
          <p><strong>Nie wpiszemy uniwersalnej normy 2–5 l dolewki po uruchomieniu ani stałego ciśnienia 1,5–2 bar.</strong> Właściwe ciśnienie zależy m.in. od wysokości statycznej i nastawy naczynia. Każdą nietypową utratę ciśnienia trzeba wyjaśnić.</p>
        </div>

        <p style="margin-top:22px">Przed zakryciem rur wykonuje się <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próbę szczelności ogrzewania podłogowego</a>. Jeżeli przepływy są niestabilne, sprawdź również <a href="https://projekt-ogrzewania.pl/objawy-zapowietrzenia-ogrzewania-podlogowego/">objawy zapowietrzenia instalacji</a>.</p>
      </section>

      <section class="rk-volume-section" id="rk-volume-errors">
        <span class="rk-volume-kicker">Najczęstsze pomyłki</span>
        <h2>Co najczęściej zniekształca wynik?</h2>
        <div class="rk-volume-grid-3">
          <article class="rk-volume-warning"><span class="rk-volume-card-number">01</span><h3>Liczenie średnicy zewnętrznej</h3><p>Rura 16 × 2 mm nie ma 16 mm światła. Do obliczenia objętości przyjmujemy około 12 mm średnicy wewnętrznej.</p></article>
          <article class="rk-volume-warning"><span class="rk-volume-card-number">02</span><h3>Powierzchnia zamiast długości</h3><p>Dom 100 m² może mieć różne powierzchnie czynne, rozstawy i dobiegi. Metraż budynku nie jest objętością instalacji.</p></article>
          <article class="rk-volume-warning"><span class="rk-volume-card-number">03</span><h3>Pomijanie magistral</h3><p>Liczenie tylko rur w posadzce zaniża wynik, zwłaszcza przy kilku rozdzielaczach i znacznych odległościach od źródła.</p></article>
          <article class="rk-volume-warning"><span class="rk-volume-card-number">04</span><h3>Podwójne liczenie powrotu</h3><p>Jeżeli długość 20 m oznacza już zasilanie i powrót łącznie, nie wolno mnożyć jej ponownie przez dwa.</p></article>
          <article class="rk-volume-warning"><span class="rk-volume-card-number">05</span><h3>Stały procent na urządzenia</h3><p>Uniwersalny dodatek nie odróżnia małego wymiennika od dużego bufora. Wprowadzamy rzeczywiste dane.</p></article>
          <article class="rk-volume-warning"><span class="rk-volume-card-number">06</span><h3>Mylenie zładu z hydrauliką</h3><p>Litry nie wyznaczają przepływu, prędkości ani oporu pętli. Te parametry wymagają osobnych obliczeń.</p></article>
        </div>
      </section>

      <section class="rk-volume-section" id="rk-volume-checklist">
        <span class="rk-volume-kicker">Kontrola przed zamówieniem płynu</span>
        <h2>Checklista kompletnego obliczenia zładu</h2>
        <ul class="rk-volume-checklist">
          <li>Mam długość każdej pętli albo świadomie korzystam z trybu szacunkowego.</li>
          <li>Znam średnicę wewnętrzną każdej grupy przewodów.</li>
          <li>Dodałem zasilanie i powrót między źródłem a rozdzielaczami.</li>
          <li>Nie policzyłem tego samego odcinka dwukrotnie.</li>
          <li>Wpisałem pojemność rozdzielaczy i części wodnej źródła.</li>
          <li>Uwzględniłem bufor, sprzęgło i dodatkowe obiegi, jeśli występują.</li>
          <li>Oddzieliłem zład całkowity od objętości dostępnej przy zamkniętych strefach.</li>
          <li>Wymaganie minimalne przepisałem z właściwej DTR.</li>
          <li>Dawkę dodatku przepisałem z instrukcji używanego środka.</li>
          <li>Rezerwy płynu nie doliczyłem do nominalnego zładu instalacji.</li>
          <li>Dobór naczynia wykonuję z temperatur i ciśnień, a nie z jednego mnożnika.</li>
          <li>Po napełnieniu dokumentuję ilość płynu i każdą późniejszą dolewkę.</li>
        </ul>
      </section>

      <section class="rk-volume-section" id="rk-volume-faq">
        <span class="rk-volume-kicker">Najczęstsze pytania</span>
        <h2>Ile wody potrzeba do podłogówki — FAQ</h2>
        <div class="rk-volume-faq">
          <details><summary>Ile wody mieści się w rurze 16 × 2 mm?</summary><div class="rk-volume-faq-answer"><p>Przy średnicy wewnętrznej około 12 mm jest to około 0,113 l na metr, czyli około 11,31 l na 100 m przewodu. Ostatecznie należy użyć rzeczywistej średnicy wewnętrznej zastosowanej rury.</p></div></details>
          <details><summary>Ile wody mieści 100 m² ogrzewania podłogowego?</summary><div class="rk-volume-faq-answer"><p>Nie ma jednej wartości. Dla 100 m² czynnej powierzchni i rury 16 × 2 mm sama objętość przewodu w polu wynosi orientacyjnie około 113 l przy rozstawie 10 cm, 90,5 l przy 12,5 cm, 75,4 l przy 15 cm i 56,5 l przy 20 cm. Trzeba dodać dobiegi, magistrale i urządzenia.</p></div></details>
          <details><summary>Czy do objętości pętli można dodać 10 albo 15% na osprzęt?</summary><div class="rk-volume-faq-answer"><p>Taki procent może służyć wyłącznie jako bardzo luźny kosztorys, ale nie daje wiarygodnego zładu. Poprawniej jest dodać rzeczywiste pojemności rozdzielaczy, źródła, bufora, sprzęgła i pozostałych elementów.</p></div></details>
          <details><summary>Czy rozstaw rur zależy od ich średnicy?</summary><div class="rk-volume-faq-answer"><p>Nie bezpośrednio. Rozstaw dobiera się do wymaganej mocy podłogi, temperatury wody, konstrukcji posadzki i oporu okładziny. Średnica wpływa m.in. na pojemność oraz opory hydrauliczne, ale nie narzuca automatycznie rozstawu.</p></div></details>
          <details><summary>Czy większy zład wymaga większego bufora?</summary><div class="rk-volume-faq-answer"><p>Nie jako uniwersalna zasada. Jeżeli urządzenie wymaga minimalnej dostępnej objętości, większy istniejący zład może zmniejszyć ewentualny deficyt. Potrzebę, funkcję i sposób włączenia bufora analizuje się dla konkretnej instalacji oraz sterowania.</p></div></details>
          <details><summary>Czy PN-EN 14511 wymaga 10–15 l wody na każdy kW pompy ciepła?</summary><div class="rk-volume-faq-answer"><p>Nie należy przedstawiać tej wartości jako uniwersalnego wymagania normy. Minimalną objętość i minimalny przepływ trzeba sprawdzić w dokumentacji konkretnego urządzenia oraz dla rzeczywistej konfiguracji hydraulicznej.</p></div></details>
          <details><summary>Czy zład instalacji wyznacza przepływ pompy obiegowej?</summary><div class="rk-volume-faq-answer"><p>Nie. Przepływ wynika z przenoszonej mocy, różnicy temperatur i właściwości medium. Wymagane ciśnienie pompy zależy od strat na krytycznej drodze hydraulicznej.</p></div></details>
          <details><summary>Czy przy glikolu zmienia się objętość rur?</summary><div class="rk-volume-faq-answer"><p>Nie zmienia się geometryczna pojemność przewodów. Zmieniają się właściwości roztworu, w tym lepkość, gęstość, ciepło właściwe i rozszerzalność, dlatego hydraulikę oraz zabezpieczenia trzeba sprawdzić dla konkretnego rodzaju i stężenia.</p></div></details>
          <details><summary>Czy można automatycznie przyjąć inhibitor w stężeniu 0,5%?</summary><div class="rk-volume-faq-answer"><p>Nie. Dawkowanie zależy od konkretnego środka i celu jego zastosowania. Kalkulator oblicza ilość dopiero po wpisaniu proporcji z instrukcji, bez rekomendowania producenta lub produktu.</p></div></details>
          <details><summary>Czy kalkulator dobierze naczynie wzbiorcze?</summary><div class="rk-volume-faq-answer"><p>Nie. Zład jest potrzebny do określenia rozszerzenia płynu, ale dobór naczynia wymaga również zakresu temperatur, wysokości statycznej, ciśnienia wstępnego, ciśnienia napełnienia, maksymalnego ciśnienia instalacji i zaworu bezpieczeństwa.</p></div></details>
          <details><summary>Czy częste dolewanie wody po uruchomieniu jest normalne?</summary><div class="rk-volume-faq-answer"><p>Pojedyncza korekta po odpowietrzeniu może się zdarzyć, ale regularne uzupełnianie płynu powinno zostać wyjaśnione. Dolewki wprowadzają nową porcję tlenu i mogą wskazywać nieszczelność, problem z naczyniem albo niewłaściwe ciśnienie.</p></div></details>
          <details><summary>Czy kalkulator zastępuje projekt instalacji?</summary><div class="rk-volume-faq-answer"><p>Nie. Kalkulator liczy geometrię i sumuje wpisane składniki, ale nie zna rzeczywistego przebiegu pętli, brakujących odcinków, stanów zaworów, wymagań urządzeń ani kompletnej hydrauliki budynku.</p></div></details>
        </div>
      </section>

      <section class="rk-volume-section" id="rk-volume-sources">
        <span class="rk-volume-kicker">Neutralna podstawa techniczna</span>
        <h2>Źródła i zakres opracowania</h2>
        <div class="rk-volume-sources">
          <strong>Normy i wytyczne wykorzystane do uporządkowania zakresu artykułu</strong>
          <p>Projektowanie i wymiarowanie systemów ogrzewania płaszczyznowego: <a href="https://www.iso.org/standard/74684.html" target="_blank" rel="noopener nofollow">ISO 11855-3:2021</a>. Kryteria projektowe wodnych instalacji ogrzewczych: <a href="https://knowledge.bsigroup.com/products/heating-systems-in-buildings-design-for-water-based-heating-systems" target="_blank" rel="noopener nofollow">BS EN 12828:2012+A1:2014</a>. Zakres serii dotyczącej parametrów i oceny pomp ciepła: <a href="https://knowledge.bsigroup.com/products/air-conditioners-liquid-chilling-packages-and-heat-pumps-for-space-heating-and-cooling-and-process-chillers-with-electrically-driven-compressors-terms-and-definitions-1" target="_blank" rel="noopener nofollow">BS EN 14511-1:2022</a>. Zapobieganie osadom i korozji wodnej: <a href="https://www.vdi.de/en/home/vdi-standards/details/vdi-2035-blatt-1-prevention-of-damage-in-water-heating-installations-scale-formation-and-waterside-corrosion" target="_blank" rel="noopener nofollow">VDI 2035 Blatt 1</a>.</p>
          <p>Wzór kalkulatora wynika z objętości walca. Presety rur są wartościami geometrycznymi dla podanych wymiarów, a pojemności urządzeń i wymagania minimalnego zładu użytkownik wpisuje samodzielnie. Narzędzie nie dobiera bufora, pompy obiegowej, naczynia wzbiorczego ani sposobu uzdatniania wody.</p>
        </div>
        <div class="rk-volume-update">Ostatnia aktualizacja merytoryczna: 29 sierpnia 2026 r.</div>
      </section>

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

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

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

          <div class="rk-volume-author-main">
            <blockquote class="rk-volume-author-quote"><p>„Najpierw policzmy, co naprawdę mieści instalacja. Dopiero później można rozmawiać o przygotowaniu płynu, wymaganiach źródła i zabezpieczeniach — bez zastępowania brakujących danych przypadkowym procentem.”</p></blockquote>
            <div class="rk-volume-author-tabs" role="tablist" aria-label="Informacje o autorze">
              <label class="rk-volume-author-tab" for="rk-volume-author-about">O autorze</label>
              <label class="rk-volume-author-tab" for="rk-volume-author-exp">Doświadczenie</label>
              <label class="rk-volume-author-tab" for="rk-volume-author-sites">Portale</label>
            </div>
            <div class="rk-volume-author-panel rk-volume-author-panel-about"><p>Projektuję wodne ogrzewanie podłogowe, łącząc obliczenia cieplne z rzeczywistym przebiegiem rur, długościami pętli, przepływami, stratami ciśnienia i nastawami rozdzielaczy. W publikacjach wyraźnie oddzielam szacunek od dokumentacji wykonawczej.</p><p><a href="https://projekt-ogrzewania.pl/author/admin3399/">Zobacz profil i pozostałe opracowania autora</a>.</p></div>
            <div class="rk-volume-author-panel rk-volume-author-panel-exp"><p>Dokumentacja projektowa pozwala zsumować długości każdego obwodu i magistrali, a następnie powiązać zład z wymaganiami źródła, sposobem sterowania oraz wyposażeniem kotłowni. Dzięki temu ilość płynu nie jest zgadywana z samego metrażu domu.</p></div>
            <div class="rk-volume-author-panel rk-volume-author-panel-sites"><p>Jestem właścicielem trzech serwisów branżowych. Powiązanie portali podaję jawnie, aby czytelnik znał autorstwo i kontekst linkowania.</p><div class="rk-volume-site-links"><a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a><a href="https://remont.biz.pl/" target="_blank" rel="noopener nofollow">Remont.biz.pl</a><a href="https://sobir.pl/" target="_blank" rel="noopener nofollow">Sobir.pl</a></div></div>
          </div>
        </div>
      </section>

      <section class="rk-volume-final-cta" aria-label="Projekt ogrzewania podłogowego z obliczonym zładem">
        <span class="rk-volume-kicker" style="color:#83f3ff">Od litrów do kompletnej dokumentacji</span>
        <h2>Otrzymaj projekt z długościami, przepływami i zładem instalacji</h2>
        <p>Projekt określa przebieg każdej pętli, rzeczywiste długości, rozstawy, przepływy, straty ciśnienia, nastawy rozdzielacza oraz sposób współpracy ze źródłem ciepła. Na tej podstawie można policzyć objętość przewodów bez zgadywania z powierzchni budynku.</p>
        <a class="rk-volume-cta-button rk-volume-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów kompletny projekt ogrzewania podłogowego</a>
        <small class="rk-volume-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
      </section>
    </main>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#article",
      "url": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/",
      "headline": "Ile wody potrzeba do wypełnienia podłogówki? Kalkulator zładu instalacji",
      "description": "Techniczny poradnik i kalkulator objętości rur, magistral, rozdzielaczy, źródła ciepła, bufora oraz ilości płynu do napełnienia podłogówki.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-29",
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#webpage"},
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "about": [
        {"@type": "Thing", "name": "Zład instalacji grzewczej"},
        {"@type": "Thing", "name": "Ogrzewanie podłogowe"},
        {"@type": "Thing", "name": "Objętość wody w rurach"},
        {"@type": "Thing", "name": "Napełnianie instalacji"}
      ],
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"}
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#webpage",
      "url": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/",
      "name": "Ile wody potrzeba do wypełnienia podłogówki? Kalkulator zładu instalacji",
      "description": "Oblicz całkowity i dostępny zład ogrzewania podłogowego oraz ilość płynu potrzebną do napełnienia instalacji.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-29",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#breadcrumb"},
      "mainEntity": [
        {"@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#application"},
        {"@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#howto"},
        {"@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#faq"}
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#breadcrumb",
      "itemListElement": [
        {"@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/"},
        {"@type": "ListItem", "position": 2, "name": "Blog", "item": "https://projekt-ogrzewania.pl/blog/"},
        {"@type": "ListItem", "position": 3, "name": "Ile wody potrzeba do wypełnienia podłogówki", "item": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/"}
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#application",
      "name": "Kalkulator zładu instalacji podłogowej",
      "url": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#rk-volume-calculator",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "Obsługa JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "description": "Kalkulator oblicza objętość rur z długości i średnicy wewnętrznej, dodaje pojemność urządzeń, pokazuje zład całkowity, dostępny oraz ilość płynu z rezerwą."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#howto",
      "name": "Jak obliczyć ilość płynu potrzebną do napełnienia podłogówki?",
      "description": "Procedura zsumowania objętości rur i urządzeń przed napełnieniem instalacji.",
      "inLanguage": "pl-PL",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Zbierz długości rur", "text": "Użyj zestawienia pętli i rzeczywistych długości przewodów wspólnych albo świadomie wybierz tryb szacowania z powierzchni."},
        {"@type": "HowToStep", "position": 2, "name": "Sprawdź średnice wewnętrzne", "text": "Odczytaj średnicę wewnętrzną każdej grupy przewodów z wymiaru i grubości ścianki lub dokumentacji rury."},
        {"@type": "HowToStep", "position": 3, "name": "Oblicz objętość przewodów", "text": "Pomnóż długość każdego odcinka przez pojemność jednego metra wynikającą z jego średnicy wewnętrznej."},
        {"@type": "HowToStep", "position": 4, "name": "Dodaj objętości urządzeń", "text": "Dodaj rozdzielacze, część wodną źródła, bufor, sprzęgło i pozostałe napełniane elementy."},
        {"@type": "HowToStep", "position": 5, "name": "Oddziel zład całkowity od dostępnego", "text": "Odejmij objętość odcinaną w analizowanym stanie, jeżeli sprawdzasz wymaganie minimalnego zładu źródła."},
        {"@type": "HowToStep", "position": 6, "name": "Sprawdź płyn i dawkowanie", "text": "Wymagania jakości wody, stężenie glikolu i dawkę dodatku odczytaj z właściwej dokumentacji."},
        {"@type": "HowToStep", "position": 7, "name": "Dodaj rezerwę roboczą", "text": "Przygotuj niewielką edytowalną rezerwę płynu, ale nie wliczaj jej do nominalnego zładu instalacji."},
        {"@type": "HowToStep", "position": 8, "name": "Udokumentuj napełnienie", "text": "Zapisz ilość i rodzaj użytego płynu oraz każdą późniejszą dolewkę."}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {"@type": "Question", "name": "Ile wody mieści się w rurze 16 × 2 mm?", "acceptedAnswer": {"@type": "Answer", "text": "Przy średnicy wewnętrznej około 12 mm jest to około 0,113 l na metr, czyli około 11,31 l na 100 m przewodu. Ostatecznie należy użyć rzeczywistej średnicy wewnętrznej zastosowanej rury."}},
        {"@type": "Question", "name": "Ile wody mieści 100 m² ogrzewania podłogowego?", "acceptedAnswer": {"@type": "Answer", "text": "Nie ma jednej wartości. Dla 100 m² czynnej powierzchni i rury 16 × 2 mm sama objętość przewodu w polu wynosi orientacyjnie około 113 l przy rozstawie 10 cm, 90,5 l przy 12,5 cm, 75,4 l przy 15 cm i 56,5 l przy 20 cm. Trzeba dodać dobiegi, magistrale i urządzenia."}},
        {"@type": "Question", "name": "Czy do objętości pętli można dodać 10 albo 15% na osprzęt?", "acceptedAnswer": {"@type": "Answer", "text": "Taki procent może służyć wyłącznie jako bardzo luźny kosztorys, ale nie daje wiarygodnego zładu. Poprawniej jest dodać rzeczywiste pojemności rozdzielaczy, źródła, bufora, sprzęgła i pozostałych elementów."}},
        {"@type": "Question", "name": "Czy rozstaw rur zależy od ich średnicy?", "acceptedAnswer": {"@type": "Answer", "text": "Nie bezpośrednio. Rozstaw dobiera się do wymaganej mocy podłogi, temperatury wody, konstrukcji posadzki i oporu okładziny. Średnica wpływa między innymi na pojemność oraz opory hydrauliczne, ale nie narzuca automatycznie rozstawu."}},
        {"@type": "Question", "name": "Czy większy zład wymaga większego bufora?", "acceptedAnswer": {"@type": "Answer", "text": "Nie jako uniwersalna zasada. Jeżeli urządzenie wymaga minimalnej dostępnej objętości, większy istniejący zład może zmniejszyć ewentualny deficyt. Potrzebę, funkcję i sposób włączenia bufora analizuje się dla konkretnej instalacji oraz sterowania."}},
        {"@type": "Question", "name": "Czy PN-EN 14511 wymaga 10–15 l wody na każdy kW pompy ciepła?", "acceptedAnswer": {"@type": "Answer", "text": "Nie należy przedstawiać tej wartości jako uniwersalnego wymagania normy. Minimalną objętość i minimalny przepływ trzeba sprawdzić w dokumentacji konkretnego urządzenia oraz dla rzeczywistej konfiguracji hydraulicznej."}},
        {"@type": "Question", "name": "Czy zład instalacji wyznacza przepływ pompy obiegowej?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Przepływ wynika z przenoszonej mocy, różnicy temperatur i właściwości medium. Wymagane ciśnienie pompy zależy od strat na krytycznej drodze hydraulicznej."}},
        {"@type": "Question", "name": "Czy przy glikolu zmienia się objętość rur?", "acceptedAnswer": {"@type": "Answer", "text": "Nie zmienia się geometryczna pojemność przewodów. Zmieniają się właściwości roztworu, w tym lepkość, gęstość, ciepło właściwe i rozszerzalność, dlatego hydraulikę oraz zabezpieczenia trzeba sprawdzić dla konkretnego rodzaju i stężenia."}},
        {"@type": "Question", "name": "Czy można automatycznie przyjąć inhibitor w stężeniu 0,5%?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Dawkowanie zależy od konkretnego środka i celu jego zastosowania. Kalkulator oblicza ilość dopiero po wpisaniu proporcji z instrukcji, bez rekomendowania producenta lub produktu."}},
        {"@type": "Question", "name": "Czy kalkulator dobierze naczynie wzbiorcze?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Zład jest potrzebny do określenia rozszerzenia płynu, ale dobór naczynia wymaga również zakresu temperatur, wysokości statycznej, ciśnienia wstępnego, ciśnienia napełnienia, maksymalnego ciśnienia instalacji i zaworu bezpieczeństwa."}},
        {"@type": "Question", "name": "Czy częste dolewanie wody po uruchomieniu jest normalne?", "acceptedAnswer": {"@type": "Answer", "text": "Pojedyncza korekta po odpowietrzeniu może się zdarzyć, ale regularne uzupełnianie płynu powinno zostać wyjaśnione. Dolewki wprowadzają nową porcję tlenu i mogą wskazywać nieszczelność, problem z naczyniem albo niewłaściwe ciśnienie."}},
        {"@type": "Question", "name": "Czy kalkulator zastępuje projekt instalacji?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Kalkulator liczy geometrię i sumuje wpisane składniki, ale nie zna rzeczywistego przebiegu pętli, brakujących odcinków, stanów zaworów, wymagań urządzeń ani kompletnej hydrauliki budynku."}}
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "jobTitle": "Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego",
      "worksFor": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "affiliation": [
        {"@id": "https://projekt-ogrzewania.pl/#organization"},
        {"@id": "https://remont.biz.pl/#organization"},
        {"@id": "https://sobir.pl/#organization"}
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt-Ogrzewania.pl",
      "inLanguage": "pl-PL",
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"}
    }
  ]
}
</script>

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

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

    var form = document.getElementById("rk-volume-form");
    var lengthPanel = document.getElementById("rk-volume-panel-length");
    var areaPanel = document.getElementById("rk-volume-panel-area");
    var lengthRows = document.getElementById("rk-volume-length-rows");
    var areaMainRows = document.getElementById("rk-volume-area-main-rows");
    var breakdownBody = document.getElementById("rk-volume-breakdown-body");

    function numberValue(id, fallback) {
      var element = document.getElementById(id);
      var value = element ? parseFloat(String(element.value).replace(",", ".")) : NaN;
      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 format(value, digits) {
      if (!isFinite(value)) { return "—"; }
      return value.toLocaleString("pl-PL", { minimumFractionDigits: digits, maximumFractionDigits: digits });
    }

    function escapeHtml(value) {
      return String(value)
        .replace(/</g, "‹")
        .replace(/>/g, "›")
        .replace(/\"/g, "”")
        .replace(/'/g, "’");
    }

    function pipeCapacity(innerDiameter) {
      return 0.0007853981634 * innerDiameter * innerDiameter;
    }

    function selectedDiameter(row) {
      var select = row.querySelector(".rk-volume-row-pipe");
      var custom = row.querySelector(".rk-volume-custom-diameter");
      if (!select) { return 0; }
      if (select.value === "custom") {
        var customValue = custom ? parseFloat(String(custom.value).replace(",", ".")) : 0;
        return clamp(isFinite(customValue) ? customValue : 0, 0, 100);
      }
      return clamp(parseFloat(select.value) || 0, 0, 100);
    }

    function toggleCustom(select) {
      var row = select.closest(".rk-volume-pipe-row");
      if (!row) { return; }
      var custom = row.querySelector(".rk-volume-custom-diameter");
      if (!custom) { return; }
      custom.hidden = select.value !== "custom";
    }

    function pipeRowMarkup(kind, category) {
      var disabled = kind === "area-main" ? " disabled" : "";
      var loopsSelected = category === "loops" ? " selected" : "";
      var mainsSelected = category === "mains" ? " selected" : "";
      var defaultName = category === "mains" ? "Dodatkowa magistrala" : "Dodatkowy odcinek";
      return '<div class="rk-volume-pipe-row" data-row-kind="' + kind + '">' +
        '<div class="rk-volume-field"><label>Nazwa odcinka</label><input class="rk-volume-row-name" type="text" value="' + defaultName + '" maxlength="60"></div>' +
        '<div class="rk-volume-field"><label>Kategoria</label><select class="rk-volume-row-category"' + disabled + '><option value="loops"' + loopsSelected + '>Pętle</option><option value="mains"' + mainsSelected + '>Magistrale</option></select></div>' +
        '<div class="rk-volume-field"><label>Rura</label><select class="rk-volume-row-pipe"><option value="12" selected>16 × 2,0 mm</option><option value="13">17 × 2,0 mm</option><option value="16">20 × 2,0 mm</option><option value="20">25 × 2,5 mm</option><option value="26">32 × 3,0 mm</option><option value="custom">Własna średnica</option></select><input class="rk-volume-custom-diameter" type="number" min="2" max="100" step="0.1" value="12" inputmode="decimal" hidden><small>Własna wartość oznacza średnicę wewnętrzną.</small></div>' +
        '<div class="rk-volume-field"><label>Łączna długość</label><input class="rk-volume-row-length" type="number" min="0" max="20000" step="0.1" value="0" inputmode="decimal"><small>m</small></div>' +
        '<button class="rk-volume-remove" type="button" aria-label="Usuń odcinek">×</button>' +
      '</div>';
    }

    function currentMode() {
      var checked = form.querySelector('input[name="rk-volume-mode"]:checked');
      return checked ? checked.value : "length";
    }

    function toggleMode() {
      var mode = currentMode();
      lengthPanel.hidden = mode !== "length";
      areaPanel.hidden = mode !== "area";
      calculate();
    }

    function toggleDtrFields() {
      var mode = document.getElementById("rk-volume-dtr-mode").value;
      document.getElementById("rk-volume-dtr-fixed-wrap").hidden = mode !== "fixed";
      document.getElementById("rk-volume-dtr-factor-wrap").hidden = mode !== "factor";
      document.getElementById("rk-volume-dtr-power-wrap").hidden = mode !== "factor";
    }

    function toggleDoseField() {
      var mode = document.getElementById("rk-volume-dose-mode").value;
      var wrap = document.getElementById("rk-volume-dose-value-wrap");
      var unit = document.getElementById("rk-volume-dose-unit");
      wrap.hidden = mode === "none";
      if (mode === "percent") { unit.textContent = "% objętości zładu"; }
      if (mode === "ml100") { unit.textContent = "ml na 100 l"; }
    }

    function collectRows(container, forcedCategory) {
      var rows = Array.prototype.slice.call(container.querySelectorAll(".rk-volume-pipe-row"));
      var items = [];
      rows.forEach(function (row) {
        var nameInput = row.querySelector(".rk-volume-row-name");
        var categorySelect = row.querySelector(".rk-volume-row-category");
        var lengthInput = row.querySelector(".rk-volume-row-length");
        var diameter = selectedDiameter(row);
        var length = lengthInput ? parseFloat(String(lengthInput.value).replace(",", ".")) : 0;
        var category = forcedCategory || (categorySelect ? categorySelect.value : "mains");
        length = clamp(isFinite(length) ? length : 0, 0, 20000);
        if (length > 0) {
          items.push({
            name: nameInput ? nameInput.value : "Odcinek rury",
            category: category,
            diameter: diameter,
            length: length,
            volume: pipeCapacity(diameter) * length
          });
        }
      });
      return items;
    }

    function addBreakdown(items, name, data, volume, category) {
      if (volume <= 0) { return; }
      items.push({ name: name, data: data, volume: volume, category: category });
    }

    function setSegment(id, value, total) {
      var element = document.getElementById(id);
      var percent = total > 0 ? value / total * 100 : 0;
      element.style.width = percent.toFixed(4) + "%";
    }

    function renderBreakdown(items, total) {
      if (!items.length) {
        breakdownBody.innerHTML = '<tr><td data-label="Element">Brak danych</td><td data-label="Dane">Uzupełnij kalkulator</td><td data-label="Objętość">0,0 l</td><td data-label="Udział">0,0%</td></tr>';
        return;
      }
      var html = "";
      items.forEach(function (item) {
        var share = total > 0 ? item.volume / total * 100 : 0;
        html += '<tr><td data-label="Element">' + escapeHtml(item.name) + '</td><td data-label="Dane">' + escapeHtml(item.data) + '</td><td data-label="Objętość">' + format(item.volume, 2) + ' l</td><td data-label="Udział">' + format(share, 1) + '%</td></tr>';
      });
      breakdownBody.innerHTML = html;
    }

    function calculate(event) {
      if (event) { event.preventDefault(); }

      var mode = currentMode();
      var pipeItems = [];
      var breakdown = [];
      var totalLength = 0;

      if (mode === "length") {
        pipeItems = collectRows(lengthRows, "");
      } else {
        var area = clamp(numberValue("rk-volume-area", 0), 0, 2000);
        var spacing = clamp(numberValue("rk-volume-spacing", 15), 1, 100) / 100;
        var geometry = clamp(numberValue("rk-volume-geometry", 0), 0, 15) / 100;
        var loopCount = Math.round(clamp(numberValue("rk-volume-loop-count", 1), 1, 100));
        var approach = clamp(numberValue("rk-volume-approach", 0), 0, 100);
        var areaPipeSelect = document.getElementById("rk-volume-area-pipe");
        var areaDiameter = 0;
        if (areaPipeSelect.value === "custom") {
          areaDiameter = clamp(numberValue("rk-volume-area-custom", 12), 0, 100);
        } else {
          areaDiameter = clamp(parseFloat(areaPipeSelect.value) || 0, 0, 100);
        }
        var fieldLength = spacing > 0 ? area / spacing * (1 + geometry) : 0;
        var approachLength = loopCount * approach * 2;
        var estimatedLength = fieldLength + approachLength;
        if (estimatedLength > 0) {
          pipeItems.push({
            name: "Szacowane pętle wraz z dobiegami",
            category: "loops",
            diameter: areaDiameter,
            length: estimatedLength,
            volume: pipeCapacity(areaDiameter) * estimatedLength,
            estimateData: format(area, 1) + " m², rozstaw " + format(spacing * 100, 1) + " cm, " + loopCount + " pętli"
          });
        }
        pipeItems = pipeItems.concat(collectRows(areaMainRows, "mains"));
      }

      var loopsVolume = 0;
      var mainsVolume = 0;

      pipeItems.forEach(function (item) {
        totalLength += item.length;
        if (item.category === "loops") { loopsVolume += item.volume; }
        if (item.category === "mains") { mainsVolume += item.volume; }
        var rowData = item.estimateData || (format(item.length, 1) + " m, dᵢ " + format(item.diameter, 1) + " mm");
        addBreakdown(breakdown, item.name, rowData, item.volume, item.category);
      });

      var manifolds = clamp(numberValue("rk-volume-manifolds", 0), 0, 5000);
      var source = clamp(numberValue("rk-volume-source", 0), 0, 5000);
      var buffer = clamp(numberValue("rk-volume-buffer", 0), 0, 10000);
      var separator = clamp(numberValue("rk-volume-separator", 0), 0, 5000);
      var other = clamp(numberValue("rk-volume-other", 0), 0, 10000);
      var isolated = clamp(numberValue("rk-volume-isolated", 0), 0, 10000);
      var otherVolume = manifolds + separator + other;

      addBreakdown(breakdown, "Rozdzielacze", "wartość wpisana", manifolds, "other");
      addBreakdown(breakdown, "Źródło lub wymiennik", "wartość wpisana", source, "source");
      addBreakdown(breakdown, "Bufor", "wartość wpisana", buffer, "buffer");
      addBreakdown(breakdown, "Sprzęgło lub separator", "wartość wpisana", separator, "other");
      addBreakdown(breakdown, "Inne elementy", "wartość wpisana", other, "other");

      var total = loopsVolume + mainsVolume + source + buffer + otherVolume;
      isolated = Math.min(isolated, total);
      var accessible = Math.max(0, total - isolated);
      var reserve = clamp(numberValue("rk-volume-reserve", 0), 0, 30);
      var prepare = total * (1 + reserve / 100);

      var doseMode = document.getElementById("rk-volume-dose-mode").value;
      var doseValue = clamp(numberValue("rk-volume-dose-value", 0), 0, 10000);
      var doseText = "Nie obliczano";
      if (doseMode === "ml100") {
        var doseMl = total / 100 * doseValue;
        doseText = doseMl >= 1000 ? format(doseMl / 1000, 2) + " l" : format(doseMl, 0) + " ml";
      }
      if (doseMode === "percent") {
        var doseLitres = total * doseValue / 100;
        doseText = format(doseLitres, 2) + " l";
      }

      var dtrMode = document.getElementById("rk-volume-dtr-mode").value;
      var required = 0;
      var dtrText = "Nie porównano";
      var statusText = "Zład obliczono z wpisanych elementów. Sprawdź, czy lista obejmuje wszystkie napełniane odcinki i urządzenia.";
      var statusClass = "rk-volume-status";

      if (dtrMode === "fixed") { required = clamp(numberValue("rk-volume-dtr-fixed", 0), 0, 10000); }
      if (dtrMode === "factor") {
        required = clamp(numberValue("rk-volume-dtr-factor", 0), 0, 100) * clamp(numberValue("rk-volume-dtr-power", 0), 0, 500);
      }

      if (dtrMode !== "none") {
        var difference = accessible - required;
        if (difference >= 0) {
          dtrText = "+" + format(difference, 1) + " l";
          statusText = "Wpisany zład dostępny jest większy od wartości kontrolnej z DTR o " + format(difference, 1) + " l. Nadal sprawdź minimalny przepływ i warunki, w których wymaganie obowiązuje.";
        } else {
          dtrText = format(difference, 1) + " l";
          statusText = "W analizowanym stanie brakuje " + format(Math.abs(difference), 1) + " l do wartości wpisanej z DTR. Wynik nie przesądza o obowiązkowym buforze — wymaga analizy hydrauliki i sterowania.";
          statusClass += " is-danger";
        }
      }

      if (total <= 0) {
        statusText = "Wprowadź co najmniej jeden odcinek rury albo objętość urządzenia.";
        statusClass += " is-warning";
      }

      if (mode === "area") {
        statusText += " Długość pętli została oszacowana z powierzchni i nie zastępuje rozrysowania rur.";
        if (statusClass.indexOf("is-danger") === -1) { statusClass += " is-warning"; }
      }

      var fluid = document.getElementById("rk-volume-fluid").value;
      if (fluid === "glycol") {
        statusText += " Wybrano roztwór glikolu: objętość geometryczna nie zmienia się, ale hydraulika i naczynie wymagają danych konkretnego roztworu.";
      }

      document.getElementById("rk-volume-result-loops").textContent = format(loopsVolume, 1) + " l";
      document.getElementById("rk-volume-result-mains").textContent = format(mainsVolume, 1) + " l";
      document.getElementById("rk-volume-result-total").textContent = format(total, 1) + " l";
      document.getElementById("rk-volume-result-accessible").textContent = format(accessible, 1) + " l";
      document.getElementById("rk-volume-result-prepare").textContent = format(prepare, 1) + " l";
      document.getElementById("rk-volume-result-length").textContent = format(totalLength, 1) + " m";
      document.getElementById("rk-volume-result-dose").textContent = doseText;
      document.getElementById("rk-volume-result-dtr").textContent = dtrText;

      var status = document.getElementById("rk-volume-status");
      status.className = statusClass;
      status.textContent = statusText;

      setSegment("rk-volume-segment-loops", loopsVolume, total);
      setSegment("rk-volume-segment-mains", mainsVolume, total);
      setSegment("rk-volume-segment-source", source, total);
      setSegment("rk-volume-segment-buffer", buffer, total);
      setSegment("rk-volume-segment-other", otherVolume, total);

      document.getElementById("rk-volume-legend-loops").textContent = format(loopsVolume, 1) + " l";
      document.getElementById("rk-volume-legend-mains").textContent = format(mainsVolume, 1) + " l";
      document.getElementById("rk-volume-legend-source").textContent = format(source, 1) + " l";
      document.getElementById("rk-volume-legend-buffer").textContent = format(buffer, 1) + " l";
      document.getElementById("rk-volume-legend-other").textContent = format(otherVolume, 1) + " l";

      renderBreakdown(breakdown, total);
    }

    function restoreExample() {
      var modeLength = document.getElementById("rk-volume-mode-length");
      modeLength.checked = true;
      lengthRows.innerHTML = '';
      lengthRows.insertAdjacentHTML("beforeend", pipeRowMarkup("length", "loops"));
      lengthRows.insertAdjacentHTML("beforeend", pipeRowMarkup("length", "mains"));
      var restoredRows = lengthRows.querySelectorAll(".rk-volume-pipe-row");
      restoredRows[0].querySelector(".rk-volume-row-name").value = "Pętle podłogowe";
      restoredRows[0].querySelector(".rk-volume-row-length").value = "720";
      restoredRows[1].querySelector(".rk-volume-row-name").value = "Zasilanie i powrót";
      restoredRows[1].querySelector(".rk-volume-row-pipe").value = "26";
      restoredRows[1].querySelector(".rk-volume-row-length").value = "20";
      document.getElementById("rk-volume-manifolds").value = "2";
      document.getElementById("rk-volume-source").value = "6";
      document.getElementById("rk-volume-buffer").value = "0";
      document.getElementById("rk-volume-separator").value = "0";
      document.getElementById("rk-volume-other").value = "0";
      document.getElementById("rk-volume-isolated").value = "0";
      document.getElementById("rk-volume-dtr-mode").value = "none";
      document.getElementById("rk-volume-reserve").value = "3";
      document.getElementById("rk-volume-fluid").value = "water";
      document.getElementById("rk-volume-dose-mode").value = "none";
      toggleDtrFields();
      toggleDoseField();
      toggleMode();
    }

    form.addEventListener("submit", calculate);
    form.addEventListener("input", function (event) {
      if (event.target.classList.contains("rk-volume-row-pipe")) { toggleCustom(event.target); }
      calculate();
    });
    form.addEventListener("change", function (event) {
      if (event.target.name === "rk-volume-mode") { toggleMode(); }
      if (event.target.id === "rk-volume-dtr-mode") { toggleDtrFields(); }
      if (event.target.id === "rk-volume-dose-mode") { toggleDoseField(); }
      if (event.target.id === "rk-volume-area-pipe") {
        document.getElementById("rk-volume-area-custom").hidden = event.target.value !== "custom";
      }
      if (event.target.classList.contains("rk-volume-row-pipe")) { toggleCustom(event.target); }
      calculate();
    });

    form.addEventListener("click", function (event) {
      var removeButton = event.target.closest(".rk-volume-remove");
      if (removeButton) {
        var row = removeButton.closest(".rk-volume-pipe-row");
        if (row) { row.remove(); }
        calculate();
      }
    });

    document.getElementById("rk-volume-add-length").addEventListener("click", function () {
      lengthRows.insertAdjacentHTML("beforeend", pipeRowMarkup("length", "loops"));
      calculate();
    });

    document.getElementById("rk-volume-add-area-main").addEventListener("click", function () {
      areaMainRows.insertAdjacentHTML("beforeend", pipeRowMarkup("area-main", "mains"));
      calculate();
    });

    document.getElementById("rk-volume-reset").addEventListener("click", restoreExample);

    var progress = root.querySelector(".rk-volume-progress");
    function updateProgress() {
      var rectangle = root.getBoundingClientRect();
      var viewport = window.innerHeight || document.documentElement.clientHeight;
      var distance = root.offsetHeight - viewport;
      var passed = -rectangle.top;
      var percent = distance > 0 ? clamp(passed / distance * 100, 0, 100) : 100;
      progress.style.width = percent.toFixed(2) + "%";
    }

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

    toggleDtrFields();
    toggleDoseField();
    calculate();
    updateProgress();
  }());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-wody-potrzeba-do-wypelnienia-instalacji-podlogowki-kalkulator/">Ile wody potrzeba do wypełnienia instalacji podłogówki &#8211; Kalkulator.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ile metrów podłogówki na jednej pętli?</title>
		<link>https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 01 Feb 2025 22:18:09 +0000</pubDate>
				<category><![CDATA[Budowa i remonty]]></category>
		<category><![CDATA[Domowe systemy grzewcze]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Planowanie instalacji grzewczych]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Rury do ogrzewania]]></category>
		<category><![CDATA[budowa domu]]></category>
		<category><![CDATA[długość pętli]]></category>
		<category><![CDATA[hydraulika]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[porady ekspertów]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<category><![CDATA[remonty]]></category>
		<category><![CDATA[systemy grzewcze]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2053</guid>

					<description><![CDATA[<p>Planujesz montaż ogrzewania podłogowego i zastanawiasz się, ile metrów podłogówki na jednej pętli to optymalna długość? W naszym artykule znajdziesz praktyczne porady, jak obliczyć długość pętli, jakie czynniki wpływają na jej maksymalną długość oraz jak uniknąć błędów przy projektowaniu. Dowiesz się również, dlaczego profesjonalny projekt jest kluczowy dla efektywności systemu. Sprawdź, jak zaplanować ogrzewanie podłogowe, aby cieszyć się komfortem i oszczędnościami przez lata!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/">Ile metrów podłogówki na jednej pętli?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-loop-guide {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e8fbff;
    --rk-orange: #ff6a3d;
    --rk-orange-soft: #fff1eb;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #f1b93e;
    --rk-yellow-soft: #fff8df;
    --rk-red: #d94b3d;
    --rk-red-soft: #fff0ee;
    --rk-purple: #695ac9;
    --rk-purple-soft: #f1efff;
    --rk-ink: #1f2c37;
    --rk-text: #475967;
    --rk-muted: #6b7e8a;
    --rk-line: #d5e4eb;
    --rk-soft: #f4f9fb;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 72px;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.75;
  }

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

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

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

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

  #rk-loop-guide .rk-loop-nav {
    position: sticky;
    z-index: 20;
    top: 0;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 7px;
    padding: 13px clamp(14px, 3vw, 28px);
    border-bottom: 1px solid var(--rk-line);
    background: rgba(255, 255, 255, .96);
    box-shadow: 0 8px 24px rgba(16, 37, 54, .07);
    backdrop-filter: blur(10px);
  }
  #rk-loop-guide .rk-loop-nav a {
    padding: 7px 11px;
    border-radius: 999px;
    color: var(--rk-navy);
    background: var(--rk-soft);
    font-size: .65rem;
    font-weight: 900;
    line-height: 1.2;
    text-decoration: none;
  }
  #rk-loop-guide .rk-loop-nav a:hover,
  #rk-loop-guide .rk-loop-nav a:focus-visible { color: var(--rk-white); background: var(--rk-blue); }

  #rk-loop-guide .rk-loop-content { padding: clamp(26px, 5.5vw, 64px); }
  #rk-loop-guide .rk-loop-section { margin-bottom: clamp(48px, 8vw, 86px); scroll-margin-top: 104px; }
  #rk-loop-guide .rk-loop-section:last-child { margin-bottom: 0; }
  #rk-loop-guide .rk-loop-section-head { max-width: 870px; margin-bottom: 24px; }
  #rk-loop-guide .rk-loop-section-head > p:last-child { margin-bottom: 0; color: var(--rk-text); font-size: 1.02rem; }
  #rk-loop-guide .rk-loop-eyebrow {
    display: block;
    margin-bottom: 9px;
    color: var(--rk-blue);
    font-size: .67rem;
    font-weight: 950;
    letter-spacing: .08em;
    text-transform: uppercase;
  }
  #rk-loop-guide .rk-loop-grid-2,
  #rk-loop-guide .rk-loop-grid-3,
  #rk-loop-guide .rk-loop-grid-4 { display: grid; gap: 18px; }
  #rk-loop-guide .rk-loop-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-loop-guide .rk-loop-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-loop-guide .rk-loop-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-loop-guide .rk-loop-card {
    padding: clamp(21px, 3.5vw, 31px);
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-white);
    box-shadow: 0 10px 28px rgba(16, 37, 54, .065);
  }
  #rk-loop-guide .rk-loop-card p:last-child,
  #rk-loop-guide .rk-loop-card ul:last-child { margin-bottom: 0; }
  #rk-loop-guide .rk-loop-card-accent { border-top: 5px solid var(--rk-cyan); }
  #rk-loop-guide .rk-loop-card-orange { border-top: 5px solid var(--rk-orange); }
  #rk-loop-guide .rk-loop-card-green { border-top: 5px solid var(--rk-green); }
  #rk-loop-guide .rk-loop-card-purple { border-top: 5px solid var(--rk-purple); }
  #rk-loop-guide .rk-loop-card-number {
    display: inline-grid;
    place-items: center;
    width: 40px;
    height: 40px;
    margin-bottom: 15px;
    border-radius: 12px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: .9rem;
    font-weight: 950;
  }
  #rk-loop-guide .rk-loop-answer {
    position: relative;
    overflow: hidden;
    padding: clamp(27px, 5vw, 47px);
    border: 1px solid #a9e5ed;
    border-radius: 22px;
    background: linear-gradient(135deg, var(--rk-cyan-soft), #ffffff 70%);
  }
  #rk-loop-guide .rk-loop-answer::after {
    position: absolute;
    right: -32px;
    bottom: -63px;
    width: 180px;
    height: 180px;
    border: 28px solid rgba(7, 143, 190, .07);
    border-radius: 50%;
    content: "";
  }
  #rk-loop-guide .rk-loop-answer p { position: relative; z-index: 1; font-size: 1.05rem; }
  #rk-loop-guide .rk-loop-answer p:last-child { margin-bottom: 0; }
  #rk-loop-guide .rk-loop-answer strong { color: #075d78; }

  #rk-loop-guide .rk-loop-note {
    padding: 21px 23px;
    border-left: 5px solid var(--rk-blue);
    border-radius: 0 15px 15px 0;
    background: var(--rk-cyan-soft);
    color: #254858;
  }
  #rk-loop-guide .rk-loop-note p:last-child { margin-bottom: 0; }
  #rk-loop-guide .rk-loop-note-warn { border-left-color: var(--rk-orange); background: var(--rk-orange-soft); }
  #rk-loop-guide .rk-loop-note-good { border-left-color: var(--rk-green); background: var(--rk-green-soft); }
  #rk-loop-guide .rk-loop-note-purple { border-left-color: var(--rk-purple); background: var(--rk-purple-soft); }

  #rk-loop-guide .rk-loop-formula {
    overflow: hidden;
    margin: 19px 0;
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    color: var(--rk-dark);
    background: #f8fcfd;
    text-align: center;
  }
  #rk-loop-guide .rk-loop-formula code {
    display: block;
    color: #075d78;
    font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
    font-size: clamp(.9rem, 2.2vw, 1.17rem);
    font-weight: 900;
    white-space: normal;
  }
  #rk-loop-guide .rk-loop-formula small { display: block; margin-top: 9px; color: var(--rk-muted); font-size: .69rem; line-height: 1.5; }

  #rk-loop-guide .rk-loop-length-map {
    display: grid;
    grid-template-columns: 1fr auto 1.4fr auto 1fr;
    align-items: center;
    gap: 11px;
    margin: 23px 0;
    padding: 22px;
    border-radius: 18px;
    color: var(--rk-white);
    background: var(--rk-dark);
  }
  #rk-loop-guide .rk-loop-length-part { padding: 18px 12px; border: 1px solid rgba(255,255,255,.15); border-radius: 13px; background: rgba(255,255,255,.07); text-align: center; }
  #rk-loop-guide .rk-loop-length-part b { display: block; color: #7af0ff; font-size: 1.12rem; }
  #rk-loop-guide .rk-loop-length-part span { display: block; margin-top: 3px; color: #d4e6ec; font-size: .66rem; line-height: 1.4; }
  #rk-loop-guide .rk-loop-length-plus { color: var(--rk-orange); font-size: 1.45rem; font-weight: 950; }

  #rk-loop-guide .rk-loop-tool {
    overflow: hidden;
    border: 1px solid #b7dfe8;
    border-radius: 24px;
    background: #f8fcfd;
    box-shadow: 0 22px 58px rgba(16, 37, 54, .1);
  }
  #rk-loop-guide .rk-loop-tool-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    padding: clamp(25px, 4.5vw, 42px);
    color: var(--rk-white);
    background: linear-gradient(135deg, #0e2a3b, #076a88);
  }
  #rk-loop-guide .rk-loop-tool-head h3 { margin-bottom: 8px; color: var(--rk-white); font-size: clamp(1.35rem, 3vw, 2rem); }
  #rk-loop-guide .rk-loop-tool-head p { max-width: 720px; margin-bottom: 0; color: #d4e7ed; }
  #rk-loop-guide .rk-loop-tool-badge { flex: 0 0 auto; padding: 8px 12px; border: 1px solid rgba(255,255,255,.23); border-radius: 999px; color: #79efff; font-size: .65rem; font-weight: 950; text-transform: uppercase; }
  #rk-loop-guide .rk-loop-tool-body { padding: clamp(20px, 4vw, 38px); }
  #rk-loop-guide .rk-loop-form-group { margin-bottom: 25px; }
  #rk-loop-guide .rk-loop-form-group:last-child { margin-bottom: 0; }
  #rk-loop-guide .rk-loop-form-group-title { display: flex; align-items: center; gap: 9px; margin-bottom: 14px; color: var(--rk-dark); font-size: .8rem; font-weight: 950; text-transform: uppercase; }
  #rk-loop-guide .rk-loop-form-group-title span { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 9px; color: var(--rk-white); background: var(--rk-blue); font-size: .68rem; }
  #rk-loop-guide .rk-loop-fields { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
  #rk-loop-guide .rk-loop-field { min-width: 0; }
  #rk-loop-guide .rk-loop-field label { display: block; margin-bottom: 7px; color: var(--rk-dark); font-size: .72rem; font-weight: 850; line-height: 1.35; }
  #rk-loop-guide .rk-loop-field small { display: block; margin-top: 6px; color: var(--rk-muted); font-size: .61rem; line-height: 1.45; }
  #rk-loop-guide .rk-loop-input-wrap { position: relative; }
  #rk-loop-guide .rk-loop-input-wrap input,
  #rk-loop-guide .rk-loop-input-wrap select {
    width: 100%;
    min-height: 50px;
    padding: 10px 48px 10px 13px;
    border: 1px solid #bfd4dc;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-white);
    outline: none;
    font-weight: 800;
    line-height: 1.25;
  }
  #rk-loop-guide .rk-loop-input-wrap select { padding-right: 13px; }
  #rk-loop-guide .rk-loop-input-wrap input:focus,
  #rk-loop-guide .rk-loop-input-wrap select:focus { border-color: var(--rk-blue); box-shadow: 0 0 0 4px rgba(7,143,190,.12); }
  #rk-loop-guide .rk-loop-unit { position: absolute; top: 50%; right: 13px; transform: translateY(-50%); color: var(--rk-muted); font-size: .67rem; font-weight: 850; pointer-events: none; }
  #rk-loop-guide .rk-loop-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 23px; }
  #rk-loop-guide .rk-loop-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 50px;
    padding: 12px 20px;
    border: 0;
    border-radius: 12px;
    color: var(--rk-white);
    background: var(--rk-blue);
    box-shadow: 0 10px 22px rgba(7, 143, 190, .2);
    cursor: pointer;
    font-weight: 920;
  }
  #rk-loop-guide .rk-loop-button:hover,
  #rk-loop-guide .rk-loop-button:focus-visible { background: #066c91; transform: translateY(-1px); }
  #rk-loop-guide .rk-loop-button-secondary { color: var(--rk-navy); background: #e7f3f7; box-shadow: none; }
  #rk-loop-guide .rk-loop-button-secondary:hover,
  #rk-loop-guide .rk-loop-button-secondary:focus-visible { color: var(--rk-white); background: var(--rk-navy); }

  #rk-loop-guide .rk-loop-results { margin-top: 28px; padding-top: 28px; border-top: 1px solid var(--rk-line); }
  #rk-loop-guide .rk-loop-status {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 15px;
    align-items: center;
    margin-bottom: 18px;
    padding: 18px 20px;
    border: 1px solid #9ddaca;
    border-radius: 16px;
    background: var(--rk-green-soft);
  }
  #rk-loop-guide .rk-loop-status-icon { display: grid; place-items: center; width: 45px; height: 45px; border-radius: 14px; color: var(--rk-white); background: var(--rk-green); font-weight: 950; }
  #rk-loop-guide .rk-loop-status b { display: block; margin-bottom: 2px; color: #0f604e; font-size: 1rem; }
  #rk-loop-guide .rk-loop-status span { display: block; color: #376f63; font-size: .72rem; line-height: 1.5; }
  #rk-loop-guide .rk-loop-status.is-warning { border-color: #efcf70; background: var(--rk-yellow-soft); }
  #rk-loop-guide .rk-loop-status.is-warning .rk-loop-status-icon { background: var(--rk-yellow); }
  #rk-loop-guide .rk-loop-status.is-warning b { color: #78580d; }
  #rk-loop-guide .rk-loop-status.is-warning span { color: #735f2d; }
  #rk-loop-guide .rk-loop-status.is-danger { border-color: #e5aaa2; background: var(--rk-red-soft); }
  #rk-loop-guide .rk-loop-status.is-danger .rk-loop-status-icon { background: var(--rk-red); }
  #rk-loop-guide .rk-loop-status.is-danger b { color: #8b2e25; }
  #rk-loop-guide .rk-loop-status.is-danger span { color: #7d4b46; }
  #rk-loop-guide .rk-loop-result-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 11px; }
  #rk-loop-guide .rk-loop-result-card { min-width: 0; padding: 17px 14px; border: 1px solid var(--rk-line); border-radius: 14px; background: var(--rk-white); }
  #rk-loop-guide .rk-loop-result-card span { display: block; margin-bottom: 5px; color: var(--rk-muted); font-size: .61rem; font-weight: 850; line-height: 1.35; text-transform: uppercase; }
  #rk-loop-guide .rk-loop-result-card b { display: block; overflow-wrap: anywhere; color: var(--rk-dark); font-size: clamp(1.02rem, 2.5vw, 1.45rem); font-weight: 950; line-height: 1.2; }
  #rk-loop-guide .rk-loop-result-card small { display: block; margin-top: 5px; color: var(--rk-muted); font-size: .59rem; line-height: 1.4; }
  #rk-loop-guide .rk-loop-result-note { margin-top: 15px; padding: 15px 17px; border-radius: 12px; color: #365563; background: var(--rk-cyan-soft); font-size: .71rem; line-height: 1.55; }

  #rk-loop-guide .rk-loop-data-table-wrap { margin-top: 21px; }
  #rk-loop-guide .rk-loop-table-title { margin-bottom: 10px; color: var(--rk-dark); font-size: .79rem; font-weight: 920; }
  #rk-loop-guide .rk-loop-data-table { width: 100%; border-collapse: separate; border-spacing: 0; overflow: hidden; border: 1px solid var(--rk-line); border-radius: 14px; background: var(--rk-white); font-size: .72rem; }
  #rk-loop-guide .rk-loop-data-table th,
  #rk-loop-guide .rk-loop-data-table td { padding: 12px 11px; border-bottom: 1px solid var(--rk-line); text-align: left; vertical-align: top; }
  #rk-loop-guide .rk-loop-data-table th { color: var(--rk-white); background: var(--rk-navy); font-size: .62rem; font-weight: 900; line-height: 1.35; text-transform: uppercase; }
  #rk-loop-guide .rk-loop-data-table tr:last-child td { border-bottom: 0; }
  #rk-loop-guide .rk-loop-data-table tbody tr:nth-child(even) td { background: #f8fbfc; }
  #rk-loop-guide .rk-loop-data-table tbody tr.is-best td { background: var(--rk-green-soft); }
  #rk-loop-guide .rk-loop-data-table tbody tr.is-fail td { color: #82524d; background: var(--rk-red-soft); }
  #rk-loop-guide .rk-loop-chip { display: inline-flex; padding: 4px 8px; border-radius: 999px; color: #11604e; background: #d9f2e9; font-size: .58rem; font-weight: 950; white-space: nowrap; }
  #rk-loop-guide .rk-loop-chip-warn { color: #75550d; background: #ffefbc; }
  #rk-loop-guide .rk-loop-chip-bad { color: #8b2e25; background: #f7d8d4; }

  #rk-loop-guide .rk-loop-visual-grid { display: block; margin-top: 22px; }
  #rk-loop-guide .rk-loop-chart-card,
  #rk-loop-guide .rk-loop-scheme-card { padding: clamp(19px, 3vw, 27px); border: 1px solid var(--rk-line); border-radius: 18px; background: var(--rk-white); }
  #rk-loop-guide .rk-loop-chart-head { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 18px; margin-bottom: 13px; }
  #rk-loop-guide .rk-loop-chart-head h3 { margin-bottom: 0; font-size: 1.07rem; }
  #rk-loop-guide .rk-loop-legend { display: flex; flex-wrap: wrap; gap: 7px 12px; color: var(--rk-muted); font-size: .59rem; font-weight: 800; }
  #rk-loop-guide .rk-loop-legend span { display: inline-flex; align-items: center; gap: 5px; }
  #rk-loop-guide .rk-loop-legend i { display: inline-block; width: 15px; height: 4px; border-radius: 4px; background: var(--rk-blue); }
  #rk-loop-guide .rk-loop-legend .is-green { background: var(--rk-green); }
  #rk-loop-guide .rk-loop-legend .is-orange { background: var(--rk-orange); }
  #rk-loop-guide .rk-loop-legend .is-budget { height: 2px; background: var(--rk-red); }
  #rk-loop-guide .rk-loop-canvas-wrap { position: relative; width: 100%; min-height: 340px; }
  #rk-loop-guide #rk-loop-chart { display: block; width: 100%; height: 340px; }
  #rk-loop-guide .rk-loop-chart-caption { margin-top: 10px; margin-bottom: 0; color: var(--rk-muted); font-size: .64rem; line-height: 1.5; }
  #rk-loop-guide .rk-loop-scheme { display: grid; gap: 12px; margin-top: 18px; }
  #rk-loop-guide .rk-loop-scheme-row { display: grid; grid-template-columns: 88px 1fr; gap: 10px; align-items: center; }
  #rk-loop-guide .rk-loop-manifold { display: grid; place-items: center; min-height: 156px; border-radius: 14px; color: var(--rk-white); background: var(--rk-navy); font-size: .66rem; font-weight: 900; text-align: center; }
  #rk-loop-guide .rk-loop-paths { display: grid; gap: 7px; }
  #rk-loop-guide .rk-loop-path { position: relative; height: 18px; border: 3px solid var(--rk-cyan); border-left: 0; border-radius: 0 12px 12px 0; opacity: .95; }
  #rk-loop-guide .rk-loop-path::before { position: absolute; top: 50%; left: -19px; width: 19px; height: 3px; background: var(--rk-orange); content: ""; transform: translateY(-50%); }
  #rk-loop-guide .rk-loop-scheme-stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin-top: 14px; }
  #rk-loop-guide .rk-loop-scheme-stat { padding: 11px; border-radius: 11px; background: var(--rk-soft); }
  #rk-loop-guide .rk-loop-scheme-stat span { display: block; color: var(--rk-muted); font-size: .58rem; text-transform: uppercase; }
  #rk-loop-guide .rk-loop-scheme-stat b { display: block; margin-top: 3px; color: var(--rk-dark); font-size: .85rem; }

  #rk-loop-guide .rk-loop-cta {
    position: relative;
    overflow: hidden;
    margin: clamp(46px, 7vw, 78px) 0;
    padding: clamp(30px, 5vw, 51px);
    border-radius: 23px;
    color: var(--rk-white);
    background: linear-gradient(135deg, #102b3d 0%, #075f79 100%);
    box-shadow: 0 20px 48px rgba(16, 37, 54, .18);
  }
  #rk-loop-guide .rk-loop-cta::after { position: absolute; right: -55px; bottom: -90px; width: 250px; height: 250px; border: 36px solid rgba(255,255,255,.055); border-radius: 50%; content: ""; }
  #rk-loop-guide .rk-loop-cta h2 { position: relative; z-index: 1; max-width: 820px; margin-bottom: 15px; color: var(--rk-white); }
  #rk-loop-guide .rk-loop-cta p { position: relative; z-index: 1; max-width: 850px; color: #d7e9ee; }
  #rk-loop-guide .rk-loop-cta-button {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 54px;
    padding: 13px 22px;
    border-radius: 12px;
    color: var(--rk-white);
    background: var(--rk-orange);
    box-shadow: 0 12px 25px rgba(255, 106, 61, .27);
    font-weight: 950;
    line-height: 1.25;
    text-align: center;
    text-decoration: none;
  }
  #rk-loop-guide .rk-loop-cta-button:hover,
  #rk-loop-guide .rk-loop-cta-button:focus-visible { color: var(--rk-white); background: #e95127; transform: translateY(-2px); }
  #rk-loop-guide .rk-loop-disclosure { position: relative; z-index: 1; display: block; max-width: 780px; margin-top: 12px; color: #a9c8d2; font-size: .58rem; line-height: 1.45; }

  #rk-loop-guide .rk-loop-list { padding-left: 1.22em; }
  #rk-loop-guide .rk-loop-list li { margin-bottom: .55em; padding-left: .2em; }
  #rk-loop-guide .rk-loop-checklist { counter-reset: rkloopstep; display: grid; gap: 13px; padding: 0; list-style: none; }
  #rk-loop-guide .rk-loop-checklist li { counter-increment: rkloopstep; display: grid; grid-template-columns: 45px 1fr; gap: 14px; align-items: start; padding: 18px; border: 1px solid var(--rk-line); border-radius: 15px; background: var(--rk-white); }
  #rk-loop-guide .rk-loop-checklist li::before { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 13px; color: var(--rk-white); background: var(--rk-blue); content: counter(rkloopstep); font-weight: 950; }
  #rk-loop-guide .rk-loop-checklist b { display: block; margin-bottom: 3px; }
  #rk-loop-guide .rk-loop-checklist span { display: block; color: var(--rk-text); font-size: .85rem; line-height: 1.58; }

  #rk-loop-guide .rk-loop-faq { display: grid; gap: 10px; }
  #rk-loop-guide .rk-loop-faq details { overflow: hidden; border: 1px solid var(--rk-line); border-radius: 14px; background: var(--rk-white); }
  #rk-loop-guide .rk-loop-faq summary { position: relative; padding: 17px 52px 17px 18px; color: var(--rk-dark); cursor: pointer; font-weight: 880; line-height: 1.42; 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: 17px; display: grid; place-items: center; width: 27px; height: 27px; border-radius: 9px; color: var(--rk-blue); background: var(--rk-cyan-soft); content: "+"; transform: translateY(-50%); font-size: 1rem; font-weight: 950; }
  #rk-loop-guide .rk-loop-faq details[open] summary::after { content: "−"; }
  #rk-loop-guide .rk-loop-faq details[open] summary { color: var(--rk-blue); background: #f7fbfc; }
  #rk-loop-guide .rk-loop-faq-answer { padding: 0 18px 18px; color: var(--rk-text); }
  #rk-loop-guide .rk-loop-faq-answer p:last-child { margin-bottom: 0; }

  #rk-loop-guide .rk-loop-sources { padding: clamp(23px, 4vw, 34px); border: 1px solid var(--rk-line); border-radius: 18px; background: var(--rk-soft); }
  #rk-loop-guide .rk-loop-source-list { display: grid; gap: 11px; margin: 0; padding: 0; list-style: none; }
  #rk-loop-guide .rk-loop-source-list li { padding: 13px 15px; border-radius: 12px; background: var(--rk-white); color: var(--rk-text); font-size: .77rem; line-height: 1.55; }
  #rk-loop-guide .rk-loop-source-list b { display: block; margin-bottom: 2px; }

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

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

  @media (max-width: 700px) {
    #rk-loop-guide { margin-top: 18px; font-size: 16px; }
    #rk-loop-guide .rk-loop-shell { border-right: 0; border-left: 0; border-radius: 0; }
    #rk-loop-guide .rk-loop-hero-metrics,
    #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-fields { grid-template-columns: 1fr; }
    #rk-loop-guide .rk-loop-nav { position: static; justify-content: flex-start; }
    #rk-loop-guide .rk-loop-nav a { flex: 1 1 calc(50% - 7px); text-align: center; }
    #rk-loop-guide .rk-loop-length-map { grid-template-columns: 1fr; }
    #rk-loop-guide .rk-loop-length-plus { transform: rotate(90deg); text-align: center; }
    #rk-loop-guide .rk-loop-tool-head { display: block; }
    #rk-loop-guide .rk-loop-tool-badge { display: inline-flex; margin-top: 15px; }
    #rk-loop-guide .rk-loop-actions { display: grid; grid-template-columns: 1fr; }
    #rk-loop-guide .rk-loop-result-grid { grid-template-columns: 1fr 1fr; }
    #rk-loop-guide .rk-loop-canvas-wrap,
    #rk-loop-guide #rk-loop-chart { min-height: 300px; height: 300px; }
    #rk-loop-guide .rk-loop-data-table,
    #rk-loop-guide .rk-loop-data-table tbody,
    #rk-loop-guide .rk-loop-data-table tr,
    #rk-loop-guide .rk-loop-data-table td { display: block; width: 100%; }
    #rk-loop-guide .rk-loop-data-table thead { position: absolute; overflow: hidden; width: 1px; height: 1px; clip: rect(0 0 0 0); white-space: nowrap; }
    #rk-loop-guide .rk-loop-data-table { border: 0; border-radius: 0; background: transparent; }
    #rk-loop-guide .rk-loop-data-table tr { overflow: hidden; margin-bottom: 12px; border: 1px solid var(--rk-line); border-radius: 14px; background: var(--rk-white); box-shadow: 0 7px 19px rgba(16,37,54,.055); }
    #rk-loop-guide .rk-loop-data-table td { display: grid; grid-template-columns: minmax(115px, .8fr) minmax(0, 1.2fr); gap: 12px; padding: 11px 13px; border-bottom: 1px solid var(--rk-line); text-align: right; }
    #rk-loop-guide .rk-loop-data-table td::before { color: var(--rk-muted); content: attr(data-label); font-size: .59rem; font-weight: 900; line-height: 1.4; text-align: left; text-transform: uppercase; }
    #rk-loop-guide .rk-loop-data-table td:last-child { border-bottom: 0; }
    #rk-loop-guide .rk-loop-data-table tbody tr:nth-child(even) td { background: transparent; }
    #rk-loop-guide .rk-loop-data-table tbody tr.is-best td { background: var(--rk-green-soft); }
    #rk-loop-guide .rk-loop-data-table tbody tr.is-fail td { background: var(--rk-red-soft); }
    #rk-loop-guide .rk-loop-author-head { display: block; }
    #rk-loop-guide .rk-loop-author-mark { margin-top: 17px; white-space: normal; }
    #rk-loop-guide .rk-loop-author-main { padding: 24px 18px; }
    #rk-loop-guide .rk-loop-author-quote { padding: 65px 20px 22px; }
    #rk-loop-guide .rk-loop-author-quote::before { left: 20px; }
    #rk-loop-guide .rk-loop-author-tab { font-size: .58rem; }
  }

  @media (max-width: 430px) {
    #rk-loop-guide .rk-loop-result-grid { grid-template-columns: 1fr; }
    #rk-loop-guide .rk-loop-status { grid-template-columns: 1fr; }
    #rk-loop-guide .rk-loop-scheme-row { grid-template-columns: 68px 1fr; }
    #rk-loop-guide .rk-loop-manifold { font-size: .58rem; }
  }

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

  @media print {
    #rk-loop-guide .rk-loop-progress,
    #rk-loop-guide .rk-loop-nav,
    #rk-loop-guide .rk-loop-actions,
    #rk-loop-guide .rk-loop-cta { display: none !important; }
    #rk-loop-guide .rk-loop-shell { border: 0; box-shadow: none; }
    #rk-loop-guide .rk-loop-section { break-inside: avoid; }
  }
</style>

<div id="rk-loop-guide">
  <div class="rk-loop-progress" id="rk-loop-progress" aria-hidden="true"></div>

  <article class="rk-loop-shell">
    <header class="rk-loop-hero">
      <span class="rk-loop-kicker">Hydraulika pętli • aktualizacja 2026</span>
      <p class="rk-loop-hero-title">Jedna pętla nie ma jednej „magicznej” długości. <span>Liczy się cały układ.</span></p>
      <p class="rk-loop-lead">Wartości 80 albo 100 m mogą być praktycznym punktem kontrolnym dla rury 16×2 mm, ale nie zastępują obliczenia przepływu, rzeczywistej średnicy wewnętrznej, oporów i długości dobiegów. Tutaj policzysz wszystkie te zależności w jednym miejscu.</p>

      <div class="rk-loop-hero-tags" aria-label="Zakres opracowania">
        <span class="rk-loop-hero-tag">powierzchnia czynna</span>
        <span class="rk-loop-hero-tag">rozstaw rur</span>
        <span class="rk-loop-hero-tag">dobiegi do rozdzielacza</span>
        <span class="rk-loop-hero-tag">przepływ i prędkość</span>
        <span class="rk-loop-hero-tag">spadek ciśnienia</span>
      </div>

      <div class="rk-loop-byline">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Specjalista HVAC i ogrzewania podłogowego</span>
        <span>Aktualizacja techniczna: 29 sierpnia 2026 r.</span>
      </div>

      <div class="rk-loop-hero-metrics">
        <div class="rk-loop-hero-metric"><b>Nie jedna liczba</b><span>Długość jest wynikiem geometrii oraz hydrauliki.</span></div>
        <div class="rk-loop-hero-metric"><b>Pole + 2 dobiegi</b><span>Każdy obwód musi dojść od rozdzielacza i do niego wrócić.</span></div>
        <div class="rk-loop-hero-metric"><b>Moc → przepływ → opór</b><span>Tak wygląda właściwa kolejność weryfikacji obwodu.</span></div>
      </div>
    </header>

    <nav class="rk-loop-nav" aria-label="Nawigacja po artykule">
      <a href="#rk-loop-answer">Szybka odpowiedź</a>
      <a href="#rk-loop-length">Co liczymy</a>
      <a href="#rk-loop-hydraulics">Hydraulika</a>
      <a href="#rk-loop-calculator">Kalkulator</a>
      <a href="#rk-loop-comparison">Porównanie</a>
      <a href="#rk-loop-checklist">Checklista</a>
      <a href="#rk-loop-faq">FAQ</a>
    </nav>

    <main class="rk-loop-content">
      <section class="rk-loop-section" id="rk-loop-answer">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Odpowiedź w 30 sekund</span>
          <h2>Ile metrów podłogówki na jednej pętli?</h2>
        </div>

        <div class="rk-loop-answer">
          <p><strong>Dla rury 16×2 mm zakres około 80–100 m bywa stosowany jako praktyczne założenie wstępne, ale nie jest uniwersalnym limitem zapewniającym poprawne działanie.</strong> Tę samą długość można ocenić inaczej przy przepływie 0,8 l/min, a inaczej przy 2,0 l/min.</p>
          <p>Prawidłową długość trzeba sprawdzić na podstawie mocy przypisanej do obwodu, projektowego ΔT, przepływu, średnicy wewnętrznej, temperatury medium, strat w rurze i armaturze oraz ciśnienia dostępnego dla najbardziej niekorzystnej pętli.</p>
        </div>

        <div class="rk-loop-grid-2" style="margin-top:18px">
          <article class="rk-loop-card rk-loop-card-accent">
            <span class="rk-loop-card-number">1</span>
            <h3>Warunek geometryczny</h3>
            <p>Czy rura potrzebna do pokrycia powierzchni czynnej, po doliczeniu obu dobiegów, zmieści się w przyjętej długości obwodu?</p>
          </article>
          <article class="rk-loop-card rk-loop-card-orange">
            <span class="rk-loop-card-number">2</span>
            <h3>Warunek hydrauliczny</h3>
            <p>Czy przy wymaganym przepływie opór tej pętli pozostanie w budżecie ciśnienia przewidzianym dla obwodu?</p>
          </article>
        </div>

        <div class="rk-loop-note rk-loop-note-warn" style="margin-top:18px">
          <p><strong>Ważne:</strong> sama zgodność z długością 80 albo 100 m nie potwierdza jeszcze mocy podłogi. Rozstaw trzeba wcześniej sprawdzić cieplnie dla temperatur wody, konstrukcji jastrychu, okładziny i dopuszczalnej temperatury powierzchni. Metodyka projektowania systemów wbudowanych jest opisana m.in. w <a href="https://www.iso.org/standard/74684.html" target="_blank" rel="noopener nofollow">ISO 11855-3:2021</a>.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-length">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Metry bez zgadywania</span>
          <h2>Długość pętli to pole grzewcze i dwa dobiegi</h2>
          <p>Najczęstszy błąd polega na zamianie całej długości pętli na powierzchnię bez odjęcia trasy między rozdzielaczem a ogrzewanym polem.</p>
        </div>

        <div class="rk-loop-formula">
          <code>L<sub>pola</sub> ≈ A<sub>czynna</sub> / s</code>
          <small>Powierzchnię czynną podajemy w m², a rozstaw s w metrach. Jest to oszacowanie geometryczne przed rozrysowaniem rzeczywistej trasy.</small>
        </div>

        <div class="rk-loop-formula">
          <code>L<sub>pętli</sub> ≈ L<sub>pola</sub> / n + 2 · L<sub>dobiegu</sub></code>
          <small>n oznacza liczbę pętli obsługujących analizowane pole. Każdy obwód ma własne zasilanie i powrót.</small>
        </div>

        <div class="rk-loop-length-map" aria-label="Składniki długości jednej pętli">
          <div class="rk-loop-length-part"><b>Dobięg</b><span>od rozdzielacza do pola</span></div>
          <div class="rk-loop-length-plus">+</div>
          <div class="rk-loop-length-part"><b>Rura w polu</b><span>część odpowiedzialna za ogrzewanie powierzchni</span></div>
          <div class="rk-loop-length-plus">+</div>
          <div class="rk-loop-length-part"><b>Powrót</b><span>z pola do rozdzielacza</span></div>
        </div>

        <div class="rk-loop-grid-2">
          <article class="rk-loop-card rk-loop-card-green">
            <h3>Przykład: 24 m², rozstaw 15 cm</h3>
            <p>Idealna długość w polu wynosi około 160 m. Po przyjęciu jawnej korekty geometrycznej 5% otrzymujemy około 168 m. Przy dwóch obwodach i dobiegu 6 m w jedną stronę wychodzi orientacyjnie:</p>
            <div class="rk-loop-formula"><code>168 / 2 + 2 · 6 = 96 m</code></div>
            <p>Łącznie potrzebne będzie około 192 m rury, ponieważ każda z dwóch pętli ma własne dobiegi.</p>
          </article>
          <article class="rk-loop-card rk-loop-card-purple">
            <h3>Dlaczego nie dodajemy zawsze 10%?</h3>
            <p>Stały procent nie zna położenia rozdzielacza. W jednym pokoju dobiegi mogą mieć 2 m, a w innym 12 m w jedną stronę. Kalkulator pokazuje oddzielnie korektę geometrii pola oraz rzeczywistą deklarowaną długość dojścia.</p>
            <p>Więcej o samym zużyciu materiału znajdziesz w opracowaniu <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%c2%b2-ogrzewania-podlogowego/">ile rury na m² ogrzewania podłogowego</a>.</p>
          </article>
        </div>

        <div class="rk-loop-note" style="margin-top:18px">
          <p>Do obliczeń przyjmuj <strong>powierzchnię rzeczywiście ogrzewaną</strong>, a nie automatycznie całe pomieszczenie. Stała zabudowa, kominek, część konstrukcji oraz inne pola bez rur zmniejszają dostępną powierzchnię. Pomaga w tym poradnik <a href="https://projekt-ogrzewania.pl/gdzie-nie-ukladac-ogrzewania-podlogowego/">gdzie nie układać ogrzewania podłogowego</a>.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-hydraulics">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Najpierw przepływ</span>
          <h2>Dlaczego dwie pętle po 90 m mogą mieć zupełnie inne opory?</h2>
          <p>Długość jest tylko jednym z parametrów. Strata ciśnienia rośnie również wraz z przepływem i bardzo silnie reaguje na zmianę średnicy wewnętrznej.</p>
        </div>

        <div class="rk-loop-grid-2">
          <article class="rk-loop-card rk-loop-card-accent">
            <h3>1. Moc wyznacza przepływ</h3>
            <div class="rk-loop-formula"><code>V̇ [l/min] ≈ Φ [W] / (69,8 · ΔT [K])</code></div>
            <p>Dla wody i pętli przekazującej 700 W przy ΔT równym 5 K otrzymamy około 2,01 l/min. Przy tej samej mocy i ΔT równym 7 K będzie to około 1,43 l/min.</p>
          </article>
          <article class="rk-loop-card rk-loop-card-orange">
            <h3>2. Przepływ i średnica wyznaczają opór</h3>
            <div class="rk-loop-formula"><code>Δp = λ · L / d<sub>i</sub> · ρv² / 2 + ΣΔp<sub>miejscowe</sub></code></div>
            <p>Model Darcy’ego-Weisbacha łączy długość, średnicę, prędkość, gęstość i współczynnik tarcia. Osobno trzeba uwzględnić zawory, rozdzielacz i pozostałe elementy.</p>
          </article>
        </div>

        <div class="rk-loop-grid-3" style="margin-top:18px">
          <article class="rk-loop-card"><h3>Średnica wewnętrzna</h3><p>O hydraulice decyduje światło rury, nie wyłącznie oznaczenie 16, 17 albo 20 mm na zewnątrz.</p></article>
          <article class="rk-loop-card"><h3>Temperatura medium</h3><p>Temperatura zmienia gęstość i lepkość wody. Mieszanina z glikolem wymaga osobnych właściwości cieczy.</p></article>
          <article class="rk-loop-card"><h3>Obwód wspólny</h3><p>Dobór pompy obejmuje również magistralę, rozdzielacz, źródło, filtry i armaturę poza samą pętlą.</p></article>
        </div>

        <div class="rk-loop-note rk-loop-note-good" style="margin-top:18px">
          <p><strong>Nie sumujemy strat ciśnienia równoległych pętli.</strong> Dla rozdzielacza analizuje się najbardziej wymagającą drogę przepływu, a następnie dodaje opory elementów wspólnych. Sumuje się natomiast przepływy wszystkich jednocześnie pracujących obwodów. Zobacz także poradniki o <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompie obiegowej</a>, <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach</a> i <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">różnicy temperatury zasilania i powrotu</a>.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-calculator">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Narzędzie interaktywne</span>
          <h2>Analizator długości, liczby i hydrauliki pętli</h2>
          <p>Wprowadź dane jednego pomieszczenia albo jednej spójnej strefy. Narzędzie przetestuje kolejne podziały na pętle i wybierze pierwszy wariant spełniający przyjęty limit długości, budżet ciśnienia oraz maksymalną prędkość.</p>
        </div>

        <div class="rk-loop-tool" role="region" aria-label="Kalkulator długości pętli ogrzewania podłogowego">
          <div class="rk-loop-tool-head">
            <div>
              <h3>Policz pętle dla swoich założeń</h3>
              <p>Wynik jest wstępną analizą referencyjną. Wszystkie kryteria hydrauliczne są widoczne i można je zmienić, zamiast ukrywać je pod hasłem „maksymalnie 100 m”.</p>
            </div>
            <span class="rk-loop-tool-badge">model Darcy-Weisbach</span>
          </div>

          <div class="rk-loop-tool-body">
            <div class="rk-loop-form-group">
              <div class="rk-loop-form-group-title"><span>1</span> Geometria pola</div>
              <div class="rk-loop-fields">
                <div class="rk-loop-field">
                  <label for="rk-loop-area">Powierzchnia rzeczywiście ogrzewana</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-area" type="number" min="1" max="500" step="0.1" value="24" inputmode="decimal"><span class="rk-loop-unit">m²</span></div>
                  <small>Bez trwałej zabudowy i wyłączonych pól.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-spacing">Rozstaw rur</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-spacing" type="number" min="5" max="30" step="0.5" value="15" inputmode="decimal"><span class="rk-loop-unit">cm</span></div>
                  <small>Rozstaw musi być wcześniej sprawdzony cieplnie.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-approach">Dobięg w jedną stronę</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-approach" type="number" min="0" max="60" step="0.5" value="6" inputmode="decimal"><span class="rk-loop-unit">m</span></div>
                  <small>Od rozdzielacza do początku pola grzewczego.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-geometry">Korekta geometrii pola</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-geometry" type="number" min="0" max="20" step="0.5" value="5" inputmode="decimal"><span class="rk-loop-unit">%</span></div>
                  <small>Jawny szacunek na łuki i kształt, nie wartość normowa.</small>
                </div>
              </div>
            </div>

            <div class="rk-loop-form-group">
              <div class="rk-loop-form-group-title"><span>2</span> Moc i przepływ</div>
              <div class="rk-loop-fields">
                <div class="rk-loop-field">
                  <label for="rk-loop-power">Projektowa moc strefy</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-power" type="number" min="50" max="50000" step="10" value="1800" inputmode="decimal"><span class="rk-loop-unit">W</span></div>
                  <small>Najlepiej z obliczeń obciążenia cieplnego.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-delta">Projektowe ΔT</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-delta" type="number" min="2" max="20" step="0.5" value="5" inputmode="decimal"><span class="rk-loop-unit">K</span></div>
                  <small>Różnica między zasilaniem i powrotem.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-temperature">Średnia temperatura wody</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-temperature" type="number" min="5" max="80" step="0.5" value="30" inputmode="decimal"><span class="rk-loop-unit">°C</span></div>
                  <small>Wpływa na gęstość i lepkość w modelu.</small>
                </div>
              </div>
            </div>

            <div class="rk-loop-form-group">
              <div class="rk-loop-form-group-title"><span>3</span> Rura i kryteria wstępne</div>
              <div class="rk-loop-fields">
                <div class="rk-loop-field">
                  <label for="rk-loop-pipe">Rura referencyjna</label>
                  <div class="rk-loop-input-wrap">
                    <select id="rk-loop-pipe">
                      <option value="12" selected>16×2 mm — dᵢ 12 mm</option>
                      <option value="13">17×2 mm — dᵢ 13 mm</option>
                      <option value="16">20×2 mm — dᵢ 16 mm</option>
                    </select>
                  </div>
                  <small>Sprawdź rzeczywistą średnicę w dokumentacji użytej rury.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-extra-loss">Opory dodatkowe jednej pętli</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-extra-loss" type="number" min="0" max="50" step="0.5" value="3" inputmode="decimal"><span class="rk-loop-unit">kPa</span></div>
                  <small>Wstępny udział zaworów i rozdzielacza.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-budget">Budżet ciśnienia dla pętli</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-budget" type="number" min="3" max="100" step="0.5" value="20" inputmode="decimal"><span class="rk-loop-unit">kPa</span></div>
                  <small>Założenie projektowe, a nie limit normowy.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-max-length">Praktyczna długość kontrolna</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-max-length" type="number" min="30" max="250" step="1" value="100" inputmode="decimal"><span class="rk-loop-unit">m</span></div>
                  <small>Edytowalne kryterium pomocnicze.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-max-speed">Maksymalna prędkość kontrolna</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-max-speed" type="number" min="0.2" max="1.5" step="0.05" value="0.6" inputmode="decimal"><span class="rk-loop-unit">m/s</span></div>
                  <small>Granica przyjęta do wstępnego porównania.</small>
                </div>
              </div>
            </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 class="rk-loop-results" id="rk-loop-results" aria-live="polite">
              <div class="rk-loop-status" id="rk-loop-status">
                <div class="rk-loop-status-icon" id="rk-loop-status-icon">✓</div>
                <div><b id="rk-loop-status-title">Wariant spełnia przyjęte kryteria wstępne</b><span id="rk-loop-status-copy">Kalkulator znalazł pierwszy podział mieszczący się w ustawionym limicie długości, ciśnienia i prędkości.</span></div>
              </div>

              <div class="rk-loop-result-grid">
                <div class="rk-loop-result-card"><span>Wstępna liczba pętli</span><b id="rk-loop-result-count">3</b><small>przed rozrysowaniem rzutu</small></div>
                <div class="rk-loop-result-card"><span>Średnia długość pętli</span><b id="rk-loop-result-length">68,0 m</b><small>pole i oba dobiegi</small></div>
                <div class="rk-loop-result-card"><span>Całkowita ilość rury</span><b id="rk-loop-result-total">204,0 m</b><small>dla analizowanej strefy</small></div>
                <div class="rk-loop-result-card"><span>Rura w samym polu</span><b id="rk-loop-result-field">168,0 m</b><small>po korekcie geometrii</small></div>
                <div class="rk-loop-result-card"><span>Przepływ na pętlę</span><b id="rk-loop-result-flow">1,72 l/min</b><small id="rk-loop-result-flow-total">łącznie 5,16 l/min</small></div>
                <div class="rk-loop-result-card"><span>Prędkość medium</span><b id="rk-loop-result-speed">0,25 m/s</b><small>dla wskazanej średnicy</small></div>
                <div class="rk-loop-result-card"><span>Strata pętli z dodatkami</span><b id="rk-loop-result-loss">10,5 kPa</b><small>model referencyjny</small></div>
                <div class="rk-loop-result-card"><span>Wymagana moc z 1 m²</span><b id="rk-loop-result-unit-power">75,0 W/m²</b><small id="rk-loop-result-area">8,0 m² na pętlę</small></div>
              </div>

              <div class="rk-loop-result-note" id="rk-loop-result-note">Analizator nie sprawdza, czy wybrany rozstaw i konstrukcja podłogi oddadzą wymaganą moc. Wynik hydrauliczny trzeba połączyć z obliczeniem cieplnym oraz rzeczywistym przebiegiem rur.</div>

              <div class="rk-loop-data-table-wrap">
                <div class="rk-loop-table-title">Jak kolejne podziały zmieniają długość i hydraulikę?</div>
                <table class="rk-loop-data-table" aria-label="Porównanie wariantów liczby pętli">
                  <thead><tr><th>Pętle</th><th>Długość jednej</th><th>Przepływ jednej</th><th>Prędkość</th><th>Strata z dodatkami</th><th>Ocena</th></tr></thead>
                  <tbody id="rk-loop-candidate-body"></tbody>
                </table>
              </div>

              <div class="rk-loop-visual-grid">
                <div class="rk-loop-chart-card">
                  <div class="rk-loop-chart-head">
                    <h3>Spadek ciśnienia a długość pętli</h3>
                    <div class="rk-loop-legend" aria-label="Legenda wykresu">
                      <span><i></i>16×2</span>
                      <span><i class="is-green"></i>17×2</span>
                      <span><i class="is-orange"></i>20×2</span>
                      <span><i class="is-budget"></i>budżet</span>
                    </div>
                  </div>
                  <div class="rk-loop-canvas-wrap"><canvas id="rk-loop-chart" role="img" aria-label="Wykres spadku ciśnienia w zależności od długości pętli dla trzech średnic rur"></canvas></div>
                  <p class="rk-loop-chart-caption" id="rk-loop-chart-caption">Linie porównują trzy średnice przy tym samym przepływie przypadającym na obwód. Pionowy znacznik pokazuje wyliczoną średnią długość.</p>
                </div>

              </div>
            </div>
          </div>
        </div>

        <div class="rk-loop-note rk-loop-note-warn" style="margin-top:18px">
          <p><strong>Zakres modelu:</strong> obliczenia dotyczą wody i gładkiej rury tworzywowej o referencyjnej chropowatości. Dla glikolu należy zastosować właściwości konkretnej mieszaniny. Wartość oporów dodatkowych jest wprowadzana przez użytkownika, ponieważ bez danych rozdzielacza i zaworów nie da się jej uczciwie wyznaczyć.</p>
        </div>
      </section>

      <section class="rk-loop-cta" aria-label="Projekt z rozrysowanymi pętlami i długościami">
        <span class="rk-loop-kicker">Od liczby do rzeczywistego rzutu</span>
        <h2>Kalkulator dzieli metry, ale nie rozrysuje pętli na rzucie</h2>
        <p>Analizator zakłada równy podział powierzchni i podobne dobiegi. Nie zna kształtu pomieszczenia, stałej zabudowy, przejść przez drzwi, dylatacji, stref brzegowych ani kolejności układania rur. Sam wynik liczbowy nie mówi jeszcze, którędy obwody mają przebiegać ani jakie będą ich rzeczywiste długości i nastawy.</p>
        <a class="rk-loop-cta-button rk-loop-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z rozrysowanymi pętlami i długościami</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>

      <section class="rk-loop-section" id="rk-loop-comparison">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Te same warunki, różne rury</span>
          <h2>Rura 16×2, 17×2 i 20×2 mm — co rzeczywiście zmienia średnica?</h2>
          <p>Większe światło rury może wyraźnie zmniejszyć stratę ciśnienia przy tym samym przepływie i długości. Nie tworzy jednak automatycznego pozwolenia na obwód 120 albo 150 m.</p>
        </div>

        <table class="rk-loop-data-table" aria-label="Porównanie wymiarów rur do ogrzewania podłogowego">
          <thead><tr><th>Oznaczenie</th><th>Referencyjne dᵢ</th><th>Wpływ hydrauliczny</th><th>Co trzeba sprawdzić</th></tr></thead>
          <tbody>
            <tr>
              <td data-label="Oznaczenie"><strong>16×2 mm</strong></td>
              <td data-label="Referencyjne dᵢ">12 mm</td>
              <td data-label="Wpływ hydrauliczny">Najwyższa prędkość i opór spośród porównywanych wariantów przy identycznym przepływie.</td>
              <td data-label="Co trzeba sprawdzić">Wymagany przepływ, długość z dobiegami, opór pętli oraz możliwość regulacji.</td>
            </tr>
            <tr>
              <td data-label="Oznaczenie"><strong>17×2 mm</strong></td>
              <td data-label="Referencyjne dᵢ">13 mm</td>
              <td data-label="Wpływ hydrauliczny">Niższa prędkość oraz jednostkowa strata ciśnienia niż przy średnicy wewnętrznej 12 mm.</td>
              <td data-label="Co trzeba sprawdzić">Rzeczywisty wymiar produktu, promień gięcia i zgodność z kompletnym systemem.</td>
            </tr>
            <tr>
              <td data-label="Oznaczenie"><strong>20×2 mm</strong></td>
              <td data-label="Referencyjne dᵢ">16 mm</td>
              <td data-label="Wpływ hydrauliczny">Znacznie mniejszy opór przy tym samym przepływie, ale większa sztywność i inna geometria układania.</td>
              <td data-label="Co trzeba sprawdzić">Obliczenia cieplne, hydraulikę, wykonanie łuków oraz rozwiązania konstrukcyjne podłogi.</td>
            </tr>
          </tbody>
        </table>

        <div class="rk-loop-note" style="margin-top:18px">
          <p>Podane średnice wewnętrzne są wartościami referencyjnymi wynikającymi z prostego odejmowania dwóch grubości ścianki. Przed wykonaniem projektu należy sprawdzić kartę techniczną konkretnej rury. Więcej o doborze wymiaru przeczytasz w opracowaniu <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnice rur w ogrzewaniu podłogowym</a>.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-area-guide">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Metry kwadratowe na obwód</span>
          <h2>Ile powierzchni może przypadać na jedną pętlę?</h2>
          <p>Bez podania rozstawu i długości dobiegów pytanie nie ma jednej odpowiedzi. Poniższy przykład pokazuje tylko geometrię: z całej pętli 80 m odejmujemy łącznie 12 m dojścia i powrotu, więc w polu pozostaje 68 m.</p>
        </div>

        <table class="rk-loop-data-table" aria-label="Przykładowa powierzchnia pola dla pętli 80 metrów">
          <thead><tr><th>Rozstaw</th><th>Idealna ilość rury w polu</th><th>Pole z 68 m rury</th><th>Znaczenie wyniku</th></tr></thead>
          <tbody>
            <tr><td data-label="Rozstaw"><strong>10 cm</strong></td><td data-label="Rura w polu">około 10 m/m²</td><td data-label="Pole z 68 m">około 6,8 m²</td><td data-label="Znaczenie">Duża ilość rury na małym polu; wcześniej trzeba potwierdzić potrzebę takiego zagęszczenia.</td></tr>
            <tr><td data-label="Rozstaw"><strong>15 cm</strong></td><td data-label="Rura w polu">około 6,67 m/m²</td><td data-label="Pole z 68 m">około 10,2 m²</td><td data-label="Znaczenie">Przykład geometryczny, nie automatyczna zalecana powierzchnia pętli.</td></tr>
            <tr><td data-label="Rozstaw"><strong>20 cm</strong></td><td data-label="Rura w polu">około 5 m/m²</td><td data-label="Pole z 68 m">około 13,6 m²</td><td data-label="Znaczenie">Większe pole nie potwierdza, że podłoga pokryje wymaganą moc przy danej temperaturze wody.</td></tr>
          </tbody>
        </table>

        <div class="rk-loop-note rk-loop-note-warn" style="margin-top:18px">
          <p>W tabeli nie doliczono korekty na rzeczywiste łuki i kształt pola. Nie jest to tabela maksymalnych powierzchni. Właściwy rozstaw wybiera się na podstawie obciążenia cieplnego, powierzchni czynnej i charakterystyki podłogi. Zobacz szczegółowe porównanie <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstawu rur co 10 i 15 cm</a>.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-rooms">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Różne pomieszczenia</span>
          <h2>Salon, łazienka i duże przeszklenia nie potrzebują tej samej reguły</h2>
          <p>Podział na obwody wynika z geometrii i hydrauliki, ale wcześniej każde pomieszczenie musi przejść osobną kontrolę cieplną.</p>
        </div>

        <div class="rk-loop-grid-4">
          <article class="rk-loop-card rk-loop-card-accent">
            <h3>Duży salon</h3>
            <p>Najczęściej wymaga kilku pól. Granice pętli powinny uwzględniać kształt, komunikację, dylatacje oraz realistyczny powrót rur do rozdzielacza.</p>
          </article>
          <article class="rk-loop-card rk-loop-card-orange">
            <h3>Łazienka</h3>
            <p>Wyższa temperatura obliczeniowa i mała powierzchnia czynna mogą zwiększyć wymaganą moc z 1 m². Krótki obwód nie musi mieć takiego przepływu jak dłuższa pętla salonu.</p>
          </article>
          <article class="rk-loop-card rk-loop-card-green">
            <h3>Duże okna</h3>
            <p>Strefa brzegowa może zmienić rozstaw i trasę, lecz nie wolno automatycznie zagęszczać rur bez sprawdzenia mocy oraz temperatury powierzchni.</p>
          </article>
          <article class="rk-loop-card rk-loop-card-purple">
            <h3>Dom szkieletowy</h3>
            <p>Mniejsza bezwładność budynku nie narzuca pętli 60–70 m. O dynamice decyduje konstrukcja podłogi i sterowanie, a długość weryfikuje hydraulika.</p>
          </article>
        </div>

        <p style="margin-top:18px">Przed rozrysowaniem warto przeczytać poradnik <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">jak zaplanować rozmieszczenie pętli grzewczych</a> oraz opracowanie o <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">strefie brzegowej</a>.</p>
      </section>

      <section class="rk-loop-section" id="rk-loop-balancing">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Regulacja rozdzielacza</span>
          <h2>Czy wszystkie pętle muszą mieć identyczną długość?</h2>
          <p>Nie. Podobne długości często ułatwiają równoważenie, ale celem projektu nie jest uzyskanie identycznej liczby metrów. Celem jest osiągnięcie wymaganych przepływów dla wszystkich obwodów.</p>
        </div>

        <div class="rk-loop-grid-2">
          <article class="rk-loop-card rk-loop-card-green">
            <h3>Różne długości mogą pracować razem</h3>
            <p>Pętla łazienki o długości 45 m może pracować obok pętli salonu o długości 92 m, jeżeli każda otrzyma właściwy przepływ, a zawory i pompa zapewnią wymagane warunki regulacji.</p>
          </article>
          <article class="rk-loop-card rk-loop-card-orange">
            <h3>Podobna długość nie gwarantuje równowagi</h3>
            <p>Dwie pętle po 80 m mogą potrzebować różnych przepływów, ponieważ obsługują inną moc. Jednakowa nastawa wszystkich rotametrów nie jest wtedy prawidłowym rozwiązaniem.</p>
          </article>
        </div>

        <div class="rk-loop-note" style="margin-top:18px">
          <p>Nie ma uniwersalnej reguły, że długości mogą różnić się maksymalnie o 10 albo 15%. Najpierw przypisuje się moc do obwodów, oblicza przepływy, sprawdza opory i dopiero potem ocenia zakres regulacji rozdzielacza.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-source">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Źródło ciepła i medium</span>
          <h2>Pompa ciepła, kocioł i glikol — co naprawdę zmieniają?</h2>
          <p>Podłoga nie rozpoznaje urządzenia, które podgrzało wodę. Źródło wpływa na temperaturę, z jaką chcemy pracować, ale nie wyznacza samodzielnie długości pętli.</p>
        </div>

        <div class="rk-loop-grid-3">
          <article class="rk-loop-card rk-loop-card-accent">
            <h3>Pompa ciepła</h3>
            <p>Niska temperatura zasilania może wymagać większej powierzchni czynnej albo innego rozstawu. Krótsza pętla może ograniczyć potrzebne ciśnienie, ale sama nie gwarantuje poprawy SCOP.</p>
          </article>
          <article class="rk-loop-card rk-loop-card-green">
            <h3>Kocioł</h3>
            <p>Możliwość uzyskania wyższej temperatury wody nie powinna służyć do maskowania zbyt małej powierzchni grzewczej lub błędnego rozstawu.</p>
          </article>
          <article class="rk-loop-card rk-loop-card-purple">
            <h3>Mieszanina z glikolem</h3>
            <p>Glikol zmienia lepkość, gęstość i pojemność cieplną. Kalkulator wodny nie powinien być bez korekty używany do doboru takiej instalacji.</p>
          </article>
        </div>

        <p style="margin-top:18px">Jeżeli instalacja ma pracować z mieszaniną niezamarzającą, przeczytaj opracowanie <a href="https://projekt-ogrzewania.pl/glikol-w-ogrzewaniu-podlogowym-prawda-i-mity-ktore-musi-znac-kazdy-inwestor/">glikol w ogrzewaniu podłogowym — prawda i mity</a>.</p>
      </section>

      <section class="rk-loop-section" id="rk-loop-myths">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Bez straszenia i skrótów</span>
          <h2>Najczęstsze mity o długości pętli</h2>
        </div>

        <table class="rk-loop-data-table" aria-label="Mity i wyjaśnienia dotyczące długości pętli">
          <thead><tr><th>Mit</th><th>Wyjaśnienie techniczne</th></tr></thead>
          <tbody>
            <tr><td data-label="Mit"><strong>Norma ustala 100 m dla rury 16×2</strong></td><td data-label="Wyjaśnienie">Jedna liczba nie zastępuje sprawdzenia przepływu, oporów, średnicy wewnętrznej i dostępnego ciśnienia.</td></tr>
            <tr><td data-label="Mit"><strong>Długa pętla zawsze ma ΔT 10 K</strong></td><td data-label="Wyjaśnienie">Różnica temperatur wynika z mocy oddawanej przez obwód i przepływu. Duży opór może utrudnić uzyskanie przepływu, ale nie narzuca z góry konkretnego ΔT.</td></tr>
            <tr><td data-label="Mit"><strong>Za długa pętla powoduje kawitację</strong></td><td data-label="Wyjaśnienie">Kawitacja zależy od lokalnego ciśnienia bezwzględnego, temperatury i warunków pracy pompy. Typowym skutkiem nadmiernego oporu jest brak wymaganego przepływu lub potrzeba większej wysokości podnoszenia.</td></tr>
            <tr><td data-label="Mit"><strong>Długa pętla pęka wylewkę</strong></td><td data-label="Wyjaśnienie">Rysy i uszkodzenia jastrychu wiążą się z jego konstrukcją, dylatacjami, wykonaniem, pielęgnacją, wygrzewaniem oraz ruchami termicznymi, a nie z samą liczbą metrów obwodu.</td></tr>
            <tr><td data-label="Mit"><strong>Krótsze pętle automatycznie poprawiają SCOP</strong></td><td data-label="Wyjaśnienie">Mogą zmniejszyć wymagane ciśnienie pompy obiegowej, ale sprawność pompy ciepła zależy przede wszystkim od warunków źródła i odbioru oraz temperatury zasilania.</td></tr>
            <tr><td data-label="Mit"><strong>Wszystkie rotametry ustawia się tak samo</strong></td><td data-label="Wyjaśnienie">Przepływ każdej pętli powinien wynikać z przypisanej mocy i projektowego ΔT, a następnie zostać zweryfikowany hydraulicznie.</td></tr>
          </tbody>
        </table>

        <div class="rk-loop-note rk-loop-note-warn" style="margin-top:18px">
          <p>Jeżeli instalacja jest już wykonana i podejrzewasz zbyt długi obwód, przejdź do osobnego poradnika <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">za długa pętla podłogówki — objawy i rozwiązania</a>. Techniczne granice i weryfikację przyjętej długości rozwija natomiast wpis <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalna długość pętli ogrzewania podłogowego</a>.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-checklist">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Procedura przed montażem</span>
          <h2>Jak wyznaczyć liczbę i długość pętli krok po kroku?</h2>
          <p>Kolejność ma znaczenie. Nie zaczynamy od podzielenia metrów przez arbitralne 80.</p>
        </div>

        <ol class="rk-loop-checklist">
          <li><div><b>Oblicz obciążenie cieplne pomieszczenia</b><span>Ustal moc potrzebną w warunkach projektowych. Średni wskaźnik dla całego domu nie zastępuje obliczeń poszczególnych pomieszczeń. Pomocne będzie opracowanie o <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowym obciążeniu cieplnym OZC</a>.</span></div></li>
          <li><div><b>Wyznacz powierzchnię czynną</b><span>Odejmij stałą zabudowę i pola wyłączone z układania rur. Sprawdź rzeczywistą geometrię, a nie tylko metraż z zestawienia pomieszczeń.</span></div></li>
          <li><div><b>Dobierz rozstaw z obliczeń cieplnych</b><span>Porównaj wymaganą moc z wydajnością konkretnej konstrukcji podłogi przy przyjętej temperaturze wody oraz okładzinie.</span></div></li>
          <li><div><b>Oszacuj rurę w polu</b><span>Podziel powierzchnię czynną przez rozstaw wyrażony w metrach. Ewentualną korektę geometrii pokaż jawnie.</span></div></li>
          <li><div><b>Dodaj osobno oba dobiegi każdej pętli</b><span>Położenie rozdzielacza może zmienić zarówno całkowite zużycie rury, jak i realne pole obsługiwane przez obwód.</span></div></li>
          <li><div><b>Przypisz moc i oblicz przepływ obwodów</b><span>Przepływ wynika z mocy pętli i projektowej różnicy temperatur. Nie dobiera się go bezpośrednio z samej długości.</span></div></li>
          <li><div><b>Sprawdź średnicę, prędkość i spadek ciśnienia</b><span>Uwzględnij rurę, zawory, rozdzielacz oraz budżet ciśnienia wynikający z koncepcji całego obiegu.</span></div></li>
          <li><div><b>Rozrysuj i opisz każdą pętlę na rzucie</b><span>Dopiero rysunek ujawnia rzeczywiste dobiegi, przejścia przez drzwi, dylatacje, strefy brzegowe, kolejność układania i faktyczne długości.</span></div></li>
        </ol>
      </section>

      <section class="rk-loop-section" id="rk-loop-faq">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Pytania i odpowiedzi</span>
          <h2>Ile metrów podłogówki na jednej pętli — FAQ</h2>
        </div>

        <div class="rk-loop-faq">
          <details><summary>Ile metrów powinna mieć jedna pętla ogrzewania podłogowego?</summary><div class="rk-loop-faq-answer"><p>Nie ma jednej długości właściwej dla każdej instalacji. Dla rury 16×2 mm wartości około 80–100 m bywają praktycznym założeniem wstępnym, ale wynik trzeba sprawdzić przy wymaganym przepływie, rzeczywistej średnicy wewnętrznej, oporach armatury i dostępnym ciśnieniu.</p></div></details>
          <details><summary>Czy 100 m to maksymalna długość pętli z rury 16×2 mm?</summary><div class="rk-loop-faq-answer"><p>Nie należy przedstawiać 100 m jako uniwersalnego limitu gwarantującego poprawność. Pętla krótsza może być zbyt oporowa przy dużym przepływie, a dłuższy obwód może spełniać przyjęty budżet w innych warunkach. Ostateczna decyzja wymaga obliczeń całej drogi przepływu.</p></div></details>
          <details><summary>Ile m² ogrzeje pętla 80 m przy rozstawie 10 cm?</summary><div class="rk-loop-faq-answer"><p>Jeżeli całe 80 m znajdowałoby się w polu, geometria dawałaby około 8 m². W praktyce trzeba odjąć zasilanie i powrót od rozdzielacza oraz uwzględnić łuki i kształt pola. Przy 12 m łącznych dobiegów w polu pozostaje 68 m, czyli orientacyjnie około 6,8 m².</p></div></details>
          <details><summary>Czy dobiegi wlicza się do długości pętli?</summary><div class="rk-loop-faq-answer"><p>Tak. Cała rura od belki zasilającej, przez pole grzewcze, aż do belki powrotnej tworzy jeden obwód hydrauliczny. Każda pętla wymaga doliczenia drogi do strefy oraz drogi powrotnej.</p></div></details>
          <details><summary>Czy wszystkie pętle powinny mieć taką samą długość?</summary><div class="rk-loop-faq-answer"><p>Nie. Podobne długości mogą ułatwić regulację, ale obwody obsługują różne moce i mogą wymagać innych przepływów. Najważniejsze jest osiągnięcie przepływów projektowych w zakresie regulacji zaworów i przy dostępnym ciśnieniu.</p></div></details>
          <details><summary>Co się dzieje, gdy pętla jest za długa?</summary><div class="rk-loop-faq-answer"><p>Wraz z długością rośnie strata ciśnienia. Jeżeli dostępne ciśnienie jest zbyt małe, pętla może nie osiągnąć wymaganego przepływu, a pomieszczenie wymaganej mocy. Nie oznacza to automatycznie kawitacji, pękania wylewki ani z góry określonego ΔT.</p></div></details>
          <details><summary>Czy rura 20×2 mm pozwala zawsze wykonać pętlę 150 m?</summary><div class="rk-loop-faq-answer"><p>Nie. Większa średnica wewnętrzna zmniejsza opór przy tym samym przepływie, ale długość nadal trzeba sprawdzić razem z mocą, przepływem, właściwościami medium, armaturą, budżetem ciśnienia i możliwościami wykonawczymi.</p></div></details>
          <details><summary>Czy pompa ciepła wymaga pętli krótszych niż kocioł?</summary><div class="rk-loop-faq-answer"><p>Nie bezpośrednio. Źródło ciepła wpływa na pożądaną temperaturę pracy, natomiast długość pętli wynika z geometrii i hydrauliki. Krótszy obwód może ograniczyć wymagane ciśnienie, ale nie jest automatycznym warunkiem współpracy z pompą ciepła.</p></div></details>
          <details><summary>Jak obliczyć przepływ jednej pętli?</summary><div class="rk-loop-faq-answer"><p>Dla wody można orientacyjnie podzielić moc pętli w watach przez iloczyn 69,8 oraz projektowego ΔT w kelwinach. Wynik otrzymujemy w l/min. Następnie sprawdzamy, jaki spadek ciśnienia wywoła ten przepływ w konkretnej rurze i armaturze.</p></div></details>
          <details><summary>Czy kalkulator zastępuje projekt ogrzewania podłogowego?</summary><div class="rk-loop-faq-answer"><p>Nie. Kalkulator wykonuje wstępny równy podział i referencyjne obliczenie hydrauliczne. Nie zna kształtu pomieszczeń, stref bez rur, dylatacji, rzeczywistych tras, charakterystyk zaworów ani pozostałych oporów wspólnego obiegu.</p></div></details>
        </div>
      </section>

      <section class="rk-loop-section rk-loop-sources" id="rk-loop-sources">
        <span class="rk-loop-eyebrow">Źródła i metodyka</span>
        <h2>Na czym oparto opracowanie?</h2>
        <ul class="rk-loop-source-list">
          <li><b><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="noopener nofollow">ISO 11855-3:2021 — Design and dimensioning</a></b>Oficjalny opis części normy dotyczącej projektowania i wymiarowania wbudowanych systemów ogrzewania oraz chłodzenia płaszczyznowego.</li>
          <li><b><a href="https://radiant.cbe.berkeley.edu/resources/rad_tool_documentation" target="_blank" rel="noopener nofollow">University of California, Berkeley — Radiant Tools</a></b>Dokumentacja akademickiego narzędzia wskazująca zależność liczby obwodów od długości, wymaganego przepływu oraz spadku ciśnienia.</li>
          <li><b><a href="https://ceac.arizona.edu/sites/default/files/giacomelli%20heating.pdf" target="_blank" rel="noopener nofollow">University of Arizona — Heating Systems</a></b>Materiał dydaktyczny opisujący zależność strat ciśnienia od przepływu, średnicy, długości, chropowatości i oporów miejscowych oraz zastosowanie równania Darcy’ego-Weisbacha.</li>
        </ul>
        <p style="margin:17px 0 0;color:var(--rk-muted);font-size:.68rem">Kalkulator jest modelem edukacyjnym dla wody. Stosuje interpolowane właściwości wody w zakresie temperatur wejściowych, równanie Darcy’ego-Weisbacha i przybliżenie Haalanda dla współczynnika tarcia. Nie zastępuje danych konkretnego systemu ani pełnego doboru pompy.</p>
      </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 PĘTLI • 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 ogrzewania podłogowego" width="600" height="600" loading="lazy" decoding="async"></div>
          <div class="rk-loop-author-name">Robert Kucharski</div>
          <div class="rk-loop-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
          <div class="rk-loop-author-social-label">Znajdziesz mnie również:</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="noopener nofollow me" aria-label="Robert Kucharski na LinkedIn" title="LinkedIn"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5.2 7.7H1.6V22h3.6V7.7ZM3.4 2A2.1 2.1 0 1 0 3.4 6.2 2.1 2.1 0 0 0 3.4 2ZM22.4 13.8c0-4.3-2.3-6.3-5.4-6.3a4.7 4.7 0 0 0-4.2 2.3V7.7H9.2V22h3.6v-7.1c0-1.9.4-3.7 2.7-3.7 2.3 0 2.3 2.1 2.3 3.8v7h3.6l1-8.2Z"></path></svg></a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="noopener nofollow me" aria-label="Projekt-Ogrzewania.pl na Facebooku" title="Facebook"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M14.2 22v-9h3l.5-3.5h-3.5V7.3c0-1 .3-1.7 1.8-1.7h1.9V2.5c-.3 0-1.5-.1-2.8-.1-2.8 0-4.7 1.7-4.7 4.8v2.3H7.2V13h3.2v9h3.8Z"></path></svg></a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="noopener nofollow me" aria-label="Projekt HVAC w serwisie X" title="X"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.9 2H22l-6.8 7.8L23.2 22H17l-4.9-6.4L6.5 22H3.3l7.3-8.4L2.8 2h6.4l4.4 5.8L18.9 2Zm-1.1 17.8h1.7L8.3 4.1H6.5l11.3 15.7Z"></path></svg></a>
          </div>
        </aside>

        <div class="rk-loop-author-main">
          <blockquote class="rk-loop-author-quote"><p>„Długość pętli nie jest celem samym w sobie. Najpierw trzeba wiedzieć, jaką moc ma przenieść obwód i jaki przepływ z tego wynika. Dopiero wtedy liczba metrów nabiera znaczenia hydraulicznego.”</p></blockquote>
          <div class="rk-loop-author-tabs" role="tablist" aria-label="Informacje o autorze">
            <label class="rk-loop-author-tab" for="rk-loop-author-about">O autorze</label>
            <label class="rk-loop-author-tab" for="rk-loop-author-exp">Doświadczenie</label>
            <label class="rk-loop-author-tab" for="rk-loop-author-sites">Portale</label>
          </div>
          <div class="rk-loop-author-panel rk-loop-author-panel-about"><p>Projektuję wodne ogrzewanie podłogowe, łącząc obliczenia strat ciepła z doborem temperatur, rozstawów, długości pętli, przepływów, strat ciśnienia i nastaw rozdzielaczy.</p><p><a href="https://projekt-ogrzewania.pl/author/robert-kucharski/">Zobacz profil i pozostałe opracowania autora</a>.</p></div>
          <div class="rk-loop-author-panel rk-loop-author-panel-exp"><p>Dokumentacja wykonawcza zawiera dla każdego obwodu rzeczywistą trasę, długość, przypisaną moc, przepływ oraz nastawę. Dzięki temu liczba pętli nie wynika z automatycznego dzielenia metrów przez jedną stałą wartość.</p></div>
          <div class="rk-loop-author-panel rk-loop-author-panel-sites"><p>Jestem właścicielem trzech serwisów branżowych. Powiązanie portali podaję jawnie, aby czytelnik znał autorstwo i kontekst linkowania.</p><div class="rk-loop-site-links"><a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a><a href="https://remont.biz.pl/" target="_blank" rel="noopener nofollow">Remont.biz.pl</a><a href="https://sobir.pl/" target="_blank" rel="noopener nofollow">Sobir.pl</a></div></div>
        </div>
      </div>
    </section>

    <section class="rk-loop-cta rk-loop-final-cta" aria-label="Kompletny projekt ogrzewania podłogowego">
      <span class="rk-loop-kicker">Zamknij hydraulikę przed ułożeniem rur</span>
      <h2>Otrzymaj kompletny projekt z długościami, przepływami i nastawami</h2>
      <p>Projekt łączy obciążenie cieplne, powierzchnie czynne, rozstawy, rzeczywisty przebieg oraz długość każdego obwodu, wymagane przepływy, straty ciśnienia i nastawy rozdzielacza. Instalator otrzymuje gotowy rzut, a nie samą ogólną regułę „80 albo 100 metrów”.</p>
      <a class="rk-loop-cta-button rk-loop-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów kompletny 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>
  </article>
</div>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#article",
      "url": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/",
      "headline": "Ile metrów podłogówki na jednej pętli? Długość, opory i kalkulator",
      "description": "Techniczny poradnik z kalkulatorem długości i liczby pętli, uwzględniający powierzchnię czynną, rozstaw, dobiegi, przepływ, średnicę rury i spadek ciśnienia.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-29",
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#webpage"},
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "copyrightHolder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "about": [
        {"@type": "Thing", "name": "Długość pętli ogrzewania podłogowego"},
        {"@type": "Thing", "name": "Hydraulika ogrzewania podłogowego"},
        {"@type": "Thing", "name": "Spadek ciśnienia"},
        {"@type": "Thing", "name": "Przepływ w pętli grzewczej"}
      ],
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"}
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#webpage",
      "url": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/",
      "name": "Ile metrów podłogówki na jednej pętli? Długość, opory i kalkulator",
      "description": "Jak obliczyć długość i liczbę pętli ogrzewania podłogowego po uwzględnieniu rozstawu, powierzchni czynnej, dobiegów, przepływu oraz oporów.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-29",
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#breadcrumb"},
      "mainEntity": [
        {"@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#application"},
        {"@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#howto"},
        {"@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#faq"}
      ],
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"}
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#breadcrumb",
      "itemListElement": [
        {"@type": "ListItem", "position": 1, "name": "Projekt-Ogrzewania.pl", "item": "https://projekt-ogrzewania.pl/"},
        {"@type": "ListItem", "position": 2, "name": "Ogrzewanie podłogowe", "item": "https://projekt-ogrzewania.pl/category/ogrzewanie-podlogowe/"},
        {"@type": "ListItem", "position": 3, "name": "Ile metrów podłogówki na jednej pętli", "item": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/"}
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#application",
      "name": "Analizator długości, liczby i hydrauliki pętli",
      "url": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#rk-loop-calculator",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "description": "Narzędzie szacuje ilość rury w polu, dobiegi, liczbę pętli, długość obwodu, przepływ, prędkość i spadek ciśnienia dla wody.",
      "featureList": [
        "Obliczenie długości rury w polu grzewczym",
        "Oddzielne doliczenie dobiegów",
        "Wstępny dobór liczby pętli",
        "Obliczenie przepływu i prędkości medium",
        "Model spadku ciśnienia Darcy-Weisbach",
        "Porównanie trzech średnic na wykresie"
      ],
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#howto",
      "name": "Jak wyznaczyć liczbę i długość pętli ogrzewania podłogowego",
      "description": "Ośmioetapowa procedura łącząca obliczenia cieplne, geometrię pola, dobiegi, przepływ oraz opory hydrauliczne.",
      "inLanguage": "pl-PL",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Oblicz obciążenie cieplne", "text": "Ustal projektową moc potrzebną dla każdego pomieszczenia zamiast przyjmować jeden średni wskaźnik dla budynku."},
        {"@type": "HowToStep", "position": 2, "name": "Wyznacz powierzchnię czynną", "text": "Odejmij trwałą zabudowę oraz pola wyłączone z układania rur i sprawdź rzeczywistą geometrię pomieszczenia."},
        {"@type": "HowToStep", "position": 3, "name": "Dobierz rozstaw rur", "text": "Sprawdź wydajność konstrukcji podłogi przy przyjętej temperaturze wody, okładzinie i dopuszczalnej temperaturze powierzchni."},
        {"@type": "HowToStep", "position": 4, "name": "Oszacuj długość rury w polu", "text": "Podziel powierzchnię czynną przez rozstaw wyrażony w metrach i jawnie pokaż ewentualną korektę geometrii."},
        {"@type": "HowToStep", "position": 5, "name": "Dodaj dobiegi każdej pętli", "text": "Do części ułożonej w polu dodaj osobno drogę zasilania i powrotu między rozdzielaczem a strefą grzewczą."},
        {"@type": "HowToStep", "position": 6, "name": "Oblicz przepływy", "text": "Przypisz moc do obwodów i wyznacz przepływ dla projektowej różnicy temperatury zasilania oraz powrotu."},
        {"@type": "HowToStep", "position": 7, "name": "Sprawdź hydraulikę", "text": "Oblicz prędkość i spadek ciśnienia dla rzeczywistej średnicy wewnętrznej, długości, temperatury medium i armatury."},
        {"@type": "HowToStep", "position": 8, "name": "Rozrysuj obwody na rzucie", "text": "Uwzględnij przejścia przez drzwi, dylatacje, strefy brzegowe, kolejność układania i zapisz długości oraz nastawy każdej pętli."}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {"@type": "Question", "name": "Ile metrów powinna mieć jedna pętla ogrzewania podłogowego?", "acceptedAnswer": {"@type": "Answer", "text": "Nie ma jednej długości właściwej dla każdej instalacji. Dla rury 16×2 mm wartości około 80–100 m bywają praktycznym założeniem wstępnym, ale wynik trzeba sprawdzić przy wymaganym przepływie, rzeczywistej średnicy wewnętrznej, oporach armatury i dostępnym ciśnieniu."}},
        {"@type": "Question", "name": "Czy 100 m to maksymalna długość pętli z rury 16×2 mm?", "acceptedAnswer": {"@type": "Answer", "text": "Nie należy przedstawiać 100 m jako uniwersalnego limitu gwarantującego poprawność. Pętla krótsza może być zbyt oporowa przy dużym przepływie, a dłuższy obwód może spełniać przyjęty budżet w innych warunkach. Ostateczna decyzja wymaga obliczeń całej drogi przepływu."}},
        {"@type": "Question", "name": "Ile m² ogrzeje pętla 80 m przy rozstawie 10 cm?", "acceptedAnswer": {"@type": "Answer", "text": "Jeżeli całe 80 m znajdowałoby się w polu, geometria dawałaby około 8 m². W praktyce trzeba odjąć zasilanie i powrót od rozdzielacza oraz uwzględnić łuki i kształt pola. Przy 12 m łącznych dobiegów w polu pozostaje 68 m, czyli orientacyjnie około 6,8 m²."}},
        {"@type": "Question", "name": "Czy dobiegi wlicza się do długości pętli?", "acceptedAnswer": {"@type": "Answer", "text": "Tak. Cała rura od belki zasilającej, przez pole grzewcze, aż do belki powrotnej tworzy jeden obwód hydrauliczny. Każda pętla wymaga doliczenia drogi do strefy oraz drogi powrotnej."}},
        {"@type": "Question", "name": "Czy wszystkie pętle powinny mieć taką samą długość?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Podobne długości mogą ułatwić regulację, ale obwody obsługują różne moce i mogą wymagać innych przepływów. Najważniejsze jest osiągnięcie przepływów projektowych w zakresie regulacji zaworów i przy dostępnym ciśnieniu."}},
        {"@type": "Question", "name": "Co się dzieje, gdy pętla jest za długa?", "acceptedAnswer": {"@type": "Answer", "text": "Wraz z długością rośnie strata ciśnienia. Jeżeli dostępne ciśnienie jest zbyt małe, pętla może nie osiągnąć wymaganego przepływu, a pomieszczenie wymaganej mocy. Nie oznacza to automatycznie kawitacji, pękania wylewki ani z góry określonego ΔT."}},
        {"@type": "Question", "name": "Czy rura 20×2 mm pozwala zawsze wykonać pętlę 150 m?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Większa średnica wewnętrzna zmniejsza opór przy tym samym przepływie, ale długość nadal trzeba sprawdzić razem z mocą, przepływem, właściwościami medium, armaturą, budżetem ciśnienia i możliwościami wykonawczymi."}},
        {"@type": "Question", "name": "Czy pompa ciepła wymaga pętli krótszych niż kocioł?", "acceptedAnswer": {"@type": "Answer", "text": "Nie bezpośrednio. Źródło ciepła wpływa na pożądaną temperaturę pracy, natomiast długość pętli wynika z geometrii i hydrauliki. Krótszy obwód może ograniczyć wymagane ciśnienie, ale nie jest automatycznym warunkiem współpracy z pompą ciepła."}},
        {"@type": "Question", "name": "Jak obliczyć przepływ jednej pętli?", "acceptedAnswer": {"@type": "Answer", "text": "Dla wody można orientacyjnie podzielić moc pętli w watach przez iloczyn 69,8 oraz projektowego ΔT w kelwinach. Wynik otrzymujemy w l/min. Następnie sprawdzamy, jaki spadek ciśnienia wywoła ten przepływ w konkretnej rurze i armaturze."}},
        {"@type": "Question", "name": "Czy kalkulator zastępuje projekt ogrzewania podłogowego?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Kalkulator wykonuje wstępny równy podział i referencyjne obliczenie hydrauliczne. Nie zna kształtu pomieszczeń, stref bez rur, dylatacji, rzeczywistych tras, charakterystyk zaworów ani pozostałych oporów wspólnego obiegu."}}
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/robert-kucharski/",
      "jobTitle": "Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego",
      "worksFor": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "affiliation": [
        {"@id": "https://projekt-ogrzewania.pl/#organization"},
        {"@id": "https://remont.biz.pl/#organization"},
        {"@id": "https://sobir.pl/#organization"}
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt-Ogrzewania.pl",
      "inLanguage": "pl-PL",
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"}
    }
  ]
}
</script>

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

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

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

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

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

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

  function allTrue(values) {
    return values.every(function (value) {
      return Boolean(value);
    });
  }

  function waterProperties(temperature) {
    var points = [
      {temperature: 5, density: 999.97, viscosity: 0.001519},
      {temperature: 10, density: 999.70, viscosity: 0.001307},
      {temperature: 20, density: 998.21, viscosity: 0.001002},
      {temperature: 30, density: 995.65, viscosity: 0.000798},
      {temperature: 40, density: 992.22, viscosity: 0.000653},
      {temperature: 50, density: 988.04, viscosity: 0.000547},
      {temperature: 60, density: 983.20, viscosity: 0.000466},
      {temperature: 70, density: 977.76, viscosity: 0.000404},
      {temperature: 80, density: 971.79, viscosity: 0.000355}
    ];

    var safeTemperature = clamp(temperature, 5, 80);
    var lower = points[0];
    var upper = points[points.length - 1];

    for (var index = 0; index < points.length - 1; index += 1) {
      var current = points[index];
      var next = points[index + 1];
      if (safeTemperature >= current.temperature) {
        if (safeTemperature <= next.temperature) {
          lower = current;
          upper = next;
          break;
        }
      }
    }

    var range = upper.temperature - lower.temperature;
    var share = 0;
    if (range > 0) {
      share = (safeTemperature - lower.temperature) / range;
    }

    return {
      density: lower.density + (upper.density - lower.density) * share,
      viscosity: lower.viscosity + (upper.viscosity - lower.viscosity) * share
    };
  }

  function frictionFactor(reynolds, diameter) {
    if (reynolds <= 0) {
      return 0;
    }
    if (reynolds < 2300) {
      return 64 / reynolds;
    }

    var roughness = 0.0000015;
    var relativeRoughness = roughness / diameter;
    var logarithmTerm = Math.pow(relativeRoughness / 3.7, 1.11) + 6.9 / reynolds;
    var denominator = -1.8 * Math.log10(logarithmTerm);
    return 1 / Math.pow(denominator, 2);
  }

  function hydraulicResult(length, flowLitresMinute, innerDiameterMillimetres, temperature, extraLoss) {
    var diameter = innerDiameterMillimetres / 1000;
    var volumeFlow = flowLitresMinute / 60000;
    var crossSection = Math.PI * Math.pow(diameter, 2) / 4;
    var velocity = 0;
    if (crossSection > 0) {
      velocity = volumeFlow / crossSection;
    }

    var properties = waterProperties(temperature);
    var reynolds = properties.density * velocity * diameter / properties.viscosity;
    var factor = frictionFactor(reynolds, diameter);
    var dynamicPressure = properties.density * Math.pow(velocity, 2) / 2;
    var pipeLoss = factor * length / diameter * dynamicPressure / 1000;

    return {
      velocity: velocity,
      reynolds: reynolds,
      factor: factor,
      pipeLoss: pipeLoss,
      totalLoss: pipeLoss + extraLoss
    };
  }

  function readInputs() {
    return {
      area: clamp(numberFrom("rk-loop-area", 24), 1, 500),
      spacing: clamp(numberFrom("rk-loop-spacing", 15), 5, 30),
      approach: clamp(numberFrom("rk-loop-approach", 6), 0, 60),
      geometry: clamp(numberFrom("rk-loop-geometry", 5), 0, 20),
      power: clamp(numberFrom("rk-loop-power", 1800), 50, 50000),
      delta: clamp(numberFrom("rk-loop-delta", 5), 2, 20),
      temperature: clamp(numberFrom("rk-loop-temperature", 30), 5, 80),
      diameter: clamp(numberFrom("rk-loop-pipe", 12), 8, 30),
      extraLoss: clamp(numberFrom("rk-loop-extra-loss", 3), 0, 50),
      budget: clamp(numberFrom("rk-loop-budget", 20), 3, 100),
      maxLength: clamp(numberFrom("rk-loop-max-length", 100), 30, 250),
      maxSpeed: clamp(numberFrom("rk-loop-max-speed", 0.6), 0.2, 1.5)
    };
  }

  function calculateModel(inputs) {
    var spacingMetres = inputs.spacing / 100;
    var idealFieldLength = inputs.area / spacingMetres;
    var fieldLength = idealFieldLength * (1 + inputs.geometry / 100);
    var totalFlow = inputs.power / (69.8 * inputs.delta);
    var unitPower = inputs.power / inputs.area;
    var candidates = [];
    var selected = null;

    for (var count = 1; count <= 16; count += 1) {
      var loopLength = fieldLength / count + 2 * inputs.approach;
      var loopFlow = totalFlow / count;
      var hydraulics = hydraulicResult(loopLength, loopFlow, inputs.diameter, inputs.temperature, inputs.extraLoss);
      var lengthPass = loopLength <= inputs.maxLength;
      var pressurePass = hydraulics.totalLoss <= inputs.budget;
      var speedPass = hydraulics.velocity <= inputs.maxSpeed;
      var passes = allTrue([lengthPass, pressurePass, speedPass]);
      var candidate = {
        count: count,
        length: loopLength,
        flow: loopFlow,
        velocity: hydraulics.velocity,
        pipeLoss: hydraulics.pipeLoss,
        loss: hydraulics.totalLoss,
        reynolds: hydraulics.reynolds,
        lengthPass: lengthPass,
        pressurePass: pressurePass,
        speedPass: speedPass,
        passes: passes
      };
      candidates.push(candidate);
      if (!selected) {
        if (passes) {
          selected = candidate;
        }
      }
    }

    var found = Boolean(selected);
    if (!selected) {
      selected = candidates[candidates.length - 1];
    }

    return {
      inputs: inputs,
      idealFieldLength: idealFieldLength,
      fieldLength: fieldLength,
      totalFlow: totalFlow,
      unitPower: unitPower,
      candidates: candidates,
      selected: selected,
      found: found,
      totalPipe: fieldLength + 2 * inputs.approach * selected.count,
      areaPerLoop: inputs.area / selected.count,
      fieldPerLoop: fieldLength / selected.count
    };
  }

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

  function candidateLabel(candidate) {
    if (candidate.passes) {
      return {text: "spełnia kryteria", className: "rk-loop-chip"};
    }
    var problems = [];
    if (!candidate.lengthPass) {
      problems.push("długość");
    }
    if (!candidate.pressurePass) {
      problems.push("ciśnienie");
    }
    if (!candidate.speedPass) {
      problems.push("prędkość");
    }
    return {text: problems.join(", "), className: "rk-loop-chip rk-loop-chip-bad"};
  }

  function appendCell(row, label, value) {
    var cell = document.createElement("td");
    cell.setAttribute("data-label", label);
    cell.textContent = value;
    row.appendChild(cell);
    return cell;
  }

  function renderCandidateTable(model) {
    var body = byId("rk-loop-candidate-body");
    if (!body) {
      return;
    }
    while (body.firstChild) {
      body.removeChild(body.firstChild);
    }

    var selectedIndex = model.selected.count - 1;
    var start = Math.max(0, selectedIndex - 2);
    var end = Math.min(model.candidates.length, start + 5);
    if (end - start < 5) {
      start = Math.max(0, end - 5);
    }

    for (var index = start; index < end; index += 1) {
      var candidate = model.candidates[index];
      var row = document.createElement("tr");
      if (candidate.count === model.selected.count) {
        row.classList.add(model.found ? "is-best" : "is-fail");
      } else if (!candidate.passes) {
        row.classList.add("is-fail");
      }

      appendCell(row, "Liczba pętli", String(candidate.count));
      appendCell(row, "Długość jednej", formatNumber(candidate.length, 1) + " m");
      appendCell(row, "Przepływ jednej", formatNumber(candidate.flow, 2) + " l/min");
      appendCell(row, "Prędkość", formatNumber(candidate.velocity, 2) + " m/s");
      appendCell(row, "Strata z dodatkami", formatNumber(candidate.loss, 1) + " kPa");
      var evaluationCell = document.createElement("td");
      evaluationCell.setAttribute("data-label", "Ocena");
      var chipData = candidateLabel(candidate);
      var chip = document.createElement("span");
      chip.className = chipData.className;
      chip.textContent = chipData.text;
      evaluationCell.appendChild(chip);
      row.appendChild(evaluationCell);
      body.appendChild(row);
    }
  }

  function renderPaths(model) {
    var paths = byId("rk-loop-paths");
    if (!paths) {
      return;
    }
    while (paths.firstChild) {
      paths.removeChild(paths.firstChild);
    }
    var visibleCount = Math.min(model.selected.count, 6);
    for (var index = 0; index < visibleCount; index += 1) {
      var path = document.createElement("div");
      path.className = "rk-loop-path";
      path.setAttribute("aria-hidden", "true");
      paths.appendChild(path);
    }
    setText("rk-loop-scheme-count", String(model.selected.count) + (model.selected.count === 1 ? " pętla" : " pętle"));
    setText("rk-loop-scheme-approach", "2 × " + formatNumber(model.inputs.approach, 1) + " m");
    setText("rk-loop-scheme-area", formatNumber(model.areaPerLoop, 1) + " m²");
    setText("rk-loop-scheme-field", formatNumber(model.fieldPerLoop, 1) + " m");
  }

  function drawChart(model) {
    var canvas = byId("rk-loop-chart");
    if (!canvas) {
      return;
    }
    var context = canvas.getContext("2d");
    if (!context) {
      return;
    }

    var rectangle = canvas.getBoundingClientRect();
    var width = Math.max(300, rectangle.width);
    var cssHeight = 340;
    if (window.innerWidth <= 700) {
      cssHeight = 300;
    }
    var pixelRatio = Math.min(2, window.devicePixelRatio || 1);
    canvas.width = Math.round(width * pixelRatio);
    canvas.height = Math.round(cssHeight * pixelRatio);
    canvas.style.height = cssHeight + "px";
    context.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);
    context.clearRect(0, 0, width, cssHeight);

    var margin = {left: 53, right: 18, top: 20, bottom: 42};
    var plotWidth = width - margin.left - margin.right;
    var plotHeight = cssHeight - margin.top - margin.bottom;
    var rawMaximumLength = Math.max(150, model.inputs.maxLength + 20, model.selected.length + 20);
    var maximumLength = Math.min(260, Math.ceil(rawMaximumLength / 20) * 20);
    var diameters = [12, 13, 16];
    var colors = ["#078fbe", "#16836b", "#ff6a3d"];
    var maximumLoss = model.inputs.budget;

    diameters.forEach(function (diameter) {
      var edgeResult = hydraulicResult(maximumLength, model.selected.flow, diameter, model.inputs.temperature, model.inputs.extraLoss);
      maximumLoss = Math.max(maximumLoss, edgeResult.totalLoss);
    });
    maximumLoss = Math.max(10, Math.ceil(maximumLoss * 1.12 / 5) * 5);

    function xPosition(length) {
      return margin.left + length / maximumLength * plotWidth;
    }

    function yPosition(loss) {
      return margin.top + plotHeight - loss / maximumLoss * plotHeight;
    }

    context.strokeStyle = "#d9e6eb";
    context.fillStyle = "#6b7e8a";
    context.lineWidth = 1;
    context.font = "11px Inter, sans-serif";
    context.textAlign = "right";
    context.textBaseline = "middle";

    for (var yIndex = 0; yIndex <= 5; yIndex += 1) {
      var lossTick = maximumLoss * yIndex / 5;
      var y = yPosition(lossTick);
      context.beginPath();
      context.moveTo(margin.left, y);
      context.lineTo(width - margin.right, y);
      context.stroke();
      context.fillText(formatNumber(lossTick, 0), margin.left - 8, y);
    }

    context.textAlign = "center";
    context.textBaseline = "top";
    for (var xIndex = 0; xIndex <= 5; xIndex += 1) {
      var lengthTick = maximumLength * xIndex / 5;
      var x = xPosition(lengthTick);
      context.beginPath();
      context.moveTo(x, margin.top);
      context.lineTo(x, margin.top + plotHeight);
      context.stroke();
      context.fillText(formatNumber(lengthTick, 0), x, margin.top + plotHeight + 9);
    }

    context.save();
    context.translate(14, margin.top + plotHeight / 2);
    context.rotate(-Math.PI / 2);
    context.fillStyle = "#475967";
    context.font = "700 11px Inter, sans-serif";
    context.textAlign = "center";
    context.fillText("spadek ciśnienia [kPa]", 0, 0);
    context.restore();

    context.fillStyle = "#475967";
    context.font = "700 11px Inter, sans-serif";
    context.textAlign = "center";
    context.fillText("długość pętli [m]", margin.left + plotWidth / 2, cssHeight - 16);

    diameters.forEach(function (diameter, index) {
      context.beginPath();
      context.strokeStyle = colors[index];
      context.lineWidth = 3;
      for (var step = 0; step <= 80; step += 1) {
        var length = maximumLength * step / 80;
        var result = hydraulicResult(length, model.selected.flow, diameter, model.inputs.temperature, model.inputs.extraLoss);
        var x = xPosition(length);
        var y = yPosition(Math.min(maximumLoss, result.totalLoss));
        if (step === 0) {
          context.moveTo(x, y);
        } else {
          context.lineTo(x, y);
        }
      }
      context.stroke();
    });

    var budgetY = yPosition(model.inputs.budget);
    context.save();
    context.setLineDash([7, 5]);
    context.strokeStyle = "#d94b3d";
    context.lineWidth = 2;
    context.beginPath();
    context.moveTo(margin.left, budgetY);
    context.lineTo(width - margin.right, budgetY);
    context.stroke();
    context.restore();

    if (model.selected.length <= maximumLength) {
      var selectedX = xPosition(model.selected.length);
      context.save();
      context.setLineDash([4, 4]);
      context.strokeStyle = "#102536";
      context.lineWidth = 2;
      context.beginPath();
      context.moveTo(selectedX, margin.top);
      context.lineTo(selectedX, margin.top + plotHeight);
      context.stroke();
      context.restore();
      context.fillStyle = "#102536";
      context.font = "800 11px Inter, sans-serif";
      context.textAlign = selectedX > width - 95 ? "right" : "left";
      context.textBaseline = "top";
      var labelX = selectedX > width - 95 ? selectedX - 5 : selectedX + 5;
      context.fillText(formatNumber(model.selected.length, 1) + " m", labelX, margin.top + 4);
    }

    setText("rk-loop-chart-caption", "Porównanie dla przepływu " + formatNumber(model.selected.flow, 2) + " l/min na pętlę, wody o temperaturze " + formatNumber(model.inputs.temperature, 1) + "°C i oporów dodatkowych " + formatNumber(model.inputs.extraLoss, 1) + " kPa. Pionowy znacznik: " + formatNumber(model.selected.length, 1) + " m.");
  }

  function renderStatus(model) {
    var status = byId("rk-loop-status");
    if (!status) {
      return;
    }
    status.classList.remove("is-warning", "is-danger");

    var nearLimit = allTrue([
      model.selected.length > model.inputs.maxLength * 0.9,
      model.selected.loss > model.inputs.budget * 0.9
    ]);
    var oneNearLimit = model.selected.length > model.inputs.maxLength * 0.9;
    if (model.selected.loss > model.inputs.budget * 0.9) {
      oneNearLimit = true;
    }
    if (model.selected.velocity > model.inputs.maxSpeed * 0.9) {
      oneNearLimit = true;
    }

    if (!model.found) {
      status.classList.add("is-danger");
      setText("rk-loop-status-icon", "!");
      setText("rk-loop-status-title", "Nie znaleziono wariantu w zakresie do 16 pętli");
      setText("rk-loop-status-copy", "Sprawdź dane, zwiększ dostępny budżet tylko po weryfikacji pompy albo zmień koncepcję średnicy, rozstawu, geometrii lub podziału strefy.");
      return;
    }

    if (model.unitPower > 100) {
      status.classList.add("is-warning");
      setText("rk-loop-status-icon", "!");
      setText("rk-loop-status-title", "Hydraulika przechodzi, ale wymagana moc z podłogi jest wysoka");
      setText("rk-loop-status-copy", "Sprawdź cieplnie rozstaw, temperaturę powierzchni, okładzinę i realną powierzchnię czynną. Kalkulator nie potwierdza wydajności podłogi.");
      return;
    }

    if (oneNearLimit) {
      status.classList.add("is-warning");
      setText("rk-loop-status-icon", "!");
      setText("rk-loop-status-title", "Wariant mieści się blisko jednego z przyjętych kryteriów");
      setText("rk-loop-status-copy", "Pozostaw rezerwę na rzeczywistą trasę oraz opory elementów, których model nie zna. Zweryfikuj wynik po rozrysowaniu pętli.");
      return;
    }

    setText("rk-loop-status-icon", "✓");
    setText("rk-loop-status-title", "Wariant spełnia przyjęte kryteria wstępne");
    setText("rk-loop-status-copy", "To pierwszy podział mieszczący się w ustawionym limicie długości, ciśnienia i prędkości. Nadal wymaga sprawdzenia cieplnego oraz rozrysowania.");
    if (nearLimit) {
      status.classList.add("is-warning");
    }
  }

  function renderModel(model) {
    renderStatus(model);
    setText("rk-loop-result-count", String(model.selected.count));
    setText("rk-loop-result-length", formatNumber(model.selected.length, 1) + " m");
    setText("rk-loop-result-total", formatNumber(model.totalPipe, 1) + " m");
    setText("rk-loop-result-field", formatNumber(model.fieldLength, 1) + " m");
    setText("rk-loop-result-flow", formatNumber(model.selected.flow, 2) + " l/min");
    setText("rk-loop-result-flow-total", "łącznie " + formatNumber(model.totalFlow, 2) + " l/min");
    setText("rk-loop-result-speed", formatNumber(model.selected.velocity, 2) + " m/s");
    setText("rk-loop-result-loss", formatNumber(model.selected.loss, 1) + " kPa");
    setText("rk-loop-result-unit-power", formatNumber(model.unitPower, 1) + " W/m²");
    setText("rk-loop-result-area", formatNumber(model.areaPerLoop, 1) + " m² na pętlę");

    var note = "Rura w polu bez korekty: " + formatNumber(model.idealFieldLength, 1) + " m. Po korekcie geometrii: " + formatNumber(model.fieldLength, 1) + " m. Dobięgi wszystkich pętli: " + formatNumber(2 * model.inputs.approach * model.selected.count, 1) + " m. Analizator nie sprawdza cieplnej wydajności wybranego rozstawu.";
    setText("rk-loop-result-note", note);
    renderCandidateTable(model);
    renderPaths(model);
    drawChart(model);
  }

  function calculateAndRender() {
    var model = calculateModel(readInputs());
    root.rkLoopModel = model;
    renderModel(model);
  }

  function resetInputs() {
    var defaults = {
      "rk-loop-area": "24",
      "rk-loop-spacing": "15",
      "rk-loop-approach": "6",
      "rk-loop-geometry": "5",
      "rk-loop-power": "1800",
      "rk-loop-delta": "5",
      "rk-loop-temperature": "30",
      "rk-loop-pipe": "12",
      "rk-loop-extra-loss": "3",
      "rk-loop-budget": "20",
      "rk-loop-max-length": "100",
      "rk-loop-max-speed": "0.6"
    };
    Object.keys(defaults).forEach(function (id) {
      var field = byId(id);
      if (field) {
        field.value = defaults[id];
      }
    });
    calculateAndRender();
  }

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

  var fields = root.querySelectorAll(".rk-loop-tool input, .rk-loop-tool select");
  fields.forEach(function (field) {
    field.addEventListener("input", calculateAndRender);
    field.addEventListener("change", calculateAndRender);
  });

  var faqItems = root.querySelectorAll(".rk-loop-faq details");
  faqItems.forEach(function (item) {
    item.addEventListener("toggle", function () {
      if (!item.open) {
        return;
      }
      faqItems.forEach(function (other) {
        if (other !== item) {
          other.open = false;
        }
      });
    });
  });

  function updateProgress() {
    var progress = byId("rk-loop-progress");
    if (!progress) {
      return;
    }
    var rectangle = root.getBoundingClientRect();
    var scrollable = root.offsetHeight - window.innerHeight;
    var passed = -rectangle.top;
    var ratio = 0;
    if (scrollable > 0) {
      ratio = clamp(passed / scrollable, 0, 1);
    }
    progress.style.width = formatNumber(ratio * 100, 2).replace(",", ".") + "%";
  }

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

  var resizeTimer = null;
  window.addEventListener("resize", function () {
    window.clearTimeout(resizeTimer);
    resizeTimer = window.setTimeout(function () {
      if (root.rkLoopModel) {
        drawChart(root.rkLoopModel);
      }
    }, 120);
  });

  calculateAndRender();
  updateProgress();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/">Ile metrów podłogówki na jednej pętli?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ogrzewanie podłogowe czy grzejniki? Zalety, koszty i kalkulator porównania.</title>
		<link>https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Tue, 31 Dec 2024 17:31:46 +0000</pubDate>
				<category><![CDATA[Budownictwo energooszczędne]]></category>
		<category><![CDATA[Energooszczędność]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Komfort cieplny]]></category>
		<category><![CDATA[Nowoczesne technologie grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Remonty i modernizacje]]></category>
		<category><![CDATA[Systemy grzewcze]]></category>
		<category><![CDATA[Zdrowie i komfort]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[nowoczesne technologie]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędności energii]]></category>
		<category><![CDATA[remonty]]></category>
		<category><![CDATA[systemy grzewcze]]></category>
		<category><![CDATA[tradycyjne grzejniki]]></category>
		<category><![CDATA[zalety ogrzewania podłogowego]]></category>
		<category><![CDATA[zdrowe ogrzewanie]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=1868</guid>

					<description><![CDATA[<p>Zalety ogrzewania podłogowego w porównaniu do tradycyjnych grzejników są niezaprzeczalne. Ten nowoczesny system zapewnia równomierne rozprowadzanie ciepła, oszczędność miejsca i wyższy komfort cieplny. W artykule omawiamy kluczowe korzyści, takie jak efektywność energetyczna, trwałość oraz zdrowsze warunki w pomieszczeniach. Poznaj szczegóły tego rozwiązania i sprawdź, dlaczego warto z niego skorzystać w swoim domu.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/">Ogrzewanie podłogowe czy grzejniki? Zalety, koszty i kalkulator porównania.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-pipe-guide {
    --rk-navy: #0b2536;
    --rk-navy-2: #12394d;
    --rk-navy-3: #1b465b;
    --rk-cyan: #29c4d7;
    --rk-cyan-dark: #078fb3;
    --rk-cyan-soft: #def7fa;
    --rk-orange: #ff6846;
    --rk-orange-dark: #e44f31;
    --rk-yellow: #f2b526;
    --rk-green: #2fcda1;
    --rk-green-dark: #168267;
    --rk-red: #d7504a;
    --rk-purple: #6963ce;
    --rk-ink: #10283a;
    --rk-copy: #3c5668;
    --rk-muted: #6b8191;
    --rk-line: #d3e2e8;
    --rk-bg: #f3f8fa;
    --rk-white: #ffffff;
    color: var(--rk-ink);
    font-family: Arial, Helvetica, sans-serif;
    line-height: 1.62;
    margin: 0 auto;
    max-width: 1360px;
    overflow-wrap: anywhere;
    width: 100%;
  }

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

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

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

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

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

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

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

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

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

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

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

  #rk-pipe-guide .rk-pipe-hero-title {
    font-size: clamp(2.4rem, 6vw, 5.35rem);
    margin: 0;
    max-width: 1180px;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-pipe-guide .rk-pipe-card h3 {
    color: var(--rk-ink);
    font-size: 1.12rem;
    line-height: 1.3;
    margin: 0 0 9px;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-pipe-guide .rk-pipe-formula {
    background: #edf8fa;
    border: 1px solid #b4e1e7;
    border-radius: 13px;
    color: #086b82;
    font-family: Consolas, Monaco, monospace;
    font-size: 1rem;
    font-weight: 700;
    margin-top: 20px;
    padding: 15px 18px;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-pipe-guide .rk-pipe-field small {
    color: #a9c4ce;
    display: block;
    font-size: 0.72rem;
    line-height: 1.45;
    margin-top: 6px;
  }

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-pipe-guide .rk-pipe-metric {
    background: #f4f9fa;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    padding: 16px;
  }

  #rk-pipe-guide .rk-pipe-metric span {
    color: var(--rk-muted);
    display: block;
    font-size: 0.71rem;
    font-weight: 900;
    letter-spacing: 0.05em;
    line-height: 1.4;
    text-transform: uppercase;
  }

  #rk-pipe-guide .rk-pipe-metric strong {
    color: var(--rk-ink);
    display: block;
    font-size: 1.34rem;
    line-height: 1.25;
    margin-top: 6px;
  }

  #rk-pipe-guide .rk-pipe-metric.is-floor strong {
    color: var(--rk-cyan-dark);
  }

  #rk-pipe-guide .rk-pipe-metric.is-radiator strong {
    color: var(--rk-orange-dark);
  }

  #rk-pipe-guide .rk-pipe-result-callout {
    background: #eef8fa;
    border-radius: 13px;
    color: var(--rk-copy);
    margin-top: 17px;
    padding: 16px 18px;
  }

  #rk-pipe-guide .rk-pipe-result-callout strong {
    color: var(--rk-ink);
  }

  #rk-pipe-guide .rk-pipe-chart-card {
    background: #ffffff;
    border: 1px solid #cfe0e7;
    border-radius: 17px;
    margin-top: 20px;
    padding: 20px;
  }

  #rk-pipe-guide .rk-pipe-chart-head {
    align-items: flex-start;
    display: flex;
    gap: 16px;
    justify-content: space-between;
  }

  #rk-pipe-guide .rk-pipe-chart-head h4 {
    color: var(--rk-ink);
    font-size: 1.08rem;
    margin: 0;
  }

  #rk-pipe-guide .rk-pipe-chart-head p {
    color: var(--rk-copy);
    font-size: 0.82rem;
    margin: 5px 0 0;
  }

  #rk-pipe-guide .rk-pipe-chart-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 16px;
  }

  #rk-pipe-guide .rk-pipe-chart-legend span {
    align-items: center;
    color: var(--rk-copy);
    display: inline-flex;
    font-size: 0.76rem;
    font-weight: 800;
    gap: 7px;
  }

  #rk-pipe-guide .rk-pipe-chart-legend i {
    border-radius: 999px;
    display: inline-block;
    height: 4px;
    width: 24px;
  }

  #rk-pipe-guide .rk-pipe-chart-legend .is-floor {
    background: var(--rk-cyan-dark);
  }

  #rk-pipe-guide .rk-pipe-chart-legend .is-radiator {
    background: var(--rk-orange);
  }

  #rk-pipe-guide .rk-pipe-chart-svg {
    display: block;
    height: auto;
    margin-top: 12px;
    overflow: visible;
    width: 100%;
  }

  #rk-pipe-guide .rk-pipe-chart-table {
    margin-top: 16px;
  }

  #rk-pipe-guide .rk-pipe-chart-table table {
    min-width: 600px;
  }

  #rk-pipe-guide .rk-pipe-chart-table th,
  #rk-pipe-guide .rk-pipe-chart-table td {
    font-size: 0.78rem;
    padding: 11px 12px;
  }

  #rk-pipe-guide .rk-pipe-disclaimer {
    color: #6c8190;
    font-size: 0.78rem;
    margin: 15px 0 0;
  }

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

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

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

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

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

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

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

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

  #rk-pipe-guide .rk-pipe-decision-column h4 {
    color: var(--rk-ink);
    font-size: 0.82rem;
    letter-spacing: 0.05em;
    margin: 0 0 10px;
    text-transform: uppercase;
  }

  #rk-pipe-guide .rk-pipe-decision-column.is-floor h4 {
    color: var(--rk-cyan-dark);
  }

  #rk-pipe-guide .rk-pipe-decision-column.is-radiator h4 {
    color: var(--rk-orange-dark);
  }

  #rk-pipe-guide .rk-pipe-decision-column.is-mixed h4 {
    color: var(--rk-purple);
  }

  #rk-pipe-guide .rk-pipe-decision-column.is-missing h4 {
    color: #88600e;
  }

  #rk-pipe-guide .rk-pipe-decision-column ul {
    color: var(--rk-copy);
    font-size: 0.86rem;
    margin: 0;
    padding-left: 18px;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-pipe-guide .rk-pipe-faq-answer p + p {
    margin-top: 11px;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    #rk-pipe-guide .rk-pipe-author-side {
      padding-bottom: 28px;
    }

    #rk-pipe-guide .rk-pipe-chart-head {
      display: block;
    }

    #rk-pipe-guide .rk-pipe-chart-legend {
      margin-top: 12px;
    }
  }

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

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

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

    #rk-pipe-guide .rk-pipe-calculator,
    #rk-pipe-guide .rk-pipe-analyzer,
    #rk-pipe-guide .rk-pipe-cta {
      border-radius: 17px;
      padding: 20px;
    }

    #rk-pipe-guide .rk-pipe-tool-stage,
    #rk-pipe-guide .rk-pipe-result {
      padding: 18px;
    }

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

    #rk-pipe-guide .rk-pipe-primary-button,
    #rk-pipe-guide .rk-pipe-secondary-button,
    #rk-pipe-guide .rk-pipe-cta-button {
      text-align: center;
      width: 100%;
    }

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

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

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

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

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

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

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

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

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

    #rk-pipe-guide .rk-pipe-chart-card {
      padding: 14px;
    }
  }

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

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

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

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

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

    #rk-pipe-guide .rk-pipe-hero-title {
      font-size: 2.25rem;
    }

    #rk-pipe-guide .rk-pipe-section-title {
      font-size: 1.9rem;
    }
  }

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

<article id="rk-pipe-guide" aria-labelledby="rk-pipe-visual-title">
  <div class="rk-pipe-shell">
    <header class="rk-pipe-hero">
      <span class="rk-pipe-kicker">Podłogówka kontra grzejniki · aktualizacja techniczna 2026</span>
      <div class="rk-pipe-hero-title" id="rk-pipe-visual-title">Ogrzewanie podłogowe czy grzejniki? <span>Porównaj cały system, nie jedną temperaturę</span></div>
      <p class="rk-pipe-hero-lead">Podłogówka często ułatwia niskotemperaturową pracę źródła ciepła, lecz nie obniża automatycznie zapotrzebowania budynku. Ten poradnik oddziela moc, energię, sprawność źródła i koszt inwestycji, a kalkulator pokazuje wynik dla Twoich założeń.</p>
      <div class="rk-pipe-hero-tags" aria-label="Zakres poradnika">
        <span>35/30°C i 55/45°C</span>
        <span>koszt inwestycji</span>
        <span>energia i eksploatacja</span>
        <span>wykres 5–20 lat</span>
        <span>analizator decyzji</span>
      </div>
      <div class="rk-pipe-meta">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: <strong>około 26 minut</strong></span>
        <span>Aktualizacja techniczna: <strong>14 września 2026 r.</strong></span>
      </div>
    </header>

    <nav class="rk-pipe-shortcuts" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-pipe-shortcuts-label">Na skróty</span>
      <a href="#rk-pipe-answer">Szybka odpowiedź</a>
      <a href="#rk-pipe-basis">Co porównujemy</a>
      <a href="#rk-pipe-temperatures">35°C i 55°C</a>
      <a href="#rk-pipe-calculator-section">Kalkulator kosztów</a>
      <a href="#rk-pipe-comfort">Komfort</a>
      <a href="#rk-pipe-dynamics">Bezwładność</a>
      <a href="#rk-pipe-source">Źródło ciepła</a>
      <a href="#rk-pipe-building">Nowy dom i remont</a>
      <a href="#rk-pipe-surfaces">Posadzki i meble</a>
      <a href="#rk-pipe-hydraulics">Hydraulika</a>
      <a href="#rk-pipe-analyzer-section">Analizator decyzji</a>
      <a href="#rk-pipe-mixed">Układ mieszany</a>
      <a href="#rk-pipe-comparison-table">Tabela porównawcza</a>
      <a href="#rk-pipe-errors">Mity i błędy</a>
      <a href="#rk-pipe-data">Dane do projektu</a>
      <a href="#rk-pipe-final">Wniosek</a>
      <a href="#rk-pipe-sources">Źródła</a>
      <a href="#rk-pipe-faq">FAQ</a>
      <a href="#rk-pipe-author">Autor</a>
    </nav>

    <section class="rk-pipe-section" id="rk-pipe-answer">
      <span class="rk-pipe-eyebrow">Odpowiedź w 60 sekund</span>
      <h2 class="rk-pipe-section-title">Czy ogrzewanie podłogowe jest lepsze od grzejników?</h2>
      <p class="rk-pipe-lead"><strong>W nowym, dobrze izolowanym domu z pompą ciepła podłogówka często daje mocny zestaw korzyści:</strong> niską temperaturę zasilania, równomierne wykorzystanie dużej powierzchni, swobodę aranżacji ścian i stabilną pracę. Nie oznacza to jednak, że zawsze będzie tańsza ani że każdy grzejnik wymaga 55–70°C.</p>
      <div class="rk-pipe-answer">
        <strong>Uczciwa odpowiedź zależy od obciążenia cieplnego pomieszczeń, parametrów odbiorników, sprawności źródła oraz pełnego kosztu wykonania.</strong>
        <p>Grzejnik oddaje ciepło również przy 35–45°C, ale jego moc spada wraz ze zmniejszeniem różnicy między średnią temperaturą wody a temperaturą pomieszczenia. Może więc wymagać większej powierzchni. Podłogówka z kolei musi mieć wystarczającą powierzchnię czynną i właściwą konstrukcję podłogi.</p>
      </div>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-icon">1</span><h3>Ten sam budynek</h3><p>Oba warianty porównujemy przy tej samej temperaturze wewnętrznej i tej samej ilości ciepła potrzebnej do ogrzania domu.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-icon">2</span><h3>Różna dystrybucja</h3><p>Zmienia się powierzchnia emitera, temperatura wody, dynamika, hydraulika oraz sposób przekazywania ciepła do pomieszczenia.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-icon">3</span><h3>Różny wynik finansowy</h3><p>Koszt zależy od inwestycji, sprawności sezonowej źródła, energii pomocniczej, serwisu i czasu analizy.</p></article>
      </div>
      <p class="rk-pipe-copy">Jeżeli najpierw chcesz poznać zasadę działania instalacji, zobacz <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/">jak działa ogrzewanie podłogowe</a>. Osobno omawiam również <a href="https://projekt-ogrzewania.pl/wady-wodnego-ogrzewania-podlogowego-na-co-zwrocic-uwage-przed-instalacja/">wady wodnego ogrzewania podłogowego</a>, których nie należy pomijać przy porównaniu.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-pipe-basis">
      <span class="rk-pipe-eyebrow">Jedna podstawa porównania</span>
      <h2 class="rk-pipe-section-title">Moc, energia, sprawność i koszt to cztery różne wyniki</h2>
      <p class="rk-pipe-lead">Najczęstszy błąd polega na mieszaniu projektowej mocy w kW z roczną energią w kWh oraz z rachunkiem w złotych. Zmiana odbiornika nie zmienia automatycznie strat ciepła budynku.</p>
      <div class="rk-pipe-grid-4">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">kW</span><h3>Moc projektowa</h3><p>Ile ciepła trzeba dostarczyć w obliczeniowych warunkach zimowych. Służy do doboru źródła i odbiorników.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">kWh</span><h3>Energia użytkowa</h3><p>Ile ciepła budynek potrzebuje w całym roku. To wspólna baza kalkulatora dla obu wariantów.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">SCOP / η</span><h3>Sprawność sezonowa</h3><p>Określa, ile energii trzeba kupić, aby dostarczyć wymaganą energię użytkową.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">zł</span><h3>Koszt całkowity</h3><p>Obejmuje wykonanie, energię, serwis, energię pomocniczą oraz wybrany horyzont czasu.</p></article>
      </div>
      <div class="rk-pipe-formula">energia kupiona = energia użytkowa ÷ SCOP lub sprawność sezonowa</div>
      <div class="rk-pipe-formula">koszt całkowity = inwestycja + suma kosztów eksploatacji w analizowanym okresie</div>
      <p class="rk-pipe-copy">Projektowa moc wynika z obliczeń pomieszczenie po pomieszczeniu. Wyjaśniają to poradniki o <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowym obciążeniu cieplnym OZC</a> oraz o <a href="https://projekt-ogrzewania.pl/bilans-cieplny-budynku-fundament-efektywnosci-energetycznej-i-komfortu/">bilansie cieplnym budynku</a>.</p>
      <div class="rk-pipe-note rk-pipe-note-bad"><p><strong>Nie licz rocznego kosztu przez pomnożenie mocy źródła przez liczbę godzin sezonu.</strong> Moc projektowa opisuje warunek obliczeniowy, a nie stałe obciążenie przez całą zimę.</p></div>
    </section>

    <section class="rk-pipe-section" id="rk-pipe-temperatures">
      <span class="rk-pipe-eyebrow">Przykład, nie uniwersalna reguła</span>
      <h2 class="rk-pipe-section-title">Podłogówka 35/30°C i grzejniki 55/45°C — co naprawdę pokazują te liczby?</h2>
      <p class="rk-pipe-lead">Takie parametry są użytecznym scenariuszem porównawczym, szczególnie przy pompie ciepła. Nie są jednak definicją obu instalacji. Temperatura potrzebna w konkretnym domu wynika z wymaganej mocy i wielkości odbiornika.</p>
      <div class="rk-pipe-table-wrap">
        <table>
          <thead><tr><th>Scenariusz</th><th>Parametry startowe</th><th>Co trzeba potwierdzić</th><th>Najważniejsze zastrzeżenie</th></tr></thead>
          <tbody>
            <tr><td data-label="Scenariusz"><strong>Podłogówka niskotemperaturowa</strong></td><td data-label="Parametry startowe">35/30°C</td><td data-label="Co trzeba potwierdzić">Moc podłogi przy danym rozstawie, okładzinie i powierzchni czynnej.</td><td data-label="Zastrzeżenie">Nie każde pomieszczenie pokryje obciążenie przy 35°C.</td></tr>
            <tr><td data-label="Scenariusz"><strong>Grzejniki niskotemperaturowe</strong></td><td data-label="Parametry startowe">45/35°C</td><td data-label="Co trzeba potwierdzić">Moc konkretnego grzejnika po korekcie względem warunków katalogowych.</td><td data-label="Zastrzeżenie">Może być potrzebny większy grzejnik lub kilka odbiorników.</td></tr>
            <tr><td data-label="Scenariusz"><strong>Grzejniki o wyższym parametrze</strong></td><td data-label="Parametry startowe">55/45°C</td><td data-label="Co trzeba potwierdzić">Sprawność źródła przy tej temperaturze i moc odbiorników w mrozie.</td><td data-label="Zastrzeżenie">55°C nie jest temperaturą, od której grzejnik dopiero „zaczyna grzać”.</td></tr>
          </tbody>
        </table>
      </div>
      <div class="rk-pipe-note rk-pipe-note-good"><p><strong>Najważniejsza przewaga podłogówki:</strong> duża powierzchnia może przekazać wymaganą moc przy małej różnicy temperatur. To często pomaga pompie ciepła, ale wynik trzeba potwierdzić obliczeniami dla każdego pomieszczenia.</p></div>
      <p class="rk-pipe-copy">Zależność temperatury zasilania od konstrukcji podłogi opisuję szerzej w poradniku o <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalnej temperaturze zasilania podłogówki</a>. Przy pompie ciepła warto dodatkowo sprawdzić, co rzeczywiście oznacza <a href="https://projekt-ogrzewania.pl/niska-temperatura-zasilania-pompy-ciepla-dlaczego-35-stopni-to-ideal-dla-podlogowki/">niskotemperaturowa praca instalacji</a>.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-dark" id="rk-pipe-calculator-section">
      <span class="rk-pipe-eyebrow">Główne narzędzie artykułu</span>
      <h2 class="rk-pipe-section-title">Kalkulator kosztów: podłogówka czy grzejniki?</h2>
      <p class="rk-pipe-lead">Porównaj dwa sposoby przekazania tej samej ilości ciepła do tego samego budynku. Kalkulator nie zakłada automatycznej oszczędności wynikającej z temperatury wody — używa podanego przez Ciebie SCOP albo sprawności sezonowej.</p>

      <div class="rk-pipe-calculator" id="rk-pipe-calculator">
        <div class="rk-pipe-tool-head">
          <h3>Pełny koszt inwestycji i eksploatacji</h3>
          <p>Wartości startowe są wyłącznie jawnym przykładem. Zastąp je danymi z OZC, ofert, dokumentacji źródła i własnych taryf.</p>
        </div>

        <div class="rk-pipe-tool-stage">
          <div class="rk-pipe-stage-head"><span class="rk-pipe-stage-number">1</span><div><h4>Wspólne dane budynku i energii</h4><p>Ta sama energia użytkowa jest dostarczana przez oba warianty.</p></div></div>
          <div class="rk-pipe-fields rk-pipe-fields-3">
            <label class="rk-pipe-field"><span>Roczna energia użytkowa na ogrzewanie [kWh/rok]</span><input id="rk-compare-useful" type="number" min="500" max="100000" step="100" value="12000" inputmode="decimal"><small>Nie wpisuj mocy źródła w kW ani całego zużycia prądu w domu.</small></label>
            <label class="rk-pipe-field"><span>Wspólne źródło ciepła</span><select id="rk-compare-source"><option value="heatpump" selected="">Pompa ciepła</option><option value="gas">Kocioł gazowy kondensacyjny</option><option value="electric">Ogrzewanie elektryczne oporowe</option></select><small>To samo źródło pozwala ocenić wpływ odbiorników. Zmiana źródła tworzy porównanie całych systemów.</small></label>
            <label class="rk-pipe-field"><span id="rk-compare-price-label">Cena energii elektrycznej [zł/kWh]</span><input id="rk-compare-price" type="number" min="0.01" max="10" step="0.01" value="1.10" inputmode="decimal"><small>Wpisz łączny koszt zmienny jednej kWh kupowanej energii.</small></label>
            <label class="rk-pipe-field"><span>Cena prądu dla pomp i automatyki [zł/kWh]</span><input id="rk-compare-aux-price" type="number" min="0.01" max="10" step="0.01" value="1.10" inputmode="decimal"><small>Osobne pole ma znaczenie przede wszystkim przy paliwie gazowym.</small></label>
            <label class="rk-pipe-field"><span>Horyzont porównania</span><select id="rk-compare-horizon"><option value="5">5 lat</option><option value="10">10 lat</option><option value="15" selected="">15 lat</option><option value="20">20 lat</option></select><small>Wynik nie uwzględnia wartości pieniądza w czasie ani finansowania.</small></label>
            <label class="rk-pipe-field"><span>Scenariusz ceny energii</span><select id="rk-compare-scenario"><option value="0.8">Cena niższa o 20%</option><option value="1" selected="">Cena bazowa</option><option value="1.2">Cena wyższa o 20%</option></select><small>Zmiana jest stała dla całego okresu i służy analizie wrażliwości.</small></label>
          </div>
        </div>

        <div class="rk-pipe-tool-stage">
          <div class="rk-pipe-stage-head"><span class="rk-pipe-stage-number">2</span><div><h4>Temperatury oraz sprawność sezonowa</h4><p>Temperatura opisuje scenariusz. Koszt wynika z rzeczywistego SCOP albo sprawności, a nie z arbitralnego procentu za każdy stopień.</p></div></div>
          <div class="rk-pipe-fields rk-pipe-fields-3">
            <label class="rk-pipe-field"><span>Podłogówka — zasilanie [°C]</span><input id="rk-compare-floor-supply" type="number" min="20" max="70" step="1" value="35" inputmode="decimal"></label>
            <label class="rk-pipe-field"><span>Podłogówka — powrót [°C]</span><input id="rk-compare-floor-return" type="number" min="15" max="65" step="1" value="30" inputmode="decimal"></label>
            <label class="rk-pipe-field"><span id="rk-compare-floor-eff-label">Podłogówka — SCOP</span><input id="rk-compare-floor-eff" type="number" min="0.1" max="10" step="0.05" value="4.20" inputmode="decimal"><small>Wstaw wartość dla odpowiadającej temperatury pracy całego systemu.</small></label>
            <label class="rk-pipe-field"><span>Grzejniki — zasilanie [°C]</span><input id="rk-compare-rad-supply" type="number" min="20" max="90" step="1" value="55" inputmode="decimal"></label>
            <label class="rk-pipe-field"><span>Grzejniki — powrót [°C]</span><input id="rk-compare-rad-return" type="number" min="15" max="80" step="1" value="45" inputmode="decimal"></label>
            <label class="rk-pipe-field"><span id="rk-compare-rad-eff-label">Grzejniki — SCOP</span><input id="rk-compare-rad-eff" type="number" min="0.1" max="10" step="0.05" value="3.20" inputmode="decimal"><small>Nie przepisuj wartości dla 35°C do wariantu pracującego przy 55°C.</small></label>
          </div>
          <div class="rk-pipe-note" id="rk-compare-temperature-note"><p><strong>Kontrola założenia:</strong> kalkulator nie sprawdza mocy odbiorników. Przed przyjęciem SCOP potwierdź, że podłoga albo grzejniki rzeczywiście pokryją obciążenie pomieszczeń przy wpisanych parametrach.</p></div>
        </div>

        <div class="rk-pipe-tool-stage">
          <div class="rk-pipe-stage-head"><span class="rk-pipe-stage-number">3</span><div><h4>Koszt wykonania obu wariantów</h4><p>Wpisuj tylko koszty różniące warianty albo stosuj tę samą wartość dla elementów wspólnych.</p></div></div>
          <div class="rk-pipe-table-wrap">
            <table>
              <thead><tr><th>Składnik inwestycji</th><th>Podłogówka [zł]</th><th>Grzejniki [zł]</th><th>Co uwzględnić</th></tr></thead>
              <tbody>
                <tr><td data-label="Składnik"><strong>Projekt i obliczenia</strong></td><td data-label="Podłogówka"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Projekt podłogówki</span><input id="rk-compare-floor-design" type="number" min="0" max="500000" step="100" value="1800" inputmode="decimal"></label></td><td data-label="Grzejniki"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Projekt grzejników</span><input id="rk-compare-rad-design" type="number" min="0" max="500000" step="100" value="1200" inputmode="decimal"></label></td><td data-label="Zakres">OZC, dobór odbiorników, hydraulika i dokumentacja.</td></tr>
                <tr><td data-label="Składnik"><strong>Odbiorniki, rury i armatura</strong></td><td data-label="Podłogówka"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Materiały podłogówki</span><input id="rk-compare-floor-material" type="number" min="0" max="500000" step="100" value="22000" inputmode="decimal"></label></td><td data-label="Grzejniki"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Materiały grzejnikowe</span><input id="rk-compare-rad-material" type="number" min="0" max="500000" step="100" value="16000" inputmode="decimal"></label></td><td data-label="Zakres">Pętle i rozdzielacze albo grzejniki, zawory i przewody.</td></tr>
                <tr><td data-label="Składnik"><strong>Robocizna i uruchomienie</strong></td><td data-label="Podłogówka"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Robocizna podłogówki</span><input id="rk-compare-floor-labour" type="number" min="0" max="500000" step="100" value="11000" inputmode="decimal"></label></td><td data-label="Grzejniki"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Robocizna grzejników</span><input id="rk-compare-rad-labour" type="number" min="0" max="500000" step="100" value="9000" inputmode="decimal"></label></td><td data-label="Zakres">Montaż, próby, regulacja i dokumentacja odbiorowa.</td></tr>
                <tr><td data-label="Składnik"><strong>Prace budowlane i adaptacyjne</strong></td><td data-label="Podłogówka"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Prace budowlane podłogówki</span><input id="rk-compare-floor-building" type="number" min="0" max="500000" step="100" value="5000" inputmode="decimal"></label></td><td data-label="Grzejniki"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Prace budowlane grzejników</span><input id="rk-compare-rad-building" type="number" min="0" max="500000" step="100" value="2500" inputmode="decimal"></label></td><td data-label="Zakres">Warstwy wynikające z instalacji, bruzdy, naprawy i przebudowy.</td></tr>
                <tr><td data-label="Składnik"><strong>Sterowanie i wyposażenie dodatkowe</strong></td><td data-label="Podłogówka"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Sterowanie podłogówki</span><input id="rk-compare-floor-controls" type="number" min="0" max="500000" step="100" value="2500" inputmode="decimal"></label></td><td data-label="Grzejniki"><label class="rk-pipe-field"><span class="rk-pipe-visually-hidden">Sterowanie grzejników</span><input id="rk-compare-rad-controls" type="number" min="0" max="500000" step="100" value="2200" inputmode="decimal"></label></td><td data-label="Zakres">Siłowniki, głowice, regulatory i elementy wymagane przez źródło.</td></tr>
              </tbody>
            </table>
          </div>
        </div>

        <div class="rk-pipe-tool-stage">
          <div class="rk-pipe-stage-head"><span class="rk-pipe-stage-number">4</span><div><h4>Koszty roczne poza energią źródła</h4><p>Oddziel serwis od energii pomocniczej pomp obiegowych i automatyki.</p></div></div>
          <div class="rk-pipe-fields">
            <label class="rk-pipe-field"><span>Podłogówka — serwis i koszty stałe [zł/rok]</span><input id="rk-compare-floor-service" type="number" min="0" max="50000" step="10" value="500" inputmode="decimal"></label>
            <label class="rk-pipe-field"><span>Grzejniki — serwis i koszty stałe [zł/rok]</span><input id="rk-compare-rad-service" type="number" min="0" max="50000" step="10" value="450" inputmode="decimal"></label>
            <label class="rk-pipe-field"><span>Podłogówka — energia pomocnicza [kWh/rok]</span><input id="rk-compare-floor-aux" type="number" min="0" max="10000" step="10" value="180" inputmode="decimal"></label>
            <label class="rk-pipe-field"><span>Grzejniki — energia pomocnicza [kWh/rok]</span><input id="rk-compare-rad-aux" type="number" min="0" max="10000" step="10" value="120" inputmode="decimal"></label>
          </div>
        </div>

        <div class="rk-pipe-tool-actions">
          <button class="rk-pipe-primary-button" id="rk-compare-run" type="button">Przelicz porównanie</button>
          <button class="rk-pipe-secondary-button" id="rk-compare-reset" type="button">Przywróć przykład</button>
        </div>

        <div class="rk-pipe-result is-good" id="rk-compare-result" aria-live="polite">
          <p class="rk-pipe-result-status" id="rk-compare-status">Wynik dla 15 lat i ceny bazowej</p>
          <p class="rk-pipe-result-intro" id="rk-compare-intro">Oba warianty dostarczają do budynku 12 000 kWh ciepła użytkowego rocznie.</p>

          <div class="rk-pipe-metric-grid">
            <div class="rk-pipe-metric is-floor"><span>Podłogówka — energia kupiona</span><strong id="rk-result-floor-energy">2 857 kWh/rok</strong></div>
            <div class="rk-pipe-metric is-radiator"><span>Grzejniki — energia kupiona</span><strong id="rk-result-rad-energy">3 750 kWh/rok</strong></div>
            <div class="rk-pipe-metric is-floor"><span>Podłogówka — koszt roczny</span><strong id="rk-result-floor-annual">3 841 zł</strong></div>
            <div class="rk-pipe-metric is-radiator"><span>Grzejniki — koszt roczny</span><strong id="rk-result-rad-annual">4 707 zł</strong></div>
            <div class="rk-pipe-metric is-floor"><span>Podłogówka — inwestycja</span><strong id="rk-result-floor-invest">42 300 zł</strong></div>
            <div class="rk-pipe-metric is-radiator"><span>Grzejniki — inwestycja</span><strong id="rk-result-rad-invest">30 900 zł</strong></div>
            <div class="rk-pipe-metric is-floor"><span>Podłogówka — koszt całkowity</span><strong id="rk-result-floor-tco">99 913 zł</strong></div>
            <div class="rk-pipe-metric is-radiator"><span>Grzejniki — koszt całkowity</span><strong id="rk-result-rad-tco">101 505 zł</strong></div>
          </div>

          <div class="rk-pipe-result-callout"><strong id="rk-result-verdict">W przykładzie podłogówka jest po 15 latach tańsza łącznie o 1 592 zł.</strong> <span id="rk-result-payback">Wyższy koszt początkowy zwraca się po około 13,2 roku.</span></div>
          <p class="rk-pipe-disclaimer" id="rk-result-assumptions">Model przyjmuje stałą roczną energię użytkową, stałe ceny w obrębie wybranego scenariusza i nie uwzględnia finansowania, inflacji, dyskonta, wymiany urządzeń ani przygotowania ciepłej wody użytkowej.</p>

          <div class="rk-pipe-chart-card">
            <div class="rk-pipe-chart-head">
              <div><h4>Skumulowany koszt systemów</h4><p>Inwestycja w roku 0 oraz niezmienny koszt roczny według wybranego scenariusza.</p></div>
              <div class="rk-pipe-chart-legend" aria-label="Legenda wykresu"><span><i class="is-floor"></i>Podłogówka</span><span><i class="is-radiator"></i>Grzejniki</span></div>
            </div>
            <svg class="rk-pipe-chart-svg" id="rk-compare-chart" viewBox="0 0 800 360" role="img" aria-labelledby="rk-compare-chart-title rk-compare-chart-desc">
              <title id="rk-compare-chart-title">Porównanie skumulowanego kosztu podłogówki i grzejników</title>
              <desc id="rk-compare-chart-desc">Wykres jest aktualizowany na podstawie danych kalkulatora. Dokładne wartości pokazuje tabela pod wykresem.</desc>
              <g id="rk-compare-chart-grid"></g>
              <g id="rk-compare-chart-lines"></g>
              <g id="rk-compare-chart-labels"></g>
            </svg>
            <div class="rk-pipe-table-wrap rk-pipe-chart-table">
              <table>
                <thead><tr><th>Rok</th><th>Podłogówka — koszt skumulowany</th><th>Grzejniki — koszt skumulowany</th><th>Różnica</th></tr></thead>
                <tbody>
                  <tr><td data-label="Rok"><strong>0</strong></td><td data-label="Podłogówka" id="rk-chart-floor-0">42 300 zł</td><td data-label="Grzejniki" id="rk-chart-rad-0">30 900 zł</td><td data-label="Różnica" id="rk-chart-diff-0">+11 400 zł</td></tr>
                  <tr><td data-label="Rok"><strong>5</strong></td><td data-label="Podłogówka" id="rk-chart-floor-5">61 504 zł</td><td data-label="Grzejniki" id="rk-chart-rad-5">54 435 zł</td><td data-label="Różnica" id="rk-chart-diff-5">+7 069 zł</td></tr>
                  <tr><td data-label="Rok"><strong>10</strong></td><td data-label="Podłogówka" id="rk-chart-floor-10">80 709 zł</td><td data-label="Grzejniki" id="rk-chart-rad-10">77 970 zł</td><td data-label="Różnica" id="rk-chart-diff-10">+2 739 zł</td></tr>
                  <tr><td data-label="Rok"><strong>15</strong></td><td data-label="Podłogówka" id="rk-chart-floor-15">99 913 zł</td><td data-label="Grzejniki" id="rk-chart-rad-15">101 505 zł</td><td data-label="Różnica" id="rk-chart-diff-15">−1 592 zł</td></tr>
                  <tr><td data-label="Rok"><strong>20</strong></td><td data-label="Podłogówka" id="rk-chart-floor-20">119 117 zł</td><td data-label="Grzejniki" id="rk-chart-rad-20">125 040 zł</td><td data-label="Różnica" id="rk-chart-diff-20">−5 923 zł</td></tr>
                </tbody>
              </table>
            </div>
          </div>
        </div>
      </div>

      <p class="rk-pipe-copy"><strong>Jak użyć kalkulatora odpowiedzialnie?</strong> Dla pompy ciepła wpisz SCOP oszacowany dla konkretnego klimatu, temperatury zasilania i udziału ogrzewania pomieszczeń. Dla kotła wpisz sprawność sezonową, a nie sprawność maksymalną z pojedynczego punktu. Przy ogrzewaniu oporowym temperatura odbiornika sama nie poprawia współczynnika konwersji energii elektrycznej na ciepło.</p>

      <aside class="rk-pipe-cta" aria-label="Indywidualny projekt ogrzewania podłogowego">
        <div class="rk-pipe-cta-title">Kalkulator porównał koszt budynku. Nie sprawdził jeszcze mocy każdej podłogi</div>
        <p>Założenie 35/30°C ma sens tylko wtedy, gdy czynna powierzchnia, rozstaw rur, opór okładziny i dopuszczalna temperatura powierzchni pozwalają pokryć obciążenie każdego pomieszczenia. Projekt musi dodatkowo określić długości pętli, przepływy, opory i nastawy rozdzielacza.</p>
        <a class="rk-pipe-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Sprawdź zakres indywidualnego projektu podłogówki</a>
        <small class="rk-pipe-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </aside>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-pipe-comfort">
      <span class="rk-pipe-eyebrow">Komfort bez marketingowych skrótów</span>
      <h2 class="rk-pipe-section-title">Promieniowanie, konwekcja i odczuwalna temperatura</h2>
      <p class="rk-pipe-lead">Podłoga i grzejnik przekazują ciepło przez promieniowanie oraz konwekcję, tylko w innych proporcjach i z innego miejsca. Duża, umiarkowanie ciepła powierzchnia podłogi może poprawić równomierność warunków, ale nie „wyłącza” ruchu powietrza ani nie gwarantuje identycznego komfortu każdej osobie.</p>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">P</span><h3>Duża powierzchnia</h3><p>Podłogówka oddaje jednostkowo mniej ciepła z metra powierzchni niż mały, gorętszy odbiornik, lecz wykorzystuje znaczną część pomieszczenia.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">G</span><h3>Lokalny odbiornik</h3><p>Grzejnik tworzy bardziej skoncentrowane źródło ciepła. Ustawiony pod oknem może ograniczać odczucie chłodu związane z zimną powierzchnią przeszklenia.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">C</span><h3>Komfort jest wynikiem całości</h3><p>Liczą się temperatury powierzchni, prędkość powietrza, asymetria promieniowania, wilgotność, ubranie i aktywność użytkownika.</p></article>
      </div>
      <div class="rk-pipe-note"><p><strong>Nie używamy argumentu „podłogówka eliminuje kurz”.</strong> Rodzaj ogrzewania może wpływać na ruch powietrza i rozkład temperatur, ale stężenie pyłów zależy również od wentylacji, filtracji, sprzątania, szczelności budynku i źródeł zanieczyszczeń.</p></div>
      <p class="rk-pipe-copy">Osobny poradnik analizuje, <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-jest-zdrowe/">czy ogrzewanie podłogowe jest zdrowe</a>, bez sprowadzania zagadnienia do jednego hasła o konwekcji. Komfort nie zwalnia także z przestrzegania ograniczeń temperatury powierzchni wynikających z projektu systemu.</p>
    </section>

    <section class="rk-pipe-section" id="rk-pipe-dynamics">
      <span class="rk-pipe-eyebrow">Stabilność kontra szybka reakcja</span>
      <h2 class="rk-pipe-section-title">Bezwładność podłogówki może być zaletą albo ograniczeniem</h2>
      <p class="rk-pipe-lead">Czas reakcji nie wynika wyłącznie z nazwy odbiornika. Wpływają na niego masa i grubość jastrychu, sposób zabudowy rury, opór wykończenia, moc chwilowa, sterowanie oraz charakter budynku.</p>
      <div class="rk-pipe-grid-2">
        <article class="rk-pipe-card">
          <span class="rk-pipe-card-number">PODŁOGA</span>
          <h3>Stabilna praca przy małych korektach</h3>
          <ul class="rk-pipe-bullets"><li>dobrze współpracuje z ciągłą regulacją pogodową,</li><li>wolniej reaguje na duże obniżenia i gwałtowne zyski słoneczne,</li><li>system suchy może reagować szybciej niż ciężki jastrych mokry,</li><li>agresywne sterowanie ON/OFF nie zawsze wykorzystuje jej charakter.</li></ul>
        </article>
        <article class="rk-pipe-card">
          <span class="rk-pipe-card-number">GRZEJNIK</span>
          <h3>Szybsza zmiana oddawanej mocy</h3>
          <ul class="rk-pipe-bullets"><li>łatwiej ogranicza moc po nagłym wzroście temperatury,</li><li>może lepiej pasować do pomieszczeń używanych okresowo,</li><li>szybka reakcja nie naprawia przewymiarowanego źródła,</li><li>sterowanie również wymaga prawidłowej krzywej i równoważenia.</li></ul>
        </article>
      </div>
      <p class="rk-pipe-copy">Więcej o mechanizmie magazynowania ciepła wyjaśnia artykuł <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">czym jest bezwładność cieplna podłogówki</a>. W praktyce sposób sterowania warto dobrać do konstrukcji, dlatego nie każde <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowanie strefowe ogrzewaniem</a> daje ten sam efekt.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-pipe-source">
      <span class="rk-pipe-eyebrow">Odbiornik pracuje ze źródłem</span>
      <h2 class="rk-pipe-section-title">Pompa ciepła, kocioł kondensacyjny i prąd — gdzie temperatura ma znaczenie?</h2>
      <p class="rk-pipe-lead">Niższa temperatura wody może poprawiać warunki pracy pompy ciepła oraz sprzyjać kondensacji w odpowiednio eksploatowanym kotle. Nie wolno jednak przypisywać każdemu obniżeniu temperatury jednego stałego procentu oszczędności.</p>
      <div class="rk-pipe-table-wrap">
        <table>
          <thead><tr><th>Źródło</th><th>Znaczenie temperatury odbiorników</th><th>Co wpisać do kalkulatora</th><th>Na co uważać</th></tr></thead>
          <tbody>
            <tr><td data-label="Źródło"><strong>Pompa ciepła</strong></td><td data-label="Znaczenie">Niższa wymagana temperatura zasilania zwykle ułatwia osiągnięcie wyższej efektywności.</td><td data-label="Do kalkulatora">SCOP dla całego sezonu i danego scenariusza instalacji.</td><td data-label="Uwaga">Nie zastępuj SCOP pojedynczym COP z warunków katalogowych.</td></tr>
            <tr><td data-label="Źródło"><strong>Kocioł kondensacyjny</strong></td><td data-label="Znaczenie">Niższa temperatura powrotu może sprzyjać pracy kondensacyjnej.</td><td data-label="Do kalkulatora">Sprawność sezonową obu wariantów i cenę jednej kWh paliwa.</td><td data-label="Uwaga">Uwzględnij koszty stałe, kominowe i serwisowe.</td></tr>
            <tr><td data-label="Źródło"><strong>Energia elektryczna oporowa</strong></td><td data-label="Znaczenie">Temperatura odbiornika nie tworzy efektu podobnego do SCOP pompy ciepła.</td><td data-label="Do kalkulatora">Współczynnik około 1,00 oraz rzeczywistą cenę energii.</td><td data-label="Uwaga">Różnice mogą wynikać z regulacji i komfortu, nie z „COP podłogi”.</td></tr>
          </tbody>
        </table>
      </div>
      <p class="rk-pipe-copy">Wariant pompy ciepła z różnymi odbiornikami omawia poradnik <a href="https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/">pompa ciepła, podłogówka i grzejniki</a>. Jeżeli system ma być od początku niskotemperaturowy, zobacz także <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekt ogrzewania podłogowego z pompą ciepła</a>.</p>
      <div class="rk-pipe-note rk-pipe-note-bad"><p><strong>Wysoka temperatura zasilania nie powoduje sama w sobie taktowania pompy ciepła.</strong> Taktowanie wiąże się między innymi z relacją mocy minimalnej źródła do bieżącego obciążenia, pojemnością i przepływem instalacji, sterowaniem oraz strefami odcinającymi odbiór ciepła.</p></div>
    </section>

    <section class="rk-pipe-section" id="rk-pipe-building">
      <span class="rk-pipe-eyebrow">Inny wynik na budowie i podczas modernizacji</span>
      <h2 class="rk-pipe-section-title">Nowy dom czy remont? Koszt podłogówki trzeba liczyć inaczej</h2>
      <p class="rk-pipe-lead">W nowym budynku warstwy podłogi, wysokości i rozdzielacze można zaplanować przed wykonaniem instalacji. W remoncie o wyniku często decydują koszty demontażu, podniesienia posadzki, drzwi, schodów i odtworzenia wykończenia.</p>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">NOWY</span><h3>Planowanie od zera</h3><p>Łatwiej skoordynować izolację, jastrych, dylatacje, rozdzielacze i poziomy gotowych podłóg. Porównuj koszty różnicowe, nie wszystkie warstwy budynku.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">REMONT</span><h3>Koszt prac towarzyszących</h3><p>Do instalacji mogą dojść rozbiórki i odtworzenie podłóg. Czasem rozsądniejszy jest system suchy, frezowanie albo grzejniki niskotemperaturowe.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">ISTNIEJĄCE</span><h3>Najpierw pomiar i OZC</h3><p>Przed wymianą sprawdź moc obecnych grzejników przy nowej temperaturze, rzeczywiste straty i stan przewodów. Sama powierzchnia domu nie wystarcza.</p></article>
      </div>
      <p class="rk-pipe-copy">Warunki modernizacji opisuje poradnik <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/">ogrzewanie podłogowe w remontowanym budynku — czy warto</a>. Przy ograniczonej wysokości pomocne jest porównanie <a href="https://projekt-ogrzewania.pl/system-mokry-czy-suchy-w-wodnym-ogrzewaniu-podlogowym-ktory-wybrac/">systemu mokrego i suchego</a>.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-pipe-surfaces">
      <span class="rk-pipe-eyebrow">Podłoga jest częścią grzejnika</span>
      <h2 class="rk-pipe-section-title">Okładzina, podkład, dywan i stała zabudowa zmieniają dostępną moc</h2>
      <p class="rk-pipe-lead">W podłogówce nie wystarczy znać powierzchni całego pokoju. Liczy się powierzchnia czynna oraz opór kompletu warstw znajdujących się nad systemem grzewczym.</p>
      <div class="rk-pipe-grid-4">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">R</span><h3>Opór wykończenia</h3><p>Dodaj opór okładziny i podkładu zgodnie z dokumentacją. Wysoki opór zmniejsza moc przy tych samych parametrach wody.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">A</span><h3>Powierzchnia czynna</h3><p>Stała zabudowa kuchenna, wanna czy duże elementy techniczne mogą ograniczać obszar, który realnie ogrzewa pomieszczenie.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">T</span><h3>Temperatura powierzchni</h3><p>Nie można bez końca kompensować małej powierzchni przez podnoszenie temperatury. Obowiązują kryteria komfortu i ograniczenia materiałów.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">VA</span><h3>Rozstaw rur</h3><p>Gęstszy rozstaw może poprawić równomierność i moc, ale musi zostać powiązany z długością pętli, przepływem oraz konstrukcją podłogi.</p></article>
      </div>
      <p class="rk-pipe-copy">Przed wyborem posadzki sprawdź <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">opór cieplny R podłogi</a> oraz wpływ <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">rodzaju okładziny na wydajność</a>. Osobny poradnik pokazuje, jak połączyć <a href="https://projekt-ogrzewania.pl/wodne-ogrzewanie-podlogowe-a-meble-jak-polaczyc-komfort-i-aranzacje/">wodną podłogówkę z układem mebli</a>.</p>
    </section>

    <section class="rk-pipe-section" id="rk-pipe-hydraulics">
      <span class="rk-pipe-eyebrow">Przepływ nie jest rachunkiem za ogrzewanie</span>
      <h2 class="rk-pipe-section-title">Podłogówka i grzejniki mają inną hydraulikę, ale nie wolno jej upraszczać do jednej liczby</h2>
      <p class="rk-pipe-lead">Dla tej samej mocy mniejsza różnica temperatur między zasilaniem a powrotem wymaga większego przepływu. Nie oznacza to automatycznie wyższego zużycia prądu przez pompę — potrzebny jest jeszcze opór drogi krytycznej i punkt pracy pompy.</p>
      <div class="rk-pipe-formula">przepływ objętościowy ≈ moc ÷ (pojemność cieplna wody × różnica temperatur)</div>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">V̇</span><h3>Przepływ</h3><p>Wynika z mocy przenoszonej przez obieg i przyjętego spadku temperatury. Ustawia się go między innymi na rotametrach w l/min.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">Δp</span><h3>Spadek ciśnienia</h3><p>Zależy od długości, średnicy, przepływu, armatury i medium. Nie jest jednostką nastawy wskazywanej przez rotametr.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">P</span><h3>Praca pompy</h3><p>Pompa obsługuje sumę wymaganych przepływów oraz opór najbardziej niekorzystnej czynnej drogi, a nie sumę oporów wszystkich pętli.</p></article>
      </div>
      <p class="rk-pipe-copy">W praktyce potrzebne są prawidłowo dobrany <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacz podłogówki</a>, właściwa <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa</a> i regulacja przepływów. Zasady odczytu omawia artykuł o <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrze na rozdzielaczu</a>.</p>
      <div class="rk-pipe-note rk-pipe-note-bad"><p><strong>Brak grzejników nie gwarantuje mniejszego oporu instalacji.</strong> Kilkanaście długich pętli o małej średnicy może tworzyć wymagającą hydraulikę. Wynik zależy od projektu, nie od samej nazwy systemu.</p></div>
    </section>

    <section class="rk-pipe-section rk-pipe-section-dark" id="rk-pipe-analyzer-section">
      <span class="rk-pipe-eyebrow">Drugie narzędzie — decyzja, nie ranking</span>
      <h2 class="rk-pipe-section-title">Analizator: podłogówka, grzejniki czy układ mieszany?</h2>
      <p class="rk-pipe-lead">Koszt to tylko część decyzji. Odpowiedz na pytania o budynek, sposób użytkowania i dostępne dane. Analizator pokaże argumenty dla każdego wariantu oraz braki, które trzeba uzupełnić przed wyborem.</p>

      <div class="rk-pipe-analyzer" id="rk-pipe-analyzer">
        <div class="rk-pipe-tool-head">
          <h3>Sprawdź dopasowanie rozwiązania do budynku</h3>
          <p>Wynik nie jest projektem ani procentową oceną jakości. To uporządkowana lista przesłanek do dalszej weryfikacji.</p>
        </div>

        <div class="rk-pipe-tool-stage">
          <div class="rk-pipe-stage-head"><span class="rk-pipe-stage-number">1</span><div><h4>Budynek i możliwość montażu</h4><p>Najpierw oceń ograniczenia konstrukcyjne oraz dane cieplne.</p></div></div>
          <div class="rk-pipe-fields">
            <label class="rk-pipe-field"><span>Rodzaj inwestycji</span><select id="rk-decision-building"><option value="unknown">Nie ustalono</option><option value="new">Nowy budynek przed wykonaniem podłóg</option><option value="retrofit">Remont istniejącego domu</option><option value="partial">Remont częściowy</option></select></label>
            <label class="rk-pipe-field"><span>Dostępna wysokość i możliwość przebudowy podłogi</span><select id="rk-decision-height"><option value="unknown">Nie sprawdzono</option><option value="yes">Warstwy można zaprojektować od początku</option><option value="limited">Wysokość jest mocno ograniczona</option><option value="no">Nie można ingerować w podłogę</option></select></label>
            <label class="rk-pipe-field"><span>Obciążenie cieplne pomieszczeń</span><select id="rk-decision-ozc"><option value="unknown">Brak OZC pomieszczeń</option><option value="known">Jest policzone pomieszczenie po pomieszczeniu</option><option value="estimate">Jest tylko wskaźnik W/m² lub wynik całego domu</option></select></label>
            <label class="rk-pipe-field"><span>Czy podłoga pokrywa obciążenie przy planowanych parametrach?</span><select id="rk-decision-floor-power"><option value="unknown">Nie sprawdzono</option><option value="yes">Tak, potwierdzono obliczeniowo</option><option value="borderline">Tylko przy wartości granicznej / mały zapas</option><option value="no">Nie, brakuje mocy</option></select></label>
          </div>
        </div>

        <div class="rk-pipe-tool-stage">
          <div class="rk-pipe-stage-head"><span class="rk-pipe-stage-number">2</span><div><h4>Źródło, wykończenie i sposób użytkowania</h4><p>Te odpowiedzi określają, gdzie dana cecha staje się zaletą, a gdzie ograniczeniem.</p></div></div>
          <div class="rk-pipe-fields">
            <label class="rk-pipe-field"><span>Planowane źródło ciepła</span><select id="rk-decision-source"><option value="unknown">Jeszcze nieustalone</option><option value="heatpump">Pompa ciepła</option><option value="condensing">Kocioł kondensacyjny</option><option value="other">Inne źródło</option></select></label>
            <label class="rk-pipe-field"><span>Opór okładziny i powierzchnia czynna</span><select id="rk-decision-surface"><option value="unknown">Nie sprawdzono</option><option value="favorable">Niski opór i wystarczająca powierzchnia</option><option value="limited">Wysoki opór lub dużo stałej zabudowy</option><option value="mixed">Warunki różnią się między pomieszczeniami</option></select></label>
            <label class="rk-pipe-field"><span>Charakter użytkowania</span><select id="rk-decision-use"><option value="unknown">Nie ustalono</option><option value="steady">Stała temperatura przez większość doby</option><option value="intermittent">Częste wyłączenia lub pomieszczenia okresowe</option><option value="mixed">Różny w poszczególnych pomieszczeniach</option></select></label>
            <label class="rk-pipe-field"><span>Znaczenie wolnych ścian i estetyki</span><select id="rk-decision-space"><option value="unknown">Bez wyraźnej preferencji</option><option value="important">Bardzo ważne</option><option value="neutral">Drugorzędne</option></select></label>
          </div>
        </div>

        <div class="rk-pipe-tool-stage">
          <div class="rk-pipe-stage-head"><span class="rk-pipe-stage-number">3</span><div><h4>Możliwość zachowania lub powiększenia grzejników</h4><p>Przy modernizacji nie zakładaj od razu, że każdy istniejący grzejnik wymaga 55°C.</p></div></div>
          <div class="rk-pipe-fields">
            <label class="rk-pipe-field"><span>Moc grzejników przy obniżonych parametrach</span><select id="rk-decision-rad-power"><option value="unknown">Nie przeliczono</option><option value="yes">Pokrywają obciążenie przy niskiej temperaturze</option><option value="can-upsize">Można je rozsądnie powiększyć</option><option value="no">Nie pokrywają, a powiększenie jest trudne</option></select></label>
            <label class="rk-pipe-field"><span>Czy poszczególne pomieszczenia mają odmienne potrzeby?</span><select id="rk-decision-zones"><option value="unknown">Nie przeanalizowano</option><option value="same">Warunki są podobne</option><option value="different">Są łazienki, pokoje okresowe lub strefy o małej podłodze czynnej</option></select></label>
          </div>
        </div>

        <div class="rk-pipe-tool-actions">
          <button class="rk-pipe-primary-button" id="rk-decision-run" type="button">Przeanalizuj warianty</button>
          <button class="rk-pipe-secondary-button" id="rk-decision-reset" type="button">Wyczyść odpowiedzi</button>
        </div>

        <div class="rk-pipe-result" id="rk-decision-result" aria-live="polite">
          <p class="rk-pipe-result-status" id="rk-decision-status">Uzupełnij dane budynku</p>
          <p class="rk-pipe-result-intro" id="rk-decision-intro">Wynik rozdzieli argumenty za podłogówką, grzejnikami, układem mieszanym oraz dane wymagające sprawdzenia.</p>
          <div class="rk-pipe-decision-grid">
            <div class="rk-pipe-decision-column is-floor"><h4>Argumenty za podłogówką</h4><ul id="rk-decision-floor-list"><li>Jeszcze brak ocenionych danych.</li></ul></div>
            <div class="rk-pipe-decision-column is-radiator"><h4>Argumenty za grzejnikami</h4><ul id="rk-decision-rad-list"><li>Jeszcze brak ocenionych danych.</li></ul></div>
            <div class="rk-pipe-decision-column is-mixed"><h4>Argumenty za układem mieszanym</h4><ul id="rk-decision-mixed-list"><li>Jeszcze brak ocenionych danych.</li></ul></div>
            <div class="rk-pipe-decision-column is-missing"><h4>Dane do uzupełnienia</h4><ul id="rk-decision-missing-list"><li>Odpowiedz na pytania na podstawie projektu i warunków budynku.</li></ul></div>
          </div>
          <p class="rk-pipe-disclaimer">Analizator nie wyznacza mocy, temperatur, wielkości grzejników, rozstawu rur ani kosztu wykonania. Wynik jest listą przesłanek, a nie automatyczną rekomendacją zakupową.</p>
        </div>
      </div>
    </section>

    <section class="rk-pipe-section" id="rk-pipe-mixed">
      <span class="rk-pipe-eyebrow">Nie zawsze trzeba wybierać jeden odbiornik</span>
      <h2 class="rk-pipe-section-title">Kiedy warto połączyć podłogówkę z grzejnikami?</h2>
      <p class="rk-pipe-lead">Układ mieszany może być racjonalny, jeżeli różne pomieszczenia mają odmienne ograniczenia. Nie powinien jednak powstawać przez przypadkowe dołączenie dwóch obiegów o innych temperaturach i przepływach.</p>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">01</span><h3>Łazienka lub suszenie</h3><p>Podłoga może zapewniać komfort, a dodatkowy odbiornik pokrywać chwilowe potrzeby albo umożliwiać suszenie ręczników.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">02</span><h3>Remont etapami</h3><p>Podłogówka może trafić do przebudowywanej części domu, podczas gdy sprawdzone grzejniki pozostają w pozostałych pomieszczeniach.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">03</span><h3>Ograniczona moc podłogi</h3><p>Przy dużych stratach, małej powierzchni czynnej albo wysokim oporze okładziny dodatkowy odbiornik może domknąć bilans.</p></article>
      </div>
      <div class="rk-pipe-note"><p><strong>Najprostszy układ to taki, w którym oba rodzaje odbiorników potrafią pracować na możliwie zbliżonym, niskim parametrze.</strong> Jeżeli wymagają różnych temperatur, projekt musi przewidzieć sposób ich wytworzenia, regulacji i równoważenia.</p></div>
      <p class="rk-pipe-copy">Możliwe konfiguracje oraz ich ograniczenia opisuje poradnik <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-mozna-podlaczyc-do-grzejnikow/">czy ogrzewanie podłogowe można połączyć z grzejnikami</a>. Regulację temperatury wody porządkuje artykuł o <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">krzywej grzewczej</a>.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-pipe-comparison-table">
      <span class="rk-pipe-eyebrow">Porównanie na wspólnej podstawie</span>
      <h2 class="rk-pipe-section-title">Podłogówka a grzejniki — zalety i ograniczenia</h2>
      <p class="rk-pipe-lead">Tabela nie wskazuje automatycznego zwycięzcy. Pokazuje, kiedy dana cecha może mieć znaczenie oraz czego potrzebujesz, aby ją potwierdzić w konkretnym budynku.</p>
      <div class="rk-pipe-table-wrap">
        <table>
          <thead><tr><th>Obszar</th><th>Ogrzewanie podłogowe</th><th>Grzejniki</th><th>Warunek uczciwego porównania</th></tr></thead>
          <tbody>
            <tr><td data-label="Obszar"><strong>Temperatura wody</strong></td><td data-label="Podłogówka">Często niższa dzięki dużej powierzchni.</td><td data-label="Grzejniki">Zależy od wielkości odbiorników i strat pomieszczenia.</td><td data-label="Warunek">Sprawdź moc obu wariantów przy konkretnych parametrach.</td></tr>
            <tr><td data-label="Obszar"><strong>Pompa ciepła</strong></td><td data-label="Podłogówka">Zwykle sprzyja niskotemperaturowej pracy.</td><td data-label="Grzejniki">Także mogą pracować niskotemperaturowo, jeżeli są odpowiednio dobrane.</td><td data-label="Warunek">Porównaj sezonowy SCOP, nie pojedynczy COP.</td></tr>
            <tr><td data-label="Obszar"><strong>Koszt wykonania</strong></td><td data-label="Podłogówka">Często wyższy zakres instalacji i koordynacji.</td><td data-label="Grzejniki">W prostym remoncie mogą mieć niższy próg wejścia.</td><td data-label="Warunek">Uwzględnij prace budowlane, automatykę i elementy wspólne.</td></tr>
            <tr><td data-label="Obszar"><strong>Komfort</strong></td><td data-label="Podłogówka">Duża powierzchnia i potencjalnie równomierne warunki.</td><td data-label="Grzejniki">Bardziej lokalne oddawanie ciepła i silniejsza konwekcja w pobliżu.</td><td data-label="Warunek">Nie przypisuj obu systemom jednego stałego profilu temperatur.</td></tr>
            <tr><td data-label="Obszar"><strong>Reakcja</strong></td><td data-label="Podłogówka">Mokra konstrukcja zwykle reaguje wolniej.</td><td data-label="Grzejniki">Zwykle szybciej zmieniają oddawaną moc.</td><td data-label="Warunek">Porównaj rzeczywistą masę konstrukcji i sposób sterowania.</td></tr>
            <tr><td data-label="Obszar"><strong>Aranżacja</strong></td><td data-label="Podłogówka">Nie zajmuje ścian, lecz zależy od zabudowy podłogi.</td><td data-label="Grzejniki">Zajmują miejsce na ścianie, ale nie ograniczają wyboru posadzki.</td><td data-label="Warunek">Uwzględnij finalny układ mebli i osłon.</td></tr>
            <tr><td data-label="Obszar"><strong>Serwis</strong></td><td data-label="Podłogówka">Pętle są ukryte, ale rozdzielacze pozostają dostępne.</td><td data-label="Grzejniki">Odbiorniki i zawory są łatwo dostępne.</td><td data-label="Warunek">Projektuj pętle bez ukrytych połączeń i dokumentuj trasy.</td></tr>
            <tr><td data-label="Obszar"><strong>Modernizacja</strong></td><td data-label="Podłogówka">Może wymagać ingerencji w warstwy podłogi.</td><td data-label="Grzejniki">Często łatwiejsza wymiana lub powiększenie odbiornika.</td><td data-label="Warunek">Policz pełny zakres od demontażu do odtworzenia wykończenia.</td></tr>
          </tbody>
        </table>
      </div>
    </section>

    <section class="rk-pipe-section" id="rk-pipe-errors">
      <span class="rk-pipe-eyebrow">Najczęstsze mity i błędy</span>
      <h2 class="rk-pipe-section-title">Czego nie wolno zakładać przy porównaniu?</h2>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">MIT 1</span><h3>„Grzejnik grzeje dopiero od 55°C”</h3><p>Oddaje ciepło przy każdej dodatniej różnicy temperatur względem pomieszczenia. Przy niższej temperaturze ma po prostu mniejszą moc.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">MIT 2</span><h3>„Podłogówka zawsze oszczędza 20%”</h3><p>Wynik zależy od źródła, sprawności sezonowej, regulacji, budynku i zachowania użytkowników. Nie ma jednego procentu dla wszystkich domów.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">MIT 3</span><h3>„Każda podłoga zadziała przy 35°C”</h3><p>Najpierw trzeba sprawdzić obciążenie, powierzchnię czynną, rozstaw, konstrukcję i opór wykończenia.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">MIT 4</span><h3>„Niższa temperatura daje stały procent COP”</h3><p>Wpływ zależy od urządzenia, temperatury dolnego źródła, modulacji, odszraniania, CWU i warunków sezonu.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">MIT 5</span><h3>„Podłogówka eliminuje kurz”</h3><p>Może zmieniać udział konwekcji, ale jakość powietrza zależy od znacznie większej liczby czynników.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">MIT 6</span><h3>„Zwrot zawsze nastąpi po 3–5 latach”</h3><p>Przy małym zapotrzebowaniu albo podobnej sprawności obu wariantów wyższa inwestycja może zwracać się długo lub nie zwrócić się w badanym okresie.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">BŁĄD 7</span><h3>Porównanie różnych budynków</h3><p>Rachunek sąsiada nie jest podstawą. Porównuj ten sam dom, temperaturę wewnętrzną i energię użytkową.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">BŁĄD 8</span><h3>SCOP z materiału reklamowego</h3><p>Wartość bez powiązania z klimatem i temperaturą systemu nie opisuje automatycznie Twojej instalacji.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">BŁĄD 9</span><h3>Układanie jednego rozstawu wszędzie</h3><p>Pomieszczenia mają różne obciążenia, powierzchnie czynne i posadzki. Projekt musi je rozdzielić.</p></article>
      </div>
      <p class="rk-pipe-copy">Skutki uproszczeń opisuje szerzej porównanie <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-glowy-vs-projekt-z-obliczeniami-ile-mozesz-stracic-na-bledach/">projektu podłogówki „z głowy” i projektu z obliczeniami</a>.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-pipe-data">
      <span class="rk-pipe-eyebrow">Lista danych przed ostateczną decyzją</span>
      <h2 class="rk-pipe-section-title">Co powinien sprawdzić projektant obu wariantów?</h2>
      <p class="rk-pipe-lead">Porównanie jest wiarygodne dopiero wtedy, gdy oba rozwiązania pokrywają tę samą moc pomieszczeń i współpracują z rzeczywiście wybranym źródłem.</p>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">BUDYNEK</span><h3>Obciążenia i geometria</h3><ul class="rk-pipe-bullets"><li>OZC każdego pomieszczenia,</li><li>temperatury projektowe,</li><li>powierzchnie i wysokości,</li><li>przeszklenia oraz strefy brzegowe,</li><li>planowana temperatura wewnętrzna.</li></ul></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">ODBIORNIKI</span><h3>Moc i ograniczenia</h3><ul class="rk-pipe-bullets"><li>powierzchnia czynna podłogi,</li><li>opór okładziny i podkładu,</li><li>rozstaw i konstrukcja systemu,</li><li>moc grzejników przy nowych parametrach,</li><li>granice temperatur powierzchni.</li></ul></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">SYSTEM</span><h3>Hydraulika i źródło</h3><ul class="rk-pipe-bullets"><li>temperatury zasilania i powrotu,</li><li>przepływy oraz spadki ciśnienia,</li><li>punkt pracy pompy obiegowej,</li><li>krzywa grzewcza i regulacja,</li><li>sezonowa efektywność źródła.</li></ul></article>
      </div>
      <p class="rk-pipe-copy">Zakres dokumentacji pokazuje poradnik <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">jak powinien wyglądać profesjonalny projekt podłogówki</a>. Jeżeli dopiero rozważasz wykonanie obliczeń, sprawdź również, <a href="https://projekt-ogrzewania.pl/czy-do-ogrzewania-podlogowego-potrzebny-jest-projekt/">czy do ogrzewania podłogowego potrzebny jest projekt</a>.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-final" id="rk-pipe-final">
      <span class="rk-pipe-eyebrow">Końcowy wniosek</span>
      <h2 class="rk-pipe-section-title">Największą zaletą podłogówki jest możliwość pracy na niskim parametrze — jeżeli wynika z obliczeń</h2>
      <p class="rk-pipe-lead">Ogrzewanie podłogowe jest szczególnie mocnym rozwiązaniem w nowym domu z dużą powierzchnią czynną i źródłem, którego sprawność korzysta z niskiej temperatury wody. Grzejniki pozostają racjonalnym wyborem w wielu modernizacjach, pomieszczeniach okresowych oraz tam, gdzie można dobrać je do niższych parametrów bez kosztownej przebudowy podłóg.</p>
      <div class="rk-pipe-answer">
        <strong>Nie wybieraj między hasłami „35°C” i „55°C”. Porównaj dwie kompletne instalacje, które rzeczywiście pokrywają straty tego samego budynku.</strong>
        <p>Dopiero wtedy kalkulacja kosztów, efektywności i komfortu ma wspólną podstawę. Jeżeli żaden wariant samodzielnie nie pasuje do wszystkich pomieszczeń, projekt może uzasadnić układ mieszany.</p>
      </div>
      <div class="rk-pipe-cta">
        <div class="rk-pipe-cta-title">Zamień temperaturę z założenia na policzony układ pomieszczeń i pętli</div>
        <p>Projekt obejmuje obciążenia cieplne, sprawdzenie mocy podłogi, rozstaw i przebieg rur, podział pętli, przepływy, opory, nastawy rozdzielacza oraz parametry współpracy ze źródłem ciepła.</p>
        <a class="rk-pipe-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        <small class="rk-pipe-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-pipe-section" id="rk-pipe-sources">
      <span class="rk-pipe-eyebrow">Podstawa techniczna</span>
      <h2 class="rk-pipe-section-title">Oficjalne źródła i zakres obliczeń</h2>
      <p class="rk-pipe-lead">Linki zewnętrzne zostały zebrane wyłącznie w tej sekcji. Prowadzą do oficjalnych kart norm, prawa Unii Europejskiej i dokumentacji instytucji publicznej — bez odnośników do konkurencji, sprzedawców i producentów urządzeń.</p>
      <div class="rk-pipe-source-grid">
        <article class="rk-pipe-source-card"><a href="https://www.iso.org/standard/74682.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-1:2021 — definicje i kryteria komfortu</a><p>Oficjalna karta normy dotyczącej podstawowych definicji, symboli i kryteriów komfortu dla wbudowanych systemów ogrzewania i chłodzenia płaszczyznowego.</p></article>
        <article class="rk-pipe-source-card"><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — projektowa moc ogrzewania i chłodzenia</a><p>Oficjalny opis metod określania strumienia ciepła, temperatury i równomierności powierzchni oraz zależności od zmiennych projektowych.</p></article>
        <article class="rk-pipe-source-card"><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-3:2021 — projektowanie i wymiarowanie</a><p>Oficjalna karta metody projektowania i wymiarowania systemów tak, aby zapewnić wymaganą moc grzewczą lub chłodniczą.</p></article>
        <article class="rk-pipe-source-card"><a href="https://www.iso.org/standard/65696.html" target="_blank" rel="nofollow noopener noreferrer">ISO 52016-1:2017 — potrzeby energetyczne budynku</a><p>Oficjalna karta metod obliczania potrzeb energetycznych ogrzewania i chłodzenia, temperatur wewnętrznych oraz obciążeń cieplnych.</p></article>
        <article class="rk-pipe-source-card"><a href="https://eur-lex.europa.eu/legal-content/PL/TXT/?uri=CELEX%3A32013R0813" target="_blank" rel="nofollow noopener noreferrer">Rozporządzenie Komisji (UE) nr 813/2013</a><p>Oficjalny tekst EUR-Lex. Warunki znamionowe rozróżniają zastosowanie niskotemperaturowe 35°C i zastosowanie o średniej temperaturze 55°C przy ocenie pomp ciepła.</p></article>
        <article class="rk-pipe-source-card"><a href="https://www.gov.uk/government/publications/detailed-analysis-of-data-from-heat-pumps-installed-via-the-renewable-heat-premium-payment-scheme-rhpp" target="_blank" rel="nofollow noopener noreferrer">GOV.UK — analiza danych rzeczywistych instalacji pomp ciepła</a><p>Oficjalna publikacja opisująca wpływ projektu, emiterów, temperatury zasilania i zachowania użytkowników na rzeczywisty wynik sezonowy instalacji.</p></article>
      </div>
      <div class="rk-pipe-responsibility"><p><strong>Zakres poradnika i kalkulatora:</strong> narzędzia pokazują zależności ekonomiczne i porządkują decyzję na podstawie danych użytkownika. Nie wyznaczają projektowego obciążenia cieplnego, mocy podłogi, wielkości grzejników, charakterystyki konkretnej pompy ciepła, przepływów, spadków ciśnienia ani nastaw. Koszty startowe są przykładem, nie cennikiem na 2026 rok.</p></div>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-pipe-faq">
      <span class="rk-pipe-eyebrow">Pytania inwestorów i wykonawców</span>
      <h2 class="rk-pipe-section-title">FAQ — ogrzewanie podłogowe czy grzejniki?</h2>
      <div class="rk-pipe-faq">
        <details><summary>Czy ogrzewanie podłogowe zawsze zużywa mniej energii niż grzejniki?</summary><div class="rk-pipe-faq-answer"><p>Nie. Dla tej samej temperatury pomieszczeń budynek potrzebuje podobnej ilości ciepła użytkowego niezależnie od odbiornika. Różnice w energii kupionej wynikają przede wszystkim ze sprawności źródła przy wymaganej temperaturze wody, regulacji, strat dystrybucji i sposobu eksploatacji. Dlatego nie należy przyjmować jednego procentu oszczędności dla wszystkich domów.</p></div></details>

        <details><summary>Czy grzejnik zaczyna efektywnie grzać dopiero przy 55°C?</summary><div class="rk-pipe-faq-answer"><p>Nie. Grzejnik oddaje ciepło, gdy jego średnia temperatura jest wyższa od temperatury pomieszczenia. Przy niższych parametrach jego moc maleje, dlatego trzeba sprawdzić korektę mocy danego modelu. Odpowiednio większy grzejnik może pokryć obciążenie również przy 45/35°C, a czasem przy jeszcze niższych parametrach.</p></div></details>

        <details><summary>Czy każda podłogówka pracuje przy 35/30°C?</summary><div class="rk-pipe-faq-answer"><p>Nie. To popularny scenariusz projektowy, ale wymagana temperatura zależy od strat pomieszczenia, powierzchni czynnej, rozstawu rur, konstrukcji systemu, oporu okładziny i granicznej temperatury powierzchni. Dobrze izolowany dom może potrzebować mniej, a trudne pomieszczenie więcej.</p></div></details>

        <details><summary>Czy podłogówka jest zawsze lepsza do pompy ciepła?</summary><div class="rk-pipe-faq-answer"><p>Często ułatwia pracę na niskiej temperaturze, co zwykle sprzyja efektywności pompy ciepła. Nie jest jednak jedynym możliwym rozwiązaniem. Prawidłowo dobrane grzejniki niskotemperaturowe również mogą współpracować z pompą, jeżeli pokrywają obciążenie przy założonych parametrach.</p></div></details>

        <details><summary>Czy można porównać koszty tylko na podstawie temperatury 35°C i 55°C?</summary><div class="rk-pipe-faq-answer"><p>Nie. Temperatura nie jest taryfą energii. Do obliczenia kosztu potrzebujesz rocznej energii użytkowej, SCOP albo sprawności sezonowej obu wariantów, cen energii, energii pomocniczej, serwisu oraz kosztu wykonania. W kalkulatorze temperatura opisuje scenariusz, a koszt wynika z wprowadzonej efektywności.</p></div></details>

        <details><summary>Ile droższe jest ogrzewanie podłogowe od grzejników?</summary><div class="rk-pipe-faq-answer"><p>Nie ma jednego wiarygodnego procentu. W nowym domu część warstw podłogi jest wspólna dla obu wariantów, natomiast w remoncie podłogówka może wymagać kosztownych prac dodatkowych. Porównaj projekt, odbiorniki, przewody, rozdzielacze, automatykę, robociznę, prace budowlane i uruchomienie na podstawie rzeczywistych ofert.</p></div></details>

        <details><summary>Po ilu latach zwraca się wyższy koszt podłogówki?</summary><div class="rk-pipe-faq-answer"><p>Okres zwrotu zależy od różnicy kosztu początkowego i rocznych kosztów eksploatacji. Przy małym zapotrzebowaniu lub podobnej sprawności źródła może być długi albo nie wystąpić w analizowanym okresie. Kalkulator pokazuje zwrot tylko wtedy, gdy wynika on z wpisanych danych.</p></div></details>

        <details><summary>Co jest lepsze w remontowanym domu?</summary><div class="rk-pipe-faq-answer"><p>Zależy od wysokości podłogi, zakresu rozbiórki, stanu obecnej instalacji i mocy grzejników przy niższej temperaturze. Czasem właściwa będzie cienka podłogówka lub system suchy, czasem powiększenie grzejników, a czasem układ mieszany. Decyzję trzeba poprzedzić OZC i inwentaryzacją.</p></div></details>

        <details><summary>Czy podłogówka reaguje zbyt wolno?</summary><div class="rk-pipe-faq-answer"><p>Ciężka konstrukcja mokra zwykle reaguje wolniej niż grzejnik, ale zapewnia stabilność temperatury przy ciągłym ogrzewaniu. System suchy może być znacznie szybszy. Ocena zależy od masy podłogi, oporu okładziny, mocy, izolacji i strategii sterowania.</p></div></details>

        <details><summary>Czy podłogówka eliminuje kurz i jest zawsze zdrowsza?</summary><div class="rk-pipe-faq-answer"><p>Nie należy formułować takiego bezwarunkowego wniosku. Podłogówka może ograniczać lokalne, intensywne strugi konwekcyjne przy gorącym grzejniku, ale kurz i jakość powietrza zależą także od wentylacji, filtracji, sprzątania, źródeł cząstek i wilgotności.</p></div></details>

        <details><summary>Czy na podłogówce można stosować drewno, panele i dywany?</summary><div class="rk-pipe-faq-answer"><p>Tak, jeżeli kompletne wykończenie jest dopuszczone do takiego zastosowania, a projekt uwzględnia opór okładziny i podkładu. Grubsze lub bardziej izolacyjne warstwy zmniejszają dostępną moc przy tej samej temperaturze wody, dlatego nie wolno zmieniać posadzki bez sprawdzenia obliczeń.</p></div></details>

        <details><summary>Czy pod stałą zabudową trzeba układać ogrzewanie podłogowe?</summary><div class="rk-pipe-faq-answer"><p>Rozmieszczenie rur powinno wynikać z planu wyposażenia, typu zabudowy i projektu systemu. Najważniejsze jest prawidłowe określenie powierzchni czynnej. Jeżeli po jej odjęciu podłoga nie pokrywa obciążenia pomieszczenia, potrzebna jest zmiana parametrów albo dodatkowy odbiornik.</p></div></details>

        <details><summary>Czy można połączyć podłogówkę i grzejniki w jednym domu?</summary><div class="rk-pipe-faq-answer"><p>Tak. Najłatwiej, gdy oba systemy pokrywają obciążenie przy podobnej temperaturze. Jeżeli grzejniki wymagają wyższego parametru, projekt musi przewidzieć odpowiedni układ hydrauliczny, regulację temperatury, przepływy i sterowanie. Nie wystarczy podłączyć dwóch przypadkowych obiegów.</p></div></details>

        <details><summary>Czy podłogówka potrzebuje większego przepływu niż grzejniki?</summary><div class="rk-pipe-faq-answer"><p>Dla tej samej mocy i mniejszej różnicy temperatur zasilania oraz powrotu wymagany przepływ jest większy. Nie oznacza to automatycznie większego kosztu pracy pompy. Zużycie energii zależy także od spadku ciśnienia, sprawności pompy, średnic i sposobu regulacji.</p></div></details>

        <details><summary>Co wpisać do kalkulatora: zapotrzebowanie w kW czy kWh?</summary><div class="rk-pipe-faq-answer"><p>Wpisz roczną energię użytkową na ogrzewanie w kWh/rok. Moc w kW służy do doboru źródła i odbiorników, ale nie może zostać bezpośrednio pomnożona przez wszystkie godziny sezonu. Nie wpisuj także wskaźnika EP ani całego rachunku obejmującego urządzenia domowe.</p></div></details>

        <details><summary>Jakie dane są potrzebne przed ostatecznym wyborem?</summary><div class="rk-pipe-faq-answer"><p>Potrzebujesz OZC pomieszczeń, planu podłóg i stałej zabudowy, parametrów źródła, oporu okładzin, dostępnej powierzchni czynnej oraz mocy grzejników przy planowanej temperaturze. Następnie porównuje się hydraulikę, automatykę, pełne koszty wykonania i sezonową efektywność.</p></div></details>
      </div>
    </section>

    <section class="rk-pipe-author" id="rk-pipe-author">
      <span class="rk-pipe-eyebrow">E-E-A-T i odpowiedzialność za treść</span>
      <h2 class="rk-pipe-author-title">Autor i weryfikacja merytoryczna</h2>
      <div class="rk-pipe-author-layout">
        <aside class="rk-pipe-author-side">
          <div class="rk-pipe-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych" width="400" height="400" loading="lazy" decoding="async"></div>
          <div class="rk-pipe-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
          <p class="rk-pipe-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
          <div class="rk-pipe-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-pipe-author-main">
          <div class="rk-pipe-author-quote">„Moim zdaniem… największą zaletą podłogówki nie jest magiczne 35°C, lecz możliwość pokrycia obciążenia pomieszczeń przy niskiej temperaturze wody. Jeżeli tę samą pracę wykonają prawidłowo dobrane grzejniki, różnica kosztów może być znacznie mniejsza, niż sugerują proste porównania.”</div>
          <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz materiały edukacyjne dla inwestorów i wykonawców. W analizach oddziela projektową moc w kW od energii rocznej w kWh, kosztu inwestycji i sezonowej efektywności źródła.</p>
          <p>Artykuł został zweryfikowany pod kątem zgodności jednostek, neutralnego porównania odbiorników, jawności założeń kalkulatora oraz rozdzielenia temperatury zasilania od kosztu energii. Narzędzia celowo nie przypisują stałej oszczędności do każdego stopnia obniżenia temperatury.</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 w serwisie Projekt-Ogrzewania.pl</a>.</p>
          <div class="rk-pipe-author-facts">
            <div class="rk-pipe-author-fact"><strong>Praktyka projektowa</strong>OZC pomieszczeń, moc podłogi, dobór pętli, przepływy i opory hydrauliczne</div>
            <div class="rk-pipe-author-fact"><strong>Metoda porównania</strong>Ten sam budynek, ta sama energia użytkowa, jawne koszty i sprawność obu wariantów</div>
            <div class="rk-pipe-author-fact"><strong>Zakres aktualizacji</strong>Treść, kalkulator, analizator i źródła sprawdzone 14 września 2026 r.</div>
          </div>
        </div>
      </div>
    </section>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "sameAs": ["https://www.facebook.com/projektogrzewaniapl", "https://x.com/Projekt_HVAC"]
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "knowsAbout": ["ogrzewanie podłogowe", "instalacje grzejnikowe", "projektowe obciążenie cieplne", "pompy ciepła", "hydraulika instalacji grzewczych", "koszty systemów ogrzewania"],
      "worksFor": [
        { "@id": "https://projekt-ogrzewania.pl/#organization" },
        { "@id": "https://remont.biz.pl/#organization" },
        { "@id": "https://sobir.pl/#organization" }
      ],
      "sameAs": ["https://www.linkedin.com/in/robert-kucharski-38069b48/", "https://www.facebook.com/projektogrzewaniapl", "https://x.com/Projekt_HVAC"]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/12/Zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/12/Zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow.webp",
      "width": 1200,
      "height": 1200,
      "caption": "Ogrzewanie podłogowe czy grzejniki — porównanie"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/" },
        { "@type": "ListItem", "position": 2, "name": "Ogrzewanie podłogowe", "item": { "@id": "https://projekt-ogrzewania.pl/category/ogrzewanie-podlogowe/#webpage" } },
        { "@type": "ListItem", "position": 3, "name": "Ogrzewanie podłogowe czy grzejniki?", "item": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/" }
      ]
    },
    {
      "@type": "CollectionPage",
      "@id": "https://projekt-ogrzewania.pl/category/ogrzewanie-podlogowe/#webpage",
      "url": "https://projekt-ogrzewania.pl/category/ogrzewanie-podlogowe/",
      "name": "Ogrzewanie podłogowe",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#webpage",
      "url": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/",
      "name": "Ogrzewanie podłogowe czy grzejniki? Zalety, koszty i kalkulator porównania",
      "description": "Porównanie ogrzewania podłogowego i grzejników: temperatura zasilania, koszt inwestycji i eksploatacji, komfort, sterowanie oraz opłacalność po 5–20 latach.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#breadcrumb" },
      "primaryImageOfPage": { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#primaryimage" },
      "datePublished": "2024-12-31T17:31:46+00:00",
      "dateModified": "2026-09-14T12:00:00+02:00",
      "inLanguage": "pl-PL",
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#article" }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#article",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#webpage" },
      "headline": "Ogrzewanie podłogowe czy grzejniki? Zalety, koszty i kalkulator porównania",
      "description": "Techniczne i ekonomiczne porównanie wodnego ogrzewania podłogowego z grzejnikami, z kalkulatorem pełnego kosztu, wykresem oraz analizatorem decyzji.",
      "image": { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#primaryimage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "datePublished": "2024-12-31T17:31:46+00:00",
      "dateModified": "2026-09-14T12:00:00+02:00",
      "inLanguage": "pl-PL",
      "about": ["ogrzewanie podłogowe czy grzejniki", "temperatura zasilania", "koszt ogrzewania", "grzejniki niskotemperaturowe", "pompa ciepła", "koszt całkowity systemu grzewczego"],
      "keywords": "ogrzewanie podłogowe czy grzejniki, podłogówka vs grzejniki koszty, podłogówka przy pompie ciepła, grzejniki niskotemperaturowe, kalkulator kosztów ogrzewania",
      "isAccessibleForFree": true,
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#calculator" },
        { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#analyzer" },
        { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#comparison-list" },
        { "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#faq-schema" }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#calculator",
      "name": "Kalkulator kosztów ogrzewania podłogowego i grzejników",
      "url": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#rk-pipe-calculator-section",
      "applicationCategory": "FinanceApplication",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "description": "Kalkulator porównujący energię kupioną, roczne koszty, koszt inwestycji i koszt całkowity podłogówki oraz grzejników w okresie od 5 do 20 lat."
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#analyzer",
      "name": "Analizator wyboru: podłogówka, grzejniki czy układ mieszany",
      "url": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#rk-pipe-analyzer-section",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "description": "Narzędzie edukacyjne porządkujące argumenty za podłogówką, grzejnikami i systemem mieszanym na podstawie warunków budynku."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#howto",
      "name": "Jak uczciwie porównać ogrzewanie podłogowe z grzejnikami",
      "description": "Procedura porównania mocy, temperatur, sezonowej sprawności źródła, kosztu inwestycji i kosztów eksploatacji obu systemów.",
      "totalTime": "PT25M",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Ustal wspólne warunki", "text": "Przyjmij ten sam budynek, temperaturę wewnętrzną i obciążenie cieplne pomieszczeń." },
        { "@type": "HowToStep", "position": 2, "name": "Sprawdź moc odbiorników", "text": "Potwierdź moc podłogi i grzejników przy planowanej temperaturze zasilania i powrotu." },
        { "@type": "HowToStep", "position": 3, "name": "Ustal energię roczną", "text": "Wprowadź roczne zapotrzebowanie na energię użytkową do ogrzewania, a nie projektową moc źródła." },
        { "@type": "HowToStep", "position": 4, "name": "Porównaj sezonową efektywność", "text": "Wpisz SCOP albo sprawność sezonową odpowiednią dla obu scenariuszy temperaturowych." },
        { "@type": "HowToStep", "position": 5, "name": "Zsumuj inwestycję", "text": "Uwzględnij projekt, odbiorniki, instalację, robociznę, prace budowlane, automatykę i uruchomienie." },
        { "@type": "HowToStep", "position": 6, "name": "Dodaj koszty roczne", "text": "Dodaj energię kupioną, energię pomocniczą, serwis oraz koszty stałe." },
        { "@type": "HowToStep", "position": 7, "name": "Sprawdź horyzont i wrażliwość", "text": "Porównaj koszt całkowity po 5, 10, 15 i 20 latach oraz scenariusze zmian ceny energii." }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#comparison-list",
      "name": "Obszary porównania ogrzewania podłogowego i grzejników",
      "numberOfItems": 8,
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Temperatura wody" },
        { "@type": "ListItem", "position": 2, "name": "Współpraca z pompą ciepła" },
        { "@type": "ListItem", "position": 3, "name": "Koszt wykonania" },
        { "@type": "ListItem", "position": 4, "name": "Komfort cieplny" },
        { "@type": "ListItem", "position": 5, "name": "Szybkość reakcji" },
        { "@type": "ListItem", "position": 6, "name": "Aranżacja pomieszczeń" },
        { "@type": "ListItem", "position": 7, "name": "Serwis i dostępność" },
        { "@type": "ListItem", "position": 8, "name": "Zakres modernizacji" }
      ]
    },
    {
      "@type": "Service",
      "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#service",
      "name": "Indywidualny projekt instalacji ogrzewania podłogowego",
      "url": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/",
      "provider": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "areaServed": { "@type": "Country", "name": "Polska" },
      "serviceType": "Projekt ogrzewania podłogowego"
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/#faq-schema",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Czy ogrzewanie podłogowe zawsze zużywa mniej energii niż grzejniki?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Dla tej samej temperatury pomieszczeń budynek potrzebuje podobnej ilości ciepła użytkowego niezależnie od odbiornika. Różnice w energii kupionej wynikają przede wszystkim ze sprawności źródła przy wymaganej temperaturze wody, regulacji, strat dystrybucji i sposobu eksploatacji." }
        },
        {
          "@type": "Question",
          "name": "Czy grzejnik zaczyna efektywnie grzać dopiero przy 55°C?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Grzejnik oddaje ciepło, gdy jego średnia temperatura jest wyższa od temperatury pomieszczenia. Przy niższych parametrach jego moc maleje, dlatego trzeba sprawdzić korektę mocy konkretnego modelu." }
        },
        {
          "@type": "Question",
          "name": "Czy każda podłogówka pracuje przy 35/30°C?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Wymagana temperatura zależy od strat pomieszczenia, powierzchni czynnej, rozstawu rur, konstrukcji systemu, oporu okładziny i granicznej temperatury powierzchni." }
        },
        {
          "@type": "Question",
          "name": "Czy podłogówka jest zawsze lepsza do pompy ciepła?",
          "acceptedAnswer": { "@type": "Answer", "text": "Często ułatwia pracę na niskiej temperaturze, co zwykle sprzyja efektywności pompy ciepła. Prawidłowo dobrane grzejniki niskotemperaturowe również mogą współpracować z pompą, jeżeli pokrywają obciążenie przy założonych parametrach." }
        },
        {
          "@type": "Question",
          "name": "Czy można porównać koszty tylko na podstawie temperatury 35°C i 55°C?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie. Do obliczenia kosztu potrzebujesz rocznej energii użytkowej, SCOP albo sprawności sezonowej obu wariantów, cen energii, energii pomocniczej, serwisu oraz kosztu wykonania." }
        },
        {
          "@type": "Question",
          "name": "Ile droższe jest ogrzewanie podłogowe od grzejników?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie ma jednego wiarygodnego procentu. Wynik zależy od tego, czy jest to nowy dom czy remont, zakresu materiałów, automatyki, robocizny i prac budowlanych." }
        },
        {
          "@type": "Question",
          "name": "Po ilu latach zwraca się wyższy koszt podłogówki?",
          "acceptedAnswer": { "@type": "Answer", "text": "Okres zwrotu zależy od różnicy kosztu początkowego i rocznych kosztów eksploatacji. Może być długi albo nie wystąpić w analizowanym okresie." }
        },
        {
          "@type": "Question",
          "name": "Co jest lepsze w remontowanym domu?",
          "acceptedAnswer": { "@type": "Answer", "text": "Zależy od wysokości podłogi, zakresu rozbiórki, stanu obecnej instalacji i mocy grzejników przy niższej temperaturze. Możliwa jest podłogówka, powiększenie grzejników albo układ mieszany." }
        },
        {
          "@type": "Question",
          "name": "Czy podłogówka reaguje zbyt wolno?",
          "acceptedAnswer": { "@type": "Answer", "text": "Ciężka konstrukcja mokra zwykle reaguje wolniej niż grzejnik, ale zapewnia stabilność temperatury. System suchy może być szybszy. Ocena zależy od konstrukcji, mocy i sterowania." }
        },
        {
          "@type": "Question",
          "name": "Czy podłogówka eliminuje kurz i jest zawsze zdrowsza?",
          "acceptedAnswer": { "@type": "Answer", "text": "Nie należy formułować takiego bezwarunkowego wniosku. Jakość powietrza zależy także od wentylacji, filtracji, sprzątania, źródeł cząstek i wilgotności." }
        },
        {
          "@type": "Question",
          "name": "Czy na podłogówce można stosować drewno, panele i dywany?",
          "acceptedAnswer": { "@type": "Answer", "text": "Tak, jeżeli kompletne wykończenie jest dopuszczone do takiego zastosowania, a projekt uwzględnia opór okładziny i podkładu." }
        },
        {
          "@type": "Question",
          "name": "Czy pod stałą zabudową trzeba układać ogrzewanie podłogowe?",
          "acceptedAnswer": { "@type": "Answer", "text": "Rozmieszczenie rur powinno wynikać z planu wyposażenia, typu zabudowy i projektu. Najważniejsze jest prawidłowe określenie powierzchni czynnej." }
        },
        {
          "@type": "Question",
          "name": "Czy można połączyć podłogówkę i grzejniki w jednym domu?",
          "acceptedAnswer": { "@type": "Answer", "text": "Tak. Jeżeli systemy wymagają różnych temperatur, projekt musi przewidzieć odpowiedni układ hydrauliczny, regulację temperatury, przepływy i sterowanie." }
        },
        {
          "@type": "Question",
          "name": "Czy podłogówka potrzebuje większego przepływu niż grzejniki?",
          "acceptedAnswer": { "@type": "Answer", "text": "Dla tej samej mocy i mniejszej różnicy temperatur zasilania oraz powrotu wymagany przepływ jest większy. Zużycie energii pompy zależy jednak także od spadku ciśnienia, sprawności pompy i regulacji." }
        },
        {
          "@type": "Question",
          "name": "Co wpisać do kalkulatora: zapotrzebowanie w kW czy kWh?",
          "acceptedAnswer": { "@type": "Answer", "text": "Wpisz roczną energię użytkową na ogrzewanie w kWh na rok. Moc w kW służy do doboru źródła i odbiorników, ale nie jest rocznym zużyciem energii." }
        },
        {
          "@type": "Question",
          "name": "Jakie dane są potrzebne przed ostatecznym wyborem?",
          "acceptedAnswer": { "@type": "Answer", "text": "Potrzebujesz OZC pomieszczeń, planu podłóg i zabudowy, parametrów źródła, oporu okładzin, powierzchni czynnej, mocy grzejników przy planowanej temperaturze oraz porównania hydrauliki i kosztów." }
        }
      ]
    }
  ]
}
</script>

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

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

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

  function fieldNumber(id) {
    var field = element(id);
    var raw;
    var parsed;
    if (!field) {
      return 0;
    }
    raw = String(field.value).replace(",", ".");
    parsed = parseFloat(raw);
    if (!isFinite(parsed)) {
      return 0;
    }
    return parsed;
  }

  function fieldValue(id) {
    var field = element(id);
    if (!field) {
      return "unknown";
    }
    return field.value;
  }

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

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

  function formatCurrency(value) {
    return formatNumber(Math.round(value), 0) + " zł";
  }

  function formatEnergy(value) {
    return formatNumber(Math.round(value), 0) + " kWh/rok";
  }

  function sumFields(ids) {
    var sum = 0;
    ids.forEach(function (id) {
      sum += fieldNumber(id);
    });
    return sum;
  }

  function sourceName(source) {
    if (source === "gas") {
      return "kotła gazowego";
    }
    if (source === "electric") {
      return "ogrzewania elektrycznego";
    }
    return "pompy ciepła";
  }

  function updateSourceLabels(applyPreset) {
    var source = fieldValue("rk-compare-source");
    var floorLabel = "Podłogówka — SCOP";
    var radLabel = "Grzejniki — SCOP";
    var priceLabel = "Cena energii elektrycznej [zł/kWh]";

    if (source === "gas") {
      floorLabel = "Podłogówka — sprawność sezonowa η";
      radLabel = "Grzejniki — sprawność sezonowa η";
      priceLabel = "Cena energii w paliwie gazowym [zł/kWh]";
      if (applyPreset) {
        element("rk-compare-floor-eff").value = "0.96";
        element("rk-compare-rad-eff").value = "0.93";
        element("rk-compare-price").value = "0.35";
      }
    } else {
      if (source === "electric") {
        floorLabel = "Podłogówka — współczynnik konwersji";
        radLabel = "Grzejniki — współczynnik konwersji";
        if (applyPreset) {
          element("rk-compare-floor-eff").value = "1.00";
          element("rk-compare-rad-eff").value = "1.00";
          element("rk-compare-price").value = "1.10";
        }
      } else {
        if (applyPreset) {
          element("rk-compare-floor-eff").value = "4.20";
          element("rk-compare-rad-eff").value = "3.20";
          element("rk-compare-price").value = "1.10";
        }
      }
    }

    setText("rk-compare-floor-eff-label", floorLabel);
    setText("rk-compare-rad-eff-label", radLabel);
    setText("rk-compare-price-label", priceLabel);
  }

  var floorInvestmentIds = [
    "rk-compare-floor-design",
    "rk-compare-floor-material",
    "rk-compare-floor-labour",
    "rk-compare-floor-building",
    "rk-compare-floor-controls"
  ];

  var radInvestmentIds = [
    "rk-compare-rad-design",
    "rk-compare-rad-material",
    "rk-compare-rad-labour",
    "rk-compare-rad-building",
    "rk-compare-rad-controls"
  ];

  function createSvgElement(name, attributes, textValue) {
    var node = document.createElementNS("http://www.w3.org/2000/svg", name);
    Object.keys(attributes).forEach(function (key) {
      node.setAttribute(key, attributes[key]);
    });
    if (typeof textValue === "string") {
      node.textContent = textValue;
    }
    return node;
  }

  function signedCurrency(value) {
    if (Math.abs(value) < 0.5) {
      return "0 zł";
    }
    if (value > 0) {
      return "+" + formatCurrency(value);
    }
    return "−" + formatCurrency(Math.abs(value));
  }

  function renderCostChart(floorInvestment, radInvestment, floorAnnual, radAnnual) {
    var grid = element("rk-compare-chart-grid");
    var lines = element("rk-compare-chart-lines");
    var labels = element("rk-compare-chart-labels");
    var years = [0, 5, 10, 15, 20];
    var width = 800;
    var height = 360;
    var left = 78;
    var right = 28;
    var top = 22;
    var bottom = 58;
    var chartWidth = width - left - right;
    var chartHeight = height - top - bottom;
    var maxValue = 0;
    var maxY;
    var floorPoints = [];
    var radPoints = [];
    var tick;

    years.forEach(function (year) {
      var floorValue = floorInvestment + floorAnnual * year;
      var radValue = radInvestment + radAnnual * year;
      if (floorValue > maxValue) {
        maxValue = floorValue;
      }
      if (radValue > maxValue) {
        maxValue = radValue;
      }
    });

    maxY = Math.ceil(maxValue / 20000) * 20000;
    if (maxY < 20000) {
      maxY = 20000;
    }

    grid.textContent = "";
    lines.textContent = "";
    labels.textContent = "";

    for (tick = 0; tick <= 4; tick += 1) {
      var y = top + chartHeight - chartHeight * tick / 4;
      var tickValue = maxY * tick / 4;
      grid.appendChild(createSvgElement("line", { x1: left, y1: y, x2: width - right, y2: y, stroke: "#d9e6eb", "stroke-width": "1" }));
      labels.appendChild(createSvgElement("text", { x: left - 10, y: y + 4, "text-anchor": "end", fill: "#627b8b", "font-size": "12", "font-family": "Arial" }, formatNumber(tickValue / 1000, 0) + " tys."));
    }

    years.forEach(function (year, index) {
      var x = left + chartWidth * year / 20;
      var floorValue = floorInvestment + floorAnnual * year;
      var radValue = radInvestment + radAnnual * year;
      var floorY = top + chartHeight - floorValue / maxY * chartHeight;
      var radY = top + chartHeight - radValue / maxY * chartHeight;
      floorPoints.push(x + "," + floorY);
      radPoints.push(x + "," + radY);
      grid.appendChild(createSvgElement("line", { x1: x, y1: top, x2: x, y2: top + chartHeight, stroke: "#edf3f5", "stroke-width": "1" }));
      labels.appendChild(createSvgElement("text", { x: x, y: height - 28, "text-anchor": "middle", fill: "#627b8b", "font-size": "12", "font-family": "Arial" }, String(year)));
      lines.appendChild(createSvgElement("circle", { cx: x, cy: floorY, r: "4", fill: "#078fb3", stroke: "#ffffff", "stroke-width": "2" }));
      lines.appendChild(createSvgElement("circle", { cx: x, cy: radY, r: "4", fill: "#ff6846", stroke: "#ffffff", "stroke-width": "2" }));
      setText("rk-chart-floor-" + year, formatCurrency(floorValue));
      setText("rk-chart-rad-" + year, formatCurrency(radValue));
      setText("rk-chart-diff-" + year, signedCurrency(floorValue - radValue));
    });

    lines.insertBefore(createSvgElement("polyline", { points: floorPoints.join(" "), fill: "none", stroke: "#078fb3", "stroke-width": "5", "stroke-linecap": "round", "stroke-linejoin": "round" }), lines.firstChild);
    lines.insertBefore(createSvgElement("polyline", { points: radPoints.join(" "), fill: "none", stroke: "#ff6846", "stroke-width": "5", "stroke-linecap": "round", "stroke-linejoin": "round" }), lines.firstChild);
    labels.appendChild(createSvgElement("text", { x: width / 2, y: height - 4, "text-anchor": "middle", fill: "#3c5668", "font-size": "12", "font-weight": "700", "font-family": "Arial" }, "lata od wykonania instalacji"));
    labels.appendChild(createSvgElement("text", { x: "18", y: height / 2, transform: "rotate(-90 18 " + height / 2 + ")", "text-anchor": "middle", fill: "#3c5668", "font-size": "12", "font-weight": "700", "font-family": "Arial" }, "koszt skumulowany [zł]"));
  }

  function calculateComparison() {
    var useful = fieldNumber("rk-compare-useful");
    var source = fieldValue("rk-compare-source");
    var price = fieldNumber("rk-compare-price");
    var auxPrice = fieldNumber("rk-compare-aux-price");
    var scenario = fieldNumber("rk-compare-scenario");
    var horizon = fieldNumber("rk-compare-horizon");
    var floorEff = fieldNumber("rk-compare-floor-eff");
    var radEff = fieldNumber("rk-compare-rad-eff");
    var floorSupply = fieldNumber("rk-compare-floor-supply");
    var floorReturn = fieldNumber("rk-compare-floor-return");
    var radSupply = fieldNumber("rk-compare-rad-supply");
    var radReturn = fieldNumber("rk-compare-rad-return");
    var result = element("rk-compare-result");
    var temperatureNote = element("rk-compare-temperature-note");
    var floorEnergy;
    var radEnergy;
    var floorAnnual;
    var radAnnual;
    var floorInvestment;
    var radInvestment;
    var floorTco;
    var radTco;
    var difference;
    var investmentDifference;
    var annualSaving;
    var payback;
    var scenarioName = "ceny bazowej";

    result.classList.remove("is-stop");
    result.classList.remove("is-good");

    if (useful <= 0) {
      result.classList.add("is-stop");
      setText("rk-compare-status", "Sprawdź roczną energię użytkową");
      setText("rk-compare-intro", "Wartość energii musi być większa od zera i dotyczyć ogrzewania pomieszczeń.");
      return;
    }
    if (floorEff <= 0) {
      result.classList.add("is-stop");
      setText("rk-compare-status", "Sprawdź sprawność wariantu podłogowego");
      setText("rk-compare-intro", "SCOP albo sprawność sezonowa musi być większa od zera.");
      return;
    }
    if (radEff <= 0) {
      result.classList.add("is-stop");
      setText("rk-compare-status", "Sprawdź sprawność wariantu grzejnikowego");
      setText("rk-compare-intro", "SCOP albo sprawność sezonowa musi być większa od zera.");
      return;
    }
    if (floorSupply <= floorReturn) {
      result.classList.add("is-stop");
      setText("rk-compare-status", "Popraw temperatury podłogówki");
      setText("rk-compare-intro", "W scenariuszu grzewczym temperatura zasilania powinna być wyższa od temperatury powrotu.");
      return;
    }
    if (radSupply <= radReturn) {
      result.classList.add("is-stop");
      setText("rk-compare-status", "Popraw temperatury grzejników");
      setText("rk-compare-intro", "W scenariuszu grzewczym temperatura zasilania powinna być wyższa od temperatury powrotu.");
      return;
    }

    if (scenario < 1) {
      scenarioName = "ceny niższej o 20%";
    } else {
      if (scenario > 1) {
        scenarioName = "ceny wyższej o 20%";
      }
    }

    price = price * scenario;
    auxPrice = auxPrice * scenario;
    floorEnergy = useful / floorEff;
    radEnergy = useful / radEff;
    floorAnnual = floorEnergy * price + fieldNumber("rk-compare-floor-service") + fieldNumber("rk-compare-floor-aux") * auxPrice;
    radAnnual = radEnergy * price + fieldNumber("rk-compare-rad-service") + fieldNumber("rk-compare-rad-aux") * auxPrice;
    floorInvestment = sumFields(floorInvestmentIds);
    radInvestment = sumFields(radInvestmentIds);
    floorTco = floorInvestment + floorAnnual * horizon;
    radTco = radInvestment + radAnnual * horizon;
    difference = floorTco - radTco;
    investmentDifference = floorInvestment - radInvestment;
    annualSaving = radAnnual - floorAnnual;

    result.classList.add("is-good");
    setText("rk-compare-status", "Wynik dla " + formatNumber(horizon, 0) + " lat i " + scenarioName);
    setText("rk-compare-intro", "Oba warianty dostarczają do budynku " + formatNumber(useful, 0) + " kWh ciepła użytkowego rocznie przy wspólnym źródle: " + sourceName(source) + ".");
    setText("rk-result-floor-energy", formatEnergy(floorEnergy));
    setText("rk-result-rad-energy", formatEnergy(radEnergy));
    setText("rk-result-floor-annual", formatCurrency(floorAnnual));
    setText("rk-result-rad-annual", formatCurrency(radAnnual));
    setText("rk-result-floor-invest", formatCurrency(floorInvestment));
    setText("rk-result-rad-invest", formatCurrency(radInvestment));
    setText("rk-result-floor-tco", formatCurrency(floorTco));
    setText("rk-result-rad-tco", formatCurrency(radTco));

    if (Math.abs(difference) < 1) {
      setText("rk-result-verdict", "W podanym okresie koszty całkowite obu wariantów są praktycznie równe.");
    } else {
      if (difference < 0) {
        setText("rk-result-verdict", "W podanym okresie podłogówka jest tańsza łącznie o " + formatCurrency(Math.abs(difference)) + ".");
      } else {
        setText("rk-result-verdict", "W podanym okresie grzejniki są tańsze łącznie o " + formatCurrency(difference) + ".");
      }
    }

    if (investmentDifference > 0) {
      if (annualSaving > 0) {
        payback = investmentDifference / annualSaving;
        if (payback <= 100) {
          setText("rk-result-payback", "Wyższy koszt początkowy podłogówki zwraca się po około " + formatNumber(payback, 1) + " roku.");
        } else {
          setText("rk-result-payback", "Matematyczny zwrot wyższej inwestycji przekracza 100 lat przy podanych założeniach.");
        }
      } else {
        setText("rk-result-payback", "Wyższa inwestycja w podłogówkę nie zwraca się, ponieważ jej koszt roczny nie jest niższy.");
      }
    } else {
      if (annualSaving >= 0) {
        setText("rk-result-payback", "Podłogówka nie ma wyższego kosztu początkowego i jednocześnie nie ma wyższego kosztu rocznego w tym scenariuszu.");
      } else {
        setText("rk-result-payback", "Podłogówka jest tańsza na początku, ale ma wyższy koszt roczny; wykres pokazuje możliwy moment utraty tej przewagi.");
      }
    }

    if (source === "electric") {
      temperatureNote.classList.add("rk-pipe-note-good");
      temperatureNote.classList.remove("rk-pipe-note-bad");
      temperatureNote.firstElementChild.innerHTML = "<strong>Wynik dla ogrzewania oporowego:</strong> przy jednakowym współczynniku konwersji sama zmiana temperatury zasilania nie tworzy oszczędności podobnej do efektu SCOP pompy ciepła.";
    } else {
      temperatureNote.classList.remove("rk-pipe-note-good");
      temperatureNote.classList.remove("rk-pipe-note-bad");
      temperatureNote.firstElementChild.innerHTML = "<strong>Kontrola założenia:</strong> wpisane " + formatNumber(floorSupply, 0) + "/" + formatNumber(floorReturn, 0) + "°C oraz " + formatNumber(radSupply, 0) + "/" + formatNumber(radReturn, 0) + "°C opisują scenariusze. Kalkulator nie sprawdza mocy odbiorników przy tych temperaturach.";
    }

    setText("rk-result-assumptions", "Model przyjmuje stałą roczną energię użytkową i stałe ceny w obrębie scenariusza. Nie uwzględnia finansowania, inflacji, dyskonta, wymiany urządzeń ani przygotowania ciepłej wody użytkowej. SCOP lub sprawność zostały podane przez użytkownika.");
    renderCostChart(floorInvestment, radInvestment, floorAnnual, radAnnual);
  }

  var comparisonDefaults = {
    "rk-compare-useful": "12000",
    "rk-compare-source": "heatpump",
    "rk-compare-price": "1.10",
    "rk-compare-aux-price": "1.10",
    "rk-compare-horizon": "15",
    "rk-compare-scenario": "1",
    "rk-compare-floor-supply": "35",
    "rk-compare-floor-return": "30",
    "rk-compare-floor-eff": "4.20",
    "rk-compare-rad-supply": "55",
    "rk-compare-rad-return": "45",
    "rk-compare-rad-eff": "3.20",
    "rk-compare-floor-design": "1800",
    "rk-compare-rad-design": "1200",
    "rk-compare-floor-material": "22000",
    "rk-compare-rad-material": "16000",
    "rk-compare-floor-labour": "11000",
    "rk-compare-rad-labour": "9000",
    "rk-compare-floor-building": "5000",
    "rk-compare-rad-building": "2500",
    "rk-compare-floor-controls": "2500",
    "rk-compare-rad-controls": "2200",
    "rk-compare-floor-service": "500",
    "rk-compare-rad-service": "450",
    "rk-compare-floor-aux": "180",
    "rk-compare-rad-aux": "120"
  };

  function resetComparison() {
    Object.keys(comparisonDefaults).forEach(function (id) {
      var target = element(id);
      if (target) {
        target.value = comparisonDefaults[id];
      }
    });
    updateSourceLabels(false);
    calculateComparison();
  }

  element("rk-compare-source").addEventListener("change", function () {
    updateSourceLabels(true);
    calculateComparison();
  });
  element("rk-compare-run").addEventListener("click", calculateComparison);
  element("rk-compare-reset").addEventListener("click", resetComparison);

  Array.prototype.forEach.call(guide.querySelectorAll("#rk-pipe-calculator input, #rk-pipe-calculator select"), function (field) {
    if (field.id !== "rk-compare-source") {
      field.addEventListener("change", calculateComparison);
    }
  });

  function renderDecisionList(id, items, emptyText) {
    var list = element(id);
    list.textContent = "";
    if (items.length === 0) {
      var emptyItem = document.createElement("li");
      emptyItem.textContent = emptyText;
      list.appendChild(emptyItem);
      return;
    }
    items.forEach(function (itemText) {
      var item = document.createElement("li");
      item.textContent = itemText;
      list.appendChild(item);
    });
  }

  function analyzeDecision() {
    var floor = [];
    var radiator = [];
    var mixed = [];
    var missing = [];
    var building = fieldValue("rk-decision-building");
    var height = fieldValue("rk-decision-height");
    var ozc = fieldValue("rk-decision-ozc");
    var floorPower = fieldValue("rk-decision-floor-power");
    var source = fieldValue("rk-decision-source");
    var surface = fieldValue("rk-decision-surface");
    var use = fieldValue("rk-decision-use");
    var space = fieldValue("rk-decision-space");
    var radPower = fieldValue("rk-decision-rad-power");
    var zones = fieldValue("rk-decision-zones");
    var result = element("rk-decision-result");

    if (building === "new") {
      floor.push("Nowy budynek pozwala skoordynować wysokości, izolację, dylatacje i rozdzielacze przed wykonaniem podłóg.");
    } else {
      if (building === "retrofit") {
        radiator.push("Remont całego istniejącego domu może przemawiać za wykorzystaniem lub wymianą dostępnych odbiorników bez przebudowy podłogi.");
      } else {
        if (building === "partial") {
          mixed.push("Remont częściowy tworzy naturalny powód do rozważenia różnych odbiorników w starej i nowej części.");
        } else {
          missing.push("Ustal, czy decyzja dotyczy nowego domu, pełnego remontu czy jedynie części budynku.");
        }
      }
    }

    if (height === "yes") {
      floor.push("Warstwy podłogi można zaprojektować bez kolizji z drzwiami, schodami i poziomami pomieszczeń.");
    } else {
      if (height === "limited") {
        mixed.push("Ograniczona wysokość wymaga porównania systemu suchego, rozwiązania cienkowarstwowego i grzejników.");
      } else {
        if (height === "no") {
          radiator.push("Brak możliwości ingerencji w podłogę wyraźnie wzmacnia wariant grzejnikowy.");
        } else {
          missing.push("Sprawdź dostępną wysokość oraz zakres dopuszczalnej przebudowy podłogi.");
        }
      }
    }

    if (ozc === "known") {
      floor.push("Dostępne OZC pozwala sprawdzić moc podłogi pomieszczenie po pomieszczeniu.");
      radiator.push("Dostępne OZC pozwala dobrać grzejniki przy obniżonych parametrach bez zgadywania.");
    } else {
      if (ozc === "estimate") {
        missing.push("Wskaźnik W/m² lub wynik całego domu nie zastępuje obciążenia poszczególnych pomieszczeń.");
      } else {
        missing.push("Wykonaj OZC pomieszczenie po pomieszczeniu przed wyborem wielkości odbiorników.");
      }
    }

    if (floorPower === "yes") {
      floor.push("Moc podłogi przy planowanych parametrach została potwierdzona obliczeniowo.");
    } else {
      if (floorPower === "borderline") {
        mixed.push("Graniczna moc podłogi przemawia za dodatkowym odbiornikiem w najtrudniejszych pomieszczeniach albo zmianą założeń.");
      } else {
        if (floorPower === "no") {
          radiator.push("Podłoga nie pokrywa obciążenia przy przyjętych warunkach, więc potrzebny jest inny lub dodatkowy odbiornik.");
          mixed.push("Brakująca moc może uzasadnić lokalne uzupełnienie systemu.");
        } else {
          missing.push("Sprawdź moc podłogi przy rzeczywistym rozstawie, okładzinie i temperaturze powierzchni.");
        }
      }
    }

    if (source === "heatpump") {
      floor.push("Pompa ciepła premiuje odbiornik zdolny pokryć obciążenie przy niskiej temperaturze wody.");
      radiator.push("Grzejniki pozostają możliwe, jeżeli ich niskotemperaturowa moc zostanie potwierdzona.");
    } else {
      if (source === "condensing") {
        floor.push("Niska temperatura powrotu może sprzyjać pracy kondensacyjnej kotła.");
        radiator.push("Prawidłowo dobrane grzejniki mogą również pracować z parametrami wspierającymi kondensację.");
      } else {
        if (source === "unknown") {
          missing.push("Ustal źródło ciepła i zakres jego efektywnej pracy temperaturowej.");
        }
      }
    }

    if (surface === "favorable") {
      floor.push("Niski opór wykończenia i wystarczająca powierzchnia czynna wspierają wydajność podłogi.");
    } else {
      if (surface === "limited") {
        radiator.push("Wysoki opór podłogi albo mała powierzchnia czynna ogranicza moc systemu płaszczyznowego.");
      } else {
        if (surface === "mixed") {
          mixed.push("Różne okładziny i powierzchnie czynne przemawiają za analizą pomieszczeń, a nie jedną decyzją dla całego domu.");
        } else {
          missing.push("Ustal opór kompletu okładziny i podkładu oraz powierzchnię wyłączoną przez stałą zabudowę.");
        }
      }
    }

    if (use === "steady") {
      floor.push("Stała temperatura przez większość doby dobrze wykorzystuje stabilny charakter ogrzewanej podłogi.");
    } else {
      if (use === "intermittent") {
        radiator.push("Częste wyłączenia i pomieszczenia okresowe mogą korzystać z szybszej reakcji grzejników.");
      } else {
        if (use === "mixed") {
          mixed.push("Różny harmonogram pomieszczeń przemawia za zróżnicowaniem odbiorników albo strategii regulacji.");
        } else {
          missing.push("Określ, czy budynek ma być ogrzewany stabilnie, czy okresowo.");
        }
      }
    }

    if (space === "important") {
      floor.push("Wolne ściany i brak widocznych odbiorników mają dla użytkownika dużą wartość.");
    }

    if (radPower === "yes") {
      radiator.push("Grzejniki pokrywają obciążenie przy niskiej temperaturze, więc mogą współpracować z efektywnym źródłem bez przebudowy podłóg.");
    } else {
      if (radPower === "can-upsize") {
        radiator.push("Możliwe jest rozsądne powiększenie grzejników do wymaganej mocy niskotemperaturowej.");
      } else {
        if (radPower === "no") {
          floor.push("Grzejniki nie pokrywają obciążenia przy niskim parametrze, a ich powiększenie jest utrudnione.");
          mixed.push("W trudnych strefach warto sprawdzić podłogę oraz lokalny dodatkowy odbiornik.");
        } else {
          missing.push("Przelicz moc obecnych lub planowanych grzejników przy docelowej temperaturze wody.");
        }
      }
    }

    if (zones === "different") {
      mixed.push("Odmienne potrzeby łazienek, pokoi okresowych i stref z małą powierzchnią czynną uzasadniają analizę układu mieszanego.");
    } else {
      if (zones === "unknown") {
        missing.push("Sprawdź, czy wszystkie pomieszczenia rzeczywiście mają podobne warunki użytkowania i dostępne powierzchnie.");
      }
    }

    result.classList.remove("is-good");
    result.classList.remove("is-stop");

    if (missing.length >= 4) {
      result.classList.add("is-stop");
      setText("rk-decision-status", "Najpierw uzupełnij dane krytyczne");
      setText("rk-decision-intro", "Za dużo kluczowych warunków pozostaje nieznanych, aby odpowiedzialnie wskazać kierunek.");
    } else {
      result.classList.add("is-good");
      if (mixed.length >= 3) {
        setText("rk-decision-status", "Układ mieszany wymaga poważnego sprawdzenia");
        setText("rk-decision-intro", "Odpowiedzi pokazują wyraźnie różne potrzeby pomieszczeń albo ograniczenia jednego systemu.");
      } else {
        if (floor.length >= radiator.length + 2) {
          setText("rk-decision-status", "Więcej przesłanek za ogrzewaniem podłogowym");
          setText("rk-decision-intro", "To nie jest automatyczna rekomendacja. Potwierdź moc podłogi, hydraulikę i pełny koszt w projekcie.");
        } else {
          if (radiator.length >= floor.length + 2) {
            setText("rk-decision-status", "Więcej przesłanek za instalacją grzejnikową");
            setText("rk-decision-intro", "Przed decyzją potwierdź moc grzejników przy docelowej temperaturze oraz sprawność źródła.");
          } else {
            setText("rk-decision-status", "Brak jednoznacznego zwycięzcy");
            setText("rk-decision-intro", "Oba warianty mają uzasadnione argumenty. Porównaj ich moc, temperatury i koszt całkowity na wspólnych danych.");
          }
        }
      }
    }

    renderDecisionList("rk-decision-floor-list", floor, "Brak wyraźnej przesłanki na podstawie odpowiedzi.");
    renderDecisionList("rk-decision-rad-list", radiator, "Brak wyraźnej przesłanki na podstawie odpowiedzi.");
    renderDecisionList("rk-decision-mixed-list", mixed, "Brak wyraźnej przesłanki na podstawie odpowiedzi.");
    renderDecisionList("rk-decision-missing-list", missing, "Nie wskazano istotnego braku w formularzu.");
  }

  function resetDecision() {
    Array.prototype.forEach.call(guide.querySelectorAll("#rk-pipe-analyzer select"), function (field) {
      field.selectedIndex = 0;
    });
    var result = element("rk-decision-result");
    result.classList.remove("is-good");
    result.classList.remove("is-stop");
    setText("rk-decision-status", "Uzupełnij dane budynku");
    setText("rk-decision-intro", "Wynik rozdzieli argumenty za podłogówką, grzejnikami, układem mieszanym oraz dane wymagające sprawdzenia.");
    renderDecisionList("rk-decision-floor-list", [], "Jeszcze brak ocenionych danych.");
    renderDecisionList("rk-decision-rad-list", [], "Jeszcze brak ocenionych danych.");
    renderDecisionList("rk-decision-mixed-list", [], "Jeszcze brak ocenionych danych.");
    renderDecisionList("rk-decision-missing-list", [], "Odpowiedz na pytania na podstawie projektu i warunków budynku.");
  }

  element("rk-decision-run").addEventListener("click", analyzeDecision);
  element("rk-decision-reset").addEventListener("click", resetDecision);

  updateSourceLabels(false);
  calculateComparison();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/zalety-ogrzewania-podlogowego-w-porownaniu-do-tradycyjnych-grzejnikow/">Ogrzewanie podłogowe czy grzejniki? Zalety, koszty i kalkulator porównania.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
