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

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa kalkulator wody - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/kalkulator-wody/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<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>
	</channel>
</rss>
