<?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 projektowanie ogrzewania - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/tag/projektowanie-ogrzewania/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/tag/projektowanie-ogrzewania/</link>
	<description>Ogrzewanie podłogowe i systemy HVAC oparte na obliczeniach.</description>
	<lastBuildDate>Thu, 17 Sep 2026 17:18:18 +0000</lastBuildDate>
	<language>pl-PL</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	<generator>https://wordpress.org/?v=7.1.4</generator>

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2026/10/Projekt-Ogrzewania-favicon-512-100x100.webp</url>
	<title>Archiwa projektowanie ogrzewania - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/projektowanie-ogrzewania/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Ile styropianu pod ogrzewanie podłogowe? Grubość, opór R i kalkulator ilości.</title>
		<link>https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Tue, 18 Nov 2025 08:28:46 +0000</pubDate>
				<category><![CDATA[Izolacje termiczne]]></category>
		<category><![CDATA[Materiały budowlane]]></category>
		<category><![CDATA[Materiały do podłogówki]]></category>
		<category><![CDATA[Materiały instalacyjne]]></category>
		<category><![CDATA[Normy budowlane]]></category>
		<category><![CDATA[Normy i regulacje]]></category>
		<category><![CDATA[Normy i standardy]]></category>
		<category><![CDATA[Normy techniczne]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Styropian]]></category>
		<category><![CDATA[eps 100]]></category>
		<category><![CDATA[eps 200]]></category>
		<category><![CDATA[grubość styropianu]]></category>
		<category><![CDATA[izolacja termiczna]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<category><![CDATA[straty ciepła]]></category>
		<category><![CDATA[styropian]]></category>
		<category><![CDATA[warunki techniczne]]></category>
		<category><![CDATA[współczynnik lambda]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2850</guid>

					<description><![CDATA[<p>Planując instalację ogrzewania podłogowego, jednym z najważniejszych, choć często niedocenianych aspektów, jest odpowiednie dobranie izolacji termicznej. Wiele osób zadaje sobie wtedy kluczowe pytanie: ile styropianu pod ogrzewanie podłogowe będzie optymalne? Odpowiedź nie jest jednoznaczna, ponieważ zależy od typu konstrukcji, lokalizacji oraz parametrów technicznych samego materiału. W naszym kompleksowym artykule w techniczny i szczegółowy sposób wyjaśniamy, jak precyzyjnie obliczyć wymaganą grubość warstwy izolacyjnej, jakie normy prawne muszą być spełnione oraz na jakie zaawansowane parametry, takie jak współczynnik lambda czy wytrzymałość na ściskanie, należy zwrócić uwagę. Dowiesz się również, jak uniknąć kosztownych błędów i zapewnić swojemu systemowi grzewczemu maksymalną efektywność energetyczną na długie lata.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">Ile styropianu pod ogrzewanie podłogowe? Grubość, opór R i kalkulator ilości.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-insulation-guide {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-blue: #078fbe;
    --rk-cyan: #28c9da;
    --rk-cyan-soft: #e9fbff;
    --rk-orange: #ff7438;
    --rk-orange-soft: #fff2ec;
    --rk-green: #16876d;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #e7ad2f;
    --rk-yellow-soft: #fff8df;
    --rk-red: #d94b3d;
    --rk-red-soft: #fff0ee;
    --rk-purple: #695ac9;
    --rk-purple-soft: #f1efff;
    --rk-ink: #1f2c37;
    --rk-text: #475967;
    --rk-muted: #6b7e8a;
    --rk-line: #d5e4eb;
    --rk-soft: #f4f9fb;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 72px;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.76;
  }

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

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

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

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

  #rk-insulation-guide button,
  #rk-insulation-guide summary,
  #rk-insulation-guide a {
    -webkit-tap-highlight-color: transparent;
  }

  #rk-insulation-guide h2,
  #rk-insulation-guide h3,
  #rk-insulation-guide h4,
  #rk-insulation-guide p,
  #rk-insulation-guide ul,
  #rk-insulation-guide ol,
  #rk-insulation-guide blockquote {
    margin-top: 0;
  }

  #rk-insulation-guide h2,
  #rk-insulation-guide h3,
  #rk-insulation-guide h4 {
    color: var(--rk-dark);
    line-height: 1.18;
    letter-spacing: -0.025em;
  }

  #rk-insulation-guide h2 {
    margin-bottom: 22px;
    font-size: clamp(30px, 4vw, 48px);
    scroll-margin-top: 30px;
  }

  #rk-insulation-guide h3 {
    margin-bottom: 12px;
    font-size: clamp(22px, 2.4vw, 29px);
  }

  #rk-insulation-guide h4 {
    margin-bottom: 9px;
    font-size: 20px;
  }

  #rk-insulation-guide p:last-child,
  #rk-insulation-guide ul:last-child,
  #rk-insulation-guide ol:last-child {
    margin-bottom: 0;
  }

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

  #rk-insulation-guide .rk-ins-progress-track {
    position: sticky;
    z-index: 20;
    top: 0;
    height: 5px;
    background: rgba(255, 255, 255, 0.2);
  }

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

  #rk-insulation-guide .rk-ins-hero {
    position: relative;
    overflow: hidden;
    padding: 62px 58px 54px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 88% 15%, rgba(40, 201, 218, 0.24), transparent 28%),
      radial-gradient(circle at 78% 105%, rgba(255, 116, 56, 0.24), transparent 34%),
      linear-gradient(135deg, #0f2637 0%, #123f55 64%, #174c5c 100%);
  }

  #rk-insulation-guide .rk-ins-hero::after {
    content: "";
    position: absolute;
    right: -80px;
    top: -140px;
    width: 420px;
    height: 420px;
    border: 38px solid rgba(255, 255, 255, 0.045);
    border-radius: 50%;
  }

  #rk-insulation-guide .rk-ins-hero-inner {
    position: relative;
    z-index: 1;
    max-width: 920px;
  }

  #rk-insulation-guide .rk-ins-eyebrow,
  #rk-insulation-guide .rk-ins-kicker {
    display: inline-flex;
    align-items: center;
    gap: 10px;
    margin-bottom: 14px;
    color: var(--rk-blue);
    font-size: 13px;
    font-weight: 900;
    letter-spacing: 0.11em;
    text-transform: uppercase;
  }

  #rk-insulation-guide .rk-ins-eyebrow {
    color: #91f4ff;
  }

  #rk-insulation-guide .rk-ins-eyebrow b {
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 7px rgba(255, 116, 56, 0.14);
  }

  #rk-insulation-guide .rk-ins-hero-title {
    max-width: 900px;
    margin-bottom: 20px;
    color: var(--rk-white);
    font-size: clamp(38px, 6vw, 68px);
    font-weight: 950;
    line-height: 1.02;
    letter-spacing: -0.05em;
  }

  #rk-insulation-guide .rk-ins-hero-lead {
    max-width: 830px;
    margin-bottom: 26px;
    color: #dcecf2;
    font-size: clamp(19px, 2.3vw, 24px);
    line-height: 1.55;
  }

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

  #rk-insulation-guide .rk-ins-meta span {
    display: inline-flex;
    align-items: center;
    gap: 8px;
    padding: 8px 12px;
    border: 1px solid rgba(255, 255, 255, 0.17);
    border-radius: 999px;
    color: #e7f7fa;
    background: rgba(255, 255, 255, 0.07);
    font-size: 13px;
    font-weight: 750;
  }

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

  #rk-insulation-guide .rk-ins-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    padding: 24px 32px;
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
  }

  #rk-insulation-guide .rk-ins-nav strong {
    display: block;
    width: 100%;
    margin-bottom: 2px;
    color: var(--rk-muted);
    font-size: 12px;
    letter-spacing: 0.1em;
    text-transform: uppercase;
  }

  #rk-insulation-guide .rk-ins-nav a {
    display: inline-flex;
    align-items: center;
    min-height: 42px;
    padding: 9px 15px;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-soft);
    font-size: 14px;
    font-weight: 850;
    line-height: 1.25;
    text-decoration: none;
    transition: transform 0.18s ease, background 0.18s ease, color 0.18s ease;
  }

  #rk-insulation-guide .rk-ins-nav a:hover,
  #rk-insulation-guide .rk-ins-nav a:focus-visible {
    color: var(--rk-white);
    background: var(--rk-blue);
    transform: translateY(-1px);
    outline: none;
  }

  #rk-insulation-guide .rk-ins-section {
    padding: 64px 58px;
    border-bottom: 1px solid var(--rk-line);
  }

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

  #rk-insulation-guide .rk-ins-intro {
    max-width: 930px;
    margin-bottom: 30px;
    color: var(--rk-text);
    font-size: 20px;
  }

  #rk-insulation-guide .rk-ins-answer {
    display: grid;
    grid-template-columns: 1.45fr 0.8fr;
    overflow: hidden;
    margin: 30px 0;
    border: 1px solid var(--rk-line);
    border-radius: 22px;
  }

  #rk-insulation-guide .rk-ins-answer-main,
  #rk-insulation-guide .rk-ins-answer-side {
    padding: 28px;
  }

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

  #rk-insulation-guide .rk-ins-answer-side {
    color: var(--rk-white);
    background: var(--rk-navy);
  }

  #rk-insulation-guide .rk-ins-answer-side h3 {
    color: var(--rk-white);
  }

  #rk-insulation-guide .rk-ins-answer-side p {
    color: #dcebf0;
  }

  #rk-insulation-guide .rk-ins-formula {
    margin: 28px 0;
    padding: 25px 28px;
    border-left: 6px solid var(--rk-cyan);
    border-radius: 0 18px 18px 0;
    background: var(--rk-dark);
    color: var(--rk-white);
  }

  #rk-insulation-guide .rk-ins-formula strong {
    display: block;
    margin-bottom: 8px;
    color: #8ff5ff;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: clamp(21px, 3vw, 31px);
    letter-spacing: -0.03em;
  }

  #rk-insulation-guide .rk-ins-formula span {
    color: #d9e8ed;
    font-size: 15px;
  }

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

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

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

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

  #rk-insulation-guide .rk-ins-card,
  #rk-insulation-guide .rk-ins-location,
  #rk-insulation-guide .rk-ins-error,
  #rk-insulation-guide .rk-ins-step {
    min-width: 0;
    padding: 24px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-white);
    box-shadow: 0 10px 28px rgba(16, 37, 54, 0.05);
  }

  #rk-insulation-guide .rk-ins-card-number,
  #rk-insulation-guide .rk-ins-error b {
    display: inline-flex;
    margin-bottom: 14px;
    color: var(--rk-blue);
    font-size: 12px;
    font-weight: 950;
    letter-spacing: 0.09em;
    text-transform: uppercase;
  }

  #rk-insulation-guide .rk-ins-card h3,
  #rk-insulation-guide .rk-ins-location h3,
  #rk-insulation-guide .rk-ins-error h3,
  #rk-insulation-guide .rk-ins-step h3 {
    font-size: 22px;
  }

  #rk-insulation-guide .rk-ins-card p,
  #rk-insulation-guide .rk-ins-location p,
  #rk-insulation-guide .rk-ins-error p,
  #rk-insulation-guide .rk-ins-step p {
    color: var(--rk-text);
    font-size: 16px;
  }

  #rk-insulation-guide .rk-ins-location {
    border-top: 5px solid var(--rk-cyan);
  }

  #rk-insulation-guide .rk-ins-location:nth-child(2) {
    border-top-color: var(--rk-green);
  }

  #rk-insulation-guide .rk-ins-location:nth-child(3) {
    border-top-color: var(--rk-orange);
  }

  #rk-insulation-guide .rk-ins-location:nth-child(4) {
    border-top-color: var(--rk-purple);
  }

  #rk-insulation-guide .rk-ins-callout {
    margin: 28px 0;
    padding: 24px 26px;
    border: 1px solid #eed68d;
    border-radius: 18px;
    background: var(--rk-yellow-soft);
  }

  #rk-insulation-guide .rk-ins-callout strong {
    display: block;
    margin-bottom: 7px;
    color: #78550b;
    font-size: 18px;
  }

  #rk-insulation-guide .rk-ins-callout p {
    color: #6f5a25;
  }

  #rk-insulation-guide .rk-ins-table-wrap {
    margin: 30px 0;
  }

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

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

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

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

  #rk-insulation-guide .rk-ins-table thead th {
    color: var(--rk-white);
    background: var(--rk-navy);
    font-size: 13px;
    letter-spacing: 0.035em;
  }

  #rk-insulation-guide .rk-ins-table tbody tr:nth-child(even) td {
    background: var(--rk-soft);
  }

  #rk-insulation-guide .rk-ins-table-caption {
    margin-top: 10px;
    color: var(--rk-muted);
    font-size: 13px;
  }

  #rk-insulation-guide .rk-ins-tool {
    overflow: hidden;
    margin-top: 30px;
    border-radius: 24px;
    color: var(--rk-white);
    background: var(--rk-dark);
    box-shadow: 0 24px 65px rgba(16, 37, 54, 0.18);
  }

  #rk-insulation-guide .rk-ins-tool-head {
    padding: 34px 36px 30px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.11);
    background:
      radial-gradient(circle at 93% 15%, rgba(40, 201, 218, 0.2), transparent 25%),
      linear-gradient(135deg, #123146, #16485a);
  }

  #rk-insulation-guide .rk-ins-tool-head h3 {
    margin-bottom: 10px;
    color: var(--rk-white);
    font-size: clamp(27px, 4vw, 40px);
  }

  #rk-insulation-guide .rk-ins-tool-head p {
    max-width: 880px;
    color: #d7e9ef;
  }

  #rk-insulation-guide .rk-ins-tool-grid {
    display: grid;
    grid-template-columns: minmax(0, 1.08fr) minmax(360px, 0.92fr);
    grid-template-areas:
      "form results"
      "form cross-section"
      "chart diagnostics";
    gap: 20px;
    align-items: start;
    padding: 28px;
  }

  #rk-insulation-guide .rk-ins-tool-column {
    display: grid;
    gap: 18px;
    align-content: start;
    min-width: 0;
  }

  #rk-insulation-guide .rk-ins-tool-grid > .rk-ins-tool-column:first-child {
    grid-area: form;
    align-self: stretch;
  }

  #rk-insulation-guide .rk-ins-tool-grid > .rk-ins-tool-column:first-child > .rk-ins-tool-panel {
    height: 100%;
  }

  #rk-insulation-guide .rk-ins-tool-column-right {
    display: contents;
  }

  #rk-insulation-guide .rk-ins-tool-column-right > .rk-ins-tool-panel:nth-child(1) {
    grid-area: results;
    align-self: stretch;
  }

  #rk-insulation-guide .rk-ins-tool-column-right > .rk-ins-tool-panel:nth-child(2) {
    grid-area: cross-section;
    align-self: stretch;
  }

  #rk-insulation-guide .rk-ins-tool-column-right > .rk-ins-tool-panel:nth-child(3) {
    grid-area: chart;
    align-self: stretch;
    display: flex;
    flex-direction: column;
  }

  #rk-insulation-guide .rk-ins-tool-column-right > .rk-ins-tool-panel:nth-child(4) {
    grid-area: diagnostics;
    align-self: stretch;
  }

  #rk-insulation-guide .rk-ins-tool-column-right > .rk-ins-tool-panel:nth-child(3) .rk-ins-chart-wrap {
    display: flex;
    flex: 1 1 auto;
    flex-direction: column;
  }

  #rk-insulation-guide .rk-ins-tool-column-right > .rk-ins-tool-panel:nth-child(3) .rk-ins-chart {
    flex: 1 1 auto;
    min-height: 260px;
    height: 100%;
    aspect-ratio: auto;
  }

  #rk-insulation-guide .rk-ins-tool-panel {
    min-width: 0;
    padding: 24px;
    border: 1px solid rgba(160, 213, 228, 0.25);
    border-radius: 18px;
    background: rgba(255, 255, 255, 0.045);
  }

  #rk-insulation-guide .rk-ins-tool-panel h4 {
    margin-bottom: 8px;
    color: var(--rk-white);
    font-size: 22px;
  }

  #rk-insulation-guide .rk-ins-tool-panel > p {
    margin-bottom: 18px;
    color: #bfd5de;
    font-size: 14px;
  }

  #rk-insulation-guide .rk-ins-subhead {
    margin: 24px 0 15px;
    padding-top: 20px;
    border-top: 1px solid rgba(160, 213, 228, 0.22);
    color: #78ecf7;
    font-size: 12px;
    font-weight: 950;
    letter-spacing: 0.085em;
    text-transform: uppercase;
  }

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

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

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

  #rk-insulation-guide .rk-ins-field[hidden] {
    display: none;
  }

  #rk-insulation-guide .rk-ins-field label {
    display: block;
    margin-bottom: 7px;
    color: #e8f6f9;
    font-size: 13px;
    font-weight: 800;
    line-height: 1.35;
  }

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

  #rk-insulation-guide .rk-ins-field input:focus,
  #rk-insulation-guide .rk-ins-field select:focus {
    border-color: var(--rk-cyan);
    box-shadow: 0 0 0 4px rgba(40, 201, 218, 0.15);
  }

  #rk-insulation-guide .rk-ins-field small {
    display: block;
    margin-top: 6px;
    color: #9fb8c3;
    font-size: 11px;
    line-height: 1.4;
  }

  #rk-insulation-guide .rk-ins-layer-label {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 12px;
    margin-bottom: 14px;
  }

  #rk-insulation-guide .rk-ins-layer-label strong {
    color: var(--rk-white);
    font-size: 17px;
  }

  #rk-insulation-guide .rk-ins-layer-label span {
    padding: 5px 9px;
    border-radius: 999px;
    color: #9cf4fc;
    background: rgba(40, 201, 218, 0.12);
    font-size: 11px;
    font-weight: 900;
  }

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

  #rk-insulation-guide .rk-ins-result {
    min-width: 0;
    padding: 15px;
    border: 1px solid rgba(160, 213, 228, 0.2);
    border-radius: 13px;
    background: rgba(4, 22, 34, 0.35);
  }

  #rk-insulation-guide .rk-ins-result span {
    display: block;
    margin-bottom: 5px;
    color: #9eb7c1;
    font-size: 11px;
    font-weight: 850;
    letter-spacing: 0.045em;
    text-transform: uppercase;
  }

  #rk-insulation-guide .rk-ins-result strong {
    display: block;
    overflow-wrap: anywhere;
    color: var(--rk-white);
    font-size: clamp(20px, 3vw, 29px);
    line-height: 1.1;
  }

  #rk-insulation-guide .rk-ins-result small {
    display: block;
    margin-top: 5px;
    color: #8fa8b3;
    font-size: 10px;
  }

  #rk-insulation-guide .rk-ins-result.is-accent strong {
    color: #75edf8;
  }

  #rk-insulation-guide .rk-ins-result.is-warning strong {
    color: #ffd26d;
  }

  #rk-insulation-guide .rk-ins-result.is-danger strong {
    color: #ff968a;
  }

  #rk-insulation-guide .rk-ins-result.is-good strong {
    color: #79efc7;
  }

  #rk-insulation-guide .rk-ins-status {
    margin-top: 14px;
    padding: 15px 17px;
    border-left: 5px solid var(--rk-cyan);
    border-radius: 0 12px 12px 0;
    color: #d9edf2;
    background: rgba(40, 201, 218, 0.09);
    font-size: 14px;
  }

  #rk-insulation-guide .rk-ins-status.is-danger {
    border-left-color: #ff7669;
    background: rgba(217, 75, 61, 0.13);
  }

  #rk-insulation-guide .rk-ins-section-stack {
    display: flex;
    flex-direction: column;
    overflow: hidden;
    min-height: 370px;
    border: 1px solid rgba(160, 213, 228, 0.2);
    border-radius: 14px;
    background: #eef4f6;
  }

  #rk-insulation-guide .rk-ins-stack-layer {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 10px;
    min-height: 34px;
    padding: 7px 12px;
    border-bottom: 1px solid rgba(16, 37, 54, 0.16);
    color: var(--rk-dark);
    font-size: 12px;
    font-weight: 850;
  }

  #rk-insulation-guide .rk-ins-stack-layer small {
    color: inherit;
    font-size: 10px;
    opacity: 0.78;
  }

  #rk-insulation-guide .rk-ins-stack-finish {
    background: repeating-linear-gradient(90deg, #cba36f 0, #cba36f 28px, #b78d57 29px, #b78d57 31px);
  }

  #rk-insulation-guide .rk-ins-stack-heating {
    position: relative;
    background: #d9d4cd;
  }

  #rk-insulation-guide .rk-ins-stack-heating::after {
    content: "";
    position: absolute;
    left: 12%;
    right: 12%;
    bottom: 14px;
    height: 10px;
    border-radius: 999px;
    background: repeating-linear-gradient(90deg, var(--rk-orange) 0, var(--rk-orange) 35px, transparent 35px, transparent 67px);
    opacity: 0.88;
  }

  #rk-insulation-guide .rk-ins-stack-layer2 {
    background: #dcecf2;
  }

  #rk-insulation-guide .rk-ins-stack-layer1 {
    background: #edf5f7;
  }

  #rk-insulation-guide .rk-ins-stack-service {
    background: #becbd0;
  }

  #rk-insulation-guide .rk-ins-stack-base {
    min-height: 46px;
    border-bottom: 0;
    color: var(--rk-white);
    background: #667b84;
  }

  #rk-insulation-guide .rk-ins-chart-wrap {
    overflow: hidden;
    border: 1px solid rgba(160, 213, 228, 0.2);
    border-radius: 14px;
    background: #f8fbfc;
  }

  #rk-insulation-guide .rk-ins-chart {
    display: block;
    width: 100%;
    height: auto;
    aspect-ratio: 680 / 330;
  }

  #rk-insulation-guide .rk-ins-chart-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 18px;
    padding: 12px 16px 15px;
    border-top: 1px solid var(--rk-line);
    color: var(--rk-dark);
    font-size: 11px;
    font-weight: 850;
  }

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

  #rk-insulation-guide .rk-ins-chart-legend i {
    width: 20px;
    height: 4px;
    border-radius: 99px;
    background: var(--rk-cyan);
  }

  #rk-insulation-guide .rk-ins-chart-legend span:nth-child(2) i {
    background: var(--rk-orange);
  }

  #rk-insulation-guide .rk-ins-chart-legend span:nth-child(3) i {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--rk-yellow);
  }

  #rk-insulation-guide .rk-ins-diagnostics {
    display: grid;
    gap: 9px;
  }

  #rk-insulation-guide .rk-ins-diagnostic {
    padding: 13px 14px;
    border-left: 4px solid var(--rk-cyan);
    border-radius: 0 10px 10px 0;
    color: #d7e9ef;
    background: rgba(40, 201, 218, 0.08);
    font-size: 13px;
  }

  #rk-insulation-guide .rk-ins-diagnostic.is-warning {
    border-left-color: var(--rk-yellow);
    background: rgba(231, 173, 47, 0.1);
  }

  #rk-insulation-guide .rk-ins-diagnostic.is-danger {
    border-left-color: #ff7669;
    background: rgba(217, 75, 61, 0.12);
  }

  #rk-insulation-guide .rk-ins-tool-note {
    margin: 0;
    padding: 0 28px 28px;
    color: #9fb6c0;
    font-size: 12px;
  }

  #rk-insulation-guide .rk-ins-mid-cta,
  #rk-insulation-guide .rk-ins-final-cta {
    position: relative;
    overflow: hidden;
    margin: 0;
    padding: 46px 58px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 92% 20%, rgba(255, 116, 56, 0.25), transparent 27%),
      linear-gradient(135deg, #12384d, #0f2b3e);
  }

  #rk-insulation-guide .rk-ins-mid-cta h3,
  #rk-insulation-guide .rk-ins-final-cta .rk-ins-cta-title {
    max-width: 820px;
    margin-bottom: 14px;
    color: var(--rk-white);
    font-size: clamp(28px, 4vw, 42px);
    line-height: 1.12;
  }

  #rk-insulation-guide .rk-ins-mid-cta p,
  #rk-insulation-guide .rk-ins-final-cta p {
    max-width: 900px;
    color: #d9e9ee;
  }

  #rk-insulation-guide .rk-ins-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 54px;
    margin-top: 18px;
    padding: 14px 23px;
    border-radius: 10px;
    color: var(--rk-white);
    background: var(--rk-orange);
    box-shadow: 0 12px 28px rgba(255, 116, 56, 0.27);
    font-size: 16px;
    font-weight: 950;
    line-height: 1.25;
    text-align: center;
    text-decoration: none;
    transition: transform 0.18s ease, background 0.18s ease;
  }

  #rk-insulation-guide .rk-ins-cta-button:hover,
  #rk-insulation-guide .rk-ins-cta-button:focus-visible {
    color: var(--rk-white);
    background: #ef5f27;
    transform: translateY(-2px);
    outline: none;
  }

  #rk-insulation-guide .rk-ins-disclosure {
    display: block;
    max-width: 780px;
    margin-top: 12px;
    color: #9fb7c0;
    font-size: 11px;
  }

  #rk-insulation-guide .rk-ins-example {
    margin: 28px 0;
    padding: 26px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: linear-gradient(135deg, var(--rk-cyan-soft), var(--rk-white));
  }

  #rk-insulation-guide .rk-ins-example h3 {
    font-size: 24px;
  }

  #rk-insulation-guide .rk-ins-example-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 10px;
    margin-top: 18px;
  }

  #rk-insulation-guide .rk-ins-example-stat {
    padding: 15px;
    border-radius: 12px;
    background: var(--rk-white);
  }

  #rk-insulation-guide .rk-ins-example-stat span {
    display: block;
    color: var(--rk-muted);
    font-size: 11px;
    font-weight: 850;
    text-transform: uppercase;
  }

  #rk-insulation-guide .rk-ins-example-stat strong {
    display: block;
    margin-top: 4px;
    color: var(--rk-dark);
    font-size: 23px;
  }

  #rk-insulation-guide .rk-ins-error {
    border-top: 5px solid var(--rk-red);
    background: linear-gradient(180deg, var(--rk-red-soft), var(--rk-white) 56%);
  }

  #rk-insulation-guide .rk-ins-error b {
    color: var(--rk-red);
  }

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

  #rk-insulation-guide .rk-ins-step {
    display: grid;
    grid-template-columns: 52px minmax(0, 1fr);
    gap: 18px;
    align-items: start;
    counter-increment: rk-ins-step;
  }

  #rk-insulation-guide .rk-ins-step::before {
    content: counter(rk-ins-step);
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 48px;
    height: 48px;
    border-radius: 15px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: 19px;
    font-weight: 950;
  }

  #rk-insulation-guide .rk-ins-faq {
    display: grid;
    gap: 12px;
    margin-top: 28px;
  }

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

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

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

  #rk-insulation-guide .rk-ins-faq summary::after {
    content: "+";
    position: absolute;
    right: 18px;
    top: 50%;
    display: flex;
    align-items: center;
    justify-content: center;
    width: 26px;
    height: 26px;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-blue);
    transform: translateY(-50%);
  }

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

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

  #rk-insulation-guide .rk-ins-source-box {
    padding: 26px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-soft);
  }

  #rk-insulation-guide .rk-ins-source-box ul {
    margin-bottom: 0;
  }

  #rk-insulation-guide .rk-ins-source-box li + li {
    margin-top: 9px;
  }

  #rk-insulation-guide .rk-ins-update {
    margin-top: 16px;
    color: var(--rk-muted);
    font-size: 13px;
    font-weight: 800;
  }

  #rk-insulation-guide .rk-ins-author {
    margin: 42px 58px;
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 24px;
    background: var(--rk-white);
    box-shadow: 0 16px 45px rgba(16, 37, 54, 0.08);
  }

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

  #rk-insulation-guide .rk-ins-author-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 20px;
    padding: 28px 30px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-dark), var(--rk-navy));
  }

  #rk-insulation-guide .rk-ins-author-title {
    color: var(--rk-white);
    font-size: clamp(28px, 4vw, 40px);
    font-weight: 950;
    line-height: 1.1;
  }

  #rk-insulation-guide .rk-ins-author-head p {
    margin: 7px 0 0;
    color: #cfe2e8;
    font-size: 14px;
  }

  #rk-insulation-guide .rk-ins-author-mark {
    padding: 8px 11px;
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 999px;
    color: #8df2fc;
    font-size: 11px;
    font-weight: 950;
    letter-spacing: 0.08em;
  }

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

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

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

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

  #rk-insulation-guide .rk-ins-author-name {
    color: var(--rk-dark);
    font-size: 22px;
    font-weight: 950;
  }

  #rk-insulation-guide .rk-ins-author-role {
    margin-top: 6px;
    color: var(--rk-text);
    font-size: 13px;
  }

  #rk-insulation-guide .rk-ins-author-social-label {
    margin-top: 20px;
    color: var(--rk-muted);
    font-size: 11px;
    font-weight: 850;
    text-transform: uppercase;
  }

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

  #rk-insulation-guide .rk-ins-author-social a {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 40px;
    height: 40px;
    border-radius: 12px;
    color: var(--rk-white);
    background: var(--rk-navy);
  }

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

  #rk-insulation-guide .rk-ins-author-main {
    padding: 30px;
  }

  #rk-insulation-guide .rk-ins-author-quote {
    position: relative;
    margin-bottom: 22px;
    padding: 25px 25px 25px 68px;
    border: 0;
    border-radius: 16px;
    background: var(--rk-cyan-soft);
  }

  #rk-insulation-guide .rk-ins-author-quote::before {
    content: "„";
    position: absolute;
    left: 22px;
    top: 1px;
    color: var(--rk-blue);
    font-family: Georgia, serif;
    font-size: 76px;
    line-height: 1;
  }

  #rk-insulation-guide .rk-ins-author-quote p {
    color: var(--rk-dark);
    font-size: 18px;
    font-weight: 750;
  }

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

  #rk-insulation-guide .rk-ins-author-tab {
    padding: 12px 10px;
    border-right: 1px solid var(--rk-line);
    color: var(--rk-dark);
    background: var(--rk-soft);
    cursor: pointer;
    font-size: 13px;
    font-weight: 900;
    text-align: center;
  }

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

  #rk-insulation-guide .rk-ins-author-panel {
    display: none;
    padding: 20px;
    border: 1px solid var(--rk-line);
    border-top: 0;
    border-radius: 0 0 13px 13px;
    color: var(--rk-text);
    font-size: 15px;
  }

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

  #rk-insulation-guide #rk-ins-author-about:checked ~ .rk-ins-author-layout label[for="rk-ins-author-about"],
  #rk-insulation-guide #rk-ins-author-exp:checked ~ .rk-ins-author-layout label[for="rk-ins-author-exp"],
  #rk-insulation-guide #rk-ins-author-sites:checked ~ .rk-ins-author-layout label[for="rk-ins-author-sites"] {
    color: var(--rk-white);
    background: var(--rk-blue);
  }

  #rk-insulation-guide .rk-ins-site-links {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin-top: 13px;
  }

  #rk-insulation-guide .rk-ins-site-links a {
    padding: 7px 10px;
    border-radius: 8px;
    background: var(--rk-soft);
    font-size: 12px;
    font-weight: 850;
    text-decoration: none;
  }

  @media (max-width: 980px) {
    #rk-insulation-guide .rk-ins-tool-grid,
    #rk-insulation-guide .rk-ins-author-layout {
      grid-template-columns: 1fr;
    }

    #rk-insulation-guide .rk-ins-tool-grid {
      grid-template-areas: none;
    }

    #rk-insulation-guide .rk-ins-tool-grid > .rk-ins-tool-column:first-child {
      grid-area: auto;
      align-self: start;
    }

    #rk-insulation-guide .rk-ins-tool-grid > .rk-ins-tool-column:first-child > .rk-ins-tool-panel {
      height: auto;
    }

    #rk-insulation-guide .rk-ins-tool-column-right {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 18px;
      align-content: start;
    }

    #rk-insulation-guide .rk-ins-tool-column-right > .rk-ins-tool-panel {
      grid-area: auto;
      align-self: start;
      height: auto;
    }

    #rk-insulation-guide .rk-ins-tool-column-right > .rk-ins-tool-panel:nth-child(1),
    #rk-insulation-guide .rk-ins-tool-column-right > .rk-ins-tool-panel:nth-child(2),
    #rk-insulation-guide .rk-ins-tool-column-right > .rk-ins-tool-panel:nth-child(3),
    #rk-insulation-guide .rk-ins-tool-column-right > .rk-ins-tool-panel:nth-child(4) {
      grid-area: auto;
    }

    #rk-insulation-guide .rk-ins-tool-column-right > .rk-ins-tool-panel:nth-child(3) {
      display: block;
    }

    #rk-insulation-guide .rk-ins-tool-column-right > .rk-ins-tool-panel:nth-child(3) .rk-ins-chart-wrap {
      display: block;
    }

    #rk-insulation-guide .rk-ins-tool-column-right > .rk-ins-tool-panel:nth-child(3) .rk-ins-chart {
      min-height: 0;
      height: auto;
      aspect-ratio: 680 / 330;
    }

    #rk-insulation-guide .rk-ins-tool-column-right .rk-ins-tool-panel:first-child,
    #rk-insulation-guide .rk-ins-tool-column-right .rk-ins-tool-panel:last-child {
      grid-column: 1 / -1;
    }

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

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

  @media (max-width: 760px) {
    #rk-insulation-guide {
      margin: 0 auto 45px;
      font-size: 17px;
    }

    #rk-insulation-guide .rk-ins-shell {
      border-right: 0;
      border-left: 0;
      border-radius: 0;
    }

    #rk-insulation-guide .rk-ins-hero,
    #rk-insulation-guide .rk-ins-section,
    #rk-insulation-guide .rk-ins-mid-cta,
    #rk-insulation-guide .rk-ins-final-cta {
      padding: 42px 20px;
    }

    #rk-insulation-guide .rk-ins-hero-title {
      font-size: clamp(36px, 12vw, 53px);
    }

    #rk-insulation-guide .rk-ins-nav {
      gap: 8px;
      padding: 18px 16px;
    }

    #rk-insulation-guide .rk-ins-nav a {
      flex: 1 1 calc(50% - 8px);
      justify-content: center;
      min-width: 0;
      padding: 9px 10px;
      border-radius: 12px;
      font-size: 12px;
      text-align: center;
    }

    #rk-insulation-guide .rk-ins-answer,
    #rk-insulation-guide .rk-ins-grid-2,
    #rk-insulation-guide .rk-ins-grid-3,
    #rk-insulation-guide .rk-ins-grid-4,
    #rk-insulation-guide .rk-ins-example-grid,
    #rk-insulation-guide .rk-ins-tool-column-right {
      grid-template-columns: 1fr;
    }

    #rk-insulation-guide .rk-ins-tool-column-right .rk-ins-tool-panel:first-child,
    #rk-insulation-guide .rk-ins-tool-column-right .rk-ins-tool-panel:last-child {
      grid-column: auto;
    }

    #rk-insulation-guide .rk-ins-tool-head {
      padding: 28px 20px 24px;
    }

    #rk-insulation-guide .rk-ins-tool-grid {
      grid-template-columns: minmax(0, 1fr);
      padding: 16px;
    }

    #rk-insulation-guide .rk-ins-tool-panel {
      padding: 19px;
    }

    #rk-insulation-guide .rk-ins-fields,
    #rk-insulation-guide .rk-ins-results {
      grid-template-columns: 1fr;
    }

    #rk-insulation-guide .rk-ins-field.is-wide {
      grid-column: auto;
    }

    #rk-insulation-guide .rk-ins-tool-note {
      padding: 0 18px 22px;
    }

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

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

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

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

    #rk-insulation-guide .rk-ins-table td,
    #rk-insulation-guide .rk-ins-table tbody tr:nth-child(even) td {
      display: grid;
      grid-template-columns: minmax(105px, 0.85fr) minmax(0, 1.15fr);
      gap: 12px;
      padding: 12px 14px;
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
      background: var(--rk-white);
      overflow-wrap: anywhere;
    }

    #rk-insulation-guide .rk-ins-table td::before {
      content: attr(data-label);
      color: var(--rk-muted);
      font-size: 10px;
      font-weight: 950;
      letter-spacing: 0.055em;
      text-transform: uppercase;
    }

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

    #rk-insulation-guide .rk-ins-step {
      grid-template-columns: 42px minmax(0, 1fr);
      gap: 13px;
      padding: 17px;
    }

    #rk-insulation-guide .rk-ins-step::before {
      width: 40px;
      height: 40px;
      border-radius: 12px;
    }

    #rk-insulation-guide .rk-ins-author {
      margin: 30px 16px;
    }

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

    #rk-insulation-guide .rk-ins-author-mark {
      display: inline-flex;
      margin-top: 17px;
    }

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

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

    #rk-insulation-guide .rk-ins-author-quote::before {
      left: 20px;
      top: 3px;
    }

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

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

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

  @media (max-width: 410px) {
    #rk-insulation-guide .rk-ins-nav a {
      flex-basis: 100%;
    }

    #rk-insulation-guide .rk-ins-table td {
      grid-template-columns: 1fr;
      gap: 4px;
    }
  }

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

<article id="rk-insulation-guide" aria-label="Ile styropianu pod ogrzewanie podłogowe — poradnik i kalkulator">
  <div class="rk-ins-shell">
    <div class="rk-ins-progress-track" aria-hidden="true"><div class="rk-ins-progress" id="rk-ins-progress"></div></div>

    <header class="rk-ins-hero">
      <div class="rk-ins-hero-inner">
        <span class="rk-ins-eyebrow"><b aria-hidden="true"></b> Izolacja podłogi • aktualizacja 2026</span>
        <div class="rk-ins-hero-title">Nie dobieraj styropianu z jednej liczby w centymetrach</div>
        <p class="rk-ins-hero-lead">Sprawdź osobno opór cieplny izolacji, geometrię przegrody, wysokość warstw i parametry mechaniczne płyt. Następnie oblicz ilość materiału bez udawania, że prosty kalkulator zastępuje projekt podłogi na gruncie.</p>
        <div class="rk-ins-meta">
          <span><i aria-hidden="true"></i> Czytanie: około 22 minuty</span>
          <span><i aria-hidden="true"></i> Jeden analizator interaktywny</span>
          <span><i aria-hidden="true"></i> Aktualizacja: 30 sierpnia 2026 r.</span>
        </div>
      </div>
    </header>

    <nav class="rk-ins-nav" aria-label="Spis treści artykułu">
      <strong>Na skróty — wszystkie główne części poradnika</strong>
      <a href="#rk-ins-answer">Szybka odpowiedź</a>
      <a href="#rk-ins-no-single-value">Dlaczego nie jedna grubość?</a>
      <a href="#rk-ins-law">Wymagania prawne</a>
      <a href="#rk-ins-three-checks">Trzy kontrole</a>
      <a href="#rk-ins-locations">Miejsce podłogi</a>
      <a href="#rk-ins-analyzer">Analizator</a>
      <a href="#rk-ins-results-reading">Jak czytać wynik?</a>
      <a href="#rk-ins-label">Etykieta i DoP</a>
      <a href="#rk-ins-materials">EPS, grafit i XPS</a>
      <a href="#rk-ins-height">Wysokość warstw</a>
      <a href="#rk-ins-layers">Jedna czy dwie warstwy?</a>
      <a href="#rk-ins-services">Instalacje w podłodze</a>
      <a href="#rk-ins-membranes">Folia i izolacje</a>
      <a href="#rk-ins-quantity">Ilość materiału</a>
      <a href="#rk-ins-heating-design">Wpływ na podłogówkę</a>
      <a href="#rk-ins-errors">Najczęstsze błędy</a>
      <a href="#rk-ins-checklist">Checklista</a>
      <a href="#rk-ins-faq">FAQ</a>
      <a href="#rk-ins-sources">Źródła</a>
    </nav>

    <main>
      <section class="rk-ins-section" id="rk-ins-answer">
        <span class="rk-ins-kicker">Odpowiedź w 60 sekund</span>
        <h2>Ile styropianu pod ogrzewanie podłogowe?</h2>
        <p class="rk-ins-intro">Nie ma jednej grubości właściwej dla każdego domu. Na podłodze na gruncie 15 cm EPS jest popularnym rozwiązaniem, ale nie stanowi uniwersalnego minimum wpisanego do przepisów. Wynik zależy od deklarowanej lambdy, geometrii podłogi, połączenia ze ścianami, pozostałych warstw, wymagań cieplnych i obciążeń.</p>

        <div class="rk-ins-answer">
          <div class="rk-ins-answer-main">
            <h3>Najpierw określ wymaganie, później centymetry</h3>
            <p><strong>Dla podłogi na gruncie trzeba sprawdzić całą przegrodę, a nie samą płytę EPS.</strong> Osobno kontroluje się opór izolacji pod systemem grzewczym oraz właściwości mechaniczne materiału pod jastrychem.</p>
          </div>
          <div class="rk-ins-answer-side">
            <h3>Co można policzyć od razu?</h3>
            <p>Z grubości i deklarowanej lambdy można wiarygodnie policzyć opór samej izolacji. Z powierzchni i grubości obliczymy także m³ materiału oraz liczbę paczek.</p>
          </div>
        </div>

        <div class="rk-ins-formula" aria-label="Wzór na opór cieplny warstwy izolacji">
          <strong>R<sub>izol</sub> = Σ(d<sub>i</sub> ÷ λ<sub>i</sub>)</strong>
          <span>Grubość d podajemy w metrach, a deklarowaną przewodność cieplną λ w W/(mK). Wynik R otrzymujemy w m²K/W.</span>
        </div>

        <div class="rk-ins-table-wrap">
          <table class="rk-ins-table">
            <thead><tr><th>Grubość</th><th>R przy λ = 0,036</th><th>R przy λ = 0,031</th><th>Co oznacza wynik?</th></tr></thead>
            <tbody>
              <tr><td data-label="Grubość"><strong>10 cm</strong></td><td data-label="R • λ 0,036">2,78 m²K/W</td><td data-label="R • λ 0,031">3,23 m²K/W</td><td data-label="Interpretacja">Opór samej izolacji, bez oceny całej podłogi.</td></tr>
              <tr><td data-label="Grubość"><strong>15 cm</strong></td><td data-label="R • λ 0,036">4,17 m²K/W</td><td data-label="R • λ 0,031">4,84 m²K/W</td><td data-label="Interpretacja">Ta sama grubość może dawać inny opór zależnie od λ.</td></tr>
              <tr><td data-label="Grubość"><strong>20 cm</strong></td><td data-label="R • λ 0,036">5,56 m²K/W</td><td data-label="R • λ 0,031">6,45 m²K/W</td><td data-label="Interpretacja">Większe R nie potwierdza jeszcze nośności ani zgodności całej przegrody.</td></tr>
            </tbody>
          </table>
          <p class="rk-ins-table-caption">Wartości obliczono wyłącznie dla jednorodnej warstwy izolacyjnej. Nie są gotowym współczynnikiem U podłogi na gruncie.</p>
        </div>
      </section>

      <section class="rk-ins-section" id="rk-ins-no-single-value">
        <span class="rk-ins-kicker">Centymetry bez kontekstu wprowadzają w błąd</span>
        <h2>Dlaczego nie istnieje jedna prawidłowa grubość styropianu?</h2>
        <p class="rk-ins-intro">Pytanie „10 czy 15 cm?” jest dopiero początkiem. Dziesięć centymetrów płyty o λ = 0,031 ma inny opór niż 10 cm materiału o λ = 0,040, a podłoga nad salonem pracuje w innych warunkach niż podłoga na gruncie albo strop nad nieogrzewanym garażem.</p>

        <div class="rk-ins-grid-3">
          <article class="rk-ins-card"><span class="rk-ins-card-number">01 • Ciepło</span><h3>Lambda i wszystkie warstwy</h3><p>Liczy się deklarowana przewodność materiału, jego grubość oraz układ całej przegrody. Sama nazwa „biały” lub „grafitowy” nie jest parametrem obliczeniowym.</p></article>
          <article class="rk-ins-card"><span class="rk-ins-card-number">02 • Geometria</span><h3>Powierzchnia i obwód</h3><p>W podłodze na gruncie znaczenie ma relacja powierzchni do obwodu wystawionego oraz rozwiązanie krawędzi. Dwa domy po 120 m² nie muszą mieć identycznej wymiany ciepła.</p></article>
          <article class="rk-ins-card"><span class="rk-ins-card-number">03 • Konstrukcja</span><h3>Obciążenia i wysokość</h3><p>Płyta musi przenosić przewidziane obciążenia, a cały układ zmieścić okładzinę, jastrych lub suchy system, instalacje i izolację.</p></article>
        </div>

        <p>Dlatego nie będziemy wybierać materiału z samej nazwy źródła ciepła. Podłoga nie „wie”, czy wodę ogrzała pompa ciepła, kocioł gazowy czy inne urządzenie. Źródło wpływa na pożądane temperatury pracy, ale nie wyznacza automatycznie grubości i klasy izolacji.</p>
      </section>

      <section class="rk-ins-section" id="rk-ins-law">
        <span class="rk-ins-kicker">Warunki techniczne określają efekt</span>
        <h2>Co rzeczywiście mówią przepisy o podłodze na gruncie?</h2>
        <p class="rk-ins-intro">W obowiązującym tekście warunków technicznych dla podłogi na gruncie w pomieszczeniu o temperaturze obliczeniowej co najmniej 16°C podano maksymalną wartość współczynnika przenikania ciepła U<sub>C(max)</sub> równą 0,30 W/(m²K). Przepis nie zapisuje jednej obowiązkowej grubości ani klasy EPS.</p>

        <div class="rk-ins-formula" aria-label="Maksymalny współczynnik przenikania ciepła podłogi na gruncie">
          <strong>U<sub>C(max)</sub> = 0,30 W/(m²K)</strong>
          <span>Podłoga na gruncie w pomieszczeniu ogrzewanym do temperatury obliczeniowej co najmniej 16°C — zgodnie z obowiązującym tekstem warunków technicznych.</span>
        </div>

        <div class="rk-ins-callout">
          <strong>To nie jest proste U = 1/R izolacji</strong>
          <p>Metodyka dla przegród stykających się z gruntem uwzględnia geometrię podłogi, obwód wystawiony, grunt i rozwiązanie krawędzi. Nie wolno odjąć umownego „oporu gruntu” i na tej podstawie ogłosić normowej liczby centymetrów.</p>
        </div>

        <p>W praktyce należy skoordynować projekt architektoniczno-budowlany, charakterystykę energetyczną, detal podłogi i obliczenia cieplne. Jeżeli zmieniasz materiał albo grubość na budowie, porównuj opór i właściwości produktu, ale nie zastępuj tym weryfikacji całej przegrody.</p>
      </section>

      <section class="rk-ins-section" id="rk-ins-three-checks">
        <span class="rk-ins-kicker">Nie mieszaj trzech różnych ocen</span>
        <h2>Współczynnik U, opór R i nośność — trzy osobne kontrole</h2>
        <div class="rk-ins-grid-3">
          <article class="rk-ins-card"><span class="rk-ins-card-number">Przegroda</span><h3>Współczynnik U</h3><p>Opisuje przenikanie ciepła przez całą przegrodę w określonych warunkach. Dla podłogi na gruncie wymaga metody uwzględniającej kontakt z gruntem i geometrię.</p></article>
          <article class="rk-ins-card"><span class="rk-ins-card-number">Warstwa</span><h3>Opór R izolacji</h3><p>Wynika z grubości i lambdy każdej warstwy. Można go sumować dla kilku materiałów, ale sam nie jest kompletnym U podłogi na gruncie.</p></article>
          <article class="rk-ins-card"><span class="rk-ins-card-number">Konstrukcja</span><h3>Parametry mechaniczne</h3><p>CS(10) opisuje naprężenie przy 10-procentowym odkształceniu. Długotrwałą pracę trzeba oceniać razem z obciążeniem, pełnym kodem produktu i — gdy jest deklarowane — pełzaniem przy ściskaniu.</p></article>
        </div>

        <p><strong>Wysoki opór cieplny nie gwarantuje odpowiedniej nośności, a wysoka wartość CS(10) nie gwarantuje wymaganej izolacyjności.</strong> Produkt musi spełnić oba zestawy wymagań oraz być przeznaczony do planowanego zastosowania.</p>
      </section>

      <section class="rk-ins-section" id="rk-ins-locations">
        <span class="rk-ins-kicker">Najpierw ustal, co znajduje się pod podłogą</span>
        <h2>Podłoga na gruncie, piętro, piwnica czy przestrzeń zewnętrzna?</h2>
        <p class="rk-ins-intro">To samo 5, 10 albo 15 cm będzie miało inne znaczenie zależnie od warunków po drugiej stronie przegrody.</p>

        <div class="rk-ins-grid-2">
          <article class="rk-ins-location"><h3>Podłoga na gruncie</h3><p>Potrzebna jest ocena całej przegrody zgodnie z metodyką dla kontaktu z gruntem. Ważne są powierzchnia, obwód zewnętrzny, warstwy, grunt i detal obwodowy.</p></article>
          <article class="rk-ins-location"><h3>Strop nad ogrzewanym pomieszczeniem</h3><p>Różnica temperatur jest zwykle mała. O doborze warstw mogą silniej decydować akustyka, wymagania podłogi pływającej, instalacje i dostępna wysokość.</p></article>
          <article class="rk-ins-location"><h3>Strop nad piwnicą lub garażem</h3><p>Temperatura poniżej stropu może być znacznie niższa. Wymagania cieplne oraz rozwiązanie mostków trzeba sprawdzić dla konkretnej przegrody.</p></article>
          <article class="rk-ins-location"><h3>Podłoga nad przejazdem lub powietrzem</h3><p>Przegroda oddziela wnętrze od środowiska zewnętrznego. Nie należy stosować do niej uproszczeń właściwych dla stropu między ogrzewanymi pomieszczeniami.</p></article>
        </div>

        <p>W remontowanym budynku dochodzą ograniczenia progów, schodów i istniejących drzwi. Zobacz również, jak planować <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-w-remontowanym-budynku-czy-warto/">ogrzewanie podłogowe w remontowanym budynku</a>.</p>
      </section>

      <section class="rk-ins-section" id="rk-ins-analyzer">
        <span class="rk-ins-kicker">Jedno narzędzie zamiast kilku pozornie dokładnych kalkulatorów</span>
        <h2>Interaktywny analizator izolacji i warstw podłogi</h2>
        <p class="rk-ins-intro">Wpisz dane z projektu i etykiety materiału. Narzędzie policzy opór samej izolacji, ilość płyt, paczki i bilans wysokości. Dla podłogi na gruncie pokaże również wymiar charakterystyczny B′, ale celowo nie poda uproszczonego współczynnika U.</p>

        <div class="rk-ins-tool" id="rk-ins-tool">
          <div class="rk-ins-tool-head">
            <h3>Policz R izolacji, m³, paczki i wysokość</h3>
            <p>Każda wartość pozostaje edytowalna. Lambdę, CS(10) i wydajność paczki przepisz z dokumentacji konkretnego materiału, a wysokości z przekroju architektonicznego.</p>
          </div>

          <div class="rk-ins-tool-grid">
            <div class="rk-ins-tool-column">
              <div class="rk-ins-tool-panel">
                <h4>Dane podłogi</h4>
                <p>Najpierw określ położenie przegrody oraz rzeczywistą przestrzeń pomiędzy podłożem a gotową posadzką.</p>
                <div class="rk-ins-fields">
                  <div class="rk-ins-field is-wide">
                    <label for="rk-ins-floor-type">Położenie analizowanej podłogi</label>
                    <select id="rk-ins-floor-type">
                      <option value="ground">Podłoga na gruncie</option>
                      <option value="heated">Strop nad ogrzewanym pomieszczeniem</option>
                      <option value="unheated">Strop nad nieogrzewaną piwnicą lub garażem</option>
                      <option value="outside">Podłoga nad przejazdem lub powietrzem zewnętrznym</option>
                    </select>
                  </div>
                  <div class="rk-ins-field">
                    <label for="rk-ins-area">Powierzchnia podłogi [m²]</label>
                    <input type="number" id="rk-ins-area" min="1" max="2000" step="1" value="120" inputmode="decimal">
                  </div>
                  <div class="rk-ins-field" id="rk-ins-perimeter-wrap">
                    <label for="rk-ins-perimeter">Obwód wystawiony P [m]</label>
                    <input type="number" id="rk-ins-perimeter" min="1" max="1000" step="0.1" value="46" inputmode="decimal">
                    <small>Obwód oddzielający ogrzewaną podłogę od środowiska zewnętrznego.</small>
                  </div>
                  <div class="rk-ins-field">
                    <label for="rk-ins-available-height">Dostępna wysokość od podłoża [mm]</label>
                    <input type="number" id="rk-ins-available-height" min="20" max="1000" step="1" value="230" inputmode="decimal">
                  </div>
                  <div class="rk-ins-field">
                    <label for="rk-ins-finish">Okładzina z klejem lub podkładem [mm]</label>
                    <input type="number" id="rk-ins-finish" min="0" max="100" step="1" value="15" inputmode="decimal">
                  </div>
                  <div class="rk-ins-field">
                    <label for="rk-ins-heating-layer">Warstwa grzewcza nad izolacją [mm]</label>
                    <input type="number" id="rk-ins-heating-layer" min="10" max="250" step="1" value="70" inputmode="decimal">
                    <small>Łączna grubość od wierzchu izolacji do spodu okładziny: np. system z rurą i jastrychem albo płyty systemu suchego.</small>
                  </div>
                  <div class="rk-ins-field">
                    <label for="rk-ins-service-layer">Warstwa wyrównawcza lub instalacyjna [mm]</label>
                    <input type="number" id="rk-ins-service-layer" min="0" max="300" step="1" value="0" inputmode="decimal">
                  </div>
                </div>

                <div class="rk-ins-subhead">Dolna warstwa izolacji</div>
                <div class="rk-ins-layer-label"><strong>Warstwa 1</strong><span>najbliżej podłoża</span></div>
                <div class="rk-ins-fields">
                  <div class="rk-ins-field"><label for="rk-ins-layer1-thickness">Grubość d₁ [mm]</label><input type="number" id="rk-ins-layer1-thickness" min="0" max="400" step="1" value="100" inputmode="decimal"></div>
                  <div class="rk-ins-field"><label for="rk-ins-layer1-lambda">Deklarowana λD₁ [W/(mK)]</label><input type="number" id="rk-ins-layer1-lambda" min="0.020" max="0.080" step="0.001" value="0.036" inputmode="decimal"></div>
                  <div class="rk-ins-field"><label for="rk-ins-layer1-pack">Pokrycie jednej paczki [m²]</label><input type="number" id="rk-ins-layer1-pack" min="0.1" max="100" step="0.01" value="3.0" inputmode="decimal"></div>
                  <div class="rk-ins-field"><label for="rk-ins-cs">Deklarowane CS(10) [kPa]</label><input type="number" id="rk-ins-cs" min="10" max="1000" step="10" value="100" inputmode="decimal"><small>Parametr pomocniczy — nie jest dopuszczalnym obciążeniem długotrwałym.</small></div>
                </div>

                <div class="rk-ins-subhead">Górna warstwa izolacji</div>
                <div class="rk-ins-layer-label"><strong>Warstwa 2</strong><span>wpisz 0 mm, aby ją wyłączyć</span></div>
                <div class="rk-ins-fields">
                  <div class="rk-ins-field"><label for="rk-ins-layer2-thickness">Grubość d₂ [mm]</label><input type="number" id="rk-ins-layer2-thickness" min="0" max="400" step="1" value="50" inputmode="decimal"></div>
                  <div class="rk-ins-field"><label for="rk-ins-layer2-lambda">Deklarowana λD₂ [W/(mK)]</label><input type="number" id="rk-ins-layer2-lambda" min="0.020" max="0.080" step="0.001" value="0.036" inputmode="decimal"></div>
                  <div class="rk-ins-field"><label for="rk-ins-layer2-pack">Pokrycie jednej paczki [m²]</label><input type="number" id="rk-ins-layer2-pack" min="0.1" max="100" step="0.01" value="6.0" inputmode="decimal"></div>
                  <div class="rk-ins-field"><label for="rk-ins-waste">Zapas montażowy [%]</label><input type="number" id="rk-ins-waste" min="0" max="30" step="1" value="5" inputmode="decimal"><small>Zapas wpływa na ilość zakupu i liczbę paczek, nie na opór ułożonej warstwy.</small></div>
                </div>
              </div>
            </div>

            <div class="rk-ins-tool-column rk-ins-tool-column-right">
              <div class="rk-ins-tool-panel">
                <h4>Wynik na żywo</h4>
                <p>Wartości materiałowe i geometryczne dla wpisanego wariantu.</p>
                <div class="rk-ins-results" aria-live="polite">
                  <div class="rk-ins-result is-accent"><span>Łączna izolacja</span><strong id="rk-ins-result-thickness">150 mm</strong><small id="rk-ins-result-split">100 + 50 mm</small></div>
                  <div class="rk-ins-result is-accent"><span>Opór izolacji R</span><strong id="rk-ins-result-r">4,17</strong><small>m²K/W — bez pozostałych warstw</small></div>
                  <div class="rk-ins-result"><span>Objętość ułożona</span><strong id="rk-ins-result-volume">18,00 m³</strong><small>bez zapasu zakupowego</small></div>
                  <div class="rk-ins-result"><span>Objętość do zakupu</span><strong id="rk-ins-result-purchase">18,90 m³</strong><small id="rk-ins-result-waste-note">z zapasem 5%</small></div>
                  <div class="rk-ins-result"><span>Paczki warstwy 1</span><strong id="rk-ins-result-pack1">42</strong><small id="rk-ins-result-pack1-note">dla 3,00 m²/paczkę</small></div>
                  <div class="rk-ins-result"><span>Paczki warstwy 2</span><strong id="rk-ins-result-pack2">21</strong><small id="rk-ins-result-pack2-note">dla 6,00 m²/paczkę</small></div>
                  <div class="rk-ins-result"><span>Wykorzystana wysokość</span><strong id="rk-ins-result-used">235 mm</strong><small>wszystkie wpisane warstwy</small></div>
                  <div class="rk-ins-result" id="rk-ins-balance-card"><span>Rezerwa wysokości</span><strong id="rk-ins-result-balance">−5 mm</strong><small>wartość ujemna oznacza kolizję</small></div>
                </div>
                <div class="rk-ins-status" id="rk-ins-height-status">Warstwy przekraczają dostępną wysokość o 5 mm. Trzeba zmienić przekrój, a nie ściskać izolację na budowie.</div>
              </div>

              <div class="rk-ins-tool-panel">
                <h4>Dynamiczny przekrój podłogi</h4>
                <p>Proporcje aktualizują się razem z wpisanymi grubościami. Schemat pokazuje kolejność, nie detal wykonawczy.</p>
                <div class="rk-ins-section-stack" id="rk-ins-stack" aria-label="Dynamiczny przekrój warstw podłogi">
                  <div class="rk-ins-stack-layer rk-ins-stack-finish" id="rk-ins-stack-finish"><span>Okładzina</span><small>15 mm</small></div>
                  <div class="rk-ins-stack-layer rk-ins-stack-heating" id="rk-ins-stack-heating"><span>Warstwa grzewcza</span><small>70 mm</small></div>
                  <div class="rk-ins-stack-layer rk-ins-stack-layer2" id="rk-ins-stack-layer2"><span>Izolacja 2</span><small>50 mm</small></div>
                  <div class="rk-ins-stack-layer rk-ins-stack-layer1" id="rk-ins-stack-layer1"><span>Izolacja 1</span><small>100 mm</small></div>
                  <div class="rk-ins-stack-layer rk-ins-stack-service" id="rk-ins-stack-service"><span>Warstwa instalacyjna</span><small>0 mm</small></div>
                  <div class="rk-ins-stack-layer rk-ins-stack-base"><span>Podłoże konstrukcyjne</span><small>poziom odniesienia</small></div>
                </div>
              </div>

              <div class="rk-ins-tool-panel">
                <h4>Opór R a grubość</h4>
                <p>Linie porównują wartości λ wpisane dla obu warstw. Punkt pokazuje opór ich rzeczywistej kombinacji.</p>
                <div class="rk-ins-chart-wrap">
                  <svg class="rk-ins-chart" id="rk-ins-chart" viewBox="0 0 680 330" role="img" aria-labelledby="rk-ins-chart-title rk-ins-chart-desc">
                    <title id="rk-ins-chart-title">Wykres oporu cieplnego izolacji w zależności od grubości</title>
                    <desc id="rk-ins-chart-desc">Dwie linie dla wpisanych wartości przewodzenia ciepła oraz punkt pokazujący aktualną kombinację warstw.</desc>
                  </svg>
                  <div class="rk-ins-chart-legend">
                    <span><i></i><b id="rk-ins-legend1">λ₁ 0,036</b></span>
                    <span><i></i><b id="rk-ins-legend2">λ₂ 0,036</b></span>
                    <span><i></i><b>Twój układ</b></span>
                  </div>
                </div>
              </div>

              <div class="rk-ins-tool-panel">
                <h4>Diagnostyka wyniku</h4>
                <p>Narzędzie oddziela to, co można policzyć z podanych danych, od tego, czego bez projektu stwierdzić nie wolno.</p>
                <div class="rk-ins-diagnostics" id="rk-ins-diagnostics" aria-live="polite"></div>
                <div class="rk-ins-results">
                  <div class="rk-ins-result"><span>Wymiar B′</span><strong id="rk-ins-result-bprime">5,22 m</strong><small id="rk-ins-result-bprime-note">2A/P — informacja geometryczna</small></div>
                  <div class="rk-ins-result"><span>Ocena U podłogi</span><strong>Nie wyznaczono</strong><small>potrzebny pełny model przegrody</small></div>
                </div>
              </div>
            </div>
          </div>
          <p class="rk-ins-tool-note">Analizator nie jest kalkulatorem współczynnika U podłogi na gruncie, projektem konstrukcji ani doborem dopuszczalnego obciążenia. Wyniki materiałowe zależą od poprawności danych wpisanych z dokumentacji konkretnego produktu.</p>
        </div>
      </section>

      <aside class="rk-ins-mid-cta" aria-label="Indywidualny projekt po analizie warstw">
        <span class="rk-ins-kicker" style="color:#83f1fb">Co pozostaje poza kalkulatorem?</span>
        <h3>Analizator zmieścił warstwy i policzył materiał, ale nie zna całego budynku</h3>
        <p>Nie widzi mostka na połączeniu podłogi ze ścianą, pełnej geometrii, parametrów gruntu, obciążeń, stref bez rur, dylatacji ani hydrauliki pętli. Jeżeli chcesz skoordynować izolację, poziom posadzki, rozstaw rur, długości obwodów i temperaturę pracy, potrzebny jest indywidualny projekt.</p>
        <a class="rk-ins-cta-button rk-ins-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt dopasowany do warstw podłogi</a>
        <small class="rk-ins-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
      </aside>

      <section class="rk-ins-section" id="rk-ins-results-reading">
        <span class="rk-ins-kicker">Wynik ma granice</span>
        <h2>Jak prawidłowo czytać wynik analizatora?</h2>
        <div class="rk-ins-grid-3">
          <article class="rk-ins-card"><span class="rk-ins-card-number">Wynik pewny</span><h3>R izolacji</h3><p>Jeżeli grubość i λD wpisano prawidłowo, obliczenie oporu jednorodnych warstw jest prostą zależnością geometryczną.</p></article>
          <article class="rk-ins-card"><span class="rk-ins-card-number">Wynik zakupowy</span><h3>m³ i paczki</h3><p>Objętość ułożona wynika z powierzchni oraz łącznej grubości. Liczba paczek zależy od wpisanego pokrycia konkretnego opakowania i zapasu.</p></article>
          <article class="rk-ins-card"><span class="rk-ins-card-number">Wynik projektowy</span><h3>U i nośność</h3><p>Tych parametrów narzędzie nie potwierdza. Wymagają danych o całej przegrodzie, geometrii, obciążeniach i długotrwałej pracy materiału.</p></article>
        </div>

        <p>Wymiar B′ jest informacją o geometrii podłogi na gruncie. Pokazuje, dlaczego sama powierzchnia nie wystarcza: zwarty rzut ma inną relację powierzchni do obwodu niż długi, rozczłonkowany budynek. Narzędzie nie wykorzystuje B′ do pozornego, uproszczonego obliczenia U.</p>
      </section>

      <section class="rk-ins-section" id="rk-ins-label">
        <span class="rk-ins-kicker">Kupuj parametry, nie kolor</span>
        <h2>Jak czytać etykietę styropianu i deklarację właściwości?</h2>
        <p class="rk-ins-intro">Pełna nazwa handlowa „EPS 100” nie zastępuje kodu oznaczenia, przeznaczenia ani deklaracji właściwości użytkowych. Do porównania potrzebujesz dokumentu dla konkretnego wariantu i grubości.</p>

        <div class="rk-ins-table-wrap">
          <table class="rk-ins-table">
            <thead><tr><th>Parametr</th><th>Co opisuje?</th><th>Jak go używać?</th><th>Czego nie dowodzi?</th></tr></thead>
            <tbody>
              <tr><td data-label="Parametr"><strong>λD</strong></td><td data-label="Znaczenie">Deklarowana przewodność cieplna.</td><td data-label="Zastosowanie">Do obliczenia oporu warstwy R = d/λ.</td><td data-label="Ograniczenie">Nie potwierdza nośności.</td></tr>
              <tr><td data-label="Parametr"><strong>CS(10)</strong></td><td data-label="Znaczenie">Naprężenie ściskające przy 10% odkształceniu.</td><td data-label="Zastosowanie">Do porównania klasy mechanicznej z projektem i przeznaczeniem.</td><td data-label="Ograniczenie">Nie jest dopuszczalnym obciążeniem przez cały okres użytkowania.</td></tr>
              <tr><td data-label="Parametr"><strong>CC</strong></td><td data-label="Znaczenie">Pełzanie przy ściskaniu w określonym czasie i warunkach.</td><td data-label="Zastosowanie">Pomaga ocenić długotrwałe odkształcenie, gdy parametr jest deklarowany i wymagany.</td><td data-label="Ograniczenie">Nie zastępuje obliczeń obciążenia układu.</td></tr>
              <tr><td data-label="Parametr"><strong>T</strong></td><td data-label="Znaczenie">Tolerancja grubości.</td><td data-label="Zastosowanie">Ważna dla równości i sumowania warstw.</td><td data-label="Ograniczenie">Nie mówi o izolacyjności ani akustyce.</td></tr>
              <tr><td data-label="Parametr"><strong>SD lub CP</strong></td><td data-label="Znaczenie">Parametry używane w wyrobach o funkcji akustycznej.</td><td data-label="Zastosowanie">Sprawdza się je w projekcie podłogi pływającej na stropie.</td><td data-label="Ograniczenie">Nie można ich zastąpić samym symbolem EPS 100.</td></tr>
            </tbody>
          </table>
        </div>

        <p>Deklaracja właściwości użytkowych jest podstawowym źródłem informacji o parametrach wyrobu budowlanego. Komisja Europejska wyjaśnia, że dokument przekazuje informacje o właściwościach produktu objętego normą zharmonizowaną lub europejską oceną techniczną. Nie opieraj odbioru materiału na „teście kciukiem” ani domniemanej gęstości.</p>
      </section>

      <section class="rk-ins-section" id="rk-ins-materials">
        <span class="rk-ins-kicker">Materiał dobieramy do funkcji i deklaracji</span>
        <h2>Biały EPS, grafitowy EPS czy XPS pod podłogówkę?</h2>
        <div class="rk-ins-grid-3">
          <article class="rk-ins-card"><span class="rk-ins-card-number">EPS biały</span><h3>Większa grubość przy wyższej λ</h3><p>Może być właściwym rozwiązaniem, jeśli deklarowane właściwości cieplne i mechaniczne odpowiadają projektowi, a w przekroju jest wystarczająco dużo miejsca.</p></article>
          <article class="rk-ins-card"><span class="rk-ins-card-number">EPS grafitowy</span><h3>Większy R przy tej samej grubości</h3><p>Niższa deklarowana lambda pozwala uzyskać większy opór w ograniczonej wysokości. Kolor nie zwalnia z kontroli CS(10), przeznaczenia i dokumentów.</p></article>
          <article class="rk-ins-card"><span class="rk-ins-card-number">XPS</span><h3>Inna struktura i zastosowania</h3><p>Zwykle wybiera się go tam, gdzie ważne są określone właściwości mechaniczne lub zachowanie przy kontakcie z wilgocią. Ma małą, ale nie „zerową” nasiąkliwość i nie jest automatycznie najlepszy w każdym salonie.</p></article>
        </div>

        <div class="rk-ins-callout">
          <strong>EPS 100 nie jest zapisanym w prawie minimum dla każdej podłogi</strong>
          <p>Wybierz produkt przeznaczony do podłóg i zweryfikuj jego pełne parametry z obciążeniem oraz układem jastrychu. W podłogach akustycznych mogą występować materiały o innej charakterystyce, dobrane jako część konkretnego systemu.</p>
        </div>
      </section>

      <section class="rk-ins-section" id="rk-ins-height">
        <span class="rk-ins-kicker">Poziom gotowej posadzki jest granicą</span>
        <h2>Jak zmieścić izolację i wszystkie warstwy podłogi?</h2>
        <p class="rk-ins-intro">Najczęstszy błąd koordynacyjny polega na zarezerwowaniu miejsca wyłącznie na styropian i jastrych. W rzeczywistym przekroju trzeba uwzględnić wszystkie warstwy od podłoża do górnej powierzchni okładziny.</p>

        <div class="rk-ins-grid-2">
          <article class="rk-ins-card"><span class="rk-ins-card-number">Od góry</span><h3>Okładzina i warstwa grzewcza</h3><p>Płytka z klejem, panel z podkładem albo drewno mają własną grubość. Poniżej znajduje się pełna warstwa systemu mokrego lub suchego, a nie sama średnica rury.</p></article>
          <article class="rk-ins-card"><span class="rk-ins-card-number">Od dołu</span><h3>Podłoże i instalacje</h3><p>Nierówności, przewody wodne, kanalizacja, peszle i inne instalacje mogą wymagać osobnej warstwy wyrównawczej. Nie wolno ukrywać brakującej wysokości przez przypadkowe ściskanie płyt.</p></article>
        </div>

        <p>Grubość i rodzaj jastrychu ustala się dla konkretnego systemu. Szczegóły omawia poradnik o <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">wylewce na ogrzewanie podłogowe</a>.</p>
      </section>

      <section class="rk-ins-section" id="rk-ins-layers">
        <span class="rk-ins-kicker">Mijanka pomaga, ale nie jest celem samym w sobie</span>
        <h2>Jedna czy dwie warstwy styropianu pod ogrzewanie podłogowe?</h2>
        <p class="rk-ins-intro">Dwie warstwy ułatwiają przesunięcie spoin i osłonięcie miejscowych nieciągłości, ale zdanie „nigdy nie układaj jednej grubej warstwy” jest zbyt kategoryczne. Liczy się zaprojektowany układ, równe podparcie oraz dopasowane płyty.</p>

        <div class="rk-ins-grid-2">
          <article class="rk-ins-card"><span class="rk-ins-card-number">Układ jednowarstwowy</span><h3>Może być poprawny</h3><p>Jeżeli płyty są przeznaczone do zastosowania, podłoże jest równe, spoiny dopasowane, instalacje nie tworzą pustek, a wymagany opór i nośność są zapewnione.</p></article>
          <article class="rk-ins-card"><span class="rk-ins-card-number">Układ dwuwarstwowy</span><h3>Ułatwia przesunięcie spoin</h3><p>Górna warstwa może przykryć łączenia dolnej. Spoin nie ustawia się w jednej linii, ale nie ma jednej uniwersalnej wartości przesunięcia odpowiedniej do wszystkich formatów płyt.</p></article>
        </div>

        <h3>Co jest ważniejsze od samej liczby warstw?</h3>
        <ul>
          <li>stabilne, równe i czyste podłoże,</li>
          <li>pełne podparcie płyt bez kołysania,</li>
          <li>ściśle dopasowane krawędzie,</li>
          <li>brak krzyżujących się pustek i przypadkowych klinów,</li>
          <li>ciągłość przy ścianach, słupach i przejściach instalacyjnych.</li>
        </ul>
      </section>

      <section class="rk-ins-section" id="rk-ins-services">
        <span class="rk-ins-kicker">Rury instalacyjne nie mogą podwieszać posadzki</span>
        <h2>Jak prowadzić instalacje w warstwie izolacji?</h2>
        <p class="rk-ins-intro">Przewody wodne, kanalizacyjne i elektryczne często przebiegają pod podłogówką. Problemem nie jest samo ich występowanie, lecz przypadkowe wycinanie płyt, brak podparcia i tworzenie wysokich garbów.</p>

        <div class="rk-ins-grid-3">
          <article class="rk-ins-card"><span class="rk-ins-card-number">Plan</span><h3>Wyznacz trasy wcześniej</h3><p>Skoordynuj podejścia przed zamówieniem grubości warstw. Kolizje powinny zostać rozwiązane na rzucie, a nie podczas układania ostatniej płyty.</p></article>
          <article class="rk-ins-card"><span class="rk-ins-card-number">Podparcie</span><h3>Nie zostawiaj pustych kieszeni</h3><p>Wycięcia muszą odpowiadać przebiegowi instalacji, a pozostałe warstwy tworzyć stabilną płaszczyznę pod system grzewczy.</p></article>
          <article class="rk-ins-card"><span class="rk-ins-card-number">Poziom</span><h3>Rozważ warstwę wyrównawczą</h3><p>Jeżeli instalacji jest dużo, poprawnym rozwiązaniem może być zaprojektowana warstwa instalacyjna lub wyrównawcza zamiast poszatkowania warstwy nośnej.</p></article>
        </div>

        <p>Przed montażem rur ogrzewania warto przejść przez listę błędów opisanych w poradniku o <a href="https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-czy-warto-robic-to-samemu/">samodzielnym wykonywaniu podłogówki</a>.</p>
      </section>

      <section class="rk-ins-section" id="rk-ins-membranes">
        <span class="rk-ins-kicker">Każda warstwa ma inną funkcję</span>
        <h2>Folia, hydroizolacja i izolacja brzegowa nie zastępują styropianu</h2>
        <div class="rk-ins-grid-3">
          <article class="rk-ins-card"><span class="rk-ins-card-number">Folia rozdzielająca</span><h3>Chroni układ podczas wykonywania</h3><p>Może ograniczać wpływanie zaczynu między płyty i pełnić funkcję warstwy rozdzielającej. Nadruk pomaga zachować geometrię rur, ale folia nie zastępuje termoizolacji.</p></article>
          <article class="rk-ins-card"><span class="rk-ins-card-number">Hydroizolacja</span><h3>Kontroluje wodę i wilgoć</h3><p>Jej miejsce oraz ciągłość wynikają z projektu przegrody. Nie należy przypisywać styropianowi funkcji zabezpieczenia przeciwwodnego.</p></article>
          <article class="rk-ins-card"><span class="rk-ins-card-number">Taśma brzegowa</span><h3>Oddziela jastrych od przegród</h3><p>Przejmuje odkształcenia i ogranicza sztywne połączenia przy ścianach. Musi współpracować z układem dylatacji oraz grubością jastrychu.</p></article>
        </div>

        <p>Bez szczeliny powietrznej metalizowana powierzchnia pod jastrychem nie tworzy samodzielnej „izolacji odbijającej ciepło”. Więcej o detalach przeczytasz w artykule o <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">izolacji brzegowej i dylatacjach</a>.</p>
      </section>

      <section class="rk-ins-section" id="rk-ins-quantity">
        <span class="rk-ins-kicker">Zamówienie liczymy osobno dla każdej grubości</span>
        <h2>Ile m², m³ i paczek styropianu zamówić?</h2>
        <p class="rk-ins-intro">Każda pełna warstwa wymaga pokrycia całej przeznaczonej powierzchni. Objętość instalowana wynika z pola i grubości, natomiast liczba paczek z wydajności opakowania dla konkretnej płyty.</p>

        <div class="rk-ins-formula" aria-label="Wzory na ilość styropianu">
          <strong>V = A × d &nbsp; | &nbsp; N = zaokrąglenie w górę [A × (1 + zapas) ÷ A<sub>paczki</sub>]</strong>
          <span>Objętość V podajemy w m³, powierzchnię A w m², grubość d w metrach, a pokrycie paczki w m² dla danej grubości.</span>
        </div>

        <div class="rk-ins-example">
          <h3>Przykład: 120 m², warstwy 10 + 5 cm, zapas 5%</h3>
          <p>W posadzce znajdzie się 18,00 m³ izolacji. Zakup z pięcioprocentowym zapasem odpowiada 18,90 m³. Paczki trzeba jednak policzyć oddzielnie, ponieważ opakowanie płyt 100 mm zwykle pokrywa inną powierzchnię niż opakowanie płyt 50 mm.</p>
          <div class="rk-ins-example-grid">
            <div class="rk-ins-example-stat"><span>Powierzchnia</span><strong>120 m²</strong></div>
            <div class="rk-ins-example-stat"><span>Grubość</span><strong>150 mm</strong></div>
            <div class="rk-ins-example-stat"><span>Wbudowane</span><strong>18,00 m³</strong></div>
            <div class="rk-ins-example-stat"><span>Zakup 5%</span><strong>18,90 m³</strong></div>
          </div>
        </div>

        <p>Nie licz paczek z jednej umownej objętości, jeśli producent podaje inne pakowanie dla różnych grubości. W analizatorze możesz wpisać rzeczywiste m² przypadające na paczkę każdej warstwy.</p>
      </section>

      <section class="rk-ins-section" id="rk-ins-heating-design">
        <span class="rk-ins-kicker">Izolacja i instalacja wpływają na siebie, ale nie automatycznie</span>
        <h2>Jak izolacja wpływa na projekt ogrzewania podłogowego?</h2>
        <p class="rk-ins-intro">Opór warstw pod systemem wpływa na strumień ciepła kierowany w dół. Nie można jednak z samej zmiany 10 na 15 cm wyznaczyć nowego rozstawu rur, przepływu ani mocy pompy.</p>

        <div class="rk-ins-grid-3">
          <article class="rk-ins-card"><span class="rk-ins-card-number">OZC</span><h3>Straty pomieszczenia</h3><p>Wymagana moc wynika z bilansu wszystkich przegród, wentylacji i temperatur obliczeniowych. Zmiana jednej warstwy musi zostać wprowadzona do modelu.</p></article>
          <article class="rk-ins-card"><span class="rk-ins-card-number">Podłoga</span><h3>Moc z powierzchni czynnej</h3><p>Rozstaw zależy od wymaganych W/m², konstrukcji, oporu okładziny i temperatury wody, a nie od samego symbolu EPS.</p></article>
          <article class="rk-ins-card"><span class="rk-ins-card-number">Hydraulika</span><h3>Długości i przepływy</h3><p>Opór pętli wynika głównie z przepływu, długości, średnicy wewnętrznej, medium i armatury. Nie wolno nazywać pompy „przeciążoną” tylko dlatego, że zmieniono grubość izolacji.</p></article>
        </div>

        <p>Najpierw wykonuje się <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne OZC</a>, później sprawdza moc powierzchniową i <a href="https://projekt-ogrzewania.pl/rozstaw-rur-ogrzewania-podlogowego-przy-pompie-ciepla/">rozstaw rur ogrzewania podłogowego</a>, a następnie długości, przepływy i straty ciśnienia. Pełny zakres dokumentacji opisuje poradnik o tym, <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">jak powinien wyglądać profesjonalny projekt podłogówki</a>.</p>
      </section>

      <section class="rk-ins-section" id="rk-ins-errors">
        <span class="rk-ins-kicker">Błędy, których jastrych już nie pokaże</span>
        <h2>Najczęstsze błędy przy izolacji pod ogrzewaniem podłogowym</h2>
        <div class="rk-ins-grid-2">
          <article class="rk-ins-error"><b>Błąd 01</b><h3>Dobór wyłącznie z centymetrów</h3><p>Pomija lambdę, miejsce przegrody, geometrię, obciążenia i pozostałe warstwy.</p></article>
          <article class="rk-ins-error"><b>Błąd 02</b><h3>Liczenie U podłogi na gruncie ze wzoru 1/R</h3><p>Nie odtwarza metodyki wymiany ciepła z gruntem i może dać pozornie dokładny, ale błędnie opisany wynik.</p></article>
          <article class="rk-ins-error"><b>Błąd 03</b><h3>Zakup z samej nazwy EPS 100</h3><p>Nie sprawdza pełnego kodu, λD, przeznaczenia, tolerancji, deklaracji i długotrwałego obciążenia.</p></article>
          <article class="rk-ins-error"><b>Błąd 04</b><h3>Brak bilansu wysokości</h3><p>Po ułożeniu izolacji brakuje miejsca na zaprojektowaną warstwę grzewczą, okładzinę albo poziom progów.</p></article>
          <article class="rk-ins-error"><b>Błąd 05</b><h3>Układanie na nierównym podłożu</h3><p>Płyty kołyszą się, a obciążenia nie są przekazywane równomiernie na warstwy konstrukcyjne.</p></article>
          <article class="rk-ins-error"><b>Błąd 06</b><h3>Przypadkowe wycinanie wokół instalacji</h3><p>Powstają pustki, uskoki i niepodparte fragmenty pod przyszłym jastrychem.</p></article>
          <article class="rk-ins-error"><b>Błąd 07</b><h3>Mylenie folii z termoizolacją</h3><p>Metalizowana folia bez szczeliny powietrznej nie zastępuje oporu zapewnianego przez właściwą warstwę izolacyjną.</p></article>
          <article class="rk-ins-error"><b>Błąd 08</b><h3>Automatyczna zmiana rozstawu rur</h3><p>Rozstawu, przepływu i temperatury nie wyznacza się wyłącznie z grubości styropianu.</p></article>
        </div>
      </section>

      <section class="rk-ins-section" id="rk-ins-checklist">
        <span class="rk-ins-kicker">Kontrola przed przykryciem warstw</span>
        <h2>Checklista przed ułożeniem rur i wykonaniem wylewki</h2>
        <div class="rk-ins-steps">
          <article class="rk-ins-step"><div><h3>Potwierdź miejsce i wymagania przegrody</h3><p>Ustal, czy analizujesz grunt, ogrzewane pomieszczenie, piwnicę, garaż czy przestrzeń zewnętrzną. Sprawdź projekt budowlany i cieplny.</p></div></article>
          <article class="rk-ins-step"><div><h3>Zmierz dostępną wysokość</h3><p>Porównaj poziom podłoża z gotową posadzką przy drzwiach, schodach, oknach tarasowych, odpływach i sąsiednich pomieszczeniach.</p></div></article>
          <article class="rk-ins-step"><div><h3>Zbierz dokumenty materiału</h3><p>Sprawdź nazwę wariantu, przeznaczenie, λD, CS(10), tolerancję grubości i inne parametry wymagane przez projekt.</p></div></article>
          <article class="rk-ins-step"><div><h3>Policz opór każdej warstwy</h3><p>Dodaj d/λ dla warstwy dolnej i górnej. Nie nazywaj otrzymanej sumy współczynnikiem U podłogi na gruncie.</p></div></article>
          <article class="rk-ins-step"><div><h3>Skoordynuj instalacje podpodłogowe</h3><p>Usuń kolizje, przewidź warstwę wyrównawczą i zapewnij stabilne podparcie płyt bez pustych kieszeni.</p></div></article>
          <article class="rk-ins-step"><div><h3>Ułóż płyty na równym podłożu</h3><p>Dopasuj krawędzie, przesuń spoiny kolejnej warstwy i zachowaj ciągłość przy przejściach oraz elementach konstrukcyjnych.</p></div></article>
          <article class="rk-ins-step"><div><h3>Wykonaj warstwy rozdzielające i brzegowe</h3><p>Zastosuj rozwiązania wskazane w projekcie jastrychu, hydroizolacji i dylatacji. Nie zamieniaj jednej funkcji na drugą.</p></div></article>
          <article class="rk-ins-step"><div><h3>Odbierz warstwy przed montażem rur</h3><p>Zrób zdjęcia, zachowaj etykiety i DoP, sprawdź poziomy, stabilność, szczeliny oraz zgodność z dokumentacją przed zakryciem.</p></div></article>
        </div>
      </section>

      <section class="rk-ins-section" id="rk-ins-faq">
        <span class="rk-ins-kicker">Najczęstsze pytania inwestorów</span>
        <h2>FAQ — styropian pod ogrzewanie podłogowe</h2>
        <div class="rk-ins-faq">
          <details><summary>Czy 10 cm styropianu pod ogrzewanie podłogowe wystarczy?</summary><div class="rk-ins-faq-answer"><p>Nie da się tego potwierdzić bez lokalizacji podłogi, lambdy materiału, pełnego układu warstw i obliczeń przegrody. Dziesięć centymetrów przy λ = 0,036 daje opór samej izolacji około 2,78 m²K/W, ale nie jest to kompletne U podłogi na gruncie.</p></div></details>
          <details><summary>Czy 15 cm EPS spełnia wymagania dla każdej podłogi na gruncie?</summary><div class="rk-ins-faq-answer"><p>Nie automatycznie. Piętnaście centymetrów przy λ = 0,036 daje R izolacji około 4,17 m²K/W. Zgodność całej podłogi zależy również od geometrii, krawędzi, pozostałych warstw i metody obliczeniowej dla kontaktu z gruntem.</p></div></details>
          <details><summary>Ile styropianu dać pod podłogówkę na piętrze?</summary><div class="rk-ins-faq-answer"><p>Na stropie pomiędzy ogrzewanymi pomieszczeniami kryteria są inne niż na gruncie. Znaczenie mają wymagania akustyczne, konstrukcja podłogi pływającej, instalacje i wysokość. Nie należy kopiować automatycznie 15 cm z parteru ani przyjmować 3–5 cm bez sprawdzenia projektu.</p></div></details>
          <details><summary>Czy pod podłogówkę zawsze trzeba stosować EPS 100?</summary><div class="rk-ins-faq-answer"><p>Nie istnieje taka uniwersalna reguła prawna. Produkt powinien być przeznaczony do podłóg i dobrany do obciążeń, jastrychu oraz okresu użytkowania. CS(10) jest ważnym parametrem porównawczym, ale nie stanowi samodzielnego dopuszczalnego obciążenia długotrwałego.</p></div></details>
          <details><summary>Czy grafitowy styropian pozwala zmniejszyć grubość?</summary><div class="rk-ins-faq-answer"><p>Niższa deklarowana lambda daje większy opór przy tej samej grubości, więc może pomóc przy ograniczonej wysokości. Trzeba jednak porównać konkretną λD, właściwości mechaniczne, przeznaczenie i pełną przegrodę, a nie sam kolor płyty.</p></div></details>
          <details><summary>Czy XPS jest zawsze lepszy od EPS?</summary><div class="rk-ins-faq-answer"><p>Nie. XPS może mieć właściwości korzystne w określonych warunkach wilgotnościowych lub mechanicznych, ale powinien być użyty tam, gdzie uzasadnia to projekt. Wyższa cena lub wytrzymałość nie czynią go automatycznie najlepszym materiałem dla każdego pomieszczenia.</p></div></details>
          <details><summary>Czy metalizowana folia odbija ciepło do pomieszczenia?</summary><div class="rk-ins-faq-answer"><p>Bez odpowiedniej szczeliny powietrznej nie należy traktować jej jak samodzielnej refleksyjnej izolacji cieplnej. Pod jastrychem pełni przede wszystkim funkcje wykonawcze i rozdzielające, a nadruk pomaga w montażu rur.</p></div></details>
          <details><summary>Czy lepiej układać styropian w jednej czy dwóch warstwach?</summary><div class="rk-ins-faq-answer"><p>Dwie warstwy ułatwiają przesunięcie spoin, lecz poprawny może być również zaprojektowany układ jednowarstwowy. Najważniejsze są równe podłoże, pełne podparcie, dopasowanie płyt, ciągłość izolacji oraz zgodność właściwości materiału z projektem.</p></div></details>
          <details><summary>Jak policzyć m³ styropianu na 100 m² podłogi?</summary><div class="rk-ins-faq-answer"><p>Pomnóż powierzchnię przez łączną grubość wyrażoną w metrach. Dla 100 m² i 15 cm otrzymasz 15 m³ materiału wbudowanego. Do zakupu dodaj uzasadniony zapas i przelicz każdą grubość na liczbę pełnych paczek.</p></div></details>
          <details><summary>Czy kalkulator oblicza współczynnik U podłogi na gruncie?</summary><div class="rk-ins-faq-answer"><p>Nie. Narzędzie celowo oblicza opór samej izolacji, ilość materiału, paczki, wysokość i wymiar geometryczny B′. Kompletne U podłogi na gruncie wymaga modelu uwzględniającego geometrię, grunt, krawędzie i wszystkie warstwy.</p></div></details>
        </div>
      </section>

      <section class="rk-ins-section" id="rk-ins-sources">
        <span class="rk-ins-kicker">Źródła publiczne i normatywne</span>
        <h2>Podstawa techniczna opracowania</h2>
        <div class="rk-ins-source-box">
          <ul>
            <li><a href="https://eli.gov.pl/eli/DU/2022/1225/ogl" target="_blank" rel="noopener nofollow">Elektroniczny Dziennik Ustaw — obowiązujący tekst warunków technicznych</a>, w tym wymaganie U<sub>C(max)</sub> dla podłogi na gruncie.</li>
            <li><a href="https://www.iso.org/standard/65716.html" target="_blank" rel="noopener nofollow">ISO 13370:2017</a> — metody obliczania przenoszenia ciepła przez podłogi i inne elementy budynku stykające się z gruntem.</li>
            <li><a href="https://www.iso.org/standard/40966.html" target="_blank" rel="noopener nofollow">ISO 10456:2007</a> — zasady dotyczące deklarowanych i projektowych wartości cieplnych materiałów oraz wyrobów.</li>
            <li><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="noopener nofollow">ISO 11855-2:2021</a> — podstawy projektowania oraz wyznaczania mocy wbudowanych systemów ogrzewania i chłodzenia płaszczyznowego.</li>
            <li><a href="https://single-market-economy.ec.europa.eu/sectors/construction/construction-products-regulation-cpr/declaration-performance-and-ce-marking_en" target="_blank" rel="noopener nofollow">Komisja Europejska — deklaracja właściwości użytkowych i oznakowanie CE</a>.</li>
          </ul>
          <p>Normy mogą być chronione prawem autorskim i odpłatne. Artykuł omawia zasady oraz zakres metod, ale nie zastępuje pełnego tekstu norm, dokumentacji projektowej ani deklaracji właściwości konkretnego produktu.</p>
        </div>
        <div class="rk-ins-update">Ostatnia aktualizacja merytoryczna: 30 sierpnia 2026 r.</div>
      </section>
    </main>

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

      <header class="rk-ins-author-head">
        <div><span class="rk-ins-kicker" style="color:#83f1fb">Autor opracowania</span><div class="rk-ins-author-title">Robert Kucharski</div><p>Projektant instalacji sanitarnych • specjalista HVAC i ogrzewania podłogowego</p></div>
        <span class="rk-ins-author-mark">IZOLACJE • PODŁOGÓWKA • HVAC</span>
      </header>

      <div class="rk-ins-author-layout">
        <aside class="rk-ins-author-side">
          <div class="rk-ins-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-ins-author-name">Robert Kucharski</div>
          <div class="rk-ins-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
          <div class="rk-ins-author-social-label">Znajdziesz mnie również:</div>
          <div class="rk-ins-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-ins-author-main">
          <blockquote class="rk-ins-author-quote"><p>„Dobra izolacja podłogi nie zaczyna się od pytania o liczbę centymetrów. Najpierw trzeba wiedzieć, co izolujemy, jaki opór ma materiał, jakie obciążenia przenosi i czy cały przekrój zmieści się w budynku.”</p></blockquote>
          <div class="rk-ins-author-tabs" role="tablist" aria-label="Informacje o autorze">
            <label class="rk-ins-author-tab" for="rk-ins-author-about">O autorze</label>
            <label class="rk-ins-author-tab" for="rk-ins-author-exp">Doświadczenie</label>
            <label class="rk-ins-author-tab" for="rk-ins-author-sites">Portale</label>
          </div>
          <div class="rk-ins-author-panel rk-ins-author-panel-about"><p>Projektuję wodne ogrzewanie podłogowe, łącząc obliczenia strat ciepła z doborem temperatur, rozstawów, przepływów, długości pętli, strat ciśnienia i nastaw rozdzielaczy.</p></div>
          <div class="rk-ins-author-panel rk-ins-author-panel-exp"><p>W dokumentacji koordynuję założenia cieplne z rzeczywistym układem warstw podłogi. Dzięki temu instalacja nie jest dopasowywana „na oko” dopiero po ułożeniu izolacji i wykonaniu progów.</p></div>
          <div class="rk-ins-author-panel rk-ins-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-ins-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-ins-final-cta" aria-label="Projekt ogrzewania podłogowego skoordynowany z warstwami">
      <span class="rk-ins-kicker" style="color:#83f1fb">Zamknij decyzje przed wejściem wykonawcy</span>
      <div class="rk-ins-cta-title">Otrzymaj projekt podłogówki dopasowany do budynku i posadzki</div>
      <p>Dokumentacja łączy straty ciepła, powierzchnie czynne, temperaturę zasilania i powrotu, rozstawy rur, długości pętli, przepływy oraz nastawy. Warstwy podłogi stają się jednym z założeń projektu, a nie niespodzianką odkrytą podczas montażu.</p>
      <a class="rk-ins-cta-button rk-ins-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
      <small class="rk-ins-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
    </section>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#article",
      "url": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/",
      "headline": "Ile styropianu pod ogrzewanie podłogowe? Grubość, opór R i kalkulator ilości",
      "description": "Techniczny poradnik o doborze izolacji pod ogrzewanie podłogowe z analizatorem oporu R, objętości, liczby paczek i wysokości warstw.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-30",
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#webpage"},
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "about": [
        {"@type": "Thing", "name": "Izolacja pod ogrzewanie podłogowe"},
        {"@type": "Thing", "name": "Styropian podłogowy"},
        {"@type": "Thing", "name": "Opór cieplny izolacji"},
        {"@type": "Thing", "name": "Podłoga na gruncie"}
      ],
      "keywords": [
        "ile styropianu pod ogrzewanie podłogowe",
        "jaka grubość styropianu pod podłogówkę",
        "styropian pod podłogówkę 10 czy 15 cm",
        "opór cieplny izolacji podłogowej",
        "ile m3 styropianu na podłogę"
      ],
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"}
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#webpage",
      "url": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/",
      "name": "Ile styropianu pod ogrzewanie podłogowe? Grubość, opór R i kalkulator ilości",
      "description": "Jak dobrać izolację pod podłogówkę i obliczyć jej opór, objętość, liczbę paczek oraz wysokość wszystkich warstw.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-30",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#breadcrumb"},
      "mainEntity": [
        {"@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#application"},
        {"@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#howto"},
        {"@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#faq"}
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#breadcrumb",
      "itemListElement": [
        {"@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/"},
        {"@type": "ListItem", "position": 2, "name": "Ogrzewanie podłogowe", "item": "https://projekt-ogrzewania.pl/category/ogrzewanie-podlogowe/"},
        {"@type": "ListItem", "position": 3, "name": "Ile styropianu pod ogrzewanie podłogowe?", "item": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/"}
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#application",
      "name": "Interaktywny analizator izolacji i warstw podłogi",
      "url": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#rk-ins-analyzer",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "Obsługa JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "description": "Narzędzie oblicza opór cieplny warstw izolacji, objętość materiału, zapas, liczbę paczek, bilans wysokości i wymiar charakterystyczny podłogi na gruncie."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#howto",
      "name": "Jak sprawdzić izolację przed ułożeniem ogrzewania podłogowego?",
      "description": "Kolejność kontroli przegrody, materiału, wysokości, instalacji i wykonania przed zakryciem izolacji.",
      "inLanguage": "pl-PL",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Potwierdź miejsce i wymagania przegrody", "text": "Ustal, czy analizujesz grunt, ogrzewane pomieszczenie, piwnicę, garaż czy przestrzeń zewnętrzną. Sprawdź projekt budowlany i cieplny."},
        {"@type": "HowToStep", "position": 2, "name": "Zmierz dostępną wysokość", "text": "Porównaj poziom podłoża z gotową posadzką przy drzwiach, schodach, oknach tarasowych, odpływach i sąsiednich pomieszczeniach."},
        {"@type": "HowToStep", "position": 3, "name": "Zbierz dokumenty materiału", "text": "Sprawdź nazwę wariantu, przeznaczenie, deklarowaną lambdę, CS(10), tolerancję grubości i inne parametry wymagane przez projekt."},
        {"@type": "HowToStep", "position": 4, "name": "Policz opór każdej warstwy", "text": "Dodaj iloraz grubości i lambdy dla warstwy dolnej i górnej. Nie nazywaj otrzymanej sumy współczynnikiem U podłogi na gruncie."},
        {"@type": "HowToStep", "position": 5, "name": "Skoordynuj instalacje podpodłogowe", "text": "Usuń kolizje, przewidź warstwę wyrównawczą i zapewnij stabilne podparcie płyt bez pustych kieszeni."},
        {"@type": "HowToStep", "position": 6, "name": "Ułóż płyty na równym podłożu", "text": "Dopasuj krawędzie, przesuń spoiny kolejnej warstwy i zachowaj ciągłość przy przejściach oraz elementach konstrukcyjnych."},
        {"@type": "HowToStep", "position": 7, "name": "Wykonaj warstwy rozdzielające i brzegowe", "text": "Zastosuj rozwiązania wskazane w projekcie jastrychu, hydroizolacji i dylatacji. Nie zamieniaj jednej funkcji na drugą."},
        {"@type": "HowToStep", "position": 8, "name": "Odbierz warstwy przed montażem rur", "text": "Zrób zdjęcia, zachowaj etykiety i deklaracje, sprawdź poziomy, stabilność, szczeliny oraz zgodność z dokumentacją przed zakryciem."}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {"@type": "Question", "name": "Czy 10 cm styropianu pod ogrzewanie podłogowe wystarczy?", "acceptedAnswer": {"@type": "Answer", "text": "Nie da się tego potwierdzić bez lokalizacji podłogi, lambdy materiału, pełnego układu warstw i obliczeń przegrody. Dziesięć centymetrów przy lambda 0,036 daje opór samej izolacji około 2,78 m²K/W, ale nie jest to kompletne U podłogi na gruncie."}},
        {"@type": "Question", "name": "Czy 15 cm EPS spełnia wymagania dla każdej podłogi na gruncie?", "acceptedAnswer": {"@type": "Answer", "text": "Nie automatycznie. Piętnaście centymetrów przy lambda 0,036 daje opór izolacji około 4,17 m²K/W. Zgodność całej podłogi zależy również od geometrii, krawędzi, pozostałych warstw i metody obliczeniowej dla kontaktu z gruntem."}},
        {"@type": "Question", "name": "Ile styropianu dać pod podłogówkę na piętrze?", "acceptedAnswer": {"@type": "Answer", "text": "Na stropie pomiędzy ogrzewanymi pomieszczeniami kryteria są inne niż na gruncie. Znaczenie mają wymagania akustyczne, konstrukcja podłogi pływającej, instalacje i dostępna wysokość. Wartość trzeba potwierdzić w projekcie."}},
        {"@type": "Question", "name": "Czy pod podłogówkę zawsze trzeba stosować EPS 100?", "acceptedAnswer": {"@type": "Answer", "text": "Nie istnieje taka uniwersalna reguła prawna. Produkt powinien być przeznaczony do podłóg i dobrany do obciążeń, jastrychu oraz okresu użytkowania. CS(10) jest ważnym parametrem porównawczym, ale nie stanowi samodzielnego dopuszczalnego obciążenia długotrwałego."}},
        {"@type": "Question", "name": "Czy grafitowy styropian pozwala zmniejszyć grubość?", "acceptedAnswer": {"@type": "Answer", "text": "Niższa deklarowana lambda daje większy opór przy tej samej grubości, więc może pomóc przy ograniczonej wysokości. Trzeba jednak porównać właściwości mechaniczne, przeznaczenie i pełną przegrodę, a nie sam kolor płyty."}},
        {"@type": "Question", "name": "Czy XPS jest zawsze lepszy od EPS?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. XPS może mieć właściwości korzystne w określonych warunkach wilgotnościowych lub mechanicznych, ale powinien być użyty tam, gdzie uzasadnia to projekt."}},
        {"@type": "Question", "name": "Czy metalizowana folia odbija ciepło do pomieszczenia?", "acceptedAnswer": {"@type": "Answer", "text": "Bez odpowiedniej szczeliny powietrznej nie należy traktować jej jak samodzielnej refleksyjnej izolacji cieplnej. Pod jastrychem pełni przede wszystkim funkcje wykonawcze i rozdzielające, a nadruk pomaga w montażu rur."}},
        {"@type": "Question", "name": "Czy lepiej układać styropian w jednej czy dwóch warstwach?", "acceptedAnswer": {"@type": "Answer", "text": "Dwie warstwy ułatwiają przesunięcie spoin, lecz poprawny może być również zaprojektowany układ jednowarstwowy. Najważniejsze są równe podłoże, pełne podparcie, dopasowanie płyt, ciągłość izolacji oraz zgodność właściwości materiału z projektem."}},
        {"@type": "Question", "name": "Jak policzyć m3 styropianu na 100 m2 podłogi?", "acceptedAnswer": {"@type": "Answer", "text": "Pomnóż powierzchnię przez łączną grubość wyrażoną w metrach. Dla 100 m² i 15 cm otrzymasz 15 m³ materiału wbudowanego. Do zakupu dodaj uzasadniony zapas i przelicz każdą grubość na liczbę pełnych paczek."}},
        {"@type": "Question", "name": "Czy kalkulator oblicza współczynnik U podłogi na gruncie?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Narzędzie celowo oblicza opór samej izolacji, ilość materiału, paczki, wysokość i wymiar geometryczny B prim. Kompletne U podłogi na gruncie wymaga modelu uwzględniającego geometrię, grunt, krawędzie i wszystkie warstwy."}}
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/robert-kucharski/",
      "jobTitle": "Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego",
      "worksFor": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "affiliation": [
        {"@id": "https://projekt-ogrzewania.pl/#organization"},
        {"@id": "https://remont.biz.pl/#organization"},
        {"@id": "https://sobir.pl/#organization"}
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt-Ogrzewania.pl",
      "inLanguage": "pl-PL",
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"}
    }
  ]
}
</script>

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

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

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

  var readNumber = function (id, fallback, minimum, maximum) {
    var field = byId(id);
    var value = parseFloat(field.value);
    if (!Number.isFinite(value)) {
      return fallback;
    }
    return Math.min(maximum, Math.max(minimum, value));
  };

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

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

  var svgNamespace = "http://www.w3.org/2000/svg";

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

  var drawChart = function (lambda1, lambda2, totalThickness, totalR) {
    var chart = byId("rk-ins-chart");
    if (!chart) {
      return;
    }

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

    chart.appendChild(svgElement("title", {id: "rk-ins-chart-title"}, "Wykres oporu cieplnego izolacji w zależności od grubości"));
    chart.appendChild(svgElement("desc", {id: "rk-ins-chart-desc"}, "Dwie linie dla wpisanych wartości przewodzenia ciepła oraz punkt pokazujący aktualną kombinację warstw."));

    var left = 60;
    var top = 28;
    var right = 650;
    var bottom = 274;
    var width = right - left;
    var height = bottom - top;
    var xMaximum = Math.max(300, Math.ceil(totalThickness / 50) * 50);
    var minimumLambda = Math.min(lambda1, lambda2);
    var theoreticalR = (xMaximum / 1000) / minimumLambda;
    var yMaximum = Math.max(8, Math.ceil(Math.max(theoreticalR, totalR) / 2) * 2);

    chart.appendChild(svgElement("rect", {x: 0, y: 0, width: 680, height: 330, fill: "#f8fbfc"}));

    var xStep = xMaximum / 6;
    var yStep = yMaximum / 4;
    var index;

    for (index = 0; index <= 6; index += 1) {
      var xValue = xStep * index;
      var x = left + (xValue / xMaximum) * width;
      chart.appendChild(svgElement("line", {x1: x, y1: top, x2: x, y2: bottom, stroke: "#d9e7ed", "stroke-width": 1}));
      chart.appendChild(svgElement("text", {x: x, y: 296, fill: "#617684", "font-size": 11, "text-anchor": "middle", "font-family": "system-ui, sans-serif"}, format(xValue, 0)));
    }

    for (index = 0; index <= 4; index += 1) {
      var yValue = yStep * index;
      var y = bottom - (yValue / yMaximum) * height;
      chart.appendChild(svgElement("line", {x1: left, y1: y, x2: right, y2: y, stroke: "#d9e7ed", "stroke-width": 1}));
      chart.appendChild(svgElement("text", {x: 49, y: y + 4, fill: "#617684", "font-size": 11, "text-anchor": "end", "font-family": "system-ui, sans-serif"}, format(yValue, 1)));
    }

    chart.appendChild(svgElement("line", {x1: left, y1: bottom, x2: right, y2: bottom, stroke: "#526b78", "stroke-width": 2}));
    chart.appendChild(svgElement("line", {x1: left, y1: top, x2: left, y2: bottom, stroke: "#526b78", "stroke-width": 2}));
    chart.appendChild(svgElement("text", {x: 355, y: 320, fill: "#344d5a", "font-size": 12, "font-weight": 800, "text-anchor": "middle", "font-family": "system-ui, sans-serif"}, "łączna grubość izolacji [mm]"));
    chart.appendChild(svgElement("text", {x: 18, y: 151, fill: "#344d5a", "font-size": 12, "font-weight": 800, "text-anchor": "middle", "font-family": "system-ui, sans-serif", transform: "rotate(-90 18 151)"}, "opór R [m²K/W]"));

    var endpointR1 = (xMaximum / 1000) / lambda1;
    var endpointR2 = (xMaximum / 1000) / lambda2;
    var endpointY1 = bottom - (endpointR1 / yMaximum) * height;
    var endpointY2 = bottom - (endpointR2 / yMaximum) * height;

    chart.appendChild(svgElement("line", {x1: left, y1: bottom, x2: right, y2: endpointY1, stroke: "#28c9da", "stroke-width": 5, "stroke-linecap": "round"}));
    chart.appendChild(svgElement("line", {x1: left, y1: bottom, x2: right, y2: endpointY2, stroke: "#ff7438", "stroke-width": 4, "stroke-linecap": "round", "stroke-dasharray": "10 7"}));

    var markerX = left + (Math.min(totalThickness, xMaximum) / xMaximum) * width;
    var markerY = bottom - (Math.min(totalR, yMaximum) / yMaximum) * height;
    chart.appendChild(svgElement("line", {x1: markerX, y1: markerY, x2: markerX, y2: bottom, stroke: "#e7ad2f", "stroke-width": 2, "stroke-dasharray": "5 5"}));
    chart.appendChild(svgElement("circle", {cx: markerX, cy: markerY, r: 8, fill: "#e7ad2f", stroke: "#ffffff", "stroke-width": 3}));
    chart.appendChild(svgElement("text", {x: markerX, y: Math.max(18, markerY - 14), fill: "#74510a", "font-size": 12, "font-weight": 900, "text-anchor": "middle", "font-family": "system-ui, sans-serif"}, format(totalThickness, 0) + " mm • R " + format(totalR, 2)));
  };

  var updateStack = function (finish, heating, layer2, layer1, service) {
    var values = [
      {id: "rk-ins-stack-finish", value: finish, label: "Okładzina"},
      {id: "rk-ins-stack-heating", value: heating, label: "Warstwa grzewcza"},
      {id: "rk-ins-stack-layer2", value: layer2, label: "Izolacja 2"},
      {id: "rk-ins-stack-layer1", value: layer1, label: "Izolacja 1"},
      {id: "rk-ins-stack-service", value: service, label: "Warstwa instalacyjna"}
    ];

    values.forEach(function (item) {
      var node = byId(item.id);
      if (!node) {
        return;
      }
      if (item.value <= 0) {
        node.style.display = "none";
        return;
      }
      node.style.display = "flex";
      node.style.flexGrow = String(Math.max(8, item.value));
      node.style.flexBasis = "0";
      node.querySelector("span").textContent = item.label;
      node.querySelector("small").textContent = format(item.value, 0) + " mm";
    });
  };

  var addDiagnostic = function (container, textValue, stateClass) {
    var item = document.createElement("div");
    item.className = "rk-ins-diagnostic";
    if (stateClass) {
      item.classList.add(stateClass);
    }
    item.textContent = textValue;
    container.appendChild(item);
  };

  var update = function () {
    var floorType = byId("rk-ins-floor-type").value;
    var area = readNumber("rk-ins-area", 120, 1, 2000);
    var perimeter = readNumber("rk-ins-perimeter", 46, 1, 1000);
    var availableHeight = readNumber("rk-ins-available-height", 230, 20, 1000);
    var finish = readNumber("rk-ins-finish", 15, 0, 100);
    var heating = readNumber("rk-ins-heating-layer", 70, 10, 250);
    var service = readNumber("rk-ins-service-layer", 0, 0, 300);
    var layer1 = readNumber("rk-ins-layer1-thickness", 100, 0, 400);
    var lambda1 = readNumber("rk-ins-layer1-lambda", 0.036, 0.020, 0.080);
    var pack1 = readNumber("rk-ins-layer1-pack", 3, 0.1, 100);
    var csValue = readNumber("rk-ins-cs", 100, 10, 1000);
    var layer2 = readNumber("rk-ins-layer2-thickness", 50, 0, 400);
    var lambda2 = readNumber("rk-ins-layer2-lambda", 0.036, 0.020, 0.080);
    var pack2 = readNumber("rk-ins-layer2-pack", 6, 0.1, 100);
    var waste = readNumber("rk-ins-waste", 5, 0, 30);

    var totalThickness = layer1 + layer2;
    var r1 = (layer1 / 1000) / lambda1;
    var r2 = (layer2 / 1000) / lambda2;
    var totalR = r1 + r2;
    var installedVolume = area * totalThickness / 1000;
    var reserveFactor = 1 + waste / 100;
    var purchaseVolume = installedVolume * reserveFactor;
    var purchaseArea = area * reserveFactor;
    var packs1 = layer1 > 0 ? Math.ceil(purchaseArea / pack1) : 0;
    var packs2 = layer2 > 0 ? Math.ceil(purchaseArea / pack2) : 0;
    var usedHeight = finish + heating + service + totalThickness;
    var balance = availableHeight - usedHeight;
    var isGround = floorType === "ground";
    var bPrime = isGround ? (2 * area) / perimeter : 0;

    setText("rk-ins-result-thickness", format(totalThickness, 0) + " mm");
    setText("rk-ins-result-split", format(layer1, 0) + " + " + format(layer2, 0) + " mm");
    setText("rk-ins-result-r", format(totalR, 2));
    setText("rk-ins-result-volume", format(installedVolume, 2) + " m³");
    setText("rk-ins-result-purchase", format(purchaseVolume, 2) + " m³");
    setText("rk-ins-result-waste-note", "z zapasem " + format(waste, 0) + "%");
    setText("rk-ins-result-pack1", format(packs1, 0));
    setText("rk-ins-result-pack1-note", "dla " + format(pack1, 2) + " m²/paczkę");
    setText("rk-ins-result-pack2", format(packs2, 0));
    setText("rk-ins-result-pack2-note", layer2 > 0 ? "dla " + format(pack2, 2) + " m²/paczkę" : "warstwa wyłączona");
    setText("rk-ins-result-used", format(usedHeight, 0) + " mm");
    setText("rk-ins-result-balance", (balance < 0 ? "−" : "+") + format(Math.abs(balance), 0) + " mm");

    var balanceCard = byId("rk-ins-balance-card");
    balanceCard.classList.remove("is-good", "is-warning", "is-danger");
    var heightStatus = byId("rk-ins-height-status");
    heightStatus.classList.remove("is-danger");

    if (balance < 0) {
      balanceCard.classList.add("is-danger");
      heightStatus.classList.add("is-danger");
      heightStatus.textContent = "Warstwy przekraczają dostępną wysokość o " + format(Math.abs(balance), 0) + " mm. Trzeba zmienić przekrój, a nie ściskać izolację na budowie.";
    } else if (balance < 10) {
      balanceCard.classList.add("is-warning");
      heightStatus.textContent = "Pozostało tylko " + format(balance, 0) + " mm rezerwy. Sprawdź tolerancje wykonawcze, nierówności podłoża, grubość kleju i rzeczywisty poziom progów.";
    } else {
      balanceCard.classList.add("is-good");
      heightStatus.textContent = "Wpisany układ mieści się w dostępnej wysokości z rezerwą " + format(balance, 0) + " mm. To kontrola geometryczna, nie odbiór całej konstrukcji.";
    }

    var perimeterWrap = byId("rk-ins-perimeter-wrap");
    perimeterWrap.hidden = !isGround;

    if (isGround) {
      setText("rk-ins-result-bprime", format(bPrime, 2) + " m");
      setText("rk-ins-result-bprime-note", "2A/P — informacja geometryczna");
    } else {
      setText("rk-ins-result-bprime", "—");
      setText("rk-ins-result-bprime-note", "dotyczy podłogi na gruncie");
    }

    setText("rk-ins-legend1", "λ₁ " + format(lambda1, 3));
    setText("rk-ins-legend2", "λ₂ " + format(lambda2, 3));

    updateStack(finish, heating, layer2, layer1, service);
    drawChart(lambda1, lambda2, totalThickness, totalR);

    var diagnostics = byId("rk-ins-diagnostics");
    diagnostics.innerHTML = "";

    if (floorType === "ground") {
      addDiagnostic(diagnostics, "Podłoga na gruncie: obowiązujące wymaganie Uc(max) dla pomieszczenia ogrzewanego do co najmniej 16°C wynosi 0,30 W/(m²K). Samo R izolacji i B′ nie wystarczają do potwierdzenia zgodności.", "is-warning");
    } else if (floorType === "heated") {
      addDiagnostic(diagnostics, "Strop nad ogrzewanym pomieszczeniem: oprócz przepływu ciepła sprawdź akustykę, konstrukcję podłogi pływającej i dopuszczalne odkształcenia warstw.", "");
    } else if (floorType === "unheated") {
      addDiagnostic(diagnostics, "Strop nad nieogrzewaną piwnicą lub garażem: potrzebna jest temperatura po stronie nieogrzewanej oraz pełne obliczenie całej przegrody.", "is-warning");
    } else {
      addDiagnostic(diagnostics, "Podłoga nad powietrzem zewnętrznym: nie stosuj uproszczeń dla stropu między ogrzewanymi pomieszczeniami. Sprawdź wymagania przegrody zewnętrznej i mostki.", "is-warning");
    }

    if (balance < 0) {
      addDiagnostic(diagnostics, "Kolizja wysokości: brakuje " + format(Math.abs(balance), 0) + " mm. Nie redukuj przypadkowo jastrychu ani izolacji bez uzgodnienia nowego przekroju.", "is-danger");
    } else {
      addDiagnostic(diagnostics, "Bilans wysokości: układ wykorzystuje " + format(usedHeight, 0) + " z dostępnych " + format(availableHeight, 0) + " mm.", "");
    }

    addDiagnostic(diagnostics, "Wpisane CS(10) = " + format(csValue, 0) + " kPa. Ta wartość opisuje naprężenie przy 10% odkształceniu i sama nie potwierdza dopuszczalnego obciążenia długotrwałego.", csValue < 70 ? "is-warning" : "");
    addDiagnostic(diagnostics, "Opór R = " + format(totalR, 2) + " m²K/W dotyczy wyłącznie dwóch wpisanych warstw izolacji. Lambdy powinny pochodzić z deklaracji właściwości konkretnego wyrobu.", "");
  };

  var fields = root.querySelectorAll("#rk-ins-tool input, #rk-ins-tool select");
  Array.prototype.forEach.call(fields, function (field) {
    field.addEventListener("input", update);
    field.addEventListener("change", update);
  });

  var progress = byId("rk-ins-progress");
  var updateProgress = function () {
    if (!progress) {
      return;
    }
    var rootTop = window.scrollY + root.getBoundingClientRect().top;
    var distance = root.scrollHeight - window.innerHeight;
    if (distance <= 0) {
      progress.style.width = "100%";
      return;
    }
    var current = window.scrollY - rootTop;
    var percentage = Math.min(100, Math.max(0, current / distance * 100));
    progress.style.width = percentage + "%";
  };

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

  update();
  updateProgress();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-styropianu-pod-ogrzewanie-podlogowe/">Ile styropianu pod ogrzewanie podłogowe? Grubość, opór R i kalkulator ilości.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>EN ISO 15875:2025 – wymagania dla rur PE-X w ogrzewaniu podłogowym.</title>
		<link>https://projekt-ogrzewania.pl/norma-en-iso-15875/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Thu, 27 Feb 2025 18:39:53 +0000</pubDate>
				<category><![CDATA[Bezpieczeństwo instalacji]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Materiały budowlane]]></category>
		<category><![CDATA[Normy budowlane]]></category>
		<category><![CDATA[Normy grzewcze]]></category>
		<category><![CDATA[Normy i certyfikaty]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Technologie grzewcze]]></category>
		<category><![CDATA[bezpieczeństwo instalacji]]></category>
		<category><![CDATA[certyfikaty jakości]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[norma en iso 15875]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[porady budowlane]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<category><![CDATA[rury grzewcze]]></category>
		<category><![CDATA[tworzywa sztuczne]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2301</guid>

					<description><![CDATA[<p>Planujesz montaż ogrzewania podłogowego? Dowiedz się, dlaczego norma EN ISO 15875 jest kluczowa dla bezpieczeństwa i trwałości Twojej instalacji. W artykule omawiamy wymagania tej normy, korzyści z jej stosowania oraz praktyczne wskazówki dotyczące projektowania systemów grzewczych. Sprawdź, jak wybrać odpowiednie rury i uniknąć błędów, które mogą wpłynąć na efektywność ogrzewania.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/norma-en-iso-15875/">EN ISO 15875:2025 – wymagania dla rur PE-X w ogrzewaniu podłogowym.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-iso-guide {
    --rk-navy: #0b2536;
    --rk-navy-2: #12394d;
    --rk-navy-3: #1b465b;
    --rk-cyan: #29c4d7;
    --rk-cyan-dark: #078fb3;
    --rk-cyan-soft: #def7fa;
    --rk-orange: #ff6846;
    --rk-orange-dark: #e44f31;
    --rk-yellow: #f2b526;
    --rk-green: #2fcda1;
    --rk-green-dark: #168267;
    --rk-red: #d7504a;
    --rk-ink: #10283a;
    --rk-copy: #3c5668;
    --rk-muted: #6b8191;
    --rk-line: #d3e2e8;
    --rk-bg: #f3f8fa;
    --rk-white: #ffffff;
    color: var(--rk-ink);
    font-family: Arial, Helvetica, sans-serif;
    line-height: 1.62;
    margin: 0 auto;
    max-width: 1360px;
    overflow-wrap: anywhere;
    width: 100%;
  }

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

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

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

  #rk-iso-guide button {
    font: inherit;
  }

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

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

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

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

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

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

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

  #rk-iso-guide .rk-iso-hero-title {
    color: #ffffff;
    font-size: clamp(2.4rem, 6vw, 5.15rem);
    margin: 0;
    max-width: 1200px;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-iso-guide .rk-iso-section-dark .rk-iso-card {
    background: #173e51;
    border-color: #356178;
  }

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

  #rk-iso-guide .rk-iso-section-dark .rk-iso-card-number,
  #rk-iso-guide .rk-iso-section-dark .rk-iso-icon {
    background: #23566d;
    color: #7ce9f1;
  }

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

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

  #rk-iso-guide .rk-iso-section-dark .rk-iso-card h3 {
    color: #ffffff;
  }

  #rk-iso-guide .rk-iso-section-dark .rk-iso-card p,
  #rk-iso-guide .rk-iso-section-dark .rk-iso-card li {
    color: #c8dce3;
  }

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

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

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

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

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

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

  #rk-iso-guide .rk-iso-section-dark .rk-iso-bullets {
    color: #c8dce3;
  }

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

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

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

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

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

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

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

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

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

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

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

  #rk-iso-guide .rk-iso-criterion {
    align-items: center;
    background: var(--rk-navy);
    border-radius: 20px;
    display: grid;
    gap: 26px;
    grid-template-columns: 260px minmax(0, 1fr);
    margin-top: 30px;
    padding: 30px;
  }

  #rk-iso-guide .rk-iso-criterion-value {
    background: #173e51;
    border: 1px solid #356178;
    border-radius: 16px;
    color: #72e7ef;
    font-size: clamp(1.65rem, 4vw, 2.55rem);
    font-weight: 900;
    line-height: 1.1;
    padding: 26px 18px;
    text-align: center;
  }

  #rk-iso-guide .rk-iso-criterion-value small {
    color: #bad3dc;
    display: block;
    font-size: 0.72rem;
    letter-spacing: 0.05em;
    margin-top: 10px;
    text-transform: uppercase;
  }

  #rk-iso-guide .rk-iso-criterion-copy h3 {
    color: #ffffff;
    font-size: 1.35rem;
    margin: 0 0 9px;
  }

  #rk-iso-guide .rk-iso-criterion-copy p {
    color: #c8dce3;
    margin: 0;
  }

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

  #rk-iso-guide .rk-iso-pathway-head {
    border-bottom: 1px solid #315a70;
    margin-bottom: 22px;
    padding-bottom: 20px;
  }

  #rk-iso-guide .rk-iso-pathway-head h3 {
    color: #ffffff;
    font-size: clamp(1.5rem, 3vw, 2.25rem);
    line-height: 1.2;
    margin: 0;
  }

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

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

  #rk-iso-guide .rk-iso-stage-tab {
    align-items: flex-start;
    background: #173e51;
    border: 1px solid #356178;
    border-radius: 14px;
    color: #ffffff;
    cursor: pointer;
    display: flex;
    gap: 11px;
    line-height: 1.3;
    min-height: 78px;
    padding: 14px;
    text-align: left;
  }

  #rk-iso-guide .rk-iso-stage-tab span {
    align-items: center;
    background: #23566d;
    border-radius: 9px;
    color: #76e8f1;
    display: inline-flex;
    flex: 0 0 34px;
    font-weight: 900;
    height: 34px;
    justify-content: center;
  }

  #rk-iso-guide .rk-iso-stage-tab strong {
    display: block;
    padding-top: 5px;
  }

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

  #rk-iso-guide .rk-iso-stage-tab[aria-selected="true"] span {
    background: #ffffff;
    color: #08728b;
  }

  #rk-iso-guide .rk-iso-stage-panel {
    background: #ffffff;
    border-left: 7px solid var(--rk-cyan);
    border-radius: 17px;
    margin-top: 18px;
    padding: 25px;
  }

  #rk-iso-guide .rk-iso-stage-label {
    color: var(--rk-cyan-dark);
    display: block;
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.09em;
    text-transform: uppercase;
  }

  #rk-iso-guide .rk-iso-stage-panel h3 {
    color: var(--rk-ink);
    font-size: 1.65rem;
    line-height: 1.25;
    margin: 8px 0 18px;
  }

  #rk-iso-guide .rk-iso-stage-facts {
    display: grid;
    gap: 13px;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #rk-iso-guide .rk-iso-stage-fact {
    background: #f3f8fa;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    padding: 17px;
  }

  #rk-iso-guide .rk-iso-stage-fact strong {
    color: var(--rk-cyan-dark);
    display: block;
    font-size: 0.72rem;
    letter-spacing: 0.07em;
    margin-bottom: 7px;
    text-transform: uppercase;
  }

  #rk-iso-guide .rk-iso-stage-fact p {
    color: var(--rk-copy);
    margin: 0;
  }

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

  #rk-iso-guide .rk-iso-checkstep {
    background: #ffffff;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    padding: 21px;
    position: relative;
  }

  #rk-iso-guide .rk-iso-checkstep::after {
    color: var(--rk-cyan);
    content: "›";
    font-size: 2rem;
    font-weight: 900;
    position: absolute;
    right: -12px;
    top: 40%;
    z-index: 2;
  }

  #rk-iso-guide .rk-iso-checkstep:last-child::after {
    content: "";
  }

  #rk-iso-guide .rk-iso-checkstep span {
    color: var(--rk-cyan-dark);
    display: block;
    font-size: 0.73rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    margin-bottom: 7px;
    text-transform: uppercase;
  }

  #rk-iso-guide .rk-iso-checkstep strong {
    color: var(--rk-ink);
    display: block;
    line-height: 1.35;
  }

  #rk-iso-guide .rk-iso-checkstep p {
    color: var(--rk-copy);
    font-size: 0.9rem;
    margin: 8px 0 0;
  }

  #rk-iso-guide .rk-iso-marking {
    background: var(--rk-navy);
    border-radius: 18px;
    color: #ffffff;
    margin-top: 28px;
    padding: 24px;
  }

  #rk-iso-guide .rk-iso-marking-line {
    background: #ffffff;
    border: 5px solid var(--rk-cyan);
    border-radius: 999px;
    color: var(--rk-ink);
    display: flex;
    flex-wrap: wrap;
    font-family: Consolas, Monaco, monospace;
    font-size: 0.88rem;
    font-weight: 800;
    gap: 8px;
    padding: 14px 20px;
  }

  #rk-iso-guide .rk-iso-marking-line span {
    background: #edf7f9;
    border-radius: 7px;
    padding: 4px 7px;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    #rk-iso-guide .rk-iso-checkstep:nth-child(2)::after {
      content: "";
    }

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

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

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

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

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

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

    #rk-iso-guide .rk-iso-criterion {
      grid-template-columns: minmax(0, 1fr);
    }
  }

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

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

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

    #rk-iso-guide .rk-iso-checkstep::after,
    #rk-iso-guide .rk-iso-checkstep:nth-child(2)::after {
      content: "";
    }

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

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

    #rk-iso-guide .rk-iso-pathway,
    #rk-iso-guide .rk-iso-cta,
    #rk-iso-guide .rk-iso-criterion {
      border-radius: 17px;
      padding: 20px;
    }

    #rk-iso-guide .rk-iso-stage-panel {
      padding: 18px;
    }

    #rk-iso-guide .rk-iso-cta-button {
      text-align: center;
      width: 100%;
    }

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

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

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

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

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

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

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

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

    #rk-iso-guide .rk-iso-marking-line {
      border-radius: 16px;
    }

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

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

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

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

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

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

    #rk-iso-guide .rk-iso-hero-title {
      font-size: 2.18rem;
    }

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

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

<article id="rk-iso-guide" aria-labelledby="rk-iso-visual-title">
  <div class="rk-iso-shell">
    <header class="rk-iso-hero">
      <span class="rk-iso-kicker">Rury PE-X · aktualizacja techniczna 2026</span>
      <div class="rk-iso-hero-title" id="rk-iso-visual-title">EN ISO 15875: <span>jak sprawdzić rurę PE-X bez nadinterpretacji normy?</span></div>
      <p class="rk-iso-hero-lead">Seria ISO 15875 opisuje systemy przewodów z polietylenu sieciowanego PE-X do instalacji wody ciepłej, zimnej i ogrzewania. Nie dobiera jednak rozstawu podłogówki, nie potwierdza automatycznie bariery tlenowej i nie zamienia samego nadruku na rurze w dowód zgodności całego systemu.</p>
      <div class="rk-iso-hero-tags" aria-label="Zakres poradnika">
        <span>części 1, 2, 3 i 5</span>
        <span>PE-Xa, PE-Xb i PE-Xc</span>
        <span>klasy zastosowania</span>
        <span>rura, kształtka i połączenie</span>
        <span>dokumentacja wyrobu</span>
      </div>
      <div class="rk-iso-meta">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: <strong>około 23 minuty</strong></span>
        <span>Aktualizacja techniczna: <strong>17 września 2026 r.</strong></span>
      </div>
    </header>

    <nav class="rk-iso-shortcuts" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-iso-shortcuts-label">Na skróty</span>
      <a href="#rk-iso-answer">Szybka odpowiedź</a>
      <a href="#rk-iso-current">Wydanie 2025</a>
      <a href="#rk-iso-scope">Zakres normy</a>
      <a href="#rk-iso-series">Części serii</a>
      <a href="#rk-iso-map">Moduł edukacyjny</a>
      <a href="#rk-iso-material">PE-Xa, b i c</a>
      <a href="#rk-iso-classes">Klasy zastosowania</a>
      <a href="#rk-iso-temperature">Temperatura i trwałość</a>
      <a href="#rk-iso-dimensions">Wymiary i nadruk</a>
      <a href="#rk-iso-barrier">Bariera tlenowa</a>
      <a href="#rk-iso-system">Kompletny system</a>
      <a href="#rk-iso-documents">Dokumenty</a>
      <a href="#rk-iso-health">Higiena wody</a>
      <a href="#rk-iso-design">Czego norma nie projektuje</a>
      <a href="#rk-iso-test">Próba instalacji</a>
      <a href="#rk-iso-errors">Błędy interpretacji</a>
      <a href="#rk-iso-checklist">Checklista</a>
      <a href="#rk-iso-summary">Podsumowanie</a>
      <a href="#rk-iso-sources">Źródła</a>
      <a href="#rk-iso-faq">FAQ</a>
      <a href="#rk-iso-author">Autor</a>
    </nav>

    <section class="rk-iso-section" id="rk-iso-answer">
      <span class="rk-iso-eyebrow">Odpowiedź w 60 sekund</span>
      <h2 class="rk-iso-section-title">Co naprawdę oznacza EN ISO 15875 na rurze?</h2>
      <p class="rk-iso-lead"><strong>Odniesienie do EN ISO 15875 mówi, że dokumentacja dotyczy systemu rurowego z polietylenu sieciowanego PE-X.</strong> Aby ocenić konkretny wyrób, trzeba sprawdzić właściwą część serii, wydanie, klasę zastosowania, ciśnienie projektowe, pełny wymiar oraz zgodność rury z kształtkami i połączeniami.</p>
      <div class="rk-iso-answer">
        <strong>Najważniejsza korekta: ISO 15875 nie obejmuje rur PB, PE-RT ani wszystkich rur wielowarstwowych.</strong>
        <p>PB ma własną serię ISO 15876, PE-RT — ISO 22391, a systemy wielowarstwowe — ISO 21003. Sama zgodność rury PE-X z częścią 2 nie oznacza jeszcze, że spełnia ona wymaganie dotyczące przenikania tlenu przez ściankę.</p>
      </div>
      <div class="rk-iso-grid-3">
        <article class="rk-iso-card"><span class="rk-iso-icon">1</span><h3>Sprawdź część normy</h3><p>Część 1 opisuje podstawy, część 2 rury, część 3 kształtki, a część 5 przydatność połączeń i kompletnego systemu.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-icon">2</span><h3>Sprawdź dokładny produkt</h3><p>Numer normy bez typu, wymiaru, klasy, ciśnienia i identyfikacji partii nie wystarcza do odpowiedzialnej decyzji zakupowej.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-icon">3</span><h3>Oddziel normę od projektu</h3><p>Norma wyrobu nie oblicza mocy podłogi, rozstawu, długości pętli, przepływu ani oporu hydraulicznego.</p></article>
      </div>
      <p class="rk-iso-copy">Jeżeli najpierw chcesz uporządkować rodziny materiałowe, zobacz porównanie <a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/">rur do ogrzewania podłogowego</a> oraz osobny poradnik o <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/">rurach PE-X do podłogówki</a>.</p>
    </section>

    <section class="rk-iso-section rk-iso-section-soft" id="rk-iso-current">
      <span class="rk-iso-eyebrow">Stan dokumentów na dzień aktualizacji</span>
      <h2 class="rk-iso-section-title">ISO 15875:2025 zastąpiła międzynarodowe wydanie z 2003 roku</h2>
      <p class="rk-iso-lead">Oficjalny katalog ISO wskazuje drugie wydanie części 1, 2, 3 i 5 opublikowane w październiku 2025 r. Poprzednie części z 2003 r. oraz ich poprawki są oznaczone jako wycofane na poziomie międzynarodowym.</p>
      <div class="rk-iso-grid-3">
        <article class="rk-iso-card"><span class="rk-iso-card-number">2003</span><h3>Starsze wydanie</h3><p>Może nadal występować w dawnych kartach, raportach badań i specyfikacjach. Trzeba ustalić, jaki dokument obowiązywał przy ich wystawieniu.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">2025</span><h3>Aktualne wydanie ISO</h3><p>Części 1, 2, 3 i 5 mają drugie wydanie z 2025 r. i są oznaczone przez ISO jako opublikowane.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">EN / PN</span><h3>Przyjęcie regionalne i krajowe</h3><p>Na dokumentach może występować oznaczenie ISO, EN ISO lub PN-EN ISO. Zawsze sprawdź pełny numer, część, rok i status w właściwym katalogu.</p></article>
      </div>
      <div class="rk-iso-note"><p><strong>Nie poprawiaj dokumentacji „z automatu”.</strong> Raport dotyczący starszego wydania nie staje się nieważny tylko dlatego, że opublikowano nowsze. Trzeba ocenić zakres raportu, datę produkcji, wymagania projektu i reguły przejściowe przyjęte dla danego zastosowania.</p></div>
    </section>

    <section class="rk-iso-section" id="rk-iso-scope">
      <span class="rk-iso-eyebrow">Granice dokumentu</span>
      <h2 class="rk-iso-section-title">Co obejmuje seria ISO 15875, a czego nie obejmuje?</h2>
      <p class="rk-iso-lead">Seria dotyczy systemów PE-X przeznaczonych do przesyłania wody w instalacjach wewnątrz budynków — zarówno użytkowej, jak i grzewczej — przy warunkach wynikających z klasy zastosowania oraz ciśnienia projektowego.</p>
      <div class="rk-iso-grid-2">
        <article class="rk-iso-card">
          <span class="rk-iso-icon">✓</span>
          <h3>W zakresie</h3>
          <ul class="rk-iso-bullets">
            <li>ogólne zasady systemów z rur PE-X,</li>
            <li>charakterystyki i badania rur,</li>
            <li>charakterystyki kształtek mechanicznych i elektrooporowych,</li>
            <li>przydatność połączeń i systemu do deklarowanego zastosowania,</li>
            <li>klasy zastosowania, ciśnienia projektowe i klasy wymiarowe.</li>
          </ul>
        </article>
        <article class="rk-iso-card">
          <span class="rk-iso-icon">×</span>
          <h3>Poza zakresem samej serii</h3>
          <ul class="rk-iso-bullets">
            <li>rury PB, PE-RT i kompletne systemy wielowarstwowe,</li>
            <li>obliczenia OZC i dobór mocy ogrzewania,</li>
            <li>rozstaw, długości pętli, przepływy i nastawy,</li>
            <li>automatyczne potwierdzenie bariery według DIN 4726,</li>
            <li>krajowe dopuszczenia higieniczne oraz procedura odbioru na budowie.</li>
          </ul>
        </article>
      </div>
      <div class="rk-iso-note rk-iso-note-bad"><p><strong>PB nie jest odmianą objętą ISO 15875.</strong> To istotny błąd w dawnej wersji artykułu. Systemy z polibutenu opisuje osobna seria ISO 15876.</p></div>
    </section>

    <section class="rk-iso-section rk-iso-section-soft" id="rk-iso-series">
      <span class="rk-iso-eyebrow">Jedna seria, różne obiekty oceny</span>
      <h2 class="rk-iso-section-title">Części 1, 2, 3 i 5 — czego szukać w każdej z nich?</h2>
      <p class="rk-iso-lead">Nie ma jednego „certyfikatu ISO 15875”, który bez dalszych informacji odpowiada na wszystkie pytania. Każda część opisuje inny fragment systemu.</p>
      <div class="rk-iso-table-wrap">
        <table>
          <thead><tr><th>Część</th><th>Główny przedmiot</th><th>Co weryfikujesz</th><th>Czego ta część nie rozstrzyga sama</th></tr></thead>
          <tbody>
            <tr><td data-label="Część"><strong>ISO 15875-1:2025</strong></td><td data-label="Główny przedmiot">Zagadnienia ogólne</td><td data-label="Co weryfikujesz">Zakres zastosowań, klasy, ciśnienia projektowe, klasy wymiarowe i podstawy parametrów badań.</td><td data-label="Czego nie rozstrzyga sama">Właściwości konkretnej rury, kształtki lub połączenia.</td></tr>
            <tr><td data-label="Część"><strong>ISO 15875-2:2025</strong></td><td data-label="Główny przedmiot">Rury PE-X</td><td data-label="Co weryfikujesz">Charakterystyki rur i parametry badań; zakres obejmuje rury z warstwą barierową i bez niej.</td><td data-label="Czego nie rozstrzyga sama">Zgodności dowolnej kształtki ani wymagań dyfuzyjnych DIN 4726.</td></tr>
            <tr><td data-label="Część"><strong>ISO 15875-3:2025</strong></td><td data-label="Główny przedmiot">Kształtki</td><td data-label="Co weryfikujesz">Charakterystyki kształtek przeznaczonych do rur zgodnych z częścią 2.</td><td data-label="Czego nie rozstrzyga sama">Przydatności każdego połączenia wykonanego dowolnym narzędziem.</td></tr>
            <tr><td data-label="Część"><strong>ISO 15875-5:2025</strong></td><td data-label="Główny przedmiot">Przydatność systemu</td><td data-label="Co weryfikujesz">Właściwości połączeń rur z części 2 i kształtek z części 3 w kompletnym układzie.</td><td data-label="Czego nie rozstrzyga sama">Projektu cieplnego i hydraulicznego konkretnego budynku.</td></tr>
          </tbody>
        </table>
      </div>
      <p class="rk-iso-copy">W publikacjach handlowych często skraca się wszystkie te poziomy do zdania „rura zgodna z normą”. Technicznie poprawna weryfikacja musi rozdzielić wyrób, element połączeniowy i gotowy system.</p>
    </section>

    <section class="rk-iso-section rk-iso-section-dark" id="rk-iso-map">
      <span class="rk-iso-eyebrow">Interaktywna grafika edukacyjna</span>
      <h2 class="rk-iso-section-title">Jak czytać serię EN ISO 15875?</h2>
      <p class="rk-iso-lead">Wybierz część normy. Moduł pokazuje jej rolę, rodzaj potwierdzanej informacji, najczęstszą nadinterpretację i dokument, którego warto zażądać. Na telefonie elementy układają się jeden pod drugim, bez nakładania treści.</p>
      <div class="rk-iso-pathway" id="rk-iso-series-map">
        <div class="rk-iso-pathway-head">
          <h3>Od warunków ogólnych do sprawdzonego połączenia</h3>
          <p>To mapa odpowiedzialności dokumentów, a nie skrócona treść normy ani certyfikat produktu.</p>
        </div>
        <div class="rk-iso-stage-tabs" role="tablist" aria-label="Części serii ISO 15875">
          <button class="rk-iso-stage-tab" type="button" role="tab" aria-selected="true" tabindex="0" data-rk-stage="part1"><span>1</span><strong>Zasady ogólne</strong></button>
          <button class="rk-iso-stage-tab" type="button" role="tab" aria-selected="false" tabindex="-1" data-rk-stage="part2"><span>2</span><strong>Rury PE-X</strong></button>
          <button class="rk-iso-stage-tab" type="button" role="tab" aria-selected="false" tabindex="-1" data-rk-stage="part3"><span>3</span><strong>Kształtki</strong></button>
          <button class="rk-iso-stage-tab" type="button" role="tab" aria-selected="false" tabindex="-1" data-rk-stage="part5"><span>5</span><strong>System i połączenia</strong></button>
        </div>
        <div class="rk-iso-stage-panel" role="tabpanel" aria-live="polite">
          <span class="rk-iso-stage-label" id="rk-iso-stage-label">ISO 15875-1:2025</span>
          <h3 id="rk-iso-stage-title">Najpierw ustal warunki odniesienia</h3>
          <div class="rk-iso-stage-facts">
            <div class="rk-iso-stage-fact"><strong>Zakres</strong><p id="rk-iso-stage-scope">Ogólne aspekty systemów PE-X, klasy zastosowania, ciśnienia projektowe i klasy wymiarowe.</p></div>
            <div class="rk-iso-stage-fact"><strong>Może potwierdzić</strong><p id="rk-iso-stage-confirms">Jakie warunki temperaturowo-czasowe stanowią podstawę klasyfikacji i badań serii.</p></div>
            <div class="rk-iso-stage-fact"><strong>Nie potwierdza sama</strong><p id="rk-iso-stage-limits">Że dowolna rura, kształtka i połączenie tworzą kompatybilny system.</p></div>
            <div class="rk-iso-stage-fact"><strong>Sprawdź w dokumentach</strong><p id="rk-iso-stage-document">Pełne oznaczenie części, wydanie, klasę zastosowania i deklarowane ciśnienie.</p></div>
          </div>
        </div>
      </div>
      <div class="rk-iso-note"><p><strong>Dlaczego nie kalkulator ani analizator decyzyjny?</strong> Norma nie dostarcza jednego wyniku liczbowego ani nie wybiera produktu za użytkownika. Największą wartość daje tu prawidłowe przypisanie pytania do części dokumentu; fałszywy wynik „zgodne / niezgodne” bez pełnej dokumentacji byłby pozornie precyzyjny.</p></div>
    </section>

    <section class="rk-iso-section" id="rk-iso-material">
      <span class="rk-iso-eyebrow">Metoda sieciowania to nie ranking</span>
      <h2 class="rk-iso-section-title">PE-Xa, PE-Xb i PE-Xc — co oznacza litera?</h2>
      <p class="rk-iso-lead">Litery a, b i c identyfikują sposób sieciowania polietylenu. Nie stanowią skali jakości i nie pozwalają bez dokumentacji stwierdzić, że jeden gotowy produkt jest trwalszy od drugiego.</p>
      <div class="rk-iso-grid-3">
        <article class="rk-iso-card"><span class="rk-iso-card-number">PE-Xa</span><h3>Metoda nadtlenkowa</h3><p>Często kojarzona z dużą elastycznością i pamięcią kształtu, ale parametry konkretnej rury wynikają z jej pełnej konstrukcji i dokumentacji.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">PE-Xb</span><h3>Metoda silanowa</h3><p>Inna technologia sieciowania nie oznacza automatycznie niższej jakości. Nadal sprawdza się klasę, wymiar, ciśnienie i system połączeń.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">PE-Xc</span><h3>Metoda fizyczna</h3><p>Oznaczenie opisuje proces, nie kompletną odporność wyrobu ani jego zachowanie w każdym sposobie montażu.</p></article>
      </div>
      <div class="rk-iso-note rk-iso-note-good"><p><strong>Porównuj gotowe wyroby.</strong> Dla każdego sprawdź tę samą listę: część i rok normy, pełny wymiar, klasę zastosowania, ciśnienie, budowę warstw, promień gięcia, kompatybilne złączki oraz identyfikację partii.</p></div>
    </section>

    <section class="rk-iso-section rk-iso-section-soft" id="rk-iso-classes">
      <span class="rk-iso-eyebrow">Profil pracy zamiast jednej temperatury</span>
      <h2 class="rk-iso-section-title">Jak rozumieć klasę zastosowania?</h2>
      <p class="rk-iso-lead">Klasa zastosowania porządkuje przewidziany profil temperaturowo-czasowy systemu. Trzeba ją czytać razem z ciśnieniem projektowym i dokumentacją wyrobu — nie jako pojedynczą temperaturę dopuszczoną bez ograniczenia czasu.</p>
      <div class="rk-iso-grid-3">
        <article class="rk-iso-card"><span class="rk-iso-card-number">T<sub>D</sub></span><h3>Temperatura projektowa</h3><p>Warunek normalnej pracy przypisany do określonego czasu w profilu zastosowania.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">T<sub>max</sub></span><h3>Temperatura maksymalna</h3><p>Wyższy poziom występujący przez ograniczony czas, a nie stała nastawa instalacji.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">T<sub>mal</sub></span><h3>Temperatura awaryjna</h3><p>Warunek zakłócenia przewidziany na krótki, zdefiniowany okres — nie normalny punkt pracy.</p></article>
      </div>
      <div class="rk-iso-criterion">
        <div class="rk-iso-criterion-value">klasa + p<sub>D</sub><small>czytane razem</small></div>
        <div class="rk-iso-criterion-copy"><h3>Sam napis „Class 4” nie zamyka oceny</h3><p>Potrzebujesz jeszcze deklarowanego ciśnienia projektowego, wymiaru i potwierdzenia, że dokument dotyczy dokładnie kupowanej rury. Projekt instalacji powinien dodatkowo utrzymywać temperaturę zasilania zgodną z potrzebną mocą podłogi i ograniczeniami powierzchni.</p></div>
      </div>
      <p class="rk-iso-copy">W praktyce podłogówka powinna pracować znacznie niżej niż skrajne wartości profilu. Zobacz osobne wyjaśnienie <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalnej temperatury zasilania podłogówki</a>.</p>
    </section>

    <section class="rk-iso-section" id="rk-iso-temperature">
      <span class="rk-iso-eyebrow">Najczęściej nadużywana obietnica</span>
      <h2 class="rk-iso-section-title">Czy norma gwarantuje 50 lat pracy przy 70°C?</h2>
      <p class="rk-iso-lead"><strong>Nie należy tak interpretować klasyfikacji.</strong> Podstawa trwałościowa systemu jest związana z całym profilem warunków i czasów, a nie z nieprzerwaną pracą przez 50 lat przy jednej wysokiej temperaturze.</p>
      <div class="rk-iso-grid-2">
        <article class="rk-iso-card"><span class="rk-iso-icon">✓</span><h3>Poprawne odczytanie</h3><p>Rura jest oceniana względem deklarowanej klasy i ciśnienia, z uwzględnieniem różnych poziomów temperatury oraz przypisanych im czasów.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-icon">×</span><h3>Błędne uproszczenie</h3><p>„Rura może stale pracować przy 70°C przez 50 lat, więc każda podłogówka jest bezpieczna” — taki wniosek pomija profil, ciśnienie, montaż i ograniczenia podłogi.</p></article>
      </div>
      <ul class="rk-iso-bullets">
        <li>warunki przekraczające zakres klasy nie są objęte jej założeniami,</li>
        <li>trwałość zależy także od ciśnienia, połączeń, medium i wykonania,</li>
        <li>zgodność normowa ogranicza ryzyko, ale nie jest gwarancją braku każdej awarii,</li>
        <li>deklarację producenta trzeba odnieść do dokładnego typu i wymiaru.</li>
      </ul>
      <p class="rk-iso-copy">Szerzej o zależności materiału, naprężeń i warunków pracy przeczytasz w poradniku o <a href="https://projekt-ogrzewania.pl/wytrzymalosc-rur-do-ogrzewania-podlogowego-kompleksowy-przewodnik/">wytrzymałości rur do ogrzewania podłogowego</a>.</p>
    </section>

    <section class="rk-iso-section rk-iso-section-dark" id="rk-iso-dimensions">
      <span class="rk-iso-eyebrow">Nadruk musi prowadzić do dokumentu</span>
      <h2 class="rk-iso-section-title">Wymiar, klasa, ciśnienie i identyfikacja rury</h2>
      <p class="rk-iso-lead">Poniższy nadruk jest przykładem edukacyjnym. Nie odwzorowuje etykiety konkretnego producenta i nie potwierdza sam z siebie zgodności produktu.</p>
      <div class="rk-iso-marking">
        <div class="rk-iso-marking-line" aria-label="Przykładowy nadruk edukacyjny na rurze PE-X">
          <span>PE-Xb</span><span>16 × 2,0 mm</span><span>Class 4</span><span>pD 6 bar</span><span>EN ISO 15875-2:2025</span><span>partia 26A104</span><span>metr 00482</span>
        </div>
      </div>
      <div class="rk-iso-grid-3">
        <article class="rk-iso-card"><span class="rk-iso-card-number">01</span><h3>Rodzina materiału</h3><p>PE-X oraz litera metody sieciowania. Nie dopowiadaj z niej automatycznie liczby warstw ani jakości systemu.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">02</span><h3>Pełny wymiar</h3><p>Średnica zewnętrzna i grubość ścianki wpływają na światło, pojemność oraz hydraulikę pętli.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">03</span><h3>Klasa i ciśnienie</h3><p>Powinny być rozpatrywane łącznie, w odniesieniu do warunków przewidzianych dla zastosowania.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">04</span><h3>Część i wydanie</h3><p>Numer bez końcówki „-2” i roku utrudnia ustalenie, jaki dokładnie zakres został zadeklarowany.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">05</span><h3>Identyfikacja partii</h3><p>Kod produkcji oraz nadruk metrowy pozwalają powiązać materiał na budowie z dokumentami dostawy.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">06</span><h3>Dane dodatkowe</h3><p>Informacja o barierze, certyfikacie lub dopuszczeniu musi dać się zweryfikować w odpowiednim dokumencie.</p></article>
      </div>
      <div class="rk-iso-note"><p><strong>Nie akceptuj samego logo.</strong> Zapis na rurze powinien umożliwiać odnalezienie karty i dokumentu dotyczącego dokładnie tego wyrobu, wymiaru oraz partii.</p></div>
    </section>

    <section class="rk-iso-section" id="rk-iso-barrier">
      <span class="rk-iso-eyebrow">Dwa różne zakresy wymagań</span>
      <h2 class="rk-iso-section-title">ISO 15875 a bariera antydyfuzyjna — czego nie wolno łączyć automatycznie?</h2>
      <p class="rk-iso-lead">Oficjalny zakres części 2 wyraźnie obejmuje rury PE-X zarówno <strong>z warstwą barierową, jak i bez niej</strong>. To oznacza, że samo powołanie na ISO 15875-2 nie dowodzi spełnienia kryterium ograniczenia przenikania tlenu.</p>
      <div class="rk-iso-grid-2">
        <article class="rk-iso-card"><span class="rk-iso-card-number">ISO 15875-2</span><h3>Charakterystyki rury PE-X</h3><p>Weryfikuje wymagania właściwe dla rury w systemie PE-X. Warstwa barierowa może występować, ale nie jest obowiązkową cechą każdej rury objętej zakresem.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">DIN 4726</span><h3>Ograniczanie przenikania tlenu</h3><p>Osobne odniesienie techniczne stosowane przy przewodach z tworzyw i wielowarstwowych w systemach ogrzewania płaszczyznowego.</p></article>
      </div>
      <div class="rk-iso-note rk-iso-note-bad"><p><strong>„EN ISO 15875 + EVOH” nadal wymaga weryfikacji.</strong> Sprawdź dokument potwierdzający właściwość bariery dla dokładnego typu i wymiaru, jej umiejscowienie w konstrukcji oraz wydanie przywołanego dokumentu.</p></div>
      <p class="rk-iso-copy">Pełne rozróżnienie opisuję w artykułach o <a href="https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/">DIN 4726 w ogrzewaniu podłogowym</a> oraz o <a href="https://projekt-ogrzewania.pl/rura-z-bariera-antydyfuzyjna-evoh/">rurze z barierą antydyfuzyjną EVOH</a>.</p>
    </section>

    <section class="rk-iso-section rk-iso-section-soft" id="rk-iso-system">
      <span class="rk-iso-eyebrow">Zgodność elementu to nie zgodność zestawu</span>
      <h2 class="rk-iso-section-title">Rura, kształtka i połączenie tworzą jeden system</h2>
      <p class="rk-iso-lead">Część 2 odnosi rurę do kształtek zgodnych z częścią 3 oraz połączeń spełniających część 5. Średnica „16 mm” na dwóch różnych elementach nie potwierdza jeszcze ich wzajemnej kompatybilności.</p>
      <div class="rk-iso-checkflow" aria-label="Cztery kroki weryfikacji systemu PE-X">
        <div class="rk-iso-checkstep"><span>Krok 1</span><strong>Rura z części 2</strong><p>Dokładny typ, wymiar, tolerancje, klasa i deklarowane ciśnienie.</p></div>
        <div class="rk-iso-checkstep"><span>Krok 2</span><strong>Kształtka z części 3</strong><p>Geometria i materiał przeznaczone do wskazanej konstrukcji przewodu.</p></div>
        <div class="rk-iso-checkstep"><span>Krok 3</span><strong>Połączenie z części 5</strong><p>Ocena przydatności zestawu rury i kształtki w przewidzianych warunkach.</p></div>
        <div class="rk-iso-checkstep"><span>Krok 4</span><strong>Instrukcja montażu</strong><p>Właściwe narzędzia, kalibracja, tuleje, szczęki i kontrola wykonania.</p></div>
      </div>
      <div class="rk-iso-grid-3">
        <article class="rk-iso-card"><span class="rk-iso-icon">Ø</span><h3>Ten sam wymiar nominalny</h3><p>Nie gwarantuje identycznych tolerancji, geometrii króćca ani sposobu uszczelnienia.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-icon">⚙</span><h3>To samo narzędzie z wyglądu</h3><p>Nie potwierdza właściwego profilu zacisku, głębokości wsunięcia ani procedury przygotowania końca.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-icon">✓</span><h3>Jednoznaczna lista zgodności</h3><p>Powinna wskazywać dokładne rury, kształtki, narzędzia i sposób wykonania połączenia.</p></article>
      </div>
      <div class="rk-iso-note rk-iso-note-bad"><p><strong>Nie mieszaj systemów na podstawie mechanicznego dopasowania.</strong> Połączenie może wyglądać poprawnie w chwili montażu, a mimo to nie mieć potwierdzonych właściwości dla zakładanych temperatur, ciśnienia i czasu pracy.</p></div>
    </section>

    <section class="rk-iso-section" id="rk-iso-documents">
      <span class="rk-iso-eyebrow">Trzy dokumenty, trzy różne znaczenia</span>
      <h2 class="rk-iso-section-title">Deklaracja, raport z badań i certyfikat — nie używaj tych nazw zamiennie</h2>
      <p class="rk-iso-lead">Zdanie „rura ma certyfikat” powinno prowadzić do konkretnego dokumentu, numeru, zakresu i podmiotu, który go wystawił. Samo powołanie na normę nie tworzy automatycznie niezależnej certyfikacji.</p>
      <div class="rk-iso-table-wrap">
        <table>
          <thead><tr><th>Dokument</th><th>Kto odpowiada</th><th>Co może pokazać</th><th>Co sprawdzić</th></tr></thead>
          <tbody>
            <tr><td data-label="Dokument"><strong>Deklaracja producenta</strong></td><td data-label="Kto odpowiada">Producent lub podmiot wprowadzający wyrób</td><td data-label="Co może pokazać">Zadeklarowane właściwości i dokumenty odniesienia dla identyfikowanego wyrobu.</td><td data-label="Co sprawdzić">Typ, wymiar, wydanie normy, podpis, data i spójność z etykietą.</td></tr>
            <tr><td data-label="Dokument"><strong>Raport z badań</strong></td><td data-label="Kto odpowiada">Laboratorium wykonujące określone badania</td><td data-label="Co może pokazać">Wyniki próbek w zakresie opisanej metody i warunków.</td><td data-label="Co sprawdzić">Numer raportu, próbkę, datę, metodę, laboratorium i granice wyniku.</td></tr>
            <tr><td data-label="Dokument"><strong>Certyfikat strony trzeciej</strong></td><td data-label="Kto odpowiada">Jednostka certyfikująca</td><td data-label="Co może pokazać">Ocenę zgodności w zdefiniowanym programie certyfikacji.</td><td data-label="Co sprawdzić">Ważność, zakres, wykaz wyrobów, program i status jednostki.</td></tr>
          </tbody>
        </table>
      </div>
      <ul class="rk-iso-bullets">
        <li>pobieraj dokumenty dla dokładnego typu oraz wymiaru, nie tylko dla marki lub rodziny,</li>
        <li>porównuj numer części i rok normy z nadrukiem na rurze,</li>
        <li>sprawdzaj, czy kształtki i połączenia są objęte tym samym zakresem systemowym,</li>
        <li>zachowuj etykiety, numery partii i dokumenty dostawy przed wykonaniem wylewki.</li>
      </ul>
    </section>

    <section class="rk-iso-section rk-iso-section-soft" id="rk-iso-health">
      <span class="rk-iso-eyebrow">Zakres użytkowy a wymagania krajowe</span>
      <h2 class="rk-iso-section-title">Czy EN ISO 15875 gwarantuje bezpieczeństwo higieniczne wody?</h2>
      <p class="rk-iso-lead">Zakres serii obejmuje systemy przenoszące wodę przeznaczoną lub nieprzeznaczoną do spożycia, ale nie należy z tego wyprowadzać automatycznej gwarancji spełnienia wszystkich krajowych wymagań higienicznych.</p>
      <div class="rk-iso-grid-3">
        <article class="rk-iso-card"><span class="rk-iso-card-number">1</span><h3>Ustal zastosowanie</h3><p>Ogrzewanie w obiegu zamkniętym i instalacja wody przeznaczonej do spożycia mają inne wymagania użytkowe i dokumentacyjne.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">2</span><h3>Sprawdź wymagania krajowe</h3><p>Dopuszczenia do kontaktu z wodą pitną mogą wynikać z odrębnych przepisów, ocen i procedur właściwych dla rynku.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">3</span><h3>Nie dopisuj składu</h3><p>Bez odrębnego dokumentu nie można twierdzić, że numer ISO sam gwarantuje brak każdej określonej substancji.</p></article>
      </div>
      <div class="rk-iso-note"><p><strong>Praktyczny wniosek:</strong> do podłogówki sprawdzasz wymagania układu grzewczego; do wody przeznaczonej do spożycia — dodatkowo właściwą dokumentację higieniczną. Jedno zastosowanie nie zastępuje drugiego.</p></div>
    </section>

    <section class="rk-iso-section rk-iso-section-dark" id="rk-iso-design">
      <span class="rk-iso-eyebrow">Granica między wyrobem a instalacją</span>
      <h2 class="rk-iso-section-title">Czego norma EN ISO 15875 nie projektuje w podłogówce?</h2>
      <p class="rk-iso-lead">Norma produktu pomaga zweryfikować elementy systemu PE-X, lecz nie odpowiada na pytanie, czy podłoga w konkretnym pokoju pokryje jego obciążenie cieplne ani czy pompa wymusi obliczony przepływ.</p>
      <div class="rk-iso-grid-3">
        <article class="rk-iso-card"><span class="rk-iso-card-number">NIE 1</span><h3>Nie oblicza strat ciepła</h3><p>Nie zna przegród, wentylacji, temperatur obliczeniowych ani oczekiwanej temperatury pomieszczenia.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">NIE 2</span><h3>Nie dobiera rozstawu</h3><p>Nie zaleca uniwersalnych 10–30 cm. Rozstaw wynika z wymaganej mocy, temperatur i konstrukcji podłogi.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">NIE 3</span><h3>Nie wybiera średnicy</h3><p>Rury 14, 16, 17 lub 20 mm ocenia się w systemie mocowań i na podstawie przepływu oraz oporu.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">NIE 4</span><h3>Nie ustala długości pętli</h3><p>Granica obwodu zależy od światła, przepływu, medium, oporu miejscowego i możliwości regulacji.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">NIE 5</span><h3>Nie dobiera pompy</h3><p>Punkt pracy wynika z sumarycznego przepływu i oporu drogi krytycznej całej instalacji.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">NIE 6</span><h3>Nie wyznacza nastaw</h3><p>Przepływy na rozdzielaczu muszą odpowiadać mocy pętli, a nie przypadkowej pozycji rotametru.</p></article>
      </div>
      <p class="rk-iso-copy">Proces zaczyna się od tego, <a href="https://projekt-ogrzewania.pl/jak-oblicza-sie-straty-cieplne-w-budynkach/">jak oblicza się straty ciepła</a>, a następnie przechodzi przez <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">dobór rozstawu rur</a> i sprawdzenie <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">długości pętli</a>.</p>
      <aside class="rk-iso-cta" aria-label="Projekt ogrzewania podłogowego z weryfikacją systemu PE-X">
        <div class="rk-iso-cta-title">Rura PE-X spełnia EN ISO 15875? To dopiero warunek wejściowy</div>
        <p>Norma pomaga zweryfikować właściwości rury, kształtek i połączeń w określonych warunkach pracy. Nie dobiera jednak rozstawu, długości pętli, przepływów, oporu okładziny ani nastaw rozdzielacza. W indywidualnym projekcie łączę dokumentację wybranego systemu PE-X z obciążeniem cieplnym pomieszczeń i hydrauliką całej instalacji.</p>
        <a class="rk-iso-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Sprawdź system PE-X w indywidualnym projekcie podłogówki</a>
        <small class="rk-iso-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </aside>
    </section>

    <section class="rk-iso-section" id="rk-iso-test">
      <span class="rk-iso-eyebrow">Badanie wyrobu to nie odbiór na budowie</span>
      <h2 class="rk-iso-section-title">Czy EN ISO 15875 narzuca próbę 6 bar przez 24 godziny?</h2>
      <p class="rk-iso-lead"><strong>Nie należy przypisywać tej uniwersalnej procedury samej serii produktowej.</strong> Parametry badań rury i połączeń w normie służą ocenie wyrobu lub systemu, natomiast próbę gotowej instalacji prowadzi się według właściwej procedury projektowej, wykonawczej i instrukcji systemu.</p>
      <div class="rk-iso-grid-3">
        <article class="rk-iso-card"><span class="rk-iso-card-number">LAB</span><h3>Badanie normowe</h3><p>Ma określone próbki, warunki, aparaturę i kryteria. Nie jest prostym przepisem przenoszonym na każdą budowę.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">BUDOWA</span><h3>Próba instalacji</h3><p>Sprawdza wykonany układ przed zakryciem zgodnie z przyjętą procedurą, temperaturą otoczenia i właściwościami rur z tworzywa.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">PROTOKÓŁ</span><h3>Udokumentowany wynik</h3><p>Powinien identyfikować obiekt, obwody, przyrząd, warunki, ciśnienie, czas, obserwacje i osoby odpowiedzialne.</p></article>
      </div>
      <ul class="rk-iso-bullets">
        <li>wykonaj próbę przed zakryciem przewodów,</li>
        <li>uwzględnij zmianę ciśnienia wynikającą z temperatury i rozszerzania przewodu,</li>
        <li>usuń przyczynę każdej nieszczelności zamiast jedynie dopompować układ,</li>
        <li>zachowaj protokół, zdjęcia tras i oznaczenia pętli.</li>
      </ul>
      <p class="rk-iso-copy">Praktyczną procedurę i ograniczenia opisuje poradnik o <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próbie szczelności ogrzewania podłogowego</a>.</p>
    </section>

    <section class="rk-iso-section rk-iso-section-soft" id="rk-iso-errors">
      <span class="rk-iso-eyebrow">Korekty najczęstszych skrótów myślowych</span>
      <h2 class="rk-iso-section-title">Dziesięć błędów w interpretacji EN ISO 15875</h2>
      <div class="rk-iso-grid-3">
        <article class="rk-iso-card"><span class="rk-iso-card-number">BŁĄD 1</span><h3>„Norma obejmuje PE-X i PB”</h3><p>Nie. ISO 15875 dotyczy PE-X, a PB ma osobną serię ISO 15876.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">BŁĄD 2</span><h3>„Określa przewodność cieplną rury”</h3><p>Nie jest poradnikiem minimalizacji strat ciepła ani doborem izolacji przewodów.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">BŁĄD 3</span><h3>„Gwarantuje brak szkodliwych substancji”</h3><p>Wymagania higieniczne i krajowe dopuszczenia trzeba sprawdzać odrębnie.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">BŁĄD 4</span><h3>„70°C przez 50 lat”</h3><p>Klasa opisuje profil różnych temperatur i czasów, nie stałą pracę w jednym skrajnym punkcie.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">BŁĄD 5</span><h3>„Zgodność wyklucza przeciek”</h3><p>Ryzyka wykonania, uszkodzeń, niezgodnych złączek i pracy poza zakresem nadal istnieją.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">BŁĄD 6</span><h3>„Norma zaleca rozstaw 10–30 cm”</h3><p>Rozstaw ogrzewania wynika z obliczeń cieplnych i konstrukcji podłogi.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">BŁĄD 7</span><h3>„14 mm jest lepsze do łazienki”</h3><p>Łatwość prowadzenia nie zastępuje sprawdzenia długości, przepływu, oporu i systemu.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">BŁĄD 8</span><h3>„6 bar / 24 h pochodzi z tej normy”</h3><p>Badania wyrobu i procedura odbioru gotowej instalacji to dwa różne poziomy.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">BŁĄD 9</span><h3>„EVOH wynika z części 2”</h3><p>Część 2 obejmuje rury z warstwą barierową i bez niej.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-card-number">BŁĄD 10</span><h3>„Ta sama średnica oznacza zgodność”</h3><p>Potrzebne jest systemowe potwierdzenie rury, kształtki, narzędzia i połączenia.</p></article>
      </div>
    </section>

    <section class="rk-iso-section" id="rk-iso-checklist">
      <span class="rk-iso-eyebrow">Przed zamówieniem i przed wylewką</span>
      <h2 class="rk-iso-section-title">Checklista weryfikacji systemu PE-X</h2>
      <p class="rk-iso-lead">Lista nie zastępuje dokumentów, ale pozwala szybko wykryć luki, zanim materiał zostanie zamówiony albo zniknie pod jastrychem.</p>
      <div class="rk-iso-grid-3">
        <article class="rk-iso-card">
          <span class="rk-iso-card-number">PROJEKT</span>
          <h3>Warunki pracy</h3>
          <ul class="rk-iso-bullets"><li>obciążenia cieplne pomieszczeń,</li><li>temperatury zasilania i powrotu,</li><li>rozstawy i powierzchnie czynne,</li><li>długości, przepływy i opory pętli,</li><li>medium oraz ciśnienie robocze.</li></ul>
        </article>
        <article class="rk-iso-card">
          <span class="rk-iso-card-number">SYSTEM</span>
          <h3>Dokumentacja elementów</h3>
          <ul class="rk-iso-bullets"><li>ISO 15875-1, -2, -3 i -5 w odpowiednim zakresie,</li><li>typ PE-X i pełny wymiar,</li><li>klasa zastosowania i ciśnienie,</li><li>bariera tlenowa potwierdzona osobno,</li><li>zgodne złączki, narzędzia i instrukcja.</li></ul>
        </article>
        <article class="rk-iso-card">
          <span class="rk-iso-card-number">BUDOWA</span>
          <h3>Identyfikacja i odbiór</h3>
          <ul class="rk-iso-bullets"><li>zgodność dostawy ze specyfikacją,</li><li>czytelne partie i nadruki,</li><li>brak uszkodzeń oraz załamań,</li><li>próba według właściwej procedury,</li><li>protokół i zdjęcia przed zakryciem.</li></ul>
        </article>
      </div>
      <div class="rk-iso-note rk-iso-note-good"><p><strong>Najkrótsza zasada odbioru:</strong> numer normy ma łączyć materiał na budowie z dokumentacją konkretnego systemu i warunkami obliczonymi w projekcie. Jeśli któregoś z tych ogniw brakuje, weryfikacja nie jest zakończona.</p></div>
    </section>

    <section class="rk-iso-section rk-iso-final" id="rk-iso-summary">
      <span class="rk-iso-eyebrow">Wniosek praktyczny</span>
      <h2 class="rk-iso-section-title">EN ISO 15875 porządkuje wyrób — projekt porządkuje instalację</h2>
      <p class="rk-iso-lead">Dobra specyfikacja łączy oba poziomy. Seria norm pomaga sprawdzić system PE-X i jego warunki deklarowane, a projekt przelicza obciążenie cieplne, powierzchnię grzejną, temperatury, przepływy i opory dla konkretnego domu.</p>
      <div class="rk-iso-grid-3">
        <article class="rk-iso-card"><span class="rk-iso-icon">1</span><h3>Wybierz właściwą rodzinę</h3><p>Nie przypisuj ISO 15875 do PB, PE-RT ani wszystkich rur wielowarstwowych.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-icon">2</span><h3>Sprawdź komplet dokumentów</h3><p>Rura, kształtka i połączenie muszą mieć jednoznaczny, wspólny zakres zastosowania.</p></article>
        <article class="rk-iso-card"><span class="rk-iso-icon">3</span><h3>Przelicz rzeczywisty układ</h3><p>Rozstaw, długość pętli i przepływ nie wynikają z samego oznaczenia na przewodzie.</p></article>
      </div>
      <div class="rk-iso-cta">
        <div class="rk-iso-cta-title">Zamień oznaczenie na rurze w policzony układ grzewczy</div>
        <p>Projekt łączy OZC pomieszczeń, opór okładzin, temperaturę wody, rozstaw rur, podział na pętle, długości, przepływy i nastawy rozdzielacza. Dzięki temu zgodny wyrób pracuje w warunkach, dla których został wybrany.</p>
        <a class="rk-iso-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        <small class="rk-iso-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-iso-section" id="rk-iso-sources">
      <span class="rk-iso-eyebrow">Dokumenty pierwotne</span>
      <h2 class="rk-iso-section-title">Oficjalne źródła i zakres opracowania</h2>
      <p class="rk-iso-lead">Linki zewnętrzne prowadzą wyłącznie do oficjalnych kart organizacji normalizacyjnych. Opisy poniżej są omówieniem publicznego zakresu dokumentów, a nie reprodukcją ich chronionej treści.</p>
      <div class="rk-iso-source-grid">
        <article class="rk-iso-source-card"><a href="https://www.iso.org/standard/79775.html" target="_blank" rel="nofollow noopener noreferrer">ISO 15875-1:2025 — General</a><p>Oficjalna karta części ogólnej: zakres, klasy zastosowania, ciśnienia projektowe i klasy wymiarowe.</p></article>
        <article class="rk-iso-source-card"><a href="https://www.iso.org/standard/79776.html" target="_blank" rel="nofollow noopener noreferrer">ISO 15875-2:2025 — Pipes</a><p>Oficjalna karta części dotyczącej rur PE-X, także z warstwą barierową lub bez niej.</p></article>
        <article class="rk-iso-source-card"><a href="https://www.iso.org/standard/79777.html" target="_blank" rel="nofollow noopener noreferrer">ISO 15875-3:2025 — Fittings</a><p>Oficjalna karta charakterystyk kształtek mechanicznych i elektrooporowych przeznaczonych do systemu PE-X.</p></article>
        <article class="rk-iso-source-card"><a href="https://www.iso.org/standard/79778.html" target="_blank" rel="nofollow noopener noreferrer">ISO 15875-5:2025 — Fitness for purpose</a><p>Oficjalna karta części dotyczącej przydatności systemu oraz połączeń rur z kształtkami.</p></article>
        <article class="rk-iso-source-card"><a href="https://www.iso.org/standard/63010.html" target="_blank" rel="nofollow noopener noreferrer">ISO 15876-1:2017 — systemy PB</a><p>Oficjalna karta odrębnej serii dla polibutenu; potwierdza, że PB nie należy do ISO 15875.</p></article>
        <article class="rk-iso-source-card"><a href="https://www.iso.org/standard/43514.html" target="_blank" rel="nofollow noopener noreferrer">ISO 21003-1:2008 — systemy wielowarstwowe</a><p>Oficjalna karta części ogólnej osobnej serii dotyczącej wielowarstwowych systemów przewodów.</p></article>
        <article class="rk-iso-source-card"><a href="https://www.dinmedia.de/en/standard/din-4726/380677149" target="_blank" rel="nofollow noopener noreferrer">DIN 4726:2024-12 — przenikanie tlenu</a><p>Oficjalna karta aktualnego wydania dokumentu dotyczącego między innymi ograniczania przenikania tlenu.</p></article>
      </div>
      <div class="rk-iso-responsibility"><p><strong>Zakres odpowiedzialności:</strong> poradnik pomaga rozpoznać części serii, skorygować typowe błędy i przygotować listę dokumentów. Nie zastępuje pełnego tekstu norm, krajowych wymagań, oceny zgodności wyrobu, instrukcji systemowej, projektu instalacji ani procedury odbiorowej przyjętej dla konkretnej inwestycji. Przed zastosowaniem sprawdź aktualny status dokumentów i dane dokładnego produktu.</p></div>
    </section>

    <section class="rk-iso-section rk-iso-section-soft" id="rk-iso-faq">
      <span class="rk-iso-eyebrow">Pytania inwestorów, projektantów i wykonawców</span>
      <h2 class="rk-iso-section-title">FAQ — norma EN ISO 15875 i rury PE-X</h2>
      <div class="rk-iso-faq">
        <details><summary>Czym jest norma EN ISO 15875?</summary><div class="rk-iso-faq-answer"><p>To seria dokumentów dotyczących systemów przewodów z polietylenu sieciowanego PE-X do instalacji wody ciepłej, zimnej i ogrzewania. Poszczególne części opisują zagadnienia ogólne, rury, kształtki oraz przydatność połączeń i systemu.</p></div></details>
        <details><summary>Jakie jest aktualne wydanie ISO 15875?</summary><div class="rk-iso-faq-answer"><p>Oficjalny katalog ISO wskazuje drugie wydanie części 1, 2, 3 i 5 z 2025 r. W dokumentacji europejskiej i krajowej trzeba dodatkowo sprawdzić pełne oznaczenie przyjęcia, rok oraz aktualny status.</p></div></details>
        <details><summary>Jakie części ma seria ISO 15875?</summary><div class="rk-iso-faq-answer"><p>W praktycznej weryfikacji najważniejsze są: część 1 z zasadami ogólnymi, część 2 dotycząca rur, część 3 dotycząca kształtek oraz część 5 dotycząca przydatności kompletnego systemu i jego połączeń.</p></div></details>
        <details><summary>Czy ISO 15875 obejmuje rury PB?</summary><div class="rk-iso-faq-answer"><p>Nie. ISO 15875 dotyczy systemów PE-X. Systemy z polibutenu PB mają odrębną serię ISO 15876, dlatego nie wolno przypisywać obu materiałów do jednego dokumentu.</p></div></details>
        <details><summary>Czy ISO 15875 obejmuje rury PE-RT?</summary><div class="rk-iso-faq-answer"><p>Nie. Dla systemów z polietylenu o podwyższonej odporności temperaturowej PE-RT właściwa jest osobna seria ISO 22391. Nazwa tworzywa musi odpowiadać serii wskazanej w dokumentacji.</p></div></details>
        <details><summary>Czy ISO 15875 obejmuje rury wielowarstwowe?</summary><div class="rk-iso-faq-answer"><p>Nie jako uniwersalna norma dla kompletnych systemów wielowarstwowych. Takie systemy mają osobną serię ISO 21003. Konkretna konstrukcja wymaga sprawdzenia dokładnego dokumentu odniesienia.</p></div></details>
        <details><summary>Czy PE-Xa jest lepsza niż PE-Xb albo PE-Xc?</summary><div class="rk-iso-faq-answer"><p>Nie można tego stwierdzić na podstawie litery. Oznacza ona metodę sieciowania, a nie ranking jakości. Porównuje się parametry, warstwy, klasę, wymiar i zgodność systemową konkretnych produktów.</p></div></details>
        <details><summary>Co oznacza klasa zastosowania 4?</summary><div class="rk-iso-faq-answer"><p>To zdefiniowany profil warunków temperaturowo-czasowych związany z określonym zastosowaniem. Klasę trzeba czytać razem z deklarowanym ciśnieniem projektowym, a nie jako jedną stałą temperaturę pracy.</p></div></details>
        <details><summary>Czy oznaczenie 70°C pozwala stale pracować w tej temperaturze?</summary><div class="rk-iso-faq-answer"><p>Nie należy tak interpretować klasy. Różne poziomy temperatury mają przypisane okresy pracy, a wartości maksymalne i awaryjne nie są normalną, nieograniczoną nastawą instalacji.</p></div></details>
        <details><summary>Czy zgodność z normą gwarantuje 50 lat bez awarii?</summary><div class="rk-iso-faq-answer"><p>Nie jest to bezwarunkowa gwarancja dla każdej instalacji. Założenia trwałości odnoszą się do określonego profilu pracy, a wynik eksploatacyjny zależy także od ciśnienia, połączeń, montażu, medium i pracy całego układu.</p></div></details>
        <details><summary>Czy ISO 15875 potwierdza barierę antydyfuzyjną?</summary><div class="rk-iso-faq-answer"><p>Nie automatycznie. Zakres części 2 obejmuje rury PE-X z warstwą barierową i bez niej. Właściwość ograniczania przenikania tlenu trzeba potwierdzić osobnym, jednoznacznym dokumentem dla konkretnej rury.</p></div></details>
        <details><summary>Czy sam napis EVOH potwierdza zgodność z DIN 4726?</summary><div class="rk-iso-faq-answer"><p>Nie. EVOH identyfikuje materiał warstwy, ale nie zastępuje dokumentu potwierdzającego wymagany parametr dla dokładnego typu, wymiaru i konstrukcji rury.</p></div></details>
        <details><summary>Czy EN ISO 15875 określa rozstaw i długość pętli?</summary><div class="rk-iso-faq-answer"><p>Nie. Rozstaw wynika z wymaganej mocy, temperatur i konstrukcji podłogi, a długość pętli z geometrii, przepływu, średnicy wewnętrznej, oporów oraz warunków regulacji.</p></div></details>
        <details><summary>Czy EN ISO 15875 określa próbę ciśnieniową na budowie?</summary><div class="rk-iso-faq-answer"><p>Seria zawiera parametry badań wyrobów i systemu, lecz nie należy z niej wyprowadzać jednej uniwersalnej procedury odbiorowej 6 bar przez 24 godziny. Próba gotowej instalacji wymaga właściwej procedury i protokołu.</p></div></details>
        <details><summary>Czy deklaracja zgodności i certyfikat oznaczają to samo?</summary><div class="rk-iso-faq-answer"><p>Nie. Deklaracja pochodzi od odpowiedzialnego podmiotu, raport opisuje określone badania, a certyfikat strony trzeciej działa w granicach programu certyfikacji. Zawsze trzeba sprawdzić wystawcę, zakres, ważność i identyfikację wyrobu.</p></div></details>
        <details><summary>Co sprawdzić przed zakupem rury PE-X?</summary><div class="rk-iso-faq-answer"><p>Sprawdź dokładny typ i wymiar, część oraz rok normy, klasę zastosowania, ciśnienie, budowę warstw, barierę tlenową, kompatybilne kształtki i narzędzia, instrukcję montażu, identyfikację partii oraz zgodność z obliczeniami projektu.</p></div></details>
      </div>
    </section>

    <section class="rk-iso-author" id="rk-iso-author">
      <span class="rk-iso-eyebrow">Opracowanie eksperckie</span>
      <h2 class="rk-iso-author-title">Autor i weryfikacja merytoryczna</h2>
      <div class="rk-iso-author-layout">
        <aside class="rk-iso-author-side">
          <div class="rk-iso-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych" width="400" height="400" loading="lazy" decoding="async"></div>
          <div class="rk-iso-author-name">Robert Kucharski</div>
          <p class="rk-iso-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
          <div class="rk-iso-author-social" aria-label="Profile autora">
            <a href="https://www.linkedin.com/in/robert-kucharski-b8b906199/" target="_blank" rel="nofollow noopener noreferrer me" aria-label="LinkedIn Roberta Kucharskiego">in</a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Facebook Projekt Ogrzewania">f</a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Profil Projekt HVAC w serwisie X">X</a>
          </div>
        </aside>
        <div class="rk-iso-author-main">
          <div class="rk-iso-author-quote">„Moim zdaniem oznaczenie EN ISO 15875 na rurze jest początkiem weryfikacji, a nie jej końcem. Trzeba sprawdzić część normy, klasę zastosowania, dokładny wymiar, zgodne kształtki i dokumenty potwierdzające przydatność całego systemu.”</div>
          <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, bilanse cieplne i hydrauliczne oraz materiały edukacyjne dla inwestorów i wykonawców. W pracy rozdziela wymagania produktu od obliczeń potrzebnych do poprawnego działania instalacji.</p>
          <p>Przy aktualizacji artykułu zweryfikował publiczne zakresy części ISO 15875-1, -2, -3 i -5 z 2025 r., usunął nieprawidłowe odniesienia do PB, przewodności cieplnej, uniwersalnego rozstawu oraz próby 6 bar / 24 h i uzupełnił procedurę sprawdzania dokumentacji systemu PE-X.</p>
          <p>Publikuje również w portalach <a href="https://remont.biz.pl/" target="_blank" rel="nofollow noopener noreferrer">Remont.biz.pl</a> i <a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a>. <a href="https://projekt-ogrzewania.pl/author/admin3399/">Zobacz pozostałe artykuły Roberta Kucharskiego w serwisie Projekt-Ogrzewania.pl</a>.</p>
          <div class="rk-iso-author-facts">
            <div class="rk-iso-author-fact"><strong>Zakres</strong>ogrzewanie podłogowe, OZC i hydraulika instalacji</div>
            <div class="rk-iso-author-fact"><strong>Metoda pracy</strong>projekt, dokumentacja wyrobu i warunki rzeczywiste</div>
            <div class="rk-iso-author-fact"><strong>Aktualizacja</strong>stan techniczny sprawdzony 17 września 2026 r.</div>
          </div>
        </div>
      </div>
    </section>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "systemy rurowe PE-X",
        "EN ISO 15875",
        "obliczenia strat ciepła",
        "hydraulika instalacji grzewczych"
      ],
      "worksFor": [
        { "@id": "https://projekt-ogrzewania.pl/#organization" },
        { "@id": "https://remont.biz.pl/#organization" },
        { "@id": "https://sobir.pl/#organization" }
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-b8b906199/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2025/02/Norma-EN-ISO-15875.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2025/02/Norma-EN-ISO-15875.webp",
      "width": 945,
      "height": 945,
      "caption": "EN ISO 15875 – wymagania dla rur PE-X w ogrzewaniu podłogowym"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/" },
        { "@type": "ListItem", "position": 2, "name": "Poradniki", "item": "https://projekt-ogrzewania.pl/blog/" },
        { "@type": "ListItem", "position": 3, "name": "EN ISO 15875", "item": "https://projekt-ogrzewania.pl/norma-en-iso-15875/" }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#webpage",
      "url": "https://projekt-ogrzewania.pl/norma-en-iso-15875/",
      "name": "EN ISO 15875:2025 – wymagania dla rur PE-X w ogrzewaniu podłogowym",
      "description": "Sprawdź, co obejmują części 1, 2, 3 i 5 normy EN ISO 15875:2025, jak czytać klasę zastosowania, oznaczenia rur PE-X i dokumentację systemu.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#breadcrumb" },
      "primaryImageOfPage": { "@id": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#primaryimage" },
      "datePublished": "2025-02-27T18:39:53+00:00",
      "dateModified": "2026-09-17T12:00:00+00:00",
      "inLanguage": "pl-PL",
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#article" }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#article",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#webpage" },
      "headline": "EN ISO 15875:2025 – wymagania dla rur PE-X w ogrzewaniu podłogowym",
      "description": "Techniczny przewodnik po częściach ISO 15875 dotyczących zasad ogólnych, rur PE-X, kształtek i przydatności kompletnego systemu.",
      "image": { "@id": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#primaryimage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "datePublished": "2025-02-27T18:39:53+00:00",
      "dateModified": "2026-09-17T12:00:00+00:00",
      "inLanguage": "pl-PL",
      "about": [
        "EN ISO 15875",
        "rury PE-X",
        "klasy zastosowania",
        "kształtki do PE-X",
        "połączenia systemów rurowych"
      ],
      "keywords": "norma EN ISO 15875, ISO 15875:2025, rury PE-X, PE-Xa, PE-Xb, PE-Xc, klasa zastosowania 4, ogrzewanie podłogowe",
      "isAccessibleForFree": true,
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#learning-resource" },
        { "@id": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#parts-list" },
        { "@id": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#faq-schema" }
      ]
    },
    {
      "@type": "LearningResource",
      "@id": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#learning-resource",
      "name": "Jak czytać części serii EN ISO 15875",
      "url": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#rk-iso-map",
      "learningResourceType": "interaktywna grafika edukacyjna",
      "educationalUse": "instruction",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "description": "Moduł przypisujący zakres, potwierdzane informacje, ograniczenia i dokumentację do części 1, 2, 3 i 5 serii ISO 15875."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#howto",
      "name": "Jak sprawdzić system PE-X przed zakupem",
      "description": "Procedura weryfikacji rury, kształtek, połączeń i dokumentacji systemu PE-X przed montażem ogrzewania podłogowego.",
      "totalTime": "PT15M",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Zidentyfikuj rurę", "text": "Odczytaj typ PE-X, pełny wymiar, klasę, ciśnienie, część normy, rok i partię." },
        { "@type": "HowToStep", "position": 2, "name": "Zweryfikuj część 2", "text": "Sprawdź dokumentację dokładnego typu i wymiaru rury PE-X." },
        { "@type": "HowToStep", "position": 3, "name": "Zweryfikuj kształtki", "text": "Potwierdź, że kształtki są przeznaczone do tej konstrukcji rury i objęte odpowiednim zakresem." },
        { "@type": "HowToStep", "position": 4, "name": "Potwierdź połączenie", "text": "Sprawdź przydatność połączenia, zgodne narzędzia i procedurę montażu." },
        { "@type": "HowToStep", "position": 5, "name": "Sprawdź barierę osobno", "text": "Nie wyprowadzaj zgodności z wymaganiem dyfuzyjnym wyłącznie z ISO 15875." },
        { "@type": "HowToStep", "position": 6, "name": "Porównaj z projektem", "text": "Zestaw warunki deklarowane z temperaturą, przepływem, długością i oporem obliczonych pętli." },
        { "@type": "HowToStep", "position": 7, "name": "Udokumentuj dostawę", "text": "Zachowaj etykiety, partie, dokumenty, zdjęcia i protokół próby przed zakryciem rur." }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#parts-list",
      "name": "Najważniejsze części serii ISO 15875:2025",
      "numberOfItems": 4,
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "ISO 15875-1:2025 — zagadnienia ogólne" },
        { "@type": "ListItem", "position": 2, "name": "ISO 15875-2:2025 — rury PE-X" },
        { "@type": "ListItem", "position": 3, "name": "ISO 15875-3:2025 — kształtki" },
        { "@type": "ListItem", "position": 4, "name": "ISO 15875-5:2025 — przydatność systemu" }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/norma-en-iso-15875/#faq-schema",
      "mainEntity": [
        { "@type": "Question", "name": "Czym jest norma EN ISO 15875?", "acceptedAnswer": { "@type": "Answer", "text": "To seria dokumentów dotyczących systemów przewodów z polietylenu sieciowanego PE-X do instalacji wody ciepłej, zimnej i ogrzewania. Poszczególne części opisują zagadnienia ogólne, rury, kształtki oraz przydatność połączeń i systemu." } },
        { "@type": "Question", "name": "Jakie jest aktualne wydanie ISO 15875?", "acceptedAnswer": { "@type": "Answer", "text": "Oficjalny katalog ISO wskazuje drugie wydanie części 1, 2, 3 i 5 z 2025 r. W dokumentacji europejskiej i krajowej trzeba dodatkowo sprawdzić pełne oznaczenie przyjęcia, rok oraz aktualny status." } },
        { "@type": "Question", "name": "Jakie części ma seria ISO 15875?", "acceptedAnswer": { "@type": "Answer", "text": "W praktycznej weryfikacji najważniejsze są: część 1 z zasadami ogólnymi, część 2 dotycząca rur, część 3 dotycząca kształtek oraz część 5 dotycząca przydatności kompletnego systemu i jego połączeń." } },
        { "@type": "Question", "name": "Czy ISO 15875 obejmuje rury PB?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. ISO 15875 dotyczy systemów PE-X. Systemy z polibutenu PB mają odrębną serię ISO 15876, dlatego nie wolno przypisywać obu materiałów do jednego dokumentu." } },
        { "@type": "Question", "name": "Czy ISO 15875 obejmuje rury PE-RT?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Dla systemów z polietylenu o podwyższonej odporności temperaturowej PE-RT właściwa jest osobna seria ISO 22391. Nazwa tworzywa musi odpowiadać serii wskazanej w dokumentacji." } },
        { "@type": "Question", "name": "Czy ISO 15875 obejmuje rury wielowarstwowe?", "acceptedAnswer": { "@type": "Answer", "text": "Nie jako uniwersalna norma dla kompletnych systemów wielowarstwowych. Takie systemy mają osobną serię ISO 21003. Konkretna konstrukcja wymaga sprawdzenia dokładnego dokumentu odniesienia." } },
        { "@type": "Question", "name": "Czy PE-Xa jest lepsza niż PE-Xb albo PE-Xc?", "acceptedAnswer": { "@type": "Answer", "text": "Nie można tego stwierdzić na podstawie litery. Oznacza ona metodę sieciowania, a nie ranking jakości. Porównuje się parametry, warstwy, klasę, wymiar i zgodność systemową konkretnych produktów." } },
        { "@type": "Question", "name": "Co oznacza klasa zastosowania 4?", "acceptedAnswer": { "@type": "Answer", "text": "To zdefiniowany profil warunków temperaturowo-czasowych związany z określonym zastosowaniem. Klasę trzeba czytać razem z deklarowanym ciśnieniem projektowym, a nie jako jedną stałą temperaturę pracy." } },
        { "@type": "Question", "name": "Czy oznaczenie 70°C pozwala stale pracować w tej temperaturze?", "acceptedAnswer": { "@type": "Answer", "text": "Nie należy tak interpretować klasy. Różne poziomy temperatury mają przypisane okresy pracy, a wartości maksymalne i awaryjne nie są normalną, nieograniczoną nastawą instalacji." } },
        { "@type": "Question", "name": "Czy zgodność z normą gwarantuje 50 lat bez awarii?", "acceptedAnswer": { "@type": "Answer", "text": "Nie jest to bezwarunkowa gwarancja dla każdej instalacji. Założenia trwałości odnoszą się do określonego profilu pracy, a wynik eksploatacyjny zależy także od ciśnienia, połączeń, montażu, medium i pracy całego układu." } },
        { "@type": "Question", "name": "Czy ISO 15875 potwierdza barierę antydyfuzyjną?", "acceptedAnswer": { "@type": "Answer", "text": "Nie automatycznie. Zakres części 2 obejmuje rury PE-X z warstwą barierową i bez niej. Właściwość ograniczania przenikania tlenu trzeba potwierdzić osobnym, jednoznacznym dokumentem dla konkretnej rury." } },
        { "@type": "Question", "name": "Czy sam napis EVOH potwierdza zgodność z DIN 4726?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. EVOH identyfikuje materiał warstwy, ale nie zastępuje dokumentu potwierdzającego wymagany parametr dla dokładnego typu, wymiaru i konstrukcji rury." } },
        { "@type": "Question", "name": "Czy EN ISO 15875 określa rozstaw i długość pętli?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Rozstaw wynika z wymaganej mocy, temperatur i konstrukcji podłogi, a długość pętli z geometrii, przepływu, średnicy wewnętrznej, oporów oraz warunków regulacji." } },
        { "@type": "Question", "name": "Czy EN ISO 15875 określa próbę ciśnieniową na budowie?", "acceptedAnswer": { "@type": "Answer", "text": "Seria zawiera parametry badań wyrobów i systemu, lecz nie należy z niej wyprowadzać jednej uniwersalnej procedury odbiorowej 6 bar przez 24 godziny. Próba gotowej instalacji wymaga właściwej procedury i protokołu." } },
        { "@type": "Question", "name": "Czy deklaracja zgodności i certyfikat oznaczają to samo?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Deklaracja pochodzi od odpowiedzialnego podmiotu, raport opisuje określone badania, a certyfikat strony trzeciej działa w granicach programu certyfikacji. Zawsze trzeba sprawdzić wystawcę, zakres, ważność i identyfikację wyrobu." } },
        { "@type": "Question", "name": "Co sprawdzić przed zakupem rury PE-X?", "acceptedAnswer": { "@type": "Answer", "text": "Sprawdź dokładny typ i wymiar, część oraz rok normy, klasę zastosowania, ciśnienie, budowę warstw, barierę tlenową, kompatybilne kształtki i narzędzia, instrukcję montażu, identyfikację partii oraz zgodność z obliczeniami projektu." } }
      ]
    },
    {
      "@type": "Service",
      "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#service",
      "name": "Projekt instalacji ogrzewania podłogowego",
      "url": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/",
      "provider": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "areaServed": { "@type": "Country", "name": "Polska" },
      "serviceType": "Projekt ogrzewania podłogowego z obliczeniami cieplnymi i hydraulicznymi"
    }
  ]
}
</script>

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

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

  var stages = {
    part1: {
      label: "ISO 15875-1:2025",
      title: "Najpierw ustal warunki odniesienia",
      scope: "Ogólne aspekty systemów PE-X, klasy zastosowania, ciśnienia projektowe i klasy wymiarowe.",
      confirms: "Jakie warunki temperaturowo-czasowe stanowią podstawę klasyfikacji i badań serii.",
      limits: "Że dowolna rura, kształtka i połączenie tworzą kompatybilny system.",
      document: "Pełne oznaczenie części, wydanie, klasę zastosowania i deklarowane ciśnienie."
    },
    part2: {
      label: "ISO 15875-2:2025",
      title: "Następnie zweryfikuj dokładną rurę PE-X",
      scope: "Charakterystyki rur PE-X i parametry właściwych badań; zakres obejmuje rury z warstwą barierową i bez niej.",
      confirms: "Właściwości zadeklarowane dla identyfikowanego typu i wymiaru przewodu.",
      limits: "Spełnienia kryterium DIN 4726 ani zgodności z dowolną kształtką o tej samej średnicy.",
      document: "Kartę dokładnego wyrobu, deklarację, raporty, wymiar, klasę, ciśnienie i numer partii."
    },
    part3: {
      label: "ISO 15875-3:2025",
      title: "Potwierdź przeznaczenie kształtek",
      scope: "Charakterystyki kształtek mechanicznych i elektrooporowych przeznaczonych do systemów PE-X.",
      confirms: "Zakres elementów połączeniowych ocenianych względem wymagań właściwych dla części 3.",
      limits: "Że każda złączka pasująca wymiarowo tworzy trwałe połączenie z wybraną rurą.",
      document: "Wykaz zgodnych rur, kształtek, tulei, uszczelnień i wymaganych narzędzi."
    },
    part5: {
      label: "ISO 15875-5:2025",
      title: "Na końcu sprawdź przydatność połączenia i systemu",
      scope: "Właściwości połączeń między rurami z części 2 a kształtkami z części 3.",
      confirms: "Przydatność określonego zestawu elementów do deklarowanych warunków systemowych.",
      limits: "Mocy podłogi, rozstawu, długości pętli, przepływu ani jakości montażu na budowie.",
      document: "Dokument systemowy, instrukcję połączeń, procedurę montażu i zakres objętych elementów."
    }
  };

  var tabs = guide.querySelectorAll("[data-rk-stage]");
  var stageLabel = document.getElementById("rk-iso-stage-label");
  var stageTitle = document.getElementById("rk-iso-stage-title");
  var stageScope = document.getElementById("rk-iso-stage-scope");
  var stageConfirms = document.getElementById("rk-iso-stage-confirms");
  var stageLimits = document.getElementById("rk-iso-stage-limits");
  var stageDocument = document.getElementById("rk-iso-stage-document");

  function showStage(key, shouldFocus) {
    var data = stages[key];
    if (!data) {
      return;
    }

    stageLabel.textContent = data.label;
    stageTitle.textContent = data.title;
    stageScope.textContent = data.scope;
    stageConfirms.textContent = data.confirms;
    stageLimits.textContent = data.limits;
    stageDocument.textContent = data.document;

    tabs.forEach(function (tab) {
      var isCurrent = tab.getAttribute("data-rk-stage") === key;
      tab.setAttribute("aria-selected", isCurrent ? "true" : "false");
      tab.setAttribute("tabindex", isCurrent ? "0" : "-1");
      if (isCurrent) {
        if (shouldFocus) {
          tab.focus();
        }
      }
    });
  }

  tabs.forEach(function (tab, index) {
    tab.addEventListener("click", function () {
      showStage(tab.getAttribute("data-rk-stage"), false);
    });

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

      event.preventDefault();
      showStage(tabs[nextIndex].getAttribute("data-rk-stage"), true);
    });
  });

  showStage("part1", false);
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/norma-en-iso-15875/">EN ISO 15875:2025 – wymagania dla rur PE-X w ogrzewaniu podłogowym.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>DIN 4726 w ogrzewaniu podłogowym – bariera tlenowa rur bez mitów.</title>
		<link>https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 22 Feb 2025 20:01:13 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Normy grzewcze]]></category>
		<category><![CDATA[Normy techniczne]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Rury do ogrzewania]]></category>
		<category><![CDATA[Rury do podłogówki]]></category>
		<category><![CDATA[Technologie grzewcze]]></category>
		<category><![CDATA[Zapobieganie korozji]]></category>
		<category><![CDATA[bariera antydyfuzyjna]]></category>
		<category><![CDATA[dyfuzja tlenu]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[korozja w instalacjach]]></category>
		<category><![CDATA[norma din 4726]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<category><![CDATA[rury pe-rt]]></category>
		<category><![CDATA[rury pex]]></category>
		<category><![CDATA[trwałość systemu grzewczego]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2284</guid>

					<description><![CDATA[<p>Ogrzewanie podłogowe to komfort i efektywność, ale czy wiesz, że niewłaściwe materiały mogą skrócić żywotność całego systemu? Norma DIN 4726 to kluczowy standard, który ogranicza dyfuzję tlenu do 0,1 g/(m³·dzień), chroniąc instalację przed korozją i awariami. Dowiedz się, dlaczego warto wybierać rury z barierą antydyfuzyjną, jak projektować system zgodnie z normą oraz jakie korzyści przynosi jej stosowanie.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/">DIN 4726 w ogrzewaniu podłogowym – bariera tlenowa rur bez mitów.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<!--
  PROJEKT-OGRZEWANIA.PL — pełny kod do bloku „Własny HTML”.
  Wklej kod POD natywnym tytułem H1 generowanym przez WordPress.

  USTAWIENIA WORDPRESS / YOAST:
  H1: DIN 4726 w ogrzewaniu podłogowym – bariera tlenowa rur bez mitów
  Fraza główna: norma DIN 4726 w ogrzewaniu podłogowym
  SEO title: DIN 4726 a bariera tlenowa rur do podłogówki
  Meta description: Sprawdź, co określa DIN 4726:2024-12, jak działa bariera EVOH i aluminium, jak czytać dokumentację rur oraz czego norma nie gwarantuje.
  Slug: pozostaw bez zmian.

  GRAFIKA WYRÓŻNIAJĄCA:
  Adres: https://projekt-ogrzewania.pl/wp-content/uploads/2025/02/Norma-DIN-4726-w-ogrzewaniu-podlogowym.webp
  ALT: Norma DIN 4726 w ogrzewaniu podłogowym – bariera tlenowa rur
  Tytuł: DIN 4726 i bariera tlenowa rur do podłogówki
  Opis: Techniczny poradnik wyjaśniający wymagania DIN 4726:2024-12, mechanizm dyfuzji tlenu, konstrukcje barierowe i sposób weryfikacji dokumentacji rur.
-->

<style>
  #rk-din-guide {
    --rk-navy: #0b2536;
    --rk-navy-2: #12394d;
    --rk-navy-3: #1b465b;
    --rk-cyan: #29c4d7;
    --rk-cyan-dark: #078fb3;
    --rk-cyan-soft: #def7fa;
    --rk-orange: #ff6846;
    --rk-orange-dark: #e44f31;
    --rk-yellow: #f2b526;
    --rk-green: #2fcda1;
    --rk-green-dark: #168267;
    --rk-red: #d7504a;
    --rk-ink: #10283a;
    --rk-copy: #3c5668;
    --rk-muted: #6b8191;
    --rk-line: #d3e2e8;
    --rk-bg: #f3f8fa;
    --rk-white: #ffffff;
    color: var(--rk-ink);
    font-family: Arial, Helvetica, sans-serif;
    line-height: 1.62;
    margin: 0 auto;
    max-width: 1360px;
    overflow-wrap: anywhere;
    width: 100%;
  }

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

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

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

  #rk-din-guide button {
    font: inherit;
  }

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

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

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

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

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

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

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

  #rk-din-guide .rk-din-hero-title {
    color: #ffffff;
    font-size: clamp(2.4rem, 6vw, 5.15rem);
    margin: 0;
    max-width: 1200px;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-din-guide .rk-din-section-dark .rk-din-card {
    background: #173e51;
    border-color: #356178;
  }

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

  #rk-din-guide .rk-din-section-dark .rk-din-card-number,
  #rk-din-guide .rk-din-section-dark .rk-din-icon {
    background: #23566d;
    color: #7ce9f1;
  }

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

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

  #rk-din-guide .rk-din-section-dark .rk-din-card h3 {
    color: #ffffff;
  }

  #rk-din-guide .rk-din-section-dark .rk-din-card p,
  #rk-din-guide .rk-din-section-dark .rk-din-card li {
    color: #c8dce3;
  }

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

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

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

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

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

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

  #rk-din-guide .rk-din-section-dark .rk-din-bullets {
    color: #c8dce3;
  }

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

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

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

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

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

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

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

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

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

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

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

  #rk-din-guide .rk-din-criterion {
    align-items: center;
    background: var(--rk-navy);
    border-radius: 20px;
    display: grid;
    gap: 26px;
    grid-template-columns: 260px minmax(0, 1fr);
    margin-top: 30px;
    padding: 30px;
  }

  #rk-din-guide .rk-din-criterion-value {
    background: #173e51;
    border: 1px solid #356178;
    border-radius: 16px;
    color: #72e7ef;
    font-size: clamp(1.65rem, 4vw, 2.55rem);
    font-weight: 900;
    line-height: 1.1;
    padding: 26px 18px;
    text-align: center;
  }

  #rk-din-guide .rk-din-criterion-value small {
    color: #bad3dc;
    display: block;
    font-size: 0.72rem;
    letter-spacing: 0.05em;
    margin-top: 10px;
    text-transform: uppercase;
  }

  #rk-din-guide .rk-din-criterion-copy h3 {
    color: #ffffff;
    font-size: 1.35rem;
    margin: 0 0 9px;
  }

  #rk-din-guide .rk-din-criterion-copy p {
    color: #c8dce3;
    margin: 0;
  }

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

  #rk-din-guide .rk-din-pathway-head {
    border-bottom: 1px solid #315a70;
    margin-bottom: 22px;
    padding-bottom: 20px;
  }

  #rk-din-guide .rk-din-pathway-head h3 {
    color: #ffffff;
    font-size: clamp(1.5rem, 3vw, 2.25rem);
    line-height: 1.2;
    margin: 0;
  }

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

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

  #rk-din-guide .rk-din-stage-tab {
    align-items: flex-start;
    background: #173e51;
    border: 1px solid #356178;
    border-radius: 14px;
    color: #ffffff;
    cursor: pointer;
    display: flex;
    gap: 11px;
    line-height: 1.3;
    min-height: 78px;
    padding: 14px;
    text-align: left;
  }

  #rk-din-guide .rk-din-stage-tab span {
    align-items: center;
    background: #23566d;
    border-radius: 9px;
    color: #76e8f1;
    display: inline-flex;
    flex: 0 0 34px;
    font-weight: 900;
    height: 34px;
    justify-content: center;
  }

  #rk-din-guide .rk-din-stage-tab strong {
    display: block;
    padding-top: 5px;
  }

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

  #rk-din-guide .rk-din-stage-tab[aria-selected="true"] span {
    background: #ffffff;
    color: #08728b;
  }

  #rk-din-guide .rk-din-stage-panel {
    background: #ffffff;
    border-left: 7px solid var(--rk-cyan);
    border-radius: 17px;
    margin-top: 18px;
    padding: 25px;
  }

  #rk-din-guide .rk-din-stage-label {
    color: var(--rk-cyan-dark);
    display: block;
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.09em;
    text-transform: uppercase;
  }

  #rk-din-guide .rk-din-stage-panel h3 {
    color: var(--rk-ink);
    font-size: 1.65rem;
    line-height: 1.25;
    margin: 8px 0 18px;
  }

  #rk-din-guide .rk-din-stage-facts {
    display: grid;
    gap: 13px;
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  #rk-din-guide .rk-din-stage-fact {
    background: #f3f8fa;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    padding: 17px;
  }

  #rk-din-guide .rk-din-stage-fact strong {
    color: var(--rk-cyan-dark);
    display: block;
    font-size: 0.72rem;
    letter-spacing: 0.07em;
    margin-bottom: 7px;
    text-transform: uppercase;
  }

  #rk-din-guide .rk-din-stage-fact p {
    color: var(--rk-copy);
    margin: 0;
  }

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

  #rk-din-guide .rk-din-checkstep {
    background: #ffffff;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    padding: 21px;
    position: relative;
  }

  #rk-din-guide .rk-din-checkstep::after {
    color: var(--rk-cyan);
    content: "›";
    font-size: 2rem;
    font-weight: 900;
    position: absolute;
    right: -12px;
    top: 40%;
    z-index: 2;
  }

  #rk-din-guide .rk-din-checkstep:last-child::after {
    content: "";
  }

  #rk-din-guide .rk-din-checkstep span {
    color: var(--rk-cyan-dark);
    display: block;
    font-size: 0.73rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    margin-bottom: 7px;
    text-transform: uppercase;
  }

  #rk-din-guide .rk-din-checkstep strong {
    color: var(--rk-ink);
    display: block;
    line-height: 1.35;
  }

  #rk-din-guide .rk-din-checkstep p {
    color: var(--rk-copy);
    font-size: 0.9rem;
    margin: 8px 0 0;
  }

  #rk-din-guide .rk-din-marking {
    background: var(--rk-navy);
    border-radius: 18px;
    color: #ffffff;
    margin-top: 28px;
    padding: 24px;
  }

  #rk-din-guide .rk-din-marking-line {
    background: #ffffff;
    border: 5px solid var(--rk-cyan);
    border-radius: 999px;
    color: var(--rk-ink);
    display: flex;
    flex-wrap: wrap;
    font-family: Consolas, Monaco, monospace;
    font-size: 0.88rem;
    font-weight: 800;
    gap: 8px;
    padding: 14px 20px;
  }

  #rk-din-guide .rk-din-marking-line span {
    background: #edf7f9;
    border-radius: 7px;
    padding: 4px 7px;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    #rk-din-guide .rk-din-checkstep:nth-child(2)::after {
      content: "";
    }

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

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

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

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

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

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

    #rk-din-guide .rk-din-criterion {
      grid-template-columns: minmax(0, 1fr);
    }
  }

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

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

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

    #rk-din-guide .rk-din-checkstep::after,
    #rk-din-guide .rk-din-checkstep:nth-child(2)::after {
      content: "";
    }

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

    #rk-din-guide .rk-din-pathway,
    #rk-din-guide .rk-din-cta,
    #rk-din-guide .rk-din-criterion {
      border-radius: 17px;
      padding: 20px;
    }

    #rk-din-guide .rk-din-stage-panel {
      padding: 18px;
    }

    #rk-din-guide .rk-din-cta-button {
      text-align: center;
      width: 100%;
    }

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

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

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

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

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

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

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

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

    #rk-din-guide .rk-din-marking-line {
      border-radius: 16px;
    }

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

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

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

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

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

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

    #rk-din-guide .rk-din-hero-title {
      font-size: 2.18rem;
    }

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

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

<article id="rk-din-guide" aria-labelledby="rk-din-visual-title">
  <div class="rk-din-shell">
    <header class="rk-din-hero">
      <span class="rk-din-kicker">DIN 4726:2024-12 · bariera tlenowa bez skrótów</span>
      <div class="rk-din-hero-title" id="rk-din-visual-title">DIN 4726 w ogrzewaniu podłogowym: <span>co naprawdę potwierdza norma?</span></div>
      <p class="rk-din-hero-lead">Napis „EVOH” nie kończy weryfikacji rury. Wyjaśniam, jak tlen przenika przez ściankę przewodu, czego dotyczy aktualne wydanie DIN 4726, jak czytać dokumentację oraz dlaczego zgodność z wymaganiem dyfuzyjnym nie zastępuje projektu hydraulicznego.</p>
      <div class="rk-din-hero-tags" aria-label="Zakres poradnika">
        <span>DIN 4726:2024-12</span>
        <span>EVOH i aluminium</span>
        <span>dyfuzja tlenu</span>
        <span>weryfikacja rury</span>
        <span>korozja i osady</span>
      </div>
      <div class="rk-din-meta">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: <strong>około 23 minuty</strong></span>
        <span>Aktualizacja techniczna: <strong>17 września 2026 r.</strong></span>
      </div>
    </header>

    <nav class="rk-din-shortcuts" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-din-shortcuts-label">Na skróty</span>
      <a href="#rk-din-answer">Szybka odpowiedź</a>
      <a href="#rk-din-standard">Czym jest DIN 4726</a>
      <a href="#rk-din-scope">Zakres normy</a>
      <a href="#rk-din-diffusion">Jak przenika tlen</a>
      <a href="#rk-din-criterion">Kryterium 0,1</a>
      <a href="#rk-din-consequences">Skutki w instalacji</a>
      <a href="#rk-din-barriers">Rodzaje barier</a>
      <a href="#rk-din-pathway">Droga tlenu</a>
      <a href="#rk-din-verification">Weryfikacja rury</a>
      <a href="#rk-din-markings">Oznaczenia</a>
      <a href="#rk-din-product-standards">Normy produktowe</a>
      <a href="#rk-din-limits">Czego nie gwarantuje</a>
      <a href="#rk-din-installation">Montaż</a>
      <a href="#rk-din-other-sources">Inne drogi tlenu</a>
      <a href="#rk-din-existing">Starsza instalacja</a>
      <a href="#rk-din-water">Woda i ochrona</a>
      <a href="#rk-din-errors">Błędy</a>
      <a href="#rk-din-checklist">Checklista</a>
      <a href="#rk-din-summary">Podsumowanie</a>
      <a href="#rk-din-sources">Źródła</a>
      <a href="#rk-din-faq">FAQ</a>
      <a href="#rk-din-author">Autor</a>
    </nav>

    <section class="rk-din-section" id="rk-din-answer">
      <span class="rk-din-eyebrow">Odpowiedź w 60 sekund</span>
      <h2 class="rk-din-section-title">Co norma DIN 4726 oznacza dla rury do podłogówki?</h2>
      <p class="rk-din-lead"><strong>DIN 4726 opisuje wymagania dotyczące przewodów z tworzyw i rur wielowarstwowych stosowanych w wodnych systemach ogrzewania płaszczyznowego oraz przyłączach grzejnikowych, w tym ograniczenie przenikania tlenu przez ściankę.</strong> Aktualne wydanie ma oznaczenie DIN 4726:2024-12.</p>
      <div class="rk-din-answer">
        <strong>Zgodność z DIN 4726 pomaga ograniczyć jeden konkretny mechanizm dopływu tlenu: dyfuzję przez ściankę rury.</strong>
        <p>Nie potwierdza automatycznie prawidłowej średnicy, klasy temperaturowej, ciśnienia, kompatybilności złączek, długości pętli ani odporności całej instalacji na korozję. Te warunki sprawdza się osobno.</p>
      </div>
      <div class="rk-din-grid-3">
        <article class="rk-din-card"><span class="rk-din-icon">1</span><h3>Sprawdź dokładny wyrób</h3><p>Odniesienie do normy musi dotyczyć konkretnego typu i wymiaru rury, nie tylko rodziny PE-X albo PE-RT.</p></article>
        <article class="rk-din-card"><span class="rk-din-icon">2</span><h3>Rozróżnij konstrukcje</h3><p>EVOH jest warstwą polimerową, a aluminium warstwą metalową. Oba rozwiązania mogą ograniczać dyfuzję, lecz mają inną budowę.</p></article>
        <article class="rk-din-card"><span class="rk-din-icon">3</span><h3>Oceń cały układ</h3><p>Bariera nie usuwa tlenu wprowadzonego przy napełnianiu ani przez nieszczelność, uzupełnianie wody czy niewłaściwe ciśnienie.</p></article>
      </div>
      <p class="rk-din-copy">Jeżeli porównujesz dostępne konstrukcje, zacznij od poradnika o <a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/">rurach do ogrzewania podłogowego</a>, a osobne omówienie warstwy polimerowej znajdziesz w artykule o <a href="https://projekt-ogrzewania.pl/rura-z-bariera-antydyfuzyjna-evoh/">barierze antydyfuzyjnej EVOH</a>.</p>
    </section>

    <section class="rk-din-section rk-din-section-soft" id="rk-din-standard">
      <span class="rk-din-eyebrow">Aktualne wydanie zamiast archiwalnego skrótu</span>
      <h2 class="rk-din-section-title">Czym jest DIN 4726:2024-12?</h2>
      <p class="rk-din-lead">To niemiecka norma techniczna dotycząca systemów rurowych z tworzyw i rur wielowarstwowych stosowanych w wodnym ogrzewaniu płaszczyznowym oraz przyłączach grzejnikowych. Wydanie z grudnia 2024 r. zastąpiło DIN 4726:2017-10.</p>
      <div class="rk-din-grid-3">
        <article class="rk-din-card"><span class="rk-din-card-number">CO</span><h3>Wymagania dla przewodów</h3><p>Dokument porządkuje wymagania podstawowe i dodatkowe dla wyrobów przeznaczonych do wskazanych zastosowań grzewczych.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">DLA KOGO</span><h3>Projekt, produkcja i odbiór</h3><p>Norma jest punktem odniesienia dla dokumentacji wyrobu, specyfikacji projektu, zakupów i weryfikacji dostawy.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">JAK</span><h3>Razem z innymi dokumentami</h3><p>DIN 4726 nie zastępuje norm produktowych opisujących PE-X, PE-RT lub rury wielowarstwowe ani instrukcji systemowej.</p></article>
      </div>
      <div class="rk-din-note"><p><strong>Uwaga na datę:</strong> karta produktu powołująca wyłącznie wydanie z 2017 r. nie musi oznaczać wadliwego wyrobu, ale wymaga ustalenia, do jakiej wersji wykonano badanie i czy dokumentacja została zaktualizowana.</p></div>
    </section>

    <section class="rk-din-section" id="rk-din-scope">
      <span class="rk-din-eyebrow">Jedno wymaganie nie opisuje całej rury</span>
      <h2 class="rk-din-section-title">Zakres DIN 4726 — co obejmuje, a co wymaga osobnej weryfikacji?</h2>
      <p class="rk-din-lead">Najczęściej mówi się o niej wyłącznie w kontekście bariery tlenowej. To ważny fragment, lecz przy zakupie trzeba rozdzielić wymagania normy, właściwości produktu i parametry konkretnej instalacji.</p>
      <div class="rk-din-table-wrap">
        <table>
          <thead><tr><th>Obszar</th><th>Rola DIN 4726</th><th>Co jeszcze sprawdzić</th><th>Typowy błąd</th></tr></thead>
          <tbody>
            <tr><td data-label="Obszar"><strong>Dyfuzja tlenu</strong></td><td data-label="Rola DIN 4726">Określa sposób oceny ograniczenia przenikania tlenu w zdefiniowanych warunkach.</td><td data-label="Co jeszcze sprawdzić">Dokładny typ, wymiar, konstrukcję warstw i dokument potwierdzający.</td><td data-label="Typowy błąd">Uznanie samego napisu EVOH za pełne potwierdzenie.</td></tr>
            <tr><td data-label="Obszar"><strong>Materiał rury</strong></td><td data-label="Rola DIN 4726">Dotyczy przewodów z tworzyw i rur wielowarstwowych w określonych zastosowaniach.</td><td data-label="Co jeszcze sprawdzić">Właściwą normę produktową dla PE-X, PE-RT lub konstrukcji wielowarstwowej.</td><td data-label="Typowy błąd">Założenie, że każda rura PE-X ma barierę.</td></tr>
            <tr><td data-label="Obszar"><strong>Warunki pracy</strong></td><td data-label="Rola DIN 4726">Nie zastępuje pełnej klasyfikacji temperatury, czasu i ciśnienia.</td><td data-label="Co jeszcze sprawdzić">Klasę zastosowania, ciśnienie projektowe i ograniczenia instrukcji.</td><td data-label="Typowy błąd">Czytanie jednej temperatury jako stałej dopuszczalnej pracy.</td></tr>
            <tr><td data-label="Obszar"><strong>Hydraulika</strong></td><td data-label="Rola DIN 4726">Nie dobiera średnicy, długości pętli, przepływu ani pompy.</td><td data-label="Co jeszcze sprawdzić">Światło rury, przepływy, opory obwodów i punkt pracy pompy.</td><td data-label="Typowy błąd">Zakup pełnego metrażu przed podziałem na pętle.</td></tr>
          </tbody>
        </table>
      </div>
      <p class="rk-din-copy">Szczegółowe wymagania materiałowe dla rur sieciowanych omawia poradnik o <a href="https://projekt-ogrzewania.pl/norma-en-iso-15875/">EN ISO 15875</a>. Z kolei zależność między rodzajem przewodu a warunkami eksploatacji rozwijam w artykule o <a href="https://projekt-ogrzewania.pl/wytrzymalosc-rur-do-ogrzewania-podlogowego-kompleksowy-przewodnik/">wytrzymałości rur do ogrzewania podłogowego</a>.</p>
    </section>

    <section class="rk-din-section rk-din-section-soft" id="rk-din-diffusion">
      <span class="rk-din-eyebrow">Mechanizm zachodzi w materiale</span>
      <h2 class="rk-din-section-title">Jak tlen przenika przez ściankę rury?</h2>
      <p class="rk-din-lead">Cząsteczki tlenu mogą rozpuszczać się w materiale polimerowym, przemieszczać przez jego strukturę pod wpływem różnicy stężeń lub ciśnień cząstkowych, a następnie przechodzić do wody instalacyjnej. Nie wynika to z tego, że rura leży w „mokrym jastrychu”.</p>
      <div class="rk-din-grid-4">
        <article class="rk-din-card"><span class="rk-din-card-number">01</span><h3>Otoczenie</h3><p>Po zewnętrznej stronie przewodu znajduje się powietrze zawierające tlen.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">02</span><h3>Absorpcja</h3><p>Cząsteczki mogą wnikać do materiału polimerowej ścianki.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">03</span><h3>Dyfuzja</h3><p>Tlen przemieszcza się przez materiał; tempo zależy między innymi od konstrukcji i temperatury.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">04</span><h3>Desorpcja</h3><p>Po wewnętrznej stronie może przejść do wody i zostać przeniesiony dalej z obiegiem.</p></article>
      </div>
      <div class="rk-din-note rk-din-note-good"><p><strong>Rola bariery:</strong> odpowiednia warstwa tworzy drogę o znacznie mniejszej przepuszczalności dla tlenu. Nie „wyciąga” tlenu z wody i nie naprawia innych dróg jego dopływu.</p></div>
    </section>

    <section class="rk-din-section" id="rk-din-criterion">
      <span class="rk-din-eyebrow">Wartość z warunkami brzegowymi</span>
      <h2 class="rk-din-section-title">Co oznacza kryterium 0,1 g/(m³·d) i dlaczego nie jest domowym wzorem?</h2>
      <p class="rk-din-lead">W praktyce technicznej spotkasz kryterium przepuszczalności tlenu znormalizowane do objętości wody, podawane dla określonego badania przy 40°C. Jednostka nie opisuje masy tlenu przypadającej na metr kwadratowy rury.</p>
      <div class="rk-din-criterion">
        <div class="rk-din-criterion-value">≤ 0,1 g/(m³·d)<small>kryterium w warunkach badania przy 40°C</small></div>
        <div class="rk-din-criterion-copy">
          <h3>Nie mnożymy tej wartości przez powierzchnię zewnętrzną ani długość pętli</h3>
          <p>Jednostka jest odniesiona do objętości wody i procedury badawczej. Bez pełnej metody, geometrii stanowiska i warunków pomiaru próba przeliczenia jej na „gramy tlenu na dobę dla domu” prowadzi do błędu wymiarowego.</p>
        </div>
      </div>
      <div class="rk-din-grid-3">
        <article class="rk-din-card"><span class="rk-din-icon">✓</span><h3>Co wolno zrobić</h3><p>Sprawdzić, czy dokument konkretnego typu i wymiaru potwierdza spełnienie właściwego kryterium.</p></article>
        <article class="rk-din-card"><span class="rk-din-icon">×</span><h3>Czego nie robić</h3><p>Nie przeliczać wartości na domową instalację przez przypadkowe mnożenie powierzchni rury.</p></article>
        <article class="rk-din-card"><span class="rk-din-icon">?</span><h3>O co zapytać</h3><p>Jakiego wydania normy dotyczy badanie, dla jakiego wyrobu oraz czy obejmuje wybrany wymiar.</p></article>
      </div>
    </section>

    <section class="rk-din-section rk-din-section-dark" id="rk-din-consequences">
      <span class="rk-din-eyebrow">Tlen jest reagentem, nie katalizatorem</span>
      <h2 class="rk-din-section-title">Co tlen może zrobić w zamkniętej instalacji grzewczej?</h2>
      <p class="rk-din-lead">Tlen uczestniczy w reakcjach korozyjnych elementów metalowych. Sama rura polimerowa nie rdzewieje, ale instalacja obejmuje zwykle pompę, rozdzielacz, źródło ciepła, armaturę i inne części zawierające metale.</p>
      <div class="rk-din-grid-3">
        <article class="rk-din-card"><span class="rk-din-card-number">1</span><h3>Reakcje korozyjne</h3><p>Dostęp tlenu może podtrzymywać korozję metali zależnie od materiałów, temperatury, chemii wody i warunków pracy.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">2</span><h3>Produkty korozji</h3><p>Powstające tlenki i osady mogą krążyć z wodą, gromadzić się w elementach oraz zmieniać warunki przepływu.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">3</span><h3>Problemy eksploatacyjne</h3><p>Zanieczyszczenia mogą obciążać wirnik pompy, zawory, przepływomierze i wąskie kanały wymiennika.</p></article>
      </div>
      <p class="rk-din-copy">Objawy takie jak hałas, zmienne przepływy lub nierównomierne grzanie nie dowodzą jednak uszkodzenia bariery. Najpierw trzeba rozróżnić zanieczyszczenie, powietrze, niewłaściwe ciśnienie i błędy regulacji. Pomocny jest poradnik o <a href="https://projekt-ogrzewania.pl/objawy-zapowietrzenia-ogrzewania-podlogowego/">objawach zapowietrzenia podłogówki</a>.</p>
    </section>

    <section class="rk-din-section" id="rk-din-barriers">
      <span class="rk-din-eyebrow">Konstrukcja zamiast rankingu</span>
      <h2 class="rk-din-section-title">EVOH, warstwa chroniona czy aluminium — jak różnią się bariery?</h2>
      <p class="rk-din-lead">Nie każda rura ma tę samą budowę. Oprócz materiału nośnego znaczenie ma położenie warstwy barierowej, jej ochrona, sposób połączenia warstw oraz dokumentacja gotowego wyrobu.</p>
      <div class="rk-din-table-wrap">
        <table>
          <thead><tr><th>Konstrukcja</th><th>Co można stwierdzić</th><th>Czego nie wolno zakładać</th><th>Co sprawdzić</th></tr></thead>
          <tbody>
            <tr><td data-label="Konstrukcja"><strong>Rura bez zadeklarowanej bariery</strong></td><td data-label="Co można stwierdzić">Brakuje podstawy do uznania ograniczenia dyfuzji za potwierdzone.</td><td data-label="Czego nie wolno zakładać">Że sam materiał PE-X lub PE-RT zapewnia zgodność.</td><td data-label="Co sprawdzić">Pełną kartę wyrobu i jego przeznaczenie.</td></tr>
            <tr><td data-label="Konstrukcja"><strong>Zewnętrzna warstwa EVOH</strong></td><td data-label="Co można stwierdzić">Polimerowa warstwa może ograniczać przenikanie tlenu.</td><td data-label="Czego nie wolno zakładać">Że każde zarysowanie ją zniszczy albo że sam napis EVOH potwierdza parametr.</td><td data-label="Co sprawdzić">Położenie, wymagania badania, transport i montaż.</td></tr>
            <tr><td data-label="Konstrukcja"><strong>EVOH chronione warstwą</strong></td><td data-label="Co można stwierdzić">Warstwa funkcyjna znajduje się wewnątrz konstrukcji i ma dodatkową osłonę.</td><td data-label="Czego nie wolno zakładać">Że liczba warstw sama świadczy o jakości całego produktu.</td><td data-label="Co sprawdzić">Układ warstw, adhezję, normę i dokładny typ rury.</td></tr>
            <tr><td data-label="Konstrukcja"><strong>Rura wielowarstwowa z aluminium</strong></td><td data-label="Co można stwierdzić">Ciągła warstwa metalu może pełnić funkcję bariery i ograniczać rozszerzalność.</td><td data-label="Czego nie wolno zakładać">Że konstrukcja musi dodatkowo zawierać EVOH albo że każde łączenie Al jest identyczne.</td><td data-label="Co sprawdzić">Normę produktową, układ warstw, łączenie aluminium i zgodne złączki.</td></tr>
          </tbody>
        </table>
      </div>
      <p class="rk-din-copy">Porównanie rodzin materiałowych znajdziesz również w osobnych poradnikach o <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/">rurze PE-X</a> i <a href="https://projekt-ogrzewania.pl/rura-pert-do-ogrzewania-podlogowego/">rurze PE-RT</a>. Nazwa materiału jest początkiem identyfikacji, a nie wynikiem oceny.</p>
    </section>

    <section class="rk-din-section rk-din-section-dark" id="rk-din-pathway">
      <span class="rk-din-eyebrow">Moduł edukacyjny</span>
      <h2 class="rk-din-section-title">Droga tlenu przez rurę — co zatrzymuje bariera?</h2>
      <p class="rk-din-lead">Wybierz etap, aby oddzielić mechanizm fizyczny od skutków eksploatacyjnych. Moduł nie symuluje konkretnej rury i nie zastępuje wyniku badania.</p>
      <div class="rk-din-pathway" id="rk-din-pathway-tool">
        <div class="rk-din-pathway-head">
          <h3>Od powietrza otaczającego przewód do produktów korozji</h3>
          <p>Sześć kroków pokazuje, gdzie działa bariera, co obejmuje ocena dyfuzji i co trzeba zweryfikować osobno.</p>
        </div>
        <div class="rk-din-stage-tabs" role="tablist" aria-label="Etapy drogi tlenu">
          <button class="rk-din-stage-tab" id="rk-din-tab-air" type="button" role="tab" aria-selected="true" aria-controls="rk-din-stage-panel" tabindex="0" data-rk-stage="air"><span>1</span><strong>Powietrze otaczające rurę</strong></button>
          <button class="rk-din-stage-tab" id="rk-din-tab-wall" type="button" role="tab" aria-selected="false" aria-controls="rk-din-stage-panel" tabindex="-1" data-rk-stage="wall"><span>2</span><strong>Ścianka polimerowa</strong></button>
          <button class="rk-din-stage-tab" id="rk-din-tab-barrier" type="button" role="tab" aria-selected="false" aria-controls="rk-din-stage-panel" tabindex="-1" data-rk-stage="barrier"><span>3</span><strong>Warstwa bariery</strong></button>
          <button class="rk-din-stage-tab" id="rk-din-tab-water" type="button" role="tab" aria-selected="false" aria-controls="rk-din-stage-panel" tabindex="-1" data-rk-stage="water"><span>4</span><strong>Woda instalacyjna</strong></button>
          <button class="rk-din-stage-tab" id="rk-din-tab-metal" type="button" role="tab" aria-selected="false" aria-controls="rk-din-stage-panel" tabindex="-1" data-rk-stage="metal"><span>5</span><strong>Metalowe elementy</strong></button>
          <button class="rk-din-stage-tab" id="rk-din-tab-products" type="button" role="tab" aria-selected="false" aria-controls="rk-din-stage-panel" tabindex="-1" data-rk-stage="products"><span>6</span><strong>Produkty korozji i osady</strong></button>
        </div>
        <div class="rk-din-stage-panel" id="rk-din-stage-panel" role="tabpanel" aria-labelledby="rk-din-tab-air" aria-live="polite">
          <span class="rk-din-stage-label" id="rk-din-stage-label">Etap 1 z 6</span>
          <h3 id="rk-din-stage-title">Powietrze otaczające rurę</h3>
          <div class="rk-din-stage-facts">
            <div class="rk-din-stage-fact"><strong>Co się dzieje</strong><p id="rk-din-stage-happens">Po zewnętrznej stronie przewodu znajduje się tlen, który tworzy różnicę stężeń względem wody w instalacji.</p></div>
            <div class="rk-din-stage-fact"><strong>Co obejmuje DIN</strong><p id="rk-din-stage-covers">Warunki oceny uwzględniają napęd dyfuzji przez badaną konstrukcję przewodu.</p></div>
            <div class="rk-din-stage-fact"><strong>Co zweryfikować</strong><p id="rk-din-stage-check">Nie wyciągaj wniosków z miejsca ułożenia rury; liczy się przebadana konstrukcja i temperatura badania.</p></div>
          </div>
        </div>
      </div>
      <div class="rk-din-note"><p><strong>Dlaczego ten moduł zamiast kalkulatora?</strong> Tematem jest interpretacja wymagania i droga tlenu, nie dobór na podstawie danych inwestora. Kalkulator sugerowałby dokładność, której bez laboratoryjnych parametrów konkretnej rury nie da się uczciwie uzyskać.</p></div>
    </section>

    <section class="rk-din-section rk-din-section-soft" id="rk-din-verification">
      <span class="rk-din-eyebrow">Od hasła handlowego do dowodu</span>
      <h2 class="rk-din-section-title">Jak zweryfikować zgodność konkretnej rury?</h2>
      <p class="rk-din-lead">Weryfikacja powinna tworzyć łańcuch od produktu dostarczonego na budowę do dokumentu odnoszącego się dokładnie do tego wyrobu. Ogólna deklaracja dla całej marki lub rodziny nie zawsze obejmuje każdy wymiar i konstrukcję.</p>
      <div class="rk-din-checkflow" aria-label="Cztery etapy weryfikacji rury">
        <div class="rk-din-checkstep"><span>Krok 1</span><strong>Zidentyfikuj rurę</strong><p>Materiał, układ warstw, pełny wymiar, nazwa handlowa i kod produktu.</p></div>
        <div class="rk-din-checkstep"><span>Krok 2</span><strong>Znajdź dokument</strong><p>Karta techniczna lub certyfikat przypisany do dokładnego typu, nie opis sklepu.</p></div>
        <div class="rk-din-checkstep"><span>Krok 3</span><strong>Sprawdź odniesienie</strong><p>Wydanie DIN 4726, zakres wyrobu, badany wymiar i sposób sformułowania wyniku.</p></div>
        <div class="rk-din-checkstep"><span>Krok 4</span><strong>Porównaj z dostawą</strong><p>Nadruk, etykieta, partia, dokumentacja i zgodność z zaakceptowaną specyfikacją.</p></div>
      </div>
      <ul class="rk-din-bullets">
        <li>sprawdź, czy dokument identyfikuje producenta, rodzinę, typ i wymiar rury,</li>
        <li>ustal, czy deklaracja dotyczy DIN 4726:2024-12, czy starszego wydania,</li>
        <li>odróżnij deklarację zgodności, raport z badania, certyfikat i ogólną broszurę,</li>
        <li>zachowaj zdjęcie nadruku i etykiety partii przed zakryciem instalacji,</li>
        <li>porównaj barierę z pozostałymi wymaganiami projektu i systemu połączeń.</li>
      </ul>
      <aside class="rk-din-cta" aria-label="Indywidualny projekt ogrzewania podłogowego">
        <div class="rk-din-cta-title">Masz wybraną rurę zgodną z DIN 4726? Sprawdź jeszcze, czy pasuje do obliczonych pętli</div>
        <p>Bariera tlenowa chroni instalację, ale nie przesądza o prawidłowej średnicy, rozstawie, długości obwodów, przepływach ani oporach. Projekt łączy dokumentację rury z obciążeniem pomieszczeń i hydrauliką całego systemu.</p>
        <a class="rk-din-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Sprawdź rurę w indywidualnym projekcie podłogówki</a>
        <small class="rk-din-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </aside>
    </section>

    <section class="rk-din-section" id="rk-din-markings">
      <span class="rk-din-eyebrow">Nadruk pomaga, dokument rozstrzyga</span>
      <h2 class="rk-din-section-title">Jak czytać oznaczenia i kartę techniczną rury?</h2>
      <p class="rk-din-lead">Nadruk powinien umożliwiać identyfikację produktu, lecz może nie zawierać całego zakresu danych. Poniższy zapis jest przykładem edukacyjnym i nie odwzorowuje etykiety konkretnego producenta.</p>
      <div class="rk-din-marking">
        <div class="rk-din-marking-line" aria-label="Przykładowy nadruk na rurze"><span>PE-RT II / EVOH</span><span>16 × 2,0 mm</span><span>Class 4</span><span>ISO 22391</span><span>DIN 4726</span><span>partia 26A104</span></div>
      </div>
      <div class="rk-din-grid-3">
        <article class="rk-din-card"><span class="rk-din-card-number">01</span><h3>Materiał i warstwy</h3><p>PE-X, PE-RT lub konstrukcja wielowarstwowa oraz informacja o warstwie ograniczającej przenikanie tlenu.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">02</span><h3>Pełny wymiar</h3><p>Średnica zewnętrzna i grubość ścianki wpływają na światło, pojemność i opory hydrauliczne.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">03</span><h3>Klasa i ciśnienie</h3><p>Profil temperaturowo-czasowy należy czytać razem z deklarowanym ciśnieniem, nie jako jedną temperaturę maksymalną.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">04</span><h3>Norma produktowa</h3><p>Odniesienie powinno odpowiadać rodzinie wyrobu; DIN 4726 nie zastępuje właściwej serii ISO.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">05</span><h3>Odniesienie dyfuzyjne</h3><p>Sprawdź treść dokumentu, zakres i wydanie normy, a nie jedynie skrót umieszczony na nadruku.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">06</span><h3>Identyfikowalność</h3><p>Nazwa, partia, kod produkcji i oznaczenie metrowe pomagają powiązać rurę z dokumentacją dostawy.</p></article>
      </div>
      <div class="rk-din-note rk-din-note-bad"><p><strong>Czerwona flaga:</strong> karta bez jednoznacznego typu i wymiaru, ogólne „zgodne z normami” albo sama informacja „z barierą EVOH” nie pozwalają odtworzyć pełnego łańcucha zgodności.</p></div>
    </section>

    <section class="rk-din-section rk-din-section-soft" id="rk-din-product-standards">
      <span class="rk-din-eyebrow">Dokumenty trzeba czytać łącznie</span>
      <h2 class="rk-din-section-title">DIN 4726 a normy produktowe PE-X, PE-RT i rur wielowarstwowych</h2>
      <p class="rk-din-lead">Wymaganie dotyczące dyfuzji jest tylko jednym elementem specyfikacji. Rodzina rury ma własny zestaw wymagań produktowych dotyczących materiału, wymiarów, właściwości i klasyfikacji.</p>
      <div class="rk-din-table-wrap">
        <table>
          <thead><tr><th>Rodzina rury</th><th>Typowa norma produktowa</th><th>Co porządkuje</th><th>Rola DIN 4726</th></tr></thead>
          <tbody>
            <tr><td data-label="Rodzina rury"><strong>PE-X</strong></td><td data-label="Typowa norma produktowa">ISO 15875</td><td data-label="Co porządkuje">Systemy z polietylenu sieciowanego do instalacji ciepłej i zimnej wody.</td><td data-label="Rola DIN 4726">Uzupełnia ocenę o wymagania dla zastosowania grzewczego, w tym ograniczenie dyfuzji.</td></tr>
            <tr><td data-label="Rodzina rury"><strong>PE-RT</strong></td><td data-label="Typowa norma produktowa">ISO 22391</td><td data-label="Co porządkuje">Systemy z polietylenu o podwyższonej odporności temperaturowej.</td><td data-label="Rola DIN 4726">Nie wynika z samego symbolu PE-RT; trzeba sprawdzić konstrukcję barierową wyrobu.</td></tr>
            <tr><td data-label="Rodzina rury"><strong>Wielowarstwowa</strong></td><td data-label="Typowa norma produktowa">ISO 21003</td><td data-label="Co porządkuje">Systemy przewodów wielowarstwowych do instalacji wewnątrz budynków.</td><td data-label="Rola DIN 4726">Pozwala oceniać wymagania zastosowania, a funkcję bariery może pełnić ciągła warstwa metalu.</td></tr>
          </tbody>
        </table>
      </div>
      <p class="rk-din-copy">Przy porównywaniu dwóch ofert nie wystarczy więc pytanie „czy ma DIN 4726?”. Trzeba zestawić pełny wymiar, normę produktową, klasę zastosowania, ciśnienie, konstrukcję bariery, promień gięcia, instrukcję i zgodny system połączeń.</p>
    </section>

    <section class="rk-din-section" id="rk-din-limits">
      <span class="rk-din-eyebrow">Granice wniosku technicznego</span>
      <h2 class="rk-din-section-title">Czego zgodność z DIN 4726 nie gwarantuje?</h2>
      <p class="rk-din-lead">Poprawne odniesienie do normy jest wartościową informacją, ale nie wolno rozszerzać go na właściwości, których nie potwierdza.</p>
      <div class="rk-din-grid-3">
        <article class="rk-din-card"><span class="rk-din-card-number">NIE 1</span><h3>Nie dobiera hydrauliki</h3><p>Nie określa właściwej długości pętli, przepływu, nastawy rotametru ani naporu pompy.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">NIE 2</span><h3>Nie potwierdza wszystkich połączeń</h3><p>Złączka o pasującym wymiarze musi być dopuszczona do konstrukcji rury i procedury montażu.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">NIE 3</span><h3>Nie ustala trwałości całej instalacji</h3><p>Na eksploatację wpływają temperatura, ciśnienie, medium, montaż, regulacja i serwis.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">NIE 4</span><h3>Nie zatrzymuje tlenu z każdej drogi</h3><p>Powietrze może dostać się przez napełnianie, uzupełnianie, nieszczelność lub niewłaściwe ciśnienie.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">NIE 5</span><h3>Nie wyklucza wszystkich osadów</h3><p>Zanieczyszczenia montażowe, kamień, produkty korozji i niewłaściwa woda mają różne źródła.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">NIE 6</span><h3>Nie zastępuje próby i odbioru</h3><p>Rura zgodna z wymaganiem nadal wymaga poprawnego montażu, próby, dokumentacji i ochrony przed zakryciem.</p></article>
      </div>
      <p class="rk-din-copy">Zależności pomiędzy średnicą, długością i oporem trzeba rozstrzygać w projekcie, a nie na podstawie samej etykiety. W praktyce znaczenie ma również prawidłowo dobrana <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompa obiegowa</a> i <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacz ogrzewania podłogowego</a>.</p>
    </section>

    <section class="rk-din-section rk-din-section-soft" id="rk-din-installation">
      <span class="rk-din-eyebrow">Bariera musi przetrwać drogę na budowę</span>
      <h2 class="rk-din-section-title">Transport i montaż rury z warstwą barierową</h2>
      <p class="rk-din-lead">Wymagania laboratoryjne opisują wyrób, ale na budowie trzeba zachować konstrukcję przewodu oraz parametry całego systemu. Instrukcja konkretnej rury ma pierwszeństwo przed ogólną poradą.</p>
      <div class="rk-din-grid-4">
        <article class="rk-din-card"><span class="rk-din-card-number">1</span><h3>Składowanie</h3><p>Chroń kręgi przed uszkodzeniem, zabrudzeniem i warunkami wykluczonymi przez instrukcję.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">2</span><h3>Rozwijanie</h3><p>Używaj rozwijaka i nie przeciągaj rury po ostrych krawędziach, zbrojeniu lub gruzie.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">3</span><h3>Gięcie</h3><p>Zachowaj promień i temperaturę montażu określone dla dokładnej konstrukcji przewodu.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">4</span><h3>Połączenia</h3><p>Stosuj zgodne złączki, narzędzia i procedurę; sama średnica nominalna nie potwierdza kompatybilności.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">5</span><h3>Przejścia</h3><p>Chroń rurę w dylatacjach, przepustach i miejscach narażonych na tarcie lub zgniecenie.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">6</span><h3>Próba</h3><p>Wykonaj właściwą procedurę przed zakryciem i zachowaj protokół wraz ze zdjęciami.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">7</span><h3>Identyfikacja</h3><p>Zapisz partię, trasy pętli, długości oraz ewentualne odstępstwa od specyfikacji.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">8</span><h3>Ochrona prac</h3><p>Ustal zasady poruszania się i wykonywania kolejnych instalacji przed wylewką.</p></article>
      </div>
      <p class="rk-din-copy">Samo odniesienie do DIN 4726 nie jest wynikiem kontroli montażu. Procedurę przed zakryciem opisuje poradnik o <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próbie szczelności ogrzewania podłogowego</a>.</p>
    </section>

    <section class="rk-din-section" id="rk-din-other-sources">
      <span class="rk-din-eyebrow">Szczelna dyfuzyjnie rura to nie szczelny cały układ</span>
      <h2 class="rk-din-section-title">Jak tlen może dostać się do instalacji inną drogą?</h2>
      <p class="rk-din-lead">Jeżeli układ regularnie się zapowietrza albo wymaga częstego uzupełniania, nie należy automatycznie obwiniać bariery rury. Najpierw trzeba znaleźć rzeczywistą drogę dopływu.</p>
      <div class="rk-din-grid-3">
        <article class="rk-din-card"><span class="rk-din-icon">A</span><h3>Napełnianie i serwis</h3><p>Świeża woda wnosi rozpuszczone gazy. Każde opróżnienie i ponowne napełnienie zmienia warunki w obiegu.</p></article>
        <article class="rk-din-card"><span class="rk-din-icon">B</span><h3>Automatyczne uzupełnianie</h3><p>Stały dopływ wody może maskować nieszczelność i systematycznie wnosić nową porcję tlenu oraz minerałów.</p></article>
        <article class="rk-din-card"><span class="rk-din-icon">C</span><h3>Zbyt niskie ciśnienie</h3><p>Niewłaściwe ciśnienie statyczne lub problem z naczyniem może sprzyjać zasysaniu powietrza w niekorzystnych punktach.</p></article>
        <article class="rk-din-card"><span class="rk-din-icon">D</span><h3>Nieszczelności</h3><p>Nie każda pozostawia widoczny wyciek. Połączenia, odpowietrzniki i armatura wymagają kontroli.</p></article>
        <article class="rk-din-card"><span class="rk-din-icon">E</span><h3>Układ otwarty</h3><p>Kontakt medium z atmosferą zmienia warunki dopływu tlenu i wymaga osobnej oceny materiałowej.</p></article>
        <article class="rk-din-card"><span class="rk-din-icon">F</span><h3>Niekompatybilny element</h3><p>Jeden odcinek przewodu lub komponent bez wymaganej bariery może zmienić bilans całego obiegu.</p></article>
      </div>
      <p class="rk-din-copy">Wahania ciśnienia i częste dopuszczanie wody mogą wskazywać na problem omawiany w poradniku o <a href="https://projekt-ogrzewania.pl/naczynie-wzbiorcze/">naczyniu wzbiorczym</a>. Diagnoza powinna opierać się na pomiarach, nie na założeniu, że winna jest warstwa EVOH.</p>
    </section>

    <section class="rk-din-section rk-din-section-soft" id="rk-din-existing">
      <span class="rk-din-eyebrow">Najpierw stan faktyczny, potem decyzja</span>
      <h2 class="rk-din-section-title">Co zrobić ze starszą instalacją bez potwierdzonej bariery?</h2>
      <p class="rk-din-lead">Brak dokumentacji nie oznacza automatycznie konieczności wymiany podłogi. O dalszym postępowaniu powinny decydować konstrukcja układu, materiały, objawy, wyniki kontroli medium i stan urządzeń.</p>
      <div class="rk-din-grid-2">
        <article class="rk-din-card">
          <span class="rk-din-card-number">DIAGNOZA</span>
          <h3>Ustal, co rzeczywiście działa</h3>
          <ul class="rk-din-bullets">
            <li>odtwórz typ i przybliżony wiek przewodu,</li>
            <li>sprawdź materiały pompy, kotła, rozdzielacza i wymiennika,</li>
            <li>oceń ciśnienie, potrzebę uzupełniania i obecność osadów,</li>
            <li>porównaj przepływy oraz temperatury pętli,</li>
            <li>ustal historię płukania, awarii i wymian elementów.</li>
          </ul>
        </article>
        <article class="rk-din-card">
          <span class="rk-din-card-number">DZIAŁANIE</span>
          <h3>Dobierz ochronę do ryzyka</h3>
          <p>Możliwe działania obejmują usunięcie przyczyny dopływu tlenu, oczyszczenie układu, separację hydrauliczną, kontrolę jakości wody i zastosowanie rozwiązań ochronnych zgodnych z materiałami. Nie ma jednej recepty dla każdego starego obiegu.</p>
        </article>
      </div>
      <div class="rk-din-note rk-din-note-bad"><p><strong>Nie lecz objawu w ciemno:</strong> inhibitor, separator lub wymiana pompy nie zastąpią zlokalizowania nieszczelności, problemu z ciśnieniem albo stałego dopuszczania świeżej wody.</p></div>
    </section>

    <section class="rk-din-section" id="rk-din-water">
      <span class="rk-din-eyebrow">Ochrona wielowarstwowa</span>
      <h2 class="rk-din-section-title">Woda instalacyjna, inhibitor i separator — jaka jest ich rola?</h2>
      <p class="rk-din-lead">Bariera dyfuzyjna ogranicza dopływ tlenu przez ściankę, ale prawidłowa eksploatacja zależy także od jakości medium, czystości montażowej, ciśnienia, odgazowania i usuwania zanieczyszczeń.</p>
      <div class="rk-din-grid-3">
        <article class="rk-din-card"><span class="rk-din-card-number">WODA</span><h3>Skład dopasowany do materiałów</h3><p>Nie istnieje jedno uniwersalne pH dla każdej kombinacji metali. Wymagania trzeba odnieść do materiałów, źródła ciepła i dokumentacji.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">INHIBITOR</span><h3>Środek pomocniczy, nie zamiennik bariery</h3><p>Może wspierać ochronę w określonych warunkach, lecz wymaga doboru, właściwego stężenia, kompatybilności i kontroli.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">SEPARATOR</span><h3>Usuwa skutki z obiegu</h3><p>Pomaga wychwytywać powietrze lub zanieczyszczenia, ale nie zapobiega ich powstawaniu, jeśli przyczyna nadal działa.</p></article>
      </div>
      <p class="rk-din-copy">Kryteria wyboru medium opisuje poradnik <a href="https://projekt-ogrzewania.pl/czym-napelnic-instalacje-ogrzewania-podlogowego/">czym napełnić instalację podłogówki</a>. Jeżeli rozważasz wodę uzdatnioną i dodatki ochronne, przeczytaj także o <a href="https://projekt-ogrzewania.pl/woda-demineralizowana-z-inhibitorem-korozji-do-ogrzewania-podlogowego/">wodzie demineralizowanej z inhibitorem</a> oraz o doborze <a href="https://projekt-ogrzewania.pl/separator-zanieczyszczen-i-powietrza-w-ogrzewaniu-podlogowym-dobor-schemat-montazu-spadek-cisnienia-i-normy/">separatora zanieczyszczeń i powietrza</a>.</p>
    </section>

    <section class="rk-din-section rk-din-section-soft" id="rk-din-errors">
      <span class="rk-din-eyebrow">Skróty myślowe, które prowadzą do złych decyzji</span>
      <h2 class="rk-din-section-title">Najczęstsze błędy przy interpretacji DIN 4726</h2>
      <div class="rk-din-grid-3">
        <article class="rk-din-card"><span class="rk-din-card-number">BŁĄD 1</span><h3>„Każdy PE-X jest szczelny na tlen”</h3><p>Rodzina materiału nie potwierdza konstrukcji warstw ani wyniku badania gotowego wyrobu.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">BŁĄD 2</span><h3>„Napis EVOH wystarcza”</h3><p>Trzeba powiązać oznaczenie z kartą dokładnego typu i wymiaru oraz zakresem normy.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">BŁĄD 3</span><h3>„0,1 mnożymy przez powierzchnię rury”</h3><p>To błąd jednostek. Kryterium znormalizowane do objętości nie jest domowym wzorem na masę tlenu.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">BŁĄD 4</span><h3>„DIN jest zawsze obowiązkowy z ustawy”</h3><p>Normy są co do zasady dobrowolne, lecz wymaganie może stać się wiążące przez projekt, umowę lub specyfikację.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">BŁĄD 5</span><h3>„Bariera wyklucza korozję”</h3><p>Nie blokuje tlenu z każdej drogi i nie usuwa wpływu chemii wody, nieszczelności ani niezgodnych materiałów.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">BŁĄD 6</span><h3>„Spadek ciśnienia sprawdza barierę”</h3><p>Próba ciśnieniowa służy innemu celowi; nie jest badaniem przepuszczalności tlenu przez ściankę.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">BŁĄD 7</span><h3>„Aluminium zawsze potrzebuje EVOH”</h3><p>W rurze wielowarstwowej ciągła warstwa aluminium może sama pełnić funkcję bariery dyfuzyjnej.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">BŁĄD 8</span><h3>„Stalowy klips poprawia zgodność”</h3><p>Materiał klipsa nie potwierdza bariery tlenowej; mocowanie dobiera się do systemu i instrukcji.</p></article>
        <article class="rk-din-card"><span class="rk-din-card-number">BŁĄD 9</span><h3>„Jedno pH pasuje do wszystkiego”</h3><p>Wymagania dla medium zależą od materiałów i urządzeń, zwłaszcza gdy układ zawiera aluminium.</p></article>
      </div>
    </section>

    <section class="rk-din-section" id="rk-din-checklist">
      <span class="rk-din-eyebrow">Do zachowania z dokumentacją budowy</span>
      <h2 class="rk-din-section-title">Checklista przed zakupem i przed wylewką</h2>
      <p class="rk-din-lead">Dobra kontrola nie kończy się na etapie oferty. Ten sam produkt trzeba rozpoznać po dostawie, podczas układania i przed zakryciem.</p>
      <div class="rk-din-grid-3">
        <article class="rk-din-card">
          <span class="rk-din-card-number">PRZED ZAKUPEM</span>
          <h3>Dokumenty i parametry</h3>
          <ul class="rk-din-bullets"><li>dokładny typ i pełny wymiar,</li><li>konstrukcja oraz położenie bariery,</li><li>odniesienie do wydania DIN 4726,</li><li>właściwa norma produktowa,</li><li>klasa, ciśnienie i medium,</li><li>zgodne złączki oraz narzędzia.</li></ul>
        </article>
        <article class="rk-din-card">
          <span class="rk-din-card-number">PO DOSTAWIE</span>
          <h3>Tożsamość wyrobu</h3>
          <ul class="rk-din-bullets"><li>etykieta zgodna z zamówieniem,</li><li>czytelny nadruk i partia,</li><li>brak uszkodzeń kręgów,</li><li>warunki przechowywania,</li><li>zgodność metrażu z projektem,</li><li>zapis zdjęciowy dostawy.</li></ul>
        </article>
        <article class="rk-din-card">
          <span class="rk-din-card-number">PRZED ZAKRYCIEM</span>
          <h3>Odbiór wykonania</h3>
          <ul class="rk-din-bullets"><li>trasy i długości pętli,</li><li>promienie i ochrona przejść,</li><li>brak przypadkowych połączeń,</li><li>próba oraz protokół,</li><li>zdjęcia z miarą i opisem,</li><li>lista zaakceptowanych zmian.</li></ul>
        </article>
      </div>
      <p class="rk-din-copy">Po uruchomieniu instalacji dokumentacja ułatwia diagnostykę i planowanie przeglądów. Zakres czynności eksploatacyjnych omawia poradnik o tym, <a href="https://projekt-ogrzewania.pl/jak-czesto-trzeba-serwisowac-ogrzewanie-podlogowe/">jak często serwisować ogrzewanie podłogowe</a>.</p>
    </section>

    <section class="rk-din-section rk-din-section-soft" id="rk-din-summary">
      <span class="rk-din-eyebrow">Wniosek projektowy</span>
      <h2 class="rk-din-section-title">DIN 4726 ogranicza ryzyko, ale nie projektuje instalacji</h2>
      <p class="rk-din-lead">Właściwie udokumentowana bariera tlenowa jest ważną cechą rury do wodnego ogrzewania podłogowego. O jej wartości decyduje jednak poprawna identyfikacja wyrobu oraz połączenie tego wymagania z klasą pracy, systemem połączeń, hydrauliką i eksploatacją.</p>
      <div class="rk-din-grid-3">
        <article class="rk-din-card"><span class="rk-din-icon">1</span><h3>Potwierdź barierę</h3><p>Nie na podstawie koloru lub hasła, lecz dokumentacji dokładnego typu i wymiaru.</p></article>
        <article class="rk-din-card"><span class="rk-din-icon">2</span><h3>Sprawdź cały produkt</h3><p>Normę produktową, klasę, ciśnienie, światło, gięcie i zgodność połączeń.</p></article>
        <article class="rk-din-card"><span class="rk-din-icon">3</span><h3>Policz cały obieg</h3><p>Rozstaw, długości, przepływy, opory i warunki źródła ciepła.</p></article>
      </div>
      <div class="rk-din-cta">
        <div class="rk-din-cta-title">Dobra rura to nie tylko bariera tlenowa — to element policzonej instalacji</div>
        <p>Indywidualny projekt łączy straty ciepła pomieszczeń, rozstaw rur, długości pętli, przepływy, nastawy i opory. Dzięki temu zgodność materiałowa pracuje razem z prawidłową hydrauliką.</p>
        <a class="rk-din-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        <small class="rk-din-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
      <p class="rk-din-copy">Jeżeli chcesz zobaczyć szerszy zakres dokumentacji, przeczytaj także przewodnik o <a href="https://projekt-ogrzewania.pl/projekt-instalacji-grzewczej-domu-jednorodzinnego-kompletny-przewodnik-inzynieryjny-koszty-i-obliczenia-ozc/">projekcie instalacji grzewczej domu jednorodzinnego</a>.</p>
    </section>

    <section class="rk-din-section" id="rk-din-sources">
      <span class="rk-din-eyebrow">Wyłącznie oficjalne dokumenty i instytucje</span>
      <h2 class="rk-din-section-title">Źródła techniczne i zakres odpowiedzialności</h2>
      <p class="rk-din-lead">Poniższe źródła służą do sprawdzenia aktualnego wydania DIN 4726, statusu Polskich Norm oraz kart norm produktowych właściwych dla poszczególnych rodzin rur.</p>
      <div class="rk-din-source-grid">
        <article class="rk-din-source-card"><a href="https://www.dinmedia.de/en/standard/din-4726/380677149" target="_blank" rel="nofollow noopener noreferrer">DIN 4726:2024-12 — oficjalna karta DIN Media</a><p>Aktualne wydanie normy dotyczącej przewodów z tworzyw i systemów wielowarstwowych w ogrzewaniu płaszczyznowym oraz przyłączach grzejnikowych.</p></article>
        <article class="rk-din-source-card"><a href="https://eli.gov.pl/eli/DU/2002/1386/ogl" target="_blank" rel="nofollow noopener noreferrer">Ustawa o normalizacji — ELI</a><p>Oficjalny tekst polskiej ustawy; art. 5 ust. 3 wskazuje dobrowolność stosowania Polskich Norm.</p></article>
        <article class="rk-din-source-card"><a href="https://www.iso.org/standard/79776.html" target="_blank" rel="nofollow noopener noreferrer">ISO 15875-2:2025 — rury PE-X</a><p>Oficjalna karta części normy produktowej dotyczącej rur z polietylenu sieciowanego.</p></article>
        <article class="rk-din-source-card"><a href="https://www.iso.org/standard/46396.html" target="_blank" rel="nofollow noopener noreferrer">ISO 22391-2:2009 — rury PE-RT</a><p>Oficjalna karta wymagań dotyczących rur z polietylenu o podwyższonej odporności temperaturowej.</p></article>
        <article class="rk-din-source-card"><a href="https://www.iso.org/standard/43515.html" target="_blank" rel="nofollow noopener noreferrer">ISO 21003-2:2008 — rury wielowarstwowe</a><p>Oficjalna karta części normy obejmującej wielowarstwowe systemy rurowe wewnątrz budynków.</p></article>
        <article class="rk-din-source-card"><a href="https://www.dincertco.de/din-certco/en/main-navigation/products-and-services/certification-of-products/space-heating-and-cooling/rohrleitungen-aus-kunststoff/" target="_blank" rel="nofollow noopener noreferrer">DIN CERTCO — certyfikacja przewodów z tworzyw</a><p>Oficjalna informacja jednostki certyfikującej o zakresie oceny systemów rurowych dla ogrzewania i chłodzenia.</p></article>
      </div>
      <div class="rk-din-responsibility"><p><strong>Zakres poradnika:</strong> treść pomaga interpretować rolę DIN 4726, rozpoznać konstrukcję barierową i przygotować pytania do dokumentacji. Nie jest kopią normy, certyfikatem produktu, projektem instalacji, instrukcją producenta, oceną laboratoryjną ani ekspertyzą konkretnej awarii. O zastosowaniu wyrobu decydują jego aktualne dokumenty, projekt i warunki rzeczywistego układu.</p></div>
    </section>

    <section class="rk-din-section rk-din-section-soft" id="rk-din-faq">
      <span class="rk-din-eyebrow">Pytania inwestorów i wykonawców</span>
      <h2 class="rk-din-section-title">FAQ — DIN 4726 i bariera tlenowa rur</h2>
      <div class="rk-din-faq">
        <details><summary>Co to jest DIN 4726?</summary><div class="rk-din-faq-answer"><p>To niemiecka norma techniczna dotycząca systemów rurowych z tworzyw i rur wielowarstwowych stosowanych w wodnym ogrzewaniu płaszczyznowym oraz przyłączach grzejnikowych. Jednym z kluczowych zagadnień jest ograniczenie przenikania tlenu przez ściankę przewodu.</p></div></details>
        <details><summary>Jakie jest aktualne wydanie DIN 4726?</summary><div class="rk-din-faq-answer"><p>Aktualne wydanie ma oznaczenie DIN 4726:2024-12 i zostało opublikowane w grudniu 2024 r. Zastąpiło wydanie DIN 4726:2017-10.</p></div></details>
        <details><summary>Co oznacza, że rura jest odporna na dyfuzję tlenu?</summary><div class="rk-din-faq-answer"><p>Oznacza to, że jej konstrukcja ogranicza przenikanie tlenu przez ściankę do poziomu ocenianego według zdefiniowanej metody i warunków. Nie oznacza absolutnie zerowego dopływu tlenu ani szczelności całej instalacji.</p></div></details>
        <details><summary>Czy z wartości 0,1 g/(m³·d) można samodzielnie obliczyć dopływ tlenu do domu?</summary><div class="rk-din-faq-answer"><p>Nie przez proste mnożenie długości lub powierzchni rury. Wartość jest znormalizowana do objętości wody i procedury badawczej. Do oceny produktu służy wynik badania albo dokument potwierdzający zgodność konkretnego wyrobu.</p></div></details>
        <details><summary>Czy każda rura PE-X ma barierę tlenową?</summary><div class="rk-din-faq-answer"><p>Nie. PE-X identyfikuje materiał bazowy, a nie pełną konstrukcję warstw ani wynik badania dyfuzji. Trzeba sprawdzić dokumentację dokładnego typu i wymiaru.</p></div></details>
        <details><summary>Czy każda rura PE-RT spełnia DIN 4726?</summary><div class="rk-din-faq-answer"><p>Nie. Sama nazwa PE-RT nie potwierdza bariery. Zgodność musi dotyczyć gotowej rury z określoną konstrukcją, wymiarem i dokumentem odniesienia.</p></div></details>
        <details><summary>Czy napis EVOH na rurze wystarcza do potwierdzenia zgodności?</summary><div class="rk-din-faq-answer"><p>Nie. Napis informuje o zastosowaniu materiału barierowego, lecz trzeba jeszcze sprawdzić dokument produktu, zakres badania, wydanie normy oraz to, czy obejmuje wybrany typ i wymiar.</p></div></details>
        <details><summary>Czy aluminium może pełnić funkcję bariery tlenowej?</summary><div class="rk-din-faq-answer"><p>Tak. W rurach wielowarstwowych ciągła warstwa aluminium może ograniczać przenikanie tlenu. Nie należy automatycznie wymagać dodatkowej warstwy EVOH, lecz trzeba sprawdzić kompletną konstrukcję i dokumentację.</p></div></details>
        <details><summary>Czym różni się zewnętrzna warstwa EVOH od warstwy chronionej?</summary><div class="rk-din-faq-answer"><p>Warstwa zewnętrzna znajduje się bliżej powierzchni rury, a w konstrukcji chronionej jest osłonięta dodatkową warstwą. Samo położenie nie tworzy rankingu jakości; liczą się wynik badania, adhezja warstw i przestrzeganie instrukcji montażu.</p></div></details>
        <details><summary>Czy rura zgodna z DIN 4726 całkowicie eliminuje korozję?</summary><div class="rk-din-faq-answer"><p>Nie. Ogranicza jedną drogę dopływu tlenu. Korozja zależy również od materiałów, jakości wody, ciśnienia, nieszczelności, uzupełniania medium, temperatury i warunków eksploatacji.</p></div></details>
        <details><summary>Czy tlen może dostać się do układu mimo bariery?</summary><div class="rk-din-faq-answer"><p>Tak. Może zostać wniesiony przy napełnianiu, z wodą uzupełniającą, przez nieszczelność, niewłaściwe ciśnienie albo kontakt medium z atmosferą w układzie otwartym.</p></div></details>
        <details><summary>Co zrobić ze starą instalacją bez potwierdzonej bariery?</summary><div class="rk-din-faq-answer"><p>Najpierw ustalić typ rury, materiały instalacji, stan medium, ciśnienie, potrzebę uzupełniania wody, przepływy i objawy. Dalsze działania dobiera się do wyniku diagnozy; brak dokumentacji nie oznacza automatycznej wymiany podłogi.</p></div></details>
        <details><summary>Czy inhibitor korozji może zastąpić barierę tlenową?</summary><div class="rk-din-faq-answer"><p>Nie należy traktować inhibitora jako prostego zamiennika bariery. Jest środkiem wspomagającym wymagającym doboru, odpowiedniego stężenia, kompatybilności materiałowej i okresowej kontroli.</p></div></details>
        <details><summary>Czy DIN 4726 określa dopuszczalną temperaturę i ciśnienie rury?</summary><div class="rk-din-faq-answer"><p>Nie zastępuje pełnej normy produktowej i klasyfikacji zastosowania. Temperaturę, czas pracy i ciśnienie należy sprawdzić w dokumentacji konkretnego systemu rurowego.</p></div></details>
        <details><summary>Czy stosowanie DIN 4726 jest w Polsce obowiązkowe?</summary><div class="rk-din-faq-answer"><p>Normy techniczne nie stają się automatycznie bezwzględnie obowiązujące tylko dlatego, że istnieją. Wymaganie może jednak wynikać z projektu, umowy, specyfikacji, warunków gwarancji lub przyjętych zasad wiedzy technicznej.</p></div></details>
        <details><summary>Co sprawdzić bezpośrednio przed zakupem rury?</summary><div class="rk-din-faq-answer"><p>Dokładny typ i wymiar, konstrukcję warstw, odniesienie do aktualnego wydania DIN 4726, właściwą normę produktową, klasę zastosowania, ciśnienie, zgodne złączki, promień gięcia, instrukcję i możliwość identyfikacji partii.</p></div></details>
      </div>
    </section>

    <section class="rk-din-author" id="rk-din-author">
      <span class="rk-din-eyebrow">E-E-A-T i odpowiedzialność za treść</span>
      <h2 class="rk-din-author-title">Autor i weryfikacja merytoryczna</h2>
      <div class="rk-din-author-layout">
        <aside class="rk-din-author-side">
          <div class="rk-din-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych" width="400" height="400" loading="lazy" decoding="async"></div>
          <div class="rk-din-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
          <p class="rk-din-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
          <div class="rk-din-author-social" aria-label="Profile autora">
            <a href="https://www.linkedin.com/in/robert-kucharski-b8b906199/" target="_blank" rel="nofollow noopener noreferrer me" aria-label="LinkedIn Roberta Kucharskiego">in</a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Facebook Projekt Ogrzewania">f</a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Profil Projekt HVAC w serwisie X">X</a>
          </div>
        </aside>
        <div class="rk-din-author-main">
          <div class="rk-din-author-quote">„Moim zdaniem sam napis EVOH nie powinien kończyć weryfikacji rury. Trzeba sprawdzić dokładny typ, wymiar, dokument odniesienia i konstrukcję bariery, a potem ocenić produkt jako element całej instalacji.”</div>
          <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz materiały edukacyjne dla inwestorów i wykonawców. W analizie dokumentacji oddziela zakres normy, deklarację właściwości konkretnego wyrobu i warunki rzeczywistego układu.</p>
          <p>Ten poradnik został zweryfikowany pod kątem aktualnego wydania DIN 4726:2024-12, właściwego znaczenia kryterium dyfuzji, rozróżnienia EVOH i aluminium oraz powiązania z oficjalnymi kartami norm produktowych.</p>
          <p>Autor publikuje również w portalach <a href="https://remont.biz.pl/" target="_blank" rel="nofollow noopener noreferrer">Remont.biz.pl</a> i <a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a>. <a href="https://projekt-ogrzewania.pl/author/admin3399/">Zobacz pozostałe artykuły Roberta Kucharskiego w serwisie Projekt-Ogrzewania.pl</a>.</p>
          <div class="rk-din-author-facts">
            <div class="rk-din-author-fact"><strong>Praktyka projektowa</strong>ogrzewanie podłogowe, OZC i hydraulika obiegów</div>
            <div class="rk-din-author-fact"><strong>Metoda</strong>projekt, dokumentacja wyrobu i warunki rzeczywiste</div>
            <div class="rk-din-author-fact"><strong>Aktualizacja</strong>stan techniczny sprawdzony 17 września 2026 r.</div>
          </div>
        </div>
      </div>
    </section>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "sameAs": ["https://www.facebook.com/projektogrzewaniapl", "https://x.com/Projekt_HVAC"]
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "knowsAbout": ["ogrzewanie podłogowe", "DIN 4726", "bariera tlenowa rur", "hydraulika instalacji grzewczych", "obliczenia strat ciepła"],
      "worksFor": [
        { "@id": "https://projekt-ogrzewania.pl/#organization" },
        { "@id": "https://remont.biz.pl/#organization" },
        { "@id": "https://sobir.pl/#organization" }
      ],
      "sameAs": ["https://www.linkedin.com/in/robert-kucharski-b8b906199/", "https://www.facebook.com/projektogrzewaniapl", "https://x.com/Projekt_HVAC"]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2025/02/Norma-DIN-4726-w-ogrzewaniu-podlogowym.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2025/02/Norma-DIN-4726-w-ogrzewaniu-podlogowym.webp",
      "width": 1134,
      "height": 1134,
      "caption": "Norma DIN 4726 w ogrzewaniu podłogowym — bariera tlenowa rur"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/" },
        { "@type": "ListItem", "position": 2, "name": "Poradniki", "item": "https://projekt-ogrzewania.pl/blog/" },
        { "@type": "ListItem", "position": 3, "name": "DIN 4726 w ogrzewaniu podłogowym", "item": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/" }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#webpage",
      "url": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/",
      "name": "DIN 4726 w ogrzewaniu podłogowym – bariera tlenowa rur bez mitów",
      "description": "Sprawdź, co określa DIN 4726:2024-12, jak działa bariera EVOH i aluminium, jak czytać dokumentację rur oraz czego norma nie gwarantuje.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#breadcrumb" },
      "primaryImageOfPage": { "@id": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#primaryimage" },
      "datePublished": "2025-02-22T20:01:13+00:00",
      "dateModified": "2026-09-17T12:00:00+00:00",
      "inLanguage": "pl-PL",
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#article" }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#article",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#webpage" },
      "headline": "DIN 4726 w ogrzewaniu podłogowym – bariera tlenowa rur bez mitów",
      "description": "Techniczny poradnik o DIN 4726:2024-12, dyfuzji tlenu, barierach EVOH i aluminiowych oraz weryfikacji dokumentacji rur.",
      "image": { "@id": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#primaryimage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "datePublished": "2025-02-22T20:01:13+00:00",
      "dateModified": "2026-09-17T12:00:00+00:00",
      "inLanguage": "pl-PL",
      "about": ["DIN 4726", "bariera tlenowa", "EVOH", "rury wielowarstwowe", "dyfuzja tlenu", "ogrzewanie podłogowe"],
      "keywords": "DIN 4726, norma DIN 4726 w ogrzewaniu podłogowym, bariera tlenowa, EVOH, dyfuzja tlenu, rury do podłogówki",
      "isAccessibleForFree": true,
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#learning-resource" },
        { "@id": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#barrier-list" },
        { "@id": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#faq-schema" }
      ]
    },
    {
      "@type": "LearningResource",
      "@id": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#learning-resource",
      "name": "Droga tlenu przez rurę — moduł edukacyjny",
      "url": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#rk-din-pathway",
      "description": "Interaktywny moduł pokazujący drogę tlenu od otoczenia rury przez barierę do metalowych elementów instalacji i produktów korozji.",
      "learningResourceType": "interaktywna grafika edukacyjna",
      "educationalUse": "samokształcenie techniczne",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL"
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#howto",
      "name": "Jak zweryfikować rurę pod kątem DIN 4726",
      "description": "Procedura identyfikacji rury, sprawdzenia dokumentacji, odniesienia do normy i zgodności dostawy.",
      "totalTime": "PT15M",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Zidentyfikuj wyrób", "text": "Ustal materiał, konstrukcję warstw, pełny wymiar, nazwę i kod produktu." },
        { "@type": "HowToStep", "position": 2, "name": "Znajdź dokument techniczny", "text": "Pozyskaj kartę lub certyfikat odnoszący się do dokładnego typu i wymiaru." },
        { "@type": "HowToStep", "position": 3, "name": "Sprawdź wydanie normy", "text": "Ustal, czy dokument odnosi się do DIN 4726:2024-12, czy starszej wersji." },
        { "@type": "HowToStep", "position": 4, "name": "Potwierdź zakres", "text": "Sprawdź, czy wynik obejmuje wybrany wymiar i konstrukcję bariery." },
        { "@type": "HowToStep", "position": 5, "name": "Zweryfikuj normę produktową", "text": "Dopasuj ISO 15875, ISO 22391 lub ISO 21003 do rodziny przewodu." },
        { "@type": "HowToStep", "position": 6, "name": "Porównaj z projektem", "text": "Sprawdź klasę, ciśnienie, światło, przepływy i system połączeń." },
        { "@type": "HowToStep", "position": 7, "name": "Porównaj dostawę", "text": "Zestaw nadruk, etykietę i partię z zaakceptowaną specyfikacją." },
        { "@type": "HowToStep", "position": 8, "name": "Zachowaj dokumentację", "text": "Zapisz zdjęcia oznaczeń, przebieg pętli i protokół próby przed zakryciem." }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#barrier-list",
      "name": "Konstrukcje barierowe rur do ogrzewania podłogowego",
      "numberOfItems": 4,
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Rura bez zadeklarowanej bariery" },
        { "@type": "ListItem", "position": 2, "name": "Zewnętrzna warstwa EVOH" },
        { "@type": "ListItem", "position": 3, "name": "Warstwa EVOH chroniona dodatkową warstwą" },
        { "@type": "ListItem", "position": 4, "name": "Rura wielowarstwowa z aluminium" }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/#faq-schema",
      "mainEntity": [
        { "@type": "Question", "name": "Co to jest DIN 4726?", "acceptedAnswer": { "@type": "Answer", "text": "To niemiecka norma techniczna dotycząca systemów rurowych z tworzyw i rur wielowarstwowych stosowanych w wodnym ogrzewaniu płaszczyznowym oraz przyłączach grzejnikowych. Jednym z kluczowych zagadnień jest ograniczenie przenikania tlenu przez ściankę przewodu." } },
        { "@type": "Question", "name": "Jakie jest aktualne wydanie DIN 4726?", "acceptedAnswer": { "@type": "Answer", "text": "Aktualne wydanie ma oznaczenie DIN 4726:2024-12 i zostało opublikowane w grudniu 2024 r. Zastąpiło wydanie DIN 4726:2017-10." } },
        { "@type": "Question", "name": "Co oznacza, że rura jest odporna na dyfuzję tlenu?", "acceptedAnswer": { "@type": "Answer", "text": "Oznacza to, że jej konstrukcja ogranicza przenikanie tlenu przez ściankę do poziomu ocenianego według zdefiniowanej metody i warunków. Nie oznacza absolutnie zerowego dopływu tlenu ani szczelności całej instalacji." } },
        { "@type": "Question", "name": "Czy z wartości 0,1 g/(m³·d) można samodzielnie obliczyć dopływ tlenu do domu?", "acceptedAnswer": { "@type": "Answer", "text": "Nie przez proste mnożenie długości lub powierzchni rury. Wartość jest znormalizowana do objętości wody i procedury badawczej. Do oceny produktu służy wynik badania albo dokument potwierdzający zgodność konkretnego wyrobu." } },
        { "@type": "Question", "name": "Czy każda rura PE-X ma barierę tlenową?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. PE-X identyfikuje materiał bazowy, a nie pełną konstrukcję warstw ani wynik badania dyfuzji. Trzeba sprawdzić dokumentację dokładnego typu i wymiaru." } },
        { "@type": "Question", "name": "Czy każda rura PE-RT spełnia DIN 4726?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Sama nazwa PE-RT nie potwierdza bariery. Zgodność musi dotyczyć gotowej rury z określoną konstrukcją, wymiarem i dokumentem odniesienia." } },
        { "@type": "Question", "name": "Czy napis EVOH na rurze wystarcza do potwierdzenia zgodności?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Napis informuje o zastosowaniu materiału barierowego, lecz trzeba jeszcze sprawdzić dokument produktu, zakres badania, wydanie normy oraz to, czy obejmuje wybrany typ i wymiar." } },
        { "@type": "Question", "name": "Czy aluminium może pełnić funkcję bariery tlenowej?", "acceptedAnswer": { "@type": "Answer", "text": "Tak. W rurach wielowarstwowych ciągła warstwa aluminium może ograniczać przenikanie tlenu. Nie należy automatycznie wymagać dodatkowej warstwy EVOH, lecz trzeba sprawdzić kompletną konstrukcję i dokumentację." } },
        { "@type": "Question", "name": "Czym różni się zewnętrzna warstwa EVOH od warstwy chronionej?", "acceptedAnswer": { "@type": "Answer", "text": "Warstwa zewnętrzna znajduje się bliżej powierzchni rury, a w konstrukcji chronionej jest osłonięta dodatkową warstwą. Samo położenie nie tworzy rankingu jakości; liczą się wynik badania, adhezja warstw i przestrzeganie instrukcji montażu." } },
        { "@type": "Question", "name": "Czy rura zgodna z DIN 4726 całkowicie eliminuje korozję?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Ogranicza jedną drogę dopływu tlenu. Korozja zależy również od materiałów, jakości wody, ciśnienia, nieszczelności, uzupełniania medium, temperatury i warunków eksploatacji." } },
        { "@type": "Question", "name": "Czy tlen może dostać się do układu mimo bariery?", "acceptedAnswer": { "@type": "Answer", "text": "Tak. Może zostać wniesiony przy napełnianiu, z wodą uzupełniającą, przez nieszczelność, niewłaściwe ciśnienie albo kontakt medium z atmosferą w układzie otwartym." } },
        { "@type": "Question", "name": "Co zrobić ze starą instalacją bez potwierdzonej bariery?", "acceptedAnswer": { "@type": "Answer", "text": "Najpierw ustalić typ rury, materiały instalacji, stan medium, ciśnienie, potrzebę uzupełniania wody, przepływy i objawy. Dalsze działania dobiera się do wyniku diagnozy; brak dokumentacji nie oznacza automatycznej wymiany podłogi." } },
        { "@type": "Question", "name": "Czy inhibitor korozji może zastąpić barierę tlenową?", "acceptedAnswer": { "@type": "Answer", "text": "Nie należy traktować inhibitora jako prostego zamiennika bariery. Jest środkiem wspomagającym wymagającym doboru, odpowiedniego stężenia, kompatybilności materiałowej i okresowej kontroli." } },
        { "@type": "Question", "name": "Czy DIN 4726 określa dopuszczalną temperaturę i ciśnienie rury?", "acceptedAnswer": { "@type": "Answer", "text": "Nie zastępuje pełnej normy produktowej i klasyfikacji zastosowania. Temperaturę, czas pracy i ciśnienie należy sprawdzić w dokumentacji konkretnego systemu rurowego." } },
        { "@type": "Question", "name": "Czy stosowanie DIN 4726 jest w Polsce obowiązkowe?", "acceptedAnswer": { "@type": "Answer", "text": "Normy techniczne nie stają się automatycznie bezwzględnie obowiązujące tylko dlatego, że istnieją. Wymaganie może jednak wynikać z projektu, umowy, specyfikacji, warunków gwarancji lub przyjętych zasad wiedzy technicznej." } },
        { "@type": "Question", "name": "Co sprawdzić bezpośrednio przed zakupem rury?", "acceptedAnswer": { "@type": "Answer", "text": "Dokładny typ i wymiar, konstrukcję warstw, odniesienie do aktualnego wydania DIN 4726, właściwą normę produktową, klasę zastosowania, ciśnienie, zgodne złączki, promień gięcia, instrukcję i możliwość identyfikacji partii." } }
      ]
    },
    {
      "@type": "Service",
      "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#service",
      "name": "Indywidualny projekt instalacji ogrzewania podłogowego",
      "url": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/",
      "provider": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "areaServed": { "@type": "Country", "name": "Polska" },
      "serviceType": "Projektowanie ogrzewania podłogowego",
      "description": "Projekt obejmujący rozstaw rur, podział na pętle, długości, przepływy, nastawy i weryfikację hydrauliki instalacji."
    }
  ]
}
</script>

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

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

  var stages = {
    air: {
      index: "Etap 1 z 6",
      title: "Powietrze otaczające rurę",
      happens: "Po zewnętrznej stronie przewodu znajduje się tlen, który tworzy różnicę stężeń względem wody w instalacji.",
      covers: "Warunki oceny uwzględniają napęd dyfuzji przez badaną konstrukcję przewodu.",
      check: "Nie wyciągaj wniosków z miejsca ułożenia rury; liczy się przebadana konstrukcja i temperatura badania."
    },
    wall: {
      index: "Etap 2 z 6",
      title: "Ścianka polimerowa",
      happens: "Tlen może rozpuścić się w materiale, przemieszczać przez jego strukturę i przejść na drugą stronę ścianki.",
      covers: "Ocena dotyczy gotowego przewodu, dlatego sama nazwa PE-X albo PE-RT nie potwierdza wymaganego ograniczenia.",
      check: "Sprawdź materiał, pełny wymiar, układ warstw i dokument przypisany do konkretnego typu rury."
    },
    barrier: {
      index: "Etap 3 z 6",
      title: "Warstwa bariery",
      happens: "EVOH lub ciągła warstwa aluminium tworzy drogę o znacznie mniejszej przepuszczalności dla tlenu.",
      covers: "W tym miejscu znajduje się cecha, dzięki której konstrukcja może spełnić kryterium przenikania tlenu.",
      check: "Potwierdź położenie bariery, zakres badania, wydanie normy oraz instrukcję transportu i montażu."
    },
    water: {
      index: "Etap 4 z 6",
      title: "Woda instalacyjna",
      happens: "Tlen, który dotarł do wnętrza obiegu, może być transportowany z medium do pozostałych elementów instalacji.",
      covers: "DIN 4726 ogranicza dopływ przez ściankę, ale nie usuwa gazów wniesionych przy napełnianiu lub uzupełnianiu.",
      check: "Oceń jakość medium, częstotliwość dopuszczania wody, odgazowanie, ciśnienie i szczelność układu."
    },
    metal: {
      index: "Etap 5 z 6",
      title: "Metalowe elementy instalacji",
      happens: "Tlen może uczestniczyć w reakcjach korozyjnych pompy, rozdzielacza, kotła, wymiennika lub armatury.",
      covers: "Norma dla rury nie jest gwarancją odporności korozyjnej wszystkich materiałów zastosowanych w instalacji.",
      check: "Zidentyfikuj metale w układzie, wymagania źródła ciepła, jakość wody i kompatybilność dodatków."
    },
    products: {
      index: "Etap 6 z 6",
      title: "Produkty korozji i osady",
      happens: "Tlenki, magnetyt i inne zanieczyszczenia mogą krążyć w obiegu, osadzać się i utrudniać pracę urządzeń.",
      covers: "Zgodność rury nie usuwa osadów już obecnych ani nie zastępuje diagnostyki, płukania i separacji zanieczyszczeń.",
      check: "Kontroluj przepływy, stan pompy i filtrów, jakość medium oraz rzeczywistą przyczynę powstawania osadów."
    }
  };

  var tabs = guide.querySelectorAll("[data-rk-stage]");
  var panel = document.getElementById("rk-din-stage-panel");
  var label = document.getElementById("rk-din-stage-label");
  var title = document.getElementById("rk-din-stage-title");
  var happens = document.getElementById("rk-din-stage-happens");
  var covers = document.getElementById("rk-din-stage-covers");
  var check = document.getElementById("rk-din-stage-check");

  function showStage(key, shouldFocus) {
    var data = stages[key];
    if (!data) {
      return;
    }

    label.textContent = data.index;
    title.textContent = data.title;
    happens.textContent = data.happens;
    covers.textContent = data.covers;
    check.textContent = data.check;

    tabs.forEach(function (tab) {
      var isCurrent = tab.getAttribute("data-rk-stage") === key;
      tab.setAttribute("aria-selected", isCurrent ? "true" : "false");
      tab.setAttribute("tabindex", isCurrent ? "0" : "-1");
      if (isCurrent) {
        panel.setAttribute("aria-labelledby", tab.id);
        if (shouldFocus) {
          tab.focus();
        }
      }
    });
  }

  tabs.forEach(function (tab, index) {
    tab.addEventListener("click", function () {
      showStage(tab.getAttribute("data-rk-stage"), false);
    });

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

      event.preventDefault();
      showStage(tabs[nextIndex].getAttribute("data-rk-stage"), true);
    });
  });

  showStage("air", false);
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/norma-din-4726-w-ogrzewaniu-podlogowym/">DIN 4726 w ogrzewaniu podłogowym – bariera tlenowa rur bez mitów.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Układ ślimakowy ogrzewania podłogowego – schemat i montaż krok po kroku.</title>
		<link>https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/</link>
					<comments>https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Fri, 21 Feb 2025 10:53:02 +0000</pubDate>
				<category><![CDATA[Domowe systemy grzewcze]]></category>
		<category><![CDATA[Instalacja ogrzewania podłogowego]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Montaż instalacji grzewczych]]></category>
		<category><![CDATA[Niskotemperaturowe systemy grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Systemy grzewcze]]></category>
		<category><![CDATA[Układ ślimakowy]]></category>
		<category><![CDATA[Układanie rur grzewczych]]></category>
		<category><![CDATA[energia w domu]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[montaż ogrzewania]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[poradnik DIY]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<category><![CDATA[remont domu]]></category>
		<category><![CDATA[równomierne ciepło]]></category>
		<category><![CDATA[systemy grzewcze]]></category>
		<category><![CDATA[układ ślimakowy]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2270</guid>

					<description><![CDATA[<p>Planujesz montaż ogrzewania podłogowego i zastanawiasz się, jaki układ rur wybrać? Ogrzewanie podłogowe w układzie ślimakowym to sprawdzony sposób na równomierne rozprowadzenie ciepła w całym pomieszczeniu. W artykule krok po kroku wyjaśniamy, jak zaplanować i zamontować ten system, aby uniknąć błędów i cieszyć się komfortem cieplnym przez lata. Dowiesz się, jak obliczyć moc grzewczą, dobrać rozstaw rur i przeprowadzić test ciśnieniowy. Sprawdź, dlaczego układ spiralny jest tak popularny!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/">Układ ślimakowy ogrzewania podłogowego – schemat i montaż krok po kroku.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-pipe-guide {
    --rk-navy: #0b2536;
    --rk-navy-2: #12394d;
    --rk-navy-3: #1b465b;
    --rk-cyan: #29c4d7;
    --rk-cyan-dark: #078fb3;
    --rk-cyan-soft: #def7fa;
    --rk-orange: #ff6846;
    --rk-orange-dark: #e44f31;
    --rk-yellow: #f2b526;
    --rk-green: #2fcda1;
    --rk-green-dark: #168267;
    --rk-red: #d7504a;
    --rk-purple: #6963ce;
    --rk-ink: #10283a;
    --rk-copy: #3c5668;
    --rk-muted: #6b8191;
    --rk-line: #d3e2e8;
    --rk-bg: #f3f8fa;
    --rk-white: #ffffff;
    color: var(--rk-ink);
    font-family: Arial, Helvetica, sans-serif;
    line-height: 1.62;
    margin: 0 auto;
    max-width: 1360px;
    overflow-wrap: anywhere;
    width: 100%;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-pipe-guide .rk-pipe-shortcuts-label {
    color: var(--rk-ink);
    flex: 1 0 100%;
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.08em;
    margin-bottom: 2px;
    text-transform: uppercase;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-pipe-guide .rk-snail-visual-layout {
    display: grid;
    gap: 22px;
    grid-template-columns: minmax(0, 1.25fr) minmax(300px, 0.75fr);
  }

  #rk-pipe-guide .rk-snail-board {
    background: #f8fcfd;
    border: 1px solid #4d7183;
    border-radius: 18px;
    min-height: 420px;
    overflow: hidden;
    padding: 15px;
  }

  #rk-pipe-guide .rk-snail-board svg {
    display: block;
    height: auto;
    width: 100%;
  }

  #rk-pipe-guide .rk-snail-room {
    fill: #eaf3f6;
    stroke: #8ca9b6;
    stroke-width: 2;
  }

  #rk-pipe-guide .rk-snail-door {
    fill: #ffffff;
    stroke: #8ca9b6;
    stroke-width: 2;
  }

  #rk-pipe-guide .rk-snail-window {
    stroke: #29c4d7;
    stroke-linecap: round;
    stroke-width: 8;
  }

  #rk-pipe-guide .rk-snail-route {
    fill: none;
    opacity: 0.11;
    stroke-linecap: round;
    stroke-linejoin: round;
    stroke-width: 8;
    transition: opacity 180ms ease, stroke-width 180ms ease;
  }

  #rk-pipe-guide .rk-snail-route.is-supply {
    stroke: var(--rk-orange);
  }

  #rk-pipe-guide .rk-snail-route.is-return {
    stroke: #168cb7;
  }

  #rk-pipe-guide .rk-snail-route.is-done {
    opacity: 0.72;
  }

  #rk-pipe-guide .rk-snail-route.is-active {
    opacity: 1;
    stroke-width: 11;
  }

  #rk-pipe-guide .rk-snail-board-label {
    fill: var(--rk-ink);
    font-family: Arial, Helvetica, sans-serif;
    font-size: 13px;
    font-weight: 800;
  }

  #rk-pipe-guide .rk-snail-board-small {
    fill: #547080;
    font-family: Arial, Helvetica, sans-serif;
    font-size: 11px;
    font-weight: 700;
  }

  #rk-pipe-guide .rk-snail-stage-panel {
    background: #17394b;
    border: 1px solid #376177;
    border-radius: 18px;
    display: flex;
    flex-direction: column;
    padding: 24px;
  }

  #rk-pipe-guide .rk-snail-stage-kicker {
    color: #70e5ef;
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.1em;
    text-transform: uppercase;
  }

  #rk-pipe-guide .rk-snail-stage-panel h3 {
    color: #ffffff;
    font-size: 1.55rem;
    line-height: 1.25;
    margin: 9px 0 10px;
  }

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

  #rk-pipe-guide .rk-snail-stage-facts {
    display: grid;
    gap: 10px;
    margin-top: 21px;
  }

  #rk-pipe-guide .rk-snail-stage-fact {
    background: rgba(255, 255, 255, 0.055);
    border: 1px solid rgba(255, 255, 255, 0.13);
    border-radius: 12px;
    padding: 14px;
  }

  #rk-pipe-guide .rk-snail-stage-fact strong {
    color: #70e5ef;
    display: block;
    font-size: 0.7rem;
    letter-spacing: 0.07em;
    margin-bottom: 4px;
    text-transform: uppercase;
  }

  #rk-pipe-guide .rk-snail-stage-fact span {
    color: #ffffff;
    font-size: 0.9rem;
  }

  #rk-pipe-guide .rk-snail-step-button {
    background: #173e51;
    border: 1px solid #356178;
    border-radius: 15px;
    color: #ffffff;
    cursor: pointer;
    min-height: 112px;
    padding: 17px;
    text-align: left;
  }

  #rk-pipe-guide .rk-snail-step-button[aria-pressed="true"] {
    background: var(--rk-cyan);
    border-color: var(--rk-cyan);
    color: #072838;
  }

  #rk-pipe-guide .rk-snail-step-number {
    align-items: center;
    background: rgba(255, 255, 255, 0.13);
    border-radius: 8px;
    display: inline-flex;
    font-weight: 900;
    height: 32px;
    justify-content: center;
    margin-bottom: 10px;
    width: 32px;
  }

  #rk-pipe-guide .rk-snail-step-button[aria-pressed="true"] .rk-snail-step-number {
    background: rgba(7, 40, 56, 0.13);
  }

  #rk-pipe-guide .rk-snail-step-button strong {
    display: block;
    font-size: 0.94rem;
    line-height: 1.3;
  }

  #rk-pipe-guide .rk-snail-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 20px;
    margin-top: 18px;
  }

  #rk-pipe-guide .rk-snail-legend span {
    align-items: center;
    color: #c8dce3;
    display: inline-flex;
    font-size: 0.82rem;
    font-weight: 800;
    gap: 8px;
  }

  #rk-pipe-guide .rk-snail-legend i {
    border-radius: 999px;
    display: inline-block;
    height: 7px;
    width: 32px;
  }

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

  #rk-pipe-guide .rk-snail-legend .is-cool {
    background: #168cb7;
  }

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

  #rk-pipe-guide .rk-snail-calculator-head {
    border-bottom: 1px solid #315a70;
    margin-bottom: 24px;
    padding-bottom: 19px;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-pipe-guide .rk-snail-result-card strong {
    color: var(--rk-cyan-dark);
    display: block;
    font-size: 0.7rem;
    letter-spacing: 0.06em;
    margin-bottom: 6px;
    text-transform: uppercase;
  }

  #rk-pipe-guide .rk-snail-result-card span {
    color: var(--rk-ink);
    display: block;
    font-size: 1.35rem;
    font-weight: 900;
    line-height: 1.2;
  }

  #rk-pipe-guide .rk-snail-result-card small {
    color: var(--rk-muted);
    display: block;
    font-size: 0.75rem;
    margin-top: 5px;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

    #rk-pipe-guide .rk-snail-board {
      min-height: 0;
    }
  }

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

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

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

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

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

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

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

    #rk-pipe-guide .rk-pipe-grid-2,
    #rk-pipe-guide .rk-pipe-grid-3,
    #rk-pipe-guide .rk-pipe-grid-4,
    #rk-pipe-guide .rk-pipe-source-grid,
    #rk-pipe-guide .rk-pipe-author-facts,
    #rk-pipe-guide .rk-snail-step-grid,
    #rk-pipe-guide .rk-snail-results,
    #rk-pipe-guide .rk-snail-check-grid,
    #rk-pipe-guide .rk-snail-fields {
      grid-template-columns: minmax(0, 1fr);
    }

    #rk-pipe-guide .rk-snail-visual,
    #rk-pipe-guide .rk-snail-calculator,
    #rk-pipe-guide .rk-pipe-cta {
      border-radius: 17px;
      padding: 20px;
    }

    #rk-pipe-guide .rk-snail-stage-panel,
    #rk-pipe-guide .rk-snail-calculator-result {
      padding: 18px;
    }

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

    #rk-pipe-guide .rk-snail-calculate,
    #rk-pipe-guide .rk-snail-reset,
    #rk-pipe-guide .rk-pipe-cta-button {
      text-align: center;
      width: 100%;
    }

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

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

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

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

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

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

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

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

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

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

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

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

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

    #rk-pipe-guide .rk-pipe-hero-title {
      font-size: 2.25rem;
    }

    #rk-pipe-guide .rk-pipe-section-title {
      font-size: 1.9rem;
    }
  }

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

<article id="rk-pipe-guide" aria-labelledby="rk-snail-visual-title">
  <div class="rk-pipe-shell">
    <header class="rk-pipe-hero">
      <span class="rk-pipe-kicker">Od obciążenia pomieszczenia do poprawnie zamkniętej pętli</span>
      <div class="rk-pipe-hero-title" id="rk-snail-visual-title">Układ ślimakowy podłogówki: <span>geometria bez zgadywania</span></div>
      <p class="rk-pipe-hero-lead">Ślimak prowadzi cieplejszy przewód zasilający obok chłodniejszego przewodu powrotnego, dzięki czemu ułatwia uzyskanie równomiernego rozkładu temperatury podłogi. Sam kształt nie dobiera jednak mocy, rozstawu, przepływu ani długości pętli — te parametry muszą wynikać z obliczeń.</p>
      <div class="rk-pipe-hero-tags" aria-label="Zakres poradnika">
        <span>schemat krok po kroku</span>
        <span>zasada podwójnego rozstawu</span>
        <span>kalkulator pętli</span>
        <span>dobiegi i dylatacje</span>
        <span>błędy wykonawcze</span>
      </div>
      <div class="rk-pipe-meta">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: <strong>około 24 minuty</strong></span>
        <span>Aktualizacja techniczna: <strong>15 września 2026 r.</strong></span>
      </div>
    </header>

    <nav class="rk-pipe-shortcuts" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-pipe-shortcuts-label">Na skróty</span>
      <a href="#rk-snail-answer">Szybka odpowiedź</a>
      <a href="#rk-snail-operation">Jak działa</a>
      <a href="#rk-snail-inputs">Dane wejściowe</a>
      <a href="#rk-snail-visual">Schemat interaktywny</a>
      <a href="#rk-snail-calculator-section">Kalkulator pętli</a>
      <a href="#rk-snail-spacing">Rozstaw i nawrót</a>
      <a href="#rk-snail-edge">Strefy brzegowe</a>
      <a href="#rk-snail-obstacles">Przeszkody</a>
      <a href="#rk-snail-hydraulics">Hydraulika</a>
      <a href="#rk-snail-manifold">Rozdzielacz</a>
      <a href="#rk-snail-dilatation">Dylatacje</a>
      <a href="#rk-snail-test">Próba i odbiór</a>
      <a href="#rk-snail-comparison">Ślimak czy meander</a>
      <a href="#rk-snail-errors">Błędy</a>
      <a href="#rk-snail-checklist">Checklista</a>
      <a href="#rk-snail-final">Podsumowanie</a>
      <a href="#rk-snail-sources">Źródła</a>
      <a href="#rk-snail-faq">FAQ</a>
      <a href="#rk-snail-author">Autor</a>
    </nav>

    <section class="rk-pipe-section" id="rk-snail-answer">
      <span class="rk-pipe-eyebrow">Odpowiedź w 60 sekund</span>
      <h2 class="rk-pipe-section-title">Na czym polega układ ślimakowy ogrzewania podłogowego?</h2>
      <p class="rk-pipe-lead"><strong>Układ ślimakowy, nazywany też spiralnym, jest sposobem prowadzenia jednej ciągłej rury od rozdzielacza, przez pole grzewcze i z powrotem do rozdzielacza.</strong> Pierwsza część obwodu biegnie do wnętrza pola z pozostawieniem miejsca, które podczas powrotu wypełnia druga część tej samej rury.</p>
      <div class="rk-pipe-answer">
        <strong>Jeżeli docelowy rozstaw wynosi 10 cm, podczas prowadzenia zasilania pozostawia się zwykle wolne międzyrzędzia tak, aby powrót uzupełnił trasę do rozstawu 10 cm.</strong>
        <p>Cieplejsze i chłodniejsze odcinki sąsiadują ze sobą, co sprzyja wyrównaniu temperatury powierzchni. Nie oznacza to jednak identycznej temperatury w każdym punkcie ani automatycznie mniejszych oporów całej instalacji.</p>
      </div>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-icon">1</span><h3>Jedna nieprzerwana rura</h3><p>Pętla rozpoczyna się i kończy na rozdzielaczu. W polu grzewczym nie planuje się przypadkowych, ukrytych połączeń.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-icon">2</span><h3>Zasilanie obok powrotu</h3><p>Sąsiadujące odcinki mają różne temperatury, dlatego ich naprzemienne położenie pomaga ograniczyć pasowy rozkład ciepła.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-icon">3</span><h3>Geometria po obliczeniach</h3><p>Najpierw ustala się obciążenie pomieszczenia, powierzchnię czynną, moc podłogi i rozstaw, a dopiero potem rysuje trasę.</p></article>
      </div>
      <p class="rk-pipe-copy">Jeżeli chcesz najpierw uporządkować zasadę działania całego systemu, zobacz poradnik <a href="https://projekt-ogrzewania.pl/jak-dziala-ogrzewanie-podlogowe/">jak działa ogrzewanie podłogowe</a>. Ten artykuł skupia się wyłącznie na wykonaniu pojedynczego układu ślimakowego.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-snail-operation">
      <span class="rk-pipe-eyebrow">Co wynika z geometrii, a co z projektu</span>
      <h2 class="rk-pipe-section-title">Co ślimak poprawia, a czego nie gwarantuje?</h2>
      <p class="rk-pipe-lead">Ślimak jest sposobem rozmieszczenia rury. Nie jest osobnym źródłem ciepła, parametrem hydraulicznym ani receptą na stałą temperaturę zasilania.</p>
      <div class="rk-pipe-table-wrap">
        <table>
          <thead><tr><th>Zagadnienie</th><th>Co może dać układ ślimakowy</th><th>Czego nie można obiecać bez obliczeń</th></tr></thead>
          <tbody>
            <tr><td data-label="Zagadnienie"><strong>Temperatura powierzchni</strong></td><td data-label="Co może dać ślimak">Naprzemienne sąsiedztwo zasilania i powrotu sprzyja bardziej równomiernemu profilowi.</td><td data-label="Czego nie można obiecać">Jednej temperatury w całym pomieszczeniu ani konkretnej różnicy wyrażonej w kelwinach.</td></tr>
            <tr><td data-label="Zagadnienie"><strong>Moc cieplna</strong></td><td data-label="Co może dać ślimak">Pozwala rozmieścić powierzchnię grzejną zgodnie z ustalonym rozstawem.</td><td data-label="Czego nie można obiecać">Pokrycia strat ciepła bez sprawdzenia konstrukcji podłogi, temperatur i powierzchni czynnej.</td></tr>
            <tr><td data-label="Zagadnienie"><strong>Hydraulika</strong></td><td data-label="Co może dać ślimak">Umożliwia wykonanie łagodnych zmian kierunku i czytelny podział pola.</td><td data-label="Czego nie można obiecać">Stałego procentowego spadku oporów względem meandra. Decydują też długość, światło rury i przepływ.</td></tr>
            <tr><td data-label="Zagadnienie"><strong>Pompa ciepła</strong></td><td data-label="Co może dać ślimak">Może pomóc wykorzystać dużą powierzchnię przy niskiej temperaturze, jeśli system ma wymaganą moc.</td><td data-label="Czego nie można obiecać">Określonego wzrostu COP lub oszczędności wynikających wyłącznie z kształtu pętli.</td></tr>
          </tbody>
        </table>
      </div>
      <div class="rk-pipe-note"><p><strong>Najważniejsze rozróżnienie:</strong> układ rury wpływa na przestrzenne oddawanie ciepła, natomiast moc, przepływ i strata ciśnienia są wynikami obliczeniowymi.</p></div>
    </section>

    <section class="rk-pipe-section" id="rk-snail-inputs">
      <span class="rk-pipe-eyebrow">Zanim rozwiniesz pierwszy metr rury</span>
      <h2 class="rk-pipe-section-title">Jakie dane są potrzebne przed rozrysowaniem ślimaka?</h2>
      <p class="rk-pipe-lead">Rysowanie trasy rozpoczyna się dopiero wtedy, gdy wiadomo, ile ciepła ma oddać podłoga oraz jaka część pomieszczenia może być aktywnie ogrzewana.</p>
      <div class="rk-pipe-grid-4">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">01</span><h3>Obciążenie pomieszczenia</h3><p>Wartość w watach wynikająca z obliczeń dla warunków projektowych, a nie ze średniego wskaźnika całego domu.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">02</span><h3>Powierzchnia czynna</h3><p>Pole po odjęciu trwałej zabudowy, wyłączeń i miejsc, w których rury nie powinny być prowadzone.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">03</span><h3>Warstwy podłogi</h3><p>Rodzaj jastrychu, przykrycie rury, okładzina i jej rzeczywisty opór cieplny wraz z podkładem.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">04</span><h3>Parametry wody</h3><p>Temperatura zasilania i powrotu przyjęta dla całego systemu oraz wymagana moc jednostkowa.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">05</span><h3>Rozstaw</h3><p>Dobierany z charakterystyki systemu do potrzebnej mocy i ograniczeń temperatury powierzchni.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">06</span><h3>Położenie rozdzielacza</h3><p>Wpływa na długość dobiegów, liczbę przejść przez progi oraz rzeczywistą długość każdej pętli.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">07</span><h3>Pola dylatacyjne</h3><p>Trasa musi uwzględniać układ jastrychu, przejścia i wymagane odcinki ochronne.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">08</span><h3>Hydraulika</h3><p>Planowane długości, przepływy i opory muszą mieścić się w możliwościach rozdzielacza oraz pompy.</p></article>
      </div>
      <p class="rk-pipe-copy">Początkiem jest <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne pomieszczeń</a>. Następnie wyznacza się miejsca, <a href="https://projekt-ogrzewania.pl/gdzie-nie-ukladac-ogrzewania-podlogowego/">w których nie układać ogrzewania podłogowego</a>, i dopiero wtedy planuje <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">rozmieszczenie pętli grzewczych</a>.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-dark" id="rk-snail-visual">
      <span class="rk-pipe-eyebrow">Moduł edukacyjny</span>
      <h2 class="rk-pipe-section-title">Interaktywny schemat układu ślimakowego krok po kroku</h2>
      <p class="rk-pipe-lead">Klikaj kolejne etapy. Schemat pokazuje zasadę podwójnego rozstawu na prostokątnym polu. W prawdziwym pomieszczeniu przebieg trzeba dostosować do rzutu, powierzchni czynnej, dylatacji i dopuszczalnego promienia gięcia rury.</p>
      <div class="rk-snail-visual" id="rk-snail-visual-tool">
        <div class="rk-snail-visual-head">
          <h3>Jak zasilanie zmienia się w powrót?</h3>
          <p>Kolor pomarańczowy oznacza pierwszą część obwodu, a niebieski powrót prowadzony pomiędzy pozostawionymi odcinkami.</p>
        </div>
        <div class="rk-snail-visual-layout">
          <div>
            <div class="rk-snail-board">
              <svg viewBox="0 0 640 420" role="img" aria-labelledby="rk-snail-svg-title rk-snail-svg-desc">
                <title id="rk-snail-svg-title">Schemat wykonywania pętli ogrzewania podłogowego w układzie ślimakowym</title>
                <desc id="rk-snail-svg-desc">Sześć etapów prowadzenia rury od rozdzielacza, do środka pola grzewczego i z powrotem.</desc>
                <rect class="rk-snail-room" x="48" y="38" width="552" height="342" rx="10"></rect>
                <line class="rk-snail-window" x1="190" y1="38" x2="450" y2="38"></line>
                <rect class="rk-snail-door" x="48" y="328" width="22" height="52"></rect>
                <rect x="4" y="330" width="38" height="72" rx="8" fill="#d9e7ec" stroke="#7595a4" stroke-width="2"></rect>
                <text class="rk-snail-board-small" x="3" y="322">rozdzielacz</text>
                <text class="rk-snail-board-label" x="15" y="355">Z</text>
                <text class="rk-snail-board-label" x="15" y="390">P</text>
                <text class="rk-snail-board-small" x="273" y="27">przeszklenie</text>
                <path class="rk-snail-route is-supply" data-rk-stage="1" d="M 22 354 L 60 354 L 60 52"></path>
                <path class="rk-snail-route is-supply" data-rk-stage="2" d="M 60 52 L 586 52 L 586 366 L 92 366 L 92 82 L 556 82 L 556 336"></path>
                <path class="rk-snail-route is-supply" data-rk-stage="3" d="M 556 336 L 122 336 L 122 112 L 526 112 L 526 306 L 152 306 L 152 142 L 496 142 L 496 276 L 182 276 L 182 172 L 466 172 L 466 246 L 212 246 L 212 202 L 436 202"></path>
                <path class="rk-snail-route is-supply" data-rk-stage="4" d="M 436 202 Q 451 202 451 217 Q 451 232 436 232 L 227 232"></path>
                <path class="rk-snail-route is-return" data-rk-stage="5" d="M 227 232 L 227 261 L 481 261 L 481 157 L 167 157 L 167 291 L 511 291 L 511 127 L 137 127 L 137 321 L 541 321 L 541 97 L 107 97 L 107 351 L 571 351 L 571 67 L 77 67 L 77 380"></path>
                <path class="rk-snail-route is-return" data-rk-stage="6" d="M 77 380 L 22 380"></path>
                <circle cx="22" cy="354" r="5" fill="#ff6846"></circle>
                <circle cx="22" cy="380" r="5" fill="#168cb7"></circle>
              </svg>
            </div>
            <div class="rk-snail-legend" aria-hidden="true">
              <span><i class="is-hot"></i>zasilanie — pierwsza część pętli</span>
              <span><i class="is-cool"></i>powrót — druga część pętli</span>
            </div>
          </div>
          <div class="rk-snail-stage-panel" aria-live="polite">
            <span class="rk-snail-stage-kicker" id="rk-snail-stage-kicker">Etap 1 z 6</span>
            <h3 id="rk-snail-stage-title">Wyjdź z rozdzielacza</h3>
            <p id="rk-snail-stage-copy">Poprowadź jeden ciągły odcinek do początku powierzchni czynnej. Dobieg jest częścią całkowitej długości oraz straty ciśnienia pętli.</p>
            <div class="rk-snail-stage-facts">
              <div class="rk-snail-stage-fact"><strong>Cel etapu</strong><span id="rk-snail-stage-purpose">Dojść do pola możliwie czytelną, chronioną trasą.</span></div>
              <div class="rk-snail-stage-fact"><strong>Sprawdź</strong><span id="rk-snail-stage-check">Przejścia przez progi, dylatacje oraz kolizje z innymi instalacjami.</span></div>
              <div class="rk-snail-stage-fact"><strong>Typowy błąd</strong><span id="rk-snail-stage-error">Pomijanie dobiegu podczas obliczania długości obwodu.</span></div>
            </div>
          </div>
        </div>
        <div class="rk-snail-step-grid" aria-label="Etapy wykonania układu ślimakowego">
          <button class="rk-snail-step-button" type="button" aria-pressed="true" data-rk-snail-step="1"><span class="rk-snail-step-number">1</span><strong>Wyjście z rozdzielacza</strong></button>
          <button class="rk-snail-step-button" type="button" aria-pressed="false" data-rk-snail-step="2"><span class="rk-snail-step-number">2</span><strong>Zewnętrzna część zasilania</strong></button>
          <button class="rk-snail-step-button" type="button" aria-pressed="false" data-rk-snail-step="3"><span class="rk-snail-step-number">3</span><strong>Spirala do środka</strong></button>
          <button class="rk-snail-step-button" type="button" aria-pressed="false" data-rk-snail-step="4"><span class="rk-snail-step-number">4</span><strong>Łagodny nawrót</strong></button>
          <button class="rk-snail-step-button" type="button" aria-pressed="false" data-rk-snail-step="5"><span class="rk-snail-step-number">5</span><strong>Powrót między rurami</strong></button>
          <button class="rk-snail-step-button" type="button" aria-pressed="false" data-rk-snail-step="6"><span class="rk-snail-step-number">6</span><strong>Zamknięcie pętli</strong></button>
        </div>
      </div>
      <div class="rk-pipe-note"><p><strong>To schemat zasady, nie rysunek wykonawczy.</strong> Nie pokazuje rzeczywistej liczby zwojów, skali, stref wyłączonych, przepływu ani oporów konkretnej pętli.</p></div>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-snail-calculator-section">
      <span class="rk-pipe-eyebrow">Kalkulator geometrii — bez udawania OZC</span>
      <h2 class="rk-pipe-section-title">Ile rury i ile pętli może wymagać układ ślimakowy?</h2>
      <p class="rk-pipe-lead">Kalkulator pokazuje wpływ powierzchni czynnej, rozstawu, długości dobiegu i planowanej liczby pętli. Nie wyznacza wymaganej mocy, przepływu ani spadku ciśnienia.</p>
      <div class="rk-snail-calculator" id="rk-snail-calculator">
        <div class="rk-snail-calculator-head">
          <h3>Sprawdź wariant podziału powierzchni</h3>
          <p>Zmieniaj liczbę pętli i obserwuj, jak do całkowitego metrażu dochodzą osobne podejścia każdego obwodu.</p>
        </div>
        <div class="rk-snail-fields">
          <label class="rk-snail-field"><span>Powierzchnia czynna [m²]</span><input id="rk-snail-area" type="number" min="1" max="500" step="0.1" value="20" inputmode="decimal"></label>
          <label class="rk-snail-field"><span>Docelowy rozstaw rur</span><select id="rk-snail-spacing-input"><option value="0.05">5 cm</option><option value="0.075">7,5 cm</option><option value="0.10">10 cm</option><option value="0.15" selected="">15 cm</option><option value="0.20">20 cm</option></select></label>
          <label class="rk-snail-field"><span>Dobieg w jedną stronę [m]</span><input id="rk-snail-approach" type="number" min="0" max="50" step="0.1" value="5" inputmode="decimal"></label>
          <label class="rk-snail-field"><span>Planowana liczba pętli</span><select id="rk-snail-loop-count"><option value="1">1 pętla</option><option value="2" selected="">2 pętle</option><option value="3">3 pętle</option><option value="4">4 pętle</option><option value="5">5 pętli</option><option value="6">6 pętli</option><option value="7">7 pętli</option><option value="8">8 pętli</option><option value="9">9 pętli</option><option value="10">10 pętli</option></select></label>
        </div>
        <div class="rk-snail-actions">
          <button class="rk-snail-calculate" id="rk-snail-calculate" type="button">Oblicz wariant</button>
          <button class="rk-snail-reset" id="rk-snail-reset" type="button">Przywróć przykład</button>
        </div>
        <div class="rk-snail-calculator-result" id="rk-snail-calculator-result" aria-live="polite">
          <p class="rk-snail-result-status" id="rk-snail-result-status">Wynik geometryczny — hydraulika pozostaje do sprawdzenia</p>
          <p class="rk-snail-result-intro" id="rk-snail-result-intro">Dwie pętle dzielą pole po 10,0 m². Średnia długość uwzględnia dwa osobne dobiegi.</p>
          <div class="rk-snail-results">
            <div class="rk-snail-result-card"><strong>Rura w polu</strong><span id="rk-snail-field-length">133,3 m</span><small>powierzchnia ÷ rozstaw</small></div>
            <div class="rk-snail-result-card"><strong>Łączne dobiegi</strong><span id="rk-snail-approach-length">20,0 m</span><small>tam i z powrotem dla każdej pętli</small></div>
            <div class="rk-snail-result-card"><strong>Łączna długość</strong><span id="rk-snail-total-length">153,3 m</span><small>wartość orientacyjna</small></div>
            <div class="rk-snail-result-card"><strong>Średnio na pętlę</strong><span id="rk-snail-average-length">76,7 m</span><small>rzeczywiste obwody mogą się różnić</small></div>
          </div>
          <p class="rk-snail-disclaimer">Wzór upraszcza geometrię. Nie uwzględnia rzeczywistych łuków, kształtu pola, lokalnych zagęszczeń, omijania przeszkód ani zapasu zakupowego. Wynik nie potwierdza średnicy rury, przepływu, oporu ani nastaw rozdzielacza.</p>
        </div>
      </div>
      <div class="rk-pipe-formula">L<sub>pola</sub> ≈ A ÷ s &nbsp; | &nbsp; L<sub>dobiegów</sub> = 2 × d × n &nbsp; | &nbsp; L<sub>średnia pętli</sub> ≈ (L<sub>pola</sub> + L<sub>dobiegów</sub>) ÷ n</div>
      <p class="rk-pipe-copy">Do samego szacowania materiału możesz wykorzystać również <a href="https://projekt-ogrzewania.pl/kalkulator-do-obliczania-ilosci-metrow-rury-potrzebnych-do-ogrzewania-podlogowego/">kalkulator ilości rury do ogrzewania podłogowego</a>. Wyjaśnienie zależności między rozstawem a zużyciem materiału znajdziesz w poradniku <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%c2%b2-ogrzewania-podlogowego/">ile rury przypada na m² podłogówki</a>.</p>
      <aside class="rk-pipe-cta" aria-label="Indywidualny projekt ogrzewania podłogowego">
        <div class="rk-pipe-cta-title">Masz już geometrię i orientacyjną długość. Teraz trzeba sprawdzić, czy każda pętla dostarczy wymaganą moc</div>
        <p>Schemat i kalkulator nie wyznaczają obciążenia cieplnego pomieszczenia, temperatury zasilania, przepływów, oporów ani nastaw rozdzielacza. W projekcie łączymy te dane z rzeczywistym rzutem i dopiero wtedy rozrysowujemy obwody.</p>
        <a class="rk-pipe-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Sprawdź zakres indywidualnego projektu podłogówki</a>
        <small class="rk-pipe-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </aside>
    </section>

    <section class="rk-pipe-section" id="rk-snail-spacing">
      <span class="rk-pipe-eyebrow">Najważniejsza zasada wykonawcza</span>
      <h2 class="rk-pipe-section-title">Podwójny rozstaw i nawrót w środku ślimaka</h2>
      <p class="rk-pipe-lead">Podczas pierwszego przejścia trzeba pozostawić miejsce na odcinek powrotny. To dlatego rozstaw widoczny przed wykonaniem powrotu jest większy od docelowego rozstawu gotowej pętli.</p>
      <div class="rk-pipe-table-wrap">
        <table>
          <thead><tr><th>Docelowy rozstaw</th><th>Odstęp podczas pierwszego przejścia</th><th>Po ułożeniu powrotu</th><th>Ważne zastrzeżenie</th></tr></thead>
          <tbody>
            <tr><td data-label="Docelowy rozstaw"><strong>5 cm</strong></td><td data-label="Pierwsze przejście">około 10 cm</td><td data-label="Gotowa pętla">odcinki co 5 cm</td><td data-label="Zastrzeżenie">Bardzo gęsty układ wymaga sprawdzenia wykonalności, promieni gięcia i sensu cieplnego.</td></tr>
            <tr><td data-label="Docelowy rozstaw"><strong>10 cm</strong></td><td data-label="Pierwsze przejście">około 20 cm</td><td data-label="Gotowa pętla">odcinki co 10 cm</td><td data-label="Zastrzeżenie">Nie jest to automatyczny standard dla każdego pomieszczenia.</td></tr>
            <tr><td data-label="Docelowy rozstaw"><strong>15 cm</strong></td><td data-label="Pierwsze przejście">około 30 cm</td><td data-label="Gotowa pętla">odcinki co 15 cm</td><td data-label="Zastrzeżenie">Musi pokryć obciążenie przy przyjętej temperaturze i okładzinie.</td></tr>
            <tr><td data-label="Docelowy rozstaw"><strong>20 cm</strong></td><td data-label="Pierwsze przejście">około 40 cm</td><td data-label="Gotowa pętla">odcinki co 20 cm</td><td data-label="Zastrzeżenie">Może zwiększać nierównomierność temperatury; wymaga weryfikacji systemowej.</td></tr>
          </tbody>
        </table>
      </div>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">A</span><h3>Zostaw miejsce na powrót</h3><p>Odstęp musi być kontrolowany od początku. Błędu popełnionego na zewnętrznych zwojach nie da się wygodnie naprawić w środku.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">B</span><h3>Zaplanuj centrum</h3><p>Nie zwężaj spirali do punktu. Pozostaw pole na nawrót zgodny z minimalnym promieniem gięcia konkretnej rury.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">C</span><h3>Nie prostuj załamania na siłę</h3><p>Postępowanie z uszkodzonym odcinkiem powinno wynikać z instrukcji systemowej. Widoczne przewężenie wymaga oceny przed zakryciem.</p></article>
      </div>
      <p class="rk-pipe-copy">Rozstaw 10, 15 albo 20 cm nie wynika z samej nazwy źródła ciepła. Szczegółową procedurę opisuje poradnik <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw rur 10 czy 15 cm</a>. Trzeba również uwzględnić <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">opór cieplny warstw nad rurą</a>.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-snail-edge">
      <span class="rk-pipe-eyebrow">Więcej strat nie zawsze oznacza więcej rury</span>
      <h2 class="rk-pipe-section-title">Układ ślimakowy przy dużych oknach i w strefie brzegowej</h2>
      <p class="rk-pipe-lead">Przy przeszkleniu można skierować cieplejszą część pętli w stronę większego obciążenia albo zastosować lokalnie mniejszy rozstaw. Taka decyzja powinna wynikać z obliczeń, a nie z automatycznej zasady „zawsze 5 cm przy oknie”.</p>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-icon">1</span><h3>Najpierw policz obciążenie</h3><p>Nowoczesne przeszklenie nie musi wymagać osobnej strefy. Znaczenie mają parametry okna, wymiar, orientacja i temperatura projektowa.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-icon">2</span><h3>Sprawdź moc podłogi</h3><p>Zagęszczenie ma sens tylko wtedy, gdy zwiększenie mocy jest potrzebne i nie przekracza ograniczeń temperatury powierzchni.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-icon">3</span><h3>Dopiero zmień trasę</h3><p>Można prowadzić zasilanie wzdłuż fasady, stopniować rozstaw albo wydzielić obwód — po sprawdzeniu hydrauliki.</p></article>
      </div>
      <div class="rk-pipe-note"><p><strong>Nie myl odczucia chłodu przy szybie z automatycznym błędem podłogówki.</strong> Na komfort wpływają również temperatura powierzchni przeszklenia i asymetria promieniowania.</p></div>
      <p class="rk-pipe-copy">Techniczne warianty pokazują poradniki o <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">strefie brzegowej ogrzewania podłogowego</a> oraz <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-do-domu-z-duzymi-przeszkleniami-jak-poradzic-sobie-ze-strefa-przy-oknach/">projektowaniu podłogówki przy dużych przeszkleniach</a>.</p>
    </section>

    <section class="rk-pipe-section" id="rk-snail-obstacles">
      <span class="rk-pipe-eyebrow">Prawdziwy rzut rzadko jest prostokątem</span>
      <h2 class="rk-pipe-section-title">Wyspa kuchenna, zabudowa i nieregularne pomieszczenie</h2>
      <p class="rk-pipe-lead">Ślimak nie musi tworzyć idealnego kwadratu. Może zmieniać proporcje, omijać wyłączenia i obsługiwać kilka połączonych pól, pod warunkiem zachowania rozstawu, promieni gięcia oraz czytelnej drogi powrotnej.</p>
      <div class="rk-pipe-grid-2">
        <article class="rk-pipe-card">
          <span class="rk-pipe-card-number">PLANUJ</span>
          <h3>Obrysuj rzeczywistą powierzchnię czynną</h3>
          <ul class="rk-pipe-bullets">
            <li>zaznacz stałą zabudowę i urządzenia wymagające wyłączenia,</li>
            <li>wyznacz dojście od rozdzielacza,</li>
            <li>sprawdź możliwość powrotu pomiędzy zwojami,</li>
            <li>pozostaw miejsce na łagodne nawroty,</li>
            <li>nie twórz wąskich kieszeni z przypadkowym zagęszczeniem.</li>
          </ul>
        </article>
        <article class="rk-pipe-card">
          <span class="rk-pipe-card-number">DZIEL</span>
          <h3>Duże pole podziel na obliczone obwody</h3>
          <p>Jeden ogromny ślimak nie jest celem. Jeżeli długość lub wymagana moc prowadzą do zbyt dużego przepływu i oporu, powierzchnię dzieli się na dwa albo więcej pól o logicznych granicach.</p>
        </article>
      </div>
      <p class="rk-pipe-copy">W pomieszczeniach z trwałą zabudową pomocny jest poradnik <a href="https://projekt-ogrzewania.pl/wodne-ogrzewanie-podlogowe-a-meble-jak-polaczyc-komfort-i-aranzacje/">ogrzewanie podłogowe a meble</a>. Przykład podziału większej strefy znajdziesz w odpowiedzi na pytanie, <a href="https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/">ile pętli podłogówki potrzeba w salonie</a>.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-snail-hydraulics">
      <span class="rk-pipe-eyebrow">Kształt to nie charakterystyka przepływu</span>
      <h2 class="rk-pipe-section-title">Długość pętli, przepływ i strata ciśnienia</h2>
      <p class="rk-pipe-lead">Dwie pętle o podobnym kształcie mogą mieć różne opory, jeżeli różnią się światłem rury, długością, przepływem, temperaturą albo medium. Z kolei meander i ślimak wykonane z tej samej rury przy podobnej długości nie mają z definicji stałej procentowej różnicy oporu.</p>
      <div class="rk-pipe-grid-4">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">Q</span><h3>Moc pętli</h3><p>Wraz z projektową różnicą temperatur określa potrzebny przepływ wody.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">V̇</span><h3>Przepływ</h3><p>Wpływa na prędkość w rurze oraz jednostkową stratę ciśnienia.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">L</span><h3>Długość</h3><p>Obejmuje pole grzewcze, oba dobiegi i wszystkie odcinki obwodu.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">dᵢ</span><h3>Światło rury</h3><p>Rzeczywista średnica wewnętrzna ma bezpośrednie znaczenie dla oporu.</p></article>
      </div>
      <p class="rk-pipe-copy">Pułap około 100 m dla rury 16 × 2 mm jest często stosowaną granicą roboczą, ale nie zastępuje obliczeń. Pętla krótsza może mieć za duży opór przy wysokim przepływie, a ocena dłuższej wymaga danych konkretnego układu. Zobacz osobne opracowania o <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalnej długości pętli ogrzewania podłogowego</a> oraz skutkach, jakie może powodować <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">za długa pętla podłogówki</a>.</p>
      <div class="rk-pipe-note rk-pipe-note-bad"><p><strong>Nie zwiększaj temperatury zasilania po to, aby ukryć problem przepływu.</strong> Niedogrzana pętla wymaga diagnostyki przyczyny: nastawy, zapowietrzenia, oporu, pompy, zabrudzenia albo błędu projektowego.</p></div>
    </section>

    <section class="rk-pipe-section" id="rk-snail-manifold">
      <span class="rk-pipe-eyebrow">Każda pętla pracuje w układzie równoległym</span>
      <h2 class="rk-pipe-section-title">Rozdzielacz, dobiegi i równoważenie pętli ślimakowych</h2>
      <p class="rk-pipe-lead">Pętle nie muszą mieć identycznej długości ani różnić się o mniej niż arbitralne 10%. Muszą natomiast otrzymać obliczone przepływy przy stratach ciśnienia możliwych do zrównoważenia na rozdzielaczu.</p>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">01</span><h3>Lokalizacja rozdzielacza</h3><p>Powinna ograniczać niepotrzebne dobiegi, liczbę skrzyżowań i koncentrację rur w korytarzach.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">02</span><h3>Opis obwodów</h3><p>Każda para zasilanie–powrót powinna być jednoznacznie opisana nazwą pomieszczenia lub numerem projektu.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">03</span><h3>Nastawy projektowe</h3><p>Rotametr służy do ustawienia wymaganego przepływu, a nie do wyrównania wszystkich wskazań do jednej liczby.</p></article>
      </div>
      <p class="rk-pipe-copy">Budowę i funkcje urządzenia opisuje poradnik <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielacz do ogrzewania podłogowego</a>. Przy uruchomieniu potrzebna jest również znajomość zasady działania <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametru i wskaźnika przepływu</a>.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-snail-dilatation">
      <span class="rk-pipe-eyebrow">Trasa musi współpracować z konstrukcją podłogi</span>
      <h2 class="rk-pipe-section-title">Dylatacje, mocowanie rur i wykonanie jastrychu</h2>
      <p class="rk-pipe-lead">Układ pętli trzeba skoordynować z polami jastrychu. Odcinki przechodzące przez zaplanowane szczeliny wymagają ochrony zgodnej z projektem podłogi i dokumentacją systemu.</p>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-icon">D</span><h3>Dylatacje</h3><p>Nie prowadź aktywnej części ślimaka bez kontroli przez szczeliny. Przejścia dobiegów wykonuj w przewidzianych osłonach i lokalizacjach.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-icon">M</span><h3>Mocowanie</h3><p>Rozstaw mocowań musi utrzymać trasę i promienie podczas chodzenia po instalacji oraz wykonywania jastrychu.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-icon">J</span><h3>Jastrych</h3><p>Rodzaj, grubość, pola, wygrzewanie i warunki wykonania wynikają z projektu oraz dokumentacji zastosowanej mieszanki.</p></article>
      </div>
      <ul class="rk-pipe-bullets">
        <li>taśmę brzegową prowadź ciągle przy elementach pionowych,</li>
        <li>nie przypisuj folii pod rurą funkcji „odbicia ciepła” bez szczeliny powietrznej,</li>
        <li>rur nie mocuj w sposób powodujący ich uszkodzenie lub trwałe spłaszczenie,</li>
        <li>przed zakryciem sprawdź rozstaw, promienie, przejścia i zgodność z rysunkiem,</li>
        <li>utrzymuj warunki podczas wykonywania jastrychu zgodnie z procedurą systemową.</li>
      </ul>
      <p class="rk-pipe-copy">Więcej informacji zawierają poradniki o <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">izolacji brzegowej i dylatacjach</a> oraz o prawidłowej <a href="https://projekt-ogrzewania.pl/wylewka-na-ogrzewanie-podlogowe-kompletny-przewodnik/">wylewce na ogrzewanie podłogowe</a>.</p>
    </section>

    <section class="rk-pipe-section" id="rk-snail-test">
      <span class="rk-pipe-eyebrow">Zanim trasa zniknie pod posadzką</span>
      <h2 class="rk-pipe-section-title">Próba szczelności, zdjęcia i odbiór wykonania</h2>
      <p class="rk-pipe-lead">Jedna liczba dotycząca ciśnienia i czasu nie opisuje każdej procedury. Próbę wykonuje się według projektu, wymagań systemu i właściwej procedury, z uwzględnieniem zmian temperatury wpływających na odczyt.</p>
      <div class="rk-pipe-grid-4">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">1</span><h3>Napełnij i odpowietrz</h3><p>Pracuj kolejno z obwodami, aby powietrze nie pozostało w przypadkowo zamkniętej pętli.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">2</span><h3>Wykonaj próbę</h3><p>Zapisz medium, ciśnienie, czas, temperaturę i wynik zgodnie z przyjętą procedurą.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">3</span><h3>Sfotografuj trasę</h3><p>Zdjęcia wykonaj z punktami odniesienia, aby później odtworzyć położenie rur.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">4</span><h3>Podpisz protokół</h3><p>Powiąż numery pętli, długości, pomieszczenia i wynik próby z dokumentacją powykonawczą.</p></article>
      </div>
      <div class="rk-pipe-note rk-pipe-note-good"><p><strong>Ciśnienie podczas wykonywania jastrychu służy także kontroli ewentualnego uszkodzenia.</strong> Nie traktuj go jednak jako uniwersalnej ochrony mechanicznej ani powodu do pomijania ostrożności.</p></div>
      <p class="rk-pipe-copy">Pełną procedurę omawia artykuł o <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próbie szczelności ogrzewania podłogowego</a>. Jeżeli problem pojawia się podczas napełniania lub eksploatacji, sprawdź również <a href="https://projekt-ogrzewania.pl/objawy-zapowietrzenia-ogrzewania-podlogowego/">objawy zapowietrzenia podłogówki</a>.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-snail-comparison">
      <span class="rk-pipe-eyebrow">Krótko, bez tworzenia rankingu</span>
      <h2 class="rk-pipe-section-title">Ślimak, meander czy układ mieszany?</h2>
      <p class="rk-pipe-lead">Ślimak jest częstym wyborem w regularnych pokojach i dużych strefach. Nie oznacza to, że meander jest rozwiązaniem przestarzałym albo zawsze hydraulicznym błędem.</p>
      <div class="rk-pipe-table-wrap">
        <table>
          <thead><tr><th>Układ</th><th>Najważniejsza cecha</th><th>Kiedy bywa praktyczny</th><th>Ograniczenie</th></tr></thead>
          <tbody>
            <tr><td data-label="Układ"><strong>Ślimak</strong></td><td data-label="Cecha">Naprzemienne sąsiedztwo zasilania i powrotu.</td><td data-label="Zastosowanie">Regularne i większe pola, gdy celem jest równomierny rozkład.</td><td data-label="Ograniczenie">Potrzebuje miejsca na nawrót i zaplanowanej drogi powrotnej.</td></tr>
            <tr><td data-label="Układ"><strong>Meander</strong></td><td data-label="Cecha">Kolejne równoległe przejścia od początku do końca pola.</td><td data-label="Zastosowanie">Wąskie pasy, korytarze i pola, w których kontrolowany gradient jest użyteczny.</td><td data-label="Ograniczenie">Temperatura wzdłuż kierunku przepływu może zmieniać się wyraźniej.</td></tr>
            <tr><td data-label="Układ"><strong>Podwójny meander</strong></td><td data-label="Cecha">Przeplatanie odcinków o różnych temperaturach.</td><td data-label="Zastosowanie">Pola trudne dla klasycznego ślimaka, gdy trzeba ograniczyć pasowy rozkład.</td><td data-label="Ograniczenie">Wymaga starannego zaplanowania kolejności przejść.</td></tr>
            <tr><td data-label="Układ"><strong>Mieszany</strong></td><td data-label="Cecha">Różne sposoby prowadzenia w jednej instalacji.</td><td data-label="Zastosowanie">Nieregularne rzuty i strefy o odmiennych zadaniach.</td><td data-label="Ograniczenie">Każda pętla nadal wymaga własnego przepływu i obliczonego oporu.</td></tr>
          </tbody>
        </table>
      </div>
      <p class="rk-pipe-copy">Pełne porównanie znajduje się w poradniku <a href="https://projekt-ogrzewania.pl/jak-ukladac-rury-w-ogrzewaniu-slimak-meander-czy-podwojny-meander/">ślimak, meander czy podwójny meander</a>. Sam sposób wykonania drugiego wariantu opisuje artykuł <a href="https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-meandrowym/">instalacja ogrzewania podłogowego w układzie meandrowym</a>.</p>
    </section>

    <section class="rk-pipe-section" id="rk-snail-errors">
      <span class="rk-pipe-eyebrow">Błędy widoczne przed wylewką</span>
      <h2 class="rk-pipe-section-title">Najczęstsze błędy przy układaniu podłogówki w ślimak</h2>
      <div class="rk-pipe-grid-3">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">BŁĄD 1</span><h3>Rysowanie bez OZC</h3><p>Ładny i równy ślimak nie potwierdza, że podłoga pokryje straty pomieszczenia.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">BŁĄD 2</span><h3>Pomijanie powierzchni wyłączonych</h3><p>Metraż brutto prowadzi do błędnej długości, liczby pętli i rozmieszczenia aktywnego pola.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">BŁĄD 3</span><h3>Brak podwójnego rozstawu</h3><p>Zbyt gęste pierwsze przejście nie pozostawia miejsca na równomierne ułożenie powrotu.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">BŁĄD 4</span><h3>Zbyt ciasny środek</h3><p>Próba domknięcia spirali w punkcie może zakończyć się załamaniem i przewężeniem rury.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">BŁĄD 5</span><h3>Stałe 100 m bez hydrauliki</h3><p>Okrągła granica nie sprawdza przepływu, oporu ani możliwości pompy i rozdzielacza.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">BŁĄD 6</span><h3>Równe rotametry dla wszystkich</h3><p>Każde pomieszczenie i pętla mogą potrzebować innego projektowego przepływu.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">BŁĄD 7</span><h3>Zawsze 5 cm przy oknie</h3><p>Strefa brzegowa jest decyzją cieplną, a nie obowiązkowym elementem każdego przeszklenia.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">BŁĄD 8</span><h3>Niechronione przejścia</h3><p>Dobiegi przecinające szczeliny konstrukcyjne bez właściwego rozwiązania są narażone na uszkodzenie.</p></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">BŁĄD 9</span><h3>Brak zdjęć i protokołu</h3><p>Po wykonaniu posadzki nie da się wiarygodnie odtworzyć tras bez dokumentacji.</p></article>
      </div>
      <p class="rk-pipe-copy">Szersze zestawienie znajdziesz w poradniku o <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">najczęstszych błędach montażu podłogówki</a>. Przed rozpoczęciem prac warto też przygotować pełną listę <a href="https://projekt-ogrzewania.pl/jakie-materialy-sa-potrzebne-do-instalacji-ogrzewania-podlogowego/">materiałów potrzebnych do instalacji</a>.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-snail-checklist">
      <span class="rk-pipe-eyebrow">Odbiór przed zakryciem rur</span>
      <h2 class="rk-pipe-section-title">Checklista poprawnie wykonanej pętli ślimakowej</h2>
      <p class="rk-pipe-lead">Lista nie zastępuje projektu ani protokołu, ale pomaga wychwycić widoczne odstępstwa w momencie, gdy można je jeszcze poprawić bez kucia posadzki.</p>
      <div class="rk-snail-check-grid">
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">PROJEKT</span><h3>Zgodność z rysunkiem</h3><ul class="rk-pipe-bullets"><li>właściwe pomieszczenie i numer pętli,</li><li>rozstaw i powierzchnia czynna,</li><li>planowana długość obwodu,</li><li>strefy brzegowe tylko tam, gdzie wskazano,</li><li>dobiegi zgodne z trasą.</li></ul></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">MONTAŻ</span><h3>Stan rury i mocowań</h3><ul class="rk-pipe-bullets"><li>brak załamań i spłaszczeń,</li><li>zachowane promienie gięcia,</li><li>stabilne mocowanie,</li><li>brak przypadkowych połączeń,</li><li>ochrona w przejściach.</li></ul></article>
        <article class="rk-pipe-card"><span class="rk-pipe-card-number">ODBIÓR</span><h3>Dokumenty i nastawy</h3><ul class="rk-pipe-bullets"><li>opisane zasilanie i powrót,</li><li>zapisana długość pętli,</li><li>protokół próby,</li><li>zdjęcia z punktami odniesienia,</li><li>przepływ projektowy do uruchomienia.</li></ul></article>
      </div>
      <div class="rk-pipe-note rk-pipe-note-good"><p><strong>Po wykonaniu zdjęć zapisz je razem z projektem.</strong> Sama galeria w telefonie bez nazwy pomieszczenia i punktu odniesienia szybko traci wartość dokumentacyjną.</p></div>
      <p class="rk-pipe-copy">Dobra dokumentacja pokazuje znacznie więcej niż sam wzór rury. Zobacz, <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">jak powinien wyglądać profesjonalny projekt ogrzewania podłogowego</a>, oraz jakie znaczenie ma właściwy dobór <a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/">rur do ogrzewania podłogowego</a>.</p>
    </section>

    <section class="rk-pipe-section rk-pipe-final" id="rk-snail-final">
      <span class="rk-pipe-eyebrow">Wniosek techniczny</span>
      <h2 class="rk-pipe-section-title">Dobry ślimak zaczyna się przed rozwinięciem rury</h2>
      <p class="rk-pipe-lead">Kolejność jest prosta: obciążenie pomieszczenia, powierzchnia czynna, warstwy podłogi, temperatura wody, rozstaw, podział na pętle, hydraulika i dopiero na końcu trasa. Odwrócenie tej kolejności tworzy równy rysunek bez pewności, że instalacja zadziała.</p>
      <div class="rk-pipe-cta">
        <div class="rk-pipe-cta-title">Otrzymaj ślimaki rozrysowane dla rzeczywistego rzutu i policzonych obciążeń</div>
        <p>Projekt obejmuje podział na obwody, rozstawy, długości, przepływy, nastawy rozdzielacza i dane potrzebne do sprawdzenia hydrauliki. Wykonawca otrzymuje trasę, a inwestor podstawę do kontroli prac przed wylewką.</p>
        <a class="rk-pipe-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        <small class="rk-pipe-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-pipe-section" id="rk-snail-sources">
      <span class="rk-pipe-eyebrow">Podstawa techniczna</span>
      <h2 class="rk-pipe-section-title">Źródła oficjalne i zakres odpowiedzialności</h2>
      <p class="rk-pipe-lead">Poniższe oficjalne karty dokumentów porządkują kryteria komfortu, określanie wydajności, projektowanie oraz instalowanie wbudowanych wodnych systemów ogrzewania płaszczyznowego.</p>
      <div class="rk-pipe-source-grid">
        <article class="rk-pipe-source-card"><a href="https://www.iso.org/standard/74682.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-1:2021 — definicje i kryteria komfortu</a><p>Oficjalna karta części dotyczącej definicji, symboli oraz kryteriów komfortu systemów płaszczyznowych.</p></article>
        <article class="rk-pipe-source-card"><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — określanie mocy</a><p>Oficjalna karta metod wyznaczania strumienia ciepła, temperatury i równomierności powierzchni na podstawie modelu systemu.</p></article>
        <article class="rk-pipe-source-card"><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-3:2021 — projektowanie i wymiarowanie</a><p>Oficjalna karta metody projektowania służącej zapewnieniu wymaganej mocy ogrzewania lub chłodzenia płaszczyznowego.</p></article>
        <article class="rk-pipe-source-card"><a href="https://www.iso.org/standard/74685.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-5:2021 — instalowanie systemów</a><p>Oficjalna karta wymagań instalacyjnych dla wbudowanych wodnych systemów ogrzewania i chłodzenia płaszczyznowego.</p></article>
      </div>
      <div class="rk-pipe-responsibility"><p><strong>Zakres poradnika:</strong> schemat i kalkulator wyjaśniają geometrię oraz wstępny podział pola. Nie są projektem, obliczeniem mocy, doborem rozstawu, obliczeniem hydraulicznym, instrukcją konkretnego systemu ani protokołem odbioru. Ostateczne rozwiązanie musi uwzględniać dokumentację wybranych materiałów, projekt budynku i warunki rzeczywistego montażu.</p></div>
    </section>

    <section class="rk-pipe-section rk-pipe-section-soft" id="rk-snail-faq">
      <span class="rk-pipe-eyebrow">Pytania inwestorów i wykonawców</span>
      <h2 class="rk-pipe-section-title">FAQ — układ ślimakowy ogrzewania podłogowego</h2>
      <div class="rk-pipe-faq">
        <details><summary>Od której strony zaczyna się układanie podłogówki w ślimak?</summary><div class="rk-pipe-faq-answer"><p>Pętla fizycznie rozpoczyna się na belce zasilającej rozdzielacza. Po wykonaniu dobiegu rurę prowadzi się do miejsca wskazanego na projekcie, często w kierunku obwodu pola lub strefy o większym obciążeniu, a następnie do środka z pozostawieniem miejsca na powrót.</p></div></details>
        <details><summary>Czy zasilanie zawsze powinno przebiegać przy ścianie zewnętrznej?</summary><div class="rk-pipe-faq-answer"><p>Nie zawsze. Skierowanie cieplejszej części pętli przy fasadę bywa celowe, ale powinno wynikać z rozkładu obciążenia, parametrów przegród, powierzchni czynnej i projektu trasy.</p></div></details>
        <details><summary>Dlaczego przy układaniu ślimaka stosuje się podwójny rozstaw?</summary><div class="rk-pipe-faq-answer"><p>Pierwsze przejście pozostawia wolne międzyrzędzia. Po wykonaniu nawrotu odcinek powrotny wypełnia te miejsca, dzięki czemu gotowy układ uzyskuje docelowy rozstaw, na przykład 10 cm po prowadzeniu pierwszej części co około 20 cm.</p></div></details>
        <details><summary>Jak wykonać nawrót w środku ślimaka?</summary><div class="rk-pipe-faq-answer"><p>W centrum trzeba pozostawić dostateczne pole na łagodną zmianę kierunku. Minimalny promień i dopuszczony sposób gięcia należy odczytać z dokumentacji konkretnej rury oraz systemu montażowego.</p></div></details>
        <details><summary>Czy ślimak zawsze daje identyczną temperaturę całej podłogi?</summary><div class="rk-pipe-faq-answer"><p>Nie. Naprzemienne położenie zasilania i powrotu sprzyja równomierności, ale temperatura zależy również od rozstawu, głębokości rury, warstw podłogi, przepływu, temperatury wody oraz lokalnego obciążenia cieplnego.</p></div></details>
        <details><summary>Czy ślimak ma zawsze mniejszy opór niż meander?</summary><div class="rk-pipe-faq-answer"><p>Nie można przypisać jednego procentu różnicy wszystkim instalacjom. Opór pętli zależy przede wszystkim od długości, rzeczywistej średnicy wewnętrznej, przepływu, medium i geometrii zmian kierunku.</p></div></details>
        <details><summary>Ile metrów może mieć pętla ślimakowa z rury 16 × 2 mm?</summary><div class="rk-pipe-faq-answer"><p>Około 100 m bywa stosowanym pułapem roboczym, ale nie jest samodzielnym wynikiem projektu. Dopuszczalną długość sprawdza się dla obliczonego przepływu, charakterystyki konkretnej rury, straty ciśnienia i możliwości pompy.</p></div></details>
        <details><summary>Czy wszystkie pętle powinny mieć tę samą długość?</summary><div class="rk-pipe-faq-answer"><p>Nie muszą być identyczne. Powinny mieć obliczone przepływy i opory, które można poprawnie zrównoważyć. Sama procentowa różnica długości nie opisuje mocy ani hydrauliki.</p></div></details>
        <details><summary>Czy przy dużym oknie zawsze trzeba zastosować rozstaw 5 cm?</summary><div class="rk-pipe-faq-answer"><p>Nie. Zagęszczenie jest uzasadnione wtedy, gdy wynika z obciążenia i obliczeń mocy powierzchniowej. W dobrze izolowanym budynku nawet duże przeszklenie nie musi wymagać najgęstszego rozstawu.</p></div></details>
        <details><summary>Jak ominąć wyspę kuchenną w układzie ślimakowym?</summary><div class="rk-pipe-faq-answer"><p>Stałą zabudowę zaznacza się przed rysowaniem trasy. Pętlę prowadzi się po powierzchni czynnej z zachowaniem drogi powrotnej i promieni gięcia. Przy skomplikowanym obrysie korzystniejszy może być podział na kilka pól.</p></div></details>
        <details><summary>Czy można połączyć ślimak i meander na jednym rozdzielaczu?</summary><div class="rk-pipe-faq-answer"><p>Można stosować różne geometrie pętli w jednej instalacji, jeżeli każda ma policzony przepływ i opór oraz mieści się w zakresie regulacji rozdzielacza. Samo połączenie nazw układów nie tworzy błędu hydraulicznego.</p></div></details>
        <details><summary>Czy rura pętli może przechodzić przez dylatację?</summary><div class="rk-pipe-faq-answer"><p>Aktywną część pętli koordynuje się z polami jastrychu. Jeżeli dobieg musi przeciąć zaplanowaną szczelinę, przejście wykonuje się w lokalizacji i osłonie określonej w projekcie oraz dokumentacji systemu.</p></div></details>
        <details><summary>Co zrobić, gdy rura załamie się na nawrocie?</summary><div class="rk-pipe-faq-answer"><p>Nie należy prostować jej przypadkową metodą ani zakrywać widocznego przewężenia. Sposób naprawy lub wymiany odcinka musi wynikać z instrukcji systemowej, a miejsce trzeba ponownie sprawdzić i udokumentować.</p></div></details>
        <details><summary>Jak sprawdzić ślimaka przed wykonaniem wylewki?</summary><div class="rk-pipe-faq-answer"><p>Porównaj trasę, rozstaw, długości, promienie, przejścia i oznaczenia z projektem. Następnie wykonaj próbę według przyjętej procedury, sporządź protokół i zrób zdjęcia z trwałymi punktami odniesienia.</p></div></details>
      </div>
    </section>

    <section class="rk-pipe-author" id="rk-snail-author">
      <span class="rk-pipe-eyebrow">Opracowanie eksperckie</span>
      <h2 class="rk-pipe-author-title">Autor i weryfikacja merytoryczna</h2>
      <div class="rk-pipe-author-layout">
        <aside class="rk-pipe-author-side">
          <div class="rk-pipe-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych" width="400" height="400" loading="lazy" decoding="async"></div>
          <div class="rk-pipe-author-name">Robert Kucharski</div>
          <p class="rk-pipe-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
          <div class="rk-pipe-author-social" aria-label="Profile autora">
            <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="nofollow noopener noreferrer me" aria-label="LinkedIn Roberta Kucharskiego">in</a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Facebook Projekt Ogrzewania">f</a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Profil Projekt HVAC w serwisie X">X</a>
          </div>
        </aside>
        <div class="rk-pipe-author-main">
          <div class="rk-pipe-author-quote">„Moim zdaniem… największym błędem przy układzie ślimakowym jest uznanie równego rysunku za gotowy projekt. Pętla może wyglądać idealnie, a jednocześnie mieć niewłaściwy rozstaw, zbyt duży opór albo za małą moc dla pomieszczenia.”</div>
          <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz materiały edukacyjne dla inwestorów i wykonawców. W poradnikach oddziela zasady możliwe do pokazania na schemacie od parametrów, które trzeba obliczyć dla konkretnego budynku.</p>
          <p>Przy projektowaniu pętli analizuje obciążenie każdego pomieszczenia, powierzchnię czynną, warstwy podłogi, rozstaw, temperaturę wody, długości, przepływy, opory, rozdzielacz i charakterystykę pompy. Treść zweryfikowano pod kątem spójności obliczeniowej, wykonalności montażowej oraz zakresu oficjalnych dokumentów wskazanych w sekcji źródeł.</p>
          <p>Publikuje również w portalach <a href="https://remont.biz.pl/" target="_blank" rel="nofollow noopener noreferrer">Remont.biz.pl</a> i <a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a>. <a href="https://projekt-ogrzewania.pl/author/admin3399/">Zobacz pozostałe artykuły Roberta Kucharskiego w serwisie Projekt-Ogrzewania.pl</a>.</p>
          <div class="rk-pipe-author-facts">
            <div class="rk-pipe-author-fact"><strong>Zakres</strong>ogrzewanie podłogowe, bilanse cieplne i hydraulika instalacji</div>
            <div class="rk-pipe-author-fact"><strong>Metoda pracy</strong>obciążenie pomieszczeń, moc podłogi, trasy pętli i obliczone przepływy</div>
            <div class="rk-pipe-author-fact"><strong>Aktualizacja</strong>stan techniczny materiału sprawdzony 15 września 2026 r.</div>
          </div>
        </div>
      </div>
    </section>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "inLanguage": "pl-PL"
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "układ ślimakowy ogrzewania podłogowego",
        "projektowe obciążenie cieplne",
        "hydraulika pętli grzewczych",
        "równoważenie hydrauliczne",
        "instalacje niskotemperaturowe"
      ],
      "worksFor": [
        { "@id": "https://projekt-ogrzewania.pl/#organization" },
        { "@id": "https://remont.biz.pl/#organization" },
        { "@id": "https://sobir.pl/#organization" }
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/06/Infografika-Instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym.webp",
      "caption": "Schemat instalacji ogrzewania podłogowego w układzie ślimakowym"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#breadcrumb",
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/" },
        { "@type": "ListItem", "position": 2, "name": "Poradniki", "item": "https://projekt-ogrzewania.pl/blog/" },
        { "@type": "ListItem", "position": 3, "name": "Ogrzewanie podłogowe", "item": "https://projekt-ogrzewania.pl/category/ogrzewanie-podlogowe/" },
        { "@type": "ListItem", "position": 4, "name": "Układ ślimakowy ogrzewania podłogowego", "item": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/" }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#webpage",
      "url": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/",
      "name": "Układ ślimakowy ogrzewania podłogowego – schemat i montaż krok po kroku",
      "description": "Jak prawidłowo ułożyć ogrzewanie podłogowe w ślimak: interaktywny schemat, kalkulator pętli, rozstaw, nawroty, dobiegi, dylatacje i błędy.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#breadcrumb" },
      "primaryImageOfPage": { "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#primaryimage" },
      "dateModified": "2026-09-15T09:00:00+02:00",
      "inLanguage": "pl-PL",
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#article" }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#article",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#webpage" },
      "headline": "Układ ślimakowy ogrzewania podłogowego – schemat i montaż krok po kroku",
      "description": "Techniczny poradnik wykonywania układu ślimakowego z interaktywnym schematem, kalkulatorem geometrii, zasadami podwójnego rozstawu i kontrolą hydrauliki.",
      "image": { "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#primaryimage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "dateModified": "2026-09-15T09:00:00+02:00",
      "inLanguage": "pl-PL",
      "about": [
        "układ ślimakowy ogrzewania podłogowego",
        "schemat podłogówki",
        "rozstaw rur",
        "długość pętli",
        "hydraulika ogrzewania podłogowego",
        "montaż ogrzewania podłogowego"
      ],
      "keywords": "układ ślimakowy ogrzewania podłogowego, podłogówka w ślimak, schemat ślimaka, podwójny rozstaw rur, długość pętli, montaż podłogówki",
      "isAccessibleForFree": true,
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#visual-app" },
        { "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#calculator-app" },
        { "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#faq-schema" }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#visual-app",
      "name": "Interaktywny schemat układu ślimakowego krok po kroku",
      "url": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#rk-snail-visual",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "description": "Moduł edukacyjny pokazujący sześć etapów prowadzenia zasilania i powrotu w pętli ślimakowej."
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#calculator-app",
      "name": "Kalkulator podziału powierzchni na pętle ślimakowe",
      "url": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#rk-snail-calculator-section",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "description": "Kalkulator orientacyjnej długości rury w polu, dobiegów i średniej długości pętli dla wybranej powierzchni, rozstawu i liczby obwodów."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#howto",
      "name": "Jak wykonać układ ślimakowy ogrzewania podłogowego",
      "description": "Sześć etapów prowadzenia pojedynczej pętli w układzie ślimakowym od rozdzielacza do powrotu.",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Wykonaj dobieg od rozdzielacza", "text": "Poprowadź ciągły odcinek od belki zasilającej do początku powierzchni czynnej zgodnie z projektem." },
        { "@type": "HowToStep", "position": 2, "name": "Ułóż zewnętrzną część zasilania", "text": "Rozpocznij trasę od zaplanowanej strony pola, uwzględniając ewentualną strefę brzegową." },
        { "@type": "HowToStep", "position": 3, "name": "Prowadź spiralę do środka", "text": "Układaj rurę do wnętrza pola z odstępem pozostawiającym miejsce na odcinek powrotny." },
        { "@type": "HowToStep", "position": 4, "name": "Wykonaj łagodny nawrót", "text": "Pozostaw w środku pole umożliwiające zmianę kierunku z promieniem dopuszczonym dla konkretnej rury." },
        { "@type": "HowToStep", "position": 5, "name": "Ułóż powrót między odcinkami", "text": "Prowadź drugą część rury na zewnątrz w pozostawionych międzyrzędziach." },
        { "@type": "HowToStep", "position": 6, "name": "Zamknij i opisz pętlę", "text": "Wróć do belki powrotnej, opisz obwód, wykonaj próbę i udokumentuj trasę przed zakryciem." }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#checklist",
      "name": "Checklista odbioru pętli ślimakowej",
      "numberOfItems": 3,
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Zgodność pętli z projektem" },
        { "@type": "ListItem", "position": 2, "name": "Kontrola stanu rury i mocowań" },
        { "@type": "ListItem", "position": 3, "name": "Dokumentacja próby i trasy" }
      ]
    },
    {
      "@type": "Service",
      "@id": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/#service",
      "name": "Indywidualny projekt ogrzewania podłogowego",
      "url": "https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/",
      "provider": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "areaServed": { "@type": "Country", "name": "Polska" },
      "serviceType": "Projekt instalacji ogrzewania podłogowego"
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/#faq-schema",
      "mainEntity": [
        { "@type": "Question", "name": "Od której strony zaczyna się układanie podłogówki w ślimak?", "acceptedAnswer": { "@type": "Answer", "text": "Pętla fizycznie rozpoczyna się na belce zasilającej rozdzielacza. Po wykonaniu dobiegu rurę prowadzi się do miejsca wskazanego na projekcie, często w kierunku obwodu pola lub strefy o większym obciążeniu, a następnie do środka z pozostawieniem miejsca na powrót." } },
        { "@type": "Question", "name": "Czy zasilanie zawsze powinno przebiegać przy ścianie zewnętrznej?", "acceptedAnswer": { "@type": "Answer", "text": "Nie zawsze. Skierowanie cieplejszej części pętli przy fasadę bywa celowe, ale powinno wynikać z rozkładu obciążenia, parametrów przegród, powierzchni czynnej i projektu trasy." } },
        { "@type": "Question", "name": "Dlaczego przy układaniu ślimaka stosuje się podwójny rozstaw?", "acceptedAnswer": { "@type": "Answer", "text": "Pierwsze przejście pozostawia wolne międzyrzędzia. Po wykonaniu nawrotu odcinek powrotny wypełnia te miejsca, dzięki czemu gotowy układ uzyskuje docelowy rozstaw." } },
        { "@type": "Question", "name": "Jak wykonać nawrót w środku ślimaka?", "acceptedAnswer": { "@type": "Answer", "text": "W centrum trzeba pozostawić dostateczne pole na łagodną zmianę kierunku. Minimalny promień i dopuszczony sposób gięcia należy odczytać z dokumentacji konkretnej rury oraz systemu montażowego." } },
        { "@type": "Question", "name": "Czy ślimak zawsze daje identyczną temperaturę całej podłogi?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Naprzemienne położenie zasilania i powrotu sprzyja równomierności, ale temperatura zależy również od rozstawu, głębokości rury, warstw podłogi, przepływu, temperatury wody oraz lokalnego obciążenia cieplnego." } },
        { "@type": "Question", "name": "Czy ślimak ma zawsze mniejszy opór niż meander?", "acceptedAnswer": { "@type": "Answer", "text": "Nie można przypisać jednego procentu różnicy wszystkim instalacjom. Opór pętli zależy przede wszystkim od długości, rzeczywistej średnicy wewnętrznej, przepływu, medium i geometrii zmian kierunku." } },
        { "@type": "Question", "name": "Ile metrów może mieć pętla ślimakowa z rury 16 × 2 mm?", "acceptedAnswer": { "@type": "Answer", "text": "Około 100 m bywa stosowanym pułapem roboczym, ale nie jest samodzielnym wynikiem projektu. Dopuszczalną długość sprawdza się dla obliczonego przepływu, charakterystyki konkretnej rury, straty ciśnienia i możliwości pompy." } },
        { "@type": "Question", "name": "Czy wszystkie pętle powinny mieć tę samą długość?", "acceptedAnswer": { "@type": "Answer", "text": "Nie muszą być identyczne. Powinny mieć obliczone przepływy i opory, które można poprawnie zrównoważyć. Sama procentowa różnica długości nie opisuje mocy ani hydrauliki." } },
        { "@type": "Question", "name": "Czy przy dużym oknie zawsze trzeba zastosować rozstaw 5 cm?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Zagęszczenie jest uzasadnione wtedy, gdy wynika z obciążenia i obliczeń mocy powierzchniowej. W dobrze izolowanym budynku nawet duże przeszklenie nie musi wymagać najgęstszego rozstawu." } },
        { "@type": "Question", "name": "Jak ominąć wyspę kuchenną w układzie ślimakowym?", "acceptedAnswer": { "@type": "Answer", "text": "Stałą zabudowę zaznacza się przed rysowaniem trasy. Pętlę prowadzi się po powierzchni czynnej z zachowaniem drogi powrotnej i promieni gięcia. Przy skomplikowanym obrysie korzystniejszy może być podział na kilka pól." } },
        { "@type": "Question", "name": "Czy można połączyć ślimak i meander na jednym rozdzielaczu?", "acceptedAnswer": { "@type": "Answer", "text": "Można stosować różne geometrie pętli w jednej instalacji, jeżeli każda ma policzony przepływ i opór oraz mieści się w zakresie regulacji rozdzielacza." } },
        { "@type": "Question", "name": "Czy rura pętli może przechodzić przez dylatację?", "acceptedAnswer": { "@type": "Answer", "text": "Aktywną część pętli koordynuje się z polami jastrychu. Jeżeli dobieg musi przeciąć zaplanowaną szczelinę, przejście wykonuje się w lokalizacji i osłonie określonej w projekcie oraz dokumentacji systemu." } },
        { "@type": "Question", "name": "Co zrobić, gdy rura załamie się na nawrocie?", "acceptedAnswer": { "@type": "Answer", "text": "Nie należy prostować jej przypadkową metodą ani zakrywać widocznego przewężenia. Sposób naprawy lub wymiany odcinka musi wynikać z instrukcji systemowej, a miejsce trzeba ponownie sprawdzić i udokumentować." } },
        { "@type": "Question", "name": "Jak sprawdzić ślimaka przed wykonaniem wylewki?", "acceptedAnswer": { "@type": "Answer", "text": "Porównaj trasę, rozstaw, długości, promienie, przejścia i oznaczenia z projektem. Następnie wykonaj próbę według przyjętej procedury, sporządź protokół i zrób zdjęcia z trwałymi punktami odniesienia." } }
      ]
    }
  ]
}
</script>

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

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

  var stages = {
    "1": {
      title: "Wyjdź z rozdzielacza",
      copy: "Poprowadź jeden ciągły odcinek do początku powierzchni czynnej. Dobieg jest częścią całkowitej długości oraz straty ciśnienia pętli.",
      purpose: "Dojść do pola możliwie czytelną, chronioną trasą.",
      check: "Przejścia przez progi, dylatacje oraz kolizje z innymi instalacjami.",
      error: "Pomijanie dobiegu podczas obliczania długości obwodu."
    },
    "2": {
      title: "Ułóż zewnętrzną część zasilania",
      copy: "Rozpocznij prowadzenie rury od strony wskazanej w projekcie. Cieplejsza część może obsługiwać obwód pola albo strefę o większym obciążeniu.",
      purpose: "Doprowadzić zasilanie do obszaru, w którym jego wyższa temperatura jest najbardziej użyteczna.",
      check: "Rozstaw przy fasadzie, pola wyłączone i przebieg dylatacji.",
      error: "Automatyczne zagęszczanie przy każdym oknie bez sprawdzenia potrzebnej mocy."
    },
    "3": {
      title: "Prowadź spiralę do środka",
      copy: "Układaj kolejne zwoje do wnętrza, zachowując odstęp potrzebny na powrót. Dla docelowych 10 cm pierwsze przejście pozostawia zwykle miejsca co około 20 cm.",
      purpose: "Przygotować regularne międzyrzędzia dla drugiej części tej samej rury.",
      check: "Równoległość, mocowania, odległość od przegród i rzeczywisty obrys pola.",
      error: "Ułożenie pierwszego przejścia od razu w docelowym rozstawie."
    },
    "4": {
      title: "Wykonaj łagodny nawrót",
      copy: "W centrum zmień kierunek bez załamania rury. Wielkość pozostawionego pola musi umożliwić zachowanie promienia dopuszczonego dla konkretnego produktu.",
      purpose: "Przejść z części zasilającej do powrotnej bez przewężenia przekroju.",
      check: "Promień gięcia, temperaturę montażu i brak spłaszczenia rury.",
      error: "Próba domknięcia ślimaka w zbyt małym punkcie."
    },
    "5": {
      title: "Wprowadź powrót między odcinki",
      copy: "Prowadź rurę na zewnątrz w wolnych międzyrzędziach. W ten sposób cieplejsze i chłodniejsze fragmenty obwodu znajdują się obok siebie.",
      purpose: "Utworzyć docelowy rozstaw i ograniczyć pasowy rozkład temperatury powierzchni.",
      check: "Czy powrót zachowuje rozstaw i nie wypycha wcześniej zamocowanych odcinków.",
      error: "Korygowanie błędów zasilania przez lokalne, przypadkowe zagęszczenia powrotu."
    },
    "6": {
      title: "Zamknij, opisz i sprawdź pętlę",
      copy: "Wróć do belki powrotnej rozdzielacza, opisz obwód i porównaj jego wykonanie z projektem przed próbą oraz zakryciem instalacji.",
      purpose: "Zachować identyfikowalność pętli i przygotować ją do regulacji.",
      check: "Długość, oznaczenie, zdjęcia, protokół próby i docelowy przepływ.",
      error: "Pozostawienie nieopisanych końców i brak dokumentacji trasy."
    }
  };

  var stepButtons = guide.querySelectorAll("[data-rk-snail-step]");
  var routeParts = guide.querySelectorAll("[data-rk-stage]");
  var stageKicker = document.getElementById("rk-snail-stage-kicker");
  var stageTitle = document.getElementById("rk-snail-stage-title");
  var stageCopy = document.getElementById("rk-snail-stage-copy");
  var stagePurpose = document.getElementById("rk-snail-stage-purpose");
  var stageCheck = document.getElementById("rk-snail-stage-check");
  var stageError = document.getElementById("rk-snail-stage-error");

  function showStage(stageNumber) {
    var key = String(stageNumber);
    var stage = stages[key];
    if (!stage) {
      return;
    }

    stageKicker.textContent = "Etap " + key + " z 6";
    stageTitle.textContent = stage.title;
    stageCopy.textContent = stage.copy;
    stagePurpose.textContent = stage.purpose;
    stageCheck.textContent = stage.check;
    stageError.textContent = stage.error;

    stepButtons.forEach(function (button) {
      var active = button.getAttribute("data-rk-snail-step") === key;
      button.setAttribute("aria-pressed", active ? "true" : "false");
    });

    routeParts.forEach(function (part) {
      var partStage = Number(part.getAttribute("data-rk-stage"));
      part.classList.remove("is-active");
      part.classList.remove("is-done");
      if (partStage < stageNumber) {
        part.classList.add("is-done");
      } else {
        if (partStage === stageNumber) {
          part.classList.add("is-active");
        }
      }
    });
  }

  stepButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      showStage(Number(button.getAttribute("data-rk-snail-step")));
    });
  });

  var areaInput = document.getElementById("rk-snail-area");
  var spacingInput = document.getElementById("rk-snail-spacing-input");
  var approachInput = document.getElementById("rk-snail-approach");
  var loopInput = document.getElementById("rk-snail-loop-count");
  var calculateButton = document.getElementById("rk-snail-calculate");
  var resetButton = document.getElementById("rk-snail-reset");
  var resultBox = document.getElementById("rk-snail-calculator-result");
  var statusText = document.getElementById("rk-snail-result-status");
  var introText = document.getElementById("rk-snail-result-intro");

  function formatNumber(value, digits) {
    return value.toLocaleString("pl-PL", {
      minimumFractionDigits: digits,
      maximumFractionDigits: digits
    });
  }

  function setResult(fieldLength, approachLength, totalLength, averageLength) {
    document.getElementById("rk-snail-field-length").textContent = formatNumber(fieldLength, 1) + " m";
    document.getElementById("rk-snail-approach-length").textContent = formatNumber(approachLength, 1) + " m";
    document.getElementById("rk-snail-total-length").textContent = formatNumber(totalLength, 1) + " m";
    document.getElementById("rk-snail-average-length").textContent = formatNumber(averageLength, 1) + " m";
  }

  function calculateVariant() {
    var area = Number(areaInput.value);
    var spacing = Number(spacingInput.value);
    var approach = Number(approachInput.value);
    var loops = Number(loopInput.value);

    resultBox.classList.remove("is-good");
    resultBox.classList.remove("is-stop");

    if (!Number.isFinite(area)) {
      statusText.textContent = "Sprawdź powierzchnię czynną";
      introText.textContent = "Wprowadź dodatnią powierzchnię w metrach kwadratowych.";
      resultBox.classList.add("is-stop");
      return;
    }
    if (area <= 0) {
      statusText.textContent = "Sprawdź powierzchnię czynną";
      introText.textContent = "Wprowadź dodatnią powierzchnię w metrach kwadratowych.";
      resultBox.classList.add("is-stop");
      return;
    }
    if (!Number.isFinite(approach)) {
      statusText.textContent = "Sprawdź długość dobiegu";
      introText.textContent = "Dobieg nie może być wartością ujemną.";
      resultBox.classList.add("is-stop");
      return;
    }
    if (approach < 0) {
      statusText.textContent = "Sprawdź długość dobiegu";
      introText.textContent = "Dobieg nie może być wartością ujemną.";
      resultBox.classList.add("is-stop");
      return;
    }

    var fieldLength = area / spacing;
    var approachLength = 2 * approach * loops;
    var totalLength = fieldLength + approachLength;
    var averageLength = totalLength / loops;
    var areaPerLoop = area / loops;

    setResult(fieldLength, approachLength, totalLength, averageLength);

    if (averageLength > 100) {
      resultBox.classList.add("is-stop");
      statusText.textContent = "Zwiększ liczbę pętli i wykonaj obliczenia hydrauliczne";
      introText.textContent = "Średnia " + formatNumber(averageLength, 1) + " m przekracza często stosowany pułap roboczy 100 m dla rury 16 × 2 mm. Nie jest to limit normowy, lecz wyraźny sygnał do ponownego podziału i sprawdzenia oporu.";
    } else {
      if (averageLength > 80) {
        statusText.textContent = "Wariant wymaga uważnej kontroli hydraulicznej";
        introText.textContent = "Każda pętla obsługuje średnio " + formatNumber(areaPerLoop, 1) + " m², a jej orientacyjna długość wynosi " + formatNumber(averageLength, 1) + " m. Sprawdź wymagany przepływ, światło rury i stratę ciśnienia.";
      } else {
        resultBox.classList.add("is-good");
        statusText.textContent = "Geometria wygląda roboczo możliwa — potwierdź hydraulikę";
        introText.textContent = "Każda pętla obsługuje średnio " + formatNumber(areaPerLoop, 1) + " m², a jej orientacyjna długość wynosi " + formatNumber(averageLength, 1) + " m. To nadal nie potwierdza mocy, przepływu ani oporu.";
      }
    }
  }

  calculateButton.addEventListener("click", calculateVariant);

  resetButton.addEventListener("click", function () {
    areaInput.value = "20";
    spacingInput.value = "0.15";
    approachInput.value = "5";
    loopInput.value = "2";
    calculateVariant();
  });

  showStage(1);
  calculateVariant();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/">Układ ślimakowy ogrzewania podłogowego – schemat i montaż krok po kroku.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/instalacja-ogrzewania-podlogowego-w-ukladzie-slimakowym/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Koszt ogrzewania domu 2026 – ceny i kalkulator.</title>
		<link>https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/</link>
					<comments>https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Wed, 12 Feb 2025 16:59:31 +0000</pubDate>
				<category><![CDATA[Analizy rynkowe]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Kocioł gazowy]]></category>
		<category><![CDATA[Koszty energii]]></category>
		<category><![CDATA[Kotły gazowe]]></category>
		<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Pompy ciepła]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Technologie grzewcze]]></category>
		<category><![CDATA[dom energooszczędny]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[kocioł gazowy]]></category>
		<category><![CDATA[koszt ogrzewania domu 2025]]></category>
		<category><![CDATA[koszty energii]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[pompa ciepła]]></category>
		<category><![CDATA[porównanie systemów grzewczych]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<category><![CDATA[rachunki za ogrzewanie]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2183</guid>

					<description><![CDATA[<p>Planujesz ogrzewanie domu w 2025 roku? Sprawdź, ile kosztuje ogrzewanie podłogowe w 2025 roku z pompą ciepła i kotłem gazowym! Przeanalizowaliśmy koszty dla domów o powierzchni 100, 150 i 200 m², uwzględniając zapotrzebowanie na ciepło wynoszące 50 kWh/m². Dowiedz się, które rozwiązanie jest bardziej opłacalne i jak odpowiednio zaprojektować instalację, aby cieszyć się komfortem i niskimi rachunkami.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">Koszt ogrzewania domu 2026 – ceny i kalkulator.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-cost-guide {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e9fbff;
    --rk-orange: #ff6d38;
    --rk-red: #df4537;
    --rk-yellow: #f2bd42;
    --rk-yellow-soft: #fff8df;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-purple: #6d5bd0;
    --rk-ink: #1f2937;
    --rk-text: #475968;
    --rk-muted: #6c7e8a;
    --rk-line: #d6e5ec;
    --rk-soft: #f4f9fb;
    --rk-warm: #fff3ec;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 72px;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.76;
  }

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

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

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

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

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

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

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

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

  #rk-cost-guide .rk-cost-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-cost-guide .rk-cost-progress-track {
    position: sticky;
    z-index: 60;
    top: 0;
    height: 5px;
    background: rgba(214, 229, 236, 0.8);
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  /* MODUŁ AKTUALIZACJI CEN 2026 */
  #rk-cost-guide .rk-cost-update-banner {
    position: relative;
    overflow: hidden;
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 18px;
    align-items: center;
    margin: 0 0 28px;
    padding: clamp(21px, 4vw, 32px);
    border: 1px solid #ffb99f;
    border-radius: 22px;
    background: linear-gradient(135deg, #fff0e9, #fffaf7);
  }

  #rk-cost-guide .rk-cost-update-year {
    display: inline-flex;
    min-width: 92px;
    min-height: 92px;
    align-items: center;
    justify-content: center;
    padding: 12px;
    border-radius: 20px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-orange), var(--rk-red));
    box-shadow: 0 14px 30px rgba(223, 69, 55, 0.2);
    font-size: 1.35rem;
    font-weight: 980;
    line-height: 1;
  }

  #rk-cost-guide .rk-cost-update-banner strong {
    display: block;
    margin-bottom: 5px;
    color: var(--rk-dark);
    font-size: clamp(1rem, 2.3vw, 1.35rem);
    line-height: 1.25;
  }

  #rk-cost-guide .rk-cost-update-banner p {
    margin: 0;
    color: var(--rk-text);
    font-size: 0.78rem;
    line-height: 1.6;
  }

  /* PANEL CEN */
  #rk-cost-guide .rk-cost-price-grid {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
    margin: 24px 0;
  }

  #rk-cost-guide .rk-cost-price-card {
    min-width: 0;
    padding: 21px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-white);
  }

  #rk-cost-guide .rk-cost-price-card span {
    display: block;
    color: var(--rk-muted);
    font-size: 0.61rem;
    font-weight: 900;
    letter-spacing: 0.055em;
    text-transform: uppercase;
  }

  #rk-cost-guide .rk-cost-price-card strong {
    display: block;
    margin: 8px 0 6px;
    color: var(--rk-dark);
    font-size: clamp(1.08rem, 2.5vw, 1.48rem);
    font-weight: 980;
    line-height: 1.15;
  }

  #rk-cost-guide .rk-cost-price-card small {
    display: block;
    color: var(--rk-text);
    font-size: 0.65rem;
    line-height: 1.5;
  }

  #rk-cost-guide .rk-cost-price-card.is-electric { border-top: 5px solid var(--rk-blue); }
  #rk-cost-guide .rk-cost-price-card.is-gas { border-top: 5px solid var(--rk-cyan); }
  #rk-cost-guide .rk-cost-price-card.is-pellet { border-top: 5px solid var(--rk-orange); }
  #rk-cost-guide .rk-cost-price-card.is-coal { border-top: 5px solid var(--rk-dark); }

  /* KALKULATOR KORZYSTA Z PEŁNEJ SZEROKOŚCI NA DESKTOPIE */
  #rk-cost-guide .rk-cost-audit-layout {
    grid-template-columns: 1fr;
  }

  #rk-cost-guide .rk-cost-audit-form {
    border-right: 0;
    border-bottom: 1px solid var(--rk-line);
  }

  #rk-cost-guide .rk-cost-calculator-core {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 14px;
  }

  #rk-cost-guide .rk-cost-calculator-core .rk-cost-field.is-wide {
    grid-column: span 2;
  }

  #rk-cost-guide .rk-cost-toggle-line {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 11px;
    align-items: start;
    margin-top: 16px;
    padding: 13px 15px;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    background: var(--rk-white);
    cursor: pointer;
  }

  #rk-cost-guide .rk-cost-toggle-line input {
    width: 20px;
    height: 20px;
    margin-top: 1px;
    accent-color: var(--rk-blue);
  }

  #rk-cost-guide .rk-cost-toggle-line span {
    color: var(--rk-text);
    font-size: 0.73rem;
    font-weight: 760;
    line-height: 1.48;
  }

  #rk-cost-guide .rk-cost-advanced {
    margin-top: 18px;
    border: 1px solid #bdd4de;
    border-radius: 16px;
    background: var(--rk-white);
  }

  #rk-cost-guide .rk-cost-advanced summary {
    position: relative;
    padding: 16px 45px 16px 18px;
    color: var(--rk-dark);
    font-size: 0.76rem;
    font-weight: 950;
    line-height: 1.4;
    cursor: pointer;
    list-style: none;
  }

  #rk-cost-guide .rk-cost-advanced summary::-webkit-details-marker { display: none; }

  #rk-cost-guide .rk-cost-advanced summary::after {
    content: "+";
    position: absolute;
    top: 50%;
    right: 17px;
    transform: translateY(-50%);
    color: var(--rk-blue);
    font-size: 1.25rem;
    font-weight: 950;
  }

  #rk-cost-guide .rk-cost-advanced[open] summary::after { content: "−"; }

  #rk-cost-guide .rk-cost-advanced-inner {
    padding: 0 18px 18px;
    border-top: 1px solid var(--rk-line);
  }

  #rk-cost-guide .rk-cost-input-group {
    margin-top: 18px;
    padding: 17px;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    background: var(--rk-soft);
  }

  #rk-cost-guide .rk-cost-input-group h3 {
    margin-bottom: 13px;
    color: var(--rk-dark);
    font-size: 0.82rem;
  }

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

  #rk-cost-guide .rk-cost-field-note {
    display: block;
    margin-top: 5px;
    color: var(--rk-muted);
    font-size: 0.59rem;
    font-weight: 680;
    line-height: 1.4;
  }

  /* WYNIKI ŹRÓDEŁ */
  #rk-cost-guide .rk-cost-ranking {
    display: grid;
    gap: 10px;
    margin: 20px 0;
  }

  #rk-cost-guide .rk-cost-source-row {
    display: grid;
    grid-template-columns: minmax(145px, 0.75fr) minmax(180px, 1.25fr) minmax(115px, 0.65fr) minmax(105px, 0.55fr);
    gap: 14px;
    align-items: center;
    padding: 17px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    background: var(--rk-white);
  }

  #rk-cost-guide .rk-cost-source-row.is-winner {
    border-color: #8ed7c5;
    background: var(--rk-green-soft);
    box-shadow: 0 9px 24px rgba(22, 131, 107, 0.1);
  }

  #rk-cost-guide .rk-cost-source-name span {
    display: block;
    margin-bottom: 4px;
    color: var(--rk-muted);
    font-size: 0.59rem;
    font-weight: 900;
    letter-spacing: 0.05em;
    text-transform: uppercase;
  }

  #rk-cost-guide .rk-cost-source-name strong {
    display: block;
    color: var(--rk-dark);
    font-size: 0.84rem;
    font-weight: 950;
    line-height: 1.3;
  }

  #rk-cost-guide .rk-cost-rank-track {
    height: 22px;
    overflow: hidden;
    border-radius: 999px;
    background: #dcebf0;
  }

  #rk-cost-guide .rk-cost-rank-bar {
    display: block;
    width: 0;
    height: 100%;
    min-width: 5%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--rk-blue), var(--rk-cyan));
    transition: width 220ms ease;
  }

  #rk-cost-guide .rk-cost-source-row.is-winner .rk-cost-rank-bar {
    background: linear-gradient(90deg, var(--rk-green), #38bca0);
  }

  #rk-cost-guide .rk-cost-source-usage,
  #rk-cost-guide .rk-cost-source-total {
    color: var(--rk-text);
    font-size: 0.66rem;
    line-height: 1.42;
  }

  #rk-cost-guide .rk-cost-source-usage strong,
  #rk-cost-guide .rk-cost-source-total strong {
    display: block;
    color: var(--rk-dark);
    font-size: 0.86rem;
    font-weight: 950;
  }

  #rk-cost-guide .rk-cost-source-total { text-align: right; }

  #rk-cost-guide .rk-cost-result-note {
    margin-top: 18px;
    padding: 17px 19px;
    border: 1px dashed #b9d6e0;
    border-radius: 15px;
    color: var(--rk-text);
    background: #fbfdfe;
    font-size: 0.68rem;
    line-height: 1.58;
  }

  #rk-cost-guide .rk-cost-tool-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin-top: 18px;
  }

  #rk-cost-guide .rk-cost-tool-button {
    min-height: 47px;
    padding: 10px 14px;
    border: 1px solid #bdd4de;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: 0.72rem;
    font-weight: 900;
    cursor: pointer;
  }

  #rk-cost-guide .rk-cost-tool-button.is-primary {
    color: var(--rk-white);
    border-color: var(--rk-blue);
    background: var(--rk-blue);
  }

  #rk-cost-guide .rk-cost-tool-button:hover,
  #rk-cost-guide .rk-cost-tool-button:focus-visible {
    color: var(--rk-white);
    border-color: var(--rk-orange);
    background: var(--rk-orange);
  }

  #rk-cost-guide .rk-cost-copy-status {
    min-height: 1.4em;
    margin: 8px 0 0;
    color: var(--rk-green);
    font-size: 0.63rem;
    font-weight: 850;
  }

  /* DWIE KOLUMNY TYLKO GDY SĄ DWA KAFLE */
  #rk-cost-guide .rk-cost-decision.is-two {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #rk-cost-guide .rk-cost-sales-cta { text-decoration: none; }

  @media (max-width: 1100px) {
    #rk-cost-guide .rk-cost-price-grid,
    #rk-cost-guide .rk-cost-calculator-core,
    #rk-cost-guide .rk-cost-input-grid {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    #rk-cost-guide .rk-cost-calculator-core .rk-cost-field.is-wide {
      grid-column: span 2;
    }
  }

  @media (max-width: 780px) {
    #rk-cost-guide .rk-cost-source-row {
      grid-template-columns: 1fr;
      gap: 9px;
    }

    #rk-cost-guide .rk-cost-source-total { text-align: left; }
  }

  @media (max-width: 720px) {
    #rk-cost-guide .rk-cost-update-banner,
    #rk-cost-guide .rk-cost-price-grid,
    #rk-cost-guide .rk-cost-calculator-core,
    #rk-cost-guide .rk-cost-input-grid,
    #rk-cost-guide .rk-cost-tool-actions,
    #rk-cost-guide .rk-cost-decision.is-two {
      grid-template-columns: 1fr;
    }

    #rk-cost-guide .rk-cost-update-year {
      min-width: 0;
      min-height: 64px;
    }

    #rk-cost-guide .rk-cost-calculator-core .rk-cost-field.is-wide {
      grid-column: auto;
    }
  }

</style>

<article id="rk-cost-guide">
  <div class="rk-cost-shell">
    <div class="rk-cost-progress-track" aria-hidden="true"><div class="rk-cost-progress" id="rk-cost-progress"></div></div>

    <header class="rk-cost-hero">
      <div class="rk-cost-hero-grid">
        <div>
          <span class="rk-cost-eyebrow"><b></b> Aktualizacja 2026 • ceny, taryfy i rzeczywiste składniki rachunku</span>
          <div class="rk-cost-hero-title">Koszt ogrzewania domu w 2026 roku</div>
          <p class="rk-cost-hero-lead">Porównujemy pompę ciepła, kocioł gazowy, pellet, węgiel i ogrzewanie elektryczne przy identycznej ilości ciepła dostarczanej do budynku. Kalkulator uwzględnia sezonową sprawność, opłaty stałe, energię pomocniczą oraz ceny, które można zastąpić danymi z własnej faktury.</p>
          <div class="rk-cost-meta">
            <span><i></i> Autor: Robert Kucharski</span>
            <span><i></i> Aktualizacja cen: 28 sierpnia 2026 r.</span>
            <span><i></i> Prąd • gaz • pellet • węgiel • pompa ciepła</span>
          </div>
        </div>
      </div>
    </header>

    <nav class="rk-cost-nav" aria-label="Spis treści artykułu">
      <a href="#rk-cost-answer">Szybka odpowiedź</a>
      <a href="#rk-cost-prices">Ceny 2026</a>
      <a href="#rk-cost-calculator">Kalkulator</a>
      <a href="#rk-cost-method">Jak liczymy?</a>
      <a href="#rk-cost-demand">Zapotrzebowanie domu</a>
      <a href="#rk-cost-heatpump">Pompa ciepła</a>
      <a href="#rk-cost-gas">Gaz</a>
      <a href="#rk-cost-solid">Pellet i węgiel</a>
      <a href="#rk-cost-electric">Prąd</a>
      <a href="#rk-cost-floor">Podłogówka</a>
      <a href="#rk-cost-examples">100–200 m²</a>
      <a href="#rk-cost-pv">Fotowoltaika</a>
      <a href="#rk-cost-checklist">Jak porównywać?</a>
      <a href="#rk-cost-faq">FAQ</a>
      <a href="#rk-cost-author">Autor</a>
    </nav>

    <div class="rk-cost-body">
      <section class="rk-cost-section" id="rk-cost-answer">
        <div class="rk-cost-update-banner">
          <span class="rk-cost-update-year">2026</span>
          <div><strong>Pełna aktualizacja cen i obliczeń: 28 sierpnia 2026 r.</strong><p>Ten materiał pierwotnie opisywał 2025 rok. Zmieniliśmy taryfy, ceny paliw, założenia sprawności oraz całą metodę obliczeń. Presety są punktem startowym — ostateczny wynik powinien korzystać z ceny jednostkowej i opłat widocznych na Twojej fakturze.</p></div>
        </div>

        <span class="rk-cost-kicker">Najkrótsza uczciwa odpowiedź</span>
        <h2>Ile kosztuje ogrzewanie domu w 2026 roku?</h2>
        <p class="rk-cost-lead rk-cost-dropcap">Nie istnieje jedna kwota właściwa dla domu o powierzchni 100, 150 albo 200 m². Koszt zależy przede wszystkim od rocznej ilości użytecznego ciepła, sezonowej sprawności źródła, ceny nośnika, opłat stałych i sposobu użytkowania. Sam metraż nie opisuje izolacji, wentylacji, temperatury wewnętrznej ani przebiegu zimy.</p>

        <div class="rk-cost-answer">
          <div class="rk-cost-answer-main">
            <h3>Przykład porównawczy</h3>
            <p>Dla domu 150 m² i zapotrzebowania 70 kWh/m² rocznie trzeba dostarczyć około <strong>10 500 kWh użytecznego ciepła</strong>. Przy roboczych cenach z 2026 roku wynik wynosi orientacyjnie: pompa ciepła około 3210 zł, gaz około 4310 zł z opłatami stałymi, pellet około 5150 zł, węgiel groszek około 2630 zł, a ogrzewanie oporowe około 10 920 zł rocznie.</p>
            <p>To porównanie kosztu energii i paliwa. Nie obejmuje ceny urządzeń, finansowania, kominów, magazynu opału, pracy użytkownika, przeglądów, napraw ani ograniczeń wynikających z lokalnych uchwał antysmogowych.</p>
          </div>
          <aside class="rk-cost-answer-side">
            <h3>Najważniejsza zasada</h3>
            <p><strong>Porównujemy identyczny komfort i identyczną ilość ciepła.</strong> Jeżeli jeden wariant utrzymuje 22°C, a drugi 19°C, niższy rachunek nie wynika wyłącznie z lepszego źródła. Kalkulator nie premiuje żadnej technologii z góry — wynik powstaje z wpisanych danych.</p>
          </aside>
        </div>

        <div class="rk-cost-callout is-warning"><p><strong>Kwoty z dawnej wersji były zbyt niskie.</strong> Obliczenia 1000–2000 zł dla pompy ciepła oraz 1278–2555 zł dla gazu pomijały część kosztu dostawy energii, opłaty stałe i różnicę pomiędzy chwilowym COP a sezonowym SCOP.</p></div>
      </section>

      <section class="rk-cost-section" id="rk-cost-prices">
        <span class="rk-cost-kicker">Punkt odniesienia na 28 sierpnia 2026 r.</span>
        <h2>Jakie ceny energii i paliw przyjmujemy w 2026 roku?</h2>
        <p class="rk-cost-lead">Każdy preset można zmienić. Cena prądu zależy od sprzedawcy, OSD i taryfy, koszt gazu od obszaru dystrybucyjnego i grupy, a paliwa stałe od parametrów, opakowania, transportu oraz regionu.</p>

        <div class="rk-cost-price-grid">
          <div class="rk-cost-price-card is-electric"><span>Prąd G11 • preset</span><strong>1,04 zł/kWh</strong><small>Roboczy koszt zmienny brutto energii czynnej i dystrybucji. Stałe opłaty wpisujesz osobno tylko wtedy, gdy chcesz przypisać je do ogrzewania.</small></div>
          <div class="rk-cost-price-card is-gas"><span>Gaz • preset W‑3.6</span><strong>0,31 zł/kWh</strong><small>Orientacyjny zmienny koszt brutto paliwa i dystrybucji. Domyślne opłaty stałe wynoszą dodatkowo 850 zł rocznie.</small></div>
          <div class="rk-cost-price-card is-pellet"><span>Pellet A1 • preset</span><strong>2000 zł/t</strong><small>Wartość opałowa 4,8 kWh/kg i sezonowa sprawność kotła 85%. Transport oraz serwis nie są dodawane automatycznie.</small></div>
          <div class="rk-cost-price-card is-coal"><span>Węgiel groszek • preset</span><strong>1400 zł/t</strong><small>Wartość opałowa 7,0 kWh/kg i sezonowa sprawność 80%. Cena uwzględnia wyższy poziom niż najtańszy opał luzem u producenta.</small></div>
        </div>

        <div class="rk-cost-table-wrap">
          <table>
            <thead><tr><th>Nośnik</th><th>Potwierdzona informacja</th><th>Co doliczamy?</th><th>Dlaczego wynik jest edytowalny?</th></tr></thead>
            <tbody>
              <tr><td data-label="Nośnik"><strong>Energia elektryczna</strong></td><td data-label="Potwierdzona informacja">Średnia taryfowa cena energii czynnej na 2026 rok: 495,16 zł/MWh.</td><td data-label="Co doliczamy?">Dystrybucję zmienną, VAT i ewentualnie opłaty stałe.</td><td data-label="Dlaczego edytowalny?">Różne OSD, taryfy G11/G12/G12w, umowy i struktura zużycia.</td></tr>
              <tr><td data-label="Nośnik"><strong>Gaz ziemny</strong></td><td data-label="Potwierdzona informacja">Cena sprzedaży w taryfie myORLEN: 197,29 zł/MWh netto do końca 2026 roku.</td><td data-label="Co doliczamy?">Akcyzę, VAT, dystrybucję zmienną i stałą oraz abonament.</td><td data-label="Dlaczego edytowalny?">Obszary PSG mają różne stawki, a udział opłat stałych zależy od zużycia.</td></tr>
              <tr><td data-label="Nośnik"><strong>Pellet</strong></td><td data-label="Potwierdzona informacja">W sierpniu 2026 roku punkt odniesienia dla pelletu A1 wynosi około 2000 zł/t.</td><td data-label="Co doliczamy?">Dostawę, energię podajnika, czyszczenie i serwis.</td><td data-label="Dlaczego edytowalny?">Znaczne różnice regionalne, sezonowe i jakościowe.</td></tr>
              <tr><td data-label="Nośnik"><strong>Węgiel groszek</strong></td><td data-label="Potwierdzona informacja">W PGG ceny groszku luzem zaczynają się od około 1250 zł/t.</td><td data-label="Co doliczamy?">Pakowanie, dostawę, energię podajnika, komin i obsługę.</td><td data-label="Dlaczego edytowalny?">Cena zależy od kaloryczności, producenta, składu i formy dostawy.</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-cost-callout"><p><strong>Nie przepisuj samej ceny paliwa do kalkulatora.</strong> Na fakturze znajdź część zmienną zależną od kWh oraz opłaty stałe. Przy gazie używanym wyłącznie do ogrzewania cały abonament i dystrybucja stała należą do kosztu systemu. Przy prądzie sytuacja jest inna, ponieważ przyłącze i tak zasila cały dom.</p></div>
      </section>

      <section class="rk-cost-section" id="rk-cost-calculator">
        <div class="rk-cost-audit">
          <div class="rk-cost-audit-head">
            <span class="rk-cost-kicker" style="color:#79f1ff">Interaktywny kalkulator kosztu ogrzewania 2026</span>
            <h2>Porównaj pięć źródeł przy identycznym zapotrzebowaniu domu</h2>
            <p>W trybie podstawowym wystarczą powierzchnia i roczne zapotrzebowanie na ciepło. Ustawienia zaawansowane pozwalają zastąpić wszystkie presety danymi z faktury, oferty paliwa albo monitoringu urządzenia.</p>
          </div>

          <div class="rk-cost-audit-layout">
            <form class="rk-cost-audit-form" id="rk-cost-calculator-form" aria-label="Kalkulator kosztów ogrzewania domu w 2026 roku">
              <div class="rk-cost-calculator-core">
                <div class="rk-cost-field"><label for="rk-cost-area">Powierzchnia ogrzewana [m²]</label><input id="rk-cost-area" type="number" min="20" max="1000" step="5" value="150" inputmode="decimal"></div>
                <div class="rk-cost-field"><label for="rk-cost-specific">Roczne zapotrzebowanie [kWh/m²]</label><input id="rk-cost-specific" type="number" min="15" max="400" step="5" value="70" inputmode="decimal"><small class="rk-cost-field-note">To energia użytkowa na ogrzewanie, nie moc źródła w kW.</small></div>
                <div class="rk-cost-field"><label for="rk-cost-dhw">Ciepło na CWU [kWh/rok]</label><input id="rk-cost-dhw" type="number" min="0" max="30000" step="250" value="2500" inputmode="numeric"></div>
                <div class="rk-cost-field"><label for="rk-cost-years">Okres porównania [lat]</label><input id="rk-cost-years" type="number" min="1" max="25" step="1" value="10" inputmode="numeric"></div>
              </div>

              <label class="rk-cost-toggle-line"><input id="rk-cost-include-dhw" type="checkbox"><span><strong>Dodaj przygotowanie ciepłej wody użytkowej.</strong> Po zaznaczeniu podana energia CWU zostanie dodana do ogrzewania. W praktyce może wymagać osobnej sprawności, dlatego wynik pozostaje przybliżeniem.</span></label>

              <details class="rk-cost-advanced">
                <summary>Ustawienia zaawansowane — ceny, SCOP, sprawności i opłaty</summary>
                <div class="rk-cost-advanced-inner">
                  <div class="rk-cost-input-group">
                    <h3>Energia elektryczna i pompa ciepła</h3>
                    <div class="rk-cost-input-grid">
                      <div class="rk-cost-field"><label for="rk-cost-electric-price">Prąd [zł/kWh]</label><input id="rk-cost-electric-price" type="number" min="0.10" max="5" step="0.01" value="1.04" inputmode="decimal"></div>
                      <div class="rk-cost-field"><label for="rk-cost-hp-scop">SCOP / SPF pompy</label><input id="rk-cost-hp-scop" type="number" min="1" max="8" step="0.1" value="3.4" inputmode="decimal"></div>
                      <div class="rk-cost-field"><label for="rk-cost-electric-fixed">Stałe opłaty prądu [zł/rok]</label><input id="rk-cost-electric-fixed" type="number" min="0" max="10000" step="50" value="0" inputmode="numeric"><small class="rk-cost-field-note">Zwykle 0, gdy przyłącze i tak służy całemu domowi.</small></div>
                      <div class="rk-cost-field"><label for="rk-cost-hp-extra">Dodatkowe koszty PC [zł/rok]</label><input id="rk-cost-hp-extra" type="number" min="0" max="10000" step="50" value="0" inputmode="numeric"><small class="rk-cost-field-note">Opcjonalny serwis albo rezerwa naprawcza.</small></div>
                    </div>
                  </div>

                  <div class="rk-cost-input-group">
                    <h3>Kocioł gazowy</h3>
                    <div class="rk-cost-input-grid">
                      <div class="rk-cost-field"><label for="rk-cost-gas-price">Gaz zmienny [zł/kWh]</label><input id="rk-cost-gas-price" type="number" min="0.05" max="2" step="0.01" value="0.31" inputmode="decimal"></div>
                      <div class="rk-cost-field"><label for="rk-cost-gas-efficiency">Sprawność sezonowa [%]</label><input id="rk-cost-gas-efficiency" type="number" min="50" max="100" step="1" value="94" inputmode="decimal"></div>
                      <div class="rk-cost-field"><label for="rk-cost-gas-fixed">Gaz — opłaty stałe [zł/rok]</label><input id="rk-cost-gas-fixed" type="number" min="0" max="10000" step="50" value="850" inputmode="numeric"></div>
                      <div class="rk-cost-field"><label for="rk-cost-gas-extra">Dodatkowe koszty [zł/rok]</label><input id="rk-cost-gas-extra" type="number" min="0" max="10000" step="50" value="0" inputmode="numeric"><small class="rk-cost-field-note">Np. serwis i obowiązkowa obsługa komina.</small></div>
                    </div>
                  </div>

                  <div class="rk-cost-input-group">
                    <h3>Pellet A1</h3>
                    <div class="rk-cost-input-grid">
                      <div class="rk-cost-field"><label for="rk-cost-pellet-price">Pellet [zł/t]</label><input id="rk-cost-pellet-price" type="number" min="300" max="6000" step="50" value="2000" inputmode="numeric"></div>
                      <div class="rk-cost-field"><label for="rk-cost-pellet-value">Wartość opałowa [kWh/kg]</label><input id="rk-cost-pellet-value" type="number" min="2" max="7" step="0.1" value="4.8" inputmode="decimal"></div>
                      <div class="rk-cost-field"><label for="rk-cost-pellet-efficiency">Sprawność sezonowa [%]</label><input id="rk-cost-pellet-efficiency" type="number" min="40" max="100" step="1" value="85" inputmode="decimal"></div>
                      <div class="rk-cost-field"><label for="rk-cost-pellet-aux">Prąd pomocniczy [kWh/rok]</label><input id="rk-cost-pellet-aux" type="number" min="0" max="3000" step="25" value="0" inputmode="numeric"></div>
                    </div>
                  </div>

                  <div class="rk-cost-input-group">
                    <h3>Węgiel groszek</h3>
                    <div class="rk-cost-input-grid">
                      <div class="rk-cost-field"><label for="rk-cost-coal-price">Węgiel [zł/t]</label><input id="rk-cost-coal-price" type="number" min="300" max="6000" step="50" value="1400" inputmode="numeric"></div>
                      <div class="rk-cost-field"><label for="rk-cost-coal-value">Wartość opałowa [kWh/kg]</label><input id="rk-cost-coal-value" type="number" min="3" max="10" step="0.1" value="7.0" inputmode="decimal"></div>
                      <div class="rk-cost-field"><label for="rk-cost-coal-efficiency">Sprawność sezonowa [%]</label><input id="rk-cost-coal-efficiency" type="number" min="35" max="100" step="1" value="80" inputmode="decimal"></div>
                      <div class="rk-cost-field"><label for="rk-cost-coal-aux">Prąd pomocniczy [kWh/rok]</label><input id="rk-cost-coal-aux" type="number" min="0" max="3000" step="25" value="0" inputmode="numeric"></div>
                    </div>
                  </div>
                </div>
              </details>

              <div class="rk-cost-assumption"><strong>Porównanie eksploatacyjne:</strong> kalkulator nie dolicza automatycznie ceny urządzeń, finansowania, komina, magazynu paliwa, pracy własnej, napraw ani lokalnych ograniczeń emisyjnych. Własny koszt serwisu możesz dopisać w polach zaawansowanych.</div>
              <button class="rk-cost-audit-reset" id="rk-cost-calculator-reset" type="button">Przywróć ceny i założenia z 2026 roku</button>
            </form>

            <div class="rk-cost-audit-output" aria-live="polite">
              <div class="rk-cost-metrics rk-cost-metrics-4">
                <div class="rk-cost-metric"><small>Użyteczne ciepło rocznie</small><strong id="rk-cost-result-heat">10 500 kWh</strong></div>
                <div class="rk-cost-metric"><small>Najniższy koszt energii</small><strong id="rk-cost-result-winner">Węgiel</strong></div>
                <div class="rk-cost-metric"><small>Roczny koszt zwycięzcy</small><strong id="rk-cost-result-cheapest">2625 zł</strong></div>
                <div class="rk-cost-metric"><small>Wybrany okres analizy</small><strong id="rk-cost-result-period">10 lat</strong></div>
              </div>

              <div class="rk-cost-audit-status" id="rk-cost-calculator-status">
                <strong id="rk-cost-calculator-title">Ranking dotyczy wyłącznie wprowadzonych kosztów eksploatacyjnych</strong>
                <span id="rk-cost-calculator-copy">Najtańsze paliwo nie musi oznaczać najkorzystniejszego systemu po uwzględnieniu inwestycji, obsługi, emisji, miejsca i lokalnych przepisów.</span>
              </div>

              <div class="rk-cost-ranking" id="rk-cost-ranking" aria-label="Ranking rocznych kosztów ogrzewania">
                <div class="rk-cost-source-row" id="rk-cost-row-hp"><div class="rk-cost-source-name"><span id="rk-cost-rank-hp">Miejsce 2</span><strong>Pompa ciepła powietrze–woda</strong></div><div><div class="rk-cost-rank-track"><i class="rk-cost-rank-bar" id="rk-cost-bar-hp"></i></div><small id="rk-cost-range-hp">Zakres ceny paliwa ±20%</small></div><div class="rk-cost-source-usage"><span>Zakup energii</span><strong id="rk-cost-usage-hp">3088 kWh</strong></div><div class="rk-cost-source-total"><span>Rocznie</span><strong id="rk-cost-total-hp">3212 zł</strong></div></div>
                <div class="rk-cost-source-row" id="rk-cost-row-gas"><div class="rk-cost-source-name"><span id="rk-cost-rank-gas">Miejsce 3</span><strong>Kocioł gazowy kondensacyjny</strong></div><div><div class="rk-cost-rank-track"><i class="rk-cost-rank-bar" id="rk-cost-bar-gas"></i></div><small id="rk-cost-range-gas">Zakres ceny paliwa ±20%</small></div><div class="rk-cost-source-usage"><span>Zakup gazu</span><strong id="rk-cost-usage-gas">11 170 kWh</strong></div><div class="rk-cost-source-total"><span>Rocznie</span><strong id="rk-cost-total-gas">4313 zł</strong></div></div>
                <div class="rk-cost-source-row" id="rk-cost-row-pellet"><div class="rk-cost-source-name"><span id="rk-cost-rank-pellet">Miejsce 4</span><strong>Kocioł na pellet</strong></div><div><div class="rk-cost-rank-track"><i class="rk-cost-rank-bar" id="rk-cost-bar-pellet"></i></div><small id="rk-cost-range-pellet">Zakres ceny paliwa ±20%</small></div><div class="rk-cost-source-usage"><span>Zużycie paliwa</span><strong id="rk-cost-usage-pellet">2,57 t</strong></div><div class="rk-cost-source-total"><span>Rocznie</span><strong id="rk-cost-total-pellet">5147 zł</strong></div></div>
                <div class="rk-cost-source-row" id="rk-cost-row-coal"><div class="rk-cost-source-name"><span id="rk-cost-rank-coal">Miejsce 1</span><strong>Kocioł na węgiel groszek</strong></div><div><div class="rk-cost-rank-track"><i class="rk-cost-rank-bar" id="rk-cost-bar-coal"></i></div><small id="rk-cost-range-coal">Zakres ceny paliwa ±20%</small></div><div class="rk-cost-source-usage"><span>Zużycie paliwa</span><strong id="rk-cost-usage-coal">1,88 t</strong></div><div class="rk-cost-source-total"><span>Rocznie</span><strong id="rk-cost-total-coal">2625 zł</strong></div></div>
                <div class="rk-cost-source-row" id="rk-cost-row-electric"><div class="rk-cost-source-name"><span id="rk-cost-rank-electric">Miejsce 5</span><strong>Ogrzewanie elektryczne oporowe</strong></div><div><div class="rk-cost-rank-track"><i class="rk-cost-rank-bar" id="rk-cost-bar-electric"></i></div><small id="rk-cost-range-electric">Zakres ceny energii ±20%</small></div><div class="rk-cost-source-usage"><span>Zakup energii</span><strong id="rk-cost-usage-electric">10 500 kWh</strong></div><div class="rk-cost-source-total"><span>Rocznie</span><strong id="rk-cost-total-electric">10 920 zł</strong></div></div>
              </div>

              <div class="rk-cost-grid-2">
                <div class="rk-cost-card"><h3>Koszt 1 kWh użytecznego ciepła</h3><p id="rk-cost-unit-summary">Pompa ciepła: 0,31 zł • gaz: 0,41 zł • pellet: 0,49 zł • węgiel: 0,25 zł • prąd: 1,04 zł.</p></div>
                <div class="rk-cost-card"><h3>Koszt w wybranym okresie</h3><p id="rk-cost-period-summary">Wynik zakłada stałe ceny i nie uwzględnia inflacji, dyskonta ani wymiany urządzeń.</p></div>
              </div>

              <div class="rk-cost-result-note" id="rk-cost-result-note"><strong>Wrażliwość ceny:</strong> pod każdym źródłem pokazujemy zakres, jaki powstaje po zmianie ceny nośnika o ±20%. Opłaty stałe pozostają bez zmian.</div>
              <ul class="rk-cost-audit-list" id="rk-cost-calculator-list"></ul>

              <div class="rk-cost-tool-actions">
                <button class="rk-cost-tool-button is-primary" id="rk-cost-copy" type="button">Kopiuj wyniki porównania</button>
                <button class="rk-cost-tool-button" id="rk-cost-print" type="button">Drukuj konfigurację</button>
              </div>
              <p class="rk-cost-copy-status" id="rk-cost-copy-status" aria-live="polite"></p>
            </div>
          </div>
          <div class="rk-cost-tool-note"><strong>Zakres narzędzia:</strong> kalkulator porównuje energię użytkową z energią kupowaną. Nie wykonuje OZC, nie prognozuje pogody i nie wyznacza SCOP konkretnej pompy. Jeżeli dodajesz CWU, używasz jednego uśrednionego współczynnika dla całego zakresu — w rzeczywistej analizie CO i CWU warto rozdzielić.</div>
        </div>

        <div class="rk-cost-inline-cta">
          <span class="rk-cost-kicker" style="color:#79f1ff">Założony SCOP trzeba jeszcze osiągnąć w rzeczywistym domu</span>
          <h3>Twój wynik mocno zmienia się po zmianie SCOP albo temperatury pracy?</h3>
          <p>Kalkulator przelicza rachunek, ale nie ustali, czy każde pomieszczenie otrzyma wymaganą moc przy niskiej temperaturze zasilania. O tym decydują straty ciepła, opór okładziny, rozstaw rur, długości pętli, przepływy i opory hydrauliczne. Projekt łączy te parametry i pokazuje, czy przyjęta sprawność źródła jest realnym celem.</p>
          <a class="rk-cost-cta-button rk-cost-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt niskotemperaturowego ogrzewania podłogowego</a>
          <small class="rk-cost-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
        </div>
      </section>

      <section class="rk-cost-section" id="rk-cost-method">
        <span class="rk-cost-kicker">Jedna metoda dla wszystkich źródeł</span>
        <h2>Jak poprawnie policzyć roczny koszt ogrzewania?</h2>
        <p class="rk-cost-lead">Najpierw określamy ciepło potrzebne budynkowi, potem dzielimy je przez sezonową sprawność źródła, a na końcu mnożymy energię kupowaną przez cenę nośnika. Dopiero później dodajemy opłaty stałe i inne rzeczywiste koszty.</p>

        <div class="rk-cost-formulas">
          <div class="rk-cost-formula"><span>Energia użytkowa</span><strong>Q<sub>H</sub> = A × EU</strong><p>Powierzchnia ogrzewana razy roczne zapotrzebowanie jednostkowe. Przykład: 150 m² × 70 kWh/m² = 10 500 kWh.</p></div>
          <div class="rk-cost-formula"><span>Pompa ciepła</span><strong>E<sub>el</sub> = Q<sub>H</sub> / SCOP</strong><p>Przy 10 500 kWh i SCOP 3,4 pobór energii wynosi orientacyjnie 3088 kWh.</p></div>
          <div class="rk-cost-formula"><span>Kocioł</span><strong>E<sub>paliwa</sub> = Q<sub>H</sub> / η<sub>sez</sub></strong><p>Przy sprawności gazowej 94% potrzeba około 11 170 kWh energii w paliwie.</p></div>
        </div>

        <div class="rk-cost-concepts">
          <div class="rk-cost-concept"><b>1</b><h3>Koszt zmienny</h3><p>Rośnie wraz ze zużyciem. Obejmuje energię czynną, zmienną dystrybucję, gaz, pellet lub węgiel i powinien korzystać z jednostek zgodnych z fakturą.</p></div>
          <div class="rk-cost-concept"><b>2</b><h3>Koszt stały</h3><p>Abonament, stała dystrybucja, opłaty sieciowe lub inne pozycje niezależne bezpośrednio od ilości ciepła. Przy małym zużyciu mocno zwiększają koszt jednej kWh.</p></div>
          <div class="rk-cost-concept"><b>3</b><h3>Koszt całkowity</h3><p>Energia, opłaty stałe, serwis, naprawy, finansowanie i inwestycja. Ranking samego paliwa nie odpowiada automatycznie na pytanie, który system jest najlepszy.</p></div>
        </div>

        <div class="rk-cost-callout"><p><strong>Moc w kW nie jest energią w kWh.</strong> Projektowa strata 7 kW opisuje warunki obliczeniowej zimy. Nie oznacza, że urządzenie przez cały rok pobiera 7 kW. Roczny rachunek wymaga energii sezonowej, a dobór mocy — obliczenia obciążenia cieplnego.</p></div>
      </section>

      <section class="rk-cost-section" id="rk-cost-demand">
        <span class="rk-cost-kicker">Metraż nie wystarcza</span>
        <h2>Jakie zapotrzebowanie na ciepło wpisać do kalkulatora?</h2>
        <p class="rk-cost-lead">Najlepiej wykorzystać wynik obliczeń energetycznych albo rzeczywiste zużycie skorygowane o sprawność starego źródła. Poniższe wartości służą wyłącznie do budowania scenariuszy.</p>

        <div class="rk-cost-table-wrap">
          <table>
            <thead><tr><th>Scenariusz</th><th>Roboczy zakres EU</th><th>Dom 150 m²</th><th>Jak rozumieć wynik?</th></tr></thead>
            <tbody>
              <tr><td data-label="Scenariusz"><strong>Bardzo dobry standard</strong></td><td data-label="Roboczy zakres EU">około 40 kWh/m²·rok</td><td data-label="Dom 150 m²">6000 kWh/rok</td><td data-label="Jak rozumieć wynik?">Nowy, szczelny i dobrze zaizolowany budynek z efektywną wentylacją.</td></tr>
              <tr><td data-label="Scenariusz"><strong>Nowy lub dobrze zmodernizowany</strong></td><td data-label="Roboczy zakres EU">około 70 kWh/m²·rok</td><td data-label="Dom 150 m²">10 500 kWh/rok</td><td data-label="Jak rozumieć wynik?">Dom o dobrym standardzie, ale niekoniecznie budynek o minimalnym zużyciu.</td></tr>
              <tr><td data-label="Scenariusz"><strong>Starszy po częściowej modernizacji</strong></td><td data-label="Roboczy zakres EU">około 120 kWh/m²·rok</td><td data-label="Dom 150 m²">18 000 kWh/rok</td><td data-label="Jak rozumieć wynik?">Wynik może być niższy albo wyższy zależnie od okien, wentylacji i zakresu docieplenia.</td></tr>
              <tr><td data-label="Scenariusz"><strong>Budynek o dużych stratach</strong></td><td data-label="Roboczy zakres EU">około 180 kWh/m²·rok</td><td data-label="Dom 150 m²">27 000 kWh/rok</td><td data-label="Jak rozumieć wynik?">Przed wymianą źródła warto porównać koszt termomodernizacji i modernizacji instalacji.</td></tr>
            </tbody>
          </table>
        </div>

        <p>Izolacja podłogi, ścian i dachu oraz szczelność mają większy wpływ na ilość potrzebnego ciepła niż nazwa źródła. Zobacz osobne porównanie <a href="https://projekt-ogrzewania.pl/jakie-sa-najlepsze-sposoby-izolacji-pod-ogrzewanie-podlogowe/">izolacji pod ogrzewanie podłogowe</a>.</p>
      </section>

      <section class="rk-cost-section" id="rk-cost-heatpump">
        <span class="rk-cost-kicker">Liczy się cały sezon</span>
        <h2>Ile kosztuje ogrzewanie pompą ciepła w 2026 roku?</h2>
        <p class="rk-cost-lead">Nie stosujemy jednego katalogowego COP 4. Kalkulator korzysta z SCOP albo SPF, czyli relacji pomiędzy ciepłem dostarczonym a energią elektryczną pobraną w całym analizowanym okresie.</p>

        <div class="rk-cost-grid-3">
          <div class="rk-cost-card"><span class="rk-cost-card-number">3,4</span><h3>Roboczy SCOP</h3><p>Jako punkt startowy przyjmujemy 3,4, zgodny ze średnim wynikiem powietrznych pomp ciepła monitorowanych w badaniu terenowym Fraunhofer ISE. Nie jest to gwarancja dla polskiego domu.</p></div>
          <div class="rk-cost-card"><span class="rk-cost-card-number">T<sub>z</sub></span><h3>Temperatura zasilania</h3><p>Niższa temperatura pracy zwykle sprzyja sprawności, ale musi wystarczyć do pokrycia strat najtrudniejszego pomieszczenia przy danej okładzinie i powierzchni czynnej.</p></div>
          <div class="rk-cost-card"><span class="rk-cost-card-number">AUX</span><h3>Grzałki i pompy</h3><p>Własny SPF powinien uwzględniać uzgodniony zakres urządzeń. Nie wolno porównywać wartości obejmującej grzałkę i pompy z innym wynikiem liczonym wyłącznie dla sprężarki.</p></div>
        </div>

        <div class="rk-cost-truth" style="margin-top:24px"><h3>SCOP 4,5 z etykiety nie jest obietnicą rachunku</h3><p>Rzeczywisty wynik zależy od klimatu, temperatury wody, odszraniania, CWU, doboru mocy, przepływów, taktowania i sterowania. Kalkulator pozwala sprawdzić, jak roczny koszt zmieni się przy SCOP 2,5, 3,4 albo 4,2.</p></div>
      </section>

      <section class="rk-cost-section" id="rk-cost-gas">
        <span class="rk-cost-kicker">Cena paliwa to tylko część rachunku</span>
        <h2>Ile kosztuje ogrzewanie gazem w 2026 roku?</h2>
        <p class="rk-cost-lead">Taryfa sprzedażowa myORLEN utrzymuje cenę gazu na poziomie 197,29 zł/MWh netto do końca 2026 roku. Odbiorca ogrzewający dom płaci jednak również dystrybucję zmienną, dystrybucję stałą, abonament, podatki i koszt energii elektrycznej kotła.</p>

        <div class="rk-cost-decision is-two">
          <div class="rk-cost-decision-card"><b>KOSZT ZMIENNY</b><h3>Około 0,30–0,32 zł/kWh brutto</h3><p>To orientacyjne przeliczenie paliwa i zmiennej dystrybucji w grupie W‑3.6 na podstawie taryf obowiązujących w 2026 roku. Dokładna stawka zależy od obszaru PSG i pozycji widocznych na fakturze.</p></div>
          <div class="rk-cost-decision-card"><b>KOSZT STAŁY</b><h3>Około 650–1030 zł rocznie</h3><p>Zakres wynika z regionalnych stawek dystrybucyjnych W‑3.6 oraz abonamentu. Jeżeli przyłącze gazowe służy tylko ogrzewaniu, opłaty te powinny znaleźć się w porównaniu.</p></div>
        </div>

        <p>Kocioł kondensacyjny może zasilać ogrzewanie podłogowe tym samym niskim parametrem, który jest korzystny dla pompy ciepła. Nie potrzebuje automatycznie wyższej temperatury. Niski powrót pomaga utrzymać kondensację, a znaczenie mają także moc minimalna, modulacja i regulacja pogodowa. Więcej w poradniku o <a href="https://projekt-ogrzewania.pl/kociol-gazowy/">doborze kotła gazowego</a>.</p>
      </section>

      <section class="rk-cost-section" id="rk-cost-solid">
        <span class="rk-cost-kicker">Cena za tonę nie mówi wszystkiego</span>
        <h2>Pellet i węgiel — koszt paliwa, sprawność i obsługa</h2>
        <p class="rk-cost-lead">Paliwa stałe porównujemy przez wartość opałową oraz sezonową sprawność kotła. Tona wilgotnego, niskokalorycznego lub źle spalanego paliwa nie dostarczy tej samej ilości użytecznego ciepła co paliwo o stabilnych parametrach.</p>

        <div class="rk-cost-table-wrap">
          <table>
            <thead><tr><th>Element</th><th>Pellet A1</th><th>Węgiel groszek</th><th>Co często jest pomijane?</th></tr></thead>
            <tbody>
              <tr><td data-label="Element"><strong>Cena robocza</strong></td><td data-label="Pellet A1">2000 zł/t</td><td data-label="Węgiel groszek">1400 zł/t</td><td data-label="Co często jest pomijane?">Dostawa, paleta, workowanie i sezonowe wahania cen.</td></tr>
              <tr><td data-label="Element"><strong>Wartość opałowa</strong></td><td data-label="Pellet A1">4,8 kWh/kg</td><td data-label="Węgiel groszek">7,0 kWh/kg</td><td data-label="Co często jest pomijane?">Parametr trzeba odczytać z dokumentacji konkretnej partii.</td></tr>
              <tr><td data-label="Element"><strong>Sprawność sezonowa</strong></td><td data-label="Pellet A1">85%</td><td data-label="Węgiel groszek">80%</td><td data-label="Co często jest pomijane?">Rozpalanie, postoje, zabrudzenie wymiennika i praca przy małym obciążeniu.</td></tr>
              <tr><td data-label="Element"><strong>Obsługa</strong></td><td data-label="Pellet A1">Uzupełnianie zasobnika, popiół i czyszczenie.</td><td data-label="Węgiel groszek">Więcej magazynowania, popiołu, pyłu i regularnej obsługi.</td><td data-label="Co często jest pomijane?">Czas użytkownika nie ma ceny na fakturze, ale jest realnym kosztem wyboru.</td></tr>
              <tr><td data-label="Element"><strong>Ograniczenia</strong></td><td data-label="Pellet A1">Wymagania jakości paliwa i lokalnych przepisów.</td><td data-label="Węgiel groszek">Uchwały antysmogowe, terminy wymiany i ograniczenia emisyjne.</td><td data-label="Co często jest pomijane?">Niska cena paliwa nie gwarantuje możliwości legalnej eksploatacji przez cały okres analizy.</td></tr>
            </tbody>
          </table>
        </div>
      </section>

      <section class="rk-cost-section" id="rk-cost-electric">
        <span class="rk-cost-kicker">Sprawność w budynku bliska 1:1</span>
        <h2>Ile kosztuje bezpośrednie ogrzewanie elektryczne?</h2>
        <p class="rk-cost-lead">Mata, kabel, folia, grzejnik konwektorowy i kocioł elektryczny zamieniają pobraną energię na ciepło bez efektu sprężarkowego. Dla 10 500 kWh użytecznego ciepła i ceny 1,04 zł/kWh koszt zmienny wyniesie około 10 920 zł rocznie.</p>

        <div class="rk-cost-grid-3">
          <div class="rk-cost-card"><span class="rk-cost-card-number">G11</span><h3>Jedna cena przez dobę</h3><p>Prosty punkt odniesienia, ale nie zawsze najlepszy dla ogrzewania. Finalna cena zależy od sprzedawcy, OSD i udziału opłat stałych.</p></div>
          <div class="rk-cost-card"><span class="rk-cost-card-number">G12</span><h3>Dwie strefy</h3><p>Niższa cena w wybranych godzinach pomaga tylko w takim zakresie, w jakim zużycie rzeczywiście da się przenieść bez utraty komfortu.</p></div>
          <div class="rk-cost-card"><span class="rk-cost-card-number">1,0</span><h3>Brak SCOP</h3><p>Ogrzewanie oporowe nie wytwarza trzech lub czterech kWh ciepła z jednej kWh prądu. Podłoga może zwiększyć komfort, ale nie tworzy sprawności pompy ciepła.</p></div>
        </div>
      </section>

      <section class="rk-cost-section" id="rk-cost-floor">
        <span class="rk-cost-kicker">Odbiornik wpływa na źródło</span>
        <h2>Czy ogrzewanie podłogowe obniża koszt ogrzewania?</h2>
        <p class="rk-cost-lead">Podłogówka nie zmienia izolacyjności ścian ani okien. Może natomiast umożliwić pracę przy niższej temperaturze wody, poprawić SCOP pompy ciepła, ułatwić kondensację kotła i ograniczyć przegrzewanie przy prawidłowej regulacji.</p>

        <div class="rk-cost-factors">
          <div class="rk-cost-factor"><b>01</b><h3>Rozstaw rur</h3><p>Musi przenieść wymaganą moc przy przyjętej temperaturze zasilania i dopuszczalnej temperaturze powierzchni.</p></div>
          <div class="rk-cost-factor"><b>02</b><h3>Okładzina</h3><p>Grube drewno, podkład lub wykładzina zwiększają opór i mogą wymagać wyższej temperatury wody.</p></div>
          <div class="rk-cost-factor"><b>03</b><h3>Przepływy</h3><p>Zbyt mały przepływ albo niezrównoważone pętle prowadzą do niedogrzania i podnoszenia krzywej grzewczej.</p></div>
          <div class="rk-cost-factor"><b>04</b><h3>Sterowanie</h3><p>Regulacja pogodowa dopasowuje temperaturę do warunków zamiast stale pracować na zawyżonym parametrze.</p></div>
          <div class="rk-cost-factor"><b>05</b><h3>Izolacja podłogi</h3><p>Ogranicza strumień ciepła w niepożądanym kierunku, ale jej grubość wynika z całej przegrody.</p></div>
          <div class="rk-cost-factor"><b>06</b><h3>Bezwładność</h3><p>Stabilna praca może być korzystna, lecz gwałtowne harmonogramy i przegrzewanie słoneczne wymagają dobrej strategii.</p></div>
        </div>

        <p>Szerzej mechanizm opisujemy w artykule <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-jest-energooszczedne/">czy ogrzewanie podłogowe jest energooszczędne</a>.</p>
      </section>

      <section class="rk-cost-section" id="rk-cost-examples">
        <span class="rk-cost-kicker">Jednakowe założenia dla każdego metrażu</span>
        <h2>Koszt ogrzewania domu 100, 150 i 200 m²</h2>
        <p class="rk-cost-lead">Tabela wykorzystuje 70 kWh/m² rocznie, SCOP 3,4, prąd 1,04 zł/kWh, gaz 0,31 zł/kWh ze stałą opłatą 850 zł, pellet 2000 zł/t oraz węgiel 1400 zł/t. Nie obejmuje CWU, serwisu ani kosztów inwestycji.</p>

        <div class="rk-cost-table-wrap">
          <table>
            <thead><tr><th>Powierzchnia</th><th>Ciepło roczne</th><th>Pompa ciepła</th><th>Gaz</th><th>Pellet</th><th>Węgiel</th><th>Prąd oporowy</th></tr></thead>
            <tbody>
              <tr><td data-label="Powierzchnia"><strong>100 m²</strong></td><td data-label="Ciepło roczne">7000 kWh</td><td data-label="Pompa ciepła">około 2140 zł</td><td data-label="Gaz">około 3160 zł</td><td data-label="Pellet">około 3430 zł</td><td data-label="Węgiel">około 1750 zł</td><td data-label="Prąd oporowy">około 7280 zł</td></tr>
              <tr><td data-label="Powierzchnia"><strong>150 m²</strong></td><td data-label="Ciepło roczne">10 500 kWh</td><td data-label="Pompa ciepła">około 3210 zł</td><td data-label="Gaz">około 4310 zł</td><td data-label="Pellet">około 5150 zł</td><td data-label="Węgiel">około 2630 zł</td><td data-label="Prąd oporowy">około 10 920 zł</td></tr>
              <tr><td data-label="Powierzchnia"><strong>200 m²</strong></td><td data-label="Ciepło roczne">14 000 kWh</td><td data-label="Pompa ciepła">około 4280 zł</td><td data-label="Gaz">około 5470 zł</td><td data-label="Pellet">około 6860 zł</td><td data-label="Węgiel">około 3500 zł</td><td data-label="Prąd oporowy">około 14 560 zł</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-cost-callout is-warning"><p><strong>Nie wybieraj źródła wyłącznie z najniższej komórki tabeli.</strong> Węgiel może mieć niski koszt samego paliwa, a jednocześnie wymagać największej obsługi, miejsca, komina i sprawdzenia lokalnych zakazów. Pompa ciepła może mieć wyższy koszt inwestycji, ale oferować bezobsługowość i brak lokalnej emisji. Tabela nie nadaje ceny tym różnicom.</p></div>
      </section>

      <section class="rk-cost-section" id="rk-cost-pv">
        <span class="rk-cost-kicker">Własna energia nie zawsze kosztuje zero</span>
        <h2>Fotowoltaika, taryfa nocna i koszt pompy ciepła</h2>
        <p class="rk-cost-lead">Fotowoltaika nie podnosi SCOP i nie zmniejsza zapotrzebowania domu. Może ograniczyć energię kupowaną, lecz zimowa produkcja jest mała, a wartość energii zależy od autokonsumpcji, net-billingu i alternatywnej wartości oddania jej do sieci.</p>

        <div class="rk-cost-grid-3">
          <div class="rk-cost-card"><span class="rk-cost-card-number">PV</span><h3>Autokonsumpcja</h3><p>Do obliczeń wprowadzaj tylko tę część prądu pompy, która rzeczywiście pokrywa się czasowo z produkcją albo jest dostępna z magazynu.</p></div>
          <div class="rk-cost-card"><span class="rk-cost-card-number">G12</span><h3>Tańsza strefa</h3><p>Nie zakładaj, że całe ogrzewanie można przenieść na noc. Pompa ma przede wszystkim pokrywać straty domu i pracować w korzystnym zakresie.</p></div>
          <div class="rk-cost-card"><span class="rk-cost-card-number">0 zł?</span><h3>Koszt alternatywny</h3><p>Energia z PV mogłaby zostać wykorzystana przez inne urządzenie albo rozliczona w systemie prosumenckim. W analizie ekonomicznej nie zawsze ma wartość zerową.</p></div>
        </div>
      </section>

      <section class="rk-cost-section" id="rk-cost-total">
        <span class="rk-cost-kicker">Rachunek roczny to nie pełny koszt posiadania</span>
        <h2>Inwestycja, serwis, naprawy i czas użytkownika</h2>
        <p class="rk-cost-lead">Porównanie eksploatacyjne odpowiada na pytanie, ile kosztuje dostarczenie ciepła przy danych cenach. Decyzja inwestycyjna wymaga dodatkowo ceny kompletnej instalacji, żywotności urządzeń, finansowania i obsługi.</p>

        <div class="rk-cost-table-wrap">
          <table>
            <thead><tr><th>Kategoria</th><th>Pompa ciepła</th><th>Gaz</th><th>Pellet / węgiel</th><th>Prąd oporowy</th></tr></thead>
            <tbody>
              <tr><td data-label="Kategoria"><strong>Inwestycja</strong></td><td data-label="Pompa ciepła">Urządzenie, hydraulika, ewentualny bufor, zasobnik i modernizacja odbiorników.</td><td data-label="Gaz">Kocioł, przyłącze, komin, hydraulika i formalności.</td><td data-label="Pellet / węgiel">Kocioł, komin, magazyn paliwa, zabezpieczenia i transport.</td><td data-label="Prąd oporowy">Zwykle prostsza instalacja, ale trzeba sprawdzić moc przyłączeniową.</td></tr>
              <tr><td data-label="Kategoria"><strong>Obsługa</strong></td><td data-label="Pompa ciepła">Niewielka bieżąca obsługa.</td><td data-label="Gaz">Niewielka, z okresowym serwisem i kontrolą komina.</td><td data-label="Pellet / węgiel">Dostawy, składowanie, zasobnik, czyszczenie i popiół.</td><td data-label="Prąd oporowy">Praktycznie bezobsługowe źródło miejscowe.</td></tr>
              <tr><td data-label="Kategoria"><strong>Ryzyko cenowe</strong></td><td data-label="Pompa ciepła">Cena prądu i rzeczywisty SCOP.</td><td data-label="Gaz">Cena paliwa, sieci i przyszłe regulacje.</td><td data-label="Pellet / węgiel">Lokalna dostępność, jakość, sezon i regulacje emisyjne.</td><td data-label="Prąd oporowy">Pełna ekspozycja na cenę każdej kupowanej kWh.</td></tr>
            </tbody>
          </table>
        </div>
      </section>

      <section class="rk-cost-section" id="rk-cost-checklist">
        <span class="rk-cost-kicker">Osiem kroków przed wyciągnięciem wniosku</span>
        <h2>Jak porównać koszty ogrzewania bez manipulowania wynikiem?</h2>
        <div class="rk-cost-steps">
          <div class="rk-cost-step"><h3>Wyznacz roczne ciepło potrzebne budynkowi</h3><p>Skorzystaj z obliczeń energetycznych albo skorygowanego zużycia z poprzednich sezonów. Nie zastępuj tej wartości samym metrażem.</p></div>
          <div class="rk-cost-step"><h3>Przepisz ceny zmienne z aktualnych rachunków</h3><p>Oddziel koszt zależny od pobranej kWh od abonamentu i opłat stałych. Użyj tej samej podstawy brutto lub netto dla wszystkich źródeł.</p></div>
          <div class="rk-cost-step"><h3>Użyj SCOP albo sprawności sezonowej</h3><p>Dla pompy ciepła nie stosuj chwilowego COP, a dla kotła sprawności z pojedynczego punktu pracy. Zakres obliczenia musi być porównywalny.</p></div>
          <div class="rk-cost-step"><h3>Dodaj opłaty stałe właściwe dla systemu</h3><p>Przyłącze gazowe używane wyłącznie do ogrzewania generuje koszt przez cały rok. Opłat prądu nie przypisuj podwójnie, jeśli zasilają cały dom.</p></div>
          <div class="rk-cost-step"><h3>Uwzględnij energię pomocniczą</h3><p>Sprawdź pompy, podajniki, grzałki, wentylatory, automatykę i urządzenia pracujące również poza sezonem grzewczym.</p></div>
          <div class="rk-cost-step"><h3>Oddziel ogrzewanie pomieszczeń od CWU</h3><p>Ciepła woda może być przygotowywana przy innej temperaturze i sprawności. Nie przypisuj całego zużycia jednemu SCOP bez zaznaczenia uproszczenia.</p></div>
          <div class="rk-cost-step"><h3>Sprawdź wrażliwość na ceny i sprawność</h3><p>Przelicz wariant przy cenach nośnika niższych i wyższych o 20% oraz przy słabszym SCOP. Ranking oparty na jednym punkcie jest nietrwały.</p></div>
          <div class="rk-cost-step"><h3>Porównaj pełny koszt posiadania</h3><p>Do rachunku energii dodaj inwestycję, serwis, finansowanie, naprawy, komin, miejsce na paliwo, obsługę oraz ograniczenia prawne.</p></div>
        </div>
      </section>

      <section class="rk-cost-section" id="rk-cost-errors">
        <span class="rk-cost-kicker">Najczęstsze skróty prowadzące do złego rankingu</span>
        <h2>Czego nie wolno robić przy porównywaniu kosztów?</h2>
        <div class="rk-cost-errors">
          <div class="rk-cost-error"><b>BŁĄD 01</b><h3>Jednego zużycia 50 kWh/m² dla każdego domu</h3><p>To scenariusz, nie uniwersalna cecha budynku. Dwa domy o tym samym metrażu mogą potrzebować zupełnie innej ilości ciepła.</p></div>
          <div class="rk-cost-error"><b>BŁĄD 02</b><h3>COP 4 wpisanego jako wynik całego sezonu</h3><p>Chwilowy parametr laboratoryjny nie opisuje mrozów, CWU, odszraniania, grzałek, taktowania ani temperatury instalacji.</p></div>
          <div class="rk-cost-error"><b>BŁĄD 03</b><h3>Ceny samego gazu bez dystrybucji i abonamentu</h3><p>Przy małym zapotrzebowaniu opłaty stałe mogą znacząco zwiększyć koszt jednej kWh użytecznego ciepła.</p></div>
          <div class="rk-cost-error"><b>BŁĄD 04</b><h3>Założenia, że prąd z fotowoltaiki jest zawsze darmowy</h3><p>Zimowa produkcja, autokonsumpcja i sposób rozliczenia określają realną wartość energii dostępnej dla pompy.</p></div>
          <div class="rk-cost-error"><b>BŁĄD 05</b><h3>Porównania paliwa bez wartości opałowej</h3><p>Tańsza tona może dostarczyć mniej energii, zwiększyć zużycie i pogorszyć warunki spalania.</p></div>
          <div class="rk-cost-error"><b>BŁĄD 06</b><h3>Ogłaszania jednego zwycięzcy dla całej Polski</h3><p>Różne budynki, taryfy, instalacje, lokalne przepisy i oczekiwania dotyczące obsługi prowadzą do różnych decyzji.</p></div>
        </div>
      </section>

      <section class="rk-cost-section" id="rk-cost-faq">
        <span class="rk-cost-kicker">Najczęstsze pytania</span>
        <h2>Koszt ogrzewania domu w 2026 roku — FAQ</h2>
        <div class="rk-cost-faq">
          <details><summary>Ile kosztuje ogrzewanie domu 150 m² w 2026 roku?</summary><div class="rk-cost-faq-answer"><p>Dla przykładowego zapotrzebowania 70 kWh/m² dom potrzebuje 10 500 kWh użytecznego ciepła rocznie. Przy presetach artykułu koszt wynosi około 3210 zł dla pompy ciepła, 4310 zł dla gazu z opłatami stałymi, 5150 zł dla pelletu, 2630 zł dla węgla i 10 920 zł dla prądu oporowego. Nie obejmuje to CWU, serwisu ani inwestycji.</p></div></details>
          <details><summary>Ile kosztuje ogrzewanie pompą ciepła w 2026 roku?</summary><div class="rk-cost-faq-answer"><p>Koszt zależy od ciepła potrzebnego budynkowi, ceny energii oraz rzeczywistego SCOP. Dla 10 500 kWh ciepła, ceny prądu 1,04 zł/kWh i SCOP 3,4 koszt zmienny wynosi około 3210 zł rocznie. Grzałki, CWU, opłaty stałe i serwis mogą zmienić wynik.</p></div></details>
          <details><summary>Ile kosztuje ogrzewanie gazem w 2026 roku?</summary><div class="rk-cost-faq-answer"><p>Dla 10 500 kWh użytecznego ciepła, sprawności sezonowej 94%, zmiennego kosztu gazu 0,31 zł/kWh oraz 850 zł opłat stałych wynik wynosi około 4310 zł rocznie. Dokładna kwota zależy od obszaru dystrybucyjnego, taryfy, abonamentu i zużycia.</p></div></details>
          <details><summary>Co jest tańsze w 2026 roku: pompa ciepła czy gaz?</summary><div class="rk-cost-faq-answer"><p>Przy cenach i sprawnościach przyjętych w artykule pompa ciepła ma niższy koszt bieżącej energii. Wynik nie jest jednak gwarantowany. Słaby SCOP, wysoka cena prądu, niskie zużycie ciepła albo inne opłaty mogą zmienić różnicę, dlatego należy wpisać własne dane.</p></div></details>
          <details><summary>Ile kosztuje 1 kWh prądu do ogrzewania w 2026 roku?</summary><div class="rk-cost-faq-answer"><p>URE zatwierdził średnią cenę energii czynnej 495,16 zł/MWh, ale rachunek obejmuje także dystrybucję, podatki i opłaty. W kalkulatorze przyjęto roboczo 1,04 zł/kWh brutto kosztu zmiennego. Wartość należy zastąpić ceną wynikającą z własnej taryfy i faktury.</p></div></details>
          <details><summary>Ile kosztuje 1 kWh gazu do ogrzewania domu?</summary><div class="rk-cost-faq-answer"><p>Po połączeniu taryfowej ceny paliwa i zmiennej dystrybucji dla grupy W‑3.6 otrzymujemy orientacyjnie około 0,30–0,32 zł/kWh brutto. Osobno występują abonament i opłata dystrybucyjna stała, które zależą od regionu i mogą wynosić łącznie kilkaset złotych rocznie.</p></div></details>
          <details><summary>Ile pelletu potrzeba do ogrzania domu?</summary><div class="rk-cost-faq-answer"><p>Dla 10 500 kWh użytecznego ciepła, wartości opałowej 4,8 kWh/kg i sprawności sezonowej 85% potrzeba około 2,57 t pelletu. Przy cenie 2000 zł/t sam koszt paliwa wynosi około 5150 zł, bez transportu, energii podajnika i serwisu.</p></div></details>
          <details><summary>Czy ogrzewanie podłogowe zawsze obniża rachunki?</summary><div class="rk-cost-faq-answer"><p>Nie. Podłogówka nie zmniejsza automatycznie strat ciepła budynku. Może obniżyć temperaturę pracy instalacji, zwiększyć SCOP pompy ciepła i poprawić kondensację kotła, ale korzyść zależy od projektu, okładziny, przepływów, regulacji i sposobu użytkowania.</p></div></details>
          <details><summary>Czy fotowoltaika zapewnia darmowe ogrzewanie pompą ciepła?</summary><div class="rk-cost-faq-answer"><p>Nie. Produkcja fotowoltaiczna jest najmniejsza w okresie największego zapotrzebowania na ogrzewanie. Koszt może zmniejszyć rzeczywista autokonsumpcja, magazyn energii i sposób rozliczenia, ale nie należy przyjmować, że każda kWh zużyta przez pompę ma wartość zerową.</p></div></details>
          <details><summary>Dlaczego kalkulator nie zgadza się dokładnie z rachunkiem?</summary><div class="rk-cost-faq-answer"><p>Rachunek zależy od pogody, temperatury w domu, CWU, taryfy, opłat, sprawności źródła i rzeczywistego zakresu pomiaru. Kalkulator jest narzędziem scenariuszowym. Najlepszą zgodność uzyskasz po wpisaniu danych z faktury oraz sezonowego zużycia konkretnej instalacji.</p></div></details>
        </div>
      </section>

      <section class="rk-cost-section" id="rk-cost-sources">
        <span class="rk-cost-kicker">Źródła i data weryfikacji</span>
        <h2>Skąd pochodzą ceny i założenia?</h2>
        <p>Dane o taryfach energii elektrycznej pochodzą z komunikatu <a href="https://www.ure.gov.pl/pl/urzad/informacje-ogolne/aktualnosci/13002,Prezes-Urzedu-Regulacji-Energetyki-zatwierdzil-taryfy-na-sprzedaz-i-dystrybucje-.html" target="_blank" rel="noopener nofollow">URE dotyczącego sprzedaży i dystrybucji w 2026 roku</a>. Informację o cenie gazu 197,29 zł/MWh do końca roku potwierdza <a href="https://www.ure.gov.pl/pl/urzad/informacje-ogolne/aktualnosci/13313,Rynek-gazu-Taryfa-myORLEN-przedluzona-do-konca-roku.html" target="_blank" rel="noopener nofollow">URE w decyzji o przedłużeniu taryfy myORLEN</a>.</p>
        <p>Regionalne opłaty dystrybucyjne gazu przyjęto z <a href="https://www.psgaz.pl/pobierz/d29cc4aa-6ca4-478c-98d8-fec002230208/page" target="_blank" rel="noopener nofollow">Taryfy nr 14 PSG</a>. Punkt odniesienia pelletu pochodzi z monitoringu <a href="https://kb.pl/aktualnosci/ogrzewanie/ceny-pelletu-w-sierpniu-2026/" target="_blank" rel="noopener nofollow">cen pelletu w sierpniu 2026 roku</a>, a ceny węgla z aktualnego zestawienia <a href="https://www.pgg.pl/sprzedaz/aktualnosci/2214/W%C4%99giel-na-zim%C4%99-2026-2027-Ile-kosztuj%C4%85-orzech-kostka-i-groszek-w-PGG" target="_blank" rel="noopener nofollow">PGG na sezon 2026/2027</a>.</p>
        <p>Roboczy SCOP 3,4 odpowiada średniemu wynikowi powietrznych pomp ciepła w monitoringu 77 instalacji opisanym przez <a href="https://www.ise.fraunhofer.de/en/press-media/press-releases/2025/fraunhofer-ise-research-project-completed-heat-pumps-provide-climate-friendly-heating-in-existing-buildings.html" target="_blank" rel="noopener nofollow">Fraunhofer ISE</a>. Jest to zagraniczny wynik terenowy użyty jako punkt odniesienia, a nie prognoza dla konkretnego budynku w Polsce.</p>
        <div class="rk-cost-sources"><p><strong>Ostatnia kontrola cen: 28 sierpnia 2026 r.</strong> Artykuł ma charakter edukacyjny. Taryfy i ceny opału mogą zmieniać się w czasie, dlatego kalkulator umożliwia zastąpienie każdego presetu własną wartością.</p></div>
      </section>

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

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

        <div class="rk-cost-author-layout">
          <aside class="rk-cost-author-side">
            <div class="rk-cost-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych i autor analizy kosztów ogrzewania" width="600" height="600" loading="lazy" decoding="async"></div>
            <div class="rk-cost-author-name">Robert Kucharski</div>
            <div class="rk-cost-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
          </aside>

          <div class="rk-cost-author-main">
            <blockquote class="rk-cost-author-quote"><p>„Ranking ogrzewania można ustawić dowolnie, jeśli jednemu źródłu wpiszemy cenę samego paliwa, a drugiemu pełny rachunek. Uczciwe porównanie zaczyna się od identycznej ilości ciepła i jawnych założeń.”</p></blockquote>

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

            <div class="rk-cost-author-panel rk-cost-author-panel-about"><p>Projektuję wodne ogrzewanie podłogowe i analizuję współpracę instalacji z pompami ciepła oraz kotłami. W publikacjach oddzielam obciążenie cieplne, energię sezonową, sprawność źródła i rachunek, aby wynik nie zależał od marketingowego skrótu.</p></div>
            <div class="rk-cost-author-panel rk-cost-author-panel-exp"><p>W dokumentacji wyznaczam straty pomieszczeń, temperatury pracy, rozstawy, długości pętli, przepływy, opory i nastawy. Te parametry wpływają na możliwość uzyskania niskiej temperatury zasilania, a przez nią na rzeczywisty koszt pracy źródła.</p></div>
            <div class="rk-cost-author-panel rk-cost-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-cost-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-cost-final-cta" aria-label="Projekt ogrzewania podłogowego dopasowany do źródła ciepła">
        <span class="rk-cost-kicker" style="color:#79f1ff">Rachunek zaczyna się od parametrów instalacji</span>
        <h2>Otrzymaj projekt z policzoną mocą, temperaturą zasilania, przepływami i nastawami</h2>
        <p>Indywidualna dokumentacja łączy rzeczywiste straty ciepła z konstrukcją podłogi, oporem okładzin, rozstawem rur, długościami pętli i hydrauliką źródła. Dzięki temu nie zakładasz niskiej temperatury i wysokiego SCOP — projektujesz warunki, które pozwalają do nich dążyć.</p>
        <a class="rk-cost-cta-button rk-cost-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        <small class="rk-cost-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
      </section>
    </div>
  </div>
</article>



<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#article",
      "url": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/",
      "headline": "Koszt ogrzewania domu w 2026 roku. Pompa ciepła, gaz, pellet, węgiel i prąd",
      "description": "Aktualne koszty ogrzewania domu w 2026 roku: pompa ciepła, gaz, pellet, węgiel i prąd. Porównanie cen, sprawności, opłat i kalkulator.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-28",
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#webpage"},
      "about": [
        {"@type": "Thing", "name": "Koszt ogrzewania domu w 2026 roku"},
        {"@type": "Thing", "name": "Pompa ciepła"},
        {"@type": "Thing", "name": "Kocioł gazowy"},
        {"@type": "Thing", "name": "Pellet"},
        {"@type": "Thing", "name": "Ogrzewanie elektryczne"}
      ],
      "mentions": [
        {"@id": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#calculator"},
        {"@id": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#comparison"},
        {"@id": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#howto"}
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#webpage",
      "url": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/",
      "name": "Koszt ogrzewania domu w 2026 roku",
      "description": "Porównanie kosztów pompy ciepła, gazu, pelletu, węgla i ogrzewania elektrycznego z aktualizacją cen na 28 sierpnia 2026 roku.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-28",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#breadcrumb"},
      "mainEntity": {"@id": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#article"}
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Projekt-Ogrzewania.pl",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Ogrzewanie podłogowe",
          "item": "https://projekt-ogrzewania.pl/category/ogrzewanie-podlogowe/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Koszt ogrzewania domu w 2026 roku",
          "item": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/"
        }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#calculator",
      "name": "Kalkulator kosztu ogrzewania domu 2026",
      "url": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#rk-cost-calculator",
      "applicationCategory": "UtilitiesApplication",
      "applicationSubCategory": "Kalkulator kosztów ogrzewania",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "offers": {"@type": "Offer", "price": "0", "priceCurrency": "PLN"},
      "description": "Interaktywny kalkulator porównuje roczny koszt pompy ciepła, kotła gazowego, pelletu, węgla i ogrzewania oporowego przy identycznej ilości użytecznego ciepła."
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#comparison",
      "name": "Porównywane źródła ogrzewania domu w 2026 roku",
      "numberOfItems": 5,
      "itemListElement": [
        {"@type": "ListItem", "position": 1, "name": "Pompa ciepła powietrze–woda"},
        {"@type": "ListItem", "position": 2, "name": "Kocioł gazowy kondensacyjny"},
        {"@type": "ListItem", "position": 3, "name": "Kocioł na pellet"},
        {"@type": "ListItem", "position": 4, "name": "Kocioł na węgiel groszek"},
        {"@type": "ListItem", "position": 5, "name": "Ogrzewanie elektryczne oporowe"}
      ]
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#howto",
      "name": "Jak porównać koszty ogrzewania bez manipulowania wynikiem?",
      "description": "Osiem kroków potrzebnych do porównania kosztów ogrzewania domu na wspólnej i jawnej podstawie.",
      "inLanguage": "pl-PL",
      "totalTime": "PT20M",
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Wyznacz roczne ciepło potrzebne budynkowi",
          "text": "Skorzystaj z obliczeń energetycznych albo skorygowanego zużycia z poprzednich sezonów. Nie zastępuj tej wartości samym metrażem.",
          "url": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#rk-cost-checklist"
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Przepisz ceny zmienne z aktualnych rachunków",
          "text": "Oddziel koszt zależny od pobranej kWh od abonamentu i opłat stałych. Użyj tej samej podstawy brutto lub netto dla wszystkich źródeł.",
          "url": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#rk-cost-checklist"
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Użyj SCOP albo sprawności sezonowej",
          "text": "Dla pompy ciepła nie stosuj chwilowego COP, a dla kotła sprawności z pojedynczego punktu pracy. Zakres obliczenia musi być porównywalny.",
          "url": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#rk-cost-checklist"
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Dodaj opłaty stałe właściwe dla systemu",
          "text": "Przyłącze gazowe używane wyłącznie do ogrzewania generuje koszt przez cały rok. Opłat prądu nie przypisuj podwójnie, jeśli zasilają cały dom.",
          "url": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#rk-cost-checklist"
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Uwzględnij energię pomocniczą",
          "text": "Sprawdź pompy, podajniki, grzałki, wentylatory, automatykę i urządzenia pracujące również poza sezonem grzewczym.",
          "url": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#rk-cost-checklist"
        },
        {
          "@type": "HowToStep",
          "position": 6,
          "name": "Oddziel ogrzewanie pomieszczeń od CWU",
          "text": "Ciepła woda może być przygotowywana przy innej temperaturze i sprawności. Nie przypisuj całego zużycia jednemu SCOP bez zaznaczenia uproszczenia.",
          "url": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#rk-cost-checklist"
        },
        {
          "@type": "HowToStep",
          "position": 7,
          "name": "Sprawdź wrażliwość na ceny i sprawność",
          "text": "Przelicz wariant przy cenach nośnika niższych i wyższych o 20% oraz przy słabszym SCOP. Ranking oparty na jednym punkcie jest nietrwały.",
          "url": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#rk-cost-checklist"
        },
        {
          "@type": "HowToStep",
          "position": 8,
          "name": "Porównaj pełny koszt posiadania",
          "text": "Do rachunku energii dodaj inwestycję, serwis, finansowanie, naprawy, komin, miejsce na paliwo, obsługę oraz ograniczenia prawne.",
          "url": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#rk-cost-checklist"
        }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Ile kosztuje ogrzewanie domu 150 m² w 2026 roku?",
          "acceptedAnswer": {"@type": "Answer", "text": "Dla przykładowego zapotrzebowania 70 kWh/m² dom potrzebuje 10 500 kWh użytecznego ciepła rocznie. Przy presetach artykułu koszt wynosi około 3210 zł dla pompy ciepła, 4310 zł dla gazu z opłatami stałymi, 5150 zł dla pelletu, 2630 zł dla węgla i 10 920 zł dla prądu oporowego. Nie obejmuje to CWU, serwisu ani inwestycji."}
        },
        {
          "@type": "Question",
          "name": "Ile kosztuje ogrzewanie pompą ciepła w 2026 roku?",
          "acceptedAnswer": {"@type": "Answer", "text": "Koszt zależy od ciepła potrzebnego budynkowi, ceny energii oraz rzeczywistego SCOP. Dla 10 500 kWh ciepła, ceny prądu 1,04 zł/kWh i SCOP 3,4 koszt zmienny wynosi około 3210 zł rocznie. Grzałki, CWU, opłaty stałe i serwis mogą zmienić wynik."}
        },
        {
          "@type": "Question",
          "name": "Ile kosztuje ogrzewanie gazem w 2026 roku?",
          "acceptedAnswer": {"@type": "Answer", "text": "Dla 10 500 kWh użytecznego ciepła, sprawności sezonowej 94%, zmiennego kosztu gazu 0,31 zł/kWh oraz 850 zł opłat stałych wynik wynosi około 4310 zł rocznie. Dokładna kwota zależy od obszaru dystrybucyjnego, taryfy, abonamentu i zużycia."}
        },
        {
          "@type": "Question",
          "name": "Co jest tańsze w 2026 roku: pompa ciepła czy gaz?",
          "acceptedAnswer": {"@type": "Answer", "text": "Przy cenach i sprawnościach przyjętych w artykule pompa ciepła ma niższy koszt bieżącej energii. Wynik nie jest jednak gwarantowany. Słaby SCOP, wysoka cena prądu, niskie zużycie ciepła albo inne opłaty mogą zmienić różnicę, dlatego należy wpisać własne dane."}
        },
        {
          "@type": "Question",
          "name": "Ile kosztuje 1 kWh prądu do ogrzewania w 2026 roku?",
          "acceptedAnswer": {"@type": "Answer", "text": "URE zatwierdził średnią cenę energii czynnej 495,16 zł/MWh, ale rachunek obejmuje także dystrybucję, podatki i opłaty. W kalkulatorze przyjęto roboczo 1,04 zł/kWh brutto kosztu zmiennego. Wartość należy zastąpić ceną wynikającą z własnej taryfy i faktury."}
        },
        {
          "@type": "Question",
          "name": "Ile kosztuje 1 kWh gazu do ogrzewania domu?",
          "acceptedAnswer": {"@type": "Answer", "text": "Po połączeniu taryfowej ceny paliwa i zmiennej dystrybucji dla grupy W‑3.6 otrzymujemy orientacyjnie około 0,30–0,32 zł/kWh brutto. Osobno występują abonament i opłata dystrybucyjna stała, które zależą od regionu i mogą wynosić łącznie kilkaset złotych rocznie."}
        },
        {
          "@type": "Question",
          "name": "Ile pelletu potrzeba do ogrzania domu?",
          "acceptedAnswer": {"@type": "Answer", "text": "Dla 10 500 kWh użytecznego ciepła, wartości opałowej 4,8 kWh/kg i sprawności sezonowej 85% potrzeba około 2,57 t pelletu. Przy cenie 2000 zł/t sam koszt paliwa wynosi około 5150 zł, bez transportu, energii podajnika i serwisu."}
        },
        {
          "@type": "Question",
          "name": "Czy ogrzewanie podłogowe zawsze obniża rachunki?",
          "acceptedAnswer": {"@type": "Answer", "text": "Nie. Podłogówka nie zmniejsza automatycznie strat ciepła budynku. Może obniżyć temperaturę pracy instalacji, zwiększyć SCOP pompy ciepła i poprawić kondensację kotła, ale korzyść zależy od projektu, okładziny, przepływów, regulacji i sposobu użytkowania."}
        },
        {
          "@type": "Question",
          "name": "Czy fotowoltaika zapewnia darmowe ogrzewanie pompą ciepła?",
          "acceptedAnswer": {"@type": "Answer", "text": "Nie. Produkcja fotowoltaiczna jest najmniejsza w okresie największego zapotrzebowania na ogrzewanie. Koszt może zmniejszyć rzeczywista autokonsumpcja, magazyn energii i sposób rozliczenia, ale nie należy przyjmować, że każda kWh zużyta przez pompę ma wartość zerową."}
        },
        {
          "@type": "Question",
          "name": "Dlaczego kalkulator nie zgadza się dokładnie z rachunkiem?",
          "acceptedAnswer": {"@type": "Answer", "text": "Rachunek zależy od pogody, temperatury w domu, CWU, taryfy, opłat, sprawności źródła i rzeczywistego zakresu pomiaru. Kalkulator jest narzędziem scenariuszowym. Najlepszą zgodność uzyskasz po wpisaniu danych z faktury oraz sezonowego zużycia konkretnej instalacji."}
        }
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "description": "Autor opracowań technicznych o ogrzewaniu podłogowym, pompach ciepła i instalacjach sanitarnych.",
      "worksFor": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "sameAs": ["https://projekt-ogrzewania.pl/", "https://remont.biz.pl/", "https://sobir.pl/"]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "sameAs": ["https://remont.biz.pl/", "https://sobir.pl/"]
    },
    {
      "@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";

  function rkCostInit() {
    var root = document.getElementById("rk-cost-guide");
    if (!root) {
      return false;
    }
    if (root.getAttribute("data-rk-cost-ready") === "true") {
      return true;
    }

    var form = document.getElementById("rk-cost-calculator-form");
    var resetButton = document.getElementById("rk-cost-calculator-reset");
    var copyButton = document.getElementById("rk-cost-copy");
    var printButton = document.getElementById("rk-cost-print");
    var copyStatus = document.getElementById("rk-cost-copy-status");
    var listOutput = document.getElementById("rk-cost-calculator-list");
    var statusBox = document.getElementById("rk-cost-calculator-status");
    var statusTitle = document.getElementById("rk-cost-calculator-title");
    var statusCopy = document.getElementById("rk-cost-calculator-copy");

    var fields = {
      area: document.getElementById("rk-cost-area"),
      specific: document.getElementById("rk-cost-specific"),
      dhw: document.getElementById("rk-cost-dhw"),
      years: document.getElementById("rk-cost-years"),
      includeDhw: document.getElementById("rk-cost-include-dhw"),
      electricPrice: document.getElementById("rk-cost-electric-price"),
      hpScop: document.getElementById("rk-cost-hp-scop"),
      electricFixed: document.getElementById("rk-cost-electric-fixed"),
      hpExtra: document.getElementById("rk-cost-hp-extra"),
      gasPrice: document.getElementById("rk-cost-gas-price"),
      gasEfficiency: document.getElementById("rk-cost-gas-efficiency"),
      gasFixed: document.getElementById("rk-cost-gas-fixed"),
      gasExtra: document.getElementById("rk-cost-gas-extra"),
      pelletPrice: document.getElementById("rk-cost-pellet-price"),
      pelletValue: document.getElementById("rk-cost-pellet-value"),
      pelletEfficiency: document.getElementById("rk-cost-pellet-efficiency"),
      pelletAux: document.getElementById("rk-cost-pellet-aux"),
      coalPrice: document.getElementById("rk-cost-coal-price"),
      coalValue: document.getElementById("rk-cost-coal-value"),
      coalEfficiency: document.getElementById("rk-cost-coal-efficiency"),
      coalAux: document.getElementById("rk-cost-coal-aux")
    };

    var metrics = {
      heat: document.getElementById("rk-cost-result-heat"),
      winner: document.getElementById("rk-cost-result-winner"),
      cheapest: document.getElementById("rk-cost-result-cheapest"),
      period: document.getElementById("rk-cost-result-period"),
      unit: document.getElementById("rk-cost-unit-summary"),
      periodSummary: document.getElementById("rk-cost-period-summary"),
      note: document.getElementById("rk-cost-result-note")
    };

    var keys = ["hp", "gas", "pellet", "coal", "electric"];
    var rows = {};
    keys.forEach(function (key) {
      rows[key] = {
        row: document.getElementById("rk-cost-row-" + key),
        rank: document.getElementById("rk-cost-rank-" + key),
        bar: document.getElementById("rk-cost-bar-" + key),
        range: document.getElementById("rk-cost-range-" + key),
        usage: document.getElementById("rk-cost-usage-" + key),
        total: document.getElementById("rk-cost-total-" + key)
      };
    });

    var required = [form, resetButton, copyButton, printButton, copyStatus, listOutput, statusBox, statusTitle, statusCopy];
    Object.keys(fields).forEach(function (key) {
      required.push(fields[key]);
    });
    Object.keys(metrics).forEach(function (key) {
      required.push(metrics[key]);
    });
    keys.forEach(function (key) {
      Object.keys(rows[key]).forEach(function (part) {
        required.push(rows[key][part]);
      });
    });
    var ready = true;
    required.forEach(function (element) {
      if (!element) {
        ready = false;
      }
    });
    if (!ready) {
      return false;
    }

    var defaults = {
      area: "150",
      specific: "70",
      dhw: "2500",
      years: "10",
      electricPrice: "1.04",
      hpScop: "3.4",
      electricFixed: "0",
      hpExtra: "0",
      gasPrice: "0.31",
      gasEfficiency: "94",
      gasFixed: "850",
      gasExtra: "0",
      pelletPrice: "2000",
      pelletValue: "4.8",
      pelletEfficiency: "85",
      pelletAux: "0",
      coalPrice: "1400",
      coalValue: "7.0",
      coalEfficiency: "80",
      coalAux: "0"
    };

    var names = {
      hp: "Pompa ciepła",
      gas: "Gaz",
      pellet: "Pellet",
      coal: "Węgiel",
      electric: "Prąd oporowy"
    };

    var lastCopyText = "";

    function rkCostClamp(value, minimum, maximum, fallback) {
      var number = Number(String(value).replace(",", "."));
      if (!Number.isFinite(number)) {
        return fallback;
      }
      return Math.min(maximum, Math.max(minimum, number));
    }

    function rkCostInteger(value) {
      return Math.round(value).toLocaleString("pl-PL", {maximumFractionDigits: 0});
    }

    function rkCostDecimal(value, digits) {
      return value.toLocaleString("pl-PL", {
        minimumFractionDigits: digits,
        maximumFractionDigits: digits
      });
    }

    function rkCostMoney(value) {
      return rkCostInteger(value) + " zł";
    }

    function rkCostClear(element) {
      while (element.firstChild) {
        element.removeChild(element.firstChild);
      }
    }

    function rkCostRenderMessages(messages) {
      rkCostClear(listOutput);
      messages.forEach(function (message) {
        var item = document.createElement("li");
        item.textContent = message;
        listOutput.appendChild(item);
      });
    }

    function rkCostSetBar(element, value, maximum) {
      var width = 5;
      if (maximum > 0) {
        width = value / maximum * 100;
        width = Math.max(5, Math.min(100, width));
      }
      element.style.width = width.toFixed(1) + "%";
    }

    function rkCostSetStatus(level, title, copy) {
      statusBox.className = "rk-cost-audit-status";
      if (level === "warning") {
        statusBox.classList.add("is-warning");
      }
      if (level === "danger") {
        statusBox.classList.add("is-danger");
      }
      statusTitle.textContent = title;
      statusCopy.textContent = copy;
    }

    function rkCostCalculate() {
      var area = rkCostClamp(fields.area.value, 20, 1000, 150);
      var specific = rkCostClamp(fields.specific.value, 15, 400, 70);
      var dhw = rkCostClamp(fields.dhw.value, 0, 30000, 2500);
      var years = Math.round(rkCostClamp(fields.years.value, 1, 25, 10));
      var electricPrice = rkCostClamp(fields.electricPrice.value, 0.10, 5, 1.04);
      var hpScop = rkCostClamp(fields.hpScop.value, 1, 8, 3.4);
      var electricFixed = rkCostClamp(fields.electricFixed.value, 0, 10000, 0);
      var hpExtra = rkCostClamp(fields.hpExtra.value, 0, 10000, 0);
      var gasPrice = rkCostClamp(fields.gasPrice.value, 0.05, 2, 0.31);
      var gasEfficiency = rkCostClamp(fields.gasEfficiency.value, 50, 100, 94) / 100;
      var gasFixed = rkCostClamp(fields.gasFixed.value, 0, 10000, 850);
      var gasExtra = rkCostClamp(fields.gasExtra.value, 0, 10000, 0);
      var pelletPrice = rkCostClamp(fields.pelletPrice.value, 300, 6000, 2000);
      var pelletValue = rkCostClamp(fields.pelletValue.value, 2, 7, 4.8);
      var pelletEfficiency = rkCostClamp(fields.pelletEfficiency.value, 40, 100, 85) / 100;
      var pelletAux = rkCostClamp(fields.pelletAux.value, 0, 3000, 0);
      var coalPrice = rkCostClamp(fields.coalPrice.value, 300, 6000, 1400);
      var coalValue = rkCostClamp(fields.coalValue.value, 3, 10, 7.0);
      var coalEfficiency = rkCostClamp(fields.coalEfficiency.value, 35, 100, 80) / 100;
      var coalAux = rkCostClamp(fields.coalAux.value, 0, 3000, 0);

      var heatSpace = area * specific;
      var heat = heatSpace;
      if (fields.includeDhw.checked) {
        heat += dhw;
      }

      var hpEnergy = heat / hpScop;
      var gasEnergy = heat / gasEfficiency;
      var pelletKg = heat / (pelletValue * pelletEfficiency);
      var coalKg = heat / (coalValue * coalEfficiency);

      var results = {
        hp: {
          key: "hp",
          variable: hpEnergy * electricPrice,
          fixed: electricFixed + hpExtra,
          usage: rkCostInteger(hpEnergy) + " kWh"
        },
        gas: {
          key: "gas",
          variable: gasEnergy * gasPrice,
          fixed: gasFixed + gasExtra,
          usage: rkCostInteger(gasEnergy) + " kWh"
        },
        pellet: {
          key: "pellet",
          variable: pelletKg / 1000 * pelletPrice + pelletAux * electricPrice,
          fixed: 0,
          usage: rkCostDecimal(pelletKg / 1000, 2) + " t"
        },
        coal: {
          key: "coal",
          variable: coalKg / 1000 * coalPrice + coalAux * electricPrice,
          fixed: 0,
          usage: rkCostDecimal(coalKg / 1000, 2) + " t"
        },
        electric: {
          key: "electric",
          variable: heat * electricPrice,
          fixed: electricFixed,
          usage: rkCostInteger(heat) + " kWh"
        }
      };

      keys.forEach(function (key) {
        results[key].total = results[key].variable + results[key].fixed;
        results[key].low = results[key].variable * 0.8 + results[key].fixed;
        results[key].high = results[key].variable * 1.2 + results[key].fixed;
      });

      var ranking = keys.map(function (key) {
        return results[key];
      });
      ranking.sort(function (first, second) {
        return first.total - second.total;
      });

      var maximum = 0;
      keys.forEach(function (key) {
        maximum = Math.max(maximum, results[key].total);
      });

      ranking.forEach(function (result, index) {
        rows[result.key].rank.textContent = "Miejsce " + String(index + 1);
      });

      keys.forEach(function (key) {
        var result = results[key];
        rows[key].row.classList.remove("is-winner");
        if (key === ranking[0].key) {
          rows[key].row.classList.add("is-winner");
        }
        rkCostSetBar(rows[key].bar, result.total, maximum);
        rows[key].range.textContent = rkCostMoney(result.low) + "–" + rkCostMoney(result.high) + " przy zmianie ceny o ±20%";
        rows[key].usage.textContent = result.usage;
        rows[key].total.textContent = rkCostMoney(result.total);
      });

      var winner = ranking[0];
      metrics.heat.textContent = rkCostInteger(heat) + " kWh";
      metrics.winner.textContent = names[winner.key];
      metrics.cheapest.textContent = rkCostMoney(winner.total);
      metrics.period.textContent = years + (years === 1 ? " rok" : " lat");

      metrics.unit.textContent = "Pompa ciepła: " + rkCostDecimal(results.hp.total / heat, 2) + " zł • gaz: " + rkCostDecimal(results.gas.total / heat, 2) + " zł • pellet: " + rkCostDecimal(results.pellet.total / heat, 2) + " zł • węgiel: " + rkCostDecimal(results.coal.total / heat, 2) + " zł • prąd: " + rkCostDecimal(results.electric.total / heat, 2) + " zł.";
      metrics.periodSummary.textContent = "Przy niezmiennych cenach: " + names[winner.key] + " około " + rkCostMoney(winner.total * years) + ", pompa ciepła " + rkCostMoney(results.hp.total * years) + ", gaz " + rkCostMoney(results.gas.total * years) + " w okresie " + years + (years === 1 ? " roku." : " lat.");
      metrics.note.innerHTML = "<strong>Wrażliwość ceny:</strong> zakres pod każdym źródłem zmienia koszt nośnika o ±20%, pozostawiając opłaty stałe bez zmian. Najniższy wynik uzyskał wariant „" + names[winner.key] + "”, lecz kalkulator nie wycenia inwestycji, obsługi ani ograniczeń prawnych.";

      var messages = [];
      var level = "ok";
      var title = "Ranking dotyczy wyłącznie wprowadzonych kosztów eksploatacyjnych";
      var copy = "Każdy wariant dostarcza " + rkCostInteger(heat) + " kWh użytecznego ciepła. Najniższy wynik wynosi " + rkCostMoney(winner.total) + " rocznie dla wariantu „" + names[winner.key] + "”.";

      messages.push("Metraż i wskaźnik dają " + rkCostInteger(heatSpace) + " kWh ciepła na ogrzewanie pomieszczeń. To scenariusz, nie świadectwo energetyczne ani projektowe obciążenie cieplne.");
      if (fields.includeDhw.checked) {
        messages.push("Do wyniku dodano " + rkCostInteger(dhw) + " kWh ciepła na CWU przy tej samej sprawności co ogrzewanie. W realnym urządzeniu przygotowanie ciepłej wody może mieć osobny SCOP lub sprawność.");
      } else {
        messages.push("Ciepła woda użytkowa nie jest uwzględniona. Zaznacz opcję CWU tylko wtedy, gdy chcesz porównać wspólny zakres dla wszystkich źródeł.");
      }
      messages.push("Zakres ±20% pokazuje wrażliwość na cenę nośnika. Nie jest prognozą taryf ani cen paliwa na kolejne lata.");
      messages.push("Wynik wieloletni zakłada stałe ceny, brak inflacji i brak dyskonta. Nie dolicza automatycznie ceny urządzeń, finansowania, wymiany, serwisu ani pracy użytkownika.");

      if (hpScop < 2.5) {
        level = "warning";
        title = "Niski SCOP znacząco podnosi koszt pompy ciepła";
        copy = "Sprawdź temperaturę zasilania, dobór mocy, udział grzałki, odszranianie i zakres danych sezonowych. Nie zastępuj SCOP chwilowym COP.";
        messages.push("Wpisany SCOP jest niższy niż 2,5. Taki wynik może wskazywać trudne warunki pracy albo niekorzystny zakres pomiaru i wymaga sprawdzenia instalacji.");
      }
      if (specific > 150) {
        level = "warning";
        title = "Najpierw sprawdź możliwość zmniejszenia strat budynku";
        copy = "Przy zapotrzebowaniu powyżej 150 kWh/m² rocznie termomodernizacja może zmienić koszt i wymagany zakres pracy źródła bardziej niż sam wybór urządzenia.";
        messages.push("Wysokie zapotrzebowanie zwiększa koszt każdego nośnika. Porównaj wariant źródła z uszczelnieniem, izolacją i modernizacją odbiorników.");
      }
      if (winner.key === "coal") {
        if (level === "ok") {
          level = "warning";
          title = "Najniższy koszt paliwa nie oznacza automatycznie najlepszego systemu";
          copy = "Węgiel wygrał przy podanych liczbach, ale wynik nie wycenia obsługi, komina, magazynowania, emisji ani możliwości legalnej eksploatacji w danej lokalizacji.";
        }
        messages.push("Przed analizą węgla sprawdź aktualną uchwałę antysmogową, wymagania urządzenia i terminy ograniczeń obowiązujące w miejscu inwestycji.");
      }
      if (winner.key === "pellet") {
        if (level === "ok") {
          level = "warning";
          title = "Pellet ma najniższy koszt w tym scenariuszu, ale wymaga pełnego bilansu";
          copy = "Dodaj transport, energię pomocniczą, przeglądy, czyszczenie, magazyn paliwa i czas obsługi przed porównaniem z systemami bezobsługowymi.";
        }
      }

      rkCostSetStatus(level, title, copy);
      rkCostRenderMessages(messages);

      lastCopyText = "Koszt ogrzewania domu 2026 — wynik kalkulatora\n" +
        "Powierzchnia: " + rkCostInteger(area) + " m²\n" +
        "Użyteczne ciepło: " + rkCostInteger(heat) + " kWh/rok\n" +
        "1. " + names[ranking[0].key] + ": " + rkCostMoney(ranking[0].total) + "/rok\n" +
        "2. " + names[ranking[1].key] + ": " + rkCostMoney(ranking[1].total) + "/rok\n" +
        "3. " + names[ranking[2].key] + ": " + rkCostMoney(ranking[2].total) + "/rok\n" +
        "4. " + names[ranking[3].key] + ": " + rkCostMoney(ranking[3].total) + "/rok\n" +
        "5. " + names[ranking[4].key] + ": " + rkCostMoney(ranking[4].total) + "/rok\n" +
        "Założenia: prąd " + rkCostDecimal(electricPrice, 2) + " zł/kWh, gaz " + rkCostDecimal(gasPrice, 2) + " zł/kWh, SCOP " + rkCostDecimal(hpScop, 1) + ", pellet " + rkCostInteger(pelletPrice) + " zł/t, węgiel " + rkCostInteger(coalPrice) + " zł/t.\n" +
        "Wynik scenariuszowy z artykułu Projekt-Ogrzewania.pl; bez automatycznego doliczenia inwestycji i pełnego serwisu.";
    }

    function rkCostCopyFallback(textValue) {
      var area = document.createElement("textarea");
      area.value = textValue;
      area.setAttribute("readonly", "readonly");
      area.style.position = "fixed";
      area.style.opacity = "0";
      document.body.appendChild(area);
      area.select();
      var copied = false;
      try {
        copied = document.execCommand("copy");
      } catch (error) {
        copied = false;
      }
      document.body.removeChild(area);
      copyStatus.textContent = copied ? "Wynik został skopiowany." : "Nie udało się skopiować automatycznie. Zaznacz wyniki ręcznie.";
    }

    function rkCostCopy() {
      copyStatus.textContent = "";
      if (navigator.clipboard) {
        if (navigator.clipboard.writeText) {
          navigator.clipboard.writeText(lastCopyText).then(function () {
            copyStatus.textContent = "Wynik został skopiowany.";
          }).catch(function () {
            rkCostCopyFallback(lastCopyText);
          });
          return;
        }
      }
      rkCostCopyFallback(lastCopyText);
    }

    Object.keys(fields).forEach(function (key) {
      fields[key].addEventListener("input", rkCostCalculate);
      fields[key].addEventListener("change", rkCostCalculate);
    });
    form.addEventListener("submit", function (event) {
      event.preventDefault();
      rkCostCalculate();
    });
    resetButton.addEventListener("click", function () {
      Object.keys(defaults).forEach(function (key) {
        fields[key].value = defaults[key];
      });
      fields.includeDhw.checked = false;
      copyStatus.textContent = "Przywrócono ceny i założenia z 28 sierpnia 2026 roku.";
      rkCostCalculate();
    });
    copyButton.addEventListener("click", rkCostCopy);
    printButton.addEventListener("click", function () {
      window.print();
    });

    root.querySelectorAll('.rk-cost-nav a[href^="#rk-cost-"]').forEach(function (link) {
      link.addEventListener("click", function (event) {
        var target = document.querySelector(link.getAttribute("href"));
        if (!target) {
          return;
        }
        event.preventDefault();
        var behavior = "smooth";
        if (window.matchMedia) {
          if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
            behavior = "auto";
          }
        }
        target.scrollIntoView({behavior: behavior, block: "start"});
      });
    });

    var progress = document.getElementById("rk-cost-progress");
    function rkCostUpdateProgress() {
      if (!progress) {
        return;
      }
      var rect = root.getBoundingClientRect();
      var viewport = window.innerHeight || document.documentElement.clientHeight;
      var total = root.offsetHeight - viewport;
      var passed = -rect.top;
      var percentage = 0;
      if (total > 0) {
        percentage = Math.max(0, Math.min(100, passed / total * 100));
      }
      progress.style.width = percentage.toFixed(1) + "%";
    }
    window.addEventListener("scroll", rkCostUpdateProgress, {passive: true});
    window.addEventListener("resize", rkCostUpdateProgress);

    root.setAttribute("data-rk-cost-ready", "true");
    window.rkCostRecalculate = rkCostCalculate;
    rkCostCalculate();
    rkCostUpdateProgress();
    return true;
  }

  function rkCostBoot() {
    rkCostInit();
  }

  rkCostBoot();
  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", rkCostBoot, {once: true});
  }
  window.addEventListener("load", rkCostBoot, {once: true});
  window.setTimeout(rkCostBoot, 180);
  window.setTimeout(rkCostBoot, 700);
  window.setTimeout(rkCostBoot, 1600);

  if (window.MutationObserver) {
    var observerTarget = document.body || document.documentElement;
    if (observerTarget) {
      var observer = new MutationObserver(function () {
        if (rkCostInit()) {
          observer.disconnect();
        }
      });
      observer.observe(observerTarget, {childList: true, subtree: true});
      window.setTimeout(function () {
        observer.disconnect();
      }, 5000);
    }
  }
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/">Koszt ogrzewania domu 2026 – ceny i kalkulator.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/koszt-ogrzewania-domu-2025/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego? &#8211; Kalkulator.</title>
		<link>https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Mon, 10 Feb 2025 12:26:28 +0000</pubDate>
				<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Kalkulatory budowlane]]></category>
		<category><![CDATA[Nowoczesne technologie grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Porady dla inwestorów]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Systemy grzewcze]]></category>
		<category><![CDATA[dobór rury do rozdzielacza]]></category>
		<category><![CDATA[dobór rury zasilającej]]></category>
		<category><![CDATA[efektywność cieplna]]></category>
		<category><![CDATA[instalacja podłogowa]]></category>
		<category><![CDATA[kalkulator średnicy rury]]></category>
		<category><![CDATA[montaż ogrzewania]]></category>
		<category><![CDATA[opory hydrauliczne]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<category><![CDATA[przepływ wody w ogrzewaniu]]></category>
		<category><![CDATA[średnica rury ogrzewanie podłogowe]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2156</guid>

					<description><![CDATA[<p>Dobór odpowiedniej średnicy rury zasilającej rozdzielacz w układzie ogrzewania podłogowego ma kluczowe znaczenie dla efektywności całego systemu. Niewłaściwie dobrany przekrój może prowadzić do nierównomiernego rozprowadzania ciepła, zwiększonych oporów hydraulicznych i nadmiernego zużycia energii. W naszym artykule znajdziesz wskazówki, jak dobrać optymalną średnicę, a także kalkulator ułatwiający obliczenia. Dowiedz się, jakie parametry wpływają na wybór rury i jak uniknąć typowych błędów montażowych.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">Jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego? &#8211; Kalkulator.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-pipe-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: #e6ad2f;
    --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-pipe-guide,
  #rk-pipe-guide * {
    box-sizing: border-box;
  }

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

  #rk-pipe-guide [hidden] {
    display: none !important;
  }

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

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

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

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

  #rk-pipe-guide .rk-pipe-progress-track {
    position: sticky;
    top: 0;
    z-index: 50;
    height: 5px;
    background: rgba(255, 255, 255, 0.22);
  }

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

  #rk-pipe-guide .rk-pipe-hero {
    position: relative;
    isolation: isolate;
    overflow: hidden;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 85% 18%, rgba(37, 199, 216, 0.28), transparent 27%),
      radial-gradient(circle at 12% 90%, rgba(255, 106, 61, 0.22), transparent 31%),
      linear-gradient(135deg, #0e2433 0%, #14384d 54%, #0d5365 100%);
  }

  #rk-pipe-guide .rk-pipe-hero::before,
  #rk-pipe-guide .rk-pipe-hero::after {
    position: absolute;
    z-index: -1;
    content: "";
    border: 1px solid rgba(255, 255, 255, 0.12);
    border-radius: 50%;
  }

  #rk-pipe-guide .rk-pipe-hero::before {
    width: 470px;
    height: 470px;
    right: -190px;
    top: -260px;
  }

  #rk-pipe-guide .rk-pipe-hero::after {
    width: 290px;
    height: 290px;
    left: -160px;
    bottom: -170px;
  }

  #rk-pipe-guide .rk-pipe-hero-inner {
    padding: clamp(48px, 8vw, 92px) clamp(24px, 7vw, 82px);
  }

  #rk-pipe-guide .rk-pipe-eyebrow,
  #rk-pipe-guide .rk-pipe-kicker {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    color: var(--rk-blue);
    font-size: 0.78rem;
    font-weight: 850;
    letter-spacing: 0.1em;
    line-height: 1.4;
    text-transform: uppercase;
  }

  #rk-pipe-guide .rk-pipe-eyebrow {
    color: #83f3ff;
  }

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

  #rk-pipe-guide .rk-pipe-hero-title {
    max-width: 970px;
    margin: 18px 0 20px;
    color: var(--rk-white);
    font-size: clamp(2.15rem, 5.2vw, 4.25rem);
    font-weight: 900;
    letter-spacing: -0.05em;
    line-height: 1.02;
  }

  #rk-pipe-guide .rk-pipe-hero-lead {
    max-width: 880px;
    margin: 0;
    color: #d9edf3;
    font-size: clamp(1.02rem, 2.2vw, 1.28rem);
    line-height: 1.66;
  }

  #rk-pipe-guide .rk-pipe-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 24px;
    margin-top: 29px;
    color: #b9d5de;
    font-size: 0.84rem;
    font-weight: 720;
  }

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

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

  #rk-pipe-guide .rk-pipe-nav {
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 9px;
    padding: 18px clamp(18px, 5vw, 60px);
    border-bottom: 1px solid var(--rk-line);
    background: rgba(255, 255, 255, 0.96);
  }

  #rk-pipe-guide .rk-pipe-nav strong {
    margin-right: 6px;
    color: var(--rk-dark);
    font-size: 0.82rem;
  }

  #rk-pipe-guide .rk-pipe-nav a {
    display: inline-flex;
    padding: 7px 12px;
    color: var(--rk-text);
    border: 1px solid var(--rk-line);
    border-radius: 999px;
    background: var(--rk-white);
    font-size: 0.76rem;
    font-weight: 780;
    line-height: 1.3;
    text-decoration: none;
  }

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

  #rk-pipe-guide .rk-pipe-section {
    padding: clamp(42px, 7vw, 78px) clamp(24px, 7vw, 82px);
    scroll-margin-top: 22px;
  }

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

  #rk-pipe-guide .rk-pipe-section:nth-of-type(even) {
    background: var(--rk-soft);
  }

  #rk-pipe-guide h2,
  #rk-pipe-guide h3,
  #rk-pipe-guide p,
  #rk-pipe-guide ul,
  #rk-pipe-guide ol,
  #rk-pipe-guide blockquote {
    max-width: none;
  }

  #rk-pipe-guide h2 {
    margin: 10px 0 22px;
    color: var(--rk-dark);
    font-size: clamp(1.65rem, 3.2vw, 2.55rem);
    font-weight: 900;
    letter-spacing: -0.035em;
    line-height: 1.15;
  }

  #rk-pipe-guide h3 {
    margin: 0 0 10px;
    color: var(--rk-dark);
    font-size: 1.12rem;
    font-weight: 850;
    line-height: 1.32;
  }

  #rk-pipe-guide p {
    color: var(--rk-text);
  }

  #rk-pipe-guide .rk-pipe-intro {
    max-width: 930px;
    margin: 0 0 28px;
    color: var(--rk-text);
    font-size: 1.08rem;
  }

  #rk-pipe-guide .rk-pipe-answer {
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(250px, 0.65fr);
    gap: 18px;
    margin: 28px 0;
  }

  #rk-pipe-guide .rk-pipe-answer-main,
  #rk-pipe-guide .rk-pipe-answer-side,
  #rk-pipe-guide .rk-pipe-card,
  #rk-pipe-guide .rk-pipe-note,
  #rk-pipe-guide .rk-pipe-source-box {
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-white);
    box-shadow: 0 12px 32px rgba(16, 37, 54, 0.06);
  }

  #rk-pipe-guide .rk-pipe-answer-main,
  #rk-pipe-guide .rk-pipe-answer-side {
    padding: 25px;
  }

  #rk-pipe-guide .rk-pipe-answer-main {
    border-left: 6px solid var(--rk-cyan);
  }

  #rk-pipe-guide .rk-pipe-answer-side {
    background: var(--rk-yellow-soft);
    border-color: #ecd98c;
  }

  #rk-pipe-guide .rk-pipe-answer p,
  #rk-pipe-guide .rk-pipe-card p,
  #rk-pipe-guide .rk-pipe-note p,
  #rk-pipe-guide .rk-pipe-source-box p {
    margin: 0;
  }

  #rk-pipe-guide .rk-pipe-formula {
    display: grid;
    gap: 6px;
    margin: 28px 0;
    padding: 22px 24px;
    overflow-wrap: anywhere;
    color: var(--rk-white);
    border-radius: 18px;
    background: linear-gradient(135deg, var(--rk-navy), #0d596a);
    box-shadow: 0 15px 34px rgba(16, 37, 54, 0.16);
  }

  #rk-pipe-guide .rk-pipe-formula strong {
    color: #8cf5ff;
    font-family: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
    font-size: clamp(1rem, 2.3vw, 1.28rem);
    line-height: 1.5;
  }

  #rk-pipe-guide .rk-pipe-formula span {
    color: #d5ebf1;
    font-size: 0.86rem;
  }

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

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

  #rk-pipe-guide .rk-pipe-card {
    position: relative;
    padding: 23px;
  }

  #rk-pipe-guide .rk-pipe-card::before {
    position: absolute;
    top: 0;
    left: 22px;
    width: 46px;
    height: 4px;
    content: "";
    border-radius: 0 0 6px 6px;
    background: var(--rk-cyan);
  }

  #rk-pipe-guide .rk-pipe-card-number {
    display: block;
    margin-bottom: 10px;
    color: var(--rk-blue);
    font-size: 0.76rem;
    font-weight: 880;
    letter-spacing: 0.06em;
    text-transform: uppercase;
  }

  #rk-pipe-guide .rk-pipe-note {
    margin: 27px 0;
    padding: 22px 24px 22px 62px;
    position: relative;
  }

  #rk-pipe-guide .rk-pipe-note::before {
    position: absolute;
    top: 22px;
    left: 22px;
    display: grid;
    width: 27px;
    height: 27px;
    place-items: center;
    content: "i";
    color: var(--rk-white);
    border-radius: 50%;
    background: var(--rk-blue);
    font-size: 0.84rem;
    font-weight: 900;
  }

  #rk-pipe-guide .rk-pipe-note.is-warning {
    border-color: #efd98d;
    background: var(--rk-yellow-soft);
  }

  #rk-pipe-guide .rk-pipe-note.is-warning::before { background: var(--rk-yellow); color: var(--rk-dark); }
  #rk-pipe-guide .rk-pipe-note.is-danger { border-color: #f0c1bc; background: var(--rk-red-soft); }
  #rk-pipe-guide .rk-pipe-note.is-danger::before { content: "!"; background: var(--rk-red); }
  #rk-pipe-guide .rk-pipe-note.is-good { border-color: #b7dfd3; background: var(--rk-green-soft); }
  #rk-pipe-guide .rk-pipe-note.is-good::before { content: "✓"; background: var(--rk-green); }

  #rk-pipe-guide .rk-pipe-tool {
    margin-top: 30px;
    overflow: hidden;
    color: var(--rk-white);
    border: 1px solid rgba(37, 199, 216, 0.32);
    border-radius: 24px;
    background: linear-gradient(145deg, #0e2636, #123f53 62%, #0d5565);
    box-shadow: 0 26px 60px rgba(16, 37, 54, 0.22);
  }

  #rk-pipe-guide .rk-pipe-tool-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 24px;
    padding: 30px 32px 24px;
    border-bottom: 1px solid rgba(255, 255, 255, 0.12);
  }

  #rk-pipe-guide .rk-pipe-tool-head h3 {
    margin-bottom: 7px;
    color: var(--rk-white);
    font-size: clamp(1.35rem, 2.8vw, 1.9rem);
  }

  #rk-pipe-guide .rk-pipe-tool-head p {
    max-width: 720px;
    margin: 0;
    color: #cde4eb;
  }

  #rk-pipe-guide .rk-pipe-tool-badge {
    flex: 0 0 auto;
    padding: 8px 12px;
    color: #8af4ff;
    border: 1px solid rgba(138, 244, 255, 0.35);
    border-radius: 999px;
    background: rgba(37, 199, 216, 0.1);
    font-size: 0.72rem;
    font-weight: 850;
    letter-spacing: 0.07em;
    text-transform: uppercase;
  }

  #rk-pipe-guide .rk-pipe-tool-body {
    display: grid;
    grid-template-columns: minmax(285px, 0.78fr) minmax(0, 1.22fr);
    gap: 22px;
    padding: 26px;
  }

  #rk-pipe-guide .rk-pipe-panel {
    min-width: 0;
    padding: 23px;
    border: 1px solid rgba(255, 255, 255, 0.13);
    border-radius: 19px;
    background: rgba(255, 255, 255, 0.075);
  }

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

  #rk-pipe-guide .rk-pipe-panel h4 {
    margin: 23px 0 11px;
    font-size: 0.92rem;
  }

  #rk-pipe-guide .rk-pipe-mode {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 9px;
    margin-bottom: 21px;
  }

  #rk-pipe-guide .rk-pipe-mode label {
    position: relative;
    display: grid;
    min-height: 60px;
    place-items: center;
    padding: 10px;
    cursor: pointer;
    color: #d8ebf1;
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 13px;
    background: rgba(255, 255, 255, 0.06);
    font-size: 0.78rem;
    font-weight: 820;
    line-height: 1.3;
    text-align: center;
  }

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

  #rk-pipe-guide .rk-pipe-mode label:has(input:checked) {
    color: #082a35;
    border-color: var(--rk-cyan);
    background: var(--rk-cyan);
    box-shadow: 0 8px 22px rgba(37, 199, 216, 0.25);
  }

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

  #rk-pipe-guide .rk-pipe-field {
    display: grid;
    min-width: 0;
    gap: 6px;
  }

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

  #rk-pipe-guide .rk-pipe-field label,
  #rk-pipe-guide .rk-pipe-field .rk-pipe-label {
    color: #d4e7ed;
    font-size: 0.76rem;
    font-weight: 790;
    line-height: 1.35;
  }

  #rk-pipe-guide .rk-pipe-field small {
    color: #a9c9d3;
    font-size: 0.68rem;
    line-height: 1.35;
  }

  #rk-pipe-guide .rk-pipe-input-wrap {
    position: relative;
    min-width: 0;
  }

  #rk-pipe-guide .rk-pipe-field input,
  #rk-pipe-guide .rk-pipe-field select {
    width: 100%;
    min-width: 0;
    height: 46px;
    padding: 9px 44px 9px 12px;
    color: var(--rk-dark);
    border: 1px solid rgba(255, 255, 255, 0.34);
    border-radius: 11px;
    outline: 0;
    background: var(--rk-white);
  }

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

  #rk-pipe-guide .rk-pipe-unit {
    position: absolute;
    top: 50%;
    right: 11px;
    color: #687d88;
    font-size: 0.7rem;
    font-weight: 850;
    pointer-events: none;
    transform: translateY(-50%);
  }

  #rk-pipe-guide .rk-pipe-field select {
    padding-right: 9px;
  }

  #rk-pipe-guide .rk-pipe-advanced {
    margin-top: 19px;
    border-top: 1px solid rgba(255, 255, 255, 0.13);
  }

  #rk-pipe-guide .rk-pipe-advanced summary {
    padding: 17px 0 0;
    cursor: pointer;
    color: #91eef7;
    font-size: 0.78rem;
    font-weight: 850;
  }

  #rk-pipe-guide .rk-pipe-advanced .rk-pipe-fields { margin-top: 14px; }

  #rk-pipe-guide .rk-pipe-calc-button {
    width: 100%;
    margin-top: 19px;
    padding: 13px 18px;
    cursor: pointer;
    color: #102536;
    border: 0;
    border-radius: 12px;
    background: linear-gradient(135deg, #7bf3ff, var(--rk-cyan));
    box-shadow: 0 12px 24px rgba(37, 199, 216, 0.22);
    font-weight: 900;
  }

  #rk-pipe-guide .rk-pipe-calc-button:hover,
  #rk-pipe-guide .rk-pipe-calc-button:focus-visible {
    filter: brightness(1.06);
    transform: translateY(-1px);
  }

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

  #rk-pipe-guide .rk-pipe-metric {
    min-width: 0;
    padding: 16px 13px;
    border: 1px solid rgba(255, 255, 255, 0.13);
    border-radius: 14px;
    background: rgba(255, 255, 255, 0.07);
  }

  #rk-pipe-guide .rk-pipe-metric span {
    display: block;
    margin-bottom: 3px;
    color: #b9d5de;
    font-size: 0.67rem;
    font-weight: 760;
    line-height: 1.3;
    text-transform: uppercase;
  }

  #rk-pipe-guide .rk-pipe-metric strong {
    display: block;
    overflow-wrap: anywhere;
    color: var(--rk-white);
    font-size: clamp(1.06rem, 2.4vw, 1.4rem);
    line-height: 1.2;
  }

  #rk-pipe-guide .rk-pipe-verdict {
    margin: 15px 0 0;
    padding: 17px 18px;
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-left: 5px solid var(--rk-cyan);
    border-radius: 13px;
    background: rgba(255, 255, 255, 0.075);
  }

  #rk-pipe-guide .rk-pipe-verdict.is-warning { border-left-color: var(--rk-yellow); }
  #rk-pipe-guide .rk-pipe-verdict.is-danger { border-left-color: var(--rk-red); }

  #rk-pipe-guide .rk-pipe-verdict strong {
    display: block;
    margin-bottom: 4px;
    color: var(--rk-white);
  }

  #rk-pipe-guide .rk-pipe-verdict p {
    margin: 0;
    color: #cee4eb;
    font-size: 0.82rem;
    line-height: 1.5;
  }

  #rk-pipe-guide .rk-pipe-table-wrap {
    margin-top: 17px;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, 0.14);
    border-radius: 14px;
  }

  #rk-pipe-guide table {
    width: 100%;
    margin: 0;
    border-collapse: collapse;
    font-size: 0.78rem;
  }

  #rk-pipe-guide th,
  #rk-pipe-guide td {
    padding: 12px 10px;
    text-align: left;
    vertical-align: middle;
  }

  #rk-pipe-guide th {
    color: var(--rk-white);
    border-bottom: 1px solid rgba(255, 255, 255, 0.16);
    background: rgba(255, 255, 255, 0.09);
    font-size: 0.68rem;
    font-weight: 840;
    letter-spacing: 0.03em;
    text-transform: uppercase;
  }

  #rk-pipe-guide td {
    color: #d7e9ee;
    border-bottom: 1px solid rgba(255, 255, 255, 0.09);
  }

  #rk-pipe-guide tbody tr:last-child td { border-bottom: 0; }
  #rk-pipe-guide tbody tr.is-recommended { background: rgba(37, 199, 216, 0.12); }

  #rk-pipe-guide .rk-pipe-status {
    display: inline-flex;
    justify-content: center;
    min-width: 76px;
    padding: 5px 8px;
    color: var(--rk-white);
    border-radius: 999px;
    background: var(--rk-green);
    font-size: 0.66rem;
    font-weight: 850;
    line-height: 1.2;
  }

  #rk-pipe-guide .rk-pipe-status.is-borderline { color: var(--rk-dark); background: var(--rk-yellow); }
  #rk-pipe-guide .rk-pipe-status.is-fail { background: var(--rk-red); }

  #rk-pipe-guide .rk-pipe-result-note {
    margin: 12px 0 0;
    color: #a8c8d1;
    font-size: 0.7rem;
    line-height: 1.45;
  }

  #rk-pipe-guide .rk-pipe-visuals {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(240px, 0.75fr);
    gap: 18px;
    margin-top: 22px;
  }

  #rk-pipe-guide .rk-pipe-chart-card,
  #rk-pipe-guide .rk-pipe-scheme-card {
    min-width: 0;
    padding: 22px;
    color: var(--rk-ink);
    border: 1px solid var(--rk-line);
    border-radius: 19px;
    background: var(--rk-white);
  }

  #rk-pipe-guide .rk-pipe-chart-card h3,
  #rk-pipe-guide .rk-pipe-scheme-card h3 { margin-bottom: 5px; }
  #rk-pipe-guide .rk-pipe-chart-card > p,
  #rk-pipe-guide .rk-pipe-scheme-card > p { margin: 0 0 14px; font-size: 0.78rem; line-height: 1.5; }

  #rk-pipe-guide .rk-pipe-chart-wrap {
    position: relative;
    width: 100%;
    min-height: 370px;
  }

  #rk-pipe-guide #rk-pipe-chart {
    display: block;
    width: 100%;
    height: 370px;
  }

  #rk-pipe-guide .rk-pipe-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 8px 15px;
    margin-top: 12px;
    color: var(--rk-text);
    font-size: 0.68rem;
    font-weight: 750;
  }

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

  #rk-pipe-guide .rk-pipe-legend i {
    width: 18px;
    height: 3px;
    border-radius: 3px;
  }

  #rk-pipe-guide .rk-pipe-scheme {
    display: block;
    width: 100%;
    min-height: 300px;
  }

  #rk-pipe-guide .rk-pipe-cta,
  #rk-pipe-guide .rk-pipe-final-cta {
    margin: 0 clamp(24px, 7vw, 82px) clamp(48px, 7vw, 78px);
    padding: clamp(28px, 5vw, 45px);
    color: var(--rk-white);
    border-radius: 23px;
    background:
      radial-gradient(circle at 88% 20%, rgba(37, 199, 216, 0.24), transparent 25%),
      linear-gradient(135deg, #102536, #174f62);
    box-shadow: 0 22px 48px rgba(16, 37, 54, 0.2);
  }

  #rk-pipe-guide .rk-pipe-cta h2,
  #rk-pipe-guide .rk-pipe-final-cta h2 {
    margin-top: 8px;
    color: var(--rk-white);
  }

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

  #rk-pipe-guide .rk-pipe-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    margin-top: 11px;
    padding: 13px 22px;
    color: var(--rk-white);
    border: 0;
    border-radius: 12px;
    background: linear-gradient(135deg, var(--rk-orange), #f14e2c);
    box-shadow: 0 12px 28px rgba(255, 106, 61, 0.28);
    font-weight: 900;
    line-height: 1.35;
    text-align: center;
    text-decoration: none;
  }

  #rk-pipe-guide .rk-pipe-cta-button:hover,
  #rk-pipe-guide .rk-pipe-cta-button:focus-visible {
    color: var(--rk-white);
    filter: brightness(1.06);
    transform: translateY(-2px);
  }

  #rk-pipe-guide .rk-pipe-disclosure {
    display: block;
    max-width: 780px;
    margin-top: 12px;
    color: #a9c8d1;
    font-size: 0.68rem;
    line-height: 1.45;
  }

  #rk-pipe-guide .rk-pipe-comparison {
    width: 100%;
    margin: 27px 0;
    border-collapse: separate;
    border-spacing: 0;
    color: var(--rk-ink);
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    overflow: hidden;
    background: var(--rk-white);
    font-size: 0.86rem;
  }

  #rk-pipe-guide .rk-pipe-comparison th {
    color: var(--rk-white);
    border-color: rgba(255, 255, 255, 0.15);
    background: var(--rk-navy);
  }

  #rk-pipe-guide .rk-pipe-comparison td {
    color: var(--rk-text);
    border-color: var(--rk-line);
  }

  #rk-pipe-guide .rk-pipe-comparison tbody tr:nth-child(even) td { background: var(--rk-soft); }
  #rk-pipe-guide .rk-pipe-comparison strong { color: var(--rk-dark); }

  #rk-pipe-guide .rk-pipe-flow-map {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 12px;
    align-items: stretch;
    margin: 28px 0;
  }

  #rk-pipe-guide .rk-pipe-flow-node {
    position: relative;
    display: grid;
    min-height: 118px;
    place-items: center;
    padding: 18px;
    color: var(--rk-dark);
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    background: var(--rk-white);
    font-weight: 850;
    line-height: 1.35;
    text-align: center;
  }

  #rk-pipe-guide .rk-pipe-flow-node:not(:last-child)::after {
    position: absolute;
    top: 50%;
    right: -13px;
    z-index: 2;
    content: "→";
    color: var(--rk-orange);
    font-size: 1.25rem;
    transform: translateY(-50%);
  }

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

  #rk-pipe-guide .rk-pipe-error {
    padding: 22px;
    border: 1px solid #f0c5bf;
    border-radius: 17px;
    background: var(--rk-red-soft);
  }

  #rk-pipe-guide .rk-pipe-error b {
    display: inline-block;
    margin-bottom: 8px;
    color: var(--rk-red);
    font-size: 0.72rem;
    letter-spacing: 0.07em;
    text-transform: uppercase;
  }

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

  #rk-pipe-guide .rk-pipe-steps {
    display: grid;
    gap: 14px;
    margin: 27px 0;
    counter-reset: rk-pipe-step;
  }

  #rk-pipe-guide .rk-pipe-step {
    position: relative;
    min-height: 76px;
    padding: 19px 20px 19px 76px;
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    background: var(--rk-white);
    counter-increment: rk-pipe-step;
  }

  #rk-pipe-guide .rk-pipe-step::before {
    position: absolute;
    top: 18px;
    left: 19px;
    display: grid;
    width: 40px;
    height: 40px;
    place-items: center;
    content: counter(rk-pipe-step, decimal-leading-zero);
    color: var(--rk-white);
    border-radius: 12px;
    background: var(--rk-blue);
    font-size: 0.76rem;
    font-weight: 900;
  }

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

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

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

  #rk-pipe-guide .rk-pipe-faq summary {
    position: relative;
    padding: 18px 54px 18px 20px;
    cursor: pointer;
    color: var(--rk-dark);
    font-weight: 850;
    line-height: 1.4;
    list-style: none;
  }

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

  #rk-pipe-guide .rk-pipe-faq summary::after {
    position: absolute;
    top: 50%;
    right: 17px;
    display: grid;
    width: 28px;
    height: 28px;
    place-items: center;
    content: "+";
    color: var(--rk-white);
    border-radius: 50%;
    background: var(--rk-blue);
    transform: translateY(-50%);
  }

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

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

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

  #rk-pipe-guide .rk-pipe-source-box {
    padding: 24px;
  }

  #rk-pipe-guide .rk-pipe-source-box p + p { margin-top: 13px; }

  #rk-pipe-guide .rk-pipe-update {
    margin-top: 15px;
    color: var(--rk-muted);
    font-size: 0.72rem;
    font-weight: 760;
  }

  #rk-pipe-guide .rk-pipe-author {
    position: relative;
    margin: 0 clamp(24px, 7vw, 82px) clamp(48px, 7vw, 78px);
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 24px;
    background: var(--rk-white);
    box-shadow: 0 18px 45px rgba(16, 37, 54, 0.09);
  }

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

  #rk-pipe-guide .rk-pipe-author-head {
    display: flex;
    align-items: center;
    justify-content: space-between;
    gap: 24px;
    padding: 26px 30px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-dark), var(--rk-navy));
  }

  #rk-pipe-guide .rk-pipe-author-head h2 {
    margin: 5px 0 2px;
    color: var(--rk-white);
    font-size: 1.7rem;
  }

  #rk-pipe-guide .rk-pipe-author-head p {
    margin: 0;
    color: #c9e2e9;
    font-size: 0.82rem;
  }

  #rk-pipe-guide .rk-pipe-author-mark {
    padding: 8px 12px;
    color: #8cf5ff;
    border: 1px solid rgba(140, 245, 255, 0.34);
    border-radius: 999px;
    font-size: 0.66rem;
    font-weight: 880;
    letter-spacing: 0.08em;
    white-space: nowrap;
  }

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

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

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

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

  #rk-pipe-guide .rk-pipe-author-name {
    color: var(--rk-dark);
    font-size: 1.12rem;
    font-weight: 900;
  }

  #rk-pipe-guide .rk-pipe-author-role {
    margin-top: 5px;
    color: var(--rk-muted);
    font-size: 0.75rem;
    line-height: 1.5;
  }

  #rk-pipe-guide .rk-pipe-author-social-label {
    margin-top: 18px;
    color: var(--rk-muted);
    font-size: 0.67rem;
    font-weight: 800;
    text-transform: uppercase;
  }

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

  #rk-pipe-guide .rk-pipe-author-social a {
    display: grid;
    width: 40px;
    height: 40px;
    place-items: center;
    color: var(--rk-white);
    border-radius: 11px;
    background: var(--rk-navy);
  }

  #rk-pipe-guide .rk-pipe-author-social a:hover { color: var(--rk-white); background: var(--rk-orange); }
  #rk-pipe-guide .rk-pipe-author-social svg { width: 21px; height: 21px; fill: currentColor; }

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

  #rk-pipe-guide .rk-pipe-author-quote {
    position: relative;
    margin: 0 0 22px;
    padding: 22px 24px 22px 70px;
    border: 0;
    border-radius: 17px;
    background: var(--rk-cyan-soft);
  }

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

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

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

  #rk-pipe-guide .rk-pipe-author-tab {
    padding: 11px;
    cursor: pointer;
    color: var(--rk-text);
    border-right: 1px solid var(--rk-line);
    background: var(--rk-soft);
    font-size: 0.73rem;
    font-weight: 850;
    text-align: center;
  }

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

  #rk-pipe-guide .rk-pipe-author-panel {
    display: none;
    min-height: 108px;
    padding: 20px;
    border: 1px solid var(--rk-line);
    border-top: 0;
    border-radius: 0 0 13px 13px;
  }

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

  #rk-pipe-author-about:checked ~ .rk-pipe-author-layout .rk-pipe-author-main .rk-pipe-author-tabs label[for="rk-pipe-author-about"],
  #rk-pipe-author-exp:checked ~ .rk-pipe-author-layout .rk-pipe-author-main .rk-pipe-author-tabs label[for="rk-pipe-author-exp"],
  #rk-pipe-author-sites:checked ~ .rk-pipe-author-layout .rk-pipe-author-main .rk-pipe-author-tabs label[for="rk-pipe-author-sites"] {
    color: var(--rk-white);
    background: var(--rk-blue);
  }

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

  #rk-pipe-guide .rk-pipe-site-links {
    display: flex;
    flex-wrap: wrap;
    gap: 8px;
    margin-top: 12px;
  }

  #rk-pipe-guide .rk-pipe-site-links a {
    padding: 7px 10px;
    border: 1px solid var(--rk-line);
    border-radius: 999px;
    background: var(--rk-soft);
    font-size: 0.72rem;
    font-weight: 800;
    text-decoration: none;
  }

  #rk-pipe-guide .rk-pipe-final-cta {
    margin-bottom: clamp(32px, 6vw, 68px);
  }

  @media (max-width: 980px) {
    #rk-pipe-guide .rk-pipe-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-pipe-guide .rk-pipe-tool-body { grid-template-columns: 1fr; }
    #rk-pipe-guide .rk-pipe-visuals { grid-template-columns: 1fr; }
    #rk-pipe-guide .rk-pipe-author-layout { grid-template-columns: 240px minmax(0, 1fr); }
  }

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

    #rk-pipe-guide .rk-pipe-shell { border-radius: 19px; }
    #rk-pipe-guide .rk-pipe-hero-inner { padding: 45px 22px; }
    #rk-pipe-guide .rk-pipe-meta { display: grid; gap: 8px; }
    #rk-pipe-guide .rk-pipe-nav { padding: 14px 16px; }
    #rk-pipe-guide .rk-pipe-nav strong { width: 100%; }
    #rk-pipe-guide .rk-pipe-section { padding: 42px 19px; }
    #rk-pipe-guide .rk-pipe-answer,
    #rk-pipe-guide .rk-pipe-grid-2,
    #rk-pipe-guide .rk-pipe-grid-3,
    #rk-pipe-guide .rk-pipe-grid-4,
    #rk-pipe-guide .rk-pipe-errors,
    #rk-pipe-guide .rk-pipe-flow-map { grid-template-columns: 1fr; }
    #rk-pipe-guide .rk-pipe-flow-node:not(:last-child)::after {
      top: auto;
      right: 50%;
      bottom: -21px;
      transform: translateX(50%) rotate(90deg);
    }
    #rk-pipe-guide .rk-pipe-tool { border-radius: 18px; }
    #rk-pipe-guide .rk-pipe-tool-head { display: grid; padding: 24px 18px 20px; }
    #rk-pipe-guide .rk-pipe-tool-badge { justify-self: start; }
    #rk-pipe-guide .rk-pipe-tool-body { padding: 14px; }
    #rk-pipe-guide .rk-pipe-panel { padding: 18px 14px; }
    #rk-pipe-guide .rk-pipe-result-top { grid-template-columns: 1fr; }
    #rk-pipe-guide .rk-pipe-chart-card,
    #rk-pipe-guide .rk-pipe-scheme-card { padding: 18px 13px; }
    #rk-pipe-guide .rk-pipe-cta,
    #rk-pipe-guide .rk-pipe-final-cta,
    #rk-pipe-guide .rk-pipe-author { margin-left: 16px; margin-right: 16px; }
    #rk-pipe-guide .rk-pipe-cta-button { width: 100%; }
    #rk-pipe-guide .rk-pipe-author-head { display: grid; padding: 23px 20px; }
    #rk-pipe-guide .rk-pipe-author-mark { justify-self: start; }
    #rk-pipe-guide .rk-pipe-author-layout { grid-template-columns: 1fr; }
    #rk-pipe-guide .rk-pipe-author-side { border-right: 0; border-bottom: 1px solid var(--rk-line); }
    #rk-pipe-guide .rk-pipe-author-main { padding: 22px 18px; }
    #rk-pipe-guide .rk-pipe-author-quote { padding: 66px 20px 20px; }
    #rk-pipe-guide .rk-pipe-author-quote::before { top: 5px; left: 18px; }

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

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

    #rk-pipe-guide .rk-pipe-table-wrap thead,
    #rk-pipe-guide .rk-pipe-comparison thead { display: none; }

    #rk-pipe-guide .rk-pipe-table-wrap tr,
    #rk-pipe-guide .rk-pipe-comparison tr {
      margin-bottom: 13px;
      overflow: hidden;
      border: 1px solid rgba(255, 255, 255, 0.16);
      border-radius: 14px;
      background: rgba(255, 255, 255, 0.07);
    }

    #rk-pipe-guide .rk-pipe-comparison tr {
      border-color: var(--rk-line);
      background: var(--rk-white);
    }

    #rk-pipe-guide .rk-pipe-table-wrap td,
    #rk-pipe-guide .rk-pipe-comparison td {
      padding: 10px 12px;
      border-bottom: 1px solid rgba(255, 255, 255, 0.1);
    }

    #rk-pipe-guide .rk-pipe-comparison td { border-bottom-color: var(--rk-line); }

    #rk-pipe-guide .rk-pipe-table-wrap td::before,
    #rk-pipe-guide .rk-pipe-comparison td::before {
      display: block;
      margin-bottom: 3px;
      content: attr(data-label);
      color: #9ec5cf;
      font-size: 0.64rem;
      font-weight: 850;
      letter-spacing: 0.04em;
      text-transform: uppercase;
    }

    #rk-pipe-guide .rk-pipe-comparison td::before { color: var(--rk-blue); }
    #rk-pipe-guide .rk-pipe-table-wrap tr:last-child,
    #rk-pipe-guide .rk-pipe-comparison tr:last-child { margin-bottom: 0; }
    #rk-pipe-guide .rk-pipe-table-wrap td:last-child,
    #rk-pipe-guide .rk-pipe-comparison td:last-child { border-bottom: 0; }
  }

  @media (max-width: 520px) {
    #rk-pipe-guide .rk-pipe-hero-title { font-size: 2.15rem; }
    #rk-pipe-guide .rk-pipe-mode,
    #rk-pipe-guide .rk-pipe-fields { grid-template-columns: 1fr; }
    #rk-pipe-guide .rk-pipe-field.is-wide { grid-column: auto; }
    #rk-pipe-guide .rk-pipe-chart-wrap { min-height: 325px; }
    #rk-pipe-guide #rk-pipe-chart { height: 325px; }
    #rk-pipe-guide .rk-pipe-author-tabs { grid-template-columns: 1fr; }
    #rk-pipe-guide .rk-pipe-author-tab { border-right: 0; border-bottom: 1px solid var(--rk-line); }
  }

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

<article id="rk-pipe-guide" aria-label="Dobór średnicy rury zasilającej rozdzielacz ogrzewania podłogowego">
  <div class="rk-pipe-shell">
    <div class="rk-pipe-progress-track" aria-hidden="true"><div class="rk-pipe-progress" id="rk-pipe-progress"></div></div>

    <header class="rk-pipe-hero">
      <div class="rk-pipe-hero-inner">
        <span class="rk-pipe-eyebrow"><b aria-hidden="true"></b> Hydraulika podłogówki • kalkulator 2026</span>
        <div class="rk-pipe-hero-title">Średnicy rury do rozdzielacza nie wybiera się z samej liczby pętli</div>
        <p class="rk-pipe-hero-lead">Oblicz całkowity przepływ z mocy i ΔT albo wpisz wartość znaną z projektu. Następnie porównaj rzeczywiste średnice wewnętrzne, prędkość oraz straty ciśnienia na całej drodze zasilania i powrotu.</p>
        <div class="rk-pipe-meta">
          <span><i aria-hidden="true"></i> Czytanie: około 18 minut</span>
          <span><i aria-hidden="true"></i> Kalkulator i dynamiczny wykres</span>
          <span><i aria-hidden="true"></i> Aktualizacja: 29 sierpnia 2026 r.</span>
        </div>
      </div>
    </header>

    <nav class="rk-pipe-nav" aria-label="Spis treści artykułu">
      <strong>Na skróty</strong>
      <a href="#rk-pipe-answer">Szybka odpowiedź</a>
      <a href="#rk-pipe-flow">Przepływ</a>
      <a href="#rk-pipe-calculator">Kalkulator</a>
      <a href="#rk-pipe-comparison">20, 25 czy 32?</a>
      <a href="#rk-pipe-pump">Pompa i źródło</a>
      <a href="#rk-pipe-errors">Błędy</a>
      <a href="#rk-pipe-howto">Checklista</a>
      <a href="#rk-pipe-faq">FAQ</a>
    </nav>

    <main>
      <section class="rk-pipe-section" id="rk-pipe-answer">
        <span class="rk-pipe-kicker">Odpowiedź w 60 sekund</span>
        <h2>Jaka średnica rury zasilającej rozdzielacz jest właściwa?</h2>
        <p class="rk-pipe-intro">Nie istnieje jedna średnica właściwa dla każdego rozdzielacza z sześcioma, ośmioma albo dwunastoma pętlami. Najpierw trzeba określić całkowity przepływ projektowy, a później sprawdzić prędkość i stratę ciśnienia dla rzeczywistej średnicy wewnętrznej przewodu oraz długości magistrali.</p>

        <div class="rk-pipe-answer">
          <div class="rk-pipe-answer-main">
            <h3>Najpierw przepływ, później średnica</h3>
            <p><strong>Przepływ przez wspólną rurę wynika z mocy przenoszonej do instalacji i projektowej różnicy temperatur albo z sumy przepływów wszystkich pracujących pętli.</strong> Liczba obwodów jest informacją pomocniczą, ale sama nie wyznacza ani litrów na minutę, ani średnicy.</p>
          </div>
          <div class="rk-pipe-answer-side">
            <h3>Długość nadal ma znaczenie</h3>
            <p>Nie służy jednak do wyznaczania przepływu. Długość zasilania i powrotu decyduje, jak duża będzie strata ciśnienia przy danym przepływie oraz średnicy.</p>
          </div>
        </div>

        <div class="rk-pipe-grid-3">
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Krok 1 • przepływ</span><h3>Moc i ΔT albo suma pętli</h3><p>Ustal, ile wody ma w projektowym punkcie pracy przejść przez rozdzielacz. Bez tej wartości porównanie 20, 25 i 32 mm jest zgadywaniem.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Krok 2 • geometria</span><h3>Średnica wewnętrzna</h3><p>Oznaczenie 25 × 2,5 mm oznacza około 20 mm światła przewodu. To pole przekroju wewnętrznego decyduje o prędkości wody.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Krok 3 • opór</span><h3>Cała para przewodów</h3><p>Sprawdź stratę na zasilaniu i powrocie, a następnie dodaj armaturę. Dopiero taki wynik można zestawić z dostępnym ciśnieniem pompy.</p></article>
        </div>

        <div class="rk-pipe-note is-warning"><p><strong>Rura może spełnić założenie dotyczące prędkości, ale nie przejść kontroli strat ciśnienia.</strong> Dlatego sam wzór na średnicę wynikającą z przepływu i prędkości jest jedynie pierwszym filtrem, a nie kompletnym doborem.</p></div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-flow">
        <span class="rk-pipe-kicker">Podstawa obliczeń</span>
        <h2>Jak obliczyć całkowity przepływ do rozdzielacza?</h2>
        <p class="rk-pipe-intro">Są dwie poprawne drogi. Jeżeli znasz projektowe przepływy pętli, sumujesz je dla obwodów mogących pracować jednocześnie. Jeżeli znasz moc cieplną obsługiwaną przez rozdzielacz, obliczasz przepływ z bilansu energii.</p>

        <div class="rk-pipe-formula" aria-label="Wzór na przepływ wody z mocy i różnicy temperatur">
          <strong>V̇ [m³/h] ≈ Φ [kW] ÷ (1,163 × ΔT [K])</strong>
          <span>Uproszczona zależność dla wody. Przy innym medium trzeba użyć jego gęstości i ciepła właściwego.</span>
        </div>

        <div class="rk-pipe-grid-2">
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Metoda A</span><h3>Z mocy rozdzielacza</h3><p>Jeżeli rozdzielacz ma przenieść 8 kW przy ΔT równym 7 K, orientacyjny przepływ wynosi około 0,98 m³/h, czyli 16,4 l/min. Zmniejszenie ΔT przy tej samej mocy zwiększa wymagany przepływ.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Metoda B</span><h3>Z przepływów pętli</h3><p>Dodaj wartości obliczone dla wszystkich pętli podłączonych do rozdzielacza. Projektowe nastawy można później odczytać na <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach rozdzielacza</a>.</p></article>
        </div>

        <h3>Dlaczego liczba metrów rury nie wyznacza przepływu?</h3>
        <p>Długość obwodu zmienia opór hydrauliczny. Nie mówi jednak, jaką moc ma przekazać pętla. Dwie pętle po 80 m mogą obsługiwać pomieszczenia o różnych stratach ciepła i wymagać różnych przepływów. Odwrotna sytuacja także jest możliwa: krótszy obwód w mocno obciążonej łazience może potrzebować większego przepływu niż dłuższa pętla w sypialni.</p>
        <p>Jeżeli nie znasz mocy rozdzielacza ani przepływów pętli, najpierw potrzebne jest <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne</a>. Przyjęcie jednej wartości W/m² dla całego budynku może być punktem do orientacyjnego scenariusza, ale nie zastępuje obliczeń poszczególnych pomieszczeń.</p>

        <div class="rk-pipe-note"><p>Znaczenie różnicy zasilanie–powrót i wpływ ΔT na przepływ szerzej omawia poradnik o <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">spadku temperatury w instalacji</a>.</p></div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-calculator">
        <span class="rk-pipe-kicker">Narzędzie interaktywne</span>
        <h2>Kalkulator średnicy rury zasilającej rozdzielacz</h2>
        <p class="rk-pipe-intro">Wybierz sposób podania przepływu, wpisz odległość do rozdzielacza i porównaj typowe wymiary rur wielowarstwowych. Wynik korzysta z równania Darcy’ego-Weisbacha i pokazuje osobno prędkość, liniową stratę ciśnienia oraz stratę na parze przewodów.</p>

        <div class="rk-pipe-tool" aria-label="Kalkulator hydrauliczny rury do rozdzielacza">
          <div class="rk-pipe-tool-head">
            <div><h3>Analizator magistrali zasilającej i powrotnej</h3><p>Wynik zmienia się automatycznie. Domyślne limity są kryteriami kontrolnymi kalkulatora, a nie uniwersalną normą dla każdej instalacji.</p></div>
            <span class="rk-pipe-tool-badge">Model dla wody</span>
          </div>

          <div class="rk-pipe-tool-body">
            <div class="rk-pipe-panel">
              <h3>Dane wejściowe</h3>

              <div class="rk-pipe-mode" role="radiogroup" aria-label="Sposób podania przepływu">
                <label><input type="radio" name="rk-pipe-mode" value="power" checked> Znam moc rozdzielacza</label>
                <label><input type="radio" name="rk-pipe-mode" value="flow"> Znam całkowity przepływ</label>
              </div>

              <div class="rk-pipe-fields">
                <div class="rk-pipe-field" id="rk-pipe-power-field">
                  <label for="rk-pipe-power">Moc obsługiwana przez rozdzielacz</label>
                  <div class="rk-pipe-input-wrap"><input id="rk-pipe-power" type="number" min="0.5" max="50" step="0.1" value="8" inputmode="decimal"><span class="rk-pipe-unit">kW</span></div>
                </div>

                <div class="rk-pipe-field" id="rk-pipe-flow-field" hidden>
                  <label for="rk-pipe-known-flow">Znany przepływ całkowity</label>
                  <div class="rk-pipe-input-wrap"><input id="rk-pipe-known-flow" type="number" min="0.1" max="250" step="0.1" value="16.4" inputmode="decimal"><span class="rk-pipe-unit" id="rk-pipe-flow-unit-label">l/min</span></div>
                </div>

                <div class="rk-pipe-field" id="rk-pipe-flow-unit-field" hidden>
                  <label for="rk-pipe-flow-unit">Jednostka przepływu</label>
                  <select id="rk-pipe-flow-unit"><option value="lmin">l/min</option><option value="m3h">m³/h</option></select>
                </div>

                <div class="rk-pipe-field">
                  <label for="rk-pipe-delta">Projektowe ΔT</label>
                  <div class="rk-pipe-input-wrap"><input id="rk-pipe-delta" type="number" min="3" max="20" step="0.5" value="7" inputmode="decimal"><span class="rk-pipe-unit">K</span></div>
                </div>

                <div class="rk-pipe-field">
                  <label for="rk-pipe-distance">Odległość do rozdzielacza</label>
                  <div class="rk-pipe-input-wrap"><input id="rk-pipe-distance" type="number" min="1" max="150" step="0.5" value="10" inputmode="decimal"><span class="rk-pipe-unit">m / 1 strona</span></div>
                </div>

                <div class="rk-pipe-field">
                  <label for="rk-pipe-temp">Średnia temperatura wody</label>
                  <div class="rk-pipe-input-wrap"><input id="rk-pipe-temp" type="number" min="10" max="70" step="0.5" value="32" inputmode="decimal"><span class="rk-pipe-unit">°C</span></div>
                </div>

                <div class="rk-pipe-field is-wide">
                  <label for="rk-pipe-extra">Dodatkowa strata armatury</label>
                  <div class="rk-pipe-input-wrap"><input id="rk-pipe-extra" type="number" min="0" max="100" step="0.5" value="5" inputmode="decimal"><span class="rk-pipe-unit">kPa</span></div>
                  <small>Opcjonalna suma dla zaworów, filtra, separatora i innych elementów wspólnej drogi.</small>
                </div>
              </div>

              <details class="rk-pipe-advanced">
                <summary>Ustawienia kryteriów kontrolnych</summary>
                <div class="rk-pipe-fields">
                  <div class="rk-pipe-field">
                    <label for="rk-pipe-max-speed">Maksymalna prędkość</label>
                    <div class="rk-pipe-input-wrap"><input id="rk-pipe-max-speed" type="number" min="0.2" max="2" step="0.05" value="0.8" inputmode="decimal"><span class="rk-pipe-unit">m/s</span></div>
                  </div>
                  <div class="rk-pipe-field">
                    <label for="rk-pipe-max-gradient">Maksymalna strata liniowa</label>
                    <div class="rk-pipe-input-wrap"><input id="rk-pipe-max-gradient" type="number" min="30" max="1000" step="10" value="200" inputmode="numeric"><span class="rk-pipe-unit">Pa/m</span></div>
                  </div>
                  <div class="rk-pipe-field is-wide">
                    <label for="rk-pipe-max-total">Budżet dla pary przewodów i wpisanej armatury</label>
                    <div class="rk-pipe-input-wrap"><input id="rk-pipe-max-total" type="number" min="2" max="100" step="1" value="25" inputmode="decimal"><span class="rk-pipe-unit">kPa</span></div>
                    <small>Dotyczy tylko analizowanego odcinka wspólnego, a nie całego obiegu krytycznego.</small>
                  </div>
                </div>
              </details>

              <button class="rk-pipe-calc-button" id="rk-pipe-calculate" type="button">Przelicz warianty rur</button>
            </div>

            <div class="rk-pipe-panel">
              <h3>Wynik dla wspólnej magistrali</h3>
              <div class="rk-pipe-result-top">
                <div class="rk-pipe-metric"><span>Przepływ</span><strong id="rk-pipe-result-flow">0,98 m³/h</strong></div>
                <div class="rk-pipe-metric"><span>W litrach</span><strong id="rk-pipe-result-lmin">16,4 l/min</strong></div>
                <div class="rk-pipe-metric"><span>Moc przy ΔT</span><strong id="rk-pipe-result-power">8,0 kW</strong></div>
                <div class="rk-pipe-metric"><span>Zasilanie + powrót</span><strong id="rk-pipe-result-length">20,0 m</strong></div>
              </div>

              <div class="rk-pipe-verdict" id="rk-pipe-verdict" role="status" aria-live="polite">
                <strong id="rk-pipe-verdict-title">Trwa obliczanie wariantów</strong>
                <p id="rk-pipe-verdict-text">Kalkulator porówna prędkość i stratę liniową dla każdej średnicy wewnętrznej.</p>
              </div>

              <div class="rk-pipe-table-wrap">
                <table aria-label="Porównanie hydrauliczne średnic rur">
                  <thead><tr><th>Rura</th><th>d<sub>i</sub></th><th>Prędkość</th><th>Re / przepływ</th><th>Strata liniowa</th><th>Para + armatura</th><th>Ocena</th></tr></thead>
                  <tbody id="rk-pipe-results-body"></tbody>
                </table>
              </div>
              <p class="rk-pipe-result-note">Wymiary 16 × 2, 20 × 2, 25 × 2,5, 32 × 3, 40 × 4 i 50 × 4,5 mm są wariantami referencyjnymi. Przed wyborem sprawdź dokładną średnicę wewnętrzną konkretnego przewodu i opory zastosowanej armatury.</p>
            </div>
          </div>

          <div class="rk-pipe-visuals">
            <div class="rk-pipe-chart-card">
              <h3>Jak przepływ zmienia jednostkową stratę ciśnienia?</h3>
              <p>Krzywe przedstawiają ten sam model dla rur 20 × 2, 25 × 2,5, 32 × 3 oraz 40 × 4 mm. Linia pionowa oznacza przepływ podany lub obliczony przez użytkownika.</p>
              <div class="rk-pipe-chart-wrap"><canvas id="rk-pipe-chart" role="img" aria-label="Wykres straty ciśnienia w zależności od przepływu dla czterech średnic rur"></canvas></div>
              <div class="rk-pipe-legend" aria-hidden="true">
                <span><i style="background:#d94b3d"></i>20 × 2</span><span><i style="background:#e6ad2f"></i>25 × 2,5</span><span><i style="background:#078fbe"></i>32 × 3</span><span><i style="background:#16836b"></i>40 × 4</span><span><i style="background:#695ac9"></i>Twój przepływ</span>
              </div>
            </div>

            <div class="rk-pipe-scheme-card">
              <h3>Co obejmuje obliczana droga?</h3>
              <p>Zasilanie i powrót przenoszą taki sam przepływ. Ich długości sumują się przy liczeniu strat.</p>
              <svg class="rk-pipe-scheme" viewBox="0 0 420 330" role="img" aria-label="Schemat źródła, pary przewodów i rozdzielacza">
                <defs><marker id="rk-pipe-arrow" viewBox="0 0 10 10" refX="8" refY="5" markerWidth="6" markerHeight="6" orient="auto-start-reverse"><path d="M 0 0 L 10 5 L 0 10 z" fill="#ff6a3d"></path></marker></defs>
                <rect x="20" y="105" width="105" height="105" rx="18" fill="#102536"></rect>
                <text x="72" y="145" text-anchor="middle" fill="#8cf5ff" font-size="13" font-weight="800">ŹRÓDŁO</text>
                <text x="72" y="166" text-anchor="middle" fill="#ffffff" font-size="13">+ pompa</text>
                <text x="72" y="187" text-anchor="middle" fill="#cde4eb" font-size="11">wspólny obieg</text>
                <rect x="295" y="78" width="105" height="160" rx="18" fill="#14384d"></rect>
                <text x="347" y="115" text-anchor="middle" fill="#8cf5ff" font-size="13" font-weight="800">ROZDZIELACZ</text>
                <line x1="318" y1="137" x2="376" y2="137" stroke="#ffffff" stroke-width="6" stroke-linecap="round"></line>
                <line x1="318" y1="191" x2="376" y2="191" stroke="#ffffff" stroke-width="6" stroke-linecap="round"></line>
                <path d="M326 137 V160 Q326 177 340 177 H354 Q368 177 368 160 V137" fill="none" stroke="#25c7d8" stroke-width="4"></path>
                <path d="M140 126 H279" fill="none" stroke="#ff6a3d" stroke-width="7" stroke-linecap="round" marker-end="url(#rk-pipe-arrow)"></path>
                <path d="M279 198 H140" fill="none" stroke="#25c7d8" stroke-width="7" stroke-linecap="round" marker-end="url(#rk-pipe-arrow)"></path>
                <text x="210" y="105" text-anchor="middle" fill="#d94b3d" font-size="12" font-weight="800">ZASILANIE</text>
                <text x="210" y="226" text-anchor="middle" fill="#078fbe" font-size="12" font-weight="800">POWRÓT</text>
                <rect x="125" y="258" width="170" height="50" rx="12" fill="#e8fbff" stroke="#b8e7ee"></rect>
                <text id="rk-pipe-scheme-flow" x="210" y="279" text-anchor="middle" fill="#102536" font-size="12" font-weight="800">0,98 m³/h w obu rurach</text>
                <text id="rk-pipe-scheme-length" x="210" y="297" text-anchor="middle" fill="#475967" font-size="11">10,0 m + 10,0 m</text>
              </svg>
            </div>
          </div>
        </div>

        <div class="rk-pipe-note is-danger"><p><strong>Model dotyczy wody i prostych odcinków przewodów.</strong> Dodatkowa strata armatury jest wartością wpisywaną przez użytkownika. Kalkulator nie zna rzeczywistych współczynników oporu kolan, zaworów, filtra, separatora, źródła ani rozdzielacza i nie sprawdza charakterystyki konkretnej pompy.</p></div>
      </section>

      <aside class="rk-pipe-cta" aria-label="Projekt z doborem magistrali i pompy obiegowej">
        <span class="rk-pipe-kicker" style="color:#7af0ff">Granica wyniku kalkulatora</span>
        <h2>Kalkulator sprawdza magistralę, ale nie cały obieg krytyczny</h2>
        <p>Wynik pokazuje przepływ, prędkość i orientacyjną stratę ciśnienia w parze przewodów przy podanych założeniach. Nie zna rzeczywistego przebiegu rur, kształtek, zaworów, filtra, separatora, oporu rozdzielacza, parametrów źródła ani najbardziej niekorzystnej pętli. Aby zatwierdzić średnicę, trzeba zestawić ją z pompą i całą drogą hydrauliczną.</p>
        <a class="rk-pipe-cta-button rk-pipe-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z doborem magistrali i pompy</a>
        <small class="rk-pipe-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
      </aside>

      <section class="rk-pipe-section" id="rk-pipe-comparison">
        <span class="rk-pipe-kicker">Porównanie wariantów</span>
        <h2>Rura 20, 25 czy 32 mm do rozdzielacza?</h2>
        <p class="rk-pipe-intro">Samo oznaczenie zewnętrzne nie wystarcza. Dla rur o różnych grubościach ścian ten sam wymiar zewnętrzny może oznaczać inne światło. Poniższe wartości służą do zrozumienia skali różnic, a nie do zatwierdzania konkretnego produktu.</p>

        <table class="rk-pipe-comparison" aria-label="Porównanie przykładowych wymiarów rur wielowarstwowych">
          <thead><tr><th>Oznaczenie</th><th>Przykładowe d<sub>i</sub></th><th>Co zmienia się hydraulicznie?</th><th>Kiedy nie wolno kończyć analizy?</th></tr></thead>
          <tbody>
            <tr><td data-label="Oznaczenie"><strong>16 × 2 mm</strong></td><td data-label="Przykładowe di">12 mm</td><td data-label="Wpływ hydrauliczny">Bardzo małe pole przekroju wspólnej magistrali. Wzrost przepływu szybko podnosi prędkość i stratę liniową.</td><td data-label="Dalsza kontrola">Nawet krótki odcinek trzeba policzyć. To typowy wymiar pętli, nie automatycznie właściwa rura do całego rozdzielacza.</td></tr>
            <tr><td data-label="Oznaczenie"><strong>20 × 2 mm</strong></td><td data-label="Przykładowe di">16 mm</td><td data-label="Wpływ hydrauliczny">Większy przekrój niż 16 × 2, ale przy dużym sumarycznym przepływie opory mogą nadal rosnąć bardzo szybko.</td><td data-label="Dalsza kontrola">Wynik zależy szczególnie od długości pary przewodów i przepływu wszystkich jednocześnie pracujących pętli.</td></tr>
            <tr><td data-label="Oznaczenie"><strong>25 × 2,5 mm</strong></td><td data-label="Przykładowe di">20 mm</td><td data-label="Wpływ hydrauliczny">Mniejsza prędkość i strata niż w rurze o świetle 16 mm przy identycznym przepływie.</td><td data-label="Dalsza kontrola">Nie wolno zatwierdzać wyłącznie na podstawie liczby sekcji rozdzielacza albo krótkiej tabeli „do ilu pętli”.</td></tr>
            <tr><td data-label="Oznaczenie"><strong>32 × 3 mm</strong></td><td data-label="Przykładowe di">26 mm</td><td data-label="Wpływ hydrauliczny">Znacznie większe pole przekroju ogranicza prędkość i opory magistrali.</td><td data-label="Dalsza kontrola">Nadal trzeba sprawdzić rzeczywiste złączki, zawory, średnice przejść i punkt pracy pompy.</td></tr>
            <tr><td data-label="Oznaczenie"><strong>40 × 4 mm</strong></td><td data-label="Przykładowe di">32 mm</td><td data-label="Wpływ hydrauliczny">Może być potrzebna przy dużym przepływie albo długim wspólnym odcinku, ale zwiększa koszt i objętość instalacji.</td><td data-label="Dalsza kontrola">Większa rura nie jest automatycznie błędem ani gwarancją dobrego projektu całego obiegu.</td></tr>
          </tbody>
        </table>

        <div class="rk-pipe-note"><p>Więcej o zapisie wymiarów, średnicy wewnętrznej i zastosowaniu przewodów znajdziesz w opracowaniu o <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnicach rur w ogrzewaniu podłogowym</a>.</p></div>

        <h3>Dlaczego pole przekroju zmienia się tak mocno?</h3>
        <p>Pole przekroju jest proporcjonalne do kwadratu średnicy wewnętrznej. Zwiększenie światła z 16 do 20 mm nie oznacza tylko 25% więcej miejsca. Pole przekroju rośnie o około 56%. Zmienia to prędkość, liczbę Reynoldsa, współczynnik tarcia oraz jednostkową stratę ciśnienia.</p>
        <div class="rk-pipe-formula" aria-label="Wzór na prędkość przepływu">
          <strong>v = 4V̇ ÷ (π × d<sub>i</sub>²)</strong>
          <span>Do wzoru wstawia się przepływ w m³/s i średnicę wewnętrzną w metrach.</span>
        </div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-length">
        <span class="rk-pipe-kicker">Długość magistrali</span>
        <h2>Dlaczego odległość rozdzielacza od źródła zmienia wynik?</h2>
        <p class="rk-pipe-intro">Jednostkowa strata w Pa/m mówi, ile ciśnienia tracimy na jednym metrze rury. Pompa musi jednak pokonać stratę na całym wspólnym odcinku oraz na obiegu krytycznym.</p>

        <div class="rk-pipe-grid-3">
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">5 m w jedną stronę</span><h3>10 m pary przewodów</h3><p>Krótka droga może utrzymać łączną stratę na akceptowalnym poziomie, nawet gdy jednostkowy opór nie jest szczególnie niski.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">20 m w jedną stronę</span><h3>40 m pary przewodów</h3><p>Przy tej samej rurze i przepływie strata liniowa całej magistrali będzie czterokrotnie większa niż dla pary o długości 10 m.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Armatura</span><h3>Nie wszystko da się przeliczyć na metry</h3><p>Zawory, filtry, separatory i zwężenia mają własne charakterystyki. Najdokładniej uwzględnia się dane konkretnego elementu przy projektowym przepływie.</p></article>
        </div>

        <div class="rk-pipe-formula" aria-label="Równanie Darcy'ego-Weisbacha">
          <strong>Δp = λ × (L ÷ d<sub>i</sub>) × (ρv² ÷ 2) + Σζ × (ρv² ÷ 2)</strong>
          <span>Pierwsza część opisuje stratę liniową, druga opory miejscowe. Całkowity obieg zawiera również elementy niewystępujące w kalkulatorze.</span>
        </div>

        <p>Równanie Darcy’ego-Weisbacha można stosować do przepływu laminarnego i turbulentnego po dobraniu właściwego współczynnika tarcia. Straty na zaworach i kształtkach wymagają uwzględnienia współczynników oporu lub charakterystyk elementów. Zależności te omawia materiał dydaktyczny <a href="https://www2.latech.edu/~hhegab/pages/me354/Lab3/Lab3_minorlosses_Sp97.htm" target="_blank" rel="noopener nofollow">Louisiana Tech University</a>.</p>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-supply-return">
        <span class="rk-pipe-kicker">Zasilanie i powrót</span>
        <h2>Czy przepływ trzeba pomnożyć razy dwa?</h2>
        <p class="rk-pipe-intro"><strong>Nie.</strong> Jeżeli przez rozdzielacz przepływa 1,0 m³/h, taki sam strumień płynie przewodem zasilającym i powrotnym. Nie dodajemy ich do siebie przy doborze średnicy. Podwajamy natomiast długość odcinka, gdy obliczamy stratę na parze rur.</p>

        <div class="rk-pipe-flow-map" aria-label="Przebieg przepływu przez instalację">
          <div class="rk-pipe-flow-node">Źródło ciepła i pompa</div>
          <div class="rk-pipe-flow-node">Rura zasilająca<br>V̇ całkowite</div>
          <div class="rk-pipe-flow-node">Rozdzielacz<br>podział na pętle</div>
          <div class="rk-pipe-flow-node">Rura powrotna<br>V̇ całkowite</div>
        </div>

        <p>Na rozdzielaczu wspólny strumień dzieli się pomiędzy równoległe obwody. Przepływy pętli sumują się w przewodzie wspólnym, ale ich strat ciśnienia nie dodaje się tak, jakby wszystkie pętle były połączone szeregowo. Wysokość podnoszenia wyznacza droga najbardziej niekorzystna wraz z elementami wspólnymi.</p>
        <p>Budowę i zadania tego elementu szerzej opisuje artykuł o <a href="https://projekt-ogrzewania.pl/rozdzielacz-do-podlogowki-kluczowy-element-systemu-ogrzewania-podlogowego/">rozdzielaczu ogrzewania podłogowego</a>.</p>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-branches">
        <span class="rk-pipe-kicker">Kilka rozdzielaczy</span>
        <h2>Jedna średnica nie musi występować na całej magistrali</h2>
        <p class="rk-pipe-intro">Jeżeli wspólny przewód zasila kilka rozdzielaczy, przepływ zmienia się w kolejnych odcinkach. Pierwszy fragment przenosi sumę przepływów wszystkich gałęzi. Za odejściem do pierwszego rozdzielacza dalszy odcinek przenosi już mniejszy strumień.</p>

        <div class="rk-pipe-grid-3">
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Odcinek A</span><h3>Przed pierwszym rozgałęzieniem</h3><p>Rura przenosi przepływ wszystkich rozdzielaczy mogących pracować jednocześnie. Zwykle jest to najbardziej obciążony fragment magistrali.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Odcinek B</span><h3>Za odejściem części przepływu</h3><p>Do kolejnej gałęzi płynie tylko suma obwodów pozostających dalej. Średnicę można analizować oddzielnie dla każdego odcinka.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Droga krytyczna</span><h3>Nie zawsze prowadzi do największego rozdzielacza</h3><p>Może ją wyznaczyć daleka lokalizacja, długa pętla, zawór o dużym oporze albo niekorzystna kombinacja kilku elementów.</p></article>
        </div>

        <div class="rk-pipe-note is-warning"><p>Jeżeli źródło i obieg podłogowy są rozdzielone hydraulicznie, trzeba osobno analizować stronę źródła i stronę instalacji. Zobacz, jak działa <a href="https://projekt-ogrzewania.pl/sprzeglo-hydrauliczne-w-instalacji-ogrzewania-podlogowego/">sprzęgło hydrauliczne</a>.</p></div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-pump">
        <span class="rk-pipe-kicker">Cały punkt pracy</span>
        <h2>Średnica magistrali a pompa obiegowa i źródło ciepła</h2>
        <p class="rk-pipe-intro">Dobór rury oraz pompy jest ze sobą powiązany. Rura wpływa na charakterystykę instalacji, natomiast pompa musi wytworzyć wymagany przepływ przy ciśnieniu potrzebnym do pokonania drogi krytycznej.</p>

        <div class="rk-pipe-grid-2">
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Przepływ Q</span><h3>Nie wystarcza sam symbol pompy</h3><p>Oznaczenie 25/40 albo 25/60 nie potwierdza jeszcze punktu pracy. Potrzebna jest charakterystyka pompy i suma oporów dla konkretnej drogi hydraulicznej.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Wysokość H</span><h3>Nie sumuj oporów pętli równoległych</h3><p>Do wysokości podnoszenia przyjmuje się elementy wspólne i najbardziej wymagającą gałąź, a nie arytmetyczną sumę strat wszystkich pętli.</p></article>
        </div>

        <p>Więcej zależności znajdziesz w poradniku o <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompie obiegowej w podłogówce</a>. Jeżeli znasz przepływ i opory obiegu, możesz również użyć <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulatora doboru pompy obiegowej</a>.</p>

        <h3>Czy pompa ciepła wymaga innej średnicy niż kocioł?</h3>
        <p>Rodzaj urządzenia nie wybiera średnicy bezpośrednio. Dla tego samego przepływu, medium, temperatury i przebiegu instalacji rura zachowuje się hydraulicznie podobnie niezależnie od tego, czy wodę ogrzała pompa ciepła, kocioł gazowy czy inne źródło.</p>
        <p>Źródło wpływa jednak na projektowe temperatury, dostępne ΔT, minimalne wymagane przepływy, sposób wpięcia i automatykę. Te parametry mogą pośrednio zmienić przepływ, a więc również wynik doboru magistrali.</p>

        <div class="rk-pipe-note is-good"><p><strong>Najpierw wyznacz punkt pracy instalacji.</strong> Następnie dobierz średnice odcinków i sprawdź, czy pompa osiąga potrzebne Q oraz H z rozsądną rezerwą, bez przenoszenia całego problemu na najwyższy bieg urządzenia.</p></div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-fluid">
        <span class="rk-pipe-kicker">Woda a glikol</span>
        <h2>Dlaczego kalkulator nie przelicza instalacji z glikolem?</h2>
        <p class="rk-pipe-intro">Dodatek glikolu zmienia gęstość, ciepło właściwe i przede wszystkim lepkość medium. Wpływ zależy od rodzaju glikolu, stężenia oraz temperatury. Nie można bezpiecznie zastąpić tych danych jedną uniwersalną poprawką procentową.</p>

        <div class="rk-pipe-grid-3">
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Ciepło właściwe</span><h3>Inny przepływ dla tej samej mocy</h3><p>Roztwór może przenosić inną ilość energii na jednostkę masy niż woda, dlatego wzór z współczynnikiem 1,163 przestaje być właściwy.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Lepkość</span><h3>Inny współczynnik tarcia</h3><p>W niskiej temperaturze mieszanina może być znacznie bardziej lepka, co zmienia liczbę Reynoldsa i straty ciśnienia.</p></article>
          <article class="rk-pipe-card"><span class="rk-pipe-card-number">Stężenie</span><h3>Potrzebne są dane konkretnego medium</h3><p>Obliczenia powinny korzystać z tabel lub charakterystyk właściwych dla wybranego produktu i stężenia roboczego.</p></article>
        </div>

        <p>Jeżeli instalacja ma być zabezpieczona przed zamarzaniem, przeczytaj opracowanie <a href="https://projekt-ogrzewania.pl/glikol-w-ogrzewaniu-podlogowym-prawda-i-mity-ktore-musi-znac-kazdy-inwestor/">glikol w ogrzewaniu podłogowym — prawda i mity</a>. W takim przypadku wynik powyższego kalkulatora dla wody nie powinien być używany jako dobór końcowy.</p>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-errors">
        <span class="rk-pipe-kicker">Najczęstsze pomyłki</span>
        <h2>Błędy przy doborze rury zasilającej rozdzielacz</h2>
        <div class="rk-pipe-errors">
          <article class="rk-pipe-error"><b>Błąd 01</b><h3>Przepływ z liczby metrów pętli</h3><p>Długość wpływa na opór, lecz docelowy przepływ wynika z mocy i ΔT. Stały przelicznik l/min na metr rury nie opisuje każdej instalacji.</p></article>
          <article class="rk-pipe-error"><b>Błąd 02</b><h3>Średnica z samej liczby obwodów</h3><p>Dziesięć pętli może przenosić różną łączną moc w dwóch budynkach. Bez zsumowania przepływów nie wiadomo, jaki strumień niesie magistrala.</p></article>
          <article class="rk-pipe-error"><b>Błąd 03</b><h3>Kontrola wyłącznie prędkości</h3><p>Właściwa prędkość nie gwarantuje akceptowalnej straty na długiej parze przewodów. Potrzebne są oba kryteria.</p></article>
          <article class="rk-pipe-error"><b>Błąd 04</b><h3>Używanie średnicy zewnętrznej we wzorze</h3><p>Przepływ odbywa się wewnątrz przewodu. Grubość ścianki trzeba odjąć po obu stronach, a dokładny wymiar potwierdzić w danych rury.</p></article>
          <article class="rk-pipe-error"><b>Błąd 05</b><h3>Podwajanie przepływu zasilania i powrotu</h3><p>Obie rury niosą ten sam strumień. Do strat sumuje się ich długości, lecz nie mnoży przepływu przez dwa.</p></article>
          <article class="rk-pipe-error"><b>Błąd 06</b><h3>Pomijanie zaworów i filtra</h3><p>Krótki element o małym prześwicie może powodować istotny opór. Sama analiza prostego przewodu nie opisuje całej magistrali.</p></article>
          <article class="rk-pipe-error"><b>Błąd 07</b><h3>Automatyczne straszenie kawitacją</h3><p>Wysoka prędkość zwiększa opory i może sprzyjać hałasowi, ale kawitacja zależy także od lokalnego ciśnienia bezwzględnego, temperatury oraz warunków po stronie ssawnej pompy.</p></article>
          <article class="rk-pipe-error"><b>Błąd 08</b><h3>Założenie, że większa rura wychłodzi podłogę</h3><p>Jeśli pompa dostarcza wymagany przepływ, większy przekrój nie odbiera instalacji mocy. Zwykle obniża prędkość i opory, kosztem ceny, miejsca oraz większego zładu.</p></article>
        </div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-howto">
        <span class="rk-pipe-kicker">Procedura projektowa</span>
        <h2>Jak dobrać średnicę magistrali krok po kroku?</h2>
        <div class="rk-pipe-steps">
          <article class="rk-pipe-step"><h3>Ustal moc obsługiwaną przez rozdzielacz</h3><p>Skorzystaj z obciążeń cieplnych pomieszczeń i ustal, które obwody mogą pracować jednocześnie. Nie wyprowadzaj mocy wyłącznie z liczby sekcji.</p></article>
          <article class="rk-pipe-step"><h3>Przyjmij projektowe temperatury i ΔT</h3><p>Parametry zasilania oraz powrotu muszą być spójne z emisją podłogi i źródłem ciepła. ΔT wpływa bezpośrednio na wymagany przepływ.</p></article>
          <article class="rk-pipe-step"><h3>Oblicz przepływ całkowity</h3><p>Wyznacz go z mocy i właściwości medium albo zsumuj projektowe przepływy poszczególnych pętli.</p></article>
          <article class="rk-pipe-step"><h3>Podziel instalację na odcinki</h3><p>W systemie z kilkoma rozdzielaczami zaznacz miejsca rozgałęzień. Każdy fragment może przenosić inny strumień.</p></article>
          <article class="rk-pipe-step"><h3>Sprawdź rzeczywistą średnicę wewnętrzną</h3><p>Odczytaj wymiar i grubość ścianki konkretnej rury. Uwzględnij także średnice przejść w złączkach i armaturze.</p></article>
          <article class="rk-pipe-step"><h3>Policz prędkość oraz stratę liniową</h3><p>Porównaj kilka średnic w tych samych warunkach. Nie zatwierdzaj przewodu na podstawie tylko jednego parametru.</p></article>
          <article class="rk-pipe-step"><h3>Dodaj zasilanie, powrót i opory miejscowe</h3><p>Do długości przyjmij oba przewody. Dodaj charakterystyki zaworów, filtra, separatora, rozdzielacza i pozostałych elementów drogi krytycznej.</p></article>
          <article class="rk-pipe-step"><h3>Zestaw instalację z charakterystyką pompy</h3><p>Sprawdź, czy urządzenie osiąga wymagany przepływ przy obliczonym ciśnieniu oraz czy punkt pracy pozostaje w odpowiednim obszarze charakterystyki.</p></article>
        </div>

        <div class="rk-pipe-note is-good"><p>Profesjonalny dokument powinien przekazać wykonawcy nie tylko średnice, ale także <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">rzuty pętli, przepływy, straty ciśnienia, dobór rozdzielaczy i nastawy</a>.</p></div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-faq">
        <span class="rk-pipe-kicker">Pytania inwestorów i wykonawców</span>
        <h2>Jaka średnica rury do rozdzielacza — FAQ</h2>
        <div class="rk-pipe-faq">
          <details><summary>Jaka średnica rury do rozdzielacza z 10 pętlami?</summary><div class="rk-pipe-faq-answer"><p>Nie można jej poprawnie wyznaczyć z samej liczby pętli. Potrzebna jest suma projektowych przepływów albo moc obsługiwana przez rozdzielacz i projektowe ΔT. Następnie sprawdza się średnicę wewnętrzną, prędkość, długość pary przewodów i straty ciśnienia.</p></div></details>
          <details><summary>Rura 20 czy 25 mm do rozdzielacza podłogówki?</summary><div class="rk-pipe-faq-answer"><p>Porównanie wymaga znajomości średnic wewnętrznych, przepływu oraz długości. Rura 25 × 2,5 mm ma zwykle około 20 mm światła, a 20 × 2 mm około 16 mm. Różnica pola przekroju i oporu jest znacznie większa, niż sugeruje samo porównanie średnic zewnętrznych.</p></div></details>
          <details><summary>Kiedy stosuje się rurę 32 mm do rozdzielacza?</summary><div class="rk-pipe-faq-answer"><p>Może być uzasadniona przy większym przepływie, długim odcinku wspólnym albo wymagającym budżecie ciśnienia. Nie istnieje jednak uniwersalna liczba pętli, od której zawsze trzeba zastosować 32 mm. Wynik zależy od światła konkretnej rury i całej hydrauliki.</p></div></details>
          <details><summary>Czy długość pętli wpływa na średnicę rury zasilającej?</summary><div class="rk-pipe-faq-answer"><p>Pośrednio. Długość pętli wpływa na opór obiegu krytycznego, lecz nie wyznacza całkowitego przepływu. Wspólna magistrala przenosi sumę przepływów wynikających z mocy pętli i ΔT.</p></div></details>
          <details><summary>Czy przepływ na zasilaniu i powrocie trzeba zsumować?</summary><div class="rk-pipe-faq-answer"><p>Nie. Na zasilaniu i powrocie płynie ten sam strumień, dlatego do kontroli prędkości nie podwaja się przepływu. Przy obliczaniu strat sumuje się natomiast długość obu rur.</p></div></details>
          <details><summary>Jaka prędkość w rurze zasilającej jest prawidłowa?</summary><div class="rk-pipe-faq-answer"><p>Nie ma jednej wartości właściwej dla wszystkich instalacji. Projektant przyjmuje kryteria uwzględniające stratę ciśnienia, ryzyko hałasu, średnicę, rodzaj instalacji i pracę pompy. Kalkulator pozwala zmienić granicę prędkości, aby nie przedstawiać ustawienia domyślnego jako uniwersalnej normy.</p></div></details>
          <details><summary>Czy sama prędkość wystarczy do doboru średnicy?</summary><div class="rk-pipe-faq-answer"><p>Nie. Trzeba jeszcze obliczyć jednostkową stratę ciśnienia, pomnożyć ją przez długość zasilania i powrotu oraz dodać opory armatury. Dopiero taki wynik można zestawić z charakterystyką pompy i pozostałą częścią obiegu.</p></div></details>
          <details><summary>Czy większa rura może pogorszyć ogrzewanie podłogowe?</summary><div class="rk-pipe-faq-answer"><p>Nie z powodu samej mniejszej prędkości. Jeżeli wymagany przepływ jest zapewniony, większy przekrój zwykle zmniejsza stratę ciśnienia. Może natomiast zwiększyć koszt, zajęte miejsce, objętość wody i trudność montażu.</p></div></details>
          <details><summary>Czy pompa ciepła automatycznie wymaga większej rury?</summary><div class="rk-pipe-faq-answer"><p>Nie. O wyniku decyduje wymagany przepływ, który zależy między innymi od mocy i projektowego ΔT. Pompa ciepła może mieć wymagania minimalnego przepływu i pracować z innymi parametrami niż kocioł, dlatego wpływa na dobór pośrednio, ale nazwa źródła nie zastępuje obliczeń.</p></div></details>
          <details><summary>Czy kalkulator może dobrać pompę obiegową?</summary><div class="rk-pipe-faq-answer"><p>Nie w pełni. Pokazuje przepływ i orientacyjną stratę na magistrali, ale nie zna oporu pętli krytycznej, rozdzielacza, zaworów, filtra, źródła ani charakterystyki konkretnej pompy. Pełny dobór wymaga całej drogi hydraulicznej.</p></div></details>
          <details><summary>Czy wynik dla wody można zastosować do glikolu?</summary><div class="rk-pipe-faq-answer"><p>Nie bez przeliczenia właściwości medium. Glikol zmienia gęstość, ciepło właściwe i lepkość, a wpływ zależy od rodzaju, stężenia i temperatury roztworu.</p></div></details>
        </div>
      </section>

      <section class="rk-pipe-section" id="rk-pipe-sources" aria-label="Źródła techniczne">
        <span class="rk-pipe-kicker">Podstawa techniczna opracowania</span>
        <h2>Obliczenia hydrauliczne wymagają kompletu warunków</h2>
        <div class="rk-pipe-source-box">
          <p>Metodyka projektowania i wymiarowania wodnych systemów powierzchniowych jest opisana w <a href="https://www.iso.org/standard/74684.html" target="_blank" rel="noopener nofollow">ISO 11855-3:2021</a>. Norma nie sprowadza doboru przewodów do liczby pętli.</p>
          <p>Zależność pomiędzy mocą, przepływem, różnicą temperatur i ciepłem właściwym wynika z bilansu energii. Przykład wykorzystania tych wielkości w badaniach systemu hydronicznego znajduje się w publicznym opracowaniu <a href="https://www.nyserda.ny.gov/-/media/Project/Nyserda/Files/Publications/Research/Biomass-Solar-Wind/Outdoor-Wood-Hydronic-Heater-Test-Results.pdf" target="_blank" rel="noopener nofollow">NYSERDA</a>.</p>
          <p>Równanie Darcy’ego-Weisbacha i wpływ oporów miejscowych omawia materiał dydaktyczny <a href="https://www2.latech.edu/~hhegab/pages/me354/Lab3/Lab3_minorlosses_Sp97.htm" target="_blank" rel="noopener nofollow">Louisiana Tech University</a>. Kalkulator ma charakter edukacyjny i nie zastępuje projektu, danych technicznych elementów ani oceny instalacji na miejscu.</p>
        </div>
        <div class="rk-pipe-update">Ostatnia aktualizacja merytoryczna: 29 sierpnia 2026 r.</div>
      </section>
    </main>

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

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

      <div class="rk-pipe-author-layout">
        <aside class="rk-pipe-author-side">
          <div class="rk-pipe-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant ogrzewania podłogowego" width="600" height="600" loading="lazy" decoding="async"></div>
          <div class="rk-pipe-author-name">Robert Kucharski</div>
          <div class="rk-pipe-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
          <div class="rk-pipe-author-social-label">Znajdziesz mnie również:</div>
          <div class="rk-pipe-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-pipe-author-main">
          <blockquote class="rk-pipe-author-quote"><p>„Średnica magistrali nie wynika z liczby pętli. Najpierw ustalamy przepływ, później sprawdzamy prędkość, straty ciśnienia i współpracę całej drogi hydraulicznej z pompą.”</p></blockquote>
          <div class="rk-pipe-author-tabs" role="tablist" aria-label="Informacje o autorze">
            <label class="rk-pipe-author-tab" for="rk-pipe-author-about">O autorze</label>
            <label class="rk-pipe-author-tab" for="rk-pipe-author-exp">Doświadczenie</label>
            <label class="rk-pipe-author-tab" for="rk-pipe-author-sites">Portale</label>
          </div>
          <div class="rk-pipe-author-panel rk-pipe-author-panel-about"><p>Projektuję wodne ogrzewanie podłogowe, łącząc obliczenia strat ciepła z doborem temperatur, rozstawów, przepływów, długości pętli, średnic magistrali, strat ciśnienia i nastaw rozdzielaczy.</p></div>
          <div class="rk-pipe-author-panel rk-pipe-author-panel-exp"><p>Dokumentacja wykonawcza obejmuje przebieg instalacji oraz parametry hydrauliczne. Dzięki temu średnice i pompy nie są wybierane z ogólnej tabeli, lecz z punktu pracy konkretnego budynku.</p></div>
          <div class="rk-pipe-author-panel rk-pipe-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-pipe-site-links"><a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a><a href="https://remont.biz.pl/" target="_blank" rel="noopener nofollow">Remont.biz.pl</a><a href="https://sobir.pl/" target="_blank" rel="noopener nofollow">Sobir.pl</a></div></div>
        </div>
      </div>
    </section>

    <section class="rk-pipe-final-cta" aria-label="Kompletny projekt instalacji z obliczeniami hydraulicznymi">
      <span class="rk-pipe-kicker" style="color:#7af0ff">Zamknij hydraulikę przed zakupem materiałów</span>
      <h2>Otrzymaj projekt z obliczoną magistralą, pompą i każdą pętlą</h2>
      <p>Dokumentacja łączy obciążenia cieplne, temperatury, rozstawy rur, długości obwodów, przepływy, straty ciśnienia, średnice odcinków, dobór rozdzielaczy i nastawy. Instalator otrzymuje jeden spójny układ zamiast niezależnych decyzji podejmowanych na budowie.</p>
      <a class="rk-pipe-cta-button rk-pipe-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów kompletny projekt ogrzewania podłogowego</a>
      <small class="rk-pipe-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
    </section>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#article",
      "url": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/",
      "headline": "Jaka średnica rury zasilającej rozdzielacz ogrzewania podłogowego? Kalkulator hydrauliczny",
      "description": "Kalkulator przepływu, prędkości i strat ciśnienia pomagający porównać średnice rur zasilających rozdzielacz ogrzewania podłogowego.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-29",
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#webpage"},
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "about": [
        {"@type": "Thing", "name": "Średnica rury zasilającej rozdzielacz"},
        {"@type": "Thing", "name": "Ogrzewanie podłogowe"},
        {"@type": "Thing", "name": "Strata ciśnienia"},
        {"@type": "Thing", "name": "Przepływ wody"}
      ],
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"}
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#webpage",
      "url": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/",
      "name": "Jaka średnica rury do rozdzielacza? Kalkulator przepływu i strat ciśnienia",
      "description": "Jak dobrać średnicę wewnętrzną przewodu do przepływu, długości magistrali i dostępnego ciśnienia pompy.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-29",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#breadcrumb"},
      "mainEntity": [
        {"@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#application"},
        {"@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#howto"},
        {"@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#faq"}
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-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": "Średnica rury zasilającej rozdzielacz", "item": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/"}
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#application",
      "name": "Kalkulator hydrauliczny rury zasilającej rozdzielacz",
      "url": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#rk-pipe-calculator",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "Obsługa JavaScript i Canvas",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "description": "Narzędzie oblicza przepływ wody z mocy i delta T albo przyjmuje znany przepływ, a następnie porównuje prędkość i straty ciśnienia sześciu średnic rur."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#howto",
      "name": "Jak dobrać średnicę rury zasilającej rozdzielacz ogrzewania podłogowego?",
      "description": "Kolejność obliczania przepływu, średnicy, prędkości, strat ciśnienia i kontroli pompy obiegowej.",
      "inLanguage": "pl-PL",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Ustal moc rozdzielacza", "text": "Skorzystaj z obciążeń cieplnych pomieszczeń i ustal moc obsługiwaną przez rozdzielacz."},
        {"@type": "HowToStep", "position": 2, "name": "Przyjmij temperatury i delta T", "text": "Ustal parametry zasilania i powrotu spójne z podłogą oraz źródłem ciepła."},
        {"@type": "HowToStep", "position": 3, "name": "Oblicz przepływ całkowity", "text": "Wyznacz przepływ z mocy i właściwości medium albo zsumuj projektowe przepływy pętli."},
        {"@type": "HowToStep", "position": 4, "name": "Podziel instalację na odcinki", "text": "Zaznacz rozgałęzienia i przypisz każdemu fragmentowi przepływ przenoszony w projektowym punkcie pracy."},
        {"@type": "HowToStep", "position": 5, "name": "Sprawdź średnice wewnętrzne", "text": "Odczytaj światło konkretnych rur i uwzględnij zwężenia w złączkach oraz armaturze."},
        {"@type": "HowToStep", "position": 6, "name": "Policz prędkość i stratę liniową", "text": "Porównaj kilka średnic przy identycznym przepływie i właściwościach medium."},
        {"@type": "HowToStep", "position": 7, "name": "Dodaj zasilanie, powrót i armaturę", "text": "Uwzględnij długość obu rur oraz opory elementów miejscowych całej drogi krytycznej."},
        {"@type": "HowToStep", "position": 8, "name": "Sprawdź punkt pracy pompy", "text": "Zestaw wymagany przepływ i ciśnienie z charakterystyką pompy obiegowej."}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {"@type": "Question", "name": "Jaka średnica rury do rozdzielacza z 10 pętlami?", "acceptedAnswer": {"@type": "Answer", "text": "Nie można jej wyznaczyć z samej liczby pętli. Potrzebna jest suma projektowych przepływów albo moc i projektowe delta T, a następnie kontrola średnicy wewnętrznej, prędkości i strat ciśnienia."}},
        {"@type": "Question", "name": "Rura 20 czy 25 mm do rozdzielacza podłogówki?", "acceptedAnswer": {"@type": "Answer", "text": "Porównanie wymaga znajomości średnic wewnętrznych, przepływu oraz długości. Średnica zewnętrzna nie wystarcza do oceny prędkości i oporu."}},
        {"@type": "Question", "name": "Kiedy stosuje się rurę 32 mm do rozdzielacza?", "acceptedAnswer": {"@type": "Answer", "text": "Może być uzasadniona przy większym przepływie, długim odcinku wspólnym lub ograniczonym budżecie ciśnienia. Nie istnieje uniwersalna liczba pętli wymagająca zawsze 32 mm."}},
        {"@type": "Question", "name": "Czy długość pętli wpływa na średnicę rury zasilającej?", "acceptedAnswer": {"@type": "Answer", "text": "Pośrednio wpływa na opór obiegu krytycznego, ale nie wyznacza całkowitego przepływu magistrali. Przepływ wynika z mocy i delta T."}},
        {"@type": "Question", "name": "Czy przepływ na zasilaniu i powrocie trzeba zsumować?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. W obu rurach płynie ten sam strumień. Przy kontroli strat sumuje się długość zasilania i powrotu, a nie ich przepływy."}},
        {"@type": "Question", "name": "Jaka prędkość w rurze zasilającej jest prawidłowa?", "acceptedAnswer": {"@type": "Answer", "text": "Nie ma jednej wartości dla każdej instalacji. Kryterium dobiera się wraz ze stratą ciśnienia, ryzykiem hałasu, rodzajem instalacji i punktem pracy pompy."}},
        {"@type": "Question", "name": "Czy sama prędkość wystarczy do doboru średnicy?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Trzeba obliczyć stratę liniową, uwzględnić długość obu rur i armaturę, a wynik zestawić z charakterystyką pompy."}},
        {"@type": "Question", "name": "Czy większa rura może pogorszyć ogrzewanie podłogowe?", "acceptedAnswer": {"@type": "Answer", "text": "Nie z powodu samej mniejszej prędkości. Większy przekrój zwykle zmniejsza stratę ciśnienia, ale zwiększa koszt, miejsce i objętość wody."}},
        {"@type": "Question", "name": "Czy pompa ciepła automatycznie wymaga większej rury?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Decyduje wymagany przepływ i opory. Źródło może pośrednio zmienić wynik przez projektowe delta T, minimalny przepływ i sposób wpięcia."}},
        {"@type": "Question", "name": "Czy kalkulator może dobrać pompę obiegową?", "acceptedAnswer": {"@type": "Answer", "text": "Nie w pełni. Nie zna oporu pętli krytycznej, rozdzielacza, zaworów, filtra, źródła ani charakterystyki konkretnej pompy."}},
        {"@type": "Question", "name": "Czy wynik dla wody można zastosować do glikolu?", "acceptedAnswer": {"@type": "Answer", "text": "Nie bez przeliczenia właściwości medium. Glikol zmienia gęstość, ciepło właściwe i lepkość zależnie od rodzaju, stężenia i temperatury."}}
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/robert-kucharski/",
      "jobTitle": "Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego",
      "worksFor": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "affiliation": [
        {"@id": "https://projekt-ogrzewania.pl/#organization"},
        {"@id": "https://remont.biz.pl/#organization"},
        {"@id": "https://sobir.pl/#organization"}
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt-Ogrzewania.pl",
      "inLanguage": "pl-PL",
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"}
    }
  ]
}
</script>

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

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

  var byId = function (id) { return document.getElementById(id); };
  var clamp = function (value, minimum, maximum) { return Math.min(maximum, Math.max(minimum, value)); };
  var allTrue = function (values) { return values.every(Boolean); };
  var numberFrom = function (id, fallback, minimum, maximum) {
    var value = parseFloat(byId(id).value);
    if (!Number.isFinite(value)) value = fallback;
    return clamp(value, minimum, maximum);
  };
  var format = function (value, digits) {
    return Number(value).toLocaleString("pl-PL", {minimumFractionDigits: digits, maximumFractionDigits: digits});
  };

  var pipes = [
    {label: "16 × 2", innerMm: 12, color: "#9c3a32"},
    {label: "20 × 2", innerMm: 16, color: "#d94b3d"},
    {label: "25 × 2,5", innerMm: 20, color: "#e6ad2f"},
    {label: "32 × 3", innerMm: 26, color: "#078fbe"},
    {label: "40 × 4", innerMm: 32, color: "#16836b"},
    {label: "50 × 4,5", innerMm: 41, color: "#695ac9"}
  ];

  var waterTable = [
    {t: 10, rho: 999.7, mu: 1.307e-3},
    {t: 20, rho: 998.2, mu: 1.002e-3},
    {t: 30, rho: 995.7, mu: 0.798e-3},
    {t: 40, rho: 992.2, mu: 0.653e-3},
    {t: 50, rho: 988.1, mu: 0.547e-3},
    {t: 60, rho: 983.2, mu: 0.466e-3},
    {t: 70, rho: 977.8, mu: 0.404e-3}
  ];

  var waterProperties = function (temperature) {
    var t = clamp(temperature, 10, 70);
    for (var i = 0; i < waterTable.length - 1; i += 1) {
      var lower = waterTable[i];
      var upper = waterTable[i + 1];
      if (allTrue([t >= lower.t, t <= upper.t])) {
        var ratio = (t - lower.t) / (upper.t - lower.t);
        return {
          rho: lower.rho + ratio * (upper.rho - lower.rho),
          mu: lower.mu + ratio * (upper.mu - lower.mu)
        };
      }
    }
    return {rho: waterTable[0].rho, mu: waterTable[0].mu};
  };

  var hydraulicResult = function (flowM3h, innerMm, properties) {
    var diameter = innerMm / 1000;
    var flowM3s = flowM3h / 3600;
    var area = Math.PI * diameter * diameter / 4;
    var velocity = flowM3s / area;
    var reynolds = properties.rho * velocity * diameter / properties.mu;
    var roughness = 0.000007;
    var friction;

    if (reynolds <= 0) {
      friction = 0;
    } else if (reynolds < 2300) {
      friction = 64 / reynolds;
    } else {
      var turbulent = 1 / Math.pow(-1.8 * Math.log10(Math.pow((roughness / diameter) / 3.7, 1.11) + 6.9 / reynolds), 2);
      if (reynolds < 4000) {
        var laminarAtPoint = 64 / reynolds;
        var blend = (reynolds - 2300) / 1700;
        friction = laminarAtPoint * (1 - blend) + turbulent * blend;
      } else {
        friction = turbulent;
      }
    }

    var gradient = friction / diameter * properties.rho * velocity * velocity / 2;
    return {velocity: velocity, reynolds: reynolds, friction: friction, gradient: gradient};
  };

  var modeInputs = root.querySelectorAll('input[name="rk-pipe-mode"]');
  var powerField = byId("rk-pipe-power-field");
  var flowField = byId("rk-pipe-flow-field");
  var flowUnitField = byId("rk-pipe-flow-unit-field");
  var flowUnit = byId("rk-pipe-flow-unit");
  var flowUnitLabel = byId("rk-pipe-flow-unit-label");
  var resultsBody = byId("rk-pipe-results-body");
  var lastState = null;

  var selectedMode = function () {
    var checked = root.querySelector('input[name="rk-pipe-mode"]:checked');
    return checked ? checked.value : "power";
  };

  var updateMode = function () {
    var isPower = selectedMode() === "power";
    powerField.hidden = !isPower;
    flowField.hidden = isPower;
    flowUnitField.hidden = isPower;
    byId("rk-pipe-power").disabled = !isPower;
    byId("rk-pipe-known-flow").disabled = isPower;
  };

  var updateFlowUnitLabel = function () {
    flowUnitLabel.textContent = flowUnit.value === "m3h" ? "m³/h" : "l/min";
  };

  var calculate = function () {
    updateMode();
    updateFlowUnitLabel();

    var deltaT = numberFrom("rk-pipe-delta", 7, 3, 20);
    var power = numberFrom("rk-pipe-power", 8, 0.5, 50);
    var knownFlow = parseFloat(byId("rk-pipe-known-flow").value);
    if (!Number.isFinite(knownFlow)) knownFlow = flowUnit.value === "m3h" ? 0.98 : 16.4;
    knownFlow = flowUnit.value === "m3h" ? clamp(knownFlow, 0.01, 15) : clamp(knownFlow, 0.1, 250);
    var oneWayLength = numberFrom("rk-pipe-distance", 10, 1, 150);
    var temperature = numberFrom("rk-pipe-temp", 32, 10, 70);
    var extraLoss = numberFrom("rk-pipe-extra", 5, 0, 100);
    var maxSpeed = numberFrom("rk-pipe-max-speed", 0.8, 0.2, 2);
    var maxGradient = numberFrom("rk-pipe-max-gradient", 200, 30, 1000);
    var maxTotalLoss = numberFrom("rk-pipe-max-total", 25, 2, 100);
    var flowM3h;

    if (selectedMode() === "power") {
      flowM3h = power / (1.163 * deltaT);
    } else {
      flowM3h = flowUnit.value === "m3h" ? knownFlow : knownFlow * 0.06;
      power = flowM3h * 1.163 * deltaT;
    }

    flowM3h = clamp(flowM3h, 0.006, 15);
    var flowLmin = flowM3h * 1000 / 60;
    var pairLength = oneWayLength * 2;
    var properties = waterProperties(temperature);
    var rows = [];
    var recommendation = null;

    pipes.forEach(function (pipe) {
      var result = hydraulicResult(flowM3h, pipe.innerMm, properties);
      var lineLossKpa = result.gradient * pairLength / 1000;
      var totalLossKpa = lineLossKpa + extraLoss;
      var passes = allTrue([result.velocity <= maxSpeed, result.gradient <= maxGradient, totalLossKpa <= maxTotalLoss]);
      var borderline = allTrue([!passes, result.velocity <= maxSpeed * 1.15, result.gradient <= maxGradient * 1.25, totalLossKpa <= maxTotalLoss * 1.25]);
      var status = passes ? "pass" : (borderline ? "borderline" : "fail");
      var row = {pipe: pipe, result: result, lineLossKpa: lineLossKpa, totalLossKpa: totalLossKpa, status: status};
      rows.push(row);
      if (passes) {
        if (!recommendation) recommendation = row;
      }
    });

    byId("rk-pipe-result-flow").textContent = format(flowM3h, 2) + " m³/h";
    byId("rk-pipe-result-lmin").textContent = format(flowLmin, 1) + " l/min";
    byId("rk-pipe-result-power").textContent = format(power, 1) + " kW";
    byId("rk-pipe-result-length").textContent = format(pairLength, 1) + " m";
    byId("rk-pipe-scheme-flow").textContent = format(flowM3h, 2) + " m³/h w obu rurach";
    byId("rk-pipe-scheme-length").textContent = format(oneWayLength, 1) + " m + " + format(oneWayLength, 1) + " m";

    resultsBody.innerHTML = rows.map(function (row) {
      var statusLabel = row.status === "pass" ? "spełnia" : (row.status === "borderline" ? "graniczny" : "przekracza");
      var statusClass = row.status === "pass" ? "" : (row.status === "borderline" ? " is-borderline" : " is-fail");
      var recommendedClass = recommendation === row ? " class=\"is-recommended\"" : "";
      var regime = row.result.reynolds < 2300 ? "laminarny" : (row.result.reynolds < 4000 ? "przejściowy" : "turbulentny");
      return "<tr" + recommendedClass + ">" +
        "<td data-label=\"Rura\"><strong>" + row.pipe.label + " mm</strong>" + (recommendation === row ? "<br><small>najmniejsza spełniająca</small>" : "") + "</td>" +
        "<td data-label=\"Średnica wewnętrzna\">" + format(row.pipe.innerMm, 0) + " mm</td>" +
        "<td data-label=\"Prędkość\">" + format(row.result.velocity, 2) + " m/s</td>" +
        "<td data-label=\"Re / charakter przepływu\">" + format(row.result.reynolds, 0) + "<br><small>" + regime + "</small></td>" +
        "<td data-label=\"Strata liniowa\">" + format(row.result.gradient, 0) + " Pa/m</td>" +
        "<td data-label=\"Para + armatura\">" + format(row.totalLossKpa, 1) + " kPa</td>" +
        "<td data-label=\"Ocena\"><span class=\"rk-pipe-status" + statusClass + "\">" + statusLabel + "</span></td>" +
      "</tr>";
    }).join("");

    var verdict = byId("rk-pipe-verdict");
    verdict.className = "rk-pipe-verdict";
    if (recommendation) {
      var speedOnlyPasses = rows.some(function (row) { return allTrue([row.result.velocity <= maxSpeed, row.result.gradient > maxGradient]); });
      var totalBudgetFailures = rows.some(function (row) { return allTrue([row.result.velocity <= maxSpeed, row.result.gradient <= maxGradient, row.totalLossKpa > maxTotalLoss]); });
      byId("rk-pipe-verdict-title").textContent = "Najmniejszy wariant spełniający ustawione kryteria: " + recommendation.pipe.label + " mm";
      byId("rk-pipe-verdict-text").textContent = "Przy przepływie " + format(flowM3h, 2) + " m³/h prędkość wynosi " + format(recommendation.result.velocity, 2) + " m/s, strata liniowa " + format(recommendation.result.gradient, 0) + " Pa/m, a para przewodów z wpisaną armaturą powoduje około " + format(recommendation.totalLossKpa, 1) + " kPa straty. " + (speedOnlyPasses ? "Co najmniej jeden mniejszy wariant przechodzi kontrolę prędkości, lecz przekracza ustawiony limit Pa/m. " : "") + (totalBudgetFailures ? "Co najmniej jeden wariant spełnia limity m/s i Pa/m, ale przez długość oraz armaturę przekracza łączny budżet ciśnienia. " : "") + "To wynik przesiewowy, nie zatwierdzenie całej instalacji.";
    } else {
      verdict.classList.add("is-danger");
      byId("rk-pipe-verdict-title").textContent = "Żaden wariant nie spełnia obu ustawionych kryteriów";
      byId("rk-pipe-verdict-text").textContent = "Zwiększ zakres analizowanych średnic albo zweryfikuj przepływ, długość i przyjęte limity. Nie podnoś granic tylko po to, aby uzyskać pozytywny komunikat.";
    }

    lastState = {flowM3h: flowM3h, temperature: temperature, properties: properties, maxGradient: maxGradient, rows: rows, power: power, deltaT: deltaT};
    drawChart();
  };

  var drawChart = function () {
    if (!lastState) return;
    var canvas = byId("rk-pipe-chart");
    var rect = canvas.getBoundingClientRect();
    var width = Math.max(300, rect.width || 620);
    var height = Math.max(300, rect.height || 370);
    var ratio = Math.min(window.devicePixelRatio || 1, 2);
    canvas.width = Math.round(width * ratio);
    canvas.height = Math.round(height * ratio);
    var ctx = canvas.getContext("2d");
    ctx.setTransform(ratio, 0, 0, ratio, 0, 0);
    ctx.clearRect(0, 0, width, height);

    var margin = {left: width < 500 ? 52 : 66, right: 18, top: 24, bottom: 48};
    var plotW = width - margin.left - margin.right;
    var plotH = height - margin.top - margin.bottom;
    var xMax = Math.max(2, lastState.flowM3h * 1.75);
    var chartPipes = [pipes[1], pipes[2], pipes[3], pipes[4]];
    var maxAtEnd = 0;
    chartPipes.forEach(function (pipe) {
      maxAtEnd = Math.max(maxAtEnd, hydraulicResult(xMax, pipe.innerMm, lastState.properties).gradient);
    });
    var yMax = Math.max(lastState.maxGradient * 1.5, Math.min(2500, maxAtEnd * 1.05));
    yMax = Math.ceil(yMax / 100) * 100;

    var x = function (value) { return margin.left + (value / xMax) * plotW; };
    var y = function (value) { return margin.top + plotH - (Math.min(value, yMax) / yMax) * plotH; };

    ctx.fillStyle = "#ffffff";
    ctx.fillRect(0, 0, width, height);
    ctx.strokeStyle = "#d7e4e9";
    ctx.lineWidth = 1;
    ctx.font = "11px Inter, system-ui, sans-serif";
    ctx.fillStyle = "#6b7e8a";

    for (var gy = 0; gy <= 5; gy += 1) {
      var yValue = yMax * gy / 5;
      var py = y(yValue);
      ctx.beginPath();
      ctx.moveTo(margin.left, py);
      ctx.lineTo(width - margin.right, py);
      ctx.stroke();
      ctx.textAlign = "right";
      ctx.textBaseline = "middle";
      ctx.fillText(Math.round(yValue) + "", margin.left - 8, py);
    }

    for (var gx = 0; gx <= 5; gx += 1) {
      var xValue = xMax * gx / 5;
      var px = x(xValue);
      ctx.beginPath();
      ctx.moveTo(px, margin.top);
      ctx.lineTo(px, margin.top + plotH);
      ctx.stroke();
      ctx.textAlign = "center";
      ctx.textBaseline = "top";
      ctx.fillText(format(xValue, 1), px, margin.top + plotH + 8);
    }

    ctx.save();
    ctx.translate(15, margin.top + plotH / 2);
    ctx.rotate(-Math.PI / 2);
    ctx.textAlign = "center";
    ctx.fillStyle = "#475967";
    ctx.font = "600 11px Inter, system-ui, sans-serif";
    ctx.fillText("Strata liniowa [Pa/m]", 0, 0);
    ctx.restore();
    ctx.textAlign = "center";
    ctx.fillText("Przepływ [m³/h]", margin.left + plotW / 2, height - 9);

    var limitY = y(lastState.maxGradient);
    ctx.save();
    ctx.setLineDash([6, 5]);
    ctx.strokeStyle = "#8b9ca5";
    ctx.beginPath();
    ctx.moveTo(margin.left, limitY);
    ctx.lineTo(width - margin.right, limitY);
    ctx.stroke();
    ctx.restore();
    ctx.textAlign = "left";
    ctx.fillStyle = "#6b7e8a";
    ctx.fillText("limit " + Math.round(lastState.maxGradient) + " Pa/m", margin.left + 6, limitY - 7);

    chartPipes.forEach(function (pipe) {
      ctx.beginPath();
      ctx.strokeStyle = pipe.color;
      ctx.lineWidth = 3;
      for (var step = 0; step <= 100; step += 1) {
        var flow = Math.max(0.001, xMax * step / 100);
        var gradient = hydraulicResult(flow, pipe.innerMm, lastState.properties).gradient;
        var px = x(flow);
        var py = y(gradient);
        if (step === 0) ctx.moveTo(px, py); else ctx.lineTo(px, py);
      }
      ctx.stroke();
    });

    var userX = x(lastState.flowM3h);
    ctx.save();
    ctx.setLineDash([7, 5]);
    ctx.strokeStyle = "#695ac9";
    ctx.lineWidth = 2;
    ctx.beginPath();
    ctx.moveTo(userX, margin.top);
    ctx.lineTo(userX, margin.top + plotH);
    ctx.stroke();
    ctx.restore();
    ctx.textAlign = userX > width * 0.7 ? "right" : "left";
    ctx.fillStyle = "#695ac9";
    ctx.font = "700 11px Inter, system-ui, sans-serif";
    ctx.fillText("Twój przepływ: " + format(lastState.flowM3h, 2), userX + (userX > width * 0.7 ? -7 : 7), margin.top + 13);
  };

  modeInputs.forEach(function (input) { input.addEventListener("change", calculate); });
  var previousFlowUnit = flowUnit.value;
  flowUnit.addEventListener("change", function () {
    var knownFlowInput = byId("rk-pipe-known-flow");
    var value = parseFloat(knownFlowInput.value);
    if (Number.isFinite(value)) {
      if (flowUnit.value !== previousFlowUnit) {
        value = flowUnit.value === "m3h" ? value * 0.06 : value / 0.06;
        knownFlowInput.value = flowUnit.value === "m3h" ? value.toFixed(2) : value.toFixed(1);
      }
    }
    knownFlowInput.min = flowUnit.value === "m3h" ? "0.01" : "0.1";
    knownFlowInput.max = flowUnit.value === "m3h" ? "15" : "250";
    knownFlowInput.step = flowUnit.value === "m3h" ? "0.01" : "0.1";
    previousFlowUnit = flowUnit.value;
    calculate();
  });
  root.querySelectorAll("#rk-pipe-calculator input, #rk-pipe-calculator select").forEach(function (field) {
    if (field === flowUnit) return;
    field.addEventListener("input", calculate);
    field.addEventListener("change", calculate);
  });
  byId("rk-pipe-calculate").addEventListener("click", calculate);

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

  var progress = byId("rk-pipe-progress");
  var updateProgress = function () {
    var rect = root.getBoundingClientRect();
    var passed = -rect.top;
    var total = Math.max(1, root.offsetHeight - window.innerHeight);
    progress.style.width = clamp(passed / total * 100, 0, 100) + "%";
  };
  window.addEventListener("scroll", updateProgress, {passive: true});

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

  root.querySelectorAll(".rk-pipe-sales-cta").forEach(function (link) {
    link.addEventListener("click", function () {
      window.dataLayer = window.dataLayer || [];
      window.dataLayer.push({event: "rk_pipe_project_cta", cta_text: link.textContent.trim()});
    });
  });

  calculate();
  updateProgress();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jaka-srednica-rury-zasilajacej-rozdzielacz-w-ukladzie-ogrzewania-podlogowego-kalkulator/">Jaka średnica rury zasilającej rozdzielacz w układzie ogrzewania podłogowego? &#8211; Kalkulator.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Maksymalna długość pętli ogrzewania podłogowego.</title>
		<link>https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/</link>
					<comments>https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Wed, 05 Feb 2025 20:55:07 +0000</pubDate>
				<category><![CDATA[Budowa i remont]]></category>
		<category><![CDATA[Dom pasywny]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Hydraulika]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Poradniki dla inwestorów]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Technologie budowlane]]></category>
		<category><![CDATA[długość pętli grzewczej]]></category>
		<category><![CDATA[izolacja termiczna]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[pętla ogrzewania podłogowego]]></category>
		<category><![CDATA[pex 16 mm]]></category>
		<category><![CDATA[pex 20 mm]]></category>
		<category><![CDATA[pompa obiegowa]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<category><![CDATA[równoważenie hydrauliczne]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2095</guid>

					<description><![CDATA[<p>Planujesz montaż ogrzewania podłogowego? Maksymalna długość pętli ogrzewania podłogowego to parametr, od którego zależy komfort cieplny i oszczędność energii. Zbyt długa pętla powoduje zimne strefy na podłodze, przeciąża pompę i zwiększa rachunki. W artykule wyjaśniamy, jak dobrać optymalną długość rur PEX 16 mm i 20 mm, jak obliczyć wydajność pompy oraz dlaczego izolacja podłogi jest kluczowa. Poznaj praktyczne przykłady, wzory i błędy, których warto uniknąć, by system działał sprawnie przez lata!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">Maksymalna długość pętli ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-loop-guide {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-navy-2: #0c2d40;
    --rk-blue: #078fbe;
    --rk-cyan: #27c8d9;
    --rk-cyan-soft: #e9fbff;
    --rk-orange: #ff6f3d;
    --rk-orange-soft: #fff1eb;
    --rk-green: #17846d;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #e7ad2f;
    --rk-yellow-soft: #fff8df;
    --rk-red: #d94b3d;
    --rk-red-soft: #fff0ee;
    --rk-purple: #695ac9;
    --rk-purple-soft: #f1efff;
    --rk-ink: #1f2c37;
    --rk-text: #475967;
    --rk-muted: #6b7e8a;
    --rk-line: #d5e4eb;
    --rk-soft: #f4f9fb;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 72px;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.75;
  }

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

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

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

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

  #rk-loop-guide button,
  #rk-loop-guide input,
  #rk-loop-guide select,
  #rk-loop-guide label,
  #rk-loop-guide summary,
  #rk-loop-guide a {
    font: inherit;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  #rk-loop-guide p {
    margin-bottom: 18px;
    color: var(--rk-text);
  }

  #rk-loop-guide .rk-loop-intro {
    max-width: 940px;
    margin-bottom: 30px;
    color: #3e5361;
    font-size: 1.08rem;
    line-height: 1.78;
  }

  #rk-loop-guide .rk-loop-answer {
    display: grid;
    grid-template-columns: minmax(0, 1.45fr) minmax(260px, 0.75fr);
    gap: 18px;
    margin: 30px 0;
  }

  #rk-loop-guide .rk-loop-answer-main,
  #rk-loop-guide .rk-loop-answer-side,
  #rk-loop-guide .rk-loop-card,
  #rk-loop-guide .rk-loop-note,
  #rk-loop-guide .rk-loop-step,
  #rk-loop-guide .rk-loop-error {
    border: 1px solid var(--rk-line);
    border-radius: 19px;
  }

  #rk-loop-guide .rk-loop-answer-main {
    padding: 28px;
    background: linear-gradient(135deg, var(--rk-cyan-soft), var(--rk-white));
    border-left: 5px solid var(--rk-cyan);
  }

  #rk-loop-guide .rk-loop-answer-side {
    padding: 28px;
    background: var(--rk-yellow-soft);
    border-left: 5px solid var(--rk-yellow);
  }

  #rk-loop-guide .rk-loop-answer p:last-child,
  #rk-loop-guide .rk-loop-card p:last-child,
  #rk-loop-guide .rk-loop-note p:last-child,
  #rk-loop-guide .rk-loop-step p:last-child,
  #rk-loop-guide .rk-loop-error p:last-child {
    margin-bottom: 0;
  }

  #rk-loop-guide .rk-loop-grid-2,
  #rk-loop-guide .rk-loop-grid-3,
  #rk-loop-guide .rk-loop-grid-4 {
    display: grid;
    gap: 18px;
    margin: 28px 0;
  }

  #rk-loop-guide .rk-loop-grid-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #rk-loop-guide .rk-loop-grid-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  #rk-loop-guide .rk-loop-grid-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  #rk-loop-guide .rk-loop-card {
    padding: 25px;
    background: var(--rk-white);
    box-shadow: 0 8px 25px rgba(16, 37, 54, 0.045);
  }

  #rk-loop-guide .rk-loop-card-number {
    display: inline-flex;
    margin-bottom: 13px;
    color: var(--rk-blue);
    font-size: 0.72rem;
    font-weight: 900;
    letter-spacing: 0.075em;
    text-transform: uppercase;
  }

  #rk-loop-guide .rk-loop-badge {
    display: inline-flex;
    align-items: center;
    padding: 5px 10px;
    margin: 0 4px 4px 0;
    color: var(--rk-dark);
    background: var(--rk-cyan-soft);
    border: 1px solid #a9eaf1;
    border-radius: 999px;
    font-size: 0.75rem;
    font-weight: 820;
  }

  #rk-loop-guide .rk-loop-formula {
    display: grid;
    gap: 7px;
    margin: 27px 0;
    padding: 23px 27px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-dark), var(--rk-navy));
    border-radius: 18px;
  }

  #rk-loop-guide .rk-loop-formula strong {
    overflow-wrap: anywhere;
    color: #8af2ff;
    font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
    font-size: 1.06rem;
    line-height: 1.55;
  }

  #rk-loop-guide .rk-loop-formula span {
    color: #c5dfe8;
    font-size: 0.83rem;
    line-height: 1.55;
  }

  #rk-loop-guide .rk-loop-note {
    margin: 25px 0;
    padding: 22px 25px;
    background: var(--rk-soft);
    border-left: 5px solid var(--rk-blue);
  }

  #rk-loop-guide .rk-loop-note.rk-loop-warning {
    background: var(--rk-yellow-soft);
    border-left-color: var(--rk-yellow);
  }

  #rk-loop-guide .rk-loop-note.rk-loop-danger {
    background: var(--rk-red-soft);
    border-left-color: var(--rk-red);
  }

  #rk-loop-guide .rk-loop-route {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 10px;
    align-items: stretch;
    margin: 30px 0;
  }

  #rk-loop-guide .rk-loop-route-item {
    position: relative;
    display: flex;
    min-height: 115px;
    flex-direction: column;
    justify-content: center;
    padding: 18px 16px;
    color: var(--rk-dark);
    text-align: center;
    background: var(--rk-soft);
    border: 1px solid var(--rk-line);
    border-radius: 16px;
  }

  #rk-loop-guide .rk-loop-route-item:not(:last-child)::after {
    position: absolute;
    top: 50%;
    right: -15px;
    z-index: 2;
    width: 20px;
    height: 20px;
    color: var(--rk-blue);
    background: var(--rk-white);
    border-radius: 50%;
    content: "›";
    font-size: 1.5rem;
    font-weight: 900;
    line-height: 17px;
  }

  #rk-loop-guide .rk-loop-route-item b {
    display: block;
    margin-bottom: 5px;
    color: var(--rk-navy);
    font-size: 0.92rem;
  }

  #rk-loop-guide .rk-loop-route-item span {
    color: var(--rk-muted);
    font-size: 0.76rem;
    line-height: 1.45;
  }

  #rk-loop-guide .rk-loop-sequence {
    display: grid;
    grid-template-columns: repeat(5, minmax(0, 1fr));
    gap: 12px;
    margin: 28px 0;
  }

  #rk-loop-guide .rk-loop-sequence article {
    padding: 20px 17px;
    background: var(--rk-white);
    border: 1px solid var(--rk-line);
    border-top: 4px solid var(--rk-cyan);
    border-radius: 15px;
  }

  #rk-loop-guide .rk-loop-sequence b {
    display: inline-grid;
    width: 31px;
    height: 31px;
    margin-bottom: 11px;
    place-items: center;
    color: var(--rk-white);
    background: var(--rk-navy);
    border-radius: 10px;
    font-size: 0.8rem;
  }

  #rk-loop-guide .rk-loop-sequence strong {
    display: block;
    margin-bottom: 6px;
    color: var(--rk-dark);
    font-size: 0.9rem;
    line-height: 1.35;
  }

  #rk-loop-guide .rk-loop-sequence span {
    display: block;
    color: var(--rk-muted);
    font-size: 0.76rem;
    line-height: 1.45;
  }

  #rk-loop-guide .rk-loop-table-wrap {
    margin: 28px 0;
  }

  #rk-loop-guide table {
    width: 100%;
    border-collapse: separate;
    border-spacing: 0;
    overflow: hidden;
    background: var(--rk-white);
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    font-size: 0.88rem;
  }

  #rk-loop-guide thead {
    color: var(--rk-white);
    background: var(--rk-navy);
  }

  #rk-loop-guide th,
  #rk-loop-guide td {
    padding: 15px 17px;
    text-align: left;
    vertical-align: top;
  }

  #rk-loop-guide th {
    font-size: 0.76rem;
    font-weight: 850;
    letter-spacing: 0.025em;
    line-height: 1.35;
  }

  #rk-loop-guide td {
    color: var(--rk-text);
    border-top: 1px solid var(--rk-line);
    line-height: 1.5;
  }

  #rk-loop-guide tbody tr:first-child td {
    border-top: 0;
  }

  #rk-loop-guide tbody tr:nth-child(even) {
    background: #f8fbfc;
  }

  #rk-loop-guide .rk-loop-tool-section {
    padding: 0;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 90% 10%, rgba(39, 200, 217, 0.18), transparent 31%),
      linear-gradient(155deg, #0d2b3d 0%, #12384d 58%, #102d3f 100%);
  }

  #rk-loop-guide .rk-loop-tool-head {
    padding: 58px 58px 31px;
  }

  #rk-loop-guide .rk-loop-tool-head .rk-loop-kicker {
    color: #7ff1ff;
  }

  #rk-loop-guide .rk-loop-tool-head h2 {
    margin-bottom: 16px;
    color: var(--rk-white);
  }

  #rk-loop-guide .rk-loop-tool-head p {
    max-width: 930px;
    margin-bottom: 0;
    color: #c3dce6;
  }

  #rk-loop-guide .rk-loop-tool {
    padding: 0 34px 45px;
  }

  #rk-loop-guide .rk-loop-tool-panel {
    padding: 29px;
    background: rgba(255, 255, 255, 0.045);
    border: 1px solid rgba(157, 221, 235, 0.24);
    border-radius: 21px;
  }

  #rk-loop-guide .rk-loop-tool-panel + .rk-loop-tool-panel {
    margin-top: 20px;
  }

  #rk-loop-guide .rk-loop-tool-panel h3 {
    margin-bottom: 7px;
    color: var(--rk-white);
  }

  #rk-loop-guide .rk-loop-tool-panel > p {
    margin-bottom: 23px;
    color: #b8d2dd;
    font-size: 0.84rem;
  }

  #rk-loop-guide .rk-loop-input-grid {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 18px;
  }

  #rk-loop-guide .rk-loop-fieldset {
    min-width: 0;
    margin: 0;
    padding: 22px;
    border: 1px solid rgba(166, 220, 233, 0.25);
    border-radius: 17px;
  }

  #rk-loop-guide .rk-loop-fieldset legend {
    padding: 0 9px;
    color: #86f2ff;
    font-size: 0.79rem;
    font-weight: 900;
    letter-spacing: 0.055em;
    text-transform: uppercase;
  }

  #rk-loop-guide .rk-loop-field {
    display: block;
    margin-bottom: 16px;
  }

  #rk-loop-guide .rk-loop-field:last-child {
    margin-bottom: 0;
  }

  #rk-loop-guide .rk-loop-field-label {
    display: block;
    margin-bottom: 7px;
    color: #eaf8fc;
    font-size: 0.78rem;
    font-weight: 800;
    line-height: 1.35;
  }

  #rk-loop-guide .rk-loop-field small {
    display: block;
    margin-top: 6px;
    color: #8fb3c1;
    font-size: 0.69rem;
    line-height: 1.42;
  }

  #rk-loop-guide .rk-loop-input-row {
    position: relative;
  }

  #rk-loop-guide .rk-loop-input-row input,
  #rk-loop-guide .rk-loop-input-row select {
    width: 100%;
    min-height: 48px;
    padding: 10px 48px 10px 13px;
    color: var(--rk-dark);
    background: var(--rk-white);
    border: 1px solid #bed3dc;
    border-radius: 10px;
    font-size: 0.91rem;
    font-weight: 750;
  }

  #rk-loop-guide .rk-loop-input-row select {
    padding-right: 13px;
  }

  #rk-loop-guide .rk-loop-input-row input:disabled {
    color: #78909b;
    background: #dbe6ea;
    cursor: not-allowed;
  }

  #rk-loop-guide .rk-loop-unit {
    position: absolute;
    top: 50%;
    right: 13px;
    color: #667d88;
    font-size: 0.69rem;
    font-weight: 850;
    transform: translateY(-50%);
    pointer-events: none;
  }

  #rk-loop-guide .rk-loop-actions {
    display: flex;
    flex-wrap: wrap;
    gap: 12px;
    margin-top: 22px;
  }

  #rk-loop-guide .rk-loop-button {
    min-height: 48px;
    padding: 11px 20px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    border: 0;
    border-radius: 11px;
    cursor: pointer;
    font-size: 0.82rem;
    font-weight: 900;
  }

  #rk-loop-guide .rk-loop-button:hover,
  #rk-loop-guide .rk-loop-button:focus-visible {
    background: #72e9f4;
  }

  #rk-loop-guide .rk-loop-button-secondary {
    color: #d9edf4;
    background: transparent;
    border: 1px solid #53778a;
  }

  #rk-loop-guide .rk-loop-button-secondary:hover,
  #rk-loop-guide .rk-loop-button-secondary:focus-visible {
    color: var(--rk-white);
    background: rgba(255, 255, 255, 0.08);
  }

  #rk-loop-guide .rk-loop-results {
    display: grid;
    grid-template-columns: repeat(4, minmax(0, 1fr));
    gap: 13px;
    margin-top: 23px;
  }

  #rk-loop-guide .rk-loop-result {
    min-width: 0;
    padding: 18px;
    background: rgba(6, 29, 42, 0.48);
    border: 1px solid rgba(152, 218, 232, 0.2);
    border-radius: 14px;
  }

  #rk-loop-guide .rk-loop-result span {
    display: block;
    margin-bottom: 7px;
    color: #91b7c5;
    font-size: 0.68rem;
    font-weight: 800;
    letter-spacing: 0.045em;
    line-height: 1.35;
    text-transform: uppercase;
  }

  #rk-loop-guide .rk-loop-result strong {
    display: block;
    overflow-wrap: anywhere;
    color: var(--rk-white);
    font-size: 1.32rem;
    font-weight: 900;
    line-height: 1.15;
  }

  #rk-loop-guide .rk-loop-result small {
    display: block;
    margin-top: 6px;
    color: #759cab;
    font-size: 0.65rem;
    line-height: 1.35;
  }

  #rk-loop-guide .rk-loop-status {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 15px;
    align-items: start;
    margin-top: 18px;
    padding: 19px 21px;
    background: rgba(23, 132, 109, 0.19);
    border: 1px solid rgba(96, 224, 186, 0.4);
    border-left: 5px solid #4fd5af;
    border-radius: 14px;
  }

  #rk-loop-guide .rk-loop-status.rk-loop-status-warning {
    background: rgba(231, 173, 47, 0.16);
    border-color: rgba(239, 195, 94, 0.42);
    border-left-color: var(--rk-yellow);
  }

  #rk-loop-guide .rk-loop-status.rk-loop-status-danger {
    background: rgba(217, 75, 61, 0.17);
    border-color: rgba(235, 118, 104, 0.42);
    border-left-color: var(--rk-red);
  }

  #rk-loop-guide .rk-loop-status-icon {
    display: grid;
    width: 38px;
    height: 38px;
    place-items: center;
    color: var(--rk-dark);
    background: #5addb7;
    border-radius: 12px;
    font-weight: 950;
  }

  #rk-loop-guide .rk-loop-status-warning .rk-loop-status-icon {
    background: var(--rk-yellow);
  }

  #rk-loop-guide .rk-loop-status-danger .rk-loop-status-icon {
    color: var(--rk-white);
    background: var(--rk-red);
  }

  #rk-loop-guide .rk-loop-status strong {
    display: block;
    margin-bottom: 4px;
    color: var(--rk-white);
    font-size: 0.96rem;
  }

  #rk-loop-guide .rk-loop-status p {
    margin: 0;
    color: #c4dce5;
    font-size: 0.8rem;
    line-height: 1.55;
  }

  #rk-loop-guide .rk-loop-chart-wrap {
    padding: 20px;
    background: var(--rk-white);
    border-radius: 17px;
  }

  #rk-loop-guide .rk-loop-chart {
    display: block;
    width: 100%;
    min-height: 350px;
  }

  #rk-loop-guide .rk-loop-chart-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 10px 18px;
    margin-top: 13px;
    color: #52707d;
    font-size: 0.72rem;
    font-weight: 780;
  }

  #rk-loop-guide .rk-loop-legend-item {
    display: inline-flex;
    align-items: center;
    gap: 7px;
  }

  #rk-loop-guide .rk-loop-legend-line {
    width: 23px;
    height: 4px;
    border-radius: 4px;
  }

  #rk-loop-guide .rk-loop-chart-note {
    margin: 14px 0 0;
    color: #657c87;
    font-size: 0.72rem;
    line-height: 1.5;
  }

  #rk-loop-guide .rk-loop-tool-table table {
    background: rgba(255, 255, 255, 0.04);
    border-color: rgba(161, 218, 231, 0.22);
  }

  #rk-loop-guide .rk-loop-tool-table thead {
    background: rgba(6, 29, 42, 0.65);
  }

  #rk-loop-guide .rk-loop-tool-table td {
    color: #d1e5ec;
    border-color: rgba(161, 218, 231, 0.18);
  }

  #rk-loop-guide .rk-loop-tool-table tbody tr:nth-child(even) {
    background: rgba(255, 255, 255, 0.025);
  }

  #rk-loop-guide .rk-loop-diagnostics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 13px;
    margin-top: 20px;
  }

  #rk-loop-guide .rk-loop-diagnostic {
    padding: 17px;
    color: #c4dce5;
    background: rgba(6, 29, 42, 0.36);
    border: 1px solid rgba(155, 214, 228, 0.18);
    border-radius: 13px;
    font-size: 0.74rem;
    line-height: 1.5;
  }

  #rk-loop-guide .rk-loop-diagnostic b {
    display: block;
    margin-bottom: 5px;
    color: #8af2ff;
    font-size: 0.76rem;
  }

  #rk-loop-guide .rk-loop-tool-disclaimer {
    margin: 22px 0 0;
    padding: 18px 20px;
    color: #b5d0da;
    background: rgba(255, 255, 255, 0.05);
    border-left: 4px solid var(--rk-orange);
    border-radius: 12px;
    font-size: 0.75rem;
    line-height: 1.55;
  }

  #rk-loop-guide .rk-loop-cta,
  #rk-loop-guide .rk-loop-final-cta {
    padding: 48px 52px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 90% 12%, rgba(39, 200, 217, 0.22), transparent 32%),
      linear-gradient(135deg, var(--rk-dark), var(--rk-navy));
  }

  #rk-loop-guide .rk-loop-cta {
    margin: 0;
    border-top: 1px solid rgba(160, 220, 233, 0.18);
  }

  #rk-loop-guide .rk-loop-cta-title {
    max-width: 860px;
    margin: 0 0 13px;
    color: var(--rk-white);
    font-size: clamp(1.65rem, 3vw, 2.35rem);
    font-weight: 900;
    letter-spacing: -0.035em;
    line-height: 1.15;
  }

  #rk-loop-guide .rk-loop-cta p,
  #rk-loop-guide .rk-loop-final-cta p {
    max-width: 900px;
    color: #c5dfe8;
  }

  #rk-loop-guide .rk-loop-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 52px;
    padding: 12px 23px;
    margin-top: 8px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    border: 0;
    border-radius: 12px;
    box-shadow: 0 10px 28px rgba(39, 200, 217, 0.19);
    font-size: 0.84rem;
    font-weight: 900;
    line-height: 1.35;
    text-align: center;
    text-decoration: none;
  }

  #rk-loop-guide .rk-loop-cta-button:hover,
  #rk-loop-guide .rk-loop-cta-button:focus-visible {
    color: var(--rk-dark);
    background: #7cf0fa;
    transform: translateY(-1px);
  }

  #rk-loop-guide .rk-loop-disclosure {
    display: block;
    margin-top: 13px;
    color: #87adbc;
    font-size: 0.67rem;
    line-height: 1.45;
  }

  #rk-loop-guide .rk-loop-steps {
    display: grid;
    gap: 13px;
    margin: 28px 0;
    counter-reset: rk-loop-step;
  }

  #rk-loop-guide .rk-loop-step {
    position: relative;
    display: grid;
    grid-template-columns: 48px minmax(0, 1fr);
    gap: 17px;
    padding: 21px 23px;
    background: var(--rk-white);
    counter-increment: rk-loop-step;
  }

  #rk-loop-guide .rk-loop-step::before {
    display: grid;
    width: 44px;
    height: 44px;
    place-items: center;
    color: var(--rk-white);
    background: var(--rk-blue);
    border-radius: 13px;
    content: counter(rk-loop-step, decimal-leading-zero);
    font-size: 0.76rem;
    font-weight: 900;
  }

  #rk-loop-guide .rk-loop-errors {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 15px;
    margin: 28px 0;
  }

  #rk-loop-guide .rk-loop-error {
    padding: 23px;
    background: var(--rk-white);
    border-left: 5px solid var(--rk-red);
  }

  #rk-loop-guide .rk-loop-error b {
    display: inline-flex;
    margin-bottom: 10px;
    color: var(--rk-red);
    font-size: 0.73rem;
    font-weight: 900;
    letter-spacing: 0.07em;
    text-transform: uppercase;
  }

  #rk-loop-guide .rk-loop-faq {
    display: grid;
    gap: 12px;
    margin-top: 27px;
  }

  #rk-loop-guide .rk-loop-faq details {
    overflow: hidden;
    background: var(--rk-white);
    border: 1px solid var(--rk-line);
    border-radius: 15px;
  }

  #rk-loop-guide .rk-loop-faq summary {
    position: relative;
    padding: 19px 55px 19px 21px;
    color: var(--rk-dark);
    cursor: pointer;
    font-size: 0.94rem;
    font-weight: 850;
    line-height: 1.4;
    list-style: none;
  }

  #rk-loop-guide .rk-loop-faq summary::-webkit-details-marker {
    display: none;
  }

  #rk-loop-guide .rk-loop-faq summary::after {
    position: absolute;
    top: 50%;
    right: 20px;
    display: grid;
    width: 29px;
    height: 29px;
    place-items: center;
    color: var(--rk-white);
    background: var(--rk-blue);
    border-radius: 9px;
    content: "+";
    font-size: 1.15rem;
    transform: translateY(-50%);
  }

  #rk-loop-guide .rk-loop-faq details[open] summary::after {
    content: "−";
  }

  #rk-loop-guide .rk-loop-faq-answer {
    padding: 0 21px 20px;
  }

  #rk-loop-guide .rk-loop-faq-answer p:last-child {
    margin-bottom: 0;
  }

  #rk-loop-guide .rk-loop-sources {
    display: grid;
    gap: 12px;
    margin-top: 26px;
  }

  #rk-loop-guide .rk-loop-source {
    padding: 19px 21px;
    background: var(--rk-white);
    border: 1px solid var(--rk-line);
    border-radius: 14px;
  }

  #rk-loop-guide .rk-loop-source b {
    display: block;
    margin-bottom: 5px;
    color: var(--rk-dark);
  }

  #rk-loop-guide .rk-loop-source p {
    margin-bottom: 7px;
    font-size: 0.82rem;
  }

  #rk-loop-guide .rk-loop-source a {
    overflow-wrap: anywhere;
    font-size: 0.79rem;
    font-weight: 800;
  }

  #rk-loop-guide .rk-loop-update {
    margin-top: 25px;
    color: var(--rk-muted);
    font-size: 0.72rem;
    font-weight: 750;
  }

  #rk-loop-guide .rk-loop-author {
    position: relative;
    padding: 0;
    background: #f4f9fb;
    border-top: 1px solid var(--rk-line);
    scroll-margin-top: 24px;
  }

  #rk-loop-guide .rk-loop-author > input {
    position: absolute;
    width: 1px;
    height: 1px;
    overflow: hidden;
    opacity: 0;
    pointer-events: none;
  }

  #rk-loop-guide .rk-loop-author-head {
    display: flex;
    align-items: flex-end;
    justify-content: space-between;
    gap: 20px;
    padding: 42px 50px 28px;
    background: var(--rk-white);
    border-bottom: 1px solid var(--rk-line);
  }

  #rk-loop-guide .rk-loop-author-head h2 {
    margin: 0 0 5px;
    font-size: 2rem;
  }

  #rk-loop-guide .rk-loop-author-head p {
    margin: 0;
    font-size: 0.84rem;
  }

  #rk-loop-guide .rk-loop-author-mark {
    flex: 0 0 auto;
    padding: 8px 12px;
    color: var(--rk-dark);
    background: var(--rk-cyan-soft);
    border-radius: 999px;
    font-size: 0.7rem;
    font-weight: 900;
    letter-spacing: 0.065em;
  }

  #rk-loop-guide .rk-loop-author-layout {
    display: grid;
    grid-template-columns: 320px minmax(0, 1fr);
  }

  #rk-loop-guide .rk-loop-author-side {
    padding: 38px 31px;
    color: var(--rk-white);
    text-align: center;
    background: var(--rk-dark);
  }

  #rk-loop-guide .rk-loop-author-photo {
    width: 158px;
    height: 158px;
    margin: 0 auto 20px;
    overflow: hidden;
    background: var(--rk-white);
    border: 6px solid rgba(255, 255, 255, 0.18);
    border-radius: 50%;
  }

  #rk-loop-guide .rk-loop-author-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  #rk-loop-guide .rk-loop-author-name {
    color: var(--rk-white);
    font-size: 1.23rem;
    font-weight: 900;
  }

  #rk-loop-guide .rk-loop-author-name a {
    color: inherit;
    text-decoration: none;
  }

  #rk-loop-guide .rk-loop-author-role {
    margin-top: 7px;
    color: #b7d0db;
    font-size: 0.76rem;
    line-height: 1.55;
  }

  #rk-loop-guide .rk-loop-author-social-label {
    margin-top: 27px;
    color: #89a9b7;
    font-size: 0.65rem;
    font-weight: 850;
    letter-spacing: 0.07em;
    text-transform: uppercase;
  }

  #rk-loop-guide .rk-loop-author-social {
    display: flex;
    justify-content: center;
    gap: 10px;
    margin-top: 12px;
  }

  #rk-loop-guide .rk-loop-author-social a {
    display: grid;
    width: 43px;
    height: 43px;
    place-items: center;
    color: #d7edf5;
    border: 1px solid #456879;
    border-radius: 50%;
  }

  #rk-loop-guide .rk-loop-author-social a:hover,
  #rk-loop-guide .rk-loop-author-social a:focus-visible {
    color: var(--rk-dark);
    background: var(--rk-cyan);
    border-color: var(--rk-cyan);
  }

  #rk-loop-guide .rk-loop-author-social svg {
    width: 20px;
    height: 20px;
    fill: currentColor;
  }

  #rk-loop-guide .rk-loop-author-main {
    padding: 36px 40px 42px;
  }

  #rk-loop-guide .rk-loop-author-quote {
    position: relative;
    margin: 0 0 24px;
    padding: 25px 28px 25px 68px;
    background: var(--rk-white);
    border: 1px solid var(--rk-line);
    border-radius: 17px;
  }

  #rk-loop-guide .rk-loop-author-quote::before {
    position: absolute;
    top: 18px;
    left: 22px;
    color: var(--rk-cyan);
    content: "“";
    font-family: Georgia, serif;
    font-size: 3.8rem;
    font-weight: 900;
    line-height: 1;
  }

  #rk-loop-guide .rk-loop-author-quote p {
    margin: 0;
    color: var(--rk-dark);
    font-size: 0.92rem;
    font-weight: 780;
  }

  #rk-loop-guide .rk-loop-author-tabs {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin-bottom: 19px;
  }

  #rk-loop-guide .rk-loop-author-tab {
    padding: 9px 15px;
    color: #69808b;
    background: #e6eff3;
    border-radius: 999px;
    cursor: pointer;
    font-size: 0.72rem;
    font-weight: 850;
  }

  #rk-loop-guide .rk-loop-author-panel {
    display: none;
    padding: 20px 22px;
    background: var(--rk-white);
    border: 1px solid var(--rk-line);
    border-radius: 15px;
  }

  #rk-loop-guide .rk-loop-author-panel p {
    font-size: 0.85rem;
  }

  #rk-loop-guide .rk-loop-author-panel p:last-child {
    margin-bottom: 0;
  }

  #rk-loop-author-about:checked ~ .rk-loop-author-layout .rk-loop-author-panel-about,
  #rk-loop-author-exp:checked ~ .rk-loop-author-layout .rk-loop-author-panel-exp,
  #rk-loop-author-sites:checked ~ .rk-loop-author-layout .rk-loop-author-panel-sites {
    display: block;
  }

  #rk-loop-author-about:checked ~ .rk-loop-author-layout label[for="rk-loop-author-about"],
  #rk-loop-author-exp:checked ~ .rk-loop-author-layout label[for="rk-loop-author-exp"],
  #rk-loop-author-sites:checked ~ .rk-loop-author-layout label[for="rk-loop-author-sites"] {
    color: var(--rk-white);
    background: var(--rk-blue);
  }

  #rk-loop-guide .rk-loop-site-links {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    margin-top: 14px;
  }

  #rk-loop-guide .rk-loop-site-links a {
    padding: 7px 11px;
    background: var(--rk-soft);
    border-radius: 9px;
    font-size: 0.73rem;
    font-weight: 820;
    text-decoration: none;
  }

  #rk-loop-guide .rk-loop-final-cta {
    border-top: 1px solid rgba(161, 220, 233, 0.2);
  }

  @media (max-width: 960px) {
    #rk-loop-guide .rk-loop-input-grid,
    #rk-loop-guide .rk-loop-grid-3,
    #rk-loop-guide .rk-loop-grid-4,
    #rk-loop-guide .rk-loop-results,
    #rk-loop-guide .rk-loop-diagnostics {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }

    #rk-loop-guide .rk-loop-route,
    #rk-loop-guide .rk-loop-sequence {
      grid-template-columns: repeat(3, minmax(0, 1fr));
    }

    #rk-loop-guide .rk-loop-route-item:not(:last-child)::after {
      display: none;
    }

    #rk-loop-guide .rk-loop-author-layout {
      grid-template-columns: 280px minmax(0, 1fr);
    }
  }

  @media (max-width: 760px) {
    #rk-loop-guide {
      margin: 16px auto 48px;
      font-size: 16px;
    }

    #rk-loop-guide .rk-loop-shell {
      border-radius: 20px;
    }

    #rk-loop-guide .rk-loop-hero,
    #rk-loop-guide .rk-loop-section {
      padding: 45px 24px;
    }

    #rk-loop-guide .rk-loop-tool-head {
      padding: 45px 24px 25px;
    }

    #rk-loop-guide .rk-loop-tool {
      padding: 0 16px 30px;
    }

    #rk-loop-guide .rk-loop-nav {
      display: grid;
      grid-template-columns: repeat(2, minmax(0, 1fr));
      gap: 8px;
      padding: 18px;
    }

    #rk-loop-guide .rk-loop-nav strong {
      grid-column: 1 / -1;
      margin: 0 0 2px;
    }

    #rk-loop-guide .rk-loop-nav a {
      justify-content: center;
      min-height: 44px;
      padding: 8px 10px;
      border-radius: 11px;
      text-align: center;
    }

    #rk-loop-guide .rk-loop-answer,
    #rk-loop-guide .rk-loop-grid-2,
    #rk-loop-guide .rk-loop-grid-3,
    #rk-loop-guide .rk-loop-grid-4,
    #rk-loop-guide .rk-loop-input-grid,
    #rk-loop-guide .rk-loop-results,
    #rk-loop-guide .rk-loop-diagnostics,
    #rk-loop-guide .rk-loop-errors,
    #rk-loop-guide .rk-loop-route,
    #rk-loop-guide .rk-loop-sequence,
    #rk-loop-guide .rk-loop-author-layout {
      grid-template-columns: 1fr;
    }

    #rk-loop-guide .rk-loop-fieldset {
      padding: 18px;
    }

    #rk-loop-guide .rk-loop-tool-panel {
      padding: 20px;
    }

    #rk-loop-guide .rk-loop-chart-wrap {
      padding: 10px;
    }

    #rk-loop-guide .rk-loop-chart {
      min-height: 300px;
    }

    #rk-loop-guide .rk-loop-cta,
    #rk-loop-guide .rk-loop-final-cta {
      padding: 40px 24px;
    }

    #rk-loop-guide .rk-loop-author-head {
      align-items: flex-start;
      flex-direction: column;
      padding: 34px 24px 23px;
    }

    #rk-loop-guide .rk-loop-author-side,
    #rk-loop-guide .rk-loop-author-main {
      padding: 32px 24px;
    }

    #rk-loop-guide .rk-loop-author-quote {
      padding: 58px 20px 22px;
    }

    #rk-loop-guide .rk-loop-author-quote::before {
      top: 11px;
      left: 18px;
    }

    #rk-loop-guide table,
    #rk-loop-guide thead,
    #rk-loop-guide tbody,
    #rk-loop-guide tr,
    #rk-loop-guide th,
    #rk-loop-guide td {
      display: block;
      width: 100%;
    }

    #rk-loop-guide thead {
      position: absolute;
      width: 1px;
      height: 1px;
      overflow: hidden;
      clip: rect(0 0 0 0);
      white-space: nowrap;
    }

    #rk-loop-guide table {
      background: transparent;
      border: 0;
      border-radius: 0;
    }

    #rk-loop-guide tbody {
      display: grid;
      gap: 13px;
    }

    #rk-loop-guide tbody tr,
    #rk-loop-guide .rk-loop-tool-table tbody tr {
      padding: 9px 15px;
      background: var(--rk-white);
      border: 1px solid var(--rk-line);
      border-radius: 15px;
    }

    #rk-loop-guide .rk-loop-tool-table tbody tr {
      background: rgba(255, 255, 255, 0.055);
      border-color: rgba(161, 218, 231, 0.22);
    }

    #rk-loop-guide td,
    #rk-loop-guide .rk-loop-tool-table td {
      display: grid;
      grid-template-columns: minmax(110px, 0.9fr) minmax(0, 1.1fr);
      gap: 12px;
      padding: 10px 0;
      border-top: 1px solid var(--rk-line);
    }

    #rk-loop-guide .rk-loop-tool-table td {
      border-color: rgba(161, 218, 231, 0.18);
    }

    #rk-loop-guide td:first-child {
      border-top: 0;
    }

    #rk-loop-guide td::before {
      color: var(--rk-dark);
      content: attr(data-label);
      font-size: 0.69rem;
      font-weight: 850;
      letter-spacing: 0.025em;
      line-height: 1.4;
      text-transform: uppercase;
    }

    #rk-loop-guide .rk-loop-tool-table td::before {
      color: #8ec2d2;
    }
  }

  @media (max-width: 500px) {
    #rk-loop-guide .rk-loop-nav {
      grid-template-columns: 1fr;
    }

    #rk-loop-guide .rk-loop-hero-title {
      font-size: 2.05rem;
    }

    #rk-loop-guide .rk-loop-meta {
      align-items: flex-start;
      flex-direction: column;
    }

    #rk-loop-guide .rk-loop-results,
    #rk-loop-guide .rk-loop-diagnostics {
      grid-template-columns: 1fr;
    }

    #rk-loop-guide .rk-loop-actions {
      flex-direction: column;
    }

    #rk-loop-guide .rk-loop-button,
    #rk-loop-guide .rk-loop-cta-button {
      width: 100%;
    }

    #rk-loop-guide .rk-loop-status {
      grid-template-columns: 1fr;
    }

    #rk-loop-guide .rk-loop-step {
      grid-template-columns: 1fr;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    #rk-loop-guide *,
    #rk-loop-guide *::before,
    #rk-loop-guide *::after {
      scroll-behavior: auto !important;
      transition: none !important;
      animation: none !important;
    }
  }
</style>

<article id="rk-loop-guide" aria-label="Maksymalna długość pętli ogrzewania podłogowego">
  <div class="rk-loop-shell">
    <header class="rk-loop-hero">
      <div class="rk-loop-hero-inner">
        <span class="rk-loop-eyebrow"><b aria-hidden="true"></b> Hydraulika pętli • aktualizacja 2026</span>
        <div class="rk-loop-hero-title">100 metrów to punkt kontrolny, a nie uniwersalna granica</div>
        <p class="rk-loop-hero-lead">Maksymalna długość pętli wynika z przepływu, średnicy wewnętrznej, właściwości medium, oporów armatury i dostępnego budżetu ciśnienia. Sprawdź konkretny obwód zamiast dobierać go z jednej tabeli.</p>
        <div class="rk-loop-meta">
          <span><i aria-hidden="true"></i> Model Darcy’ego-Weisbacha</span>
          <span><i aria-hidden="true"></i> Analizator hydrauliczny i wykres</span>
          <span><i aria-hidden="true"></i> Aktualizacja: 1 września 2026 r.</span>
        </div>
      </div>
    </header>

    <nav class="rk-loop-nav" aria-label="Nawigacja po wszystkich nagłówkach H2">
      <strong>Na skróty — wszystkie H2</strong>
      <a href="#rk-loop-answer">Szybka odpowiedź</a>
      <a href="#rk-loop-100m">Dlaczego nie zawsze 100 m</a>
      <a href="#rk-loop-total">Długość całkowita</a>
      <a href="#rk-loop-hydraulics">Przepływ i opory</a>
      <a href="#rk-loop-analyzer">Analizator</a>
      <a href="#rk-loop-parallel">Pętle równoległe</a>
      <a href="#rk-loop-diameters">Średnice rur</a>
      <a href="#rk-loop-balancing">Różne długości</a>
      <a href="#rk-loop-split">Podział na pętle</a>
      <a href="#rk-loop-diagnosis">Pętla 120–140 m</a>
      <a href="#rk-loop-errors">Błędy</a>
      <a href="#rk-loop-checklist">Checklista</a>
      <a href="#rk-loop-faq">FAQ</a>
      <a href="#rk-loop-sources">Źródła</a>
      <a href="#rk-loop-author">Autor</a>
    </nav>

    <main>
      <section class="rk-loop-section" id="rk-loop-answer">
        <span class="rk-loop-kicker">Odpowiedź w 60 sekund</span>
        <h2>Jaka jest maksymalna długość pętli ogrzewania podłogowego?</h2>
        <p class="rk-loop-intro">Nie istnieje jedna długość właściwa dla każdego obwodu. Dla popularnej rury 16 × 2 mm zakres około 80–100 m jest rozsądnym punktem wstępnej kontroli, ale poprawność pętli trzeba potwierdzić przy projektowym przepływie oraz rzeczywistym budżecie ciśnienia.</p>

        <div class="rk-loop-answer">
          <div class="rk-loop-answer-main">
            <h3>Najważniejsza zasada</h3>
            <p><strong>Maksymalna długość jest wynikiem obliczenia, a nie daną wejściową.</strong> Najpierw ustala się moc pętli i przepływ, następnie średnicę wewnętrzną, stratę ciśnienia oraz opory elementów wspólnych. Dopiero później ocenia się, czy pompa zapewni wymagany przepływ.</p>
          </div>
          <div class="rk-loop-answer-side">
            <h3>80–100 m dla 16 × 2</h3>
            <p>Traktuj ten zakres jako praktyczny alarm kontrolny. Nie oznacza on, że 99 m zawsze działa, a 101 m zawsze przestaje działać.</p>
          </div>
        </div>

        <div class="rk-loop-grid-3">
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Długość</span>
            <h3>Cały obwód od belki do belki</h3>
            <p>Wlicza się rurę w polu grzewczym, zasilający dobieg do pomieszczenia oraz powrót do rozdzielacza.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Przepływ</span>
            <h3>Wynika z mocy i ΔT</h3>
            <p>Ta sama rura przy 0,8 l/min stawia zdecydowanie mniejszy opór niż przy 2,5 l/min.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Ocena</span>
            <h3>Dotyczy całej drogi krytycznej</h3>
            <p>Do pętli dochodzą opory rozdzielacza, zaworów, magistrali, filtrów i pozostałych elementów obiegu.</p>
          </article>
        </div>

        <p>Jeżeli chcesz najpierw wyznaczyć ilość rury z powierzchni, rozstawu oraz dobiegów, skorzystaj z osobnego poradnika <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/">ile metrów podłogówki można zaplanować na jednej pętli</a>. Ten artykuł odpowiada na inne pytanie: czy wskazana długość jest hydraulicznie możliwa przy konkretnym przepływie.</p>
      </section>

      <section class="rk-loop-section" id="rk-loop-100m">
        <span class="rk-loop-kicker">Bez „magicznej” liczby</span>
        <h2>Dlaczego 100 m nie jest uniwersalną granicą pętli?</h2>
        <p class="rk-loop-intro">Opór nie wykonuje skoku pomiędzy 100 a 101 metrem. Rośnie wraz z długością, ale jego wartość zależy jednocześnie od przepływu, średnicy wewnętrznej, lepkości medium i oporów miejscowych.</p>

        <div class="rk-loop-grid-3">
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Przykład A</span>
            <h3>100 m przy małym przepływie</h3>
            <p>Obwód obsługujący niewielką moc może wymagać małego przepływu. Jego strata ciśnienia może mieścić się w przyjętym budżecie mimo długości wynoszącej 100 m.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Przykład B</span>
            <h3>80 m przy dużym przepływie</h3>
            <p>Krótsza pętla o dużej mocy i wysokim przepływie może stawiać większy opór niż dłuższy obwód pracujący przy spokojniejszych warunkach.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Przykład C</span>
            <h3>Ta sama średnica zewnętrzna</h3>
            <p>Rury 16 × 2 i 16 × 2,2 mm nie mają tej samej średnicy wewnętrznej. Nie wolno przypisywać im identycznej charakterystyki hydraulicznej.</p>
          </article>
        </div>

        <div class="rk-loop-note rk-loop-warning">
          <h3>Co wynika z norm?</h3>
          <p>Dokumenty z serii ISO 11855 i EN 1264 dotyczą określania wydajności, projektowania oraz wymiarowania wodnych systemów powierzchniowych. Nie będziemy przypisywać im uniwersalnej tabeli „16 mm = 100 m”, ponieważ jedna liczba nie zastępuje obliczenia konkretnego obwodu.</p>
        </div>

        <p>W praktyce projektowej długość kontrolna nadal jest przydatna. Pozwala szybko zauważyć obwód wymagający dokładniejszego sprawdzenia, ale nie może być jedynym kryterium akceptacji.</p>
      </section>

      <section class="rk-loop-section" id="rk-loop-total">
        <span class="rk-loop-kicker">Od zasilania do powrotu</span>
        <h2>Co wlicza się do całkowitej długości pętli?</h2>
        <p class="rk-loop-intro">Pętla zaczyna się na belce zasilającej rozdzielacza i kończy na belce powrotnej. Rura biegnąca przez korytarz nie znika z hydrauliki tylko dlatego, że nie ogrzewa docelowego pomieszczenia.</p>

        <div class="rk-loop-route" aria-label="Droga rury w pętli ogrzewania podłogowego">
          <div class="rk-loop-route-item"><b>Belka zasilająca</b><span>Początek analizowanego obwodu</span></div>
          <div class="rk-loop-route-item"><b>Dobieg zasilający</b><span>Droga od szafki do pola grzewczego</span></div>
          <div class="rk-loop-route-item"><b>Pole grzewcze</b><span>Rura ułożona w pomieszczeniu lub strefie</span></div>
          <div class="rk-loop-route-item"><b>Dobieg powrotny</b><span>Powrót z pola do szafki</span></div>
          <div class="rk-loop-route-item"><b>Belka powrotna</b><span>Koniec analizowanego obwodu</span></div>
        </div>

        <div class="rk-loop-formula">
          <strong>L całkowita = L pola + L dobiegu zasilającego + L dobiegu powrotnego</strong>
          <span>Jeżeli rozdzielacz znajduje się 8 m od początku pola, same dobiegi mogą zużyć około 16 m rury.</span>
        </div>

        <div class="rk-loop-grid-2">
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Geometria</span>
            <h3>Rozstaw nie wyznacza sam hydrauliki</h3>
            <p>Gęstszy rozstaw zwiększa ilość rury w polu i zwykle wymaga większej liczby obwodów. Najpierw trzeba jednak sprawdzić, czy wybrany rozstaw zapewni wymaganą moc cieplną. Zobacz porównanie <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstawu rur 10 i 15 cm</a>.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Lokalizacja szafki</span>
            <h3>Długie dobiegi zmieniają podział pętli</h3>
            <p>Położenie rozdzielacza nie musi być geometrycznie centralne za wszelką cenę, ale powinno zostać ocenione razem z przebiegiem rur, długościami obwodów, strefami tranzytowymi i możliwością regulacji.</p>
          </article>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-hydraulics">
        <span class="rk-loop-kicker">Właściwa kolejność obliczeń</span>
        <h2>Jak przepływ i średnica wyznaczają opór pętli?</h2>
        <p class="rk-loop-intro">Nie zaczynamy od wyboru maksymalnej liczby metrów. Zaczynamy od mocy, którą obwód ma przekazać, oraz od projektowej różnicy temperatury wody.</p>

        <div class="rk-loop-sequence">
          <article><b>1</b><strong>Moc pętli</strong><span>Wynika ze strat ciepła i udziału obwodu w ogrzewaniu strefy.</span></article>
          <article><b>2</b><strong>Przepływ</strong><span>Obliczany z mocy i przyjętego ΔT.</span></article>
          <article><b>3</b><strong>Prędkość</strong><span>Zależy od przepływu oraz średnicy wewnętrznej.</span></article>
          <article><b>4</b><strong>Spadek ciśnienia</strong><span>Rura i elementy miejscowe tworzą opór obwodu.</span></article>
          <article><b>5</b><strong>Weryfikacja</strong><span>Wynik porównujemy z dostępnym budżetem ciśnienia.</span></article>
        </div>

        <div class="rk-loop-formula">
          <strong>V̇ [l/min] ≈ Q [W] ÷ (69,8 × ΔT [K])</strong>
          <span>Orientacyjna zależność dla wody w typowych temperaturach ogrzewania podłogowego.</span>
        </div>

        <div class="rk-loop-formula">
          <strong>Δp = λ × (L ÷ dᵢ) × (ρv² ÷ 2) + ΣΔp miejscowe</strong>
          <span>Model Darcy’ego-Weisbacha łączy długość, średnicę wewnętrzną, prędkość, gęstość, współczynnik tarcia oraz dodatkowe opory.</span>
        </div>

        <div class="rk-loop-note">
          <h3>Budżet 20 kPa nie jest uniwersalną normą</h3>
          <p>Może być przyjętym celem projektowym dla pętli, ale analizator pozostawia tę wartość edytowalną. Ostateczna ocena wymaga charakterystyki pompy i uwzględnienia wszystkich elementów wspólnych instalacji.</p>
        </div>
      </section>

      <section class="rk-loop-tool-section" id="rk-loop-analyzer">
        <div class="rk-loop-tool-head">
          <span class="rk-loop-kicker">Narzędzie interaktywne</span>
          <h2>Analizator hydraulicznej długości pętli</h2>
          <p>Wpisz dane jednego kompletnego obwodu. Narzędzie obliczy przepływ, prędkość, spadek ciśnienia i długość odpowiadającą wprowadzonemu budżetowi. Wynik nie jest normowym limitem — dotyczy wyłącznie podanych założeń.</p>
        </div>

        <div class="rk-loop-tool" id="rk-loop-tool">
          <div class="rk-loop-tool-panel">
            <h3>Dane do analizy</h3>
            <p>Jeżeli znasz przepływ z projektu, wybierz tryb „Znany przepływ”. W przeciwnym razie analizator obliczy go z mocy pętli i ΔT.</p>

            <div class="rk-loop-input-grid">
              <fieldset class="rk-loop-fieldset">
                <legend>1. Moc i przepływ</legend>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Sposób określenia przepływu</span>
                  <span class="rk-loop-input-row">
                    <select id="rk-loop-mode">
                      <option value="power" selected>Z mocy pętli i ΔT</option>
                      <option value="flow">Znany przepływ z projektu</option>
                    </select>
                  </span>
                </label>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Projektowa moc pętli</span>
                  <span class="rk-loop-input-row">
                    <input id="rk-loop-power" type="number" min="50" max="4000" step="10" value="600" inputmode="decimal">
                    <span class="rk-loop-unit">W</span>
                  </span>
                  <small>Moc przypisana do jednego obwodu, nie do całego budynku.</small>
                </label>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Projektowa różnica temperatur ΔT</span>
                  <span class="rk-loop-input-row">
                    <input id="rk-loop-delta" type="number" min="1" max="20" step="0.1" value="5" inputmode="decimal">
                    <span class="rk-loop-unit">K</span>
                  </span>
                </label>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Znany przepływ pętli</span>
                  <span class="rk-loop-input-row">
                    <input id="rk-loop-known-flow" type="number" min="0.1" max="8" step="0.01" value="1.72" inputmode="decimal" disabled>
                    <span class="rk-loop-unit">l/min</span>
                  </span>
                  <small>Aktywny tylko w trybie przepływu z projektu.</small>
                </label>
              </fieldset>

              <fieldset class="rk-loop-fieldset">
                <legend>2. Rura i medium</legend>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Wymiar rury</span>
                  <span class="rk-loop-input-row">
                    <select id="rk-loop-pipe">
                      <option value="12" selected>16 × 2,0 mm — dᵢ 12,0 mm</option>
                      <option value="11.6">16 × 2,2 mm — dᵢ 11,6 mm</option>
                      <option value="13">17 × 2,0 mm — dᵢ 13,0 mm</option>
                      <option value="16">20 × 2,0 mm — dᵢ 16,0 mm</option>
                      <option value="custom">Własna średnica wewnętrzna</option>
                    </select>
                  </span>
                </label>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Własna średnica wewnętrzna</span>
                  <span class="rk-loop-input-row">
                    <input id="rk-loop-custom-id" type="number" min="6" max="30" step="0.1" value="12" inputmode="decimal" disabled>
                    <span class="rk-loop-unit">mm</span>
                  </span>
                  <small>Wpisz wartość z dokumentacji konkretnej rury.</small>
                </label>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Średnia temperatura wody</span>
                  <span class="rk-loop-input-row">
                    <input id="rk-loop-water-temp" type="number" min="10" max="60" step="1" value="30" inputmode="decimal">
                    <span class="rk-loop-unit">°C</span>
                  </span>
                  <small>Model interpoluje gęstość i lepkość wody w zakresie 10–60°C.</small>
                </label>
              </fieldset>

              <fieldset class="rk-loop-fieldset">
                <legend>3. Długość i budżet</legend>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Całkowita długość pętli</span>
                  <span class="rk-loop-input-row">
                    <input id="rk-loop-length" type="number" min="5" max="220" step="1" value="90" inputmode="decimal">
                    <span class="rk-loop-unit">m</span>
                  </span>
                  <small>Łącznie z dobiegami od rozdzielacza i do rozdzielacza.</small>
                </label>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Dodatkowe opory obwodu</span>
                  <span class="rk-loop-input-row">
                    <input id="rk-loop-extra" type="number" min="0" max="50" step="0.1" value="3" inputmode="decimal">
                    <span class="rk-loop-unit">kPa</span>
                  </span>
                  <small>Rozdzielacz, zawór, przyłącza i inne elementy przypisane do pętli.</small>
                </label>

                <label class="rk-loop-field">
                  <span class="rk-loop-field-label">Przyjęty budżet ciśnienia dla pętli</span>
                  <span class="rk-loop-input-row">
                    <input id="rk-loop-budget" type="number" min="1" max="100" step="0.5" value="20" inputmode="decimal">
                    <span class="rk-loop-unit">kPa</span>
                  </span>
                  <small>Edytowalne założenie projektowe, a nie limit normowy.</small>
                </label>
              </fieldset>
            </div>

            <div class="rk-loop-actions">
              <button class="rk-loop-button" id="rk-loop-calculate" type="button">Przelicz analizę</button>
              <button class="rk-loop-button rk-loop-button-secondary" id="rk-loop-reset" type="button">Przywróć przykład</button>
            </div>
          </div>

          <div class="rk-loop-tool-panel" aria-live="polite">
            <h3>Wynik dla wprowadzonych danych</h3>
            <p>Wartości dotyczą wody i gładkiej rury tworzywowej o referencyjnej chropowatości. Dla mieszaniny z glikolem należy użyć właściwości konkretnego medium.</p>

            <div class="rk-loop-results">
              <div class="rk-loop-result"><span>Przepływ pętli</span><strong id="rk-loop-result-flow">—</strong><small id="rk-loop-result-flow-hour">—</small></div>
              <div class="rk-loop-result"><span>Prędkość w rurze</span><strong id="rk-loop-result-velocity">—</strong><small>wartość kontrolna</small></div>
              <div class="rk-loop-result"><span>Gradient ciśnienia</span><strong id="rk-loop-result-gradient">—</strong><small>strata liniowa</small></div>
              <div class="rk-loop-result"><span>Strata na rurze</span><strong id="rk-loop-result-pipe-loss">—</strong><small>bez oporów dodatkowych</small></div>
              <div class="rk-loop-result"><span>Strata całej pętli</span><strong id="rk-loop-result-total-loss">—</strong><small>rura i wpisane dodatki</small></div>
              <div class="rk-loop-result"><span>Rezerwa budżetu</span><strong id="rk-loop-result-reserve">—</strong><small>wartość może być ujemna</small></div>
              <div class="rk-loop-result"><span>Długość z budżetu</span><strong id="rk-loop-result-max-length">—</strong><small>dla niezmienionego przepływu</small></div>
              <div class="rk-loop-result"><span>Liczba Reynoldsa</span><strong id="rk-loop-result-reynolds">—</strong><small id="rk-loop-result-regime">—</small></div>
            </div>

            <div class="rk-loop-status" id="rk-loop-status">
              <span class="rk-loop-status-icon" id="rk-loop-status-icon">✓</span>
              <div>
                <strong id="rk-loop-status-title">Trwa obliczanie</strong>
                <p id="rk-loop-status-copy">Wynik pojawi się po przeliczeniu danych.</p>
              </div>
            </div>

            <div class="rk-loop-diagnostics" id="rk-loop-diagnostics"></div>
          </div>

          <div class="rk-loop-tool-panel">
            <h3>Spadek ciśnienia a długość pętli</h3>
            <p>Krzywe porównują popularne średnice przy tym samym przepływie. Pozioma linia pokazuje wpisany budżet, a punkt — analizowaną długość i wybraną rurę.</p>
            <div class="rk-loop-chart-wrap">
              <svg class="rk-loop-chart" id="rk-loop-chart" viewBox="0 0 920 430" role="img" aria-label="Wykres spadku ciśnienia w zależności od długości pętli"></svg>
              <div class="rk-loop-chart-legend" aria-hidden="true">
                <span class="rk-loop-legend-item"><i class="rk-loop-legend-line" style="background:#078fbe"></i>16 × 2,0</span>
                <span class="rk-loop-legend-item"><i class="rk-loop-legend-line" style="background:#17846d"></i>17 × 2,0</span>
                <span class="rk-loop-legend-item"><i class="rk-loop-legend-line" style="background:#ff6f3d"></i>20 × 2,0</span>
                <span class="rk-loop-legend-item"><i class="rk-loop-legend-line" style="height:2px;background:#d94b3d"></i>budżet ciśnienia</span>
              </div>
              <p class="rk-loop-chart-note">Wykres nie pokazuje charakterystyki pompy ani oporów wspólnej magistrali. Te elementy trzeba dodać podczas oceny najbardziej wymagającej drogi przepływu.</p>
            </div>
          </div>

          <div class="rk-loop-tool-panel rk-loop-tool-table">
            <h3>Te same warunki, różne średnice</h3>
            <p>Porównanie zachowuje identyczny przepływ, długość, temperaturę wody, opory dodatkowe i budżet ciśnienia. Dzięki temu widać wpływ samej średnicy wewnętrznej.</p>
            <div class="rk-loop-table-wrap">
              <table>
                <thead>
                  <tr>
                    <th>Rura</th>
                    <th>Średnica wewnętrzna</th>
                    <th>Prędkość</th>
                    <th>Gradient</th>
                    <th>Strata całkowita</th>
                    <th>Długość z budżetu</th>
                  </tr>
                </thead>
                <tbody id="rk-loop-comparison-body"></tbody>
              </table>
            </div>
          </div>

          <p class="rk-loop-tool-disclaimer"><strong>Zakres modelu:</strong> wynik jest wstępną analizą referencyjną jednego obwodu. Nie sprawdza mocy powierzchni grzewczej, temperatury posadzki, charakterystyki pompy, oporów magistrali, filtrów, źródła ciepła ani zachowania zaworów przy częściowo zamkniętych pętlach. Nie zastępuje projektu i dokumentacji konkretnego systemu.</p>
        </div>
      </section>

      <aside class="rk-loop-cta" aria-label="Projekt z obliczoną hydrauliką pętli">
        <span class="rk-loop-kicker" style="color:#7ff1ff">Wynik jednej pętli to dopiero początek</span>
        <div class="rk-loop-cta-title" role="heading" aria-level="2">Analizator nie zna całej drogi krytycznej Twojej instalacji</div>
        <p>Narzędzie sprawdza jeden obwód dla wprowadzonych danych, ale nie zna przebiegu wszystkich pętli, oporów magistrali, rozdzielacza, zaworów, krzywej pompy ani wymaganych nastaw. Jeżeli chcesz otrzymać pętle naniesione na rzut wraz z długościami, przepływami, stratami ciśnienia i nastawami rozdzielacza, potrzebny jest indywidualny projekt.</p>
        <a class="rk-loop-cta-button rk-loop-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z obliczoną hydrauliką pętli</a>
        <small class="rk-loop-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
      </aside>

      <section class="rk-loop-section" id="rk-loop-parallel">
        <span class="rk-loop-kicker">Rozdzielacz i pompa</span>
        <h2>Jak pracują równoległe pętle i droga krytyczna?</h2>
        <p class="rk-loop-intro">Pętle podłączone do wspólnego rozdzielacza są gałęziami równoległymi. Nie dodajemy do siebie ich strat ciśnienia. Sumujemy natomiast przepływy obwodów pracujących jednocześnie.</p>

        <div class="rk-loop-grid-3">
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Ciśnienie</span>
            <h3>Każda pętla ma tę samą różnicę pomiędzy belkami</h3>
            <p>Przepływ w gałęzi wynika z jej oporu i położenia zaworu. Nie opisujemy tego jako „uciekania całego ciśnienia” do krótkiej pętli.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Przepływ całkowity</span>
            <h3>Pompa obsługuje sumę aktywnych obwodów</h3>
            <p>Jeżeli dziesięć pętli wymaga po 1,5 l/min, przepływ rozdzielacza wynosi łącznie około 15 l/min.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Wysokość podnoszenia</span>
            <h3>Liczy się najbardziej wymagająca droga</h3>
            <p>Do krytycznej pętli dodaje się opory wspólnej magistrali, źródła, filtrów, zaworów i rozdzielacza.</p>
          </article>
        </div>

        <p>Dobór całego urządzenia możesz prześledzić w osobnym <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulatorze pompy obiegowej do ogrzewania podłogowego</a>. Nie należy dobierać pompy wyłącznie do liczby sekcji rozdzielacza ani zwiększać jej biegu bez sprawdzenia punktu pracy.</p>
      </section>

      <section class="rk-loop-section" id="rk-loop-diameters">
        <span class="rk-loop-kicker">Liczy się światło przepływu</span>
        <h2>Rura 16 × 2, 16 × 2,2, 17 × 2 i 20 × 2 — co się zmienia?</h2>
        <p class="rk-loop-intro">Porównanie rur musi opierać się na rzeczywistej średnicy wewnętrznej oraz danych konkretnego wyrobu. Oznaczenie handlowe nie jest kompletną charakterystyką hydrauliczną.</p>

        <div class="rk-loop-table-wrap">
          <table>
            <thead>
              <tr>
                <th>Wymiar nominalny</th>
                <th>Średnica wewnętrzna z geometrii</th>
                <th>Znaczenie hydrauliczne</th>
                <th>Wniosek projektowy</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td data-label="Wymiar nominalny"><strong>16 × 2,0 mm</strong></td>
                <td data-label="Średnica wewnętrzna">około 12,0 mm</td>
                <td data-label="Znaczenie">Popularny punkt odniesienia dla pętli podłogowych.</td>
                <td data-label="Wniosek">Zakres 80–100 m może być kontrolą wstępną, ale wymaga obliczenia przepływu i oporów.</td>
              </tr>
              <tr>
                <td data-label="Wymiar nominalny"><strong>16 × 2,2 mm</strong></td>
                <td data-label="Średnica wewnętrzna">około 11,6 mm</td>
                <td data-label="Znaczenie">Mniejsze światło zwiększa prędkość i opór przy tym samym przepływie.</td>
                <td data-label="Wniosek">Nie wolno kopiować wyniku obliczonego dla rury 16 × 2,0 mm.</td>
              </tr>
              <tr>
                <td data-label="Wymiar nominalny"><strong>17 × 2,0 mm</strong></td>
                <td data-label="Średnica wewnętrzna">około 13,0 mm</td>
                <td data-label="Znaczenie">Większe światło może zmniejszyć spadek ciśnienia.</td>
                <td data-label="Wniosek">Nie oznacza automatycznego pozwolenia na konkretną długość bez pozostałych danych.</td>
              </tr>
              <tr>
                <td data-label="Wymiar nominalny"><strong>20 × 2,0 mm</strong></td>
                <td data-label="Średnica wewnętrzna">około 16,0 mm</td>
                <td data-label="Znaczenie">Znacznie mniejszy opór przy tym samym przepływie.</td>
                <td data-label="Wniosek">Trzeba równocześnie uwzględnić system podłogi, promień gięcia, wysokość konstrukcji i sposób wykonania.</td>
              </tr>
            </tbody>
          </table>
        </div>

        <div class="rk-loop-note rk-loop-warning">
          <h3>Wymiary geometryczne nie zastępują dokumentacji</h3>
          <p>Rzeczywista średnica, tolerancje, dopuszczalne promienie gięcia, temperatura i ciśnienie pracy muszą pochodzić z dokumentacji zastosowanej rury. W artykule nie linkujemy do producentów ani sklepów.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-balancing">
        <span class="rk-loop-kicker">Nie wyrównuj metrów na siłę</span>
        <h2>Czy pętle na jednym rozdzielaczu muszą mieć podobną długość?</h2>
        <p class="rk-loop-intro">Podobne długości mogą ułatwić regulację, ale nie istnieje uniwersalna zasada, że różnica musi zawsze mieścić się w 10, 15 albo 20%. Każdy obwód powinien otrzymać przepływ wynikający z przypisanej mu mocy i ΔT.</p>

        <div class="rk-loop-grid-2">
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Dobra praktyka</span>
            <h3>Projektuj pętle możliwe do wyregulowania</h3>
            <p>Trzeba sprawdzić wymagany przepływ, opór gałęzi, zakres rotametru lub zaworu oraz dostępne ciśnienie. Krótszą pętlę można zdławić do wartości projektowej, jeżeli armatura pozwala na stabilną regulację.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Zła praktyka</span>
            <h3>Nie dodawaj rury tylko dla równej liczby metrów</h3>
            <p>Niepotrzebne prowadzenie przewodu zwiększa materiał, pojemność i opór. Celem nie są identyczne długości, lecz poprawne przepływy i równomierna praca instalacji.</p>
          </article>
        </div>

        <p>Do regulacji służą przepływomierze i zawory. Zobacz, jak prawidłowo <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">odczytać i ustawić rotametr na rozdzielaczu</a>.</p>
      </section>

      <section class="rk-loop-section" id="rk-loop-split">
        <span class="rk-loop-kicker">Podział wynika z kilku kryteriów</span>
        <h2>Kiedy pomieszczenie trzeba podzielić na dwie lub więcej pętli?</h2>
        <p class="rk-loop-intro">O liczbie obwodów nie decyduje wyłącznie metraż. Podział powinien jednocześnie spełnić wymagania cieplne, geometryczne i hydrauliczne.</p>

        <div class="rk-loop-grid-3">
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Kryterium 1</span>
            <h3>Za duża ilość rury</h3>
            <p>Powierzchnia czynna i rozstaw prowadzą do długości, która przy wymaganym przepływie przekracza przyjęty budżet ciśnienia.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Kryterium 2</span>
            <h3>Za duża moc jednej pętli</h3>
            <p>Duża moc przy niewielkim ΔT wymaga przepływu powodującego wysoką prędkość albo stratę ciśnienia.</p>
          </article>
          <article class="rk-loop-card">
            <span class="rk-loop-card-number">Kryterium 3</span>
            <h3>Geometria i dylatacje</h3>
            <p>Układ pomieszczenia, strefy bez rur, przejścia przez drzwi i pola jastrychu mogą wymagać osobnych obwodów niezależnie od samej hydrauliki.</p>
          </article>
        </div>

        <p>Dla dużej otwartej strefy warto przejść do praktycznego poradnika <a href="https://projekt-ogrzewania.pl/salon-ile-petli-podlogowki/">ile pętli podłogówki zaplanować w salonie</a>. Liczbę obwodów należy ustalić przed wykonaniem jastrychu, gdy można jeszcze bezpiecznie zmienić przebieg instalacji.</p>
      </section>

      <section class="rk-loop-section" id="rk-loop-diagnosis">
        <span class="rk-loop-kicker">Najpierw pomiar, później decyzja</span>
        <h2>Czy istniejąca pętla 120 albo 140 m może działać?</h2>
        <p class="rk-loop-intro">Sama długość nie pozwala wydać wiarygodnego wyroku. Długi obwód może mieć problem z osiągnięciem projektowego przepływu, ale diagnoza powinna zacząć się od danych, a nie od automatycznej wymiany pompy.</p>

        <div class="rk-loop-steps">
          <article class="rk-loop-step">
            <div><h3>Ustal rzeczywistą długość i średnicę wewnętrzną</h3><p>Sprawdź dokumentację powykonawczą, oznaczenie rury i przebieg dobiegów. Bez tych informacji obliczenie będzie tylko zgadywaniem.</p></div>
          </article>
          <article class="rk-loop-step">
            <div><h3>Sprawdź wymagany oraz rzeczywisty przepływ</h3><p>Odczytaj rotametr przy otwartej pętli, stabilnej pracy pompy i odpowietrzonej instalacji. Porównaj odczyt z wartością projektową.</p></div>
          </article>
          <article class="rk-loop-step">
            <div><h3>Zmierz temperaturę zasilania i powrotu</h3><p>ΔT pomaga ocenić, czy obwód przenosi zakładaną moc. Nie przypisuj długiej pętli z góry różnicy 10 K.</p></div>
          </article>
          <article class="rk-loop-step">
            <div><h3>Sprawdź zawory, siłownik, filtr i zapowietrzenie</h3><p>Brak przepływu może wynikać z zamknięcia, zanieczyszczenia, powietrza albo nieprawidłowej nastawy, a nie wyłącznie z długości rury.</p></div>
          </article>
          <article class="rk-loop-step">
            <div><h3>Porównaj punkt pracy pompy z drogą krytyczną</h3><p>Nie zwiększaj biegu w ciemno. Oceń wymagany przepływ całkowity, wysokość podnoszenia oraz zachowanie pozostałych obwodów.</p></div>
          </article>
        </div>

        <div class="rk-loop-note rk-loop-danger">
          <h3>Mocniejsza pompa nie jest automatycznym „ratunkiem”</h3>
          <p>Może zwiększyć dostępne ciśnienie, ale również zmienić przepływy wszystkich gałęzi, zwiększyć hałas i pobór energii. Jeżeli problemem jest zbyt mała powierzchnia grzewcza albo błędny rozstaw, sama pompa tego nie naprawi. Więcej objawów znajdziesz w opracowaniu o <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">za długiej pętli podłogówki</a>.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-errors">
        <span class="rk-loop-kicker">Bez skrótów projektowych</span>
        <h2>Najczęstsze błędy przy ustalaniu maksymalnej długości pętli</h2>

        <div class="rk-loop-errors">
          <article class="rk-loop-error"><b>Błąd 01</b><h3>„Norma pozwala na 100 m”</h3><p>Jedna długość nie zastępuje wyznaczenia przepływu, oporów i dostępnego ciśnienia.</p></article>
          <article class="rk-loop-error"><b>Błąd 02</b><h3>Pomijanie dobiegów</h3><p>Odcinki od rozdzielacza do pola i z powrotem należą do tej samej drogi przepływu.</p></article>
          <article class="rk-loop-error"><b>Błąd 03</b><h3>Dobór z samej średnicy zewnętrznej</h3><p>O hydraulice decyduje między innymi rzeczywista średnica wewnętrzna.</p></article>
          <article class="rk-loop-error"><b>Błąd 04</b><h3>Przypisywanie stałego ΔT do długości</h3><p>Różnica temperatur wynika z mocy oddawanej przez obwód i rzeczywistego przepływu.</p></article>
          <article class="rk-loop-error"><b>Błąd 05</b><h3>Sumowanie strat równoległych pętli</h3><p>Sumuje się przepływy gałęzi, natomiast ciśnienie sprawdza się na najbardziej wymagającej drodze.</p></article>
          <article class="rk-loop-error"><b>Błąd 06</b><h3>Jednakowy przepływ na wszystkich rotametrach</h3><p>Każda pętla może mieć inną moc i inną wartość projektową.</p></article>
          <article class="rk-loop-error"><b>Błąd 07</b><h3>Większa pompa bez obliczeń</h3><p>Zmiana urządzenia może zamaskować część problemów i rozregulować pozostałe obwody.</p></article>
          <article class="rk-loop-error"><b>Błąd 08</b><h3>Wyrównywanie długości zbędną rurą</h3><p>Nie projektujemy dodatkowych metrów wyłącznie po to, aby wszystkie obwody wyglądały podobnie w tabeli.</p></article>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-checklist">
        <span class="rk-loop-kicker">Przed ułożeniem rur</span>
        <h2>Checklista weryfikacji długości pętli</h2>
        <p class="rk-loop-intro">Poniższa kolejność ogranicza ryzyko, że długość zostanie wybrana z przyzwyczajenia zamiast z obliczeń.</p>

        <div class="rk-loop-steps">
          <article class="rk-loop-step"><div><h3>Oblicz stratę ciepła pomieszczenia</h3><p>Bez wymaganej mocy nie da się uczciwie wyznaczyć przepływu ani sprawdzić, czy powierzchnia podłogi wystarczy.</p></div></article>
          <article class="rk-loop-step"><div><h3>Wyznacz powierzchnię czynną i rozstaw rur</h3><p>Odejmij trwałą zabudowę oraz pola wyłączone z ogrzewania. Rozstaw sprawdź cieplnie.</p></div></article>
          <article class="rk-loop-step"><div><h3>Rozrysuj rzeczywisty przebieg wraz z dobiegami</h3><p>Uwzględnij przejścia przez drzwi, dylatacje, strefy brzegowe i drogę powrotną do rozdzielacza.</p></div></article>
          <article class="rk-loop-step"><div><h3>Przypisz moc i ΔT do każdego obwodu</h3><p>Na tej podstawie oblicz wymagany przepływ, zamiast ustawiać wszystkim pętlom jedną wartość.</p></div></article>
          <article class="rk-loop-step"><div><h3>Policz opór rury oraz elementów miejscowych</h3><p>Użyj średnicy wewnętrznej, właściwości medium, rzeczywistej długości i danych armatury.</p></div></article>
          <article class="rk-loop-step"><div><h3>Sprawdź drogę krytyczną i pompę</h3><p>Dodaj opory elementów wspólnych i porównaj wymagany punkt Q/H z charakterystyką urządzenia.</p></div></article>
          <article class="rk-loop-step"><div><h3>Przygotuj tabelę przepływów i nastaw</h3><p>Każda pętla powinna mieć numer, pomieszczenie, długość, moc, przepływ i wartość do ustawienia na rozdzielaczu.</p></div></article>
          <article class="rk-loop-step"><div><h3>Zweryfikuj układ przed jastrychem</h3><p>Po próbie szczelności porównaj wykonanie z projektem i nanieś zmiany do dokumentacji powykonawczej.</p></div></article>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-faq">
        <span class="rk-loop-kicker">Najczęstsze pytania</span>
        <h2>FAQ — maksymalna długość pętli podłogówki</h2>

        <div class="rk-loop-faq">
          <details>
            <summary>Ile maksymalnie metrów może mieć pętla z rury 16 × 2 mm?</summary>
            <div class="rk-loop-faq-answer"><p>Zakres około 80–100 m jest często stosowany jako praktyczny punkt kontroli, ale nie jest uniwersalnym limitem. Poprawność pętli zależy od wymaganego przepływu, średnicy wewnętrznej, temperatury i rodzaju medium, oporów armatury oraz dostępnego ciśnienia.</p></div>
          </details>
          <details>
            <summary>Czy pętla 120 m z rury 16 mm będzie grzać?</summary>
            <div class="rk-loop-faq-answer"><p>Może działać, ale sama długość nie wystarcza do oceny. Trzeba obliczyć wymagany przepływ, prędkość, spadek ciśnienia i sprawdzić całą drogę krytyczną wraz z pompą. Przy dużym przepływie taki obwód może być trudny do prawidłowej regulacji.</p></div>
          </details>
          <details>
            <summary>Co zrobić, jeśli wykonano już pętlę 140 m?</summary>
            <div class="rk-loop-faq-answer"><p>Najpierw należy ustalić rzeczywisty przepływ, temperaturę zasilania i powrotu, opór obwodu, ustawienie zaworów, odpowietrzenie oraz punkt pracy pompy. Większa pompa nie jest automatycznie właściwym rozwiązaniem. Sposób naprawy zależy od przyczyny i etapu wykonania podłogi.</p></div>
          </details>
          <details>
            <summary>Czy dobiegi wliczają się do długości pętli?</summary>
            <div class="rk-loop-faq-answer"><p>Tak. Do całkowitej długości wlicza się odcinek od belki zasilającej do pola grzewczego, rurę w polu oraz powrót do belki powrotnej. Każdy z tych odcinków powoduje stratę ciśnienia.</p></div>
          </details>
          <details>
            <summary>Czy norma PN-EN 1264 ustala 100 m dla rury 16 mm?</summary>
            <div class="rk-loop-faq-answer"><p>Nie należy przedstawiać 100 m jako uniwersalnego limitu normowego. Projektowanie wymaga uwzględnienia wydajności powierzchni, przepływu, temperatur, oporów hydraulicznych i warunków konkretnego systemu.</p></div>
          </details>
          <details>
            <summary>Czy wszystkie pętle powinny mieć jednakową długość?</summary>
            <div class="rk-loop-faq-answer"><p>Nie. Podobne długości mogą ułatwiać regulację, lecz każda pętla powinna otrzymać przepływ wynikający z jej mocy i ΔT. Możliwość regulacji zależy od oporów oraz zakresu zastosowanych zaworów i rotametrów.</p></div>
          </details>
          <details>
            <summary>Czy większa średnica pozwala zawsze ułożyć dłuższą pętlę?</summary>
            <div class="rk-loop-faq-answer"><p>Większa średnica wewnętrzna zmniejsza prędkość i zwykle ogranicza spadek ciśnienia przy tym samym przepływie. Nie wyznacza jednak samodzielnie dopuszczalnej długości. Trzeba uwzględnić cały system, konstrukcję podłogi i warunki wykonania.</p></div>
          </details>
          <details>
            <summary>Czy długa pętla zawsze ma zimny koniec?</summary>
            <div class="rk-loop-faq-answer"><p>Nie. Spadek temperatury wody zależy od mocy oddawanej przez obwód i rzeczywistego przepływu. Nadmierny opór może ograniczyć przepływ i zwiększyć ΔT, ale sama liczba metrów nie narzuca jednej temperatury końca.</p></div>
          </details>
          <details>
            <summary>Czy mocniejsza pompa rozwiąże problem za długiej pętli?</summary>
            <div class="rk-loop-faq-answer"><p>Tylko w niektórych przypadkach i po obliczeniu całego punktu pracy. Zwiększenie ciśnienia wpływa na wszystkie obwody, może zwiększyć hałas i nie naprawi niewystarczającej powierzchni grzewczej, błędnego rozstawu ani problemu z zaworem lub zapowietrzeniem.</p></div>
          </details>
          <details>
            <summary>Czy można połączyć rurę pod jastrychem, aby wydłużyć pętlę?</summary>
            <div class="rk-loop-faq-answer"><p>Pętle projektuje się jako ciągłe odcinki od rozdzielacza do rozdzielacza. Każde połączenie pod jastrychem musi być ocenione zgodnie z wymaganiami zastosowanego systemu i dokumentacją techniczną. Wydłużanie obwodu złączką nie rozwiązuje problemu hydraulicznego.</p></div>
          </details>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-sources">
        <span class="rk-loop-kicker">Dokumenty odniesienia</span>
        <h2>Źródła i zakres techniczny opracowania</h2>
        <p class="rk-loop-intro">Linki zewnętrzne prowadzą wyłącznie do oficjalnych organizacji normalizacyjnych. Artykuł nie odsyła do producentów, sklepów ani konkurencyjnych serwisów.</p>

        <div class="rk-loop-sources">
          <article class="rk-loop-source">
            <b>ISO 11855-3:2021</b>
            <p>Projektowanie i wymiarowanie wbudowanych systemów ogrzewania oraz chłodzenia płaszczyznowego.</p>
            <a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">Oficjalna karta standardu ISO 11855-3:2021</a>
          </article>
          <article class="rk-loop-source">
            <b>ISO 11855-2:2021</b>
            <p>Wyznaczanie projektowej wydajności grzewczej i chłodniczej systemów płaszczyznowych.</p>
            <a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">Oficjalna karta standardu ISO 11855-2:2021</a>
          </article>
          <article class="rk-loop-source">
            <b>BS EN 1264-3:2021</b>
            <p>Wymiarowanie wodnych systemów ogrzewania i chłodzenia wbudowanych w powierzchnie przegród.</p>
            <a href="https://knowledge.bsigroup.com/products/water-based-surface-embedded-heating-and-cooling-systems-dimensioning-1" target="_blank" rel="nofollow noopener noreferrer">Oficjalna karta BS EN 1264-3:2021</a>
          </article>
        </div>

        <div class="rk-loop-note">
          <h3>Zakres odpowiedzialności</h3>
          <p>Analizator jest modelem edukacyjnym. W projekcie wykonawczym należy użyć danych konkretnej rury, rozdzielacza, zaworów, medium i pompy oraz sprawdzić wymagania systemu, warunki budynku i rzeczywisty przebieg instalacji.</p>
        </div>

        <div class="rk-loop-update">Ostatnia aktualizacja merytoryczna: 1 września 2026 r.</div>
      </section>
    </main>

    <section class="rk-loop-author" id="rk-loop-author" aria-label="Autor opracowania">
      <input type="radio" name="rk-loop-author-tabs" id="rk-loop-author-about" checked>
      <input type="radio" name="rk-loop-author-tabs" id="rk-loop-author-exp">
      <input type="radio" name="rk-loop-author-tabs" id="rk-loop-author-sites">

      <header class="rk-loop-author-head">
        <div>
          <span class="rk-loop-kicker">Autor opracowania</span>
          <h2>Robert Kucharski</h2>
          <p>Projektant instalacji sanitarnych • specjalista HVAC i ogrzewania podłogowego</p>
        </div>
        <span class="rk-loop-author-mark">HYDRAULIKA • HVAC</span>
      </header>

      <div class="rk-loop-author-layout">
        <aside class="rk-loop-author-side">
          <div class="rk-loop-author-photo">
            <img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji ogrzewania podłogowego" width="600" height="600" loading="lazy" decoding="async">
          </div>
          <div class="rk-loop-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
          <div class="rk-loop-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
          <div class="rk-loop-author-social-label">Profile autora</div>
          <div class="rk-loop-author-social" aria-label="Profile Roberta Kucharskiego w mediach społecznościowych">
            <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Robert Kucharski na LinkedIn" title="LinkedIn">
              <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5.2 7.7H1.6V22h3.6V7.7ZM3.4 2A2.1 2.1 0 1 0 3.4 6.2 2.1 2.1 0 0 0 3.4 2ZM22.4 13.8c0-4.3-2.3-6.3-5.4-6.3a4.7 4.7 0 0 0-4.2 2.3V7.7H9.2V22h3.6v-7.1c0-1.9.4-3.7 2.7-3.7 2.3 0 2.3 2.1 2.3 3.8v7h3.6l1-8.2Z"></path></svg>
            </a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Projekt-Ogrzewania.pl na Facebooku" title="Facebook">
              <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M14.2 22v-9h3l.5-3.5h-3.5V7.3c0-1 .3-1.7 1.8-1.7h1.9V2.5c-.3 0-1.5-.1-2.8-.1-2.8 0-4.7 1.7-4.7 4.8v2.3H7.2V13h3.2v9h3.8Z"></path></svg>
            </a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Projekt HVAC w serwisie X" title="X">
              <svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.9 2H22l-6.8 7.8L23.2 22H17l-4.9-6.4L6.5 22H3.3l7.3-8.4L2.8 2h6.4l4.4 5.8L18.9 2Zm-1.1 17.8h1.7L8.3 4.1H6.5l11.3 15.7Z"></path></svg>
            </a>
          </div>
        </aside>

        <div class="rk-loop-author-main">
          <blockquote class="rk-loop-author-quote">
            <p>„Długość pętli jest tylko jednym z parametrów. Dopiero połączenie mocy, przepływu, średnicy, oporów i dostępnego ciśnienia pozwala ocenić, czy obwód będzie pracował prawidłowo.”</p>
          </blockquote>

          <div class="rk-loop-author-tabs" role="tablist" aria-label="Informacje o autorze">
            <label class="rk-loop-author-tab" for="rk-loop-author-about">O autorze</label>
            <label class="rk-loop-author-tab" for="rk-loop-author-exp">Doświadczenie</label>
            <label class="rk-loop-author-tab" for="rk-loop-author-sites">Portale</label>
          </div>

          <div class="rk-loop-author-panel rk-loop-author-panel-about">
            <p>Robert Kucharski opracowuje projekty wodnego ogrzewania podłogowego dla domów nowych i modernizowanych. Łączy obliczenia strat ciepła z doborem temperatury zasilania i powrotu, rozstawów rur, powierzchni czynnej, długości obwodów oraz przepływów.</p>
            <p>Materiały edukacyjne przygotowuje z perspektywy dokumentacji, którą musi później wykorzystać instalator na budowie. Dlatego w poradnikach oddziela założenia wstępne od parametrów wymagających obliczenia konkretnego układu.</p>
          </div>

          <div class="rk-loop-author-panel rk-loop-author-panel-exp">
            <p>W praktyce projektowej analizuje nie tylko pojedynczą pętlę, ale całą drogę krytyczną: magistralę, rozdzielacz, zawory, przepływy wszystkich równoległych obwodów, straty ciśnienia i wymagany punkt pracy pompy.</p>
            <p>Dokumentacja zawiera przebieg pętli naniesiony na rzut, długości, przypisane moce, przepływy, nastawy rozdzielacza oraz dane potrzebne do uruchomienia i późniejszej kontroli instalacji.</p>
          </div>

          <div class="rk-loop-author-panel rk-loop-author-panel-sites">
            <p>Robert Kucharski jest właścicielem trzech serwisów branżowych. Informacja o powiązaniu portali jest podawana jawnie, aby czytelnik znał autorstwo, doświadczenie i kontekst publikowanych materiałów.</p>
            <div class="rk-loop-site-links">
              <a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a>
              <a href="https://remont.biz.pl/" target="_blank" rel="nofollow noopener noreferrer">Remont.biz.pl</a>
              <a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a>
            </div>
          </div>
        </div>
      </div>
    </section>

    <section class="rk-loop-final-cta" aria-label="Końcowe zamówienie projektu ogrzewania podłogowego">
      <span class="rk-loop-kicker" style="color:#7ff1ff">Zamknij długości i przepływy przed wykonaniem jastrychu</span>
      <div class="rk-loop-cta-title" role="heading" aria-level="2">Otrzymaj projekt z każdą pętlą rozrysowaną i policzoną</div>
      <p>Projekt obejmuje straty ciepła, powierzchnie czynne, rozstawy rur, długości obwodów, przepływy, spadki ciśnienia, dobór rozdzielaczy i nastawy. Instalator otrzymuje konkretne wartości zamiast jednej ogólnej zasady „maksymalnie 100 m”.</p>
      <a class="rk-loop-cta-button rk-loop-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
      <small class="rk-loop-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
    </section>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#article",
      "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/",
      "headline": "Maksymalna długość pętli ogrzewania podłogowego – od czego naprawdę zależy?",
      "description": "Techniczny poradnik i analizator długości pętli ogrzewania podłogowego uwzględniający przepływ, średnicę wewnętrzną, spadek ciśnienia i budżet hydrauliczny.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-09-01",
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#webpage"},
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "proficiencyLevel": "Expert",
      "about": [
        {"@type": "Thing", "name": "Maksymalna długość pętli ogrzewania podłogowego"},
        {"@type": "Thing", "name": "Opory hydrauliczne"},
        {"@type": "Thing", "name": "Spadek ciśnienia"},
        {"@type": "Thing", "name": "Równoważenie hydrauliczne"},
        {"@type": "Thing", "name": "Ogrzewanie podłogowe"}
      ],
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"}
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#webpage",
      "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/",
      "name": "Maksymalna długość pętli ogrzewania podłogowego",
      "description": "Jak sprawdzić maksymalną długość pętli podłogówki z przepływu, średnicy i spadku ciśnienia.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-09-01",
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"},
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#breadcrumb"},
      "mainEntity": [
        {"@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#application"},
        {"@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#howto"},
        {"@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#faq"}
      ]
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#breadcrumb",
      "itemListElement": [
        {"@type": "ListItem", "position": 1, "name": "Strona główna", "item": "https://projekt-ogrzewania.pl/"},
        {"@type": "ListItem", "position": 2, "name": "Hydraulika", "item": "https://projekt-ogrzewania.pl/category/hydraulika/"},
        {"@type": "ListItem", "position": 3, "name": "Maksymalna długość pętli ogrzewania podłogowego", "item": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/"}
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#application",
      "name": "Analizator hydraulicznej długości pętli",
      "url": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#rk-loop-analyzer",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "Obsługa JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "description": "Narzędzie oblicza przepływ, prędkość, spadek ciśnienia oraz hydrauliczną długość pętli dla wprowadzonego budżetu ciśnienia."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#howto",
      "name": "Jak sprawdzić maksymalną długość pętli ogrzewania podłogowego?",
      "description": "Kolejność weryfikacji cieplnej, geometrycznej i hydraulicznej pętli przed wykonaniem jastrychu.",
      "inLanguage": "pl-PL",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Oblicz stratę ciepła pomieszczenia", "text": "Ustal wymaganą moc cieplną pomieszczenia i udział analizowanej pętli."},
        {"@type": "HowToStep", "position": 2, "name": "Wyznacz powierzchnię czynną i rozstaw rur", "text": "Odejmij trwałą zabudowę i sprawdź cieplnie wybrany rozstaw."},
        {"@type": "HowToStep", "position": 3, "name": "Rozrysuj przebieg wraz z dobiegami", "text": "Uwzględnij całą długość od belki zasilającej do belki powrotnej."},
        {"@type": "HowToStep", "position": 4, "name": "Przypisz moc i delta T", "text": "Oblicz wymagany przepływ każdego obwodu z jego mocy i projektowej różnicy temperatur."},
        {"@type": "HowToStep", "position": 5, "name": "Policz opory", "text": "Uwzględnij średnicę wewnętrzną, medium, długość oraz opory rozdzielacza i armatury."},
        {"@type": "HowToStep", "position": 6, "name": "Sprawdź drogę krytyczną i pompę", "text": "Dodaj elementy wspólne i porównaj wymagany punkt pracy z charakterystyką pompy."},
        {"@type": "HowToStep", "position": 7, "name": "Przygotuj tabelę przepływów", "text": "Zapisz dla każdej pętli długość, moc, przepływ i wymaganą nastawę rozdzielacza."},
        {"@type": "HowToStep", "position": 8, "name": "Zweryfikuj wykonanie przed jastrychem", "text": "Porównaj rzeczywisty przebieg z projektem i nanieś zmiany do dokumentacji powykonawczej."}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {"@type": "Question", "name": "Ile maksymalnie metrów może mieć pętla z rury 16 × 2 mm?", "acceptedAnswer": {"@type": "Answer", "text": "Zakres około 80–100 m jest często stosowany jako praktyczny punkt kontroli, ale nie jest uniwersalnym limitem. Poprawność pętli zależy od wymaganego przepływu, średnicy wewnętrznej, temperatury i rodzaju medium, oporów armatury oraz dostępnego ciśnienia."}},
        {"@type": "Question", "name": "Czy pętla 120 m z rury 16 mm będzie grzać?", "acceptedAnswer": {"@type": "Answer", "text": "Może działać, ale sama długość nie wystarcza do oceny. Trzeba obliczyć wymagany przepływ, prędkość, spadek ciśnienia i sprawdzić całą drogę krytyczną wraz z pompą."}},
        {"@type": "Question", "name": "Co zrobić, jeśli wykonano już pętlę 140 m?", "acceptedAnswer": {"@type": "Answer", "text": "Najpierw należy ustalić rzeczywisty przepływ, temperaturę zasilania i powrotu, opór obwodu, ustawienie zaworów, odpowietrzenie oraz punkt pracy pompy. Większa pompa nie jest automatycznie właściwym rozwiązaniem."}},
        {"@type": "Question", "name": "Czy dobiegi wliczają się do długości pętli?", "acceptedAnswer": {"@type": "Answer", "text": "Tak. Do całkowitej długości wlicza się odcinek od belki zasilającej do pola grzewczego, rurę w polu oraz powrót do belki powrotnej."}},
        {"@type": "Question", "name": "Czy norma PN-EN 1264 ustala 100 m dla rury 16 mm?", "acceptedAnswer": {"@type": "Answer", "text": "Nie należy przedstawiać 100 m jako uniwersalnego limitu normowego. Projektowanie wymaga uwzględnienia wydajności powierzchni, przepływu, temperatur, oporów hydraulicznych i warunków konkretnego systemu."}},
        {"@type": "Question", "name": "Czy wszystkie pętle powinny mieć jednakową długość?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Podobne długości mogą ułatwiać regulację, lecz każda pętla powinna otrzymać przepływ wynikający z jej mocy i delta T."}},
        {"@type": "Question", "name": "Czy większa średnica pozwala zawsze ułożyć dłuższą pętlę?", "acceptedAnswer": {"@type": "Answer", "text": "Większa średnica wewnętrzna zwykle ogranicza spadek ciśnienia przy tym samym przepływie, ale nie wyznacza samodzielnie dopuszczalnej długości."}},
        {"@type": "Question", "name": "Czy długa pętla zawsze ma zimny koniec?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Spadek temperatury wody zależy od mocy oddawanej przez obwód i rzeczywistego przepływu. Sama liczba metrów nie narzuca jednej temperatury końca."}},
        {"@type": "Question", "name": "Czy mocniejsza pompa rozwiąże problem za długiej pętli?", "acceptedAnswer": {"@type": "Answer", "text": "Tylko w niektórych przypadkach i po obliczeniu całego punktu pracy. Zwiększenie ciśnienia wpływa na wszystkie obwody i nie naprawi błędów cieplnych ani wykonawczych."}},
        {"@type": "Question", "name": "Czy można połączyć rurę pod jastrychem, aby wydłużyć pętlę?", "acceptedAnswer": {"@type": "Answer", "text": "Pętle projektuje się jako ciągłe odcinki od rozdzielacza do rozdzielacza. Każde połączenie pod jastrychem musi być ocenione zgodnie z wymaganiami zastosowanego systemu. Wydłużanie obwodu złączką nie rozwiązuje problemu hydraulicznego."}}
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego",
      "worksFor": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "affiliation": [
        {"@id": "https://projekt-ogrzewania.pl/#organization"},
        {"@id": "https://remont.biz.pl/#organization"},
        {"@id": "https://sobir.pl/#organization"}
      ],
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "hydraulika instalacji grzewczych",
        "obliczenia strat ciepła",
        "dobór pomp obiegowych",
        "równoważenie hydrauliczne",
        "projektowanie instalacji sanitarnych"
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt-Ogrzewania.pl",
      "inLanguage": "pl-PL",
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"}
    }
  ]
}
</script>

<script>
(function () {
  "use strict";

  var root = document.getElementById("rk-loop-guide");
  if (!root) {
    return;
  }

  function byId(id) {
    return document.getElementById(id);
  }

  function readNumber(id, fallback) {
    var element = byId(id);
    var raw;
    var value;
    if (!element) {
      return fallback;
    }
    raw = String(element.value).replace(",", ".");
    value = parseFloat(raw);
    if (!isFinite(value)) {
      return fallback;
    }
    return value;
  }

  function clamp(value, minimum, maximum) {
    if (value < minimum) {
      return minimum;
    }
    if (value > maximum) {
      return maximum;
    }
    return value;
  }

  function formatNumber(value, decimals) {
    if (!isFinite(value)) {
      return "—";
    }
    return value.toLocaleString("pl-PL", {
      minimumFractionDigits: decimals,
      maximumFractionDigits: decimals
    });
  }

  function waterProperties(temperature) {
    var points = [
      {t: 10, rho: 999.7, mu: 0.001307},
      {t: 20, rho: 998.2, mu: 0.001002},
      {t: 30, rho: 995.7, mu: 0.000798},
      {t: 40, rho: 992.2, mu: 0.000653},
      {t: 50, rho: 988.1, mu: 0.000547},
      {t: 60, rho: 983.2, mu: 0.000466}
    ];
    var temp = clamp(temperature, 10, 60);
    var i;
    var low;
    var high;
    var fraction;

    for (i = 0; i < points.length - 1; i += 1) {
      low = points[i];
      high = points[i + 1];
      if (temp >= low.t) {
        if (temp <= high.t) {
          fraction = (temp - low.t) / (high.t - low.t);
          return {
            rho: low.rho + fraction * (high.rho - low.rho),
            mu: low.mu + fraction * (high.mu - low.mu)
          };
        }
      }
    }
    return {rho: points[5].rho, mu: points[5].mu};
  }

  function frictionFactor(reynolds, diameterM) {
    var roughnessM = 0.000007;
    var term;
    var logValue;
    if (reynolds <= 0) {
      return 0;
    }
    if (reynolds < 2300) {
      return 64 / reynolds;
    }
    term = roughnessM / (3.7 * diameterM) + 5.74 / Math.pow(reynolds, 0.9);
    logValue = Math.log(term) / Math.LN10;
    return 0.25 / Math.pow(logValue, 2);
  }

  function calculateHydraulics(flowLMin, diameterMm, lengthM, waterTemp, extraKpa, budgetKpa) {
    var props = waterProperties(waterTemp);
    var diameterM = diameterMm / 1000;
    var area = Math.PI * diameterM * diameterM / 4;
    var flowM3S = flowLMin / 60000;
    var velocity = flowM3S / area;
    var reynolds = props.rho * velocity * diameterM / props.mu;
    var factor = frictionFactor(reynolds, diameterM);
    var gradientPaM = factor / diameterM * props.rho * velocity * velocity / 2;
    var pipeLossKpa = gradientPaM * lengthM / 1000;
    var totalLossKpa = pipeLossKpa + extraKpa;
    var remainingKpa = budgetKpa - totalLossKpa;
    var availableForPipeKpa = budgetKpa - extraKpa;
    var maxLengthM = 0;

    if (availableForPipeKpa > 0) {
      if (gradientPaM > 0) {
        maxLengthM = availableForPipeKpa * 1000 / gradientPaM;
      }
    }

    return {
      rho: props.rho,
      mu: props.mu,
      diameterMm: diameterMm,
      velocity: velocity,
      reynolds: reynolds,
      factor: factor,
      gradientPaM: gradientPaM,
      pipeLossKpa: pipeLossKpa,
      totalLossKpa: totalLossKpa,
      remainingKpa: remainingKpa,
      maxLengthM: maxLengthM
    };
  }

  function getSelectedDiameter() {
    var pipe = byId("rk-loop-pipe");
    if (!pipe) {
      return 12;
    }
    if (pipe.value === "custom") {
      return clamp(readNumber("rk-loop-custom-id", 12), 6, 30);
    }
    return clamp(parseFloat(pipe.value), 6, 30);
  }

  function getFlow() {
    var mode = byId("rk-loop-mode").value;
    var power;
    var delta;
    if (mode === "flow") {
      return clamp(readNumber("rk-loop-known-flow", 1.72), 0.1, 8);
    }
    power = clamp(readNumber("rk-loop-power", 600), 50, 4000);
    delta = clamp(readNumber("rk-loop-delta", 5), 1, 20);
    return power / (69.78 * delta);
  }

  function updateFieldStates() {
    var mode = byId("rk-loop-mode").value;
    var custom = byId("rk-loop-pipe").value === "custom";
    byId("rk-loop-power").disabled = mode === "flow";
    byId("rk-loop-delta").disabled = mode === "flow";
    byId("rk-loop-known-flow").disabled = mode !== "flow";
    byId("rk-loop-custom-id").disabled = !custom;
  }

  function setText(id, value) {
    var element = byId(id);
    if (element) {
      element.textContent = value;
    }
  }

  function regimeLabel(reynolds) {
    if (reynolds < 2300) {
      return "przepływ laminarny";
    }
    if (reynolds < 4000) {
      return "obszar przejściowy";
    }
    return "przepływ turbulentny";
  }

  function setStatus(result, budgetKpa, lengthM) {
    var box = byId("rk-loop-status");
    var title = byId("rk-loop-status-title");
    var copy = byId("rk-loop-status-copy");
    var icon = byId("rk-loop-status-icon");
    var ratio = result.totalLossKpa / budgetKpa;

    box.className = "rk-loop-status";
    if (result.totalLossKpa <= budgetKpa) {
      if (ratio <= 0.85) {
        icon.textContent = "✓";
        title.textContent = "Pętla mieści się w przyjętym budżecie";
        copy.textContent = "Dla wpisanych danych całkowita strata jest niższa od założonego budżetu. To nie kończy doboru — trzeba jeszcze dodać elementy wspólne i sprawdzić punkt pracy pompy.";
      } else {
        box.className += " rk-loop-status-warning";
        icon.textContent = "!";
        title.textContent = "Wariant graniczny względem wpisanego budżetu";
        copy.textContent = "Obwód mieści się w założeniu, ale rezerwa jest mała. Zweryfikuj dane konkretnej rury, armatury, magistrali i pompy oraz rzeczywisty przebieg na rzucie.";
      }
    } else {
      box.className += " rk-loop-status-danger";
      icon.textContent = "×";
      title.textContent = "Pętla przekracza przyjęty budżet ciśnienia";
      copy.textContent = "Przy niezmienionym przepływie, średnicy i oporach dodatkowych długość " + formatNumber(lengthM, 0) + " m wymaga większej różnicy ciśnienia niż wpisano. Sprawdź podział obwodu i całą drogę krytyczną.";
    }
  }

  function diagnosticCard(title, copy) {
    var card = document.createElement("div");
    var heading = document.createElement("b");
    var text = document.createTextNode(copy);
    card.className = "rk-loop-diagnostic";
    heading.textContent = title;
    card.appendChild(heading);
    card.appendChild(text);
    return card;
  }

  function renderDiagnostics(result, budgetKpa, extraKpa, diameterMm, flowLMin) {
    var container = byId("rk-loop-diagnostics");
    var velocityCopy;
    var budgetCopy;
    var diameterCopy;

    while (container.firstChild) {
      container.removeChild(container.firstChild);
    }

    if (result.velocity < 0.15) {
      velocityCopy = "Prędkość jest niższa niż orientacyjny zakres kontrolny 0,15–0,60 m/s. Nie jest to automatyczny błąd, ale wymaga oceny odpowietrzania, regulacji i rzeczywistych warunków pracy.";
    } else {
      if (result.velocity > 0.60) {
        velocityCopy = "Prędkość przekracza orientacyjny poziom kontrolny 0,60 m/s. Sprawdź hałas, opory i możliwość podziału mocy na więcej obwodów.";
      } else {
        velocityCopy = "Prędkość mieści się w orientacyjnym zakresie kontrolnym 0,15–0,60 m/s. Nadal trzeba ocenić cały układ i dane zastosowanej armatury.";
      }
    }

    if (extraKpa >= budgetKpa) {
      budgetCopy = "Same wpisane opory dodatkowe wykorzystują cały budżet lub go przekraczają. Długość rury nie może wtedy otrzymać dodatniej rezerwy w tym modelu.";
    } else {
      budgetCopy = "Po odjęciu oporów dodatkowych na samą rurę pozostaje " + formatNumber(budgetKpa - extraKpa, 1) + " kPa.";
    }

    diameterCopy = "Dla średnicy wewnętrznej " + formatNumber(diameterMm, 1) + " mm i przepływu " + formatNumber(flowLMin, 2) + " l/min analizator obliczył gradient " + formatNumber(result.gradientPaM, 0) + " Pa/m.";

    container.appendChild(diagnosticCard("Prędkość przepływu", velocityCopy));
    container.appendChild(diagnosticCard("Podział budżetu", budgetCopy));
    container.appendChild(diagnosticCard("Warunki porównania", diameterCopy));
  }

  function renderComparison(flowLMin, lengthM, waterTemp, extraKpa, budgetKpa) {
    var tbody = byId("rk-loop-comparison-body");
    var pipes = [
      {name: "16 × 2,0", diameter: 12},
      {name: "16 × 2,2", diameter: 11.6},
      {name: "17 × 2,0", diameter: 13},
      {name: "20 × 2,0", diameter: 16}
    ];
    var i;
    var result;
    var row;
    var values;
    var labels = ["Rura", "Średnica wewnętrzna", "Prędkość", "Gradient", "Strata całkowita", "Długość z budżetu"];
    var j;
    var cell;

    while (tbody.firstChild) {
      tbody.removeChild(tbody.firstChild);
    }

    for (i = 0; i < pipes.length; i += 1) {
      result = calculateHydraulics(flowLMin, pipes[i].diameter, lengthM, waterTemp, extraKpa, budgetKpa);
      values = [
        pipes[i].name + " mm",
        formatNumber(pipes[i].diameter, 1) + " mm",
        formatNumber(result.velocity, 2) + " m/s",
        formatNumber(result.gradientPaM, 0) + " Pa/m",
        formatNumber(result.totalLossKpa, 1) + " kPa",
        result.maxLengthM > 0 ? formatNumber(result.maxLengthM, 0) + " m" : "brak rezerwy"
      ];
      row = document.createElement("tr");
      for (j = 0; j < values.length; j += 1) {
        cell = document.createElement("td");
        cell.setAttribute("data-label", labels[j]);
        cell.textContent = values[j];
        row.appendChild(cell);
      }
      tbody.appendChild(row);
    }
  }

  function svgText(x, y, value, options) {
    var anchor = options.anchor || "middle";
    var size = options.size || 12;
    var fill = options.fill || "#58717d";
    var weight = options.weight || 650;
    var rotate = options.rotate || 0;
    var transform = "";
    if (rotate !== 0) {
      transform = ' transform="rotate(' + rotate + " " + x + " " + y + ')"';
    }
    return '<text x="' + x + '" y="' + y + '" text-anchor="' + anchor + '" font-size="' + size + '" font-weight="' + weight + '" fill="' + fill + '"' + transform + ">" + value + "</text>";
  }

  function renderChart(flowLMin, selectedDiameter, lengthM, waterTemp, extraKpa, budgetKpa, selectedResult) {
    var svg = byId("rk-loop-chart");
    var width = 920;
    var height = 430;
    var left = 78;
    var right = 25;
    var top = 24;
    var bottom = 62;
    var plotWidth = width - left - right;
    var plotHeight = height - top - bottom;
    var xMax = 160;
    var maxCandidate = selectedResult.maxLengthM;
    var curves = [
      {name: "16 × 2,0", diameter: 12, color: "#078fbe"},
      {name: "17 × 2,0", diameter: 13, color: "#17846d"},
      {name: "20 × 2,0", diameter: 16, color: "#ff6f3d"}
    ];
    var i;
    var x;
    var result;
    var maxLoss = budgetKpa;
    var yMax;
    var parts = [];
    var gridCountY = 5;
    var gridCountX = 8;
    var gx;
    var gy;
    var tickValue;
    var path;
    var step;
    var px;
    var py;
    var selectedX;
    var selectedY;
    var budgetY;

    if (lengthM * 1.25 > xMax) {
      xMax = Math.ceil(lengthM * 1.25 / 20) * 20;
    }
    if (maxCandidate > xMax) {
      if (maxCandidate < 220) {
        xMax = Math.ceil(maxCandidate / 20) * 20;
      }
    }
    xMax = clamp(xMax, 120, 220);

    for (i = 0; i < curves.length; i += 1) {
      result = calculateHydraulics(flowLMin, curves[i].diameter, xMax, waterTemp, extraKpa, budgetKpa);
      if (result.totalLossKpa > maxLoss) {
        maxLoss = result.totalLossKpa;
      }
    }
    if (selectedResult.totalLossKpa > maxLoss) {
      maxLoss = selectedResult.totalLossKpa;
    }
    yMax = Math.ceil(maxLoss * 1.14 / 10) * 10;
    if (yMax < 20) {
      yMax = 20;
    }

    parts.push('<rect x="0" y="0" width="' + width + '" height="' + height + '" rx="12" fill="#ffffff"></rect>');

    for (i = 0; i <= gridCountY; i += 1) {
      gy = top + plotHeight - i * plotHeight / gridCountY;
      tickValue = i * yMax / gridCountY;
      parts.push('<line x1="' + left + '" y1="' + gy + '" x2="' + (width - right) + '" y2="' + gy + '" stroke="#dce8ed" stroke-width="1"></line>');
      parts.push(svgText(left - 12, gy + 4, formatNumber(tickValue, 0), {anchor: "end", size: 11}));
    }

    for (i = 0; i <= gridCountX; i += 1) {
      gx = left + i * plotWidth / gridCountX;
      tickValue = i * xMax / gridCountX;
      parts.push('<line x1="' + gx + '" y1="' + top + '" x2="' + gx + '" y2="' + (height - bottom) + '" stroke="#e5eef2" stroke-width="1"></line>');
      parts.push(svgText(gx, height - bottom + 23, formatNumber(tickValue, 0), {size: 11}));
    }

    parts.push('<line x1="' + left + '" y1="' + (height - bottom) + '" x2="' + (width - right) + '" y2="' + (height - bottom) + '" stroke="#78909b" stroke-width="1.4"></line>');
    parts.push('<line x1="' + left + '" y1="' + top + '" x2="' + left + '" y2="' + (height - bottom) + '" stroke="#78909b" stroke-width="1.4"></line>');

    budgetY = top + plotHeight - budgetKpa / yMax * plotHeight;
    if (budgetY >= top) {
      if (budgetY <= height - bottom) {
        parts.push('<line x1="' + left + '" y1="' + budgetY + '" x2="' + (width - right) + '" y2="' + budgetY + '" stroke="#d94b3d" stroke-width="2.2" stroke-dasharray="8 7"></line>');
        parts.push(svgText(width - right - 4, budgetY - 8, "budżet " + formatNumber(budgetKpa, 1) + " kPa", {anchor: "end", size: 11, fill: "#c13d31", weight: 800}));
      }
    }

    for (i = 0; i < curves.length; i += 1) {
      path = "";
      for (step = 0; step <= 48; step += 1) {
        x = step * xMax / 48;
        result = calculateHydraulics(flowLMin, curves[i].diameter, x, waterTemp, extraKpa, budgetKpa);
        px = left + x / xMax * plotWidth;
        py = top + plotHeight - result.totalLossKpa / yMax * plotHeight;
        if (step === 0) {
          path += "M " + px.toFixed(2) + " " + py.toFixed(2);
        } else {
          path += " L " + px.toFixed(2) + " " + py.toFixed(2);
        }
      }
      parts.push('<path d="' + path + '" fill="none" stroke="' + curves[i].color + '" stroke-width="3.3" stroke-linecap="round"></path>');
    }

    selectedX = left + clamp(lengthM, 0, xMax) / xMax * plotWidth;
    selectedY = top + plotHeight - clamp(selectedResult.totalLossKpa, 0, yMax) / yMax * plotHeight;
    parts.push('<line x1="' + selectedX + '" y1="' + top + '" x2="' + selectedX + '" y2="' + (height - bottom) + '" stroke="#695ac9" stroke-width="1.8" stroke-dasharray="5 6"></line>');
    parts.push('<circle cx="' + selectedX + '" cy="' + selectedY + '" r="7" fill="#695ac9" stroke="#ffffff" stroke-width="3"></circle>');
    parts.push(svgText(selectedX, Math.max(top + 14, selectedY - 13), formatNumber(lengthM, 0) + " m • " + formatNumber(selectedResult.totalLossKpa, 1) + " kPa", {size: 11, fill: "#5447aa", weight: 850}));

    parts.push(svgText(left + plotWidth / 2, height - 13, "całkowita długość pętli [m]", {size: 12, fill: "#3e5966", weight: 800}));
    parts.push(svgText(20, top + plotHeight / 2, "całkowity spadek ciśnienia [kPa]", {size: 12, fill: "#3e5966", weight: 800, rotate: -90}));

    svg.innerHTML = parts.join("");
    svg.setAttribute("aria-label", "Wykres spadku ciśnienia. Wybrana średnica wewnętrzna " + formatNumber(selectedDiameter, 1) + " mm, długość " + formatNumber(lengthM, 0) + " m, wynik " + formatNumber(selectedResult.totalLossKpa, 1) + " kPa.");
  }

  function calculate() {
    var flowLMin = getFlow();
    var diameterMm = getSelectedDiameter();
    var lengthM = clamp(readNumber("rk-loop-length", 90), 5, 220);
    var waterTemp = clamp(readNumber("rk-loop-water-temp", 30), 10, 60);
    var extraKpa = clamp(readNumber("rk-loop-extra", 3), 0, 50);
    var budgetKpa = clamp(readNumber("rk-loop-budget", 20), 1, 100);
    var result = calculateHydraulics(flowLMin, diameterMm, lengthM, waterTemp, extraKpa, budgetKpa);
    var reservePrefix = result.remainingKpa >= 0 ? "+" : "";

    setText("rk-loop-result-flow", formatNumber(flowLMin, 2) + " l/min");
    setText("rk-loop-result-flow-hour", formatNumber(flowLMin * 60, 0) + " l/h");
    setText("rk-loop-result-velocity", formatNumber(result.velocity, 2) + " m/s");
    setText("rk-loop-result-gradient", formatNumber(result.gradientPaM, 0) + " Pa/m");
    setText("rk-loop-result-pipe-loss", formatNumber(result.pipeLossKpa, 1) + " kPa");
    setText("rk-loop-result-total-loss", formatNumber(result.totalLossKpa, 1) + " kPa");
    setText("rk-loop-result-reserve", reservePrefix + formatNumber(result.remainingKpa, 1) + " kPa");
    setText("rk-loop-result-max-length", result.maxLengthM > 0 ? formatNumber(result.maxLengthM, 0) + " m" : "brak");
    setText("rk-loop-result-reynolds", formatNumber(result.reynolds, 0));
    setText("rk-loop-result-regime", regimeLabel(result.reynolds));

    setStatus(result, budgetKpa, lengthM);
    renderDiagnostics(result, budgetKpa, extraKpa, diameterMm, flowLMin);
    renderComparison(flowLMin, lengthM, waterTemp, extraKpa, budgetKpa);
    renderChart(flowLMin, diameterMm, lengthM, waterTemp, extraKpa, budgetKpa, result);
  }

  function resetExample() {
    byId("rk-loop-mode").value = "power";
    byId("rk-loop-power").value = "600";
    byId("rk-loop-delta").value = "5";
    byId("rk-loop-known-flow").value = "1.72";
    byId("rk-loop-pipe").value = "12";
    byId("rk-loop-custom-id").value = "12";
    byId("rk-loop-water-temp").value = "30";
    byId("rk-loop-length").value = "90";
    byId("rk-loop-extra").value = "3";
    byId("rk-loop-budget").value = "20";
    updateFieldStates();
    calculate();
  }

  var interactiveInputs = root.querySelectorAll("#rk-loop-tool input, #rk-loop-tool select");
  var i;
  for (i = 0; i < interactiveInputs.length; i += 1) {
    interactiveInputs[i].addEventListener("input", function () {
      updateFieldStates();
      calculate();
    });
    interactiveInputs[i].addEventListener("change", function () {
      updateFieldStates();
      calculate();
    });
  }

  byId("rk-loop-calculate").addEventListener("click", calculate);
  byId("rk-loop-reset").addEventListener("click", resetExample);

  var faqItems = root.querySelectorAll(".rk-loop-faq details");
  for (i = 0; i < faqItems.length; i += 1) {
    faqItems[i].addEventListener("toggle", function () {
      var current = this;
      var j;
      if (!current.open) {
        return;
      }
      for (j = 0; j < faqItems.length; j += 1) {
        if (faqItems[j] !== current) {
          faqItems[j].open = false;
        }
      }
    });
  }

  updateFieldStates();
  calculate();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">Maksymalna długość pętli ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
		<item>
		<title>Ile metrów podłogówki na jednej pętli?</title>
		<link>https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 01 Feb 2025 22:18:09 +0000</pubDate>
				<category><![CDATA[Budowa i remonty]]></category>
		<category><![CDATA[Domowe systemy grzewcze]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Planowanie instalacji grzewczych]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Rury do ogrzewania]]></category>
		<category><![CDATA[budowa domu]]></category>
		<category><![CDATA[długość pętli]]></category>
		<category><![CDATA[hydraulika]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[porady ekspertów]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<category><![CDATA[remonty]]></category>
		<category><![CDATA[systemy grzewcze]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2053</guid>

					<description><![CDATA[<p>Planujesz montaż ogrzewania podłogowego i zastanawiasz się, ile metrów podłogówki na jednej pętli to optymalna długość? W naszym artykule znajdziesz praktyczne porady, jak obliczyć długość pętli, jakie czynniki wpływają na jej maksymalną długość oraz jak uniknąć błędów przy projektowaniu. Dowiesz się również, dlaczego profesjonalny projekt jest kluczowy dla efektywności systemu. Sprawdź, jak zaplanować ogrzewanie podłogowe, aby cieszyć się komfortem i oszczędnościami przez lata!</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/">Ile metrów podłogówki na jednej pętli?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-loop-guide {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e8fbff;
    --rk-orange: #ff6a3d;
    --rk-orange-soft: #fff1eb;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #f1b93e;
    --rk-yellow-soft: #fff8df;
    --rk-red: #d94b3d;
    --rk-red-soft: #fff0ee;
    --rk-purple: #695ac9;
    --rk-purple-soft: #f1efff;
    --rk-ink: #1f2c37;
    --rk-text: #475967;
    --rk-muted: #6b7e8a;
    --rk-line: #d5e4eb;
    --rk-soft: #f4f9fb;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 72px;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.75;
  }

  #rk-loop-guide,
  #rk-loop-guide * { box-sizing: border-box; }
  #rk-loop-guide img,
  #rk-loop-guide svg,
  #rk-loop-guide canvas { max-width: 100%; }
  #rk-loop-guide button,
  #rk-loop-guide input,
  #rk-loop-guide select,
  #rk-loop-guide label,
  #rk-loop-guide summary,
  #rk-loop-guide a { font: inherit; -webkit-tap-highlight-color: transparent; }
  #rk-loop-guide button,
  #rk-loop-guide input,
  #rk-loop-guide select { max-width: 100%; }
  #rk-loop-guide a {
    color: var(--rk-blue);
    font-weight: 780;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }
  #rk-loop-guide a:hover,
  #rk-loop-guide a:focus-visible { color: var(--rk-red); }
  #rk-loop-guide p,
  #rk-loop-guide ul,
  #rk-loop-guide ol { margin-top: 0; margin-bottom: 1.08em; }
  #rk-loop-guide h2,
  #rk-loop-guide h3,
  #rk-loop-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 920;
    letter-spacing: -.035em;
    line-height: 1.15;
  }
  #rk-loop-guide h2 { margin-bottom: 18px; font-size: clamp(1.72rem, 4vw, 2.68rem); }
  #rk-loop-guide h3 { margin-bottom: 11px; font-size: clamp(1.12rem, 2.35vw, 1.46rem); }
  #rk-loop-guide h4 { margin-bottom: 8px; font-size: 1.02rem; }
  #rk-loop-guide strong { color: var(--rk-dark); }

  #rk-loop-guide .rk-loop-progress {
    position: fixed;
    z-index: 9999;
    top: 0;
    left: 0;
    width: 0;
    height: 4px;
    background: linear-gradient(90deg, var(--rk-cyan), var(--rk-orange));
    box-shadow: 0 0 12px rgba(37, 199, 216, .5);
    pointer-events: none;
  }

  #rk-loop-guide .rk-loop-shell {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 26px;
    background: var(--rk-white);
    box-shadow: 0 24px 70px rgba(16, 37, 54, .11);
  }

  #rk-loop-guide .rk-loop-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(38px, 7vw, 78px) clamp(25px, 6vw, 76px) 42px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 4%, rgba(37, 199, 216, .32), transparent 28%),
      radial-gradient(circle at 6% 95%, rgba(255, 106, 61, .22), transparent 27%),
      linear-gradient(135deg, #0d2332 0%, #143e53 58%, #0b6680 100%);
  }
  #rk-loop-guide .rk-loop-hero::after {
    position: absolute;
    right: -70px;
    bottom: -115px;
    width: 340px;
    height: 340px;
    border: 44px solid rgba(255, 255, 255, .055);
    border-radius: 50%;
    content: "";
  }
  #rk-loop-guide .rk-loop-kicker {
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 15px;
    color: #78efff;
    font-size: .69rem;
    font-weight: 950;
    letter-spacing: .09em;
    line-height: 1.2;
    text-transform: uppercase;
  }
  #rk-loop-guide .rk-loop-kicker::before {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 6px rgba(255, 106, 61, .14);
    content: "";
  }
  #rk-loop-guide .rk-loop-hero-title {
    position: relative;
    z-index: 1;
    max-width: 900px;
    margin: 0 0 19px;
    color: var(--rk-white);
    font-size: clamp(2.05rem, 5.4vw, 4.35rem);
    font-weight: 950;
    letter-spacing: -.055em;
    line-height: 1.01;
  }
  #rk-loop-guide .rk-loop-hero-title span { color: #78efff; }
  #rk-loop-guide .rk-loop-lead {
    position: relative;
    z-index: 1;
    max-width: 860px;
    margin-bottom: 25px;
    color: #d8e9ef;
    font-size: clamp(1.02rem, 2vw, 1.24rem);
    line-height: 1.68;
  }
  #rk-loop-guide .rk-loop-hero-tags { position: relative; z-index: 1; display: flex; flex-wrap: wrap; gap: 9px; margin-bottom: 28px; }
  #rk-loop-guide .rk-loop-hero-tag {
    display: inline-flex;
    align-items: center;
    min-height: 38px;
    padding: 8px 13px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 999px;
    color: #eefcff;
    background: rgba(255, 255, 255, .075);
    font-size: .72rem;
    font-weight: 850;
    line-height: 1.3;
  }
  #rk-loop-guide .rk-loop-byline { position: relative; z-index: 1; display: flex; flex-wrap: wrap; gap: 8px 18px; color: #bad3dc; font-size: .72rem; font-weight: 720; }
  #rk-loop-guide .rk-loop-byline strong { color: var(--rk-white); }
  #rk-loop-guide .rk-loop-hero-metrics {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-top: 34px;
  }
  #rk-loop-guide .rk-loop-hero-metric {
    padding: 17px 18px;
    border: 1px solid rgba(255, 255, 255, .14);
    border-radius: 16px;
    background: rgba(5, 24, 36, .28);
    backdrop-filter: blur(6px);
  }
  #rk-loop-guide .rk-loop-hero-metric b { display: block; margin-bottom: 4px; color: #7af0ff; font-size: 1.04rem; font-weight: 950; }
  #rk-loop-guide .rk-loop-hero-metric span { display: block; color: #d5e7ec; font-size: .7rem; line-height: 1.45; }

  #rk-loop-guide .rk-loop-nav {
    position: sticky;
    z-index: 20;
    top: 0;
    display: flex;
    flex-wrap: wrap;
    justify-content: center;
    gap: 7px;
    padding: 13px clamp(14px, 3vw, 28px);
    border-bottom: 1px solid var(--rk-line);
    background: rgba(255, 255, 255, .96);
    box-shadow: 0 8px 24px rgba(16, 37, 54, .07);
    backdrop-filter: blur(10px);
  }
  #rk-loop-guide .rk-loop-nav a {
    padding: 7px 11px;
    border-radius: 999px;
    color: var(--rk-navy);
    background: var(--rk-soft);
    font-size: .65rem;
    font-weight: 900;
    line-height: 1.2;
    text-decoration: none;
  }
  #rk-loop-guide .rk-loop-nav a:hover,
  #rk-loop-guide .rk-loop-nav a:focus-visible { color: var(--rk-white); background: var(--rk-blue); }

  #rk-loop-guide .rk-loop-content { padding: clamp(26px, 5.5vw, 64px); }
  #rk-loop-guide .rk-loop-section { margin-bottom: clamp(48px, 8vw, 86px); scroll-margin-top: 104px; }
  #rk-loop-guide .rk-loop-section:last-child { margin-bottom: 0; }
  #rk-loop-guide .rk-loop-section-head { max-width: 870px; margin-bottom: 24px; }
  #rk-loop-guide .rk-loop-section-head > p:last-child { margin-bottom: 0; color: var(--rk-text); font-size: 1.02rem; }
  #rk-loop-guide .rk-loop-eyebrow {
    display: block;
    margin-bottom: 9px;
    color: var(--rk-blue);
    font-size: .67rem;
    font-weight: 950;
    letter-spacing: .08em;
    text-transform: uppercase;
  }
  #rk-loop-guide .rk-loop-grid-2,
  #rk-loop-guide .rk-loop-grid-3,
  #rk-loop-guide .rk-loop-grid-4 { display: grid; gap: 18px; }
  #rk-loop-guide .rk-loop-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-loop-guide .rk-loop-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-loop-guide .rk-loop-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-loop-guide .rk-loop-card {
    padding: clamp(21px, 3.5vw, 31px);
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-white);
    box-shadow: 0 10px 28px rgba(16, 37, 54, .065);
  }
  #rk-loop-guide .rk-loop-card p:last-child,
  #rk-loop-guide .rk-loop-card ul:last-child { margin-bottom: 0; }
  #rk-loop-guide .rk-loop-card-accent { border-top: 5px solid var(--rk-cyan); }
  #rk-loop-guide .rk-loop-card-orange { border-top: 5px solid var(--rk-orange); }
  #rk-loop-guide .rk-loop-card-green { border-top: 5px solid var(--rk-green); }
  #rk-loop-guide .rk-loop-card-purple { border-top: 5px solid var(--rk-purple); }
  #rk-loop-guide .rk-loop-card-number {
    display: inline-grid;
    place-items: center;
    width: 40px;
    height: 40px;
    margin-bottom: 15px;
    border-radius: 12px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: .9rem;
    font-weight: 950;
  }
  #rk-loop-guide .rk-loop-answer {
    position: relative;
    overflow: hidden;
    padding: clamp(27px, 5vw, 47px);
    border: 1px solid #a9e5ed;
    border-radius: 22px;
    background: linear-gradient(135deg, var(--rk-cyan-soft), #ffffff 70%);
  }
  #rk-loop-guide .rk-loop-answer::after {
    position: absolute;
    right: -32px;
    bottom: -63px;
    width: 180px;
    height: 180px;
    border: 28px solid rgba(7, 143, 190, .07);
    border-radius: 50%;
    content: "";
  }
  #rk-loop-guide .rk-loop-answer p { position: relative; z-index: 1; font-size: 1.05rem; }
  #rk-loop-guide .rk-loop-answer p:last-child { margin-bottom: 0; }
  #rk-loop-guide .rk-loop-answer strong { color: #075d78; }

  #rk-loop-guide .rk-loop-note {
    padding: 21px 23px;
    border-left: 5px solid var(--rk-blue);
    border-radius: 0 15px 15px 0;
    background: var(--rk-cyan-soft);
    color: #254858;
  }
  #rk-loop-guide .rk-loop-note p:last-child { margin-bottom: 0; }
  #rk-loop-guide .rk-loop-note-warn { border-left-color: var(--rk-orange); background: var(--rk-orange-soft); }
  #rk-loop-guide .rk-loop-note-good { border-left-color: var(--rk-green); background: var(--rk-green-soft); }
  #rk-loop-guide .rk-loop-note-purple { border-left-color: var(--rk-purple); background: var(--rk-purple-soft); }

  #rk-loop-guide .rk-loop-formula {
    overflow: hidden;
    margin: 19px 0;
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    color: var(--rk-dark);
    background: #f8fcfd;
    text-align: center;
  }
  #rk-loop-guide .rk-loop-formula code {
    display: block;
    color: #075d78;
    font-family: "SFMono-Regular", Consolas, "Liberation Mono", monospace;
    font-size: clamp(.9rem, 2.2vw, 1.17rem);
    font-weight: 900;
    white-space: normal;
  }
  #rk-loop-guide .rk-loop-formula small { display: block; margin-top: 9px; color: var(--rk-muted); font-size: .69rem; line-height: 1.5; }

  #rk-loop-guide .rk-loop-length-map {
    display: grid;
    grid-template-columns: 1fr auto 1.4fr auto 1fr;
    align-items: center;
    gap: 11px;
    margin: 23px 0;
    padding: 22px;
    border-radius: 18px;
    color: var(--rk-white);
    background: var(--rk-dark);
  }
  #rk-loop-guide .rk-loop-length-part { padding: 18px 12px; border: 1px solid rgba(255,255,255,.15); border-radius: 13px; background: rgba(255,255,255,.07); text-align: center; }
  #rk-loop-guide .rk-loop-length-part b { display: block; color: #7af0ff; font-size: 1.12rem; }
  #rk-loop-guide .rk-loop-length-part span { display: block; margin-top: 3px; color: #d4e6ec; font-size: .66rem; line-height: 1.4; }
  #rk-loop-guide .rk-loop-length-plus { color: var(--rk-orange); font-size: 1.45rem; font-weight: 950; }

  #rk-loop-guide .rk-loop-tool {
    overflow: hidden;
    border: 1px solid #b7dfe8;
    border-radius: 24px;
    background: #f8fcfd;
    box-shadow: 0 22px 58px rgba(16, 37, 54, .1);
  }
  #rk-loop-guide .rk-loop-tool-head {
    display: flex;
    align-items: flex-start;
    justify-content: space-between;
    gap: 20px;
    padding: clamp(25px, 4.5vw, 42px);
    color: var(--rk-white);
    background: linear-gradient(135deg, #0e2a3b, #076a88);
  }
  #rk-loop-guide .rk-loop-tool-head h3 { margin-bottom: 8px; color: var(--rk-white); font-size: clamp(1.35rem, 3vw, 2rem); }
  #rk-loop-guide .rk-loop-tool-head p { max-width: 720px; margin-bottom: 0; color: #d4e7ed; }
  #rk-loop-guide .rk-loop-tool-badge { flex: 0 0 auto; padding: 8px 12px; border: 1px solid rgba(255,255,255,.23); border-radius: 999px; color: #79efff; font-size: .65rem; font-weight: 950; text-transform: uppercase; }
  #rk-loop-guide .rk-loop-tool-body { padding: clamp(20px, 4vw, 38px); }
  #rk-loop-guide .rk-loop-form-group { margin-bottom: 25px; }
  #rk-loop-guide .rk-loop-form-group:last-child { margin-bottom: 0; }
  #rk-loop-guide .rk-loop-form-group-title { display: flex; align-items: center; gap: 9px; margin-bottom: 14px; color: var(--rk-dark); font-size: .8rem; font-weight: 950; text-transform: uppercase; }
  #rk-loop-guide .rk-loop-form-group-title span { display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 9px; color: var(--rk-white); background: var(--rk-blue); font-size: .68rem; }
  #rk-loop-guide .rk-loop-fields { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 14px; }
  #rk-loop-guide .rk-loop-field { min-width: 0; }
  #rk-loop-guide .rk-loop-field label { display: block; margin-bottom: 7px; color: var(--rk-dark); font-size: .72rem; font-weight: 850; line-height: 1.35; }
  #rk-loop-guide .rk-loop-field small { display: block; margin-top: 6px; color: var(--rk-muted); font-size: .61rem; line-height: 1.45; }
  #rk-loop-guide .rk-loop-input-wrap { position: relative; }
  #rk-loop-guide .rk-loop-input-wrap input,
  #rk-loop-guide .rk-loop-input-wrap select {
    width: 100%;
    min-height: 50px;
    padding: 10px 48px 10px 13px;
    border: 1px solid #bfd4dc;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-white);
    outline: none;
    font-weight: 800;
    line-height: 1.25;
  }
  #rk-loop-guide .rk-loop-input-wrap select { padding-right: 13px; }
  #rk-loop-guide .rk-loop-input-wrap input:focus,
  #rk-loop-guide .rk-loop-input-wrap select:focus { border-color: var(--rk-blue); box-shadow: 0 0 0 4px rgba(7,143,190,.12); }
  #rk-loop-guide .rk-loop-unit { position: absolute; top: 50%; right: 13px; transform: translateY(-50%); color: var(--rk-muted); font-size: .67rem; font-weight: 850; pointer-events: none; }
  #rk-loop-guide .rk-loop-actions { display: flex; flex-wrap: wrap; gap: 10px; margin-top: 23px; }
  #rk-loop-guide .rk-loop-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 50px;
    padding: 12px 20px;
    border: 0;
    border-radius: 12px;
    color: var(--rk-white);
    background: var(--rk-blue);
    box-shadow: 0 10px 22px rgba(7, 143, 190, .2);
    cursor: pointer;
    font-weight: 920;
  }
  #rk-loop-guide .rk-loop-button:hover,
  #rk-loop-guide .rk-loop-button:focus-visible { background: #066c91; transform: translateY(-1px); }
  #rk-loop-guide .rk-loop-button-secondary { color: var(--rk-navy); background: #e7f3f7; box-shadow: none; }
  #rk-loop-guide .rk-loop-button-secondary:hover,
  #rk-loop-guide .rk-loop-button-secondary:focus-visible { color: var(--rk-white); background: var(--rk-navy); }

  #rk-loop-guide .rk-loop-results { margin-top: 28px; padding-top: 28px; border-top: 1px solid var(--rk-line); }
  #rk-loop-guide .rk-loop-status {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 15px;
    align-items: center;
    margin-bottom: 18px;
    padding: 18px 20px;
    border: 1px solid #9ddaca;
    border-radius: 16px;
    background: var(--rk-green-soft);
  }
  #rk-loop-guide .rk-loop-status-icon { display: grid; place-items: center; width: 45px; height: 45px; border-radius: 14px; color: var(--rk-white); background: var(--rk-green); font-weight: 950; }
  #rk-loop-guide .rk-loop-status b { display: block; margin-bottom: 2px; color: #0f604e; font-size: 1rem; }
  #rk-loop-guide .rk-loop-status span { display: block; color: #376f63; font-size: .72rem; line-height: 1.5; }
  #rk-loop-guide .rk-loop-status.is-warning { border-color: #efcf70; background: var(--rk-yellow-soft); }
  #rk-loop-guide .rk-loop-status.is-warning .rk-loop-status-icon { background: var(--rk-yellow); }
  #rk-loop-guide .rk-loop-status.is-warning b { color: #78580d; }
  #rk-loop-guide .rk-loop-status.is-warning span { color: #735f2d; }
  #rk-loop-guide .rk-loop-status.is-danger { border-color: #e5aaa2; background: var(--rk-red-soft); }
  #rk-loop-guide .rk-loop-status.is-danger .rk-loop-status-icon { background: var(--rk-red); }
  #rk-loop-guide .rk-loop-status.is-danger b { color: #8b2e25; }
  #rk-loop-guide .rk-loop-status.is-danger span { color: #7d4b46; }
  #rk-loop-guide .rk-loop-result-grid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 11px; }
  #rk-loop-guide .rk-loop-result-card { min-width: 0; padding: 17px 14px; border: 1px solid var(--rk-line); border-radius: 14px; background: var(--rk-white); }
  #rk-loop-guide .rk-loop-result-card span { display: block; margin-bottom: 5px; color: var(--rk-muted); font-size: .61rem; font-weight: 850; line-height: 1.35; text-transform: uppercase; }
  #rk-loop-guide .rk-loop-result-card b { display: block; overflow-wrap: anywhere; color: var(--rk-dark); font-size: clamp(1.02rem, 2.5vw, 1.45rem); font-weight: 950; line-height: 1.2; }
  #rk-loop-guide .rk-loop-result-card small { display: block; margin-top: 5px; color: var(--rk-muted); font-size: .59rem; line-height: 1.4; }
  #rk-loop-guide .rk-loop-result-note { margin-top: 15px; padding: 15px 17px; border-radius: 12px; color: #365563; background: var(--rk-cyan-soft); font-size: .71rem; line-height: 1.55; }

  #rk-loop-guide .rk-loop-data-table-wrap { margin-top: 21px; }
  #rk-loop-guide .rk-loop-table-title { margin-bottom: 10px; color: var(--rk-dark); font-size: .79rem; font-weight: 920; }
  #rk-loop-guide .rk-loop-data-table { width: 100%; border-collapse: separate; border-spacing: 0; overflow: hidden; border: 1px solid var(--rk-line); border-radius: 14px; background: var(--rk-white); font-size: .72rem; }
  #rk-loop-guide .rk-loop-data-table th,
  #rk-loop-guide .rk-loop-data-table td { padding: 12px 11px; border-bottom: 1px solid var(--rk-line); text-align: left; vertical-align: top; }
  #rk-loop-guide .rk-loop-data-table th { color: var(--rk-white); background: var(--rk-navy); font-size: .62rem; font-weight: 900; line-height: 1.35; text-transform: uppercase; }
  #rk-loop-guide .rk-loop-data-table tr:last-child td { border-bottom: 0; }
  #rk-loop-guide .rk-loop-data-table tbody tr:nth-child(even) td { background: #f8fbfc; }
  #rk-loop-guide .rk-loop-data-table tbody tr.is-best td { background: var(--rk-green-soft); }
  #rk-loop-guide .rk-loop-data-table tbody tr.is-fail td { color: #82524d; background: var(--rk-red-soft); }
  #rk-loop-guide .rk-loop-chip { display: inline-flex; padding: 4px 8px; border-radius: 999px; color: #11604e; background: #d9f2e9; font-size: .58rem; font-weight: 950; white-space: nowrap; }
  #rk-loop-guide .rk-loop-chip-warn { color: #75550d; background: #ffefbc; }
  #rk-loop-guide .rk-loop-chip-bad { color: #8b2e25; background: #f7d8d4; }

  #rk-loop-guide .rk-loop-visual-grid { display: block; margin-top: 22px; }
  #rk-loop-guide .rk-loop-chart-card,
  #rk-loop-guide .rk-loop-scheme-card { padding: clamp(19px, 3vw, 27px); border: 1px solid var(--rk-line); border-radius: 18px; background: var(--rk-white); }
  #rk-loop-guide .rk-loop-chart-head { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 8px 18px; margin-bottom: 13px; }
  #rk-loop-guide .rk-loop-chart-head h3 { margin-bottom: 0; font-size: 1.07rem; }
  #rk-loop-guide .rk-loop-legend { display: flex; flex-wrap: wrap; gap: 7px 12px; color: var(--rk-muted); font-size: .59rem; font-weight: 800; }
  #rk-loop-guide .rk-loop-legend span { display: inline-flex; align-items: center; gap: 5px; }
  #rk-loop-guide .rk-loop-legend i { display: inline-block; width: 15px; height: 4px; border-radius: 4px; background: var(--rk-blue); }
  #rk-loop-guide .rk-loop-legend .is-green { background: var(--rk-green); }
  #rk-loop-guide .rk-loop-legend .is-orange { background: var(--rk-orange); }
  #rk-loop-guide .rk-loop-legend .is-budget { height: 2px; background: var(--rk-red); }
  #rk-loop-guide .rk-loop-canvas-wrap { position: relative; width: 100%; min-height: 340px; }
  #rk-loop-guide #rk-loop-chart { display: block; width: 100%; height: 340px; }
  #rk-loop-guide .rk-loop-chart-caption { margin-top: 10px; margin-bottom: 0; color: var(--rk-muted); font-size: .64rem; line-height: 1.5; }
  #rk-loop-guide .rk-loop-scheme { display: grid; gap: 12px; margin-top: 18px; }
  #rk-loop-guide .rk-loop-scheme-row { display: grid; grid-template-columns: 88px 1fr; gap: 10px; align-items: center; }
  #rk-loop-guide .rk-loop-manifold { display: grid; place-items: center; min-height: 156px; border-radius: 14px; color: var(--rk-white); background: var(--rk-navy); font-size: .66rem; font-weight: 900; text-align: center; }
  #rk-loop-guide .rk-loop-paths { display: grid; gap: 7px; }
  #rk-loop-guide .rk-loop-path { position: relative; height: 18px; border: 3px solid var(--rk-cyan); border-left: 0; border-radius: 0 12px 12px 0; opacity: .95; }
  #rk-loop-guide .rk-loop-path::before { position: absolute; top: 50%; left: -19px; width: 19px; height: 3px; background: var(--rk-orange); content: ""; transform: translateY(-50%); }
  #rk-loop-guide .rk-loop-scheme-stats { display: grid; grid-template-columns: repeat(2, 1fr); gap: 8px; margin-top: 14px; }
  #rk-loop-guide .rk-loop-scheme-stat { padding: 11px; border-radius: 11px; background: var(--rk-soft); }
  #rk-loop-guide .rk-loop-scheme-stat span { display: block; color: var(--rk-muted); font-size: .58rem; text-transform: uppercase; }
  #rk-loop-guide .rk-loop-scheme-stat b { display: block; margin-top: 3px; color: var(--rk-dark); font-size: .85rem; }

  #rk-loop-guide .rk-loop-cta {
    position: relative;
    overflow: hidden;
    margin: clamp(46px, 7vw, 78px) 0;
    padding: clamp(30px, 5vw, 51px);
    border-radius: 23px;
    color: var(--rk-white);
    background: linear-gradient(135deg, #102b3d 0%, #075f79 100%);
    box-shadow: 0 20px 48px rgba(16, 37, 54, .18);
  }
  #rk-loop-guide .rk-loop-cta::after { position: absolute; right: -55px; bottom: -90px; width: 250px; height: 250px; border: 36px solid rgba(255,255,255,.055); border-radius: 50%; content: ""; }
  #rk-loop-guide .rk-loop-cta h2 { position: relative; z-index: 1; max-width: 820px; margin-bottom: 15px; color: var(--rk-white); }
  #rk-loop-guide .rk-loop-cta p { position: relative; z-index: 1; max-width: 850px; color: #d7e9ee; }
  #rk-loop-guide .rk-loop-cta-button {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 54px;
    padding: 13px 22px;
    border-radius: 12px;
    color: var(--rk-white);
    background: var(--rk-orange);
    box-shadow: 0 12px 25px rgba(255, 106, 61, .27);
    font-weight: 950;
    line-height: 1.25;
    text-align: center;
    text-decoration: none;
  }
  #rk-loop-guide .rk-loop-cta-button:hover,
  #rk-loop-guide .rk-loop-cta-button:focus-visible { color: var(--rk-white); background: #e95127; transform: translateY(-2px); }
  #rk-loop-guide .rk-loop-disclosure { position: relative; z-index: 1; display: block; max-width: 780px; margin-top: 12px; color: #a9c8d2; font-size: .58rem; line-height: 1.45; }

  #rk-loop-guide .rk-loop-list { padding-left: 1.22em; }
  #rk-loop-guide .rk-loop-list li { margin-bottom: .55em; padding-left: .2em; }
  #rk-loop-guide .rk-loop-checklist { counter-reset: rkloopstep; display: grid; gap: 13px; padding: 0; list-style: none; }
  #rk-loop-guide .rk-loop-checklist li { counter-increment: rkloopstep; display: grid; grid-template-columns: 45px 1fr; gap: 14px; align-items: start; padding: 18px; border: 1px solid var(--rk-line); border-radius: 15px; background: var(--rk-white); }
  #rk-loop-guide .rk-loop-checklist li::before { display: grid; place-items: center; width: 42px; height: 42px; border-radius: 13px; color: var(--rk-white); background: var(--rk-blue); content: counter(rkloopstep); font-weight: 950; }
  #rk-loop-guide .rk-loop-checklist b { display: block; margin-bottom: 3px; }
  #rk-loop-guide .rk-loop-checklist span { display: block; color: var(--rk-text); font-size: .85rem; line-height: 1.58; }

  #rk-loop-guide .rk-loop-faq { display: grid; gap: 10px; }
  #rk-loop-guide .rk-loop-faq details { overflow: hidden; border: 1px solid var(--rk-line); border-radius: 14px; background: var(--rk-white); }
  #rk-loop-guide .rk-loop-faq summary { position: relative; padding: 17px 52px 17px 18px; color: var(--rk-dark); cursor: pointer; font-weight: 880; line-height: 1.42; list-style: none; }
  #rk-loop-guide .rk-loop-faq summary::-webkit-details-marker { display: none; }
  #rk-loop-guide .rk-loop-faq summary::after { position: absolute; top: 50%; right: 17px; display: grid; place-items: center; width: 27px; height: 27px; border-radius: 9px; color: var(--rk-blue); background: var(--rk-cyan-soft); content: "+"; transform: translateY(-50%); font-size: 1rem; font-weight: 950; }
  #rk-loop-guide .rk-loop-faq details[open] summary::after { content: "−"; }
  #rk-loop-guide .rk-loop-faq details[open] summary { color: var(--rk-blue); background: #f7fbfc; }
  #rk-loop-guide .rk-loop-faq-answer { padding: 0 18px 18px; color: var(--rk-text); }
  #rk-loop-guide .rk-loop-faq-answer p:last-child { margin-bottom: 0; }

  #rk-loop-guide .rk-loop-sources { padding: clamp(23px, 4vw, 34px); border: 1px solid var(--rk-line); border-radius: 18px; background: var(--rk-soft); }
  #rk-loop-guide .rk-loop-source-list { display: grid; gap: 11px; margin: 0; padding: 0; list-style: none; }
  #rk-loop-guide .rk-loop-source-list li { padding: 13px 15px; border-radius: 12px; background: var(--rk-white); color: var(--rk-text); font-size: .77rem; line-height: 1.55; }
  #rk-loop-guide .rk-loop-source-list b { display: block; margin-bottom: 2px; }

  #rk-loop-guide .rk-loop-author { overflow: hidden; margin-top: clamp(50px, 8vw, 82px); border: 1px solid var(--rk-line); border-radius: 23px; background: var(--rk-white); box-shadow: 0 18px 48px rgba(16,37,54,.1); }
  #rk-loop-guide .rk-loop-author > input { position: absolute; opacity: 0; pointer-events: none; }
  #rk-loop-guide .rk-loop-author-head { display: flex; align-items: center; justify-content: space-between; gap: 19px; padding: 27px clamp(22px, 5vw, 46px); color: var(--rk-white); background: var(--rk-dark); }
  #rk-loop-guide .rk-loop-author-head h2 { margin-bottom: 7px; color: var(--rk-white); }
  #rk-loop-guide .rk-loop-author-head p { margin-bottom: 0; color: #d1e5ec; }
  #rk-loop-guide .rk-loop-author-mark { display: inline-flex; flex: 0 0 auto; padding: 9px 13px; border: 1px solid rgba(255,255,255,.18); border-radius: 999px; color: #7af0ff; font-size: .63rem; font-weight: 950; letter-spacing: .06em; white-space: nowrap; }
  #rk-loop-guide .rk-loop-author-layout { display: grid; grid-template-columns: 295px 1fr; }
  #rk-loop-guide .rk-loop-author-side { padding: 35px 27px; border-right: 1px solid var(--rk-line); background: #f8fbfc; text-align: center; }
  #rk-loop-guide .rk-loop-author-photo { overflow: hidden; width: 156px; height: 156px; margin: 0 auto 18px; border: 7px solid var(--rk-white); border-radius: 50%; box-shadow: 0 10px 28px rgba(16,37,54,.14); }
  #rk-loop-guide .rk-loop-author-photo img { width: 100%; height: 100%; object-fit: cover; }
  #rk-loop-guide .rk-loop-author-name { color: var(--rk-dark); font-size: 1.25rem; font-weight: 950; }
  #rk-loop-guide .rk-loop-author-role { margin-top: 7px; color: var(--rk-blue); font-size: .68rem; font-weight: 950; line-height: 1.45; text-transform: uppercase; }
  #rk-loop-guide .rk-loop-author-social-label { margin-top: 26px; color: var(--rk-muted); font-size: .64rem; font-weight: 900; letter-spacing: .05em; text-transform: uppercase; }
  #rk-loop-guide .rk-loop-author-social { display: flex; justify-content: center; gap: 9px; margin-top: 10px; }
  #rk-loop-guide .rk-loop-author-social a { display: grid; place-items: center; width: 42px; height: 42px; border: 1px solid var(--rk-line); border-radius: 12px; color: var(--rk-navy); background: var(--rk-white); transition: .2s ease; }
  #rk-loop-guide .rk-loop-author-social a:hover,
  #rk-loop-guide .rk-loop-author-social a:focus-visible { border-color: var(--rk-cyan); color: var(--rk-blue); transform: translateY(-2px); }
  #rk-loop-guide .rk-loop-author-social svg { width: 20px; height: 20px; fill: currentColor; }
  #rk-loop-guide .rk-loop-author-main { min-width: 0; padding: 38px clamp(25px, 5vw, 48px); }
  #rk-loop-guide .rk-loop-author-quote { position: relative; margin: 0 0 22px; padding: 30px 25px 25px 70px; border-radius: 16px; background: var(--rk-cyan-soft); }
  #rk-loop-guide .rk-loop-author-quote::before { position: absolute; top: 3px; left: 24px; color: var(--rk-cyan); content: "“"; font-size: 4.8rem; font-weight: 950; line-height: 1; }
  #rk-loop-guide .rk-loop-author-quote p { margin-bottom: 0; color: var(--rk-dark); font-size: .98rem; font-style: italic; font-weight: 800; }
  #rk-loop-guide .rk-loop-author-tabs { display: grid; grid-template-columns: repeat(3, 1fr); border: 1px solid var(--rk-line); border-radius: 14px 14px 0 0; background: var(--rk-soft); }
  #rk-loop-guide .rk-loop-author-tab { padding: 13px 8px; border-right: 1px solid var(--rk-line); color: var(--rk-muted); cursor: pointer; font-size: .68rem; font-weight: 950; text-align: center; text-transform: uppercase; }
  #rk-loop-guide .rk-loop-author-tab:last-child { border-right: 0; }
  #rk-loop-guide .rk-loop-author-panel { display: none; padding: 23px; border: 1px solid var(--rk-line); border-top: 0; border-radius: 0 0 14px 14px; color: var(--rk-text); }
  #rk-loop-guide .rk-loop-author-panel p:last-child { margin-bottom: 0; }
  #rk-loop-author-about:checked ~ .rk-loop-author-layout .rk-loop-author-panel-about,
  #rk-loop-author-exp:checked ~ .rk-loop-author-layout .rk-loop-author-panel-exp,
  #rk-loop-author-sites:checked ~ .rk-loop-author-layout .rk-loop-author-panel-sites { display: block; }
  #rk-loop-author-about:checked ~ .rk-loop-author-layout label[for="rk-loop-author-about"],
  #rk-loop-author-exp:checked ~ .rk-loop-author-layout label[for="rk-loop-author-exp"],
  #rk-loop-author-sites:checked ~ .rk-loop-author-layout label[for="rk-loop-author-sites"] { color: var(--rk-blue); background: var(--rk-white); box-shadow: inset 0 -4px 0 var(--rk-blue); }
  #rk-loop-guide .rk-loop-site-links { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 12px; }
  #rk-loop-guide .rk-loop-site-links a { padding: 7px 10px; border-radius: 9px; background: var(--rk-soft); font-size: .7rem; text-decoration: none; }
  #rk-loop-guide .rk-loop-final-cta { margin-bottom: 0; }

  @media (max-width: 900px) {
    #rk-loop-guide .rk-loop-grid-3,
    #rk-loop-guide .rk-loop-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-loop-guide .rk-loop-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-loop-guide .rk-loop-result-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-loop-guide .rk-loop-visual-grid { grid-template-columns: 1fr; }
    #rk-loop-guide .rk-loop-author-layout { grid-template-columns: 1fr; }
    #rk-loop-guide .rk-loop-author-side { border-right: 0; border-bottom: 1px solid var(--rk-line); }
  }

  @media (max-width: 700px) {
    #rk-loop-guide { margin-top: 18px; font-size: 16px; }
    #rk-loop-guide .rk-loop-shell { border-right: 0; border-left: 0; border-radius: 0; }
    #rk-loop-guide .rk-loop-hero-metrics,
    #rk-loop-guide .rk-loop-grid-2,
    #rk-loop-guide .rk-loop-grid-3,
    #rk-loop-guide .rk-loop-grid-4,
    #rk-loop-guide .rk-loop-fields { grid-template-columns: 1fr; }
    #rk-loop-guide .rk-loop-nav { position: static; justify-content: flex-start; }
    #rk-loop-guide .rk-loop-nav a { flex: 1 1 calc(50% - 7px); text-align: center; }
    #rk-loop-guide .rk-loop-length-map { grid-template-columns: 1fr; }
    #rk-loop-guide .rk-loop-length-plus { transform: rotate(90deg); text-align: center; }
    #rk-loop-guide .rk-loop-tool-head { display: block; }
    #rk-loop-guide .rk-loop-tool-badge { display: inline-flex; margin-top: 15px; }
    #rk-loop-guide .rk-loop-actions { display: grid; grid-template-columns: 1fr; }
    #rk-loop-guide .rk-loop-result-grid { grid-template-columns: 1fr 1fr; }
    #rk-loop-guide .rk-loop-canvas-wrap,
    #rk-loop-guide #rk-loop-chart { min-height: 300px; height: 300px; }
    #rk-loop-guide .rk-loop-data-table,
    #rk-loop-guide .rk-loop-data-table tbody,
    #rk-loop-guide .rk-loop-data-table tr,
    #rk-loop-guide .rk-loop-data-table td { display: block; width: 100%; }
    #rk-loop-guide .rk-loop-data-table thead { position: absolute; overflow: hidden; width: 1px; height: 1px; clip: rect(0 0 0 0); white-space: nowrap; }
    #rk-loop-guide .rk-loop-data-table { border: 0; border-radius: 0; background: transparent; }
    #rk-loop-guide .rk-loop-data-table tr { overflow: hidden; margin-bottom: 12px; border: 1px solid var(--rk-line); border-radius: 14px; background: var(--rk-white); box-shadow: 0 7px 19px rgba(16,37,54,.055); }
    #rk-loop-guide .rk-loop-data-table td { display: grid; grid-template-columns: minmax(115px, .8fr) minmax(0, 1.2fr); gap: 12px; padding: 11px 13px; border-bottom: 1px solid var(--rk-line); text-align: right; }
    #rk-loop-guide .rk-loop-data-table td::before { color: var(--rk-muted); content: attr(data-label); font-size: .59rem; font-weight: 900; line-height: 1.4; text-align: left; text-transform: uppercase; }
    #rk-loop-guide .rk-loop-data-table td:last-child { border-bottom: 0; }
    #rk-loop-guide .rk-loop-data-table tbody tr:nth-child(even) td { background: transparent; }
    #rk-loop-guide .rk-loop-data-table tbody tr.is-best td { background: var(--rk-green-soft); }
    #rk-loop-guide .rk-loop-data-table tbody tr.is-fail td { background: var(--rk-red-soft); }
    #rk-loop-guide .rk-loop-author-head { display: block; }
    #rk-loop-guide .rk-loop-author-mark { margin-top: 17px; white-space: normal; }
    #rk-loop-guide .rk-loop-author-main { padding: 24px 18px; }
    #rk-loop-guide .rk-loop-author-quote { padding: 65px 20px 22px; }
    #rk-loop-guide .rk-loop-author-quote::before { left: 20px; }
    #rk-loop-guide .rk-loop-author-tab { font-size: .58rem; }
  }

  @media (max-width: 430px) {
    #rk-loop-guide .rk-loop-result-grid { grid-template-columns: 1fr; }
    #rk-loop-guide .rk-loop-status { grid-template-columns: 1fr; }
    #rk-loop-guide .rk-loop-scheme-row { grid-template-columns: 68px 1fr; }
    #rk-loop-guide .rk-loop-manifold { font-size: .58rem; }
  }

  @media (prefers-reduced-motion: reduce) {
    #rk-loop-guide *,
    #rk-loop-guide *::before,
    #rk-loop-guide *::after { scroll-behavior: auto !important; transition: none !important; }
  }

  @media print {
    #rk-loop-guide .rk-loop-progress,
    #rk-loop-guide .rk-loop-nav,
    #rk-loop-guide .rk-loop-actions,
    #rk-loop-guide .rk-loop-cta { display: none !important; }
    #rk-loop-guide .rk-loop-shell { border: 0; box-shadow: none; }
    #rk-loop-guide .rk-loop-section { break-inside: avoid; }
  }
</style>

<div id="rk-loop-guide">
  <div class="rk-loop-progress" id="rk-loop-progress" aria-hidden="true"></div>

  <article class="rk-loop-shell">
    <header class="rk-loop-hero">
      <span class="rk-loop-kicker">Hydraulika pętli • aktualizacja 2026</span>
      <p class="rk-loop-hero-title">Jedna pętla nie ma jednej „magicznej” długości. <span>Liczy się cały układ.</span></p>
      <p class="rk-loop-lead">Wartości 80 albo 100 m mogą być praktycznym punktem kontrolnym dla rury 16×2 mm, ale nie zastępują obliczenia przepływu, rzeczywistej średnicy wewnętrznej, oporów i długości dobiegów. Tutaj policzysz wszystkie te zależności w jednym miejscu.</p>

      <div class="rk-loop-hero-tags" aria-label="Zakres opracowania">
        <span class="rk-loop-hero-tag">powierzchnia czynna</span>
        <span class="rk-loop-hero-tag">rozstaw rur</span>
        <span class="rk-loop-hero-tag">dobiegi do rozdzielacza</span>
        <span class="rk-loop-hero-tag">przepływ i prędkość</span>
        <span class="rk-loop-hero-tag">spadek ciśnienia</span>
      </div>

      <div class="rk-loop-byline">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Specjalista HVAC i ogrzewania podłogowego</span>
        <span>Aktualizacja techniczna: 29 sierpnia 2026 r.</span>
      </div>

      <div class="rk-loop-hero-metrics">
        <div class="rk-loop-hero-metric"><b>Nie jedna liczba</b><span>Długość jest wynikiem geometrii oraz hydrauliki.</span></div>
        <div class="rk-loop-hero-metric"><b>Pole + 2 dobiegi</b><span>Każdy obwód musi dojść od rozdzielacza i do niego wrócić.</span></div>
        <div class="rk-loop-hero-metric"><b>Moc → przepływ → opór</b><span>Tak wygląda właściwa kolejność weryfikacji obwodu.</span></div>
      </div>
    </header>

    <nav class="rk-loop-nav" aria-label="Nawigacja po artykule">
      <a href="#rk-loop-answer">Szybka odpowiedź</a>
      <a href="#rk-loop-length">Co liczymy</a>
      <a href="#rk-loop-hydraulics">Hydraulika</a>
      <a href="#rk-loop-calculator">Kalkulator</a>
      <a href="#rk-loop-comparison">Porównanie</a>
      <a href="#rk-loop-checklist">Checklista</a>
      <a href="#rk-loop-faq">FAQ</a>
    </nav>

    <main class="rk-loop-content">
      <section class="rk-loop-section" id="rk-loop-answer">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Odpowiedź w 30 sekund</span>
          <h2>Ile metrów podłogówki na jednej pętli?</h2>
        </div>

        <div class="rk-loop-answer">
          <p><strong>Dla rury 16×2 mm zakres około 80–100 m bywa stosowany jako praktyczne założenie wstępne, ale nie jest uniwersalnym limitem zapewniającym poprawne działanie.</strong> Tę samą długość można ocenić inaczej przy przepływie 0,8 l/min, a inaczej przy 2,0 l/min.</p>
          <p>Prawidłową długość trzeba sprawdzić na podstawie mocy przypisanej do obwodu, projektowego ΔT, przepływu, średnicy wewnętrznej, temperatury medium, strat w rurze i armaturze oraz ciśnienia dostępnego dla najbardziej niekorzystnej pętli.</p>
        </div>

        <div class="rk-loop-grid-2" style="margin-top:18px">
          <article class="rk-loop-card rk-loop-card-accent">
            <span class="rk-loop-card-number">1</span>
            <h3>Warunek geometryczny</h3>
            <p>Czy rura potrzebna do pokrycia powierzchni czynnej, po doliczeniu obu dobiegów, zmieści się w przyjętej długości obwodu?</p>
          </article>
          <article class="rk-loop-card rk-loop-card-orange">
            <span class="rk-loop-card-number">2</span>
            <h3>Warunek hydrauliczny</h3>
            <p>Czy przy wymaganym przepływie opór tej pętli pozostanie w budżecie ciśnienia przewidzianym dla obwodu?</p>
          </article>
        </div>

        <div class="rk-loop-note rk-loop-note-warn" style="margin-top:18px">
          <p><strong>Ważne:</strong> sama zgodność z długością 80 albo 100 m nie potwierdza jeszcze mocy podłogi. Rozstaw trzeba wcześniej sprawdzić cieplnie dla temperatur wody, konstrukcji jastrychu, okładziny i dopuszczalnej temperatury powierzchni. Metodyka projektowania systemów wbudowanych jest opisana m.in. w <a href="https://www.iso.org/standard/74684.html" target="_blank" rel="noopener nofollow">ISO 11855-3:2021</a>.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-length">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Metry bez zgadywania</span>
          <h2>Długość pętli to pole grzewcze i dwa dobiegi</h2>
          <p>Najczęstszy błąd polega na zamianie całej długości pętli na powierzchnię bez odjęcia trasy między rozdzielaczem a ogrzewanym polem.</p>
        </div>

        <div class="rk-loop-formula">
          <code>L<sub>pola</sub> ≈ A<sub>czynna</sub> / s</code>
          <small>Powierzchnię czynną podajemy w m², a rozstaw s w metrach. Jest to oszacowanie geometryczne przed rozrysowaniem rzeczywistej trasy.</small>
        </div>

        <div class="rk-loop-formula">
          <code>L<sub>pętli</sub> ≈ L<sub>pola</sub> / n + 2 · L<sub>dobiegu</sub></code>
          <small>n oznacza liczbę pętli obsługujących analizowane pole. Każdy obwód ma własne zasilanie i powrót.</small>
        </div>

        <div class="rk-loop-length-map" aria-label="Składniki długości jednej pętli">
          <div class="rk-loop-length-part"><b>Dobięg</b><span>od rozdzielacza do pola</span></div>
          <div class="rk-loop-length-plus">+</div>
          <div class="rk-loop-length-part"><b>Rura w polu</b><span>część odpowiedzialna za ogrzewanie powierzchni</span></div>
          <div class="rk-loop-length-plus">+</div>
          <div class="rk-loop-length-part"><b>Powrót</b><span>z pola do rozdzielacza</span></div>
        </div>

        <div class="rk-loop-grid-2">
          <article class="rk-loop-card rk-loop-card-green">
            <h3>Przykład: 24 m², rozstaw 15 cm</h3>
            <p>Idealna długość w polu wynosi około 160 m. Po przyjęciu jawnej korekty geometrycznej 5% otrzymujemy około 168 m. Przy dwóch obwodach i dobiegu 6 m w jedną stronę wychodzi orientacyjnie:</p>
            <div class="rk-loop-formula"><code>168 / 2 + 2 · 6 = 96 m</code></div>
            <p>Łącznie potrzebne będzie około 192 m rury, ponieważ każda z dwóch pętli ma własne dobiegi.</p>
          </article>
          <article class="rk-loop-card rk-loop-card-purple">
            <h3>Dlaczego nie dodajemy zawsze 10%?</h3>
            <p>Stały procent nie zna położenia rozdzielacza. W jednym pokoju dobiegi mogą mieć 2 m, a w innym 12 m w jedną stronę. Kalkulator pokazuje oddzielnie korektę geometrii pola oraz rzeczywistą deklarowaną długość dojścia.</p>
            <p>Więcej o samym zużyciu materiału znajdziesz w opracowaniu <a href="https://projekt-ogrzewania.pl/ile-rury-na-m%c2%b2-ogrzewania-podlogowego/">ile rury na m² ogrzewania podłogowego</a>.</p>
          </article>
        </div>

        <div class="rk-loop-note" style="margin-top:18px">
          <p>Do obliczeń przyjmuj <strong>powierzchnię rzeczywiście ogrzewaną</strong>, a nie automatycznie całe pomieszczenie. Stała zabudowa, kominek, część konstrukcji oraz inne pola bez rur zmniejszają dostępną powierzchnię. Pomaga w tym poradnik <a href="https://projekt-ogrzewania.pl/gdzie-nie-ukladac-ogrzewania-podlogowego/">gdzie nie układać ogrzewania podłogowego</a>.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-hydraulics">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Najpierw przepływ</span>
          <h2>Dlaczego dwie pętle po 90 m mogą mieć zupełnie inne opory?</h2>
          <p>Długość jest tylko jednym z parametrów. Strata ciśnienia rośnie również wraz z przepływem i bardzo silnie reaguje na zmianę średnicy wewnętrznej.</p>
        </div>

        <div class="rk-loop-grid-2">
          <article class="rk-loop-card rk-loop-card-accent">
            <h3>1. Moc wyznacza przepływ</h3>
            <div class="rk-loop-formula"><code>V̇ [l/min] ≈ Φ [W] / (69,8 · ΔT [K])</code></div>
            <p>Dla wody i pętli przekazującej 700 W przy ΔT równym 5 K otrzymamy około 2,01 l/min. Przy tej samej mocy i ΔT równym 7 K będzie to około 1,43 l/min.</p>
          </article>
          <article class="rk-loop-card rk-loop-card-orange">
            <h3>2. Przepływ i średnica wyznaczają opór</h3>
            <div class="rk-loop-formula"><code>Δp = λ · L / d<sub>i</sub> · ρv² / 2 + ΣΔp<sub>miejscowe</sub></code></div>
            <p>Model Darcy’ego-Weisbacha łączy długość, średnicę, prędkość, gęstość i współczynnik tarcia. Osobno trzeba uwzględnić zawory, rozdzielacz i pozostałe elementy.</p>
          </article>
        </div>

        <div class="rk-loop-grid-3" style="margin-top:18px">
          <article class="rk-loop-card"><h3>Średnica wewnętrzna</h3><p>O hydraulice decyduje światło rury, nie wyłącznie oznaczenie 16, 17 albo 20 mm na zewnątrz.</p></article>
          <article class="rk-loop-card"><h3>Temperatura medium</h3><p>Temperatura zmienia gęstość i lepkość wody. Mieszanina z glikolem wymaga osobnych właściwości cieczy.</p></article>
          <article class="rk-loop-card"><h3>Obwód wspólny</h3><p>Dobór pompy obejmuje również magistralę, rozdzielacz, źródło, filtry i armaturę poza samą pętlą.</p></article>
        </div>

        <div class="rk-loop-note rk-loop-note-good" style="margin-top:18px">
          <p><strong>Nie sumujemy strat ciśnienia równoległych pętli.</strong> Dla rozdzielacza analizuje się najbardziej wymagającą drogę przepływu, a następnie dodaje opory elementów wspólnych. Sumuje się natomiast przepływy wszystkich jednocześnie pracujących obwodów. Zobacz także poradniki o <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">pompie obiegowej</a>, <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">rotametrach</a> i <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">różnicy temperatury zasilania i powrotu</a>.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-calculator">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Narzędzie interaktywne</span>
          <h2>Analizator długości, liczby i hydrauliki pętli</h2>
          <p>Wprowadź dane jednego pomieszczenia albo jednej spójnej strefy. Narzędzie przetestuje kolejne podziały na pętle i wybierze pierwszy wariant spełniający przyjęty limit długości, budżet ciśnienia oraz maksymalną prędkość.</p>
        </div>

        <div class="rk-loop-tool" role="region" aria-label="Kalkulator długości pętli ogrzewania podłogowego">
          <div class="rk-loop-tool-head">
            <div>
              <h3>Policz pętle dla swoich założeń</h3>
              <p>Wynik jest wstępną analizą referencyjną. Wszystkie kryteria hydrauliczne są widoczne i można je zmienić, zamiast ukrywać je pod hasłem „maksymalnie 100 m”.</p>
            </div>
            <span class="rk-loop-tool-badge">model Darcy-Weisbach</span>
          </div>

          <div class="rk-loop-tool-body">
            <div class="rk-loop-form-group">
              <div class="rk-loop-form-group-title"><span>1</span> Geometria pola</div>
              <div class="rk-loop-fields">
                <div class="rk-loop-field">
                  <label for="rk-loop-area">Powierzchnia rzeczywiście ogrzewana</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-area" type="number" min="1" max="500" step="0.1" value="24" inputmode="decimal"><span class="rk-loop-unit">m²</span></div>
                  <small>Bez trwałej zabudowy i wyłączonych pól.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-spacing">Rozstaw rur</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-spacing" type="number" min="5" max="30" step="0.5" value="15" inputmode="decimal"><span class="rk-loop-unit">cm</span></div>
                  <small>Rozstaw musi być wcześniej sprawdzony cieplnie.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-approach">Dobięg w jedną stronę</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-approach" type="number" min="0" max="60" step="0.5" value="6" inputmode="decimal"><span class="rk-loop-unit">m</span></div>
                  <small>Od rozdzielacza do początku pola grzewczego.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-geometry">Korekta geometrii pola</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-geometry" type="number" min="0" max="20" step="0.5" value="5" inputmode="decimal"><span class="rk-loop-unit">%</span></div>
                  <small>Jawny szacunek na łuki i kształt, nie wartość normowa.</small>
                </div>
              </div>
            </div>

            <div class="rk-loop-form-group">
              <div class="rk-loop-form-group-title"><span>2</span> Moc i przepływ</div>
              <div class="rk-loop-fields">
                <div class="rk-loop-field">
                  <label for="rk-loop-power">Projektowa moc strefy</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-power" type="number" min="50" max="50000" step="10" value="1800" inputmode="decimal"><span class="rk-loop-unit">W</span></div>
                  <small>Najlepiej z obliczeń obciążenia cieplnego.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-delta">Projektowe ΔT</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-delta" type="number" min="2" max="20" step="0.5" value="5" inputmode="decimal"><span class="rk-loop-unit">K</span></div>
                  <small>Różnica między zasilaniem i powrotem.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-temperature">Średnia temperatura wody</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-temperature" type="number" min="5" max="80" step="0.5" value="30" inputmode="decimal"><span class="rk-loop-unit">°C</span></div>
                  <small>Wpływa na gęstość i lepkość w modelu.</small>
                </div>
              </div>
            </div>

            <div class="rk-loop-form-group">
              <div class="rk-loop-form-group-title"><span>3</span> Rura i kryteria wstępne</div>
              <div class="rk-loop-fields">
                <div class="rk-loop-field">
                  <label for="rk-loop-pipe">Rura referencyjna</label>
                  <div class="rk-loop-input-wrap">
                    <select id="rk-loop-pipe">
                      <option value="12" selected>16×2 mm — dᵢ 12 mm</option>
                      <option value="13">17×2 mm — dᵢ 13 mm</option>
                      <option value="16">20×2 mm — dᵢ 16 mm</option>
                    </select>
                  </div>
                  <small>Sprawdź rzeczywistą średnicę w dokumentacji użytej rury.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-extra-loss">Opory dodatkowe jednej pętli</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-extra-loss" type="number" min="0" max="50" step="0.5" value="3" inputmode="decimal"><span class="rk-loop-unit">kPa</span></div>
                  <small>Wstępny udział zaworów i rozdzielacza.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-budget">Budżet ciśnienia dla pętli</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-budget" type="number" min="3" max="100" step="0.5" value="20" inputmode="decimal"><span class="rk-loop-unit">kPa</span></div>
                  <small>Założenie projektowe, a nie limit normowy.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-max-length">Praktyczna długość kontrolna</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-max-length" type="number" min="30" max="250" step="1" value="100" inputmode="decimal"><span class="rk-loop-unit">m</span></div>
                  <small>Edytowalne kryterium pomocnicze.</small>
                </div>
                <div class="rk-loop-field">
                  <label for="rk-loop-max-speed">Maksymalna prędkość kontrolna</label>
                  <div class="rk-loop-input-wrap"><input id="rk-loop-max-speed" type="number" min="0.2" max="1.5" step="0.05" value="0.6" inputmode="decimal"><span class="rk-loop-unit">m/s</span></div>
                  <small>Granica przyjęta do wstępnego porównania.</small>
                </div>
              </div>
            </div>

            <div class="rk-loop-actions">
              <button class="rk-loop-button" id="rk-loop-calculate" type="button">Przelicz analizę</button>
              <button class="rk-loop-button rk-loop-button-secondary" id="rk-loop-reset" type="button">Przywróć przykład</button>
            </div>

            <div class="rk-loop-results" id="rk-loop-results" aria-live="polite">
              <div class="rk-loop-status" id="rk-loop-status">
                <div class="rk-loop-status-icon" id="rk-loop-status-icon">✓</div>
                <div><b id="rk-loop-status-title">Wariant spełnia przyjęte kryteria wstępne</b><span id="rk-loop-status-copy">Kalkulator znalazł pierwszy podział mieszczący się w ustawionym limicie długości, ciśnienia i prędkości.</span></div>
              </div>

              <div class="rk-loop-result-grid">
                <div class="rk-loop-result-card"><span>Wstępna liczba pętli</span><b id="rk-loop-result-count">3</b><small>przed rozrysowaniem rzutu</small></div>
                <div class="rk-loop-result-card"><span>Średnia długość pętli</span><b id="rk-loop-result-length">68,0 m</b><small>pole i oba dobiegi</small></div>
                <div class="rk-loop-result-card"><span>Całkowita ilość rury</span><b id="rk-loop-result-total">204,0 m</b><small>dla analizowanej strefy</small></div>
                <div class="rk-loop-result-card"><span>Rura w samym polu</span><b id="rk-loop-result-field">168,0 m</b><small>po korekcie geometrii</small></div>
                <div class="rk-loop-result-card"><span>Przepływ na pętlę</span><b id="rk-loop-result-flow">1,72 l/min</b><small id="rk-loop-result-flow-total">łącznie 5,16 l/min</small></div>
                <div class="rk-loop-result-card"><span>Prędkość medium</span><b id="rk-loop-result-speed">0,25 m/s</b><small>dla wskazanej średnicy</small></div>
                <div class="rk-loop-result-card"><span>Strata pętli z dodatkami</span><b id="rk-loop-result-loss">10,5 kPa</b><small>model referencyjny</small></div>
                <div class="rk-loop-result-card"><span>Wymagana moc z 1 m²</span><b id="rk-loop-result-unit-power">75,0 W/m²</b><small id="rk-loop-result-area">8,0 m² na pętlę</small></div>
              </div>

              <div class="rk-loop-result-note" id="rk-loop-result-note">Analizator nie sprawdza, czy wybrany rozstaw i konstrukcja podłogi oddadzą wymaganą moc. Wynik hydrauliczny trzeba połączyć z obliczeniem cieplnym oraz rzeczywistym przebiegiem rur.</div>

              <div class="rk-loop-data-table-wrap">
                <div class="rk-loop-table-title">Jak kolejne podziały zmieniają długość i hydraulikę?</div>
                <table class="rk-loop-data-table" aria-label="Porównanie wariantów liczby pętli">
                  <thead><tr><th>Pętle</th><th>Długość jednej</th><th>Przepływ jednej</th><th>Prędkość</th><th>Strata z dodatkami</th><th>Ocena</th></tr></thead>
                  <tbody id="rk-loop-candidate-body"></tbody>
                </table>
              </div>

              <div class="rk-loop-visual-grid">
                <div class="rk-loop-chart-card">
                  <div class="rk-loop-chart-head">
                    <h3>Spadek ciśnienia a długość pętli</h3>
                    <div class="rk-loop-legend" aria-label="Legenda wykresu">
                      <span><i></i>16×2</span>
                      <span><i class="is-green"></i>17×2</span>
                      <span><i class="is-orange"></i>20×2</span>
                      <span><i class="is-budget"></i>budżet</span>
                    </div>
                  </div>
                  <div class="rk-loop-canvas-wrap"><canvas id="rk-loop-chart" role="img" aria-label="Wykres spadku ciśnienia w zależności od długości pętli dla trzech średnic rur"></canvas></div>
                  <p class="rk-loop-chart-caption" id="rk-loop-chart-caption">Linie porównują trzy średnice przy tym samym przepływie przypadającym na obwód. Pionowy znacznik pokazuje wyliczoną średnią długość.</p>
                </div>

              </div>
            </div>
          </div>
        </div>

        <div class="rk-loop-note rk-loop-note-warn" style="margin-top:18px">
          <p><strong>Zakres modelu:</strong> obliczenia dotyczą wody i gładkiej rury tworzywowej o referencyjnej chropowatości. Dla glikolu należy zastosować właściwości konkretnej mieszaniny. Wartość oporów dodatkowych jest wprowadzana przez użytkownika, ponieważ bez danych rozdzielacza i zaworów nie da się jej uczciwie wyznaczyć.</p>
        </div>
      </section>

      <section class="rk-loop-cta" aria-label="Projekt z rozrysowanymi pętlami i długościami">
        <span class="rk-loop-kicker">Od liczby do rzeczywistego rzutu</span>
        <h2>Kalkulator dzieli metry, ale nie rozrysuje pętli na rzucie</h2>
        <p>Analizator zakłada równy podział powierzchni i podobne dobiegi. Nie zna kształtu pomieszczenia, stałej zabudowy, przejść przez drzwi, dylatacji, stref brzegowych ani kolejności układania rur. Sam wynik liczbowy nie mówi jeszcze, którędy obwody mają przebiegać ani jakie będą ich rzeczywiste długości i nastawy.</p>
        <a class="rk-loop-cta-button rk-loop-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z rozrysowanymi pętlami i długościami</a>
        <small class="rk-loop-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
      </section>

      <section class="rk-loop-section" id="rk-loop-comparison">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Te same warunki, różne rury</span>
          <h2>Rura 16×2, 17×2 i 20×2 mm — co rzeczywiście zmienia średnica?</h2>
          <p>Większe światło rury może wyraźnie zmniejszyć stratę ciśnienia przy tym samym przepływie i długości. Nie tworzy jednak automatycznego pozwolenia na obwód 120 albo 150 m.</p>
        </div>

        <table class="rk-loop-data-table" aria-label="Porównanie wymiarów rur do ogrzewania podłogowego">
          <thead><tr><th>Oznaczenie</th><th>Referencyjne dᵢ</th><th>Wpływ hydrauliczny</th><th>Co trzeba sprawdzić</th></tr></thead>
          <tbody>
            <tr>
              <td data-label="Oznaczenie"><strong>16×2 mm</strong></td>
              <td data-label="Referencyjne dᵢ">12 mm</td>
              <td data-label="Wpływ hydrauliczny">Najwyższa prędkość i opór spośród porównywanych wariantów przy identycznym przepływie.</td>
              <td data-label="Co trzeba sprawdzić">Wymagany przepływ, długość z dobiegami, opór pętli oraz możliwość regulacji.</td>
            </tr>
            <tr>
              <td data-label="Oznaczenie"><strong>17×2 mm</strong></td>
              <td data-label="Referencyjne dᵢ">13 mm</td>
              <td data-label="Wpływ hydrauliczny">Niższa prędkość oraz jednostkowa strata ciśnienia niż przy średnicy wewnętrznej 12 mm.</td>
              <td data-label="Co trzeba sprawdzić">Rzeczywisty wymiar produktu, promień gięcia i zgodność z kompletnym systemem.</td>
            </tr>
            <tr>
              <td data-label="Oznaczenie"><strong>20×2 mm</strong></td>
              <td data-label="Referencyjne dᵢ">16 mm</td>
              <td data-label="Wpływ hydrauliczny">Znacznie mniejszy opór przy tym samym przepływie, ale większa sztywność i inna geometria układania.</td>
              <td data-label="Co trzeba sprawdzić">Obliczenia cieplne, hydraulikę, wykonanie łuków oraz rozwiązania konstrukcyjne podłogi.</td>
            </tr>
          </tbody>
        </table>

        <div class="rk-loop-note" style="margin-top:18px">
          <p>Podane średnice wewnętrzne są wartościami referencyjnymi wynikającymi z prostego odejmowania dwóch grubości ścianki. Przed wykonaniem projektu należy sprawdzić kartę techniczną konkretnej rury. Więcej o doborze wymiaru przeczytasz w opracowaniu <a href="https://projekt-ogrzewania.pl/srednice-rur-w-ogrzewaniu-podlogowym/">średnice rur w ogrzewaniu podłogowym</a>.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-area-guide">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Metry kwadratowe na obwód</span>
          <h2>Ile powierzchni może przypadać na jedną pętlę?</h2>
          <p>Bez podania rozstawu i długości dobiegów pytanie nie ma jednej odpowiedzi. Poniższy przykład pokazuje tylko geometrię: z całej pętli 80 m odejmujemy łącznie 12 m dojścia i powrotu, więc w polu pozostaje 68 m.</p>
        </div>

        <table class="rk-loop-data-table" aria-label="Przykładowa powierzchnia pola dla pętli 80 metrów">
          <thead><tr><th>Rozstaw</th><th>Idealna ilość rury w polu</th><th>Pole z 68 m rury</th><th>Znaczenie wyniku</th></tr></thead>
          <tbody>
            <tr><td data-label="Rozstaw"><strong>10 cm</strong></td><td data-label="Rura w polu">około 10 m/m²</td><td data-label="Pole z 68 m">około 6,8 m²</td><td data-label="Znaczenie">Duża ilość rury na małym polu; wcześniej trzeba potwierdzić potrzebę takiego zagęszczenia.</td></tr>
            <tr><td data-label="Rozstaw"><strong>15 cm</strong></td><td data-label="Rura w polu">około 6,67 m/m²</td><td data-label="Pole z 68 m">około 10,2 m²</td><td data-label="Znaczenie">Przykład geometryczny, nie automatyczna zalecana powierzchnia pętli.</td></tr>
            <tr><td data-label="Rozstaw"><strong>20 cm</strong></td><td data-label="Rura w polu">około 5 m/m²</td><td data-label="Pole z 68 m">około 13,6 m²</td><td data-label="Znaczenie">Większe pole nie potwierdza, że podłoga pokryje wymaganą moc przy danej temperaturze wody.</td></tr>
          </tbody>
        </table>

        <div class="rk-loop-note rk-loop-note-warn" style="margin-top:18px">
          <p>W tabeli nie doliczono korekty na rzeczywiste łuki i kształt pola. Nie jest to tabela maksymalnych powierzchni. Właściwy rozstaw wybiera się na podstawie obciążenia cieplnego, powierzchni czynnej i charakterystyki podłogi. Zobacz szczegółowe porównanie <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstawu rur co 10 i 15 cm</a>.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-rooms">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Różne pomieszczenia</span>
          <h2>Salon, łazienka i duże przeszklenia nie potrzebują tej samej reguły</h2>
          <p>Podział na obwody wynika z geometrii i hydrauliki, ale wcześniej każde pomieszczenie musi przejść osobną kontrolę cieplną.</p>
        </div>

        <div class="rk-loop-grid-4">
          <article class="rk-loop-card rk-loop-card-accent">
            <h3>Duży salon</h3>
            <p>Najczęściej wymaga kilku pól. Granice pętli powinny uwzględniać kształt, komunikację, dylatacje oraz realistyczny powrót rur do rozdzielacza.</p>
          </article>
          <article class="rk-loop-card rk-loop-card-orange">
            <h3>Łazienka</h3>
            <p>Wyższa temperatura obliczeniowa i mała powierzchnia czynna mogą zwiększyć wymaganą moc z 1 m². Krótki obwód nie musi mieć takiego przepływu jak dłuższa pętla salonu.</p>
          </article>
          <article class="rk-loop-card rk-loop-card-green">
            <h3>Duże okna</h3>
            <p>Strefa brzegowa może zmienić rozstaw i trasę, lecz nie wolno automatycznie zagęszczać rur bez sprawdzenia mocy oraz temperatury powierzchni.</p>
          </article>
          <article class="rk-loop-card rk-loop-card-purple">
            <h3>Dom szkieletowy</h3>
            <p>Mniejsza bezwładność budynku nie narzuca pętli 60–70 m. O dynamice decyduje konstrukcja podłogi i sterowanie, a długość weryfikuje hydraulika.</p>
          </article>
        </div>

        <p style="margin-top:18px">Przed rozrysowaniem warto przeczytać poradnik <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">jak zaplanować rozmieszczenie pętli grzewczych</a> oraz opracowanie o <a href="https://projekt-ogrzewania.pl/strefa-brzegowa-w-ogrzewaniu-podlogowym/">strefie brzegowej</a>.</p>
      </section>

      <section class="rk-loop-section" id="rk-loop-balancing">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Regulacja rozdzielacza</span>
          <h2>Czy wszystkie pętle muszą mieć identyczną długość?</h2>
          <p>Nie. Podobne długości często ułatwiają równoważenie, ale celem projektu nie jest uzyskanie identycznej liczby metrów. Celem jest osiągnięcie wymaganych przepływów dla wszystkich obwodów.</p>
        </div>

        <div class="rk-loop-grid-2">
          <article class="rk-loop-card rk-loop-card-green">
            <h3>Różne długości mogą pracować razem</h3>
            <p>Pętla łazienki o długości 45 m może pracować obok pętli salonu o długości 92 m, jeżeli każda otrzyma właściwy przepływ, a zawory i pompa zapewnią wymagane warunki regulacji.</p>
          </article>
          <article class="rk-loop-card rk-loop-card-orange">
            <h3>Podobna długość nie gwarantuje równowagi</h3>
            <p>Dwie pętle po 80 m mogą potrzebować różnych przepływów, ponieważ obsługują inną moc. Jednakowa nastawa wszystkich rotametrów nie jest wtedy prawidłowym rozwiązaniem.</p>
          </article>
        </div>

        <div class="rk-loop-note" style="margin-top:18px">
          <p>Nie ma uniwersalnej reguły, że długości mogą różnić się maksymalnie o 10 albo 15%. Najpierw przypisuje się moc do obwodów, oblicza przepływy, sprawdza opory i dopiero potem ocenia zakres regulacji rozdzielacza.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-source">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Źródło ciepła i medium</span>
          <h2>Pompa ciepła, kocioł i glikol — co naprawdę zmieniają?</h2>
          <p>Podłoga nie rozpoznaje urządzenia, które podgrzało wodę. Źródło wpływa na temperaturę, z jaką chcemy pracować, ale nie wyznacza samodzielnie długości pętli.</p>
        </div>

        <div class="rk-loop-grid-3">
          <article class="rk-loop-card rk-loop-card-accent">
            <h3>Pompa ciepła</h3>
            <p>Niska temperatura zasilania może wymagać większej powierzchni czynnej albo innego rozstawu. Krótsza pętla może ograniczyć potrzebne ciśnienie, ale sama nie gwarantuje poprawy SCOP.</p>
          </article>
          <article class="rk-loop-card rk-loop-card-green">
            <h3>Kocioł</h3>
            <p>Możliwość uzyskania wyższej temperatury wody nie powinna służyć do maskowania zbyt małej powierzchni grzewczej lub błędnego rozstawu.</p>
          </article>
          <article class="rk-loop-card rk-loop-card-purple">
            <h3>Mieszanina z glikolem</h3>
            <p>Glikol zmienia lepkość, gęstość i pojemność cieplną. Kalkulator wodny nie powinien być bez korekty używany do doboru takiej instalacji.</p>
          </article>
        </div>

        <p style="margin-top:18px">Jeżeli instalacja ma pracować z mieszaniną niezamarzającą, przeczytaj opracowanie <a href="https://projekt-ogrzewania.pl/glikol-w-ogrzewaniu-podlogowym-prawda-i-mity-ktore-musi-znac-kazdy-inwestor/">glikol w ogrzewaniu podłogowym — prawda i mity</a>.</p>
      </section>

      <section class="rk-loop-section" id="rk-loop-myths">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Bez straszenia i skrótów</span>
          <h2>Najczęstsze mity o długości pętli</h2>
        </div>

        <table class="rk-loop-data-table" aria-label="Mity i wyjaśnienia dotyczące długości pętli">
          <thead><tr><th>Mit</th><th>Wyjaśnienie techniczne</th></tr></thead>
          <tbody>
            <tr><td data-label="Mit"><strong>Norma ustala 100 m dla rury 16×2</strong></td><td data-label="Wyjaśnienie">Jedna liczba nie zastępuje sprawdzenia przepływu, oporów, średnicy wewnętrznej i dostępnego ciśnienia.</td></tr>
            <tr><td data-label="Mit"><strong>Długa pętla zawsze ma ΔT 10 K</strong></td><td data-label="Wyjaśnienie">Różnica temperatur wynika z mocy oddawanej przez obwód i przepływu. Duży opór może utrudnić uzyskanie przepływu, ale nie narzuca z góry konkretnego ΔT.</td></tr>
            <tr><td data-label="Mit"><strong>Za długa pętla powoduje kawitację</strong></td><td data-label="Wyjaśnienie">Kawitacja zależy od lokalnego ciśnienia bezwzględnego, temperatury i warunków pracy pompy. Typowym skutkiem nadmiernego oporu jest brak wymaganego przepływu lub potrzeba większej wysokości podnoszenia.</td></tr>
            <tr><td data-label="Mit"><strong>Długa pętla pęka wylewkę</strong></td><td data-label="Wyjaśnienie">Rysy i uszkodzenia jastrychu wiążą się z jego konstrukcją, dylatacjami, wykonaniem, pielęgnacją, wygrzewaniem oraz ruchami termicznymi, a nie z samą liczbą metrów obwodu.</td></tr>
            <tr><td data-label="Mit"><strong>Krótsze pętle automatycznie poprawiają SCOP</strong></td><td data-label="Wyjaśnienie">Mogą zmniejszyć wymagane ciśnienie pompy obiegowej, ale sprawność pompy ciepła zależy przede wszystkim od warunków źródła i odbioru oraz temperatury zasilania.</td></tr>
            <tr><td data-label="Mit"><strong>Wszystkie rotametry ustawia się tak samo</strong></td><td data-label="Wyjaśnienie">Przepływ każdej pętli powinien wynikać z przypisanej mocy i projektowego ΔT, a następnie zostać zweryfikowany hydraulicznie.</td></tr>
          </tbody>
        </table>

        <div class="rk-loop-note rk-loop-note-warn" style="margin-top:18px">
          <p>Jeżeli instalacja jest już wykonana i podejrzewasz zbyt długi obwód, przejdź do osobnego poradnika <a href="https://projekt-ogrzewania.pl/za-dluga-petla-podlogowki/">za długa pętla podłogówki — objawy i rozwiązania</a>. Techniczne granice i weryfikację przyjętej długości rozwija natomiast wpis <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalna długość pętli ogrzewania podłogowego</a>.</p>
        </div>
      </section>

      <section class="rk-loop-section" id="rk-loop-checklist">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Procedura przed montażem</span>
          <h2>Jak wyznaczyć liczbę i długość pętli krok po kroku?</h2>
          <p>Kolejność ma znaczenie. Nie zaczynamy od podzielenia metrów przez arbitralne 80.</p>
        </div>

        <ol class="rk-loop-checklist">
          <li><div><b>Oblicz obciążenie cieplne pomieszczenia</b><span>Ustal moc potrzebną w warunkach projektowych. Średni wskaźnik dla całego domu nie zastępuje obliczeń poszczególnych pomieszczeń. Pomocne będzie opracowanie o <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowym obciążeniu cieplnym OZC</a>.</span></div></li>
          <li><div><b>Wyznacz powierzchnię czynną</b><span>Odejmij stałą zabudowę i pola wyłączone z układania rur. Sprawdź rzeczywistą geometrię, a nie tylko metraż z zestawienia pomieszczeń.</span></div></li>
          <li><div><b>Dobierz rozstaw z obliczeń cieplnych</b><span>Porównaj wymaganą moc z wydajnością konkretnej konstrukcji podłogi przy przyjętej temperaturze wody oraz okładzinie.</span></div></li>
          <li><div><b>Oszacuj rurę w polu</b><span>Podziel powierzchnię czynną przez rozstaw wyrażony w metrach. Ewentualną korektę geometrii pokaż jawnie.</span></div></li>
          <li><div><b>Dodaj osobno oba dobiegi każdej pętli</b><span>Położenie rozdzielacza może zmienić zarówno całkowite zużycie rury, jak i realne pole obsługiwane przez obwód.</span></div></li>
          <li><div><b>Przypisz moc i oblicz przepływ obwodów</b><span>Przepływ wynika z mocy pętli i projektowej różnicy temperatur. Nie dobiera się go bezpośrednio z samej długości.</span></div></li>
          <li><div><b>Sprawdź średnicę, prędkość i spadek ciśnienia</b><span>Uwzględnij rurę, zawory, rozdzielacz oraz budżet ciśnienia wynikający z koncepcji całego obiegu.</span></div></li>
          <li><div><b>Rozrysuj i opisz każdą pętlę na rzucie</b><span>Dopiero rysunek ujawnia rzeczywiste dobiegi, przejścia przez drzwi, dylatacje, strefy brzegowe, kolejność układania i faktyczne długości.</span></div></li>
        </ol>
      </section>

      <section class="rk-loop-section" id="rk-loop-faq">
        <div class="rk-loop-section-head">
          <span class="rk-loop-eyebrow">Pytania i odpowiedzi</span>
          <h2>Ile metrów podłogówki na jednej pętli — FAQ</h2>
        </div>

        <div class="rk-loop-faq">
          <details><summary>Ile metrów powinna mieć jedna pętla ogrzewania podłogowego?</summary><div class="rk-loop-faq-answer"><p>Nie ma jednej długości właściwej dla każdej instalacji. Dla rury 16×2 mm wartości około 80–100 m bywają praktycznym założeniem wstępnym, ale wynik trzeba sprawdzić przy wymaganym przepływie, rzeczywistej średnicy wewnętrznej, oporach armatury i dostępnym ciśnieniu.</p></div></details>
          <details><summary>Czy 100 m to maksymalna długość pętli z rury 16×2 mm?</summary><div class="rk-loop-faq-answer"><p>Nie należy przedstawiać 100 m jako uniwersalnego limitu gwarantującego poprawność. Pętla krótsza może być zbyt oporowa przy dużym przepływie, a dłuższy obwód może spełniać przyjęty budżet w innych warunkach. Ostateczna decyzja wymaga obliczeń całej drogi przepływu.</p></div></details>
          <details><summary>Ile m² ogrzeje pętla 80 m przy rozstawie 10 cm?</summary><div class="rk-loop-faq-answer"><p>Jeżeli całe 80 m znajdowałoby się w polu, geometria dawałaby około 8 m². W praktyce trzeba odjąć zasilanie i powrót od rozdzielacza oraz uwzględnić łuki i kształt pola. Przy 12 m łącznych dobiegów w polu pozostaje 68 m, czyli orientacyjnie około 6,8 m².</p></div></details>
          <details><summary>Czy dobiegi wlicza się do długości pętli?</summary><div class="rk-loop-faq-answer"><p>Tak. Cała rura od belki zasilającej, przez pole grzewcze, aż do belki powrotnej tworzy jeden obwód hydrauliczny. Każda pętla wymaga doliczenia drogi do strefy oraz drogi powrotnej.</p></div></details>
          <details><summary>Czy wszystkie pętle powinny mieć taką samą długość?</summary><div class="rk-loop-faq-answer"><p>Nie. Podobne długości mogą ułatwić regulację, ale obwody obsługują różne moce i mogą wymagać innych przepływów. Najważniejsze jest osiągnięcie przepływów projektowych w zakresie regulacji zaworów i przy dostępnym ciśnieniu.</p></div></details>
          <details><summary>Co się dzieje, gdy pętla jest za długa?</summary><div class="rk-loop-faq-answer"><p>Wraz z długością rośnie strata ciśnienia. Jeżeli dostępne ciśnienie jest zbyt małe, pętla może nie osiągnąć wymaganego przepływu, a pomieszczenie wymaganej mocy. Nie oznacza to automatycznie kawitacji, pękania wylewki ani z góry określonego ΔT.</p></div></details>
          <details><summary>Czy rura 20×2 mm pozwala zawsze wykonać pętlę 150 m?</summary><div class="rk-loop-faq-answer"><p>Nie. Większa średnica wewnętrzna zmniejsza opór przy tym samym przepływie, ale długość nadal trzeba sprawdzić razem z mocą, przepływem, właściwościami medium, armaturą, budżetem ciśnienia i możliwościami wykonawczymi.</p></div></details>
          <details><summary>Czy pompa ciepła wymaga pętli krótszych niż kocioł?</summary><div class="rk-loop-faq-answer"><p>Nie bezpośrednio. Źródło ciepła wpływa na pożądaną temperaturę pracy, natomiast długość pętli wynika z geometrii i hydrauliki. Krótszy obwód może ograniczyć wymagane ciśnienie, ale nie jest automatycznym warunkiem współpracy z pompą ciepła.</p></div></details>
          <details><summary>Jak obliczyć przepływ jednej pętli?</summary><div class="rk-loop-faq-answer"><p>Dla wody można orientacyjnie podzielić moc pętli w watach przez iloczyn 69,8 oraz projektowego ΔT w kelwinach. Wynik otrzymujemy w l/min. Następnie sprawdzamy, jaki spadek ciśnienia wywoła ten przepływ w konkretnej rurze i armaturze.</p></div></details>
          <details><summary>Czy kalkulator zastępuje projekt ogrzewania podłogowego?</summary><div class="rk-loop-faq-answer"><p>Nie. Kalkulator wykonuje wstępny równy podział i referencyjne obliczenie hydrauliczne. Nie zna kształtu pomieszczeń, stref bez rur, dylatacji, rzeczywistych tras, charakterystyk zaworów ani pozostałych oporów wspólnego obiegu.</p></div></details>
        </div>
      </section>

      <section class="rk-loop-section rk-loop-sources" id="rk-loop-sources">
        <span class="rk-loop-eyebrow">Źródła i metodyka</span>
        <h2>Na czym oparto opracowanie?</h2>
        <ul class="rk-loop-source-list">
          <li><b><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="noopener nofollow">ISO 11855-3:2021 — Design and dimensioning</a></b>Oficjalny opis części normy dotyczącej projektowania i wymiarowania wbudowanych systemów ogrzewania oraz chłodzenia płaszczyznowego.</li>
          <li><b><a href="https://radiant.cbe.berkeley.edu/resources/rad_tool_documentation" target="_blank" rel="noopener nofollow">University of California, Berkeley — Radiant Tools</a></b>Dokumentacja akademickiego narzędzia wskazująca zależność liczby obwodów od długości, wymaganego przepływu oraz spadku ciśnienia.</li>
          <li><b><a href="https://ceac.arizona.edu/sites/default/files/giacomelli%20heating.pdf" target="_blank" rel="noopener nofollow">University of Arizona — Heating Systems</a></b>Materiał dydaktyczny opisujący zależność strat ciśnienia od przepływu, średnicy, długości, chropowatości i oporów miejscowych oraz zastosowanie równania Darcy’ego-Weisbacha.</li>
        </ul>
        <p style="margin:17px 0 0;color:var(--rk-muted);font-size:.68rem">Kalkulator jest modelem edukacyjnym dla wody. Stosuje interpolowane właściwości wody w zakresie temperatur wejściowych, równanie Darcy’ego-Weisbacha i przybliżenie Haalanda dla współczynnika tarcia. Nie zastępuje danych konkretnego systemu ani pełnego doboru pompy.</p>
      </section>
    </main>

    <section class="rk-loop-author" id="rk-loop-author" aria-label="Autor opracowania">
      <input type="radio" name="rk-loop-author-tabs" id="rk-loop-author-about" checked="">
      <input type="radio" name="rk-loop-author-tabs" id="rk-loop-author-exp">
      <input type="radio" name="rk-loop-author-tabs" id="rk-loop-author-sites">

      <header class="rk-loop-author-head">
        <div><span class="rk-loop-kicker">Autor opracowania</span><h2>Robert Kucharski</h2><p>Projektant instalacji sanitarnych • specjalista HVAC i ogrzewania podłogowego</p></div>
        <span class="rk-loop-author-mark">HYDRAULIKA PĘTLI • HVAC</span>
      </header>

      <div class="rk-loop-author-layout">
        <aside class="rk-loop-author-side">
          <div class="rk-loop-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant ogrzewania podłogowego" width="600" height="600" loading="lazy" decoding="async"></div>
          <div class="rk-loop-author-name">Robert Kucharski</div>
          <div class="rk-loop-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
          <div class="rk-loop-author-social-label">Znajdziesz mnie również:</div>
          <div class="rk-loop-author-social" aria-label="Profile Roberta Kucharskiego w mediach społecznościowych">
            <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="noopener nofollow me" aria-label="Robert Kucharski na LinkedIn" title="LinkedIn"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5.2 7.7H1.6V22h3.6V7.7ZM3.4 2A2.1 2.1 0 1 0 3.4 6.2 2.1 2.1 0 0 0 3.4 2ZM22.4 13.8c0-4.3-2.3-6.3-5.4-6.3a4.7 4.7 0 0 0-4.2 2.3V7.7H9.2V22h3.6v-7.1c0-1.9.4-3.7 2.7-3.7 2.3 0 2.3 2.1 2.3 3.8v7h3.6l1-8.2Z"></path></svg></a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="noopener nofollow me" aria-label="Projekt-Ogrzewania.pl na Facebooku" title="Facebook"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M14.2 22v-9h3l.5-3.5h-3.5V7.3c0-1 .3-1.7 1.8-1.7h1.9V2.5c-.3 0-1.5-.1-2.8-.1-2.8 0-4.7 1.7-4.7 4.8v2.3H7.2V13h3.2v9h3.8Z"></path></svg></a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="noopener nofollow me" aria-label="Projekt HVAC w serwisie X" title="X"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.9 2H22l-6.8 7.8L23.2 22H17l-4.9-6.4L6.5 22H3.3l7.3-8.4L2.8 2h6.4l4.4 5.8L18.9 2Zm-1.1 17.8h1.7L8.3 4.1H6.5l11.3 15.7Z"></path></svg></a>
          </div>
        </aside>

        <div class="rk-loop-author-main">
          <blockquote class="rk-loop-author-quote"><p>„Długość pętli nie jest celem samym w sobie. Najpierw trzeba wiedzieć, jaką moc ma przenieść obwód i jaki przepływ z tego wynika. Dopiero wtedy liczba metrów nabiera znaczenia hydraulicznego.”</p></blockquote>
          <div class="rk-loop-author-tabs" role="tablist" aria-label="Informacje o autorze">
            <label class="rk-loop-author-tab" for="rk-loop-author-about">O autorze</label>
            <label class="rk-loop-author-tab" for="rk-loop-author-exp">Doświadczenie</label>
            <label class="rk-loop-author-tab" for="rk-loop-author-sites">Portale</label>
          </div>
          <div class="rk-loop-author-panel rk-loop-author-panel-about"><p>Projektuję wodne ogrzewanie podłogowe, łącząc obliczenia strat ciepła z doborem temperatur, rozstawów, długości pętli, przepływów, strat ciśnienia i nastaw rozdzielaczy.</p><p><a href="https://projekt-ogrzewania.pl/author/robert-kucharski/">Zobacz profil i pozostałe opracowania autora</a>.</p></div>
          <div class="rk-loop-author-panel rk-loop-author-panel-exp"><p>Dokumentacja wykonawcza zawiera dla każdego obwodu rzeczywistą trasę, długość, przypisaną moc, przepływ oraz nastawę. Dzięki temu liczba pętli nie wynika z automatycznego dzielenia metrów przez jedną stałą wartość.</p></div>
          <div class="rk-loop-author-panel rk-loop-author-panel-sites"><p>Jestem właścicielem trzech serwisów branżowych. Powiązanie portali podaję jawnie, aby czytelnik znał autorstwo i kontekst linkowania.</p><div class="rk-loop-site-links"><a href="https://projekt-ogrzewania.pl/">Projekt-Ogrzewania.pl</a><a href="https://remont.biz.pl/" target="_blank" rel="noopener nofollow">Remont.biz.pl</a><a href="https://sobir.pl/" target="_blank" rel="noopener nofollow">Sobir.pl</a></div></div>
        </div>
      </div>
    </section>

    <section class="rk-loop-cta rk-loop-final-cta" aria-label="Kompletny projekt ogrzewania podłogowego">
      <span class="rk-loop-kicker">Zamknij hydraulikę przed ułożeniem rur</span>
      <h2>Otrzymaj kompletny projekt z długościami, przepływami i nastawami</h2>
      <p>Projekt łączy obciążenie cieplne, powierzchnie czynne, rozstawy, rzeczywisty przebieg oraz długość każdego obwodu, wymagane przepływy, straty ciśnienia i nastawy rozdzielacza. Instalator otrzymuje gotowy rzut, a nie samą ogólną regułę „80 albo 100 metrów”.</p>
      <a class="rk-loop-cta-button rk-loop-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów kompletny projekt ogrzewania podłogowego</a>
      <small class="rk-loop-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
    </section>
  </article>
</div>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#article",
      "url": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/",
      "headline": "Ile metrów podłogówki na jednej pętli? Długość, opory i kalkulator",
      "description": "Techniczny poradnik z kalkulatorem długości i liczby pętli, uwzględniający powierzchnię czynną, rozstaw, dobiegi, przepływ, średnicę rury i spadek ciśnienia.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-29",
      "mainEntityOfPage": {"@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#webpage"},
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "copyrightHolder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"},
      "about": [
        {"@type": "Thing", "name": "Długość pętli ogrzewania podłogowego"},
        {"@type": "Thing", "name": "Hydraulika ogrzewania podłogowego"},
        {"@type": "Thing", "name": "Spadek ciśnienia"},
        {"@type": "Thing", "name": "Przepływ w pętli grzewczej"}
      ],
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"}
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#webpage",
      "url": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/",
      "name": "Ile metrów podłogówki na jednej pętli? Długość, opory i kalkulator",
      "description": "Jak obliczyć długość i liczbę pętli ogrzewania podłogowego po uwzględnieniu rozstawu, powierzchni czynnej, dobiegów, przepływu oraz oporów.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-29",
      "breadcrumb": {"@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#breadcrumb"},
      "mainEntity": [
        {"@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#application"},
        {"@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#howto"},
        {"@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#faq"}
      ],
      "isPartOf": {"@id": "https://projekt-ogrzewania.pl/#website"}
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#breadcrumb",
      "itemListElement": [
        {"@type": "ListItem", "position": 1, "name": "Projekt-Ogrzewania.pl", "item": "https://projekt-ogrzewania.pl/"},
        {"@type": "ListItem", "position": 2, "name": "Ogrzewanie podłogowe", "item": "https://projekt-ogrzewania.pl/category/ogrzewanie-podlogowe/"},
        {"@type": "ListItem", "position": 3, "name": "Ile metrów podłogówki na jednej pętli", "item": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/"}
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#application",
      "name": "Analizator długości, liczby i hydrauliki pętli",
      "url": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#rk-loop-calculator",
      "applicationCategory": "EducationalApplication",
      "operatingSystem": "Dowolny system z przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "description": "Narzędzie szacuje ilość rury w polu, dobiegi, liczbę pętli, długość obwodu, przepływ, prędkość i spadek ciśnienia dla wody.",
      "featureList": [
        "Obliczenie długości rury w polu grzewczym",
        "Oddzielne doliczenie dobiegów",
        "Wstępny dobór liczby pętli",
        "Obliczenie przepływu i prędkości medium",
        "Model spadku ciśnienia Darcy-Weisbach",
        "Porównanie trzech średnic na wykresie"
      ],
      "author": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#howto",
      "name": "Jak wyznaczyć liczbę i długość pętli ogrzewania podłogowego",
      "description": "Ośmioetapowa procedura łącząca obliczenia cieplne, geometrię pola, dobiegi, przepływ oraz opory hydrauliczne.",
      "inLanguage": "pl-PL",
      "step": [
        {"@type": "HowToStep", "position": 1, "name": "Oblicz obciążenie cieplne", "text": "Ustal projektową moc potrzebną dla każdego pomieszczenia zamiast przyjmować jeden średni wskaźnik dla budynku."},
        {"@type": "HowToStep", "position": 2, "name": "Wyznacz powierzchnię czynną", "text": "Odejmij trwałą zabudowę oraz pola wyłączone z układania rur i sprawdź rzeczywistą geometrię pomieszczenia."},
        {"@type": "HowToStep", "position": 3, "name": "Dobierz rozstaw rur", "text": "Sprawdź wydajność konstrukcji podłogi przy przyjętej temperaturze wody, okładzinie i dopuszczalnej temperaturze powierzchni."},
        {"@type": "HowToStep", "position": 4, "name": "Oszacuj długość rury w polu", "text": "Podziel powierzchnię czynną przez rozstaw wyrażony w metrach i jawnie pokaż ewentualną korektę geometrii."},
        {"@type": "HowToStep", "position": 5, "name": "Dodaj dobiegi każdej pętli", "text": "Do części ułożonej w polu dodaj osobno drogę zasilania i powrotu między rozdzielaczem a strefą grzewczą."},
        {"@type": "HowToStep", "position": 6, "name": "Oblicz przepływy", "text": "Przypisz moc do obwodów i wyznacz przepływ dla projektowej różnicy temperatury zasilania oraz powrotu."},
        {"@type": "HowToStep", "position": 7, "name": "Sprawdź hydraulikę", "text": "Oblicz prędkość i spadek ciśnienia dla rzeczywistej średnicy wewnętrznej, długości, temperatury medium i armatury."},
        {"@type": "HowToStep", "position": 8, "name": "Rozrysuj obwody na rzucie", "text": "Uwzględnij przejścia przez drzwi, dylatacje, strefy brzegowe, kolejność układania i zapisz długości oraz nastawy każdej pętli."}
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {"@type": "Question", "name": "Ile metrów powinna mieć jedna pętla ogrzewania podłogowego?", "acceptedAnswer": {"@type": "Answer", "text": "Nie ma jednej długości właściwej dla każdej instalacji. Dla rury 16×2 mm wartości około 80–100 m bywają praktycznym założeniem wstępnym, ale wynik trzeba sprawdzić przy wymaganym przepływie, rzeczywistej średnicy wewnętrznej, oporach armatury i dostępnym ciśnieniu."}},
        {"@type": "Question", "name": "Czy 100 m to maksymalna długość pętli z rury 16×2 mm?", "acceptedAnswer": {"@type": "Answer", "text": "Nie należy przedstawiać 100 m jako uniwersalnego limitu gwarantującego poprawność. Pętla krótsza może być zbyt oporowa przy dużym przepływie, a dłuższy obwód może spełniać przyjęty budżet w innych warunkach. Ostateczna decyzja wymaga obliczeń całej drogi przepływu."}},
        {"@type": "Question", "name": "Ile m² ogrzeje pętla 80 m przy rozstawie 10 cm?", "acceptedAnswer": {"@type": "Answer", "text": "Jeżeli całe 80 m znajdowałoby się w polu, geometria dawałaby około 8 m². W praktyce trzeba odjąć zasilanie i powrót od rozdzielacza oraz uwzględnić łuki i kształt pola. Przy 12 m łącznych dobiegów w polu pozostaje 68 m, czyli orientacyjnie około 6,8 m²."}},
        {"@type": "Question", "name": "Czy dobiegi wlicza się do długości pętli?", "acceptedAnswer": {"@type": "Answer", "text": "Tak. Cała rura od belki zasilającej, przez pole grzewcze, aż do belki powrotnej tworzy jeden obwód hydrauliczny. Każda pętla wymaga doliczenia drogi do strefy oraz drogi powrotnej."}},
        {"@type": "Question", "name": "Czy wszystkie pętle powinny mieć taką samą długość?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Podobne długości mogą ułatwić regulację, ale obwody obsługują różne moce i mogą wymagać innych przepływów. Najważniejsze jest osiągnięcie przepływów projektowych w zakresie regulacji zaworów i przy dostępnym ciśnieniu."}},
        {"@type": "Question", "name": "Co się dzieje, gdy pętla jest za długa?", "acceptedAnswer": {"@type": "Answer", "text": "Wraz z długością rośnie strata ciśnienia. Jeżeli dostępne ciśnienie jest zbyt małe, pętla może nie osiągnąć wymaganego przepływu, a pomieszczenie wymaganej mocy. Nie oznacza to automatycznie kawitacji, pękania wylewki ani z góry określonego ΔT."}},
        {"@type": "Question", "name": "Czy rura 20×2 mm pozwala zawsze wykonać pętlę 150 m?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Większa średnica wewnętrzna zmniejsza opór przy tym samym przepływie, ale długość nadal trzeba sprawdzić razem z mocą, przepływem, właściwościami medium, armaturą, budżetem ciśnienia i możliwościami wykonawczymi."}},
        {"@type": "Question", "name": "Czy pompa ciepła wymaga pętli krótszych niż kocioł?", "acceptedAnswer": {"@type": "Answer", "text": "Nie bezpośrednio. Źródło ciepła wpływa na pożądaną temperaturę pracy, natomiast długość pętli wynika z geometrii i hydrauliki. Krótszy obwód może ograniczyć wymagane ciśnienie, ale nie jest automatycznym warunkiem współpracy z pompą ciepła."}},
        {"@type": "Question", "name": "Jak obliczyć przepływ jednej pętli?", "acceptedAnswer": {"@type": "Answer", "text": "Dla wody można orientacyjnie podzielić moc pętli w watach przez iloczyn 69,8 oraz projektowego ΔT w kelwinach. Wynik otrzymujemy w l/min. Następnie sprawdzamy, jaki spadek ciśnienia wywoła ten przepływ w konkretnej rurze i armaturze."}},
        {"@type": "Question", "name": "Czy kalkulator zastępuje projekt ogrzewania podłogowego?", "acceptedAnswer": {"@type": "Answer", "text": "Nie. Kalkulator wykonuje wstępny równy podział i referencyjne obliczenie hydrauliczne. Nie zna kształtu pomieszczeń, stref bez rur, dylatacji, rzeczywistych tras, charakterystyk zaworów ani pozostałych oporów wspólnego obiegu."}}
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/robert-kucharski/",
      "jobTitle": "Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego",
      "worksFor": {"@id": "https://projekt-ogrzewania.pl/#organization"},
      "affiliation": [
        {"@id": "https://projekt-ogrzewania.pl/#organization"},
        {"@id": "https://remont.biz.pl/#organization"},
        {"@id": "https://sobir.pl/#organization"}
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt-Ogrzewania.pl",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {"@id": "https://projekt-ogrzewania.pl/#robert-kucharski"}
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt-Ogrzewania.pl",
      "inLanguage": "pl-PL",
      "publisher": {"@id": "https://projekt-ogrzewania.pl/#organization"}
    }
  ]
}
</script>

<script>
(function () {
  "use strict";

  var root = document.getElementById("rk-loop-guide");
  if (!root) {
    return;
  }

  function byId(id) {
    return document.getElementById(id);
  }

  function clamp(value, minimum, maximum) {
    return Math.min(maximum, Math.max(minimum, value));
  }

  function numberFrom(id, fallback) {
    var element = byId(id);
    if (!element) {
      return fallback;
    }
    var parsed = Number(String(element.value).replace(",", "."));
    if (!Number.isFinite(parsed)) {
      return fallback;
    }
    return parsed;
  }

  function formatNumber(value, digits) {
    if (!Number.isFinite(value)) {
      return "—";
    }
    return new Intl.NumberFormat("pl-PL", {
      minimumFractionDigits: digits,
      maximumFractionDigits: digits
    }).format(value);
  }

  function allTrue(values) {
    return values.every(function (value) {
      return Boolean(value);
    });
  }

  function waterProperties(temperature) {
    var points = [
      {temperature: 5, density: 999.97, viscosity: 0.001519},
      {temperature: 10, density: 999.70, viscosity: 0.001307},
      {temperature: 20, density: 998.21, viscosity: 0.001002},
      {temperature: 30, density: 995.65, viscosity: 0.000798},
      {temperature: 40, density: 992.22, viscosity: 0.000653},
      {temperature: 50, density: 988.04, viscosity: 0.000547},
      {temperature: 60, density: 983.20, viscosity: 0.000466},
      {temperature: 70, density: 977.76, viscosity: 0.000404},
      {temperature: 80, density: 971.79, viscosity: 0.000355}
    ];

    var safeTemperature = clamp(temperature, 5, 80);
    var lower = points[0];
    var upper = points[points.length - 1];

    for (var index = 0; index < points.length - 1; index += 1) {
      var current = points[index];
      var next = points[index + 1];
      if (safeTemperature >= current.temperature) {
        if (safeTemperature <= next.temperature) {
          lower = current;
          upper = next;
          break;
        }
      }
    }

    var range = upper.temperature - lower.temperature;
    var share = 0;
    if (range > 0) {
      share = (safeTemperature - lower.temperature) / range;
    }

    return {
      density: lower.density + (upper.density - lower.density) * share,
      viscosity: lower.viscosity + (upper.viscosity - lower.viscosity) * share
    };
  }

  function frictionFactor(reynolds, diameter) {
    if (reynolds <= 0) {
      return 0;
    }
    if (reynolds < 2300) {
      return 64 / reynolds;
    }

    var roughness = 0.0000015;
    var relativeRoughness = roughness / diameter;
    var logarithmTerm = Math.pow(relativeRoughness / 3.7, 1.11) + 6.9 / reynolds;
    var denominator = -1.8 * Math.log10(logarithmTerm);
    return 1 / Math.pow(denominator, 2);
  }

  function hydraulicResult(length, flowLitresMinute, innerDiameterMillimetres, temperature, extraLoss) {
    var diameter = innerDiameterMillimetres / 1000;
    var volumeFlow = flowLitresMinute / 60000;
    var crossSection = Math.PI * Math.pow(diameter, 2) / 4;
    var velocity = 0;
    if (crossSection > 0) {
      velocity = volumeFlow / crossSection;
    }

    var properties = waterProperties(temperature);
    var reynolds = properties.density * velocity * diameter / properties.viscosity;
    var factor = frictionFactor(reynolds, diameter);
    var dynamicPressure = properties.density * Math.pow(velocity, 2) / 2;
    var pipeLoss = factor * length / diameter * dynamicPressure / 1000;

    return {
      velocity: velocity,
      reynolds: reynolds,
      factor: factor,
      pipeLoss: pipeLoss,
      totalLoss: pipeLoss + extraLoss
    };
  }

  function readInputs() {
    return {
      area: clamp(numberFrom("rk-loop-area", 24), 1, 500),
      spacing: clamp(numberFrom("rk-loop-spacing", 15), 5, 30),
      approach: clamp(numberFrom("rk-loop-approach", 6), 0, 60),
      geometry: clamp(numberFrom("rk-loop-geometry", 5), 0, 20),
      power: clamp(numberFrom("rk-loop-power", 1800), 50, 50000),
      delta: clamp(numberFrom("rk-loop-delta", 5), 2, 20),
      temperature: clamp(numberFrom("rk-loop-temperature", 30), 5, 80),
      diameter: clamp(numberFrom("rk-loop-pipe", 12), 8, 30),
      extraLoss: clamp(numberFrom("rk-loop-extra-loss", 3), 0, 50),
      budget: clamp(numberFrom("rk-loop-budget", 20), 3, 100),
      maxLength: clamp(numberFrom("rk-loop-max-length", 100), 30, 250),
      maxSpeed: clamp(numberFrom("rk-loop-max-speed", 0.6), 0.2, 1.5)
    };
  }

  function calculateModel(inputs) {
    var spacingMetres = inputs.spacing / 100;
    var idealFieldLength = inputs.area / spacingMetres;
    var fieldLength = idealFieldLength * (1 + inputs.geometry / 100);
    var totalFlow = inputs.power / (69.8 * inputs.delta);
    var unitPower = inputs.power / inputs.area;
    var candidates = [];
    var selected = null;

    for (var count = 1; count <= 16; count += 1) {
      var loopLength = fieldLength / count + 2 * inputs.approach;
      var loopFlow = totalFlow / count;
      var hydraulics = hydraulicResult(loopLength, loopFlow, inputs.diameter, inputs.temperature, inputs.extraLoss);
      var lengthPass = loopLength <= inputs.maxLength;
      var pressurePass = hydraulics.totalLoss <= inputs.budget;
      var speedPass = hydraulics.velocity <= inputs.maxSpeed;
      var passes = allTrue([lengthPass, pressurePass, speedPass]);
      var candidate = {
        count: count,
        length: loopLength,
        flow: loopFlow,
        velocity: hydraulics.velocity,
        pipeLoss: hydraulics.pipeLoss,
        loss: hydraulics.totalLoss,
        reynolds: hydraulics.reynolds,
        lengthPass: lengthPass,
        pressurePass: pressurePass,
        speedPass: speedPass,
        passes: passes
      };
      candidates.push(candidate);
      if (!selected) {
        if (passes) {
          selected = candidate;
        }
      }
    }

    var found = Boolean(selected);
    if (!selected) {
      selected = candidates[candidates.length - 1];
    }

    return {
      inputs: inputs,
      idealFieldLength: idealFieldLength,
      fieldLength: fieldLength,
      totalFlow: totalFlow,
      unitPower: unitPower,
      candidates: candidates,
      selected: selected,
      found: found,
      totalPipe: fieldLength + 2 * inputs.approach * selected.count,
      areaPerLoop: inputs.area / selected.count,
      fieldPerLoop: fieldLength / selected.count
    };
  }

  function setText(id, value) {
    var element = byId(id);
    if (element) {
      element.textContent = value;
    }
  }

  function candidateLabel(candidate) {
    if (candidate.passes) {
      return {text: "spełnia kryteria", className: "rk-loop-chip"};
    }
    var problems = [];
    if (!candidate.lengthPass) {
      problems.push("długość");
    }
    if (!candidate.pressurePass) {
      problems.push("ciśnienie");
    }
    if (!candidate.speedPass) {
      problems.push("prędkość");
    }
    return {text: problems.join(", "), className: "rk-loop-chip rk-loop-chip-bad"};
  }

  function appendCell(row, label, value) {
    var cell = document.createElement("td");
    cell.setAttribute("data-label", label);
    cell.textContent = value;
    row.appendChild(cell);
    return cell;
  }

  function renderCandidateTable(model) {
    var body = byId("rk-loop-candidate-body");
    if (!body) {
      return;
    }
    while (body.firstChild) {
      body.removeChild(body.firstChild);
    }

    var selectedIndex = model.selected.count - 1;
    var start = Math.max(0, selectedIndex - 2);
    var end = Math.min(model.candidates.length, start + 5);
    if (end - start < 5) {
      start = Math.max(0, end - 5);
    }

    for (var index = start; index < end; index += 1) {
      var candidate = model.candidates[index];
      var row = document.createElement("tr");
      if (candidate.count === model.selected.count) {
        row.classList.add(model.found ? "is-best" : "is-fail");
      } else if (!candidate.passes) {
        row.classList.add("is-fail");
      }

      appendCell(row, "Liczba pętli", String(candidate.count));
      appendCell(row, "Długość jednej", formatNumber(candidate.length, 1) + " m");
      appendCell(row, "Przepływ jednej", formatNumber(candidate.flow, 2) + " l/min");
      appendCell(row, "Prędkość", formatNumber(candidate.velocity, 2) + " m/s");
      appendCell(row, "Strata z dodatkami", formatNumber(candidate.loss, 1) + " kPa");
      var evaluationCell = document.createElement("td");
      evaluationCell.setAttribute("data-label", "Ocena");
      var chipData = candidateLabel(candidate);
      var chip = document.createElement("span");
      chip.className = chipData.className;
      chip.textContent = chipData.text;
      evaluationCell.appendChild(chip);
      row.appendChild(evaluationCell);
      body.appendChild(row);
    }
  }

  function renderPaths(model) {
    var paths = byId("rk-loop-paths");
    if (!paths) {
      return;
    }
    while (paths.firstChild) {
      paths.removeChild(paths.firstChild);
    }
    var visibleCount = Math.min(model.selected.count, 6);
    for (var index = 0; index < visibleCount; index += 1) {
      var path = document.createElement("div");
      path.className = "rk-loop-path";
      path.setAttribute("aria-hidden", "true");
      paths.appendChild(path);
    }
    setText("rk-loop-scheme-count", String(model.selected.count) + (model.selected.count === 1 ? " pętla" : " pętle"));
    setText("rk-loop-scheme-approach", "2 × " + formatNumber(model.inputs.approach, 1) + " m");
    setText("rk-loop-scheme-area", formatNumber(model.areaPerLoop, 1) + " m²");
    setText("rk-loop-scheme-field", formatNumber(model.fieldPerLoop, 1) + " m");
  }

  function drawChart(model) {
    var canvas = byId("rk-loop-chart");
    if (!canvas) {
      return;
    }
    var context = canvas.getContext("2d");
    if (!context) {
      return;
    }

    var rectangle = canvas.getBoundingClientRect();
    var width = Math.max(300, rectangle.width);
    var cssHeight = 340;
    if (window.innerWidth <= 700) {
      cssHeight = 300;
    }
    var pixelRatio = Math.min(2, window.devicePixelRatio || 1);
    canvas.width = Math.round(width * pixelRatio);
    canvas.height = Math.round(cssHeight * pixelRatio);
    canvas.style.height = cssHeight + "px";
    context.setTransform(pixelRatio, 0, 0, pixelRatio, 0, 0);
    context.clearRect(0, 0, width, cssHeight);

    var margin = {left: 53, right: 18, top: 20, bottom: 42};
    var plotWidth = width - margin.left - margin.right;
    var plotHeight = cssHeight - margin.top - margin.bottom;
    var rawMaximumLength = Math.max(150, model.inputs.maxLength + 20, model.selected.length + 20);
    var maximumLength = Math.min(260, Math.ceil(rawMaximumLength / 20) * 20);
    var diameters = [12, 13, 16];
    var colors = ["#078fbe", "#16836b", "#ff6a3d"];
    var maximumLoss = model.inputs.budget;

    diameters.forEach(function (diameter) {
      var edgeResult = hydraulicResult(maximumLength, model.selected.flow, diameter, model.inputs.temperature, model.inputs.extraLoss);
      maximumLoss = Math.max(maximumLoss, edgeResult.totalLoss);
    });
    maximumLoss = Math.max(10, Math.ceil(maximumLoss * 1.12 / 5) * 5);

    function xPosition(length) {
      return margin.left + length / maximumLength * plotWidth;
    }

    function yPosition(loss) {
      return margin.top + plotHeight - loss / maximumLoss * plotHeight;
    }

    context.strokeStyle = "#d9e6eb";
    context.fillStyle = "#6b7e8a";
    context.lineWidth = 1;
    context.font = "11px Inter, sans-serif";
    context.textAlign = "right";
    context.textBaseline = "middle";

    for (var yIndex = 0; yIndex <= 5; yIndex += 1) {
      var lossTick = maximumLoss * yIndex / 5;
      var y = yPosition(lossTick);
      context.beginPath();
      context.moveTo(margin.left, y);
      context.lineTo(width - margin.right, y);
      context.stroke();
      context.fillText(formatNumber(lossTick, 0), margin.left - 8, y);
    }

    context.textAlign = "center";
    context.textBaseline = "top";
    for (var xIndex = 0; xIndex <= 5; xIndex += 1) {
      var lengthTick = maximumLength * xIndex / 5;
      var x = xPosition(lengthTick);
      context.beginPath();
      context.moveTo(x, margin.top);
      context.lineTo(x, margin.top + plotHeight);
      context.stroke();
      context.fillText(formatNumber(lengthTick, 0), x, margin.top + plotHeight + 9);
    }

    context.save();
    context.translate(14, margin.top + plotHeight / 2);
    context.rotate(-Math.PI / 2);
    context.fillStyle = "#475967";
    context.font = "700 11px Inter, sans-serif";
    context.textAlign = "center";
    context.fillText("spadek ciśnienia [kPa]", 0, 0);
    context.restore();

    context.fillStyle = "#475967";
    context.font = "700 11px Inter, sans-serif";
    context.textAlign = "center";
    context.fillText("długość pętli [m]", margin.left + plotWidth / 2, cssHeight - 16);

    diameters.forEach(function (diameter, index) {
      context.beginPath();
      context.strokeStyle = colors[index];
      context.lineWidth = 3;
      for (var step = 0; step <= 80; step += 1) {
        var length = maximumLength * step / 80;
        var result = hydraulicResult(length, model.selected.flow, diameter, model.inputs.temperature, model.inputs.extraLoss);
        var x = xPosition(length);
        var y = yPosition(Math.min(maximumLoss, result.totalLoss));
        if (step === 0) {
          context.moveTo(x, y);
        } else {
          context.lineTo(x, y);
        }
      }
      context.stroke();
    });

    var budgetY = yPosition(model.inputs.budget);
    context.save();
    context.setLineDash([7, 5]);
    context.strokeStyle = "#d94b3d";
    context.lineWidth = 2;
    context.beginPath();
    context.moveTo(margin.left, budgetY);
    context.lineTo(width - margin.right, budgetY);
    context.stroke();
    context.restore();

    if (model.selected.length <= maximumLength) {
      var selectedX = xPosition(model.selected.length);
      context.save();
      context.setLineDash([4, 4]);
      context.strokeStyle = "#102536";
      context.lineWidth = 2;
      context.beginPath();
      context.moveTo(selectedX, margin.top);
      context.lineTo(selectedX, margin.top + plotHeight);
      context.stroke();
      context.restore();
      context.fillStyle = "#102536";
      context.font = "800 11px Inter, sans-serif";
      context.textAlign = selectedX > width - 95 ? "right" : "left";
      context.textBaseline = "top";
      var labelX = selectedX > width - 95 ? selectedX - 5 : selectedX + 5;
      context.fillText(formatNumber(model.selected.length, 1) + " m", labelX, margin.top + 4);
    }

    setText("rk-loop-chart-caption", "Porównanie dla przepływu " + formatNumber(model.selected.flow, 2) + " l/min na pętlę, wody o temperaturze " + formatNumber(model.inputs.temperature, 1) + "°C i oporów dodatkowych " + formatNumber(model.inputs.extraLoss, 1) + " kPa. Pionowy znacznik: " + formatNumber(model.selected.length, 1) + " m.");
  }

  function renderStatus(model) {
    var status = byId("rk-loop-status");
    if (!status) {
      return;
    }
    status.classList.remove("is-warning", "is-danger");

    var nearLimit = allTrue([
      model.selected.length > model.inputs.maxLength * 0.9,
      model.selected.loss > model.inputs.budget * 0.9
    ]);
    var oneNearLimit = model.selected.length > model.inputs.maxLength * 0.9;
    if (model.selected.loss > model.inputs.budget * 0.9) {
      oneNearLimit = true;
    }
    if (model.selected.velocity > model.inputs.maxSpeed * 0.9) {
      oneNearLimit = true;
    }

    if (!model.found) {
      status.classList.add("is-danger");
      setText("rk-loop-status-icon", "!");
      setText("rk-loop-status-title", "Nie znaleziono wariantu w zakresie do 16 pętli");
      setText("rk-loop-status-copy", "Sprawdź dane, zwiększ dostępny budżet tylko po weryfikacji pompy albo zmień koncepcję średnicy, rozstawu, geometrii lub podziału strefy.");
      return;
    }

    if (model.unitPower > 100) {
      status.classList.add("is-warning");
      setText("rk-loop-status-icon", "!");
      setText("rk-loop-status-title", "Hydraulika przechodzi, ale wymagana moc z podłogi jest wysoka");
      setText("rk-loop-status-copy", "Sprawdź cieplnie rozstaw, temperaturę powierzchni, okładzinę i realną powierzchnię czynną. Kalkulator nie potwierdza wydajności podłogi.");
      return;
    }

    if (oneNearLimit) {
      status.classList.add("is-warning");
      setText("rk-loop-status-icon", "!");
      setText("rk-loop-status-title", "Wariant mieści się blisko jednego z przyjętych kryteriów");
      setText("rk-loop-status-copy", "Pozostaw rezerwę na rzeczywistą trasę oraz opory elementów, których model nie zna. Zweryfikuj wynik po rozrysowaniu pętli.");
      return;
    }

    setText("rk-loop-status-icon", "✓");
    setText("rk-loop-status-title", "Wariant spełnia przyjęte kryteria wstępne");
    setText("rk-loop-status-copy", "To pierwszy podział mieszczący się w ustawionym limicie długości, ciśnienia i prędkości. Nadal wymaga sprawdzenia cieplnego oraz rozrysowania.");
    if (nearLimit) {
      status.classList.add("is-warning");
    }
  }

  function renderModel(model) {
    renderStatus(model);
    setText("rk-loop-result-count", String(model.selected.count));
    setText("rk-loop-result-length", formatNumber(model.selected.length, 1) + " m");
    setText("rk-loop-result-total", formatNumber(model.totalPipe, 1) + " m");
    setText("rk-loop-result-field", formatNumber(model.fieldLength, 1) + " m");
    setText("rk-loop-result-flow", formatNumber(model.selected.flow, 2) + " l/min");
    setText("rk-loop-result-flow-total", "łącznie " + formatNumber(model.totalFlow, 2) + " l/min");
    setText("rk-loop-result-speed", formatNumber(model.selected.velocity, 2) + " m/s");
    setText("rk-loop-result-loss", formatNumber(model.selected.loss, 1) + " kPa");
    setText("rk-loop-result-unit-power", formatNumber(model.unitPower, 1) + " W/m²");
    setText("rk-loop-result-area", formatNumber(model.areaPerLoop, 1) + " m² na pętlę");

    var note = "Rura w polu bez korekty: " + formatNumber(model.idealFieldLength, 1) + " m. Po korekcie geometrii: " + formatNumber(model.fieldLength, 1) + " m. Dobięgi wszystkich pętli: " + formatNumber(2 * model.inputs.approach * model.selected.count, 1) + " m. Analizator nie sprawdza cieplnej wydajności wybranego rozstawu.";
    setText("rk-loop-result-note", note);
    renderCandidateTable(model);
    renderPaths(model);
    drawChart(model);
  }

  function calculateAndRender() {
    var model = calculateModel(readInputs());
    root.rkLoopModel = model;
    renderModel(model);
  }

  function resetInputs() {
    var defaults = {
      "rk-loop-area": "24",
      "rk-loop-spacing": "15",
      "rk-loop-approach": "6",
      "rk-loop-geometry": "5",
      "rk-loop-power": "1800",
      "rk-loop-delta": "5",
      "rk-loop-temperature": "30",
      "rk-loop-pipe": "12",
      "rk-loop-extra-loss": "3",
      "rk-loop-budget": "20",
      "rk-loop-max-length": "100",
      "rk-loop-max-speed": "0.6"
    };
    Object.keys(defaults).forEach(function (id) {
      var field = byId(id);
      if (field) {
        field.value = defaults[id];
      }
    });
    calculateAndRender();
  }

  var calculateButton = byId("rk-loop-calculate");
  if (calculateButton) {
    calculateButton.addEventListener("click", calculateAndRender);
  }
  var resetButton = byId("rk-loop-reset");
  if (resetButton) {
    resetButton.addEventListener("click", resetInputs);
  }

  var fields = root.querySelectorAll(".rk-loop-tool input, .rk-loop-tool select");
  fields.forEach(function (field) {
    field.addEventListener("input", calculateAndRender);
    field.addEventListener("change", calculateAndRender);
  });

  var faqItems = root.querySelectorAll(".rk-loop-faq details");
  faqItems.forEach(function (item) {
    item.addEventListener("toggle", function () {
      if (!item.open) {
        return;
      }
      faqItems.forEach(function (other) {
        if (other !== item) {
          other.open = false;
        }
      });
    });
  });

  function updateProgress() {
    var progress = byId("rk-loop-progress");
    if (!progress) {
      return;
    }
    var rectangle = root.getBoundingClientRect();
    var scrollable = root.offsetHeight - window.innerHeight;
    var passed = -rectangle.top;
    var ratio = 0;
    if (scrollable > 0) {
      ratio = clamp(passed / scrollable, 0, 1);
    }
    progress.style.width = formatNumber(ratio * 100, 2).replace(",", ".") + "%";
  }

  window.addEventListener("scroll", updateProgress, {passive: true});

  var resizeTimer = null;
  window.addEventListener("resize", function () {
    window.clearTimeout(resizeTimer);
    resizeTimer = window.setTimeout(function () {
      if (root.rkLoopModel) {
        drawChart(root.rkLoopModel);
      }
    }, 120);
  });

  calculateAndRender();
  updateProgress();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/">Ile metrów podłogówki na jednej pętli?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Izolacja brzegowa i dylatacje w instalacji ogrzewania podłogowego.</title>
		<link>https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Wed, 13 Nov 2024 18:32:29 +0000</pubDate>
				<category><![CDATA[Budownictwo energooszczędne]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Izolacja termiczna]]></category>
		<category><![CDATA[Komfort cieplny]]></category>
		<category><![CDATA[Nowoczesne technologie grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Systemy ogrzewania]]></category>
		<category><![CDATA[dylatacje]]></category>
		<category><![CDATA[instalacja grzewcza]]></category>
		<category><![CDATA[izolacja brzegowa]]></category>
		<category><![CDATA[izolacja termiczna]]></category>
		<category><![CDATA[jastrych]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[montaż ogrzewania]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[peszel]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=1596</guid>

					<description><![CDATA[<p>Izolacja brzegowa i dylatacje to kluczowe elementy instalacji ogrzewania podłogowego, które zapewniają jej długowieczność oraz bezawaryjną pracę. Dowiedz się, jak prawidłowo układać taśmy brzegowe, projektować dylatacje oraz jakie materiały stosować, aby uniknąć problemów eksploatacyjnych, takich jak pęknięcia jastrychu czy utrata wydajności grzewczej. Ten artykuł to kompleksowy przewodnik po zasadach projektowania i montażu izolacji brzegowej oraz dylatacji w ogrzewaniu podłogowym.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">Izolacja brzegowa i dylatacje w instalacji ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-joint-guide {
    --rk-dark: #102536;
    --rk-navy: #14384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e9fbff;
    --rk-orange: #ff6d38;
    --rk-red: #df4537;
    --rk-yellow: #f2bd42;
    --rk-yellow-soft: #fff8df;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-purple: #6d5bd0;
    --rk-ink: #1f2937;
    --rk-text: #475968;
    --rk-muted: #6c7e8a;
    --rk-line: #d6e5ec;
    --rk-soft: #f4f9fb;
    --rk-warm: #fff3ec;
    --rk-white: #ffffff;
    width: 100%;
    max-width: 1180px;
    margin: 34px auto 72px;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;
    font-size: 18px;
    line-height: 1.76;
  }

  #rk-joint-guide,
  #rk-joint-guide * {
    box-sizing: border-box;
  }

  #rk-joint-guide img,
  #rk-joint-guide svg {
    max-width: 100%;
  }

  #rk-joint-guide button,
  #rk-joint-guide input,
  #rk-joint-guide select,
  #rk-joint-guide label,
  #rk-joint-guide summary,
  #rk-joint-guide a {
    font: inherit;
    -webkit-tap-highlight-color: transparent;
  }

  #rk-joint-guide a {
    color: var(--rk-blue);
    font-weight: 780;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }

  #rk-joint-guide p,
  #rk-joint-guide ul,
  #rk-joint-guide ol {
    margin-top: 0;
    margin-bottom: 1.15em;
  }

  #rk-joint-guide h2,
  #rk-joint-guide h3,
  #rk-joint-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 950;
    letter-spacing: -0.035em;
  }

  #rk-joint-guide h2 {
    margin-bottom: 18px;
    font-size: clamp(1.8rem, 4vw, 2.75rem);
    line-height: 1.08;
  }

  #rk-joint-guide h3 {
    margin-bottom: 10px;
    font-size: clamp(1.08rem, 2.2vw, 1.36rem);
    line-height: 1.22;
  }

  #rk-joint-guide .rk-joint-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-joint-guide .rk-joint-progress-track {
    position: sticky;
    z-index: 60;
    top: 0;
    height: 5px;
    background: rgba(214, 229, 236, 0.8);
  }

  #rk-joint-guide .rk-joint-progress {
    width: 0;
    height: 100%;
    background: linear-gradient(90deg, var(--rk-orange), var(--rk-cyan));
  }

  #rk-joint-guide .rk-joint-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(38px, 7vw, 74px);
    color: var(--rk-white);
    background:
      radial-gradient(circle at 89% 21%, rgba(255, 109, 56, 0.36), transparent 29%),
      radial-gradient(circle at 76% 90%, rgba(37, 199, 216, 0.22), transparent 34%),
      linear-gradient(126deg, #0f2233, #143d53 74%, #2b3743);
  }

  #rk-joint-guide .rk-joint-hero::after {
    content: "";
    position: absolute;
    right: -80px;
    bottom: -90px;
    width: 360px;
    height: 360px;
    border: 42px solid rgba(255, 255, 255, 0.045);
    border-radius: 50%;
  }

  #rk-joint-guide .rk-joint-hero-grid {
    position: relative;
    z-index: 2;
    display: grid;
    grid-template-columns: minmax(0, 1.35fr) minmax(280px, 0.65fr);
    gap: clamp(28px, 5vw, 64px);
    align-items: center;
  }

  #rk-joint-guide .rk-joint-eyebrow,
  #rk-joint-guide .rk-joint-kicker {
    display: inline-flex;
    gap: 9px;
    align-items: center;
    margin-bottom: 17px;
    color: var(--rk-orange);
    font-size: 0.72rem;
    font-weight: 950;
    letter-spacing: 0.09em;
    line-height: 1.35;
    text-transform: uppercase;
  }

  #rk-joint-guide .rk-joint-eyebrow {
    padding: 9px 14px;
    border: 1px solid rgba(255, 255, 255, 0.24);
    border-radius: 999px;
    color: #dffbff;
    background: rgba(255, 255, 255, 0.055);
  }

  #rk-joint-guide .rk-joint-eyebrow b {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 7px rgba(255, 109, 56, 0.16);
  }

  #rk-joint-guide .rk-joint-hero-title {
    max-width: 790px;
    margin-bottom: 22px;
    color: var(--rk-white);
    font-size: clamp(2.15rem, 5.2vw, 4.35rem);
    font-weight: 980;
    letter-spacing: -0.058em;
    line-height: 0.99;
  }

  #rk-joint-guide .rk-joint-hero-lead {
    max-width: 800px;
    margin-bottom: 25px;
    color: #d7e8ef;
    font-size: clamp(1rem, 2vw, 1.22rem);
    line-height: 1.7;
  }

  #rk-joint-guide .rk-joint-meta {
    display: flex;
    flex-wrap: wrap;
    gap: 11px 24px;
    color: #c7dbe4;
    font-size: 0.72rem;
    font-weight: 800;
  }

  #rk-joint-guide .rk-joint-meta span {
    display: inline-flex;
    gap: 8px;
    align-items: center;
  }

  #rk-joint-guide .rk-joint-meta i {
    width: 7px;
    height: 7px;
    border-radius: 50%;
    background: var(--rk-orange);
  }

  #rk-joint-guide .rk-joint-hero-panel {
    position: relative;
    padding: 25px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 23px;
    background: rgba(255, 255, 255, 0.075);
    backdrop-filter: blur(7px);
  }

  #rk-joint-guide .rk-joint-hero-panel small {
    display: block;
    margin-bottom: 15px;
    color: #d9edf4;
    font-weight: 850;
  }

  #rk-joint-guide .rk-joint-mini-plan {
    position: relative;
    height: 245px;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, 0.18);
    border-radius: 17px;
    background: rgba(8, 29, 43, 0.55);
  }

  #rk-joint-guide .rk-joint-mini-room {
    position: absolute;
    inset: 27px;
    border: 8px solid var(--rk-cyan);
    border-radius: 8px;
  }

  #rk-joint-guide .rk-joint-mini-joint {
    position: absolute;
    top: 27px;
    bottom: 27px;
    left: 57%;
    width: 8px;
    background: repeating-linear-gradient(180deg, var(--rk-orange) 0 14px, transparent 14px 24px);
  }

  #rk-joint-guide .rk-joint-mini-label {
    position: absolute;
    right: 20px;
    bottom: 15px;
    padding: 5px 9px;
    border-radius: 8px;
    color: var(--rk-white);
    background: rgba(16, 37, 54, 0.86);
    font-size: 0.64rem;
    font-weight: 900;
  }

  #rk-joint-guide .rk-joint-nav {
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
    padding: 17px clamp(22px, 5vw, 58px);
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
  }

  #rk-joint-guide .rk-joint-nav a {
    padding: 8px 13px;
    border: 1px solid #c9dfe7;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-soft);
    font-size: 0.69rem;
    font-weight: 900;
    line-height: 1.35;
    text-decoration: none;
  }

  #rk-joint-guide .rk-joint-nav a:hover,
  #rk-joint-guide .rk-joint-nav a:focus-visible {
    color: var(--rk-white);
    border-color: var(--rk-blue);
    background: var(--rk-blue);
  }

  #rk-joint-guide .rk-joint-body {
    padding: clamp(30px, 6vw, 68px);
  }

  #rk-joint-guide .rk-joint-section {
    scroll-margin-top: 30px;
    margin-bottom: clamp(58px, 9vw, 100px);
  }

  #rk-joint-guide .rk-joint-lead {
    max-width: 930px;
    color: var(--rk-text);
    font-size: clamp(1.02rem, 2vw, 1.2rem);
    line-height: 1.82;
  }

  #rk-joint-guide .rk-joint-dropcap::first-letter {
    float: left;
    margin: 10px 10px 0 0;
    color: var(--rk-orange);
    font-size: 4.4rem;
    font-weight: 950;
    line-height: 0.75;
  }

  #rk-joint-guide .rk-joint-answer {
    display: grid;
    grid-template-columns: minmax(0, 1.25fr) minmax(260px, 0.75fr);
    gap: 0;
    overflow: hidden;
    margin-top: 26px;
    border: 1px solid var(--rk-line);
    border-radius: 24px;
  }

  #rk-joint-guide .rk-joint-answer-main,
  #rk-joint-guide .rk-joint-answer-side {
    padding: clamp(25px, 4vw, 38px);
  }

  #rk-joint-guide .rk-joint-answer-main {
    background: var(--rk-soft);
  }

  #rk-joint-guide .rk-joint-answer-side {
    color: #4f4637;
    border-left: 1px solid #f1d993;
    background: var(--rk-yellow-soft);
  }

  #rk-joint-guide .rk-joint-answer p:last-child,
  #rk-joint-guide .rk-joint-card p:last-child,
  #rk-joint-guide .rk-joint-callout p:last-child {
    margin-bottom: 0;
  }

  #rk-joint-guide .rk-joint-grid-2,
  #rk-joint-guide .rk-joint-grid-3,
  #rk-joint-guide .rk-joint-grid-4 {
    display: grid;
    gap: 18px;
  }

  #rk-joint-guide .rk-joint-grid-2 {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  #rk-joint-guide .rk-joint-grid-3 {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }

  #rk-joint-guide .rk-joint-grid-4 {
    grid-template-columns: repeat(4, minmax(0, 1fr));
  }

  #rk-joint-guide .rk-joint-card {
    min-width: 0;
    padding: 25px;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-white);
    box-shadow: 0 10px 28px rgba(16, 37, 54, 0.055);
  }

  #rk-joint-guide .rk-joint-card-number {
    display: inline-flex;
    min-width: 44px;
    height: 44px;
    align-items: center;
    justify-content: center;
    margin-bottom: 17px;
    padding: 0 10px;
    border-radius: 13px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-blue), var(--rk-cyan));
    font-size: 0.72rem;
    font-weight: 950;
  }

  #rk-joint-guide .rk-joint-callout {
    margin-top: 24px;
    padding: 24px 27px;
    border-left: 6px solid var(--rk-cyan);
    border-radius: 0 18px 18px 0;
    background: var(--rk-cyan-soft);
  }

  #rk-joint-guide .rk-joint-callout.is-warning {
    border-left-color: var(--rk-orange);
    background: var(--rk-warm);
  }

  #rk-joint-guide .rk-joint-table-wrap {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 20px;
    background: var(--rk-white);
  }

  #rk-joint-guide table {
    width: 100%;
    margin: 0;
    border-collapse: collapse;
    table-layout: fixed;
  }

  #rk-joint-guide th,
  #rk-joint-guide td {
    padding: 17px 15px;
    border: 0;
    border-bottom: 1px solid var(--rk-line);
    vertical-align: top;
    text-align: left;
    overflow-wrap: anywhere;
  }

  #rk-joint-guide th {
    color: var(--rk-white);
    background: var(--rk-dark);
    font-size: 0.7rem;
    font-weight: 900;
    letter-spacing: 0.02em;
    line-height: 1.4;
  }

  #rk-joint-guide td {
    color: var(--rk-text);
    font-size: 0.83rem;
    line-height: 1.6;
  }

  #rk-joint-guide tr:last-child td {
    border-bottom: 0;
  }

  #rk-joint-guide tbody tr:nth-child(even) td {
    background: var(--rk-soft);
  }

  #rk-joint-guide .rk-joint-diagram {
    overflow: hidden;
    margin-top: 26px;
    padding: clamp(20px, 4vw, 35px);
    border: 1px solid var(--rk-line);
    border-radius: 24px;
    background:
      linear-gradient(rgba(7, 143, 190, 0.035) 1px, transparent 1px),
      linear-gradient(90deg, rgba(7, 143, 190, 0.035) 1px, transparent 1px),
      var(--rk-soft);
    background-size: 24px 24px;
  }

  #rk-joint-guide .rk-joint-diagram-caption {
    margin-top: 13px;
    color: var(--rk-muted);
    font-size: 0.72rem;
    line-height: 1.55;
  }

  #rk-joint-guide .rk-joint-audit {
    overflow: hidden;
    border: 1px solid #bcdde8;
    border-radius: 28px;
    background: var(--rk-white);
    box-shadow: 0 20px 48px rgba(16, 37, 54, 0.09);
  }

  #rk-joint-guide .rk-joint-audit-head {
    padding: clamp(28px, 5vw, 48px);
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 15%, rgba(255, 109, 56, 0.35), transparent 29%),
      linear-gradient(125deg, var(--rk-dark), #164a62);
  }

  #rk-joint-guide .rk-joint-audit-head h2,
  #rk-joint-guide .rk-joint-audit-head p {
    color: var(--rk-white);
  }

  #rk-joint-guide .rk-joint-audit-head p {
    max-width: 900px;
    margin-bottom: 0;
    color: #d8eaf1;
  }

  #rk-joint-guide .rk-joint-audit-layout {
    display: grid;
    grid-template-columns: minmax(300px, 0.8fr) minmax(0, 1.2fr);
  }

  #rk-joint-guide .rk-joint-audit-form {
    padding: clamp(25px, 4vw, 38px);
    border-right: 1px solid var(--rk-line);
    background: var(--rk-soft);
  }

  #rk-joint-guide .rk-joint-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 14px;
  }

  #rk-joint-guide .rk-joint-field {
    min-width: 0;
  }

  #rk-joint-guide .rk-joint-field.is-full {
    grid-column: 1 / -1;
  }

  #rk-joint-guide .rk-joint-field label {
    display: block;
    min-height: 2.6em;
    margin-bottom: 6px;
    color: var(--rk-dark);
    font-size: 0.7rem;
    font-weight: 900;
    line-height: 1.3;
  }

  #rk-joint-guide .rk-joint-field input,
  #rk-joint-guide .rk-joint-field select {
    width: 100%;
    min-height: 48px;
    padding: 10px 12px;
    border: 1px solid #bdd4de;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: 0.82rem;
    font-weight: 760;
    outline: none;
  }

  #rk-joint-guide .rk-joint-field input:focus,
  #rk-joint-guide .rk-joint-field select:focus {
    border-color: var(--rk-blue);
    box-shadow: 0 0 0 4px rgba(7, 143, 190, 0.12);
  }

  #rk-joint-guide .rk-joint-checks {
    display: grid;
    gap: 10px;
    margin-top: 18px;
  }

  #rk-joint-guide .rk-joint-check {
    display: grid;
    grid-template-columns: auto 1fr;
    gap: 11px;
    align-items: start;
    padding: 12px;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    background: var(--rk-white);
    cursor: pointer;
  }

  #rk-joint-guide .rk-joint-check input {
    width: 20px;
    height: 20px;
    margin-top: 2px;
    accent-color: var(--rk-blue);
  }

  #rk-joint-guide .rk-joint-check span {
    color: var(--rk-text);
    font-size: 0.75rem;
    font-weight: 760;
    line-height: 1.45;
  }

  #rk-joint-guide .rk-joint-audit-reset {
    width: 100%;
    min-height: 48px;
    margin-top: 17px;
    padding: 11px 16px;
    border: 1px solid #bdd4de;
    border-radius: 12px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-weight: 900;
    cursor: pointer;
  }

  #rk-joint-guide .rk-joint-audit-reset:hover,
  #rk-joint-guide .rk-joint-audit-reset:focus-visible {
    color: var(--rk-white);
    border-color: var(--rk-blue);
    background: var(--rk-blue);
  }

  #rk-joint-guide .rk-joint-audit-output {
    min-width: 0;
    padding: clamp(25px, 4vw, 42px);
  }

  #rk-joint-guide .rk-joint-metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-bottom: 20px;
  }

  #rk-joint-guide .rk-joint-metric {
    min-width: 0;
    padding: 17px;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    background: var(--rk-soft);
  }

  #rk-joint-guide .rk-joint-metric small {
    display: block;
    min-height: 2.7em;
    color: var(--rk-muted);
    font-size: 0.65rem;
    font-weight: 850;
    line-height: 1.35;
  }

  #rk-joint-guide .rk-joint-metric strong {
    display: block;
    margin-top: 6px;
    color: var(--rk-dark);
    font-size: clamp(1.15rem, 2.6vw, 1.75rem);
    font-weight: 950;
    line-height: 1.15;
  }

  #rk-joint-guide .rk-joint-audit-status {
    margin-bottom: 20px;
    padding: 18px 20px;
    border-left: 6px solid var(--rk-green);
    border-radius: 0 15px 15px 0;
    background: var(--rk-green-soft);
  }

  #rk-joint-guide .rk-joint-audit-status.is-warning {
    border-left-color: var(--rk-yellow);
    background: var(--rk-yellow-soft);
  }

  #rk-joint-guide .rk-joint-audit-status.is-danger {
    border-left-color: var(--rk-red);
    background: #fff0ef;
  }

  #rk-joint-guide .rk-joint-audit-status strong,
  #rk-joint-guide .rk-joint-audit-status span {
    display: block;
  }

  #rk-joint-guide .rk-joint-audit-status span {
    margin-top: 4px;
    color: var(--rk-text);
    font-size: 0.77rem;
    line-height: 1.55;
  }

  #rk-joint-guide .rk-joint-audit-plan {
    overflow: hidden;
    margin-bottom: 20px;
    padding: 14px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    background: var(--rk-soft);
  }

  #rk-joint-guide .rk-joint-audit-plan svg {
    display: block;
    width: 100%;
    height: auto;
  }

  #rk-joint-guide .rk-joint-audit-list {
    display: grid;
    gap: 10px;
    margin: 0;
    padding: 0;
    list-style: none;
  }

  #rk-joint-guide .rk-joint-audit-list li {
    position: relative;
    margin: 0;
    padding: 12px 14px 12px 43px;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    color: var(--rk-text);
    background: var(--rk-white);
    font-size: 0.77rem;
    line-height: 1.5;
  }

  #rk-joint-guide .rk-joint-audit-list li::before {
    content: "!";
    position: absolute;
    top: 12px;
    left: 13px;
    display: inline-flex;
    width: 21px;
    height: 21px;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: 0.66rem;
    font-weight: 950;
  }

  #rk-joint-guide .rk-joint-tool-note {
    padding: 18px clamp(25px, 4vw, 42px);
    border-top: 1px solid var(--rk-line);
    color: var(--rk-muted);
    background: #fbfdfe;
    font-size: 0.69rem;
    line-height: 1.55;
  }

  #rk-joint-guide .rk-joint-inline-cta,
  #rk-joint-guide .rk-joint-final-cta {
    overflow: hidden;
    border-radius: 27px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 16%, rgba(255, 109, 56, 0.39), transparent 28%),
      linear-gradient(125deg, var(--rk-dark), #17475e);
  }

  #rk-joint-guide .rk-joint-inline-cta {
    margin-top: 25px;
    padding: clamp(28px, 5vw, 48px);
  }

  #rk-joint-guide .rk-joint-final-cta {
    margin-top: clamp(55px, 8vw, 88px);
    padding: clamp(31px, 5vw, 55px);
  }

  #rk-joint-guide .rk-joint-inline-cta h3,
  #rk-joint-guide .rk-joint-final-cta h2 {
    max-width: 880px;
    color: var(--rk-white);
  }

  #rk-joint-guide .rk-joint-inline-cta p,
  #rk-joint-guide .rk-joint-final-cta p {
    max-width: 920px;
    color: #d7e9f1;
  }

  #rk-joint-guide .rk-joint-cta-button {
    display: inline-flex;
    min-height: 54px;
    align-items: center;
    justify-content: center;
    margin-top: 8px;
    padding: 13px 23px;
    border-radius: 14px;
    color: var(--rk-white);
    background: linear-gradient(135deg, var(--rk-orange), #ef4937);
    box-shadow: 0 14px 30px rgba(239, 73, 55, 0.25);
    font-weight: 950;
    line-height: 1.35;
    text-align: center;
    text-decoration: none;
  }

  #rk-joint-guide .rk-joint-cta-button:hover,
  #rk-joint-guide .rk-joint-cta-button:focus-visible {
    color: var(--rk-white);
    transform: translateY(-2px);
    box-shadow: 0 18px 36px rgba(239, 73, 55, 0.32);
  }

  #rk-joint-guide .rk-joint-disclosure {
    display: block;
    margin-top: 12px;
    color: #b9d0db;
    font-size: 0.65rem;
    line-height: 1.5;
  }

  #rk-joint-guide .rk-joint-steps {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
    counter-reset: joint-step;
  }

  #rk-joint-guide .rk-joint-step {
    position: relative;
    min-width: 0;
    padding: 25px 25px 25px 78px;
    border: 1px solid var(--rk-line);
    border-radius: 19px;
    background: var(--rk-white);
  }

  #rk-joint-guide .rk-joint-step::before {
    counter-increment: joint-step;
    content: counter(joint-step, decimal-leading-zero);
    position: absolute;
    top: 24px;
    left: 22px;
    display: inline-flex;
    width: 42px;
    height: 42px;
    align-items: center;
    justify-content: center;
    border-radius: 13px;
    color: var(--rk-white);
    background: var(--rk-dark);
    font-size: 0.68rem;
    font-weight: 950;
  }

  #rk-joint-guide .rk-joint-step p {
    margin-bottom: 0;
    color: var(--rk-text);
  }

  #rk-joint-guide .rk-joint-error {
    position: relative;
    padding: 26px;
    border: 1px solid #f0cbc5;
    border-radius: 20px;
    background: #fff9f8;
  }

  #rk-joint-guide .rk-joint-error b {
    display: inline-block;
    margin-bottom: 11px;
    color: var(--rk-red);
    font-size: 0.68rem;
    letter-spacing: 0.08em;
  }

  #rk-joint-guide .rk-joint-checklist {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 13px;
    margin: 22px 0 0;
    padding: 0;
    list-style: none;
  }

  #rk-joint-guide .rk-joint-checklist li {
    position: relative;
    margin: 0;
    padding: 17px 17px 17px 51px;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    color: var(--rk-text);
    background: var(--rk-soft);
  }

  #rk-joint-guide .rk-joint-checklist li::before {
    content: "✓";
    position: absolute;
    top: 17px;
    left: 17px;
    display: inline-flex;
    width: 23px;
    height: 23px;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-green);
    font-size: 0.69rem;
    font-weight: 950;
  }

  #rk-joint-guide .rk-joint-faq {
    display: grid;
    gap: 12px;
  }

  #rk-joint-guide .rk-joint-faq details {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
    background: var(--rk-white);
  }

  #rk-joint-guide .rk-joint-faq summary {
    position: relative;
    padding: 19px 55px 19px 20px;
    color: var(--rk-dark);
    font-weight: 900;
    line-height: 1.45;
    cursor: pointer;
    list-style: none;
  }

  #rk-joint-guide .rk-joint-faq summary::-webkit-details-marker {
    display: none;
  }

  #rk-joint-guide .rk-joint-faq summary::after {
    content: "+";
    position: absolute;
    top: 50%;
    right: 18px;
    display: inline-flex;
    width: 28px;
    height: 28px;
    align-items: center;
    justify-content: center;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-blue);
    transform: translateY(-50%);
  }

  #rk-joint-guide .rk-joint-faq details[open] summary::after {
    content: "−";
  }

  #rk-joint-guide .rk-joint-faq-answer {
    padding: 0 20px 20px;
    color: var(--rk-text);
  }

  #rk-joint-guide .rk-joint-faq-answer p:last-child {
    margin-bottom: 0;
  }

  #rk-joint-guide .rk-joint-sources {
    padding: 24px 27px;
    border: 1px solid var(--rk-line);
    border-radius: 18px;
    color: var(--rk-text);
    background: var(--rk-soft);
    font-size: 0.76rem;
    line-height: 1.65;
  }

  #rk-joint-guide .rk-joint-sources strong {
    display: block;
    margin-bottom: 8px;
    color: var(--rk-dark);
  }

  #rk-joint-guide .rk-joint-author {
    position: relative;
    overflow: hidden;
    margin-top: clamp(55px, 8vw, 88px);
    border: 1px solid var(--rk-line);
    border-radius: 27px;
    background: var(--rk-white);
    box-shadow: 0 20px 50px rgba(16, 37, 54, 0.09);
  }

  #rk-joint-guide .rk-joint-author > input {
    position: absolute;
    width: 1px;
    height: 1px;
    opacity: 0;
    pointer-events: none;
  }

  #rk-joint-guide .rk-joint-author-head {
    display: flex;
    gap: 20px;
    align-items: center;
    justify-content: space-between;
    padding: clamp(27px, 5vw, 44px);
    color: var(--rk-white);
    border-bottom: 5px solid var(--rk-cyan);
    background: var(--rk-dark);
  }

  #rk-joint-guide .rk-joint-author-head h2,
  #rk-joint-guide .rk-joint-author-head p {
    color: var(--rk-white);
  }

  #rk-joint-guide .rk-joint-author-head h2 {
    margin-bottom: 5px;
  }

  #rk-joint-guide .rk-joint-author-head p {
    margin-bottom: 0;
    color: #d7e9f1;
  }

  #rk-joint-guide .rk-joint-author-mark {
    flex: 0 0 auto;
    padding: 12px 17px;
    border: 1px solid rgba(37, 199, 216, 0.4);
    border-radius: 15px;
    color: #79f1ff;
    font-size: 0.72rem;
    font-weight: 950;
    letter-spacing: 0.08em;
  }

  #rk-joint-guide .rk-joint-author-layout {
    display: grid;
    grid-template-columns: minmax(270px, 0.64fr) minmax(0, 1.36fr);
  }

  #rk-joint-guide .rk-joint-author-side {
    padding: clamp(30px, 5vw, 48px);
    border-right: 1px solid var(--rk-line);
    background: var(--rk-soft);
    text-align: center;
  }

  #rk-joint-guide .rk-joint-author-photo {
    width: min(205px, 74%);
    margin: 0 auto 22px;
    overflow: hidden;
    border: 8px solid var(--rk-white);
    border-radius: 50%;
    box-shadow: 0 16px 36px rgba(16, 37, 54, 0.14);
    aspect-ratio: 1;
  }

  #rk-joint-guide .rk-joint-author-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }

  #rk-joint-guide .rk-joint-author-name {
    margin-bottom: 7px;
    color: var(--rk-dark);
    font-size: 1.5rem;
    font-weight: 950;
    letter-spacing: -0.04em;
    line-height: 1.1;
  }

  #rk-joint-guide .rk-joint-author-role {
    color: var(--rk-blue);
    font-size: 0.7rem;
    font-weight: 950;
    letter-spacing: 0.07em;
    line-height: 1.55;
    text-transform: uppercase;
  }

  #rk-joint-guide .rk-joint-author-main {
    padding: clamp(30px, 5vw, 48px);
  }

  #rk-joint-guide .rk-joint-author-quote {
    position: relative;
    margin: 0 0 24px;
    padding: 24px 24px 24px 68px;
    border: 0;
    border-radius: 18px;
    background: var(--rk-cyan-soft);
  }

  #rk-joint-guide .rk-joint-author-quote::before {
    content: "“";
    position: absolute;
    top: 3px;
    left: 20px;
    color: var(--rk-cyan);
    font-size: 4rem;
    font-weight: 950;
    line-height: 1;
  }

  #rk-joint-guide .rk-joint-author-quote p {
    margin-bottom: 0;
    color: var(--rk-dark);
    font-size: 1.01rem;
    font-style: italic;
    font-weight: 800;
    line-height: 1.75;
  }

  #rk-joint-guide .rk-joint-author-tabs {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 15px 15px 0 0;
  }

  #rk-joint-guide .rk-joint-author-tab {
    padding: 14px 10px;
    color: var(--rk-muted);
    background: var(--rk-soft);
    font-size: 0.7rem;
    font-weight: 900;
    line-height: 1.35;
    text-align: center;
    text-transform: uppercase;
    cursor: pointer;
  }

  #rk-joint-guide .rk-joint-author-tab + .rk-joint-author-tab {
    border-left: 1px solid var(--rk-line);
  }

  #rk-joint-guide .rk-joint-author-panel {
    display: none;
    min-height: 176px;
    padding: 25px;
    border: 1px solid var(--rk-line);
    border-top: 0;
    border-radius: 0 0 15px 15px;
  }

  #rk-joint-guide .rk-joint-author-panel p:last-child {
    margin-bottom: 0;
  }

  #rk-joint-author-about:checked ~ .rk-joint-author-layout .rk-joint-author-panel-about,
  #rk-joint-author-exp:checked ~ .rk-joint-author-layout .rk-joint-author-panel-exp,
  #rk-joint-author-sites:checked ~ .rk-joint-author-layout .rk-joint-author-panel-sites {
    display: block;
  }

  #rk-joint-author-about:checked ~ .rk-joint-author-layout label[for="rk-joint-author-about"],
  #rk-joint-author-exp:checked ~ .rk-joint-author-layout label[for="rk-joint-author-exp"],
  #rk-joint-author-sites:checked ~ .rk-joint-author-layout label[for="rk-joint-author-sites"] {
    color: var(--rk-blue);
    background: var(--rk-white);
    box-shadow: inset 0 -5px 0 var(--rk-blue);
  }

  #rk-joint-guide .rk-joint-site-links {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-top: 14px;
  }

  #rk-joint-guide .rk-joint-site-links a {
    padding: 8px 13px;
    border: 1px solid #c6dbe4;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: 0.74rem;
    font-weight: 900;
    text-decoration: none;
  }

  #rk-joint-guide .rk-joint-site-links a:hover,
  #rk-joint-guide .rk-joint-site-links a:focus-visible {
    color: var(--rk-white);
    border-color: var(--rk-blue);
    background: var(--rk-blue);
  }

  @media (max-width: 980px) {
    #rk-joint-guide .rk-joint-hero-grid,
    #rk-joint-guide .rk-joint-answer,
    #rk-joint-guide .rk-joint-audit-layout,
    #rk-joint-guide .rk-joint-author-layout {
      grid-template-columns: 1fr;
    }

    #rk-joint-guide .rk-joint-answer-side,
    #rk-joint-guide .rk-joint-audit-form,
    #rk-joint-guide .rk-joint-author-side {
      border-right: 0;
      border-left: 0;
      border-bottom: 1px solid var(--rk-line);
    }

    #rk-joint-guide .rk-joint-grid-4,
    #rk-joint-guide .rk-joint-grid-3 {
      grid-template-columns: repeat(2, minmax(0, 1fr));
    }
  }

  @media (max-width: 720px) {
    #rk-joint-guide {
      margin-top: 20px;
      font-size: 16px;
    }

    #rk-joint-guide .rk-joint-shell {
      border-radius: 20px;
    }

    #rk-joint-guide .rk-joint-hero,
    #rk-joint-guide .rk-joint-body {
      padding-right: 21px;
      padding-left: 21px;
    }

    #rk-joint-guide .rk-joint-nav {
      width: auto;
      margin: 18px 20px 0;
      padding: 20px;
      gap: 10px;
      border: 1px solid var(--rk-line);
      border-radius: 20px;
      background: var(--rk-soft);
    }

    #rk-joint-guide .rk-joint-nav::before {
      content: "NA SKRÓTY";
      flex: 0 0 100%;
      margin-bottom: 4px;
      color: var(--rk-dark);
      font-size: 0.75rem;
      font-weight: 900;
      letter-spacing: 0.08em;
      line-height: 1.3;
    }

    #rk-joint-guide .rk-joint-grid-2,
    #rk-joint-guide .rk-joint-grid-3,
    #rk-joint-guide .rk-joint-grid-4,
    #rk-joint-guide .rk-joint-steps,
    #rk-joint-guide .rk-joint-checklist,
    #rk-joint-guide .rk-joint-metrics {
      grid-template-columns: 1fr;
    }

    #rk-joint-guide .rk-joint-fields {
      grid-template-columns: 1fr;
    }

    #rk-joint-guide .rk-joint-field.is-full {
      grid-column: auto;
    }

    #rk-joint-guide .rk-joint-field label,
    #rk-joint-guide .rk-joint-metric small {
      min-height: 0;
    }

    #rk-joint-guide .rk-joint-step {
      padding: 76px 22px 23px;
    }

    #rk-joint-guide .rk-joint-step::before {
      top: 20px;
      left: 21px;
    }

    #rk-joint-guide .rk-joint-author-head {
      align-items: flex-start;
      flex-direction: column;
    }

    #rk-joint-guide .rk-joint-author-main {
      padding-right: 20px;
      padding-left: 20px;
    }

    #rk-joint-guide .rk-joint-author-quote {
      padding: 58px 20px 21px;
    }

    #rk-joint-guide .rk-joint-author-quote::before {
      top: 0;
      left: 18px;
    }

    #rk-joint-guide .rk-joint-author-tabs {
      grid-template-columns: 1fr;
      border-radius: 15px 15px 0 0;
    }

    #rk-joint-guide .rk-joint-author-tab + .rk-joint-author-tab {
      border-top: 1px solid var(--rk-line);
      border-left: 0;
    }

    #rk-joint-guide .rk-joint-table-wrap {
      overflow: visible;
      border: 0;
      background: transparent;
    }

    #rk-joint-guide table,
    #rk-joint-guide tbody,
    #rk-joint-guide tr,
    #rk-joint-guide td {
      display: block;
      width: 100%;
    }

    #rk-joint-guide thead {
      position: absolute;
      width: 1px;
      height: 1px;
      overflow: hidden;
      clip: rect(0 0 0 0);
      white-space: nowrap;
    }

    #rk-joint-guide tbody {
      display: grid;
      gap: 13px;
    }

    #rk-joint-guide tbody tr {
      overflow: hidden;
      border: 1px solid var(--rk-line);
      border-radius: 16px;
      background: var(--rk-white);
      box-shadow: 0 8px 22px rgba(16, 37, 54, 0.05);
    }

    #rk-joint-guide td,
    #rk-joint-guide tbody tr:nth-child(even) td {
      display: grid;
      grid-template-columns: minmax(110px, 0.8fr) minmax(0, 1.2fr);
      gap: 12px;
      align-items: start;
      padding: 13px 15px;
      border-bottom: 1px solid var(--rk-line);
      background: var(--rk-white);
    }

    #rk-joint-guide td:last-child {
      border-bottom: 0;
    }

    #rk-joint-guide td::before {
      content: attr(data-label);
      color: var(--rk-dark);
      font-size: 0.69rem;
      font-weight: 900;
      line-height: 1.45;
    }
  }

  @media (max-width: 470px) {
    #rk-joint-guide .rk-joint-hero-title {
      font-size: 2.1rem;
    }

    #rk-joint-guide td,
    #rk-joint-guide tbody tr:nth-child(even) td {
      grid-template-columns: 1fr;
      gap: 4px;
    }
  }

  @media (prefers-reduced-motion: reduce) {
    #rk-joint-guide *,
    #rk-joint-guide *::before,
    #rk-joint-guide *::after {
      scroll-behavior: auto !important;
      transition-duration: 0.01ms !important;
    }
  }
</style>

<article id="rk-joint-guide" data-rk-joint-version="2026-08-26" aria-label="Izolacja brzegowa i dylatacje w instalacji ogrzewania podłogowego">
  <div class="rk-joint-shell">
    <div class="rk-joint-progress-track" aria-hidden="true"><div class="rk-joint-progress"></div></div>

    <header class="rk-joint-hero">
      <div class="rk-joint-hero-grid">
        <div>
          <span class="rk-joint-eyebrow"><b aria-hidden="true"></b> Poradnik wykonawczy • jastrych i pętle</span>
          <div class="rk-joint-hero-title" role="heading" aria-level="2">Izolacja brzegowa i dylatacje w instalacji ogrzewania podłogowego</div>
          <p class="rk-joint-hero-lead">Jak oddzielić jastrych od ścian, podzielić podłogę na pola, przeprowadzić rury przez szczeliny i przenieść dylatacje na okładzinę, żeby nie naprawiać później pękniętych płytek oraz zerwanych fug.</p>
          <div class="rk-joint-meta">
            <span><i aria-hidden="true"></i> Autor: Robert Kucharski</span>
            <span><i aria-hidden="true"></i> Aktualizacja: 26 sierpnia 2026 r.</span>
            <span><i aria-hidden="true"></i> PN-EN 1264-4 • ISO 11855-5</span>
          </div>
        </div>

        <aside class="rk-joint-hero-panel" aria-label="Schemat podziału pola jastrychu">
          <small>Taśma brzegowa i szczelina ruchowa pełnią różne zadania</small>
          <div class="rk-joint-mini-plan" aria-hidden="true">
            <div class="rk-joint-mini-room"></div>
            <div class="rk-joint-mini-joint"></div>
            <div class="rk-joint-mini-label">pole A&nbsp;&nbsp;│&nbsp;&nbsp;pole B</div>
          </div>
        </aside>
      </div>
    </header>

    <nav class="rk-joint-nav" aria-label="Spis treści artykułu">
      <a href="#rk-joint-answer">Szybka odpowiedź</a>
      <a href="#rk-joint-terms">Rodzaje szczelin</a>
      <a href="#rk-joint-edge">Taśma brzegowa</a>
      <a href="#rk-joint-fields">Podział pól</a>
      <a href="#rk-joint-audit">Audyt pola</a>
      <a href="#rk-joint-pipes">Przejścia rur</a>
      <a href="#rk-joint-covering">Okładziny</a>
      <a href="#rk-joint-howto">Wykonanie</a>
      <a href="#rk-joint-errors">Błędy</a>
      <a href="#rk-joint-faq">FAQ</a>
      <a href="#rk-joint-author">Autor</a>
    </nav>

    <div class="rk-joint-body">
      <section class="rk-joint-section" id="rk-joint-answer">
        <span class="rk-joint-kicker">Najkrótsza poprawna odpowiedź</span>
        <h2>Po co stosuje się izolację brzegową i dylatacje w podłogówce?</h2>
        <p class="rk-joint-lead rk-joint-dropcap"><strong>Izolacja brzegowa i dylatacje w instalacji ogrzewania podłogowego</strong> pozwalają jastrychowi zmieniać wymiary bez zakleszczenia pomiędzy ścianami i bez niekontrolowanego przenoszenia naprężeń na okładzinę. Taśma brzegowa oddziela płytę od przegród oraz elementów stałych, a odpowiednio rozmieszczone szczeliny ruchowe rozdzielają podłogę na pola, które mogą pracować niezależnie.</p>

        <div class="rk-joint-answer">
          <div class="rk-joint-answer-main">
            <h3>To nie jest dodatek montowany „dla porządku”</h3>
            <p>Jastrych grzewczy rozszerza się podczas nagrzewania, kurczy podczas stygnięcia i jednocześnie przechodzi skurcz związany z wiązaniem oraz wysychaniem. Jeżeli zostanie sztywno połączony ze ścianą, słupem albo drugim polem, naprężenia szukają najsłabszego miejsca: fugi, narożnika, przewężenia albo przejścia drzwiowego.</p>
            <p>Poprawny układ trzeba zaplanować przed rozłożeniem rur. Wtedy granice pól można skoordynować z pętlami, dobiegami, progami i finalną okładziną.</p>
          </div>
          <div class="rk-joint-answer-side">
            <h3>Najważniejsza zasada</h3>
            <p><strong>Dylatacja konstrukcyjna budynku nie może zniknąć pod ogrzewaną podłogą.</strong> Musi być respektowana przez kolejne warstwy, a jej przebieg powinien zostać uwzględniony w trasach rur oraz w układzie okładziny.</p>
          </div>
        </div>

        <div class="rk-joint-grid-4" style="margin-top:22px">
          <article class="rk-joint-card"><span class="rk-joint-card-number">01</span><h3>Swobodny ruch płyty</h3><p>Taśma obwodowa tworzy podatne oddzielenie jastrychu od ścian, słupów, schodów i pozostałych elementów stałych.</p></article>
          <article class="rk-joint-card"><span class="rk-joint-card-number">02</span><h3>Kontrola pól</h3><p>Szczeliny rozdzielają niekorzystną geometrię i ograniczają przenoszenie naprężeń pomiędzy fragmentami podłogi.</p></article>
          <article class="rk-joint-card"><span class="rk-joint-card-number">03</span><h3>Ochrona przewodów</h3><p>Rury przechodzące przez granicę pól wymagają ograniczenia liczby przejść, osłony i trasy bez połączeń w strefie ruchu.</p></article>
          <article class="rk-joint-card"><span class="rk-joint-card-number">04</span><h3>Ciągłość do okładziny</h3><p>Aktywnej szczeliny nie przykrywa się sztywno płytką lub kamieniem. Jej pracę trzeba przenieść na warstwę wykończeniową.</p></article>
        </div>
      </section>



      <section class="rk-joint-section" id="rk-joint-terms">
        <span class="rk-joint-kicker">Nazwy mają znaczenie</span>
        <h2>Taśma brzegowa, szczelina ruchowa i dylatacja konstrukcyjna to nie to samo</h2>
        <p class="rk-joint-lead">Najwięcej błędów zaczyna się od wrzucenia wszystkich przerw w podłodze do jednego worka. Tymczasem każda z nich ma inne pochodzenie i inną funkcję. Zanim wykonawca zacznie ciąć jastrych albo prowadzić rurę w peszlu, trzeba ustalić, z jakim rodzajem szczeliny ma do czynienia.</p>

        <div class="rk-joint-table-wrap">
          <table>
            <thead><tr><th>Element</th><th>Gdzie występuje?</th><th>Główne zadanie</th><th>Co musi uwzględnić instalator?</th></tr></thead>
            <tbody>
              <tr><td data-label="Element"><strong>Taśma brzegowa</strong></td><td data-label="Gdzie występuje?">Wzdłuż ścian oraz wokół słupów, kominów, schodów i innych elementów stałych</td><td data-label="Główne zadanie">Oddzielenie płyty jastrychu i umożliwienie jej ruchu przy krawędzi</td><td data-label="Instalator">Ciągłość taśmy, narożniki bez przerw i szczelny fartuch ograniczający wpływanie zaprawy</td></tr>
              <tr><td data-label="Element"><strong>Szczelina ruchowa jastrychu</strong></td><td data-label="Gdzie występuje?">Pomiędzy zaprojektowanymi polami jastrychu, często w progach i przewężeniach</td><td data-label="Główne zadanie">Umożliwienie względnego ruchu sąsiednich pól bez przypadkowego pęknięcia</td><td data-label="Instalator">Podział pętli pomiędzy pola i ograniczenie przejść rur przez szczelinę</td></tr>
              <tr><td data-label="Element"><strong>Dylatacja konstrukcyjna</strong></td><td data-label="Gdzie występuje?">W konstrukcji budynku zgodnie z projektem konstrukcyjnym</td><td data-label="Główne zadanie">Rozdzielenie niezależnie pracujących części konstrukcji</td><td data-label="Instalator">Bezwzględne respektowanie jej przebiegu w ogrzewaniu i kolejnych warstwach podłogi</td></tr>
              <tr><td data-label="Element"><strong>Nacięcie kontrolne</strong></td><td data-label="Gdzie występuje?">W jastrychu w miejscu zaplanowanego osłabienia przekroju</td><td data-label="Główne zadanie">Ukierunkowanie skurczu i kontrola miejsca zarysowania</td><td data-label="Instalator">Znajomość głębokości nacięcia i pewność, że pod nim nie znajduje się rura</td></tr>
              <tr><td data-label="Element"><strong>Przerwa robocza</strong></td><td data-label="Gdzie występuje?">Na granicy etapów wykonywania jastrychu</td><td data-label="Główne zadanie">Technologiczne zakończenie jednego etapu prac i rozpoczęcie kolejnego</td><td data-label="Instalator">Uzgodnienie, czy ma pozostać aktywna, zostać zespolona albo pokrywać się z planowaną szczeliną</td></tr>
            </tbody>
          </table>
        </div>

        <div class="rk-joint-callout is-warning">
          <p><strong>Nie każdą widoczną linię wolno później „zalać żywicą”.</strong> Aktywna szczelina ruchowa ma umożliwiać przemieszczenie, a sposób jej wykończenia musi odpowiadać projektowi jastrychu oraz rodzajowi okładziny. Inaczej traktuje się kontrolowane nacięcie skurczowe, a inaczej dylatację konstrukcyjną budynku.</p>
        </div>
      </section>

      <section class="rk-joint-section" id="rk-joint-edge">
        <span class="rk-joint-kicker">Ciągłość od podłoża do okładziny</span>
        <h2>Jak prawidłowo ułożyć taśmę brzegową do ogrzewania podłogowego?</h2>
        <p class="rk-joint-lead">Taśma powinna tworzyć nieprzerwaną, podatną przegrodę pomiędzy jastrychem a każdym elementem, który mógłby ograniczyć jego ruch. Nie wystarczy przykleić jej tylko do ścian zewnętrznych. Potrzebna jest także przy ścianach działowych, ościeżach, słupach, kominach, schodach, pionach instalacyjnych i innych elementach przechodzących przez płytę.</p>

        <div class="rk-joint-grid-3">
          <article class="rk-joint-card"><span class="rk-joint-card-number">A</span><h3>Bez przerw w narożnikach</h3><p>Łączenia nie mogą tworzyć twardych punktów. W narożnikach taśma ma przylegać bez rozdarć, zawinięć wpuszczających zaprawę i brakujących fragmentów.</p></article>
          <article class="rk-joint-card"><span class="rk-joint-card-number">B</span><h3>Fartuch nad izolacją</h3><p>Folia lub fartuch taśmy ogranicza wpływanie zaprawy pomiędzy taśmę i izolację podłogową. Twardy klin z jastrychu może zablokować ruch krawędzi.</p></article>
          <article class="rk-joint-card"><span class="rk-joint-card-number">C</span><h3>Nie przycinaj za wcześnie</h3><p>Nadmiar taśmy pozostawia się do czasu wykonania odpowiedniego etapu okładziny. Zbyt wczesne przycięcie ułatwia powstanie sztywnego mostka przy ścianie.</p></article>
        </div>

        <div class="rk-joint-diagram">
          <svg viewBox="0 0 1080 470" role="img" aria-labelledby="rk-edge-title rk-edge-desc">
            <title id="rk-edge-title">Przekrój podłogi z taśmą brzegową</title>
            <desc id="rk-edge-desc">Schemat pokazuje ścianę, taśmę brzegową, fartuch foliowy, jastrych, rurę grzewczą, izolację i okładzinę.</desc>
            <defs>
              <pattern id="rkEdgeInsulation" width="26" height="26" patternUnits="userSpaceOnUse">
                <path d="M0 13 Q6 2 13 13 T26 13" fill="none" stroke="#9bc8d7" stroke-width="3"></path>
              </pattern>
            </defs>
            <rect x="52" y="54" width="148" height="352" rx="8" fill="#d6dde1"></rect>
            <text x="126" y="91" text-anchor="middle" fill="#102536" font-size="18" font-weight="900">ŚCIANA</text>
            <rect x="200" y="86" width="27" height="320" fill="#ff6d38"></rect>
            <text x="245" y="131" fill="#df4537" font-size="17" font-weight="900">TAŚMA BRZEGOWA</text>
            <path d="M227 161 H390 V187 H249" fill="none" stroke="#ff6d38" stroke-width="12" stroke-linejoin="round"></path>
            <text x="400" y="183" fill="#475968" font-size="15" font-weight="800">fartuch nad izolacją</text>
            <rect x="227" y="87" width="791" height="42" fill="#c6a977"></rect>
            <text x="619" y="115" text-anchor="middle" fill="#102536" font-size="17" font-weight="900">OKŁADZINA I WARSTWA KLEJĄCA</text>
            <rect x="227" y="129" width="791" height="164" fill="#d7d5cf"></rect>
            <text x="744" y="168" text-anchor="middle" fill="#102536" font-size="18" font-weight="900">JASTRYCH GRZEWCZY</text>
            <circle cx="500" cy="232" r="29" fill="#ffffff" stroke="#078fbe" stroke-width="12"></circle>
            <text x="547" y="238" fill="#078fbe" font-size="16" font-weight="900">RURA</text>
            <rect x="227" y="293" width="791" height="113" fill="url(#rkEdgeInsulation)" stroke="#9bc8d7"></rect>
            <text x="744" y="355" text-anchor="middle" fill="#14384d" font-size="18" font-weight="900">IZOLACJA PODŁOGOWA</text>
            <path d="M211 60 V422" stroke="#df4537" stroke-width="3" stroke-dasharray="8 7"></path>
            <text x="65" y="445" fill="#475968" font-size="15">Podatne oddzielenie musi być ciągłe i wyższe niż wykonywane warstwy.</text>
          </svg>
          <p class="rk-joint-diagram-caption">Schemat ideowy. Grubość, wysokość i materiał taśmy oraz sposób połączenia z folią należy dobrać do konstrukcji podłogi i technologii jastrychu.</p>
        </div>

        <p style="margin-top:22px">Taśma brzegowa nie naprawi źle zaprojektowanej konstrukcji podłogi. Zależność pomiędzy izolacją, rurą i jastrychem omawia również poradnik <a href="https://projekt-ogrzewania.pl/grubosc-wylewki-betonowej-na-ogrzewanie-podlogowe/">grubość wylewki betonowej na ogrzewanie podłogowe</a>.</p>
      </section>

      <section class="rk-joint-section" id="rk-joint-fields">
        <span class="rk-joint-kicker">Geometria ważniejsza od jednego progu</span>
        <h2>Kiedy trzeba dzielić jastrych grzewczy na mniejsze pola?</h2>
        <p class="rk-joint-lead">Powierzchnia i długość boku są ważnymi sygnałami kontrolnymi, lecz nie powinny być jedynym kryterium. Znaczenie mają również proporcje pola, kształt pomieszczenia, przewężenia, słupy, istniejące szczeliny konstrukcyjne, etapowanie robót, rodzaj jastrychu oraz sposób wykończenia podłogi.</p>

        <div class="rk-joint-grid-3">
          <article class="rk-joint-card"><span class="rk-joint-card-number">L / U</span><h3>Nieregularny kształt</h3><p>Wewnętrzne narożniki pola w kształcie litery L lub U koncentrują naprężenia. Podział często powinien prowadzić od takiego narożnika do przeciwległej krawędzi.</p></article>
          <article class="rk-joint-card"><span class="rk-joint-card-number">↔</span><h3>Próg i przewężenie</h3><p>Przejście drzwiowe naturalnie rozdziela dwa pomieszczenia oraz dwa pola. To dobre miejsce na koordynację szczeliny z dobiegami pętli.</p></article>
          <article class="rk-joint-card"><span class="rk-joint-card-number">◉</span><h3>Słup lub element stały</h3><p>Element przechodzący przez jastrych wymaga obwodowego oddzielenia, a jego położenie może zmienić korzystny kierunek podziału pola.</p></article>
        </div>

        <div class="rk-joint-callout">
          <p><strong>Wartości 40 m², 8 m długości boku i proporcja 2:1 traktujemy jako punkty kontrolne, a nie automatyczny projekt.</strong> Ostateczny układ szczelin musi wynikać z rodzaju oraz dokumentacji jastrychu, geometrii budynku, dylatacji konstrukcyjnych i wymagań okładziny. Nie wolno bezrefleksyjnie kopiować ograniczeń jastrychu cementowego do anhydrytu, suchego systemu albo rozwiązania specjalnego.</p>
        </div>

        <div class="rk-joint-diagram">
          <svg viewBox="0 0 1080 420" role="img" aria-labelledby="rk-plan-title rk-plan-desc">
            <title id="rk-plan-title">Przykładowe miejsca podziału pól jastrychu</title>
            <desc id="rk-plan-desc">Trzy rzuty pokazują dylatację w progu, podział pomieszczenia w kształcie litery L oraz oddzielenie słupa.</desc>
            <rect x="35" y="45" width="292" height="300" rx="20" fill="#ffffff" stroke="#bdd4de" stroke-width="3"></rect>
            <rect x="68" y="84" width="226" height="220" rx="8" fill="#e9fbff" stroke="#25c7d8" stroke-width="8"></rect>
            <path d="M181 84 V304" stroke="#ff6d38" stroke-width="9" stroke-dasharray="16 11"></path>
            <text x="181" y="376" text-anchor="middle" fill="#102536" font-size="17" font-weight="900">PRZEJŚCIE / PRÓG</text>
            <rect x="394" y="45" width="292" height="300" rx="20" fill="#ffffff" stroke="#bdd4de" stroke-width="3"></rect>
            <path d="M433 85 H643 V175 H548 V304 H433 Z" fill="#e9fbff" stroke="#25c7d8" stroke-width="8" stroke-linejoin="round"></path>
            <path d="M548 175 H433" stroke="#ff6d38" stroke-width="9" stroke-dasharray="16 11"></path>
            <text x="540" y="376" text-anchor="middle" fill="#102536" font-size="17" font-weight="900">KSZTAŁT L</text>
            <rect x="753" y="45" width="292" height="300" rx="20" fill="#ffffff" stroke="#bdd4de" stroke-width="3"></rect>
            <rect x="790" y="84" width="218" height="220" rx="8" fill="#e9fbff" stroke="#25c7d8" stroke-width="8"></rect>
            <circle cx="899" cy="194" r="38" fill="#d7d5cf" stroke="#ff6d38" stroke-width="9"></circle>
            <text x="899" y="200" text-anchor="middle" fill="#102536" font-size="14" font-weight="900">SŁUP</text>
            <text x="899" y="376" text-anchor="middle" fill="#102536" font-size="17" font-weight="900">ELEMENT STAŁY</text>
          </svg>
          <p class="rk-joint-diagram-caption">Schematy pokazują miejsca wymagające decyzji projektowej, a nie uniwersalny układ dylatacji dla każdego budynku.</p>
        </div>
      </section>

      <section class="rk-joint-section" id="rk-joint-audit">
        <div class="rk-joint-audit">
          <div class="rk-joint-audit-head">
            <span class="rk-joint-kicker" style="color:#79f1ff">Interaktywny audyt pola jastrychu</span>
            <h2>Sprawdź, które miejsca wymagają uzgodnienia przed ułożeniem rur</h2>
            <p>Narzędzie oblicza powierzchnię i proporcje pola, analizuje geometrię oraz tworzy listę punktów kontrolnych. Nie wyznacza automatycznie liczby dylatacji i nie zastępuje projektu konstrukcji jastrychu.</p>
          </div>

          <div class="rk-joint-audit-layout">
            <form class="rk-joint-audit-form" id="rk-joint-audit-form" aria-label="Interaktywny audyt pola jastrychu">
              <div class="rk-joint-fields">
                <div class="rk-joint-field">
                  <label for="rk-joint-length">Dłuższy wymiar pola</label>
                  <input id="rk-joint-length" type="number" min="1" max="30" step="0.1" value="8" inputmode="decimal">
                </div>
                <div class="rk-joint-field">
                  <label for="rk-joint-width">Krótszy wymiar pola</label>
                  <input id="rk-joint-width" type="number" min="1" max="30" step="0.1" value="5" inputmode="decimal">
                </div>
                <div class="rk-joint-field">
                  <label for="rk-joint-shape">Kształt pomieszczenia</label>
                  <select id="rk-joint-shape">
                    <option value="rectangle" selected="">Prostokąt</option>
                    <option value="lshape">Kształt L</option>
                    <option value="ushape">Kształt U</option>
                  </select>
                </div>
                <div class="rk-joint-field">
                  <label for="rk-joint-screed">Rodzaj rozwiązania</label>
                  <select id="rk-joint-screed">
                    <option value="cement" selected="">Jastrych cementowy</option>
                    <option value="anhydrite">Jastrych anhydrytowy</option>
                    <option value="dry">System suchy</option>
                  </select>
                </div>
                <div class="rk-joint-field is-full">
                  <label for="rk-joint-finish">Planowana okładzina</label>
                  <select id="rk-joint-finish">
                    <option value="tiles" selected="">Płytki lub kamień</option>
                    <option value="panels">Panele pływające</option>
                    <option value="wood">Drewno klejone</option>
                    <option value="resin">Posadzka żywiczna</option>
                  </select>
                </div>
              </div>

              <div class="rk-joint-checks">
                <label class="rk-joint-check"><input id="rk-joint-door" type="checkbox" checked=""><span>W polu występuje przejście drzwiowe albo wyraźne przewężenie.</span></label>
                <label class="rk-joint-check"><input id="rk-joint-structural" type="checkbox"><span>Przez obszar przebiega dylatacja konstrukcyjna budynku.</span></label>
                <label class="rk-joint-check"><input id="rk-joint-obstacle" type="checkbox"><span>W jastrychu znajduje się słup, komin, schody lub inny element stały.</span></label>
                <label class="rk-joint-check"><input id="rk-joint-crossing" type="checkbox"><span>Zakładane trasy rur przecinają planowaną granicę pól.</span></label>
              </div>

              <button class="rk-joint-audit-reset" id="rk-joint-audit-reset" type="button">Przywróć przykład</button>
            </form>

            <div class="rk-joint-audit-output" aria-live="polite">
              <div class="rk-joint-metrics">
                <div class="rk-joint-metric"><small>Powierzchnia prostokąta odniesienia</small><strong id="rk-joint-result-area">40,0 m²</strong></div>
                <div class="rk-joint-metric"><small>Proporcja boków</small><strong id="rk-joint-result-ratio">1,60 : 1</strong></div>
                <div class="rk-joint-metric"><small>Liczba sygnałów kontrolnych</small><strong id="rk-joint-result-flags">—</strong></div>
              </div>

              <div class="rk-joint-audit-status" id="rk-joint-audit-status">
                <strong id="rk-joint-audit-title">Analizujemy geometrię pola</strong>
                <span id="rk-joint-audit-copy">Wynik wskaże miejsca wymagające sprawdzenia w dokumentacji jastrychu oraz na rzucie instalacji.</span>
              </div>

              <div class="rk-joint-audit-plan">
                <svg viewBox="0 0 720 390" role="img" aria-labelledby="rk-audit-plan-title rk-audit-plan-desc">
                  <title id="rk-audit-plan-title">Dynamiczny rzut analizowanego pola jastrychu</title>
                  <desc id="rk-audit-plan-desc">Rzut zmienia kształt pomieszczenia i pokazuje potencjalną linię podziału, przejście drzwiowe, element stały oraz dylatację konstrukcyjną.</desc>
                  <rect x="18" y="18" width="684" height="354" rx="22" fill="#ffffff" stroke="#d6e5ec" stroke-width="3"></rect>
                  <path id="rk-joint-plan-room" d="M110 76 H610 V316 H110 Z" fill="#e9fbff" stroke="#25c7d8" stroke-width="11" stroke-linejoin="round"></path>
                  <path id="rk-joint-plan-guide" d="M360 76 V316" fill="none" stroke="#ff6d38" stroke-width="9" stroke-dasharray="18 12"></path>
                  <path id="rk-joint-plan-structural" d="M250 62 V330" fill="none" stroke="#df4537" stroke-width="12" stroke-dasharray="7 8" style="display:none"></path>
                  <rect id="rk-joint-plan-door" x="332" y="301" width="57" height="29" fill="#ffffff" stroke="#ff6d38" stroke-width="6"></rect>
                  <circle id="rk-joint-plan-obstacle" cx="500" cy="205" r="38" fill="#d7d5cf" stroke="#6d5bd0" stroke-width="9" style="display:none"></circle>
                  <text id="rk-joint-plan-label" x="360" y="50" text-anchor="middle" fill="#102536" font-size="17" font-weight="900">PROSTOKĄT • PUNKT KONTROLNY</text>
                  <text x="360" y="357" text-anchor="middle" fill="#6c7e8a" font-size="14">Pomarańczowa linia oznacza miejsce do weryfikacji, nie gotową dylatację.</text>
                </svg>
              </div>

              <ul class="rk-joint-audit-list" id="rk-joint-audit-list"></ul>
            </div>
          </div>

          <div class="rk-joint-tool-note"><strong>Ważne:</strong> wynik ma charakter edukacyjny. Progi powierzchni i długości są sygnałami kontrolnymi, a nie samodzielną podstawą wykonania szczelin. Ostateczny układ należy uzgodnić z projektem konstrukcji, technologią jastrychu, dokumentacją zastosowanego systemu i planem okładziny.</div>
        </div>

        <div class="rk-joint-inline-cta">
          <span class="rk-joint-kicker" style="color:#79f1ff">Geometria pola musi zgadzać się z przebiegiem pętli</span>
          <h3>Masz duży salon, przejścia bezprogowe, kształt L albo istniejącą dylatację konstrukcyjną?</h3>
          <p>Granice pól trzeba skoordynować z rozdziałem pętli jeszcze przed ułożeniem rur. Projekt ogrzewania podłogowego pokazuje rzeczywiste trasy, dobiegi, rozstawy, przepływy i miejsca, w których wykonawca musi uwzględnić wskazane szczeliny oraz elementy konstrukcyjne.</p>
          <a class="rk-joint-cta-button rk-joint-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z rozplanowaniem pętli</a>
          <small class="rk-joint-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
        </div>
      </section>

      <section class="rk-joint-section" id="rk-joint-pipes">
        <span class="rk-joint-kicker">Trasa pętli a granice pól</span>
        <h2>Czy rura ogrzewania podłogowego może przechodzić przez dylatację?</h2>
        <p class="rk-joint-lead">Najbezpieczniej jest tak podzielić obiegi, aby każda pętla pracowała w jednym polu jastrychu i nie przecinała aktywnej szczeliny. Jeżeli przejścia nie da się uniknąć, przez granicę prowadzi się możliwie małą liczbę odcinków przyłączeniowych, prostopadle do szczeliny, w odpowiedniej osłonie i bez jakichkolwiek połączeń rury w strefie ruchu.</p>

        <div class="rk-joint-grid-4">
          <article class="rk-joint-card"><span class="rk-joint-card-number">90°</span><h3>Przejście prostopadłe</h3><p>Krótka trasa przez szczelinę ogranicza długość odcinka poddanego względnemu ruchowi sąsiednich pól.</p></article>
          <article class="rk-joint-card"><span class="rk-joint-card-number">▱</span><h3>Osłona ochronna</h3><p>Rura ochronna ma obejmować całą strefę możliwego ruchu z odpowiednim zapasem po obu stronach, zgodnie z rozwiązaniem projektowym.</p></article>
          <article class="rk-joint-card"><span class="rk-joint-card-number">0×</span><h3>Bez złączek</h3><p>W dylatacji, osłonie i bezpośrednim sąsiedztwie szczeliny nie umieszcza się połączeń mechanicznych rury grzewczej.</p></article>
          <article class="rk-joint-card"><span class="rk-joint-card-number">N↓</span><h3>Minimum przejść</h3><p>Zamiast przecinać granicę wieloma fragmentami ślimaka, pola przypisuje się do osobnych pętli, a przecinają je tylko konieczne dobiegi.</p></article>
        </div>

        <div class="rk-joint-diagram">
          <svg viewBox="0 0 1080 440" role="img" aria-labelledby="rk-pipe-title rk-pipe-desc">
            <title id="rk-pipe-title">Przejście rur ogrzewania podłogowego przez szczelinę ruchową</title>
            <desc id="rk-pipe-desc">Schemat pokazuje dwa pola jastrychu, szczelinę ruchową oraz odcinki zasilania i powrotu prowadzone prostopadle w rurach ochronnych.</desc>
            <rect x="48" y="55" width="444" height="310" rx="18" fill="#e9fbff" stroke="#25c7d8" stroke-width="6"></rect>
            <rect x="588" y="55" width="444" height="310" rx="18" fill="#e9fbff" stroke="#25c7d8" stroke-width="6"></rect>
            <rect x="492" y="45" width="96" height="330" fill="#fff3ec"></rect>
            <path d="M540 45 V375" stroke="#ff6d38" stroke-width="13" stroke-dasharray="18 12"></path>
            <text x="540" y="413" text-anchor="middle" fill="#df4537" font-size="17" font-weight="900">SZCZELINA RUCHOWA</text>
            <path d="M170 170 H908" fill="none" stroke="#ffffff" stroke-width="42" stroke-linecap="round"></path>
            <path d="M170 170 H908" fill="none" stroke="#078fbe" stroke-width="15" stroke-linecap="round"></path>
            <path d="M170 253 H908" fill="none" stroke="#ffffff" stroke-width="42" stroke-linecap="round"></path>
            <path d="M170 253 H908" fill="none" stroke="#6d5bd0" stroke-width="15" stroke-linecap="round"></path>
            <rect x="420" y="143" width="240" height="54" rx="27" fill="none" stroke="#102536" stroke-width="5" stroke-dasharray="10 7"></rect>
            <rect x="420" y="226" width="240" height="54" rx="27" fill="none" stroke="#102536" stroke-width="5" stroke-dasharray="10 7"></rect>
            <text x="540" y="116" text-anchor="middle" fill="#102536" font-size="16" font-weight="900">OSŁONA OBEJMUJE STREFĘ RUCHU PO OBU STRONACH</text>
            <text x="270" y="329" text-anchor="middle" fill="#14384d" font-size="18" font-weight="900">POLE A</text>
            <text x="810" y="329" text-anchor="middle" fill="#14384d" font-size="18" font-weight="900">POLE B</text>
          </svg>
          <p class="rk-joint-diagram-caption">Schemat ideowy. Długość i rodzaj osłony nie powinny wynikać z przypadkowo przyjętej jednej wartości, lecz z szerokości szczeliny, przewidywanego ruchu oraz dokumentacji wykonawczej.</p>
        </div>

        <div class="rk-joint-callout is-warning">
          <p><strong>Peszel nie „usuwa” dylatacji.</strong> Chroni rurę w miejscu przejścia, ale nie pozwala dowolnie prowadzić całego ślimaka pomiędzy polami. Jeżeli pętla wielokrotnie przecina szczelinę, trzeba wrócić do rzutu i zmienić podział obwodów. Właściwości przewodu opisuje osobny poradnik <a href="https://projekt-ogrzewania.pl/rura-pex-do-ogrzewania-podlogowego/">rura PEX do ogrzewania podłogowego</a>.</p>
        </div>
      </section>

      <section class="rk-joint-section" id="rk-joint-covering">
        <span class="rk-joint-kicker">Szczelina nie kończy się pod płytką</span>
        <h2>Jak przenieść dylatację jastrychu na okładzinę podłogową?</h2>
        <p class="rk-joint-lead">Ogrzewana płyta i okładzina pracują razem, ale nie zawsze w taki sam sposób. Aktywna dylatacja konstrukcyjna lub ruchowa nie może zostać przypadkowo zablokowana klejem, zaprawą, fugą albo sztywno zamocowaną listwą. Sposób jej wykończenia trzeba ustalić przed rozpoczęciem układania posadzki.</p>

        <div class="rk-joint-table-wrap">
          <table>
            <thead><tr><th>Rodzaj okładziny</th><th>Co trzeba skoordynować?</th><th>Typowy błąd</th><th>Decyzja przed wykonaniem</th></tr></thead>
            <tbody>
              <tr><td data-label="Okładzina"><strong>Płytki ceramiczne</strong></td><td data-label="Koordynacja">Układ fug i odpowiednie rozwiązanie szczeliny nad aktywnym podziałem jastrychu</td><td data-label="Typowy błąd">Płytka przechodząca w całości przez dwa niezależnie pracujące pola</td><td data-label="Decyzja">Przebieg profilu albo elastycznej szczeliny zgodny z technologią okładziny</td></tr>
              <tr><td data-label="Okładzina"><strong>Kamień</strong></td><td data-label="Koordynacja">Duży format, układ płyt i naturalna wrażliwość materiału na naprężenia</td><td data-label="Typowy błąd">Próba ukrycia dylatacji pod jedną płytą kamienną</td><td data-label="Decyzja">Podział okładziny i detal wykończenia uzgodniony przed zamówieniem formatek</td></tr>
              <tr><td data-label="Okładzina"><strong>Panele pływające</strong></td><td data-label="Koordynacja">Dylatacje obwodowe okładziny, progi, długość pól i wytyczne systemu zamków</td><td data-label="Typowy błąd">Sztywne zakleszczenie paneli pod listwami, ościeżnicami lub stałą zabudową</td><td data-label="Decyzja">Miejsca profili przejściowych oraz dopuszczalne wymiary pola paneli</td></tr>
              <tr><td data-label="Okładzina"><strong>Drewno klejone</strong></td><td data-label="Koordynacja">Układ desek, wilgotność, kierunek włókien, klej i aktywne szczeliny podłoża</td><td data-label="Typowy błąd">Zamknięcie ruchomej szczeliny sztywnym klejeniem ciągłym</td><td data-label="Decyzja">Detal przejścia wynikający z projektu podłoża i technologii parkieciarskiej</td></tr>
              <tr><td data-label="Okładzina"><strong>Posadzka żywiczna</strong></td><td data-label="Koordynacja">Rodzaj żywicy, przeniesienie szczelin oraz sposób mostkowania wyłącznie tych rys, które wolno mostkować</td><td data-label="Typowy błąd">Traktowanie każdej dylatacji jak zwykłego pęknięcia do zalania</td><td data-label="Decyzja">Rozróżnienie szczeliny aktywnej od naprawianego zarysowania</td></tr>
            </tbody>
          </table>
        </div>

        <p style="margin-top:22px">W przypadku ciężkich lub nietypowych warstw wykończeniowych trzeba jednocześnie sprawdzić ich opór cieplny i dopuszczalną temperaturę. Zobacz także opracowanie <a href="https://projekt-ogrzewania.pl/wylewka-betonowa-na-ogrzewanie-podlogowe/">wylewka betonowa na ogrzewanie podłogowe</a>.</p>
      </section>

      <section class="rk-joint-section" id="rk-joint-howto">
        <span class="rk-joint-kicker">Kolejność, która ogranicza improwizację</span>
        <h2>Izolacja brzegowa i dylatacje krok po kroku</h2>
        <p class="rk-joint-lead">Najgorszy moment na planowanie dylatacji to dzień wylewania jastrychu, kiedy rury są już zamocowane. Poniższa kolejność pozwala połączyć projekt konstrukcji podłogi, trasowanie pętli i późniejszą okładzinę.</p>

        <div class="rk-joint-steps">
          <article class="rk-joint-step"><h3>Zbierz dokumentację warstw</h3><p>Ustal rodzaj jastrychu, jego projektowaną grubość, układ izolacji, istniejące dylatacje konstrukcyjne oraz wymagania planowanej okładziny.</p></article>
          <article class="rk-joint-step"><h3>Wyznacz elementy stałe</h3><p>Zaznacz ściany, słupy, kominy, schody, piony, ościeża i wszystkie elementy, od których płyta musi być podatnie oddzielona.</p></article>
          <article class="rk-joint-step"><h3>Podziel geometrię na pola</h3><p>Sprawdź powierzchnię, długości boków, proporcje, kształty L i U, przewężenia, progi oraz miejsca etapowania robót.</p></article>
          <article class="rk-joint-step"><h3>Skoordynuj pętle z polami</h3><p>Każdemu polu przypisz możliwie niezależne obwody, ogranicz liczbę przejść i zaplanuj dobiegi przecinające szczeliny prostopadle.</p></article>
          <article class="rk-joint-step"><h3>Ułóż ciągłą taśmę brzegową</h3><p>Oddziel wszystkie krawędzie i elementy stałe, zabezpiecz narożniki oraz ułóż fartuch tak, aby zaprawa nie utworzyła twardego mostka.</p></article>
          <article class="rk-joint-step"><h3>Zabezpiecz konieczne przejścia</h3><p>Na odcinkach przecinających zaplanowaną szczelinę zastosuj właściwą osłonę, bez złączek i z zapasem wynikającym z dokumentacji wykonawczej.</p></article>
          <article class="rk-joint-step"><h3>Odbierz układ przed jastrychem</h3><p>Wykonaj dokumentację zdjęciową, sprawdź położenie rur względem szczelin, przeprowadź próbę szczelności i potwierdź z wykonawcą jastrychu plan pól.</p></article>
          <article class="rk-joint-step"><h3>Przenieś szczeliny na okładzinę</h3><p>Przed klejeniem lub układaniem podłogi ustal, które szczeliny pozostają aktywne i jak zostaną wykończone w płytkach, drewnie, panelach lub żywicy.</p></article>
        </div>
      </section>

      <section class="rk-joint-section" id="rk-joint-errors">
        <span class="rk-joint-kicker">Błędy, które wychodzą po wygrzewaniu</span>
        <h2>Najczęstsze błędy przy izolacji brzegowej i dylatacjach</h2>
        <p class="rk-joint-lead">Część usterek pozostaje niewidoczna podczas układania rur. Pojawiają się dopiero po skurczu jastrychu, pierwszym wygrzewaniu lub sezonowych zmianach temperatury. Wtedy naprawa zwykle obejmuje już gotową posadzkę.</p>
        <div class="rk-joint-grid-3">
          <article class="rk-joint-error"><b>BŁĄD 01</b><h3>Taśma tylko przy ścianach zewnętrznych</h3><p>Ściany działowe, słupy, kominy i schody również blokują ruch płyty, jeżeli jastrych zostanie z nimi sztywno połączony.</p></article>
          <article class="rk-joint-error"><b>BŁĄD 02</b><h3>Wpłynięcie zaprawy za taśmę</h3><p>Nieszczelny fartuch tworzy twardy klin pomiędzy jastrychem i izolacją, przez co podatne oddzielenie przestaje działać.</p></article>
          <article class="rk-joint-error"><b>BŁĄD 03</b><h3>Przecięcie rury podczas nacinania</h3><p>Nacięcie kontrolne wykonane bez dokumentacji przebiegu rur może zakończyć się uszkodzeniem przewodu grzewczego.</p></article>
          <article class="rk-joint-error"><b>BŁĄD 04</b><h3>Wielokrotne przejścia ślimaka</h3><p>Pętla prowadzona pomiędzy polami przecina szczelinę wieloma rurami zamiast ograniczyć przejście do niezbędnych odcinków przyłączeniowych.</p></article>
          <article class="rk-joint-error"><b>BŁĄD 05</b><h3>Płytka nad aktywną szczeliną</h3><p>Sztywna płytka i zwykła fuga zamykają ruch pól. Naprężenie zostaje przeniesione na okładzinę i tworzy pęknięcie w przypadkowym miejscu.</p></article>
          <article class="rk-joint-error"><b>BŁĄD 06</b><h3>Jedna reguła dla każdego jastrychu</h3><p>Progi stosowane dla jastrychu cementowego są automatycznie kopiowane do anhydrytu, systemu suchego lub rozwiązania o odmiennej dokumentacji.</p></article>
        </div>
        <div class="rk-joint-callout">
          <p><strong>Dokumentacja zdjęciowa przed wylewką jest częścią zarządzania ryzykiem.</strong> Zdjęcia z miarą, osiami ścian i widocznymi szczelinami pozwalają później lokalizować rury bez zgadywania. Więcej sytuacji wykonawczych opisuje poradnik <a href="https://projekt-ogrzewania.pl/jakie-bledy-najczesciej-popelniaja-instalatorzy-ogrzewania-podlogowego/">najczęstsze błędy instalatorów ogrzewania podłogowego</a>.</p>
        </div>
      </section>

      <section class="rk-joint-section" id="rk-joint-checklist">
        <span class="rk-joint-kicker">Odbiór przed zalaniem rur</span>
        <h2>Checklista inwestora i wykonawcy jastrychu</h2>
        <p class="rk-joint-lead">Przed rozpoczęciem wylewania warto wspólnie przejść cały rzut. Instalator zna przebieg pętli, wykonawca jastrychu odpowiada za technologię płyty, a osoba układająca okładzinę musi wiedzieć, które szczeliny będą pracowały także po zakończeniu budowy.</p>
        <ul class="rk-joint-checklist">
          <li>Taśma brzegowa otacza wszystkie ściany i elementy stałe bez przerw.</li>
          <li>Fartuch lub folia nie pozwala zaprawie wpłynąć pomiędzy taśmę i izolację.</li>
          <li>Dylatacje konstrukcyjne są widoczne i przeniesione na plan kolejnych warstw.</li>
          <li>Pola jastrychu uwzględniają progi, przewężenia, kształty L i U oraz słupy.</li>
          <li>Pętle zostały przypisane do pól, a liczba przejść przez szczeliny jest ograniczona.</li>
          <li>Każde konieczne przejście rury ma uzgodnioną osłonę i nie zawiera złączki.</li>
          <li>Planowane nacięcia są zestawione z dokładną dokumentacją przebiegu rur.</li>
          <li>Wykonano zdjęcia całych pomieszczeń i detali z trwałymi punktami odniesienia.</li>
          <li>Próba szczelności została przeprowadzona zgodnie z dokumentacją instalacji.</li>
          <li>Wykonawca okładziny zna przebieg aktywnych szczelin przed rozpoczęciem prac.</li>
        </ul>
      </section>

      <section class="rk-joint-section" id="rk-joint-faq">
        <span class="rk-joint-kicker">Pytania z budowy</span>
        <h2>FAQ — izolacja brzegowa i dylatacje w ogrzewaniu podłogowym</h2>
        <div class="rk-joint-faq">
          <details>
            <summary>Jaka powinna być grubość taśmy brzegowej do ogrzewania podłogowego?</summary>
            <div class="rk-joint-faq-answer"><p>Nie należy wybierać jej wyłącznie na podstawie jednej wartości z internetu. Taśma ma zachować wymaganą podatność po ściśnięciu, a jej grubość, materiał i dopuszczalne odkształcenie muszą odpowiadać przewidywanemu ruchowi jastrychu oraz dokumentacji systemu podłogowego.</p></div>
          </details>
          <details>
            <summary>Czy taśmę brzegową układa się przy każdej ścianie?</summary>
            <div class="rk-joint-faq-answer"><p>Tak — płyta jastrychu powinna być podatnie oddzielona od wszystkich ścian i innych stałych elementów pionowych, takich jak słupy, kominy, schody, ościeża czy piony instalacyjne. Taśma tylko przy ścianach zewnętrznych nie zapewnia ciągłego oddzielenia.</p></div>
          </details>
          <details>
            <summary>Kiedy trzeba wykonać dylatację w ogrzewaniu podłogowym?</summary>
            <div class="rk-joint-faq-answer"><p>Decyzja wynika z dylatacji konstrukcyjnych, geometrii i wymiarów pól, przewężeń, progów, elementów stałych, rodzaju jastrychu, etapów robót oraz wymagań okładziny. Układ szczelin trzeba ustalić przed trasowaniem pętli, a nie dopiero w dniu wykonywania wylewki.</p></div>
          </details>
          <details>
            <summary>Czy każde pole jastrychu większe niż 40 m² wymaga takiego samego podziału?</summary>
            <div class="rk-joint-faq-answer"><p>Nie. Wartość 40 m², podobnie jak bok 8 m czy proporcja 2:1, może być użytecznym sygnałem kontrolnym, lecz nie jest uniwersalnym projektem. Ostateczne wymagania zależą od materiału, technologii, geometrii, podłoża i dokumentacji wykonawcy jastrychu.</p></div>
          </details>
          <details>
            <summary>Czy rura ogrzewania podłogowego może przechodzić przez szczelinę ruchową?</summary>
            <div class="rk-joint-faq-answer"><p>Jeżeli przejścia nie można uniknąć, należy ograniczyć liczbę przewodów, prowadzić je możliwie prostopadle, zastosować odpowiednią osłonę obejmującą strefę ruchu i nie wykonywać w niej połączeń. Najkorzystniej przypisać osobne pętle do osobnych pól.</p></div>
          </details>
          <details>
            <summary>Czy można położyć płytkę w całości nad dylatacją jastrychu?</summary>
            <div class="rk-joint-faq-answer"><p>Aktywnej dylatacji konstrukcyjnej lub ruchowej nie wolno przypadkowo zamknąć płytką i sztywną fugą. Szczelinę trzeba skoordynować z układem okładziny i wykończyć rozwiązaniem dopuszczonym dla danego systemu posadzkowego.</p></div>
          </details>
          <details>
            <summary>Czy jastrych anhydrytowy nie potrzebuje dylatacji?</summary>
            <div class="rk-joint-faq-answer"><p>To zbyt duże uproszczenie. Anhydryt może pozwalać na inne pola niż jastrych cementowy, ale nadal trzeba respektować dylatacje konstrukcyjne, oddzielenia obwodowe, przewężenia i wymagania konkretnego wyrobu oraz technologii wykonania.</p></div>
          </details>
          <details>
            <summary>Czy w przejściu drzwiowym zawsze wykonuje się szczelinę?</summary>
            <div class="rk-joint-faq-answer"><p>Próg jest ważnym punktem kontrolnym, ponieważ łączy różne pomieszczenia i często różne pola jastrychu. O potrzebie oraz rodzaju szczeliny decydują geometria, układ konstrukcji, technologia jastrychu, pętle i okładzina — nie sam fakt istnienia drzwi.</p></div>
          </details>
          <details>
            <summary>Czy można naciąć dylatację po wykonaniu wylewki?</summary>
            <div class="rk-joint-faq-answer"><p>Tylko wtedy, gdy jest to zaplanowane nacięcie kontrolne, znana jest jego wymagana głębokość i potwierdzono dokładne położenie rur. Przypadkowe cięcie bez rzutu oraz dokumentacji zdjęciowej grozi uszkodzeniem instalacji.</p></div>
          </details>
          <details>
            <summary>Kto powinien ustalić rozmieszczenie dylatacji i przebieg pętli?</summary>
            <div class="rk-joint-faq-answer"><p>Wymaga to koordynacji projektu konstrukcji, projektu ogrzewania, technologii jastrychu i planu okładziny. Projektant ogrzewania rozplanowuje pętle względem znanych szczelin, ale nie zastępuje konstruktora ani wykonawcy odpowiedzialnego za właściwości jastrychu.</p></div>
          </details>
        </div>
      </section>

      <section class="rk-joint-section" aria-label="Źródła techniczne">
        <div class="rk-joint-sources">
          <strong>Podstawa techniczna i zakres opracowania</strong>
          <p>Artykuł odwołuje się do zasad wykonywania wodnych systemów ogrzewania płaszczyznowego opisanych w <a href="https://sklep.pkn.pl/pn-en-1264-4-2021-10e.html" target="_blank" rel="noopener nofollow">PN-EN 1264-4:2021-10</a> oraz do zakresu projektowania, wymiarowania i instalacji określonego w <a href="https://www.iso.org/standard/74685.html" target="_blank" rel="noopener nofollow">ISO 11855-5:2021</a>. Normy nie zastępują dokumentacji konkretnego jastrychu, projektu konstrukcyjnego ani instrukcji technologicznej dla okładziny.</p>
        </div>
      </section>

      <section class="rk-joint-author" id="rk-joint-author" aria-label="Autor opracowania">
        <input type="radio" name="rk-joint-author-tabs" id="rk-joint-author-about" checked="">
        <input type="radio" name="rk-joint-author-tabs" id="rk-joint-author-exp">
        <input type="radio" name="rk-joint-author-tabs" id="rk-joint-author-sites">

        <header class="rk-joint-author-head">
          <div>
            <h2>Autor opracowania</h2>
            <p>Praktyka projektowa, wiedza techniczna i język zrozumiały dla inwestora.</p>
          </div>
          <span class="rk-joint-author-mark">E-E-A-T • HVAC</span>
        </header>

        <div class="rk-joint-author-layout">
          <aside class="rk-joint-author-side">
            <div class="rk-joint-author-photo">
              <img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych i specjalista ogrzewania podłogowego" width="600" height="600" loading="lazy" decoding="async">
            </div>
            <div class="rk-joint-author-name">Robert Kucharski</div>
            <div class="rk-joint-author-role">CEO<br>Specjalista HVAC i ogrzewania podłogowego</div>
          </aside>

          <div class="rk-joint-author-main">
            <blockquote class="rk-joint-author-quote">
              <p>„Dylatacji nie dopisuje się na końcu projektu. Granice pól, trasy pętli i układ okładziny trzeba uzgodnić przed mocowaniem pierwszego metra rury — wtedy szczelina chroni podłogę, zamiast stawać się problemem wykonawczym.”</p>
            </blockquote>

            <div class="rk-joint-author-tabs" role="tablist" aria-label="Informacje o autorze">
              <label class="rk-joint-author-tab" for="rk-joint-author-about">O autorze</label>
              <label class="rk-joint-author-tab" for="rk-joint-author-exp">Doświadczenie</label>
              <label class="rk-joint-author-tab" for="rk-joint-author-sites">Portale</label>
            </div>

            <div class="rk-joint-author-panel rk-joint-author-panel-about">
              <p>Projektuję wodne ogrzewanie podłogowe i opracowuję techniczne publikacje dotyczące HVAC, hydrauliki instalacji, efektywności energetycznej oraz świadomego prowadzenia inwestycji. Łączę obliczenia z realnymi ograniczeniami wykonawczymi na budowie.</p>
            </div>
            <div class="rk-joint-author-panel rk-joint-author-panel-exp">
              <p>W projektach koordynuję zapotrzebowanie cieplne pomieszczeń, rozstaw i długość pętli, przepływy, opory hydrauliczne, rozdzielacze, automatykę oraz parametry źródła ciepła. Przy warstwach podłogi szczególną uwagę poświęcam zgodności tras rur z geometrią pól jastrychu i dokumentacją budynku.</p>
            </div>
            <div class="rk-joint-author-panel rk-joint-author-panel-sites">
              <p>Jestem właścicielem trzech serwisów branżowych. Powiązanie portali podaję jawnie, aby czytelnik znał autorstwo oraz kontekst linkowania.</p>
              <div class="rk-joint-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-joint-final-cta" aria-label="Projekt ogrzewania podłogowego">
        <span class="rk-joint-kicker" style="color:#79f1ff">Od rzutu budynku do czytelnej dokumentacji wykonawczej</span>
        <h2>Rozplanuj pętle, przepływy i przejścia przez pola przed rozpoczęciem montażu</h2>
        <p>Projekt ogrzewania podłogowego pozwala skoordynować instalację z geometrią pomieszczeń, rozdzielaczem i znanymi dylatacjami konstrukcyjnymi. Dokumentacja nie zastępuje projektu jastrychu, ale daje wykonawcom wspólny, policzony punkt odniesienia zamiast ustaleń „na oko”.</p>
        <a class="rk-joint-cta-button rk-joint-sales-cta" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        <small class="rk-joint-disclosure">Odnośnik prowadzi do strony sprzedażowej Projekt-Ogrzewania.pl — serwisu należącego do autora artykułu.</small>
      </section>
    </div>
  </div>
</article>

<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/#article",
      "url": "https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/",
      "headline": "Izolacja brzegowa i dylatacje w instalacji ogrzewania podłogowego – zasady, schematy i błędy wykonawcze",
      "description": "Izolacja brzegowa i dylatacje w instalacji ogrzewania podłogowego: poznaj zasady podziału pól, przejścia rur, taśmy brzegowe oraz błędy wykonawcze na budowie.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-26",
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "mainEntityOfPage": {
        "@id": "https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/#webpage"
      },
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/#website"
      },
      "about": [
        {
          "@type": "Thing",
          "name": "Izolacja brzegowa w ogrzewaniu podłogowym"
        },
        {
          "@type": "Thing",
          "name": "Dylatacje jastrychu grzewczego"
        },
        {
          "@type": "Thing",
          "name": "Przejścia rur przez szczeliny ruchowe"
        },
        {
          "@type": "Thing",
          "name": "Podział pól jastrychu"
        }
      ],
      "proficiencyLevel": "Expert",
      "citation": [
        "https://sklep.pkn.pl/pn-en-1264-4-2021-10e.html",
        "https://www.iso.org/standard/74685.html"
      ],
      "hasPart": [
        {
          "@id": "https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/#audit"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/#howto"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/#faq"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/#webpage",
      "url": "https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/",
      "name": "Izolacja brzegowa i dylatacje w instalacji ogrzewania podłogowego",
      "description": "Izolacja brzegowa i dylatacje w instalacji ogrzewania podłogowego: poznaj zasady podziału pól, przejścia rur, taśmy brzegowe oraz błędy wykonawcze na budowie.",
      "inLanguage": "pl-PL",
      "dateModified": "2026-08-26",
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/#website"
      },
      "breadcrumb": {
        "@id": "https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/#breadcrumb"
      },
      "mainEntity": {
        "@id": "https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/#article"
      }
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Strona główna",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Blog",
          "item": "https://projekt-ogrzewania.pl/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Izolacja brzegowa i dylatacje w instalacji ogrzewania podłogowego",
          "item": "https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/"
        }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/#audit",
      "name": "Interaktywny audyt pola jastrychu",
      "description": "Edukacyjne narzędzie analizujące powierzchnię, proporcje, geometrię i punkty wymagające uzgodnienia przed wykonaniem jastrychu grzewczego.",
      "url": "https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/#rk-joint-audit",
      "applicationCategory": "UtilitiesApplication",
      "applicationSubCategory": "Narzędzie edukacyjne HVAC",
      "operatingSystem": "Dowolny",
      "browserRequirements": "Włączona obsługa JavaScript",
      "inLanguage": "pl-PL",
      "isAccessibleForFree": true,
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      },
      "featureList": [
        "obliczenie powierzchni pola odniesienia",
        "obliczenie proporcji boków",
        "analiza kształtu L i U",
        "kontrola przejścia drzwiowego",
        "kontrola dylatacji konstrukcyjnej",
        "kontrola przejść rur przez granice pól",
        "dynamiczny schemat pola jastrychu"
      ],
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      }
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/#howto",
      "name": "Jak zaplanować izolację brzegową i dylatacje ogrzewanej podłogi",
      "description": "Osiem etapów koordynacji pól jastrychu, taśmy brzegowej, tras rur i okładziny.",
      "inLanguage": "pl-PL",
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Zbierz dokumentację warstw",
          "text": "Ustal rodzaj jastrychu, jego projektowaną grubość, układ izolacji, istniejące dylatacje konstrukcyjne oraz wymagania planowanej okładziny."
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Wyznacz elementy stałe",
          "text": "Zaznacz ściany, słupy, kominy, schody, piony, ościeża i wszystkie elementy, od których płyta musi być podatnie oddzielona."
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Podziel geometrię na pola",
          "text": "Sprawdź powierzchnię, długości boków, proporcje, kształty L i U, przewężenia, progi oraz miejsca etapowania robót."
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Skoordynuj pętle z polami",
          "text": "Każdemu polu przypisz możliwie niezależne obwody, ogranicz liczbę przejść i zaplanuj dobiegi przecinające szczeliny prostopadle."
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Ułóż ciągłą taśmę brzegową",
          "text": "Oddziel wszystkie krawędzie i elementy stałe, zabezpiecz narożniki oraz ułóż fartuch tak, aby zaprawa nie utworzyła twardego mostka."
        },
        {
          "@type": "HowToStep",
          "position": 6,
          "name": "Zabezpiecz konieczne przejścia",
          "text": "Na odcinkach przecinających zaplanowaną szczelinę zastosuj właściwą osłonę, bez złączek i z zapasem wynikającym z dokumentacji wykonawczej."
        },
        {
          "@type": "HowToStep",
          "position": 7,
          "name": "Odbierz układ przed jastrychem",
          "text": "Wykonaj dokumentację zdjęciową, sprawdź położenie rur względem szczelin, przeprowadź próbę szczelności i potwierdź z wykonawcą jastrychu plan pól."
        },
        {
          "@type": "HowToStep",
          "position": 8,
          "name": "Przenieś szczeliny na okładzinę",
          "text": "Przed klejeniem lub układaniem podłogi ustal, które szczeliny pozostają aktywne i jak zostaną wykończone w płytkach, drewnie, panelach lub żywicy."
        }
      ]
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/#faq",
      "inLanguage": "pl-PL",
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Jaka powinna być grubość taśmy brzegowej do ogrzewania podłogowego?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie należy wybierać jej wyłącznie na podstawie jednej wartości z internetu. Taśma ma zachować wymaganą podatność po ściśnięciu, a jej grubość, materiał i dopuszczalne odkształcenie muszą odpowiadać przewidywanemu ruchowi jastrychu oraz dokumentacji systemu podłogowego."
          }
        },
        {
          "@type": "Question",
          "name": "Czy taśmę brzegową układa się przy każdej ścianie?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Tak — płyta jastrychu powinna być podatnie oddzielona od wszystkich ścian i innych stałych elementów pionowych, takich jak słupy, kominy, schody, ościeża czy piony instalacyjne. Taśma tylko przy ścianach zewnętrznych nie zapewnia ciągłego oddzielenia."
          }
        },
        {
          "@type": "Question",
          "name": "Kiedy trzeba wykonać dylatację w ogrzewaniu podłogowym?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Decyzja wynika z dylatacji konstrukcyjnych, geometrii i wymiarów pól, przewężeń, progów, elementów stałych, rodzaju jastrychu, etapów robót oraz wymagań okładziny. Układ szczelin trzeba ustalić przed trasowaniem pętli, a nie dopiero w dniu wykonywania wylewki."
          }
        },
        {
          "@type": "Question",
          "name": "Czy każde pole jastrychu większe niż 40 m² wymaga takiego samego podziału?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Wartość 40 m², podobnie jak bok 8 m czy proporcja 2:1, może być użytecznym sygnałem kontrolnym, lecz nie jest uniwersalnym projektem. Ostateczne wymagania zależą od materiału, technologii, geometrii, podłoża i dokumentacji wykonawcy jastrychu."
          }
        },
        {
          "@type": "Question",
          "name": "Czy rura ogrzewania podłogowego może przechodzić przez szczelinę ruchową?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Jeżeli przejścia nie można uniknąć, należy ograniczyć liczbę przewodów, prowadzić je możliwie prostopadle, zastosować odpowiednią osłonę obejmującą strefę ruchu i nie wykonywać w niej połączeń. Najkorzystniej przypisać osobne pętle do osobnych pól."
          }
        },
        {
          "@type": "Question",
          "name": "Czy można położyć płytkę w całości nad dylatacją jastrychu?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Aktywnej dylatacji konstrukcyjnej lub ruchowej nie wolno przypadkowo zamknąć płytką i sztywną fugą. Szczelinę trzeba skoordynować z układem okładziny i wykończyć rozwiązaniem dopuszczonym dla danego systemu posadzkowego."
          }
        },
        {
          "@type": "Question",
          "name": "Czy jastrych anhydrytowy nie potrzebuje dylatacji?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "To zbyt duże uproszczenie. Anhydryt może pozwalać na inne pola niż jastrych cementowy, ale nadal trzeba respektować dylatacje konstrukcyjne, oddzielenia obwodowe, przewężenia i wymagania konkretnego wyrobu oraz technologii wykonania."
          }
        },
        {
          "@type": "Question",
          "name": "Czy w przejściu drzwiowym zawsze wykonuje się szczelinę?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Próg jest ważnym punktem kontrolnym, ponieważ łączy różne pomieszczenia i często różne pola jastrychu. O potrzebie oraz rodzaju szczeliny decydują geometria, układ konstrukcji, technologia jastrychu, pętle i okładzina — nie sam fakt istnienia drzwi."
          }
        },
        {
          "@type": "Question",
          "name": "Czy można naciąć dylatację po wykonaniu wylewki?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Tylko wtedy, gdy jest to zaplanowane nacięcie kontrolne, znana jest jego wymagana głębokość i potwierdzono dokładne położenie rur. Przypadkowe cięcie bez rzutu oraz dokumentacji zdjęciowej grozi uszkodzeniem instalacji."
          }
        },
        {
          "@type": "Question",
          "name": "Kto powinien ustalić rozmieszczenie dylatacji i przebieg pętli?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Wymaga to koordynacji projektu konstrukcji, projektu ogrzewania, technologii jastrychu i planu okładziny. Projektant ogrzewania rozplanowuje pętle względem znanych szczelin, ale nie zastępuje konstruktora ani wykonawcy odpowiedzialnego za właściwości jastrychu."
          }
        }
      ]
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/",
      "image": {
        "@type": "ImageObject",
        "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp"
      },
      "jobTitle": "Projektant instalacji sanitarnych i specjalista systemów HVAC",
      "description": "Projektant wodnego ogrzewania podłogowego, autor technicznych opracowań branżowych i właściciel serwisów Projekt-Ogrzewania.pl, Remont.biz.pl oraz Sobir.pl.",
      "knowsAbout": [
        "projektowanie ogrzewania podłogowego",
        "obliczenia obciążenia cieplnego",
        "hydraulika instalacji grzewczych",
        "jastrychy grzewcze",
        "dylatacje ogrzewanych podłóg",
        "systemy HVAC"
      ],
      "sameAs": [
        "https://projekt-ogrzewania.pl/",
        "https://remont.biz.pl/",
        "https://sobir.pl/"
      ],
      "owns": [
        {
          "@id": "https://projekt-ogrzewania.pl/#organization"
        },
        {
          "@id": "https://remont.biz.pl/#organization"
        },
        {
          "@id": "https://sobir.pl/#organization"
        }
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "owner": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "owner": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      },
      "owner": {
        "@id": "https://projekt-ogrzewania.pl/#/schema/person/8f64aaec51c6581f1ab55e3d7f3a82d1"
      }
    },
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "inLanguage": "pl-PL",
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "potentialAction": {
        "@type": "SearchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://projekt-ogrzewania.pl/?s={search_term_string}"
        },
        "query-input": "required name=search_term_string"
      }
    }
  ]
}
</script>

<script>
(function () {
  "use strict";

  function rkJointInit() {
    var root = document.getElementById("rk-joint-guide");
    if (!root) {
      return false;
    }
    if (root.getAttribute("data-rk-joint-ready") === "true") {
      return true;
    }

    var form = document.getElementById("rk-joint-audit-form");
    var lengthInput = document.getElementById("rk-joint-length");
    var widthInput = document.getElementById("rk-joint-width");
    var shapeInput = document.getElementById("rk-joint-shape");
    var screedInput = document.getElementById("rk-joint-screed");
    var finishInput = document.getElementById("rk-joint-finish");
    var doorInput = document.getElementById("rk-joint-door");
    var structuralInput = document.getElementById("rk-joint-structural");
    var obstacleInput = document.getElementById("rk-joint-obstacle");
    var crossingInput = document.getElementById("rk-joint-crossing");
    var resetButton = document.getElementById("rk-joint-audit-reset");
    var areaOutput = document.getElementById("rk-joint-result-area");
    var ratioOutput = document.getElementById("rk-joint-result-ratio");
    var flagsOutput = document.getElementById("rk-joint-result-flags");
    var statusBox = document.getElementById("rk-joint-audit-status");
    var statusTitle = document.getElementById("rk-joint-audit-title");
    var statusCopy = document.getElementById("rk-joint-audit-copy");
    var listOutput = document.getElementById("rk-joint-audit-list");
    var roomPath = document.getElementById("rk-joint-plan-room");
    var guidePath = document.getElementById("rk-joint-plan-guide");
    var structuralPath = document.getElementById("rk-joint-plan-structural");
    var doorShape = document.getElementById("rk-joint-plan-door");
    var obstacleShape = document.getElementById("rk-joint-plan-obstacle");
    var planLabel = document.getElementById("rk-joint-plan-label");

    var required = [
      form,
      lengthInput,
      widthInput,
      shapeInput,
      screedInput,
      finishInput,
      doorInput,
      structuralInput,
      obstacleInput,
      crossingInput,
      resetButton,
      areaOutput,
      ratioOutput,
      flagsOutput,
      statusBox,
      statusTitle,
      statusCopy,
      listOutput,
      roomPath,
      guidePath,
      structuralPath,
      doorShape,
      obstacleShape,
      planLabel
    ];

    var ready = true;
    required.forEach(function (element) {
      if (!element) {
        ready = false;
      }
    });
    if (!ready) {
      return false;
    }

    function rkJointClamp(value, minimum, maximum, fallback) {
      var number = Number(String(value).replace(",", "."));
      if (!Number.isFinite(number)) {
        return fallback;
      }
      return Math.min(maximum, Math.max(minimum, number));
    }

    function rkJointFormat(value, digits) {
      return value.toLocaleString("pl-PL", {
        minimumFractionDigits: digits,
        maximumFractionDigits: digits
      });
    }

    function rkJointAddMessage(messages, text) {
      messages.push(text);
    }

    function rkJointRenderList(messages) {
      while (listOutput.firstChild) {
        listOutput.removeChild(listOutput.firstChild);
      }
      messages.forEach(function (message) {
        var item = document.createElement("li");
        item.textContent = message;
        listOutput.appendChild(item);
      });
    }

    function rkJointSetPlan(shape, showDoor, showStructural, showObstacle) {
      if (shape === "lshape") {
        roomPath.setAttribute("d", "M110 76 H610 V176 H430 V316 H110 Z");
        guidePath.setAttribute("d", "M430 176 H610");
        planLabel.textContent = "KSZTAŁT L • NAROŻNIK WEWNĘTRZNY";
      } else if (shape === "ushape") {
        roomPath.setAttribute("d", "M110 76 H260 V220 H460 V76 H610 V316 H110 Z");
        guidePath.setAttribute("d", "M260 76 V220 M460 76 V220");
        planLabel.textContent = "KSZTAŁT U • DWA NAROŻNIKI WEWNĘTRZNE";
      } else {
        roomPath.setAttribute("d", "M110 76 H610 V316 H110 Z");
        guidePath.setAttribute("d", "M360 76 V316");
        planLabel.textContent = "PROSTOKĄT • PUNKT KONTROLNY";
      }

      doorShape.style.display = showDoor ? "block" : "none";
      structuralPath.style.display = showStructural ? "block" : "none";
      obstacleShape.style.display = showObstacle ? "block" : "none";
    }

    function rkJointUpdate() {
      var length = rkJointClamp(lengthInput.value, 1, 30, 8);
      var width = rkJointClamp(widthInput.value, 1, 30, 5);
      var longer = Math.max(length, width);
      var shorter = Math.min(length, width);
      var area = length * width;
      var ratio = longer / shorter;
      var shape = shapeInput.value;
      var screed = screedInput.value;
      var finish = finishInput.value;
      var hasDoor = doorInput.checked;
      var hasStructural = structuralInput.checked;
      var hasObstacle = obstacleInput.checked;
      var hasCrossing = crossingInput.checked;
      var flags = 0;
      var messages = [];

      if (area > 40) {
        flags += 1;
        rkJointAddMessage(messages, "Pole odniesienia przekracza 40 m². To sygnał do sprawdzenia dopuszczalnej powierzchni w dokumentacji zastosowanego jastrychu.");
      } else {
        rkJointAddMessage(messages, "Powierzchnia nie przekracza kontrolnej wartości 40 m², ale sama powierzchnia nie przesądza o braku szczelin.");
      }

      if (longer > 8) {
        flags += 1;
        rkJointAddMessage(messages, "Dłuższy bok przekracza 8 m. Zweryfikuj dopuszczalne wymiary pola oraz przewidywany ruch płyty.");
      }

      if (ratio > 2) {
        flags += 1;
        rkJointAddMessage(messages, "Proporcja boków przekracza 2:1. Wydłużone pole wymaga osobnej oceny kierunku i miejsca podziału.");
      }

      if (shape !== "rectangle") {
        flags += 1;
        rkJointAddMessage(messages, "Kształt ma narożnik wewnętrzny. W tym miejscu mogą koncentrować się naprężenia, dlatego podział powinien wynikać z rzutu i technologii jastrychu.");
      }

      if (hasDoor) {
        flags += 1;
        rkJointAddMessage(messages, "Przejście drzwiowe lub przewężenie wymaga koordynacji granicy pól z dobiegami pętli i późniejszą okładziną.");
      }

      if (hasStructural) {
        flags += 2;
        rkJointAddMessage(messages, "Dylatację konstrukcyjną należy bezwzględnie respektować w jastrychu, trasach rur i okładzinie. Nie wolno jej zlikwidować warstwami podłogi.");
      }

      if (hasObstacle) {
        flags += 1;
        rkJointAddMessage(messages, "Słup, komin lub inny element stały trzeba obwodowo oddzielić, a jego położenie uwzględnić przy podziale pola.");
      }

      if (hasCrossing) {
        flags += 1;
        rkJointAddMessage(messages, "Ogranicz liczbę przejść rur, prowadź je prostopadle, zastosuj właściwe osłony i nie umieszczaj złączek w strefie szczeliny.");
      } else {
        rkJointAddMessage(messages, "Trasy nie przecinają planowanej granicy pól — utrzymaj przypisanie osobnych pętli do osobnych pól.");
      }

      if (screed === "anhydrite") {
        rkJointAddMessage(messages, "Dla jastrychu anhydrytowego zastosuj wymagania właściwe dla konkretnego produktu i technologii; nie kopiuj automatycznie ograniczeń jastrychu cementowego.");
      } else if (screed === "dry") {
        rkJointAddMessage(messages, "W systemie suchym podział i szczeliny wynikają z układu płyt, połączeń, podparcia i dokumentacji systemowej — klasyczne progi dla mokrego jastrychu mogą nie mieć zastosowania.");
      } else {
        rkJointAddMessage(messages, "Dla jastrychu cementowego sprawdź skurcz, projektowane pola, grubość, zbrojenie oraz procedurę nacinania i wygrzewania.");
      }

      if (finish === "tiles") {
        rkJointAddMessage(messages, "Płytki lub kamień wymagają przeniesienia aktywnych szczelin na okładzinę i skoordynowania ich z układem fug.");
      } else if (finish === "panels") {
        rkJointAddMessage(messages, "Dla paneli sprawdź pola pływającej okładziny, progi, luzy obwodowe i ograniczenia producenta systemu zamków.");
      } else if (finish === "wood") {
        rkJointAddMessage(messages, "Przy drewnie skoordynuj wilgotność, kierunek desek, technologię klejenia i sposób zachowania aktywnych szczelin podłoża.");
      } else {
        rkJointAddMessage(messages, "Przy żywicy rozróżnij aktywną dylatację od rysy możliwej do naprawy; nie każdą szczelinę wolno mostkować.");
      }

      lengthInput.value = String(length);
      widthInput.value = String(width);
      areaOutput.textContent = rkJointFormat(area, 1) + " m²";
      ratioOutput.textContent = rkJointFormat(ratio, 2) + " : 1";
      flagsOutput.textContent = String(flags);

      statusBox.classList.remove("is-warning");
      statusBox.classList.remove("is-danger");
      if (hasStructural) {
        statusBox.classList.add("is-danger");
        statusTitle.textContent = "Wymagana koordynacja z dylatacją konstrukcyjną";
        statusCopy.textContent = "Tego przebiegu nie można przesunąć ani przykryć tylko po to, aby uprościć układ pętli lub fug.";
      } else if (flags >= 3) {
        statusBox.classList.add("is-warning");
        statusTitle.textContent = "Pole wymaga świadomego podziału i koordynacji";
        statusCopy.textContent = "Kilka cech geometrii lub wykonania wskazuje, że jedna uniwersalna zasada nie wystarczy.";
      } else if (flags > 0) {
        statusBox.classList.add("is-warning");
        statusTitle.textContent = "Sprawdź wskazane punkty przed montażem";
        statusCopy.textContent = "Wynik nie przesądza o liczbie szczelin, ale wskazuje miejsca wymagające uzgodnienia.";
      } else {
        statusTitle.textContent = "Brak oczywistych sygnałów geometrycznych";
        statusCopy.textContent = "Nadal sprawdź technologię jastrychu, dylatacje konstrukcyjne i wymagania planowanej okładziny.";
      }

      rkJointSetPlan(shape, hasDoor, hasStructural, hasObstacle);
      rkJointRenderList(messages);
    }

    form.addEventListener("input", rkJointUpdate);
    form.addEventListener("change", rkJointUpdate);
    resetButton.addEventListener("click", function () {
      lengthInput.value = "8";
      widthInput.value = "5";
      shapeInput.value = "rectangle";
      screedInput.value = "cement";
      finishInput.value = "tiles";
      doorInput.checked = true;
      structuralInput.checked = false;
      obstacleInput.checked = false;
      crossingInput.checked = false;
      rkJointUpdate();
    });

    root.querySelectorAll('.rk-joint-nav a[href^="#rk-joint-"]').forEach(function (link) {
      link.addEventListener("click", function (event) {
        var target = document.querySelector(link.getAttribute("href"));
        if (!target) {
          return;
        }
        event.preventDefault();
        var behavior = "smooth";
        if (typeof window.matchMedia === "function") {
          if (window.matchMedia("(prefers-reduced-motion: reduce)").matches) {
            behavior = "auto";
          }
        }
        target.scrollIntoView({
          behavior: behavior,
          block: "start"
        });
      });
    });

    var progressBar = root.querySelector(".rk-joint-progress");
    function rkJointProgress() {
      if (!progressBar) {
        return;
      }
      var rect = root.getBoundingClientRect();
      var travel = rect.height - window.innerHeight;
      var passed = Math.min(Math.max(-rect.top, 0), Math.max(travel, 0));
      var percentage = travel > 0 ? passed / travel * 100 : 0;
      progressBar.style.width = percentage.toFixed(2) + "%";
    }

    window.addEventListener("scroll", rkJointProgress, { passive: true });
    window.addEventListener("resize", rkJointProgress);
    rkJointUpdate();
    rkJointProgress();
    root.setAttribute("data-rk-joint-ready", "true");
    return true;
  }

  function rkJointBoot() {
    if (rkJointInit()) {
      return;
    }
    window.setTimeout(rkJointInit, 180);
    window.setTimeout(rkJointInit, 700);
    window.setTimeout(rkJointInit, 1600);
  }

  if (document.readyState === "loading") {
    document.addEventListener("DOMContentLoaded", rkJointBoot);
  } else {
    rkJointBoot();
  }

  window.addEventListener("load", rkJointBoot);

  if (typeof MutationObserver === "function") {
    var rkJointObserver = new MutationObserver(function () {
      if (rkJointInit()) {
        rkJointObserver.disconnect();
      }
    });
    rkJointObserver.observe(document.documentElement, {
      childList: true,
      subtree: true
    });
    window.setTimeout(function () {
      rkJointObserver.disconnect();
    }, 5000);
  }
})();
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">Izolacja brzegowa i dylatacje w instalacji ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Jak rodzaj okładziny podłogowej wpływa na wydajność ogrzewania podłogowego.</title>
		<link>https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/</link>
					<comments>https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/#comments</comments>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 19 Oct 2024 10:21:25 +0000</pubDate>
				<category><![CDATA[Efektywność ogrzewania]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Izolacja cieplna]]></category>
		<category><![CDATA[Komfort cieplny]]></category>
		<category><![CDATA[Nowoczesne technologie grzewcze]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Podłogi w domu]]></category>
		<category><![CDATA[Podłogówka]]></category>
		<category><![CDATA[Poradnik budowlany]]></category>
		<category><![CDATA[Porady dla domu]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie systemów grzewczych]]></category>
		<category><![CDATA[Rodzaje okładzin podłogowych]]></category>
		<category><![CDATA[Wybór materiałów budowlanych]]></category>
		<category><![CDATA[ceramika]]></category>
		<category><![CDATA[efektywność ogrzewania]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[opór cieplny]]></category>
		<category><![CDATA[podłogi drewniane]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<category><![CDATA[rodzaje okładzin]]></category>
		<category><![CDATA[systemy grzewcze]]></category>
		<category><![CDATA[wybór podłóg]]></category>
		<category><![CDATA[wykładziny]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=1393</guid>

					<description><![CDATA[<p>Wybór odpowiedniej okładziny podłogowej ma ogromny wpływ na efektywność ogrzewania podłogowego. Materiały takie jak marmur czy ceramika oferują doskonałe przewodnictwo cieplne, co przekłada się na lepszą wydajność systemu grzewczego. Natomiast drewno czy grube wykładziny dywanowe działają bardziej jako izolator, obniżając efektywność ogrzewania. Dowiedz się, jak różne materiały wpływają na komfort cieplny i koszty eksploatacji, oraz jakie okładziny najlepiej współpracują z ogrzewaniem podłogowym.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">Jak rodzaj okładziny podłogowej wpływa na wydajność ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-cover-guide {
    --rk-dark: #102536;
    --rk-navy: #15384d;
    --rk-blue: #078fbe;
    --rk-cyan: #25c7d8;
    --rk-cyan-soft: #e9fbfe;
    --rk-orange: #ff6a3d;
    --rk-orange-soft: #fff1eb;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #d69a16;
    --rk-yellow-soft: #fff8df;
    --rk-red: #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-cover-guide,
  #rk-cover-guide * { box-sizing: border-box; }
  #rk-cover-guide img,
  #rk-cover-guide svg { max-width: 100%; }
  #rk-cover-guide button,
  #rk-cover-guide input,
  #rk-cover-guide select,
  #rk-cover-guide label,
  #rk-cover-guide summary,
  #rk-cover-guide a { font: inherit; -webkit-tap-highlight-color: transparent; }
  #rk-cover-guide a {
    color: var(--rk-blue);
    font-weight: 780;
    text-decoration-thickness: 1px;
    text-underline-offset: 3px;
  }
  #rk-cover-guide a:hover,
  #rk-cover-guide a:focus-visible { color: var(--rk-red); }
  #rk-cover-guide p,
  #rk-cover-guide ul,
  #rk-cover-guide ol { margin-top: 0; margin-bottom: 1.08em; }
  #rk-cover-guide h2,
  #rk-cover-guide h3,
  #rk-cover-guide h4 {
    margin-top: 0;
    color: var(--rk-dark);
    font-weight: 920;
    letter-spacing: -.035em;
    line-height: 1.15;
  }
  #rk-cover-guide h2 { margin-bottom: 18px; font-size: clamp(1.72rem, 4vw, 2.68rem); }
  #rk-cover-guide h3 { margin-bottom: 11px; font-size: clamp(1.12rem, 2.35vw, 1.46rem); }
  #rk-cover-guide h4 { margin-bottom: 8px; font-size: 1.02rem; }
  #rk-cover-guide strong { color: var(--rk-dark); }
  #rk-cover-guide [hidden] { display: none !important; }

  #rk-cover-guide .rk-cover-shell {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 26px;
    background: var(--rk-white);
    box-shadow: 0 24px 70px rgba(16, 37, 54, .11);
  }
  #rk-cover-guide .rk-cover-hero {
    position: relative;
    overflow: hidden;
    padding: clamp(38px, 7vw, 78px) clamp(25px, 6vw, 76px) 42px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 91% 4%, rgba(37, 199, 216, .31), transparent 28%),
      radial-gradient(circle at 8% 100%, rgba(255, 106, 61, .24), transparent 30%),
      linear-gradient(135deg, #0d2332 0%, #143e53 55%, #175b62 100%);
  }
  #rk-cover-guide .rk-cover-hero::after {
    position: absolute;
    right: -55px;
    bottom: -120px;
    width: 350px;
    height: 350px;
    border: 46px solid rgba(255, 255, 255, .05);
    border-radius: 50%;
    content: "";
  }
  #rk-cover-guide .rk-cover-kicker {
    position: relative;
    z-index: 1;
    display: inline-flex;
    align-items: center;
    gap: 9px;
    margin-bottom: 15px;
    color: #78efff;
    font-size: .69rem;
    font-weight: 950;
    letter-spacing: .09em;
    line-height: 1.2;
    text-transform: uppercase;
  }
  #rk-cover-guide .rk-cover-kicker::before {
    width: 9px;
    height: 9px;
    border-radius: 50%;
    background: var(--rk-orange);
    box-shadow: 0 0 0 6px rgba(255, 106, 61, .14);
    content: "";
  }
  #rk-cover-guide .rk-cover-hero-title {
    position: relative;
    z-index: 1;
    max-width: 980px;
    margin: 0 0 19px;
    color: var(--rk-white);
    font-size: clamp(2.05rem, 5.4vw, 4.35rem);
    font-weight: 950;
    letter-spacing: -.055em;
    line-height: 1.01;
  }
  #rk-cover-guide .rk-cover-hero-title span { color: #78efff; }
  #rk-cover-guide .rk-cover-lead {
    position: relative;
    z-index: 1;
    max-width: 920px;
    margin-bottom: 25px;
    color: #d5e9f1;
    font-size: clamp(1rem, 2.15vw, 1.24rem);
    line-height: 1.65;
  }
  #rk-cover-guide .rk-cover-hero-tags,
  #rk-cover-guide .rk-cover-byline {
    position: relative;
    z-index: 1;
    display: flex;
    flex-wrap: wrap;
    gap: 9px;
  }
  #rk-cover-guide .rk-cover-hero-tags { margin-bottom: 22px; }
  #rk-cover-guide .rk-cover-hero-tag {
    padding: 8px 12px;
    border: 1px solid rgba(255, 255, 255, .18);
    border-radius: 999px;
    color: #e8f7fb;
    background: rgba(255, 255, 255, .07);
    font-size: .68rem;
    font-weight: 850;
  }
  #rk-cover-guide .rk-cover-byline {
    padding-top: 18px;
    border-top: 1px solid rgba(255, 255, 255, .15);
    color: #bdd6df;
    font-size: .68rem;
  }
  #rk-cover-guide .rk-cover-byline strong { color: var(--rk-white); }
  #rk-cover-guide .rk-cover-hero-metrics {
    position: relative;
    z-index: 1;
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 12px;
    margin-top: 27px;
  }
  #rk-cover-guide .rk-cover-hero-metric {
    padding: 16px 17px;
    border: 1px solid rgba(255, 255, 255, .15);
    border-radius: 15px;
    background: rgba(7, 27, 40, .34);
  }
  #rk-cover-guide .rk-cover-hero-metric b {
    display: block;
    margin-bottom: 4px;
    color: #78efff;
    font-size: .78rem;
  }
  #rk-cover-guide .rk-cover-hero-metric span {
    display: block;
    color: #d5e9f1;
    font-size: .68rem;
    line-height: 1.5;
  }

  #rk-cover-guide .rk-cover-nav {
    display: grid;
    grid-template-columns: auto minmax(0, 1fr);
    gap: 14px;
    align-items: start;
    padding: 18px clamp(20px, 4vw, 46px);
    border-bottom: 1px solid var(--rk-line);
    background: var(--rk-white);
  }
  #rk-cover-guide .rk-cover-nav-label {
    padding-top: 8px;
    color: var(--rk-dark);
    font-size: .62rem;
    font-weight: 950;
    letter-spacing: .08em;
    text-transform: uppercase;
    white-space: nowrap;
  }
  #rk-cover-guide .rk-cover-nav-track {
    display: flex;
    flex-wrap: wrap;
    gap: 7px;
    min-width: 0;
  }
  #rk-cover-guide .rk-cover-nav a {
    display: inline-flex;
    align-items: center;
    min-height: 36px;
    padding: 8px 12px;
    border-radius: 999px;
    color: var(--rk-dark);
    background: #f0f6f8;
    font-size: .64rem;
    font-weight: 900;
    line-height: 1.2;
    text-decoration: none;
  }
  #rk-cover-guide .rk-cover-nav a:hover,
  #rk-cover-guide .rk-cover-nav a:focus-visible {
    color: var(--rk-white);
    background: var(--rk-blue);
  }

  #rk-cover-guide .rk-cover-content { padding: 0 clamp(20px, 5.4vw, 64px) 64px; }
  #rk-cover-guide .rk-cover-section {
    padding: clamp(42px, 7vw, 76px) 0;
    border-bottom: 1px solid var(--rk-line);
    scroll-margin-top: 18px;
  }
  #rk-cover-guide .rk-cover-section:last-of-type { border-bottom: 0; }
  #rk-cover-guide .rk-cover-eyebrow {
    display: block;
    margin-bottom: 10px;
    color: var(--rk-blue);
    font-size: .68rem;
    font-weight: 950;
    letter-spacing: .075em;
    text-transform: uppercase;
  }
  #rk-cover-guide .rk-cover-intro {
    max-width: 940px;
    color: var(--rk-text);
    font-size: 1.08rem;
  }
  #rk-cover-guide .rk-cover-answer,
  #rk-cover-guide .rk-cover-note,
  #rk-cover-guide .rk-cover-warning,
  #rk-cover-guide .rk-cover-success {
    margin: 25px 0;
    padding: 22px 23px;
    border-radius: 16px;
  }
  #rk-cover-guide .rk-cover-answer {
    border-left: 5px solid var(--rk-cyan);
    background: var(--rk-cyan-soft);
  }
  #rk-cover-guide .rk-cover-note {
    border-left: 5px solid var(--rk-blue);
    background: var(--rk-soft);
  }
  #rk-cover-guide .rk-cover-warning {
    border-left: 5px solid var(--rk-orange);
    background: var(--rk-orange-soft);
  }
  #rk-cover-guide .rk-cover-success {
    border-left: 5px solid var(--rk-green);
    background: var(--rk-green-soft);
  }
  #rk-cover-guide .rk-cover-answer p:last-child,
  #rk-cover-guide .rk-cover-note p:last-child,
  #rk-cover-guide .rk-cover-warning p:last-child,
  #rk-cover-guide .rk-cover-success p:last-child { margin-bottom: 0; }
  #rk-cover-guide .rk-cover-grid-2,
  #rk-cover-guide .rk-cover-grid-3,
  #rk-cover-guide .rk-cover-grid-4 {
    display: grid;
    gap: 15px;
    margin: 25px 0;
  }
  #rk-cover-guide .rk-cover-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-cover-guide .rk-cover-grid-3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-cover-guide .rk-cover-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-cover-guide .rk-cover-card {
    padding: 22px;
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    background: var(--rk-white);
    box-shadow: 0 10px 30px rgba(16, 37, 54, .055);
  }
  #rk-cover-guide .rk-cover-card p:last-child { margin-bottom: 0; }
  #rk-cover-guide .rk-cover-card-icon,
  #rk-cover-guide .rk-cover-number {
    display: inline-grid;
    place-items: center;
    width: 38px;
    height: 38px;
    margin-bottom: 14px;
    border-radius: 12px;
    color: var(--rk-white);
    background: var(--rk-blue);
    font-size: .82rem;
    font-weight: 950;
  }
  #rk-cover-guide .rk-cover-card.is-orange .rk-cover-card-icon { background: var(--rk-orange); }
  #rk-cover-guide .rk-cover-card.is-green .rk-cover-card-icon { background: var(--rk-green); }
  #rk-cover-guide .rk-cover-card.is-purple .rk-cover-card-icon { background: var(--rk-purple); }
  #rk-cover-guide .rk-cover-formula {
    margin: 25px 0;
    padding: 24px;
    border: 1px solid #b9e4ec;
    border-radius: 17px;
    text-align: center;
    background: linear-gradient(135deg, #f7fdff, #ecfafc);
  }
  #rk-cover-guide .rk-cover-formula strong {
    display: block;
    margin-bottom: 7px;
    color: var(--rk-dark);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(1.25rem, 3vw, 1.8rem);
  }
  #rk-cover-guide .rk-cover-formula span { color: var(--rk-muted); font-size: .78rem; }
  #rk-cover-guide .rk-cover-list {
    display: grid;
    gap: 10px;
    padding: 0;
    list-style: none;
  }
  #rk-cover-guide .rk-cover-list li {
    position: relative;
    margin: 0;
    padding: 12px 14px 12px 43px;
    border: 1px solid var(--rk-line);
    border-radius: 12px;
    background: var(--rk-white);
  }
  #rk-cover-guide .rk-cover-list li::before {
    position: absolute;
    top: 13px;
    left: 14px;
    display: grid;
    place-items: center;
    width: 20px;
    height: 20px;
    border-radius: 50%;
    color: var(--rk-white);
    background: var(--rk-green);
    content: "✓";
    font-size: .62rem;
    font-weight: 950;
  }

  #rk-cover-guide .rk-cover-table-wrap {
    overflow: hidden;
    margin: 24px 0;
    border: 1px solid var(--rk-line);
    border-radius: 16px;
  }
  #rk-cover-guide table {
    width: 100%;
    border-collapse: collapse;
    color: var(--rk-text);
    font-size: .82rem;
  }
  #rk-cover-guide th,
  #rk-cover-guide td {
    padding: 15px 16px;
    border-right: 1px solid var(--rk-line);
    border-bottom: 1px solid var(--rk-line);
    vertical-align: top;
    text-align: left;
  }
  #rk-cover-guide th:last-child,
  #rk-cover-guide td:last-child { border-right: 0; }
  #rk-cover-guide tr:last-child td { border-bottom: 0; }
  #rk-cover-guide th {
    color: var(--rk-white);
    background: var(--rk-navy);
    font-size: .68rem;
    font-weight: 900;
    letter-spacing: .025em;
  }

  #rk-cover-guide .rk-cover-tool {
    overflow: hidden;
    margin: 29px 0;
    border-radius: 22px;
    color: #e7f4f8;
    background: var(--rk-dark);
    box-shadow: 0 20px 55px rgba(16, 37, 54, .2);
  }
  #rk-cover-guide .rk-cover-tool-head {
    padding: clamp(25px, 5vw, 42px);
    background:
      radial-gradient(circle at 90% 0, rgba(37, 199, 216, .2), transparent 32%),
      linear-gradient(135deg, #15384d, #173344);
  }
  #rk-cover-guide .rk-cover-tool-head h3 {
    margin-bottom: 8px;
    color: var(--rk-white);
    font-size: clamp(1.45rem, 3.8vw, 2.45rem);
  }
  #rk-cover-guide .rk-cover-tool-head p { margin-bottom: 0; color: #c9e0e8; }
  #rk-cover-guide .rk-cover-tool-body { padding: clamp(20px, 4vw, 34px); }
  #rk-cover-guide .rk-cover-step {
    margin-bottom: 23px;
    padding: 22px;
    border: 1px solid rgba(136, 202, 220, .25);
    border-radius: 17px;
    background: rgba(255, 255, 255, .035);
  }
  #rk-cover-guide .rk-cover-step:last-child { margin-bottom: 0; }
  #rk-cover-guide .rk-cover-step-title {
    display: flex;
    gap: 12px;
    align-items: center;
    margin-bottom: 18px;
  }
  #rk-cover-guide .rk-cover-step-title b {
    display: grid;
    flex: 0 0 36px;
    place-items: center;
    width: 36px;
    height: 36px;
    border-radius: 11px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
  }
  #rk-cover-guide .rk-cover-step-title h4 { margin: 0; color: var(--rk-white); font-size: 1.16rem; }
  #rk-cover-guide .rk-cover-fields {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 14px;
  }
  #rk-cover-guide .rk-cover-candidates {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 16px;
  }
  #rk-cover-guide .rk-cover-candidate {
    min-width: 0;
    padding: 20px;
    border: 1px solid rgba(37, 199, 216, .32);
    border-radius: 16px;
    background: rgba(10, 34, 48, .56);
  }
  #rk-cover-guide .rk-cover-candidate.is-b { border-color: rgba(255, 106, 61, .38); }
  #rk-cover-guide .rk-cover-candidate h4 {
    display: flex;
    align-items: center;
    gap: 9px;
    color: var(--rk-white);
  }
  #rk-cover-guide .rk-cover-candidate-legend {
    display: flex;
    align-items: center;
    gap: 9px;
    padding: 0 7px;
    color: var(--rk-white);
    font-size: 1.02rem;
    font-weight: 920;
  }
  #rk-cover-guide .rk-cover-dot {
    width: 12px;
    height: 12px;
    border-radius: 50%;
    background: var(--rk-cyan);
    box-shadow: 0 0 0 5px rgba(37, 199, 216, .12);
  }
  #rk-cover-guide .rk-cover-candidate.is-b .rk-cover-dot {
    background: var(--rk-orange);
    box-shadow: 0 0 0 5px rgba(255, 106, 61, .12);
  }
  #rk-cover-guide .rk-cover-candidate-fields {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 12px;
  }
  #rk-cover-guide .rk-cover-field { min-width: 0; }
  #rk-cover-guide .rk-cover-field.is-wide { grid-column: 1 / -1; }
  #rk-cover-guide .rk-cover-field label {
    display: block;
    margin-bottom: 5px;
    color: #dff3f8;
    font-size: .67rem;
    font-weight: 850;
    line-height: 1.35;
  }
  #rk-cover-guide .rk-cover-field input,
  #rk-cover-guide .rk-cover-field select {
    width: 100%;
    min-height: 45px;
    padding: 10px 12px;
    border: 1px solid #b8cbd3;
    border-radius: 10px;
    color: var(--rk-dark);
    background: var(--rk-white);
    font-size: .77rem;
    font-weight: 700;
  }
  #rk-cover-guide .rk-cover-field small {
    display: block;
    margin-top: 5px;
    color: #8fb6c5;
    font-size: .59rem;
    line-height: 1.42;
  }
  #rk-cover-guide .rk-cover-field input:focus,
  #rk-cover-guide .rk-cover-field select:focus {
    outline: 3px solid rgba(37, 199, 216, .25);
    border-color: var(--rk-cyan);
  }
  #rk-cover-guide .rk-cover-tool-button {
    width: 100%;
    margin-top: 18px;
    padding: 14px 18px;
    border: 0;
    border-radius: 12px;
    color: var(--rk-dark);
    background: linear-gradient(135deg, #61e7f3, #25c7d8);
    cursor: pointer;
    font-size: .84rem;
    font-weight: 950;
  }
  #rk-cover-guide .rk-cover-tool-button:hover,
  #rk-cover-guide .rk-cover-tool-button:focus-visible { filter: brightness(1.06); }
  #rk-cover-guide .rk-cover-result-head {
    display: grid;
    grid-template-columns: minmax(0, 1fr) auto;
    gap: 16px;
    align-items: start;
    margin-bottom: 18px;
  }
  #rk-cover-guide .rk-cover-result-head h4 { margin-bottom: 5px; color: var(--rk-white); }
  #rk-cover-guide .rk-cover-result-head p { margin-bottom: 0; color: #bcd7e1; font-size: .74rem; }
  #rk-cover-guide .rk-cover-result-badge {
    display: inline-flex;
    padding: 8px 11px;
    border-radius: 999px;
    color: var(--rk-dark);
    background: var(--rk-cyan);
    font-size: .62rem;
    font-weight: 950;
    white-space: nowrap;
  }
  #rk-cover-guide .rk-cover-result-badge.is-warning { color: #4f3300; background: #ffd568; }
  #rk-cover-guide .rk-cover-result-badge.is-bad { color: #59150f; background: #ff9f91; }
  #rk-cover-guide .rk-cover-result-badge.is-neutral { color: #29205d; background: #c8c1ff; }
  #rk-cover-guide .rk-cover-result-grid {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 15px;
  }
  #rk-cover-guide .rk-cover-result-card {
    min-width: 0;
    padding: 18px;
    border: 1px solid rgba(136, 202, 220, .25);
    border-radius: 15px;
    background: rgba(255, 255, 255, .035);
  }
  #rk-cover-guide .rk-cover-result-card h4 { color: var(--rk-white); }
  #rk-cover-guide .rk-cover-metrics {
    display: grid;
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: 9px;
    margin: 15px 0;
  }
  #rk-cover-guide .rk-cover-metric {
    padding: 12px;
    border-radius: 11px;
    background: rgba(255, 255, 255, .06);
  }
  #rk-cover-guide .rk-cover-metric span {
    display: block;
    color: #93bac7;
    font-size: .56rem;
    font-weight: 850;
    letter-spacing: .035em;
    text-transform: uppercase;
  }
  #rk-cover-guide .rk-cover-metric strong {
    display: block;
    margin-top: 3px;
    color: var(--rk-white);
    font-size: .96rem;
  }
  #rk-cover-guide .rk-cover-bar {
    position: relative;
    overflow: hidden;
    height: 15px;
    margin: 10px 0 7px;
    border-radius: 999px;
    background: #264b5e;
  }
  #rk-cover-guide .rk-cover-bar span {
    display: block;
    width: 0;
    height: 100%;
    border-radius: inherit;
    background: linear-gradient(90deg, var(--rk-cyan), #66e5ef);
    transition: width .3s ease;
  }
  #rk-cover-guide .rk-cover-result-card.is-b .rk-cover-bar span {
    background: linear-gradient(90deg, var(--rk-orange), #ff9b78);
  }
  #rk-cover-guide .rk-cover-layer-stack {
    display: grid;
    gap: 6px;
    margin-top: 15px;
  }
  #rk-cover-guide .rk-cover-layer {
    display: flex;
    justify-content: space-between;
    gap: 12px;
    padding: 10px 12px;
    border-radius: 9px;
    color: var(--rk-dark);
    background: #dff8fb;
    font-size: .65rem;
    font-weight: 850;
  }
  #rk-cover-guide .rk-cover-layer.is-install { background: #ffe0d4; }
  #rk-cover-guide .rk-cover-layer.is-screed { color: #eef8fb; background: #466575; }
  #rk-cover-guide .rk-cover-diagnostics {
    display: grid;
    gap: 8px;
    margin-top: 14px;
  }
  #rk-cover-guide .rk-cover-diagnostic {
    padding: 10px 12px;
    border-left: 4px solid var(--rk-yellow);
    border-radius: 8px;
    color: #f5e9c5;
    background: rgba(214, 154, 22, .12);
    font-size: .67rem;
    line-height: 1.48;
  }
  #rk-cover-guide .rk-cover-diagnostic.is-good {
    border-color: #4cd7ac;
    color: #d8fff1;
    background: rgba(22, 131, 107, .16);
  }
  #rk-cover-guide .rk-cover-diagnostic.is-bad {
    border-color: #ff786b;
    color: #ffe1dc;
    background: rgba(217, 75, 61, .15);
  }
  #rk-cover-guide .rk-cover-questions {
    margin: 14px 0 0;
    padding-left: 19px;
    color: #d9eaf0;
    font-size: .68rem;
  }
  #rk-cover-guide .rk-cover-questions li { margin-bottom: 6px; }

  #rk-cover-guide .rk-cover-chart-card {
    margin-top: 16px;
    padding: 20px;
    border: 1px solid rgba(136, 202, 220, .25);
    border-radius: 16px;
    background: rgba(255, 255, 255, .035);
  }
  #rk-cover-guide .rk-cover-chart-head {
    display: flex;
    justify-content: space-between;
    gap: 16px;
    align-items: start;
    margin-bottom: 13px;
  }
  #rk-cover-guide .rk-cover-chart-head h4 { margin-bottom: 5px; color: var(--rk-white); }
  #rk-cover-guide .rk-cover-chart-head p { margin: 0; color: #bcd7e1; font-size: .68rem; }
  #rk-cover-guide .rk-cover-chart-legend {
    display: flex;
    flex-wrap: wrap;
    gap: 11px;
    justify-content: flex-end;
    color: #d9eaf0;
    font-size: .62rem;
    font-weight: 800;
  }
  #rk-cover-guide .rk-cover-chart-key {
    display: inline-flex;
    align-items: center;
    gap: 6px;
  }
  #rk-cover-guide .rk-cover-chart-key::before {
    width: 18px;
    height: 4px;
    border-radius: 999px;
    background: var(--rk-cyan);
    content: "";
  }
  #rk-cover-guide .rk-cover-chart-key.is-b::before { background: var(--rk-orange); }
  #rk-cover-guide .rk-cover-chart-key.is-demand::before {
    height: 2px;
    background: #ffd568;
  }
  #rk-cover-guide .rk-cover-chart-wrap {
    overflow: hidden;
    width: 100%;
    min-height: 350px;
    border-radius: 13px;
    background: #f8fcfd;
  }
  #rk-cover-guide .rk-cover-chart-wrap canvas {
    display: block;
    width: 100%;
    height: 350px;
  }
  #rk-cover-guide .rk-cover-chart-summary {
    margin: 11px 0 0;
    color: #a9c8d3;
    font-size: .63rem;
    line-height: 1.55;
  }
  #rk-cover-guide .rk-cover-result-status {
    display: inline-flex;
    margin-top: 8px;
    padding: 7px 10px;
    border-radius: 999px;
    color: #d8fff1;
    background: rgba(22, 131, 107, .22);
    font-size: .61rem;
    font-weight: 950;
  }
  #rk-cover-guide .rk-cover-result-status.is-warning {
    color: #fff2c9;
    background: rgba(214, 154, 22, .22);
  }
  #rk-cover-guide .rk-cover-result-status.is-bad {
    color: #ffe1dc;
    background: rgba(217, 75, 61, .22);
  }
  #rk-cover-guide .rk-cover-stack-scale {
    display: grid;
    gap: 6px;
    margin-top: 15px;
  }
  #rk-cover-guide .rk-cover-stack-segment {
    position: relative;
    overflow: hidden;
    min-height: 34px;
    padding: 8px 11px;
    border-radius: 9px;
    color: var(--rk-dark);
    background: #dff8fb;
    font-size: .63rem;
    font-weight: 850;
  }
  #rk-cover-guide .rk-cover-stack-segment.is-install { background: #ffe0d4; }
  #rk-cover-guide .rk-cover-stack-segment.is-extra { background: #e9e5ff; }
  #rk-cover-guide .rk-cover-stack-segment span { float: right; }
  #rk-cover-guide .rk-cover-data-note {
    margin-top: 12px;
    padding: 11px 13px;
    border-left: 4px solid var(--rk-cyan);
    border-radius: 9px;
    color: #d8eef4;
    background: rgba(37, 199, 216, .08);
    font-size: .64rem;
  }

  #rk-cover-guide .rk-cover-sales-cta {
    margin: 36px 0;
    padding: clamp(25px, 5vw, 42px);
    border-radius: 20px;
    color: var(--rk-white);
    background:
      radial-gradient(circle at 90% 0, rgba(37, 199, 216, .22), transparent 30%),
      linear-gradient(135deg, #102536, #17445a);
  }
  #rk-cover-guide .rk-cover-sales-cta h3 { color: var(--rk-white); font-size: clamp(1.35rem, 3vw, 2rem); }
  #rk-cover-guide .rk-cover-sales-cta p { max-width: 920px; color: #d0e4eb; }
  #rk-cover-guide .rk-cover-cta-button {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    min-height: 50px;
    padding: 13px 20px;
    border-radius: 12px;
    color: var(--rk-dark) !important;
    background: linear-gradient(135deg, #63e6f1, #28c9d9);
    font-size: .79rem;
    font-weight: 950 !important;
    text-decoration: none !important;
  }
  #rk-cover-guide .rk-cover-cta-button:hover,
  #rk-cover-guide .rk-cover-cta-button:focus-visible { filter: brightness(1.07); }

  #rk-cover-guide .rk-cover-checklist {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 10px;
    margin: 24px 0;
    padding: 0;
    list-style: none;
  }
  #rk-cover-guide .rk-cover-checklist li {
    position: relative;
    margin: 0;
    padding: 14px 14px 14px 45px;
    border: 1px solid var(--rk-line);
    border-radius: 13px;
    background: var(--rk-soft);
  }
  #rk-cover-guide .rk-cover-checklist li::before {
    position: absolute;
    top: 14px;
    left: 14px;
    display: grid;
    place-items: center;
    width: 22px;
    height: 22px;
    border: 2px solid var(--rk-cyan);
    border-radius: 7px;
    color: var(--rk-blue);
    content: "✓";
    font-size: .65rem;
    font-weight: 950;
  }
  #rk-cover-guide .rk-cover-faq {
    display: grid;
    gap: 11px;
    margin-top: 24px;
  }
  #rk-cover-guide .rk-cover-faq details {
    overflow: hidden;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: var(--rk-white);
  }
  #rk-cover-guide .rk-cover-faq summary {
    position: relative;
    padding: 17px 48px 17px 18px;
    color: var(--rk-dark);
    cursor: pointer;
    font-weight: 880;
    list-style: none;
  }
  #rk-cover-guide .rk-cover-faq summary::-webkit-details-marker { display: none; }
  #rk-cover-guide .rk-cover-faq summary::after {
    position: absolute;
    top: 15px;
    right: 16px;
    display: grid;
    place-items: center;
    width: 27px;
    height: 27px;
    border-radius: 8px;
    color: var(--rk-white);
    background: var(--rk-blue);
    content: "+";
  }
  #rk-cover-guide .rk-cover-faq details[open] summary::after { content: "−"; }
  #rk-cover-guide .rk-cover-faq-answer {
    padding: 0 18px 17px;
    color: var(--rk-text);
  }
  #rk-cover-guide .rk-cover-faq-answer p:last-child { margin-bottom: 0; }
  #rk-cover-guide .rk-cover-sources {
    display: grid;
    gap: 11px;
    margin-top: 24px;
  }
  #rk-cover-guide .rk-cover-source {
    padding: 18px;
    border: 1px solid var(--rk-line);
    border-radius: 14px;
    background: var(--rk-soft);
  }
  #rk-cover-guide .rk-cover-source p { margin: 6px 0 0; color: var(--rk-muted); font-size: .77rem; }

  #rk-cover-guide .rk-cover-author {
    overflow: hidden;
    margin-top: 48px;
    border: 1px solid var(--rk-line);
    border-radius: 22px;
    background: var(--rk-soft);
    scroll-margin-top: 18px;
  }
  #rk-cover-guide .rk-cover-author > input {
    position: absolute;
    opacity: 0;
    pointer-events: none;
  }
  #rk-cover-guide .rk-cover-author-head {
    display: flex;
    justify-content: space-between;
    gap: 20px;
    align-items: end;
    padding: 28px 32px 22px;
    border-bottom: 1px solid var(--rk-line);
  }
  #rk-cover-guide .rk-cover-author-head h2 { margin-bottom: 6px; font-size: clamp(1.55rem, 3vw, 2.2rem); }
  #rk-cover-guide .rk-cover-author-head p { margin: 0; color: var(--rk-muted); }
  #rk-cover-guide .rk-cover-author-mark {
    max-width: 380px;
    color: var(--rk-blue);
    font-size: .61rem;
    font-weight: 950;
    letter-spacing: .06em;
    text-align: right;
  }
  #rk-cover-guide .rk-cover-author-layout {
    display: grid;
    grid-template-columns: 255px minmax(0, 1fr);
  }
  #rk-cover-guide .rk-cover-author-side {
    padding: 30px 24px;
    color: var(--rk-white);
    text-align: center;
    background: var(--rk-dark);
  }
  #rk-cover-guide .rk-cover-author-photo {
    overflow: hidden;
    width: 145px;
    height: 145px;
    margin: 0 auto 18px;
    border: 6px solid rgba(255, 255, 255, .16);
    border-radius: 50%;
    background: var(--rk-white);
  }
  #rk-cover-guide .rk-cover-author-photo img {
    display: block;
    width: 100%;
    height: 100%;
    object-fit: cover;
  }
  #rk-cover-guide .rk-cover-author-name { margin-bottom: 5px; font-size: 1.08rem; font-weight: 950; }
  #rk-cover-guide .rk-cover-author-role { color: #bdd4de; font-size: .68rem; line-height: 1.55; }
  #rk-cover-guide .rk-cover-author-social-label {
    margin-top: 24px;
    color: #8ca8b5;
    font-size: .58rem;
    font-weight: 950;
    letter-spacing: .06em;
    text-transform: uppercase;
  }
  #rk-cover-guide .rk-cover-author-social {
    display: flex;
    justify-content: center;
    gap: 9px;
    margin-top: 10px;
  }
  #rk-cover-guide .rk-cover-author-social a {
    display: grid;
    place-items: center;
    width: 40px;
    height: 40px;
    border: 1px solid #507080;
    border-radius: 50%;
    color: var(--rk-white);
  }
  #rk-cover-guide .rk-cover-author-social a:hover { border-color: var(--rk-cyan); color: var(--rk-cyan); }
  #rk-cover-guide .rk-cover-author-social svg { width: 18px; height: 18px; fill: currentColor; }
  #rk-cover-guide .rk-cover-author-main { padding: 30px 34px; }
  #rk-cover-guide .rk-cover-author-quote {
    position: relative;
    margin: 0 0 23px;
    padding: 22px 22px 22px 64px;
    border: 1px solid var(--rk-line);
    border-radius: 15px;
    background: var(--rk-white);
  }
  #rk-cover-guide .rk-cover-author-quote::before {
    position: absolute;
    top: 12px;
    left: 23px;
    color: var(--rk-cyan);
    content: "“";
    font-family: Georgia, serif;
    font-size: 3.7rem;
    font-weight: 900;
    line-height: 1;
  }
  #rk-cover-guide .rk-cover-author-quote p { margin: 0; color: var(--rk-dark); font-weight: 780; }
  #rk-cover-guide .rk-cover-author-tabs { display: flex; flex-wrap: wrap; gap: 9px; margin-bottom: 20px; }
  #rk-cover-guide .rk-cover-author-tab {
    padding: 8px 13px;
    border-radius: 999px;
    color: var(--rk-muted);
    background: #e2edf1;
    cursor: pointer;
    font-size: .67rem;
    font-weight: 900;
  }
  #rk-cover-guide .rk-cover-author-panel { display: none; color: var(--rk-text); }
  #rk-cover-guide #rk-cover-author-about:checked ~ .rk-cover-author-layout .rk-cover-author-panel-about,
  #rk-cover-guide #rk-cover-author-exp:checked ~ .rk-cover-author-layout .rk-cover-author-panel-exp,
  #rk-cover-guide #rk-cover-author-method:checked ~ .rk-cover-author-layout .rk-cover-author-panel-method { display: block; }
  #rk-cover-guide #rk-cover-author-about:checked ~ .rk-cover-author-layout label[for="rk-cover-author-about"],
  #rk-cover-guide #rk-cover-author-exp:checked ~ .rk-cover-author-layout label[for="rk-cover-author-exp"],
  #rk-cover-guide #rk-cover-author-method:checked ~ .rk-cover-author-layout label[for="rk-cover-author-method"] {
    color: var(--rk-white);
    background: var(--rk-blue);
  }
  #rk-cover-guide .rk-cover-mini-label {
    margin: 21px 0 8px;
    color: var(--rk-muted);
    font-size: .58rem;
    font-weight: 950;
    letter-spacing: .06em;
    text-transform: uppercase;
  }
  #rk-cover-guide .rk-cover-portals { display: flex; flex-wrap: wrap; gap: 8px; }
  #rk-cover-guide .rk-cover-portals a {
    padding: 7px 11px;
    border: 1px solid var(--rk-line);
    border-radius: 999px;
    background: var(--rk-white);
    font-size: .65rem;
    text-decoration: none;
  }

  @media (max-width: 900px) {
    #rk-cover-guide .rk-cover-hero-metrics,
    #rk-cover-guide .rk-cover-grid-3,
    #rk-cover-guide .rk-cover-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-cover-guide .rk-cover-fields { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-cover-guide .rk-cover-author-layout { grid-template-columns: 225px minmax(0, 1fr); }
  }
  @media (max-width: 720px) {
    #rk-cover-guide { margin-top: 18px; font-size: 16px; }
    #rk-cover-guide .rk-cover-shell { border-radius: 18px; }
    #rk-cover-guide .rk-cover-nav { grid-template-columns: 1fr; gap: 5px; }
    #rk-cover-guide .rk-cover-nav-label { padding: 0 0 4px 2px; }
    #rk-cover-guide .rk-cover-nav-track { width: 100%; }
    #rk-cover-guide .rk-cover-candidates,
    #rk-cover-guide .rk-cover-result-grid,
    #rk-cover-guide .rk-cover-grid-2,
    #rk-cover-guide .rk-cover-checklist { grid-template-columns: 1fr; }
    #rk-cover-guide .rk-cover-result-head { grid-template-columns: 1fr; }
    #rk-cover-guide .rk-cover-chart-head { display: block; }
    #rk-cover-guide .rk-cover-chart-legend { justify-content: flex-start; margin-top: 10px; }
    #rk-cover-guide .rk-cover-author-head { display: block; }
    #rk-cover-guide .rk-cover-author-mark { margin-top: 12px; text-align: left; }
    #rk-cover-guide .rk-cover-author-layout { grid-template-columns: 1fr; }
    #rk-cover-guide .rk-cover-table-wrap { overflow: visible; border: 0; }
    #rk-cover-guide table,
    #rk-cover-guide thead,
    #rk-cover-guide tbody,
    #rk-cover-guide tr,
    #rk-cover-guide th,
    #rk-cover-guide td { display: block; width: 100%; }
    #rk-cover-guide thead {
      position: absolute;
      overflow: hidden;
      width: 1px;
      height: 1px;
      clip: rect(0 0 0 0);
      white-space: nowrap;
    }
    #rk-cover-guide tr {
      overflow: hidden;
      margin-bottom: 13px;
      border: 1px solid var(--rk-line);
      border-radius: 14px;
      background: var(--rk-white);
    }
    #rk-cover-guide td {
      position: relative;
      padding: 39px 15px 14px;
      border-right: 0;
      border-bottom: 1px solid var(--rk-line);
    }
    #rk-cover-guide td::before {
      position: absolute;
      top: 11px;
      left: 15px;
      color: var(--rk-blue);
      content: attr(data-label);
      font-size: .58rem;
      font-weight: 950;
      letter-spacing: .045em;
      text-transform: uppercase;
    }
  }
  @media (max-width: 500px) {
    #rk-cover-guide .rk-cover-hero { padding-left: 21px; padding-right: 21px; }
    #rk-cover-guide .rk-cover-hero-metrics,
    #rk-cover-guide .rk-cover-grid-3,
    #rk-cover-guide .rk-cover-grid-4,
    #rk-cover-guide .rk-cover-fields,
    #rk-cover-guide .rk-cover-candidate-fields,
    #rk-cover-guide .rk-cover-metrics { grid-template-columns: 1fr; }
    #rk-cover-guide .rk-cover-content { padding-left: 16px; padding-right: 16px; }
    #rk-cover-guide .rk-cover-nav { padding-left: 15px; padding-right: 15px; }
    #rk-cover-guide .rk-cover-nav a { font-size: .61rem; }
    #rk-cover-guide .rk-cover-author-main { padding: 24px 18px; }
    #rk-cover-guide .rk-cover-author-quote { padding-left: 58px; }
    #rk-cover-guide .rk-cover-chart-wrap,
    #rk-cover-guide .rk-cover-chart-wrap canvas { min-height: 300px; height: 300px; }
  }
  @media (prefers-reduced-motion: reduce) {
    #rk-cover-guide *,
    #rk-cover-guide *::before,
    #rk-cover-guide *::after {
      scroll-behavior: auto !important;
      transition: none !important;
      animation: none !important;
    }
  }
</style>

<div id="rk-cover-guide">
  <article class="rk-cover-shell">
    <header class="rk-cover-hero">
      <span class="rk-cover-kicker">Opór okładziny • moc podłogi • aktualizacja 2026</span>
      <p class="rk-cover-hero-title">Okładzina na ogrzewanie podłogowe: <span>policz jej rzeczywisty wpływ na moc i temperaturę</span></p>
      <p class="rk-cover-lead">Płytka, winyl, panel, drewno i wykładzina nie tworzą jednej stałej mocy w W/m². Okładzina jest częścią drogi przepływu ciepła: im większy łączny opór warstw nad jastrychem, tym wyższa temperatura jest potrzebna bezpośrednio pod wykończeniem, aby uzyskać ten sam strumień ciepła.</p>
      <div class="rk-cover-hero-tags" aria-label="Zakres artykułu">
        <span class="rk-cover-hero-tag">opór R całego wykończenia</span>
        <span class="rk-cover-hero-tag">moc wymagana z powierzchni czynnej</span>
        <span class="rk-cover-hero-tag">temperatura powierzchni i pod okładziną</span>
        <span class="rk-cover-hero-tag">porównanie wariantu A i B</span>
        <span class="rk-cover-hero-tag">dynamiczny wykres</span>
      </div>
      <div class="rk-cover-byline">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Aktualizacja techniczna: <strong>2 września 2026 r.</strong></span>
        <span>Czas czytania: <strong>około 26 minut</strong></span>
      </div>
      <div class="rk-cover-hero-metrics" aria-label="Trzy najważniejsze wnioski">
        <div class="rk-cover-hero-metric"><b>Nie oceniaj po nazwie</b><span>Dwa panele albo dwie deski mogą mieć różny opór, limit temperatury i sposób montażu.</span></div>
        <div class="rk-cover-hero-metric"><b>Sumuj wszystkie warstwy</b><span>Okładzina, podkład, klej i dodatkowe warstwy nad jastrychem pracują razem.</span></div>
        <div class="rk-cover-hero-metric"><b>Najpierw policz W/m²</b><span>Znaczenie oporu można ocenić dopiero względem straty ciepła i aktywnej powierzchni podłogi.</span></div>
      </div>
    </header>

    <nav class="rk-cover-nav" aria-label="Skróty do wszystkich części artykułu">
      <span class="rk-cover-nav-label">Na skróty</span>
      <div class="rk-cover-nav-track">
        <a href="#rk-cover-szybka">Szybka odpowiedź</a>
        <a href="#rk-cover-mechanizm">Jak opór zmienia moc</a>
        <a href="#rk-cover-opor">Jak policzyć R</a>
        <a href="#rk-cover-limit">Czy 0,15 to limit</a>
        <a href="#rk-cover-zapotrzebowanie">Wymagana moc</a>
        <a href="#rk-cover-analizator">Analizator A/B</a>
        <a href="#rk-cover-wynik">Interpretacja wyniku</a>
        <a href="#rk-cover-plytki">Płytki i kamień</a>
        <a href="#rk-cover-winyl">Winyl LVT i SPC</a>
        <a href="#rk-cover-laminat">Panele laminowane</a>
        <a href="#rk-cover-drewno">Drewno i parkiet</a>
        <a href="#rk-cover-dywan">Dywan i wykładzina</a>
        <a href="#rk-cover-podklad">Podkład i klej</a>
        <a href="#rk-cover-powierzchnia">Temperatura powierzchni</a>
        <a href="#rk-cover-zasilanie">Temperatura zasilania</a>
        <a href="#rk-cover-pompa">Pompa ciepła</a>
        <a href="#rk-cover-rozstaw">Rozstaw rur</a>
        <a href="#rk-cover-hydraulika">Przepływy i pompa</a>
        <a href="#rk-cover-zmiana">Zmiana posadzki</a>
        <a href="#rk-cover-bledy">Najczęstsze błędy</a>
        <a href="#rk-cover-checklista">Checklista</a>
        <a href="#rk-cover-faq">FAQ</a>
        <a href="#rk-cover-zrodla">Źródła</a>
        <a href="#rk-cover-autor">Autor</a>
      </div>
    </nav>

    <div class="rk-cover-content">
      <section class="rk-cover-section" id="rk-cover-szybka">
        <span class="rk-cover-eyebrow">Odpowiedź bez marketingowych skrótów</span>
        <h2>Jak rodzaj okładziny wpływa na wydajność ogrzewania podłogowego?</h2>
        <p class="rk-cover-intro"><strong>Wpływa przez opór cieplny całego wykończenia oraz przez dopuszczalną temperaturę jego pracy.</strong> Przy tej samej konstrukcji podłogi, średniej temperaturze wody i temperaturze pomieszczenia wariant o większym oporze przekazuje do wnętrza mniej ciepła. Aby utrzymać tę samą moc, system musi wytworzyć większą różnicę temperatur — o ile pozwalają na to okładzina, komfort powierzchni i charakterystyka instalacji.</p>
        <div class="rk-cover-answer">
          <h3>Najważniejsza zasada projektowa</h3>
          <p>Nie istnieje wiarygodna tabela typu „gres = 100 W/m², panel = 65 W/m², drewno = 60 W/m²” bez podania pozostałych warunków. Moc zależy równocześnie od rozstawu rur, konstrukcji jastrychu, temperatury wody, temperatury pomieszczenia, oporu warstw nad rurą oraz temperatury powierzchni.</p>
        </div>
        <div class="rk-cover-grid-3">
          <div class="rk-cover-card"><span class="rk-cover-card-icon">1</span><h3>Wymagana moc</h3><p>Najpierw dzielimy projektową stratę ciepła pomieszczenia przez rzeczywiście ogrzewaną powierzchnię.</p></div>
          <div class="rk-cover-card is-orange"><span class="rk-cover-card-icon">2</span><h3>Łączny opór</h3><p>Następnie sumujemy opór okładziny, podkładu, kleju i innych warstw nad jastrychem.</p></div>
          <div class="rk-cover-card is-green"><span class="rk-cover-card-icon">3</span><h3>Weryfikacja systemu</h3><p>Na końcu sprawdzamy charakterystykę konkretnej podłogi oraz limity temperatury i materiału.</p></div>
        </div>
        <div class="rk-cover-warning"><p><strong>Niski opór pomaga, ale niczego sam nie gwarantuje.</strong> Nawet płytka nie pokryje dużej straty ciepła, jeżeli powierzchnia czynna jest mała albo system pracuje przy zbyt małej różnicy temperatur.</p></div>
      </section>

      <section class="rk-cover-section" id="rk-cover-mechanizm">
        <span class="rk-cover-eyebrow">Fizyka w prostym zapisie</span>
        <h2>Dlaczego większy opór okładziny obniża moc podłogówki?</h2>
        <p class="rk-cover-intro">Ciepło przepływa od cieplejszych rur i jastrychu do chłodniejszego pomieszczenia. Warstwy nad jastrychem tworzą opór tej drogi. Przy zadanym strumieniu ciepła orientacyjny spadek temperatury na wykończeniu można zapisać następująco:</p>
        <div class="rk-cover-formula">
          <strong>Δθ<sub>B</sub> ≈ q × R<sub>B</sub></strong>
          <span>q — strumień ciepła [W/m²], R<sub>B</sub> — łączny opór wykończenia [m²K/W], Δθ<sub>B</sub> — spadek temperatury na tych warstwach [K].</span>
        </div>
        <p>Jeżeli pomieszczenie wymaga 60 W/m², wykończenie o oporze 0,02 m²K/W powoduje w tym modelu około 1,2 K różnicy między spodem wykończenia a jego powierzchnią. Przy oporze 0,10 m²K/W różnica wynosi około 6 K. To nie jest jeszcze temperatura wody: między rurą a spodem okładziny pozostają jastrych, geometria rur i pozostałe elementy konkretnego systemu.</p>
        <div class="rk-cover-grid-2">
          <div class="rk-cover-card">
            <h3>Co pozostaje takie samo?</h3>
            <p>Strata ciepła pomieszczenia nie spada tylko dlatego, że zmieniono płytkę na panel. Budynek nadal potrzebuje określonej mocy w warunkach projektowych.</p>
          </div>
          <div class="rk-cover-card is-orange">
            <h3>Co musi się zmienić?</h3>
            <p>Przy większym oporze rośnie wymagana temperatura po ciepłej stronie wykończenia albo spada osiągalna moc. Ostateczny wynik odczytuje się z charakterystyki systemu.</p>
          </div>
        </div>
      </section>

      <section class="rk-cover-section" id="rk-cover-opor">
        <span class="rk-cover-eyebrow">Panel to nie cała podłoga</span>
        <h2>Jak obliczyć opór cieplny okładziny, podkładu i kleju?</h2>
        <p class="rk-cover-intro">Do obliczeń przyjmujemy wszystkie warstwy znajdujące się nad jastrychem grzewczym. Dla podłogi pływającej będzie to zwykle panel i podkład. Dla okładziny klejonej — produkt oraz warstwa montażowa określona w systemie.</p>
        <div class="rk-cover-formula">
          <strong>R<sub>B</sub> = R<sub>okładziny</sub> + R<sub>podkładu lub kleju</sub> + R<sub>dodatkowych warstw</sub></strong>
          <span>Wartości należy brać z dokumentacji dokładnych produktów i rzeczywistych grubości.</span>
        </div>
        <h3>Gdy producent podaje wartość R</h3>
        <p>Użyj deklarowanego oporu w m²K/W. Nie przeliczaj go ponownie z przypadkowej wartości przewodności znalezionej dla podobnego materiału.</p>
        <h3>Gdy znasz grubość i wiarygodną przewodność λ</h3>
        <p>Dla jednorodnej warstwy można wykonać obliczenie pomocnicze:</p>
        <div class="rk-cover-formula">
          <strong>R = d / λ</strong>
          <span>d — grubość w metrach, λ — przewodność cieplna [W/(mK)]. W laminacie wielowarstwowym wynik z jednej uśrednionej λ może być nieadekwatny.</span>
        </div>
        <div class="rk-cover-note"><p>Szerzej sam parametr wyjaśnia opracowanie <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%C2%B2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">opór cieplny R w ogrzewaniu podłogowym</a>. W tym artykule koncentrujemy się na konsekwencjach tej wartości dla wymaganej temperatury i mocy.</p></div>
      </section>

      <section class="rk-cover-section" id="rk-cover-limit">
        <span class="rk-cover-eyebrow">Ważny punkt odniesienia, nie pieczątka</span>
        <h2>Czy 0,15 m²K/W to uniwersalny limit okładziny na podłogówkę?</h2>
        <p class="rk-cover-intro">Wartość 0,15 m²K/W jest często stosowanym punktem odniesienia dla łącznego oporu wykończenia i pojawia się również w dokumentach dotyczących efektywności niskotemperaturowych systemów. <strong>Nie oznacza jednak automatycznie, że każdy zestaw o R = 0,14 zadziała, a każdy o R = 0,16 jest technicznie niemożliwy.</strong></p>
        <div class="rk-cover-grid-3">
          <div class="rk-cover-card"><span class="rk-cover-card-icon">A</span><h3>Projekt</h3><p>Może przyjmować konkretny opór obliczeniowy i na jego podstawie określać rozstaw, temperatury oraz moc.</p></div>
          <div class="rk-cover-card is-orange"><span class="rk-cover-card-icon">B</span><h3>Produkt</h3><p>Instrukcja może podawać własny limit temperatury, wymagany montaż i dopuszczalny rodzaj ogrzewania.</p></div>
          <div class="rk-cover-card is-green"><span class="rk-cover-card-icon">C</span><h3>Pomieszczenie</h3><p>Ta sama okładzina może mieć duży zapas w sypialni i być niewystarczająca w łazience z małą powierzchnią czynną.</p></div>
        </div>
        <div class="rk-cover-warning"><p><strong>Nie używaj komunikatu „zgodne z normą” wyłącznie dlatego, że suma R jest mniejsza niż 0,15.</strong> Metodyka projektowa obejmuje również charakterystykę emisji, temperaturę powierzchni i warunki konkretnej konstrukcji.</p></div>
      </section>

      <section class="rk-cover-section" id="rk-cover-zapotrzebowanie">
        <span class="rk-cover-eyebrow">Punkt startowy obliczeń</span>
        <h2>Strata ciepła i powierzchnia czynna wyznaczają wymaganą moc podłogi</h2>
        <p class="rk-cover-intro">Zanim porównamy gres z drewnem, musimy znać zadanie stawiane podłodze. Projektową stratę ciepła pomieszczenia dzielimy przez powierzchnię, na której rzeczywiście można ułożyć aktywne ogrzewanie.</p>
        <div class="rk-cover-formula">
          <strong>q<sub>wym</sub> = Q<sub>pomieszczenia</sub> / A<sub>czynna</sub></strong>
          <span>Q — projektowa strata ciepła [W], A<sub>czynna</sub> — ogrzewana powierzchnia bez trwałej zabudowy i wyłączonych stref [m²].</span>
        </div>
        <p>Pomieszczenie tracące 1200 W przy 20 m² powierzchni czynnej wymaga średnio 60 W/m². Gdy z powodu kuchennej zabudowy i innych wyłączeń aktywnych pozostaje 15 m², wymaganie rośnie do 80 W/m². To właśnie przy takim obciążeniu należy oceniać wpływ oporu okładziny.</p>
        <div class="rk-cover-note"><p>Jeżeli nie znasz projektowej straty ciepła, zacznij od <a href="https://projekt-ogrzewania.pl/kalkulator-strat-ciepla-budynku-jak-samodzielnie-obliczyc-zapotrzebowanie-na-ogrzewanie/">analizy strat ciepła budynku</a>. Uproszczony wskaźnik W/m² całego domu nie zastępuje obliczenia poszczególnych pomieszczeń.</p></div>
      </section>

      <section class="rk-cover-section" id="rk-cover-analizator">
        <span class="rk-cover-eyebrow">Jedno narzędzie zamiast kilku gadżetów</span>
        <h2>Interaktywny analizator dwóch okładzin na ogrzewanie podłogowe</h2>
        <p class="rk-cover-intro">Wprowadź stratę ciepła i powierzchnię czynną, a następnie porównaj dwa kompletne warianty wykończenia. Narzędzie pokaże wymaganą moc, referencyjną temperaturę powierzchni, spadek temperatury na warstwach oraz temperaturę potrzebną bezpośrednio pod okładziną. Wszystkie obliczenia wykonuje dla identycznych warunków.</p>

        <div class="rk-cover-tool" id="rk-cover-tool">
          <div class="rk-cover-tool-head">
            <h3>Porównaj wariant A i B przy tej samej mocy pomieszczenia</h3>
            <p>Model opisuje przejście ciepła przez wykończenie i stronę powierzchniową. Nie zastępuje charakterystyki konkretnego systemu rur i jastrychu oraz nie oblicza dokładnej temperatury zasilania.</p>
          </div>
          <form class="rk-cover-tool-body" id="rk-cover-form">
            <div class="rk-cover-step">
              <div class="rk-cover-step-title"><b>1</b><h4>Dane pomieszczenia i granica powierzchni</h4></div>
              <div class="rk-cover-fields">
                <div class="rk-cover-field">
                  <label for="rk-cover-loss">Projektowa strata ciepła pomieszczenia [W]</label>
                  <input id="rk-cover-loss" type="number" min="50" max="30000" step="10" value="1200" inputmode="decimal">
                </div>
                <div class="rk-cover-field">
                  <label for="rk-cover-area">Rzeczywiście ogrzewana powierzchnia [m²]</label>
                  <input id="rk-cover-area" type="number" min="1" max="500" step="0.1" value="18" inputmode="decimal">
                  <small>Bez trwałej zabudowy i fragmentów wyłączonych z ogrzewania.</small>
                </div>
                <div class="rk-cover-field">
                  <label for="rk-cover-room-temp">Projektowa temperatura pomieszczenia [°C]</label>
                  <input id="rk-cover-room-temp" type="number" min="10" max="30" step="0.5" value="20" inputmode="decimal">
                </div>
                <div class="rk-cover-field">
                  <label for="rk-cover-max-surface">Przyjęty limit temperatury powierzchni [°C]</label>
                  <input id="rk-cover-max-surface" type="number" min="18" max="40" step="0.5" value="29" inputmode="decimal">
                  <small>Wpisz właściwy limit z projektu, funkcji strefy i dokumentacji produktu.</small>
                </div>
                <div class="rk-cover-field">
                  <label for="rk-cover-reference">Model wymiany ciepła z pomieszczeniem</label>
                  <select id="rk-cover-reference">
                    <option value="standard" selected="">Referencyjna relacja powierzchniowa</option>
                  </select>
                  <small>q ≈ 8,92 × (θF,m − θi)<sup>1,1</sup>.</small>
                </div>
                <div class="rk-cover-field">
                  <label for="rk-cover-purpose">Cel porównania</label>
                  <select id="rk-cover-purpose">
                    <option value="design" selected="">Projekt nowej podłogi</option>
                    <option value="replacement">Zmiana istniejącej okładziny</option>
                    <option value="purchase">Porównanie produktów przed zakupem</option>
                  </select>
                </div>
              </div>
            </div>

            <div class="rk-cover-step">
              <div class="rk-cover-step-title"><b>2</b><h4>Dwa kompletne warianty wykończenia</h4></div>
              <div class="rk-cover-candidates">
                <fieldset class="rk-cover-candidate">
                  <legend class="rk-cover-candidate-legend"><span class="rk-cover-dot" aria-hidden="true"></span>Wariant A</legend>
                  <div class="rk-cover-candidate-fields">
                    <div class="rk-cover-field is-wide">
                      <label for="rk-cover-a-name">Nazwa robocza wariantu</label>
                      <input id="rk-cover-a-name" type="text" value="Gres + klej" maxlength="70">
                    </div>
                    <div class="rk-cover-field is-wide">
                      <label for="rk-cover-a-mode">Źródło oporu samej okładziny</label>
                      <select id="rk-cover-a-mode">
                        <option value="declared" selected="">R z karty technicznej</option>
                        <option value="calculated">Obliczenie z grubości i λ</option>
                      </select>
                    </div>
                    <div class="rk-cover-field">
                      <label for="rk-cover-a-cover-r">Deklarowany opór okładziny [m²K/W]</label>
                      <input id="rk-cover-a-cover-r" type="number" min="0" max="0.50" step="0.001" value="0.012" inputmode="decimal">
                    </div>
                    <div class="rk-cover-field">
                      <label for="rk-cover-a-install-r">Opór podkładu lub kleju [m²K/W]</label>
                      <input id="rk-cover-a-install-r" type="number" min="0" max="0.30" step="0.001" value="0.005" inputmode="decimal">
                    </div>
                    <div class="rk-cover-field">
                      <label for="rk-cover-a-thickness">Grubość okładziny [mm]</label>
                      <input id="rk-cover-a-thickness" type="number" min="0.1" max="100" step="0.1" value="10" inputmode="decimal">
                    </div>
                    <div class="rk-cover-field">
                      <label for="rk-cover-a-lambda">Przewodność λ [W/(mK)]</label>
                      <input id="rk-cover-a-lambda" type="number" min="0.01" max="10" step="0.01" value="1.00" inputmode="decimal">
                    </div>
                    <div class="rk-cover-field is-wide">
                      <label for="rk-cover-a-extra-r">Pozostałe warstwy nad jastrychem [m²K/W]</label>
                      <input id="rk-cover-a-extra-r" type="number" min="0" max="0.30" step="0.001" value="0.000" inputmode="decimal">
                    </div>
                    <div class="rk-cover-field is-wide">
                      <label for="rk-cover-a-max-temp">Limit temperatury powierzchni z dokumentacji wariantu A [°C]</label>
                      <input id="rk-cover-a-max-temp" type="number" min="18" max="40" step="0.5" value="29" inputmode="decimal">
                    </div>
                  </div>
                </fieldset>

                <fieldset class="rk-cover-candidate is-b">
                  <legend class="rk-cover-candidate-legend"><span class="rk-cover-dot" aria-hidden="true"></span>Wariant B</legend>
                  <div class="rk-cover-candidate-fields">
                    <div class="rk-cover-field is-wide">
                      <label for="rk-cover-b-name">Nazwa robocza wariantu</label>
                      <input id="rk-cover-b-name" type="text" value="Panel + podkład" maxlength="70">
                    </div>
                    <div class="rk-cover-field is-wide">
                      <label for="rk-cover-b-mode">Źródło oporu samej okładziny</label>
                      <select id="rk-cover-b-mode">
                        <option value="declared" selected="">R z karty technicznej</option>
                        <option value="calculated">Obliczenie z grubości i λ</option>
                      </select>
                    </div>
                    <div class="rk-cover-field">
                      <label for="rk-cover-b-cover-r">Deklarowany opór okładziny [m²K/W]</label>
                      <input id="rk-cover-b-cover-r" type="number" min="0" max="0.50" step="0.001" value="0.060" inputmode="decimal">
                    </div>
                    <div class="rk-cover-field">
                      <label for="rk-cover-b-install-r">Opór podkładu lub kleju [m²K/W]</label>
                      <input id="rk-cover-b-install-r" type="number" min="0" max="0.30" step="0.001" value="0.030" inputmode="decimal">
                    </div>
                    <div class="rk-cover-field">
                      <label for="rk-cover-b-thickness">Grubość okładziny [mm]</label>
                      <input id="rk-cover-b-thickness" type="number" min="0.1" max="100" step="0.1" value="8" inputmode="decimal">
                    </div>
                    <div class="rk-cover-field">
                      <label for="rk-cover-b-lambda">Przewodność λ [W/(mK)]</label>
                      <input id="rk-cover-b-lambda" type="number" min="0.01" max="10" step="0.01" value="0.13" inputmode="decimal">
                    </div>
                    <div class="rk-cover-field is-wide">
                      <label for="rk-cover-b-extra-r">Pozostałe warstwy nad jastrychem [m²K/W]</label>
                      <input id="rk-cover-b-extra-r" type="number" min="0" max="0.30" step="0.001" value="0.000" inputmode="decimal">
                    </div>
                    <div class="rk-cover-field is-wide">
                      <label for="rk-cover-b-max-temp">Limit temperatury powierzchni z dokumentacji wariantu B [°C]</label>
                      <input id="rk-cover-b-max-temp" type="number" min="18" max="40" step="0.5" value="27" inputmode="decimal">
                    </div>
                  </div>
                </fieldset>
              </div>
              <div class="rk-cover-data-note">Jeżeli wybierzesz obliczenie z grubości i λ, pole „deklarowany opór” pozostaje widoczne, ale nie bierze udziału w wyniku. Dla produktów wielowarstwowych preferuj opór deklarowany przez producenta.</div>
            </div>

            <div class="rk-cover-step">
              <div class="rk-cover-step-title"><b>3</b><h4>Wynik, przekrój warstw i wykres</h4></div>
              <div class="rk-cover-result-head">
                <div>
                  <h4 id="rk-cover-result-title">Wynik porównania</h4>
                  <p id="rk-cover-result-text">Wprowadź dane lub zmień wartości — narzędzie przelicza wynik na bieżąco.</p>
                </div>
                <span class="rk-cover-result-badge" id="rk-cover-result-badge">Model referencyjny</span>
              </div>

              <div class="rk-cover-metrics" aria-label="Wspólne parametry wyniku">
                <div class="rk-cover-metric"><span>Wymagana moc</span><strong id="rk-cover-required-power">— W/m²</strong></div>
                <div class="rk-cover-metric"><span>Wymagana powierzchnia</span><strong id="rk-cover-surface-needed">— °C</strong></div>
                <div class="rk-cover-metric"><span>Limit powierzchni daje</span><strong id="rk-cover-max-output">— W/m²</strong></div>
              </div>

              <div class="rk-cover-result-grid">
                <div class="rk-cover-result-card">
                  <h4 id="rk-cover-a-result-name">Wariant A</h4>
                  <div class="rk-cover-metrics">
                    <div class="rk-cover-metric"><span>Łączny R</span><strong id="rk-cover-a-total">—</strong></div>
                    <div class="rk-cover-metric"><span>Spadek ΔθB</span><strong id="rk-cover-a-drop">— K</strong></div>
                    <div class="rk-cover-metric"><span>Pod okładziną</span><strong id="rk-cover-a-under">— °C</strong></div>
                  </div>
                  <span class="rk-cover-result-status" id="rk-cover-a-status">—</span>
                  <div class="rk-cover-stack-scale" aria-label="Warstwy wariantu A">
                    <div class="rk-cover-stack-segment"><b>Okładzina</b><span id="rk-cover-a-layer-cover">R —</span></div>
                    <div class="rk-cover-stack-segment is-install"><b>Podkład lub klej</b><span id="rk-cover-a-layer-install">R —</span></div>
                    <div class="rk-cover-stack-segment is-extra"><b>Pozostałe warstwy</b><span id="rk-cover-a-layer-extra">R —</span></div>
                  </div>
                  <div class="rk-cover-diagnostics" id="rk-cover-a-diagnostics" aria-live="polite"></div>
                </div>

                <div class="rk-cover-result-card is-b">
                  <h4 id="rk-cover-b-result-name">Wariant B</h4>
                  <div class="rk-cover-metrics">
                    <div class="rk-cover-metric"><span>Łączny R</span><strong id="rk-cover-b-total">—</strong></div>
                    <div class="rk-cover-metric"><span>Spadek ΔθB</span><strong id="rk-cover-b-drop">— K</strong></div>
                    <div class="rk-cover-metric"><span>Pod okładziną</span><strong id="rk-cover-b-under">— °C</strong></div>
                  </div>
                  <span class="rk-cover-result-status" id="rk-cover-b-status">—</span>
                  <div class="rk-cover-stack-scale" aria-label="Warstwy wariantu B">
                    <div class="rk-cover-stack-segment"><b>Okładzina</b><span id="rk-cover-b-layer-cover">R —</span></div>
                    <div class="rk-cover-stack-segment is-install"><b>Podkład lub klej</b><span id="rk-cover-b-layer-install">R —</span></div>
                    <div class="rk-cover-stack-segment is-extra"><b>Pozostałe warstwy</b><span id="rk-cover-b-layer-extra">R —</span></div>
                  </div>
                  <div class="rk-cover-diagnostics" id="rk-cover-b-diagnostics" aria-live="polite"></div>
                </div>
              </div>

              <div class="rk-cover-chart-card">
                <div class="rk-cover-chart-head">
                  <div>
                    <h4>Temperatura potrzebna bezpośrednio pod wykończeniem</h4>
                    <p>Obie krzywe mają te same warunki w pomieszczeniu. Różni je wyłącznie łączny opór wariantu.</p>
                  </div>
                  <div class="rk-cover-chart-legend" aria-label="Legenda wykresu">
                    <span class="rk-cover-chart-key" id="rk-cover-legend-a">Wariant A</span>
                    <span class="rk-cover-chart-key is-b" id="rk-cover-legend-b">Wariant B</span>
                    <span class="rk-cover-chart-key is-demand">Wymagana moc</span>
                  </div>
                </div>
                <div class="rk-cover-chart-wrap">
                  <canvas id="rk-cover-chart" width="980" height="350" role="img" aria-label="Wykres wymaganej temperatury bezpośrednio pod okładziną w zależności od mocy jednostkowej"></canvas>
                </div>
                <p class="rk-cover-chart-summary" id="rk-cover-chart-summary">Wykres zostanie przeliczony po wprowadzeniu danych.</p>
              </div>

              <button class="rk-cover-tool-button" type="submit">Przelicz i porównaj oba warianty</button>
            </div>
          </form>
        </div>
        <p class="rk-cover-note"><strong>Zakres modelu:</strong> zależność po stronie powierzchni opisano referencyjną relacją q ≈ 8,92 × (θF,m − θi)<sup>1,1</sup>, a spadek na wykończeniu zależnością ΔθB ≈ q × RB. Narzędzie nie zna rozstawu rur, grubości i przewodności jastrychu, średniej temperatury wody ani charakterystyki konkretnego systemu.</p>
      </section>

      <aside class="rk-cover-sales-cta" aria-label="Projekt ogrzewania podłogowego z wybraną okładziną">
        <h3>Wynik pokazuje wpływ okładziny — projekt musi sprawdzić całą podłogę</h3>
        <p>Analizator policzył opór warstw i temperaturę potrzebną przy powierzchni podłogi, ale nie zna rozstawu rur, grubości jastrychu, charakterystyki systemu, długości pętli ani oporów hydraulicznych. Jeżeli chcesz sprawdzić, czy wybrana deska, panel lub wykładzina pozwoli ogrzać konkretne pomieszczenia, okładzinę trzeba uwzględnić w projekcie razem ze stratami ciepła i konstrukcją podłogi.</p>
        <a class="rk-cover-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt z uwzględnieniem wybranej okładziny</a>
      </aside>

      <section class="rk-cover-section" id="rk-cover-wynik">
        <span class="rk-cover-eyebrow">Bez nadinterpretacji</span>
        <h2>Jak czytać wynik analizatora oporu okładziny?</h2>
        <p class="rk-cover-intro">Narzędzie rozdziela wielkości, które w uproszczonych poradnikach bywają mieszane. Dzięki temu widać, co wynika z pomieszczenia, co z samego wykończenia i czego nie da się wyznaczyć bez projektu systemu.</p>
        <div class="rk-cover-table-wrap">
          <table>
            <thead>
              <tr>
                <th>Wynik</th>
                <th>Co oznacza</th>
                <th>Czego nie potwierdza</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td data-label="Wynik"><strong>q<sub>wym</sub> [W/m²]</strong></td>
                <td data-label="Co oznacza">Średnią moc, którą musi oddać aktywna część podłogi, aby pokryć stratę pomieszczenia.</td>
                <td data-label="Czego nie potwierdza">Że konkretny rozstaw rur i temperatura wody taką moc zapewnią.</td>
              </tr>
              <tr>
                <td data-label="Wynik"><strong>Wymagana temperatura powierzchni</strong></td>
                <td data-label="Co oznacza">Wynik referencyjnej relacji wymiany ciepła między powierzchnią a pomieszczeniem.</td>
                <td data-label="Czego nie potwierdza">Jednakowej temperatury w każdym punkcie podłogi ani zgodności z limitem produktu.</td>
              </tr>
              <tr>
                <td data-label="Wynik"><strong>Δθ<sub>B</sub> = q × R<sub>B</sub></strong></td>
                <td data-label="Co oznacza">Orientacyjny spadek temperatury na komplecie warstw wykończenia.</td>
                <td data-label="Czego nie potwierdza">Spadku na jastrychu i konstrukcji od osi rury do spodu okładziny.</td>
              </tr>
              <tr>
                <td data-label="Wynik"><strong>Temperatura pod okładziną</strong></td>
                <td data-label="Co oznacza">Sumę wymaganej temperatury powierzchni i spadku na wykończeniu.</td>
                <td data-label="Czego nie potwierdza">Dokładnej temperatury zasilania albo powrotu instalacji.</td>
              </tr>
            </tbody>
          </table>
        </div>
        <h3>Co oznaczają komunikaty?</h3>
        <div class="rk-cover-grid-3">
          <div class="rk-cover-card is-green"><span class="rk-cover-card-icon">✓</span><h3>Poniżej limitu powierzchni</h3><p>Model nie przekracza wpisanej temperatury powierzchni. Nadal trzeba potwierdzić moc na charakterystyce systemu.</p></div>
          <div class="rk-cover-card is-orange"><span class="rk-cover-card-icon">!</span><h3>Wynik graniczny</h3><p>Wymagana powierzchnia znajduje się blisko limitu. Niewielka zmiana danych albo warunków może zmienić ocenę.</p></div>
          <div class="rk-cover-card"><span class="rk-cover-card-icon">×</span><h3>Przekroczenie</h3><p>Założonej mocy nie można uzyskać w modelu bez przekroczenia wpisanej temperatury powierzchni.</p></div>
        </div>
        <div class="rk-cover-warning"><p><strong>Nie wybieraj automatycznie wariantu z niższą temperaturą pod okładziną.</strong> To tylko jeden z parametrów. Posadzka musi także spełniać wymagania użytkowe, wilgotnościowe, akustyczne i montażowe.</p></div>
      </section>

      <section class="rk-cover-section" id="rk-cover-plytki">
        <span class="rk-cover-eyebrow">Niski opór nie zwalnia z projektu</span>
        <h2>Płytki ceramiczne, gres i kamień na ogrzewaniu podłogowym</h2>
        <p class="rk-cover-intro">Ceramika i wiele kamieni mają zwykle korzystną przewodność cieplną, dlatego kompletne wykończenie może stawiać niewielki opór. Nie daje to jednak jednej uniwersalnej mocy ani prawa do dowolnej temperatury zasilania.</p>
        <div class="rk-cover-grid-3">
          <div class="rk-cover-card"><span class="rk-cover-card-icon">1</span><h3>Cały system klejony</h3><p>Liczą się okładzina, zaprawa, przygotowanie podłoża i rzeczywista grubość warstwy montażowej.</p></div>
          <div class="rk-cover-card is-orange"><span class="rk-cover-card-icon">2</span><h3>Dylatacje</h3><p>Układ pól jastrychu i szczelin musi zostać przeniesiony zgodnie z rozwiązaniem konstrukcyjnym i wymaganiami materiału.</p></div>
          <div class="rk-cover-card is-green"><span class="rk-cover-card-icon">3</span><h3>Duże formaty</h3><p>Wymagają właściwego podłoża, pełnego podparcia oraz technologii montażu dobranej do warunków pracy termicznej.</p></div>
        </div>
        <p>Jeżeli inwestor wybiera pomiędzy konkretną płytką i panelem, warto przejść do osobnego poradnika <a href="https://projekt-ogrzewania.pl/czy-pod-ogrzewanie-podlogowe-nadaja-sie-panele-czy-tylko-plytki/">panele czy płytki na ogrzewanie podłogowe</a>. Tam intencją jest decyzja zakupowa, a tutaj — konsekwencje cieplne oporu.</p>
      </section>

      <section class="rk-cover-section" id="rk-cover-winyl">
        <span class="rk-cover-eyebrow">Cienka warstwa może być korzystna, lecz nie zawsze kompletna</span>
        <h2>Panele winylowe LVT i SPC a wydajność podłogówki</h2>
        <p class="rk-cover-intro">Winyl może tworzyć wykończenie o niewielkim łącznym oporze, ale nie należy wnioskować wyłącznie z jego grubości. Różne rdzenie, warstwy spodnie, zintegrowane podkłady i sposoby montażu zmieniają parametry zestawu.</p>
        <h3>Co sprawdzić w dokumentacji?</h3>
        <ul class="rk-cover-list">
          <li>Dopuszczenie dokładnego produktu do wodnego ogrzewania podłogowego.</li>
          <li>Deklarowany opór produktu razem z warstwą zintegrowaną, jeżeli występuje.</li>
          <li>Dopuszczony podkład albo system klejowy oraz zakaz dokładania nieprzewidzianych warstw.</li>
          <li>Maksymalną temperaturę powierzchni i sposób stopniowego uruchamiania ogrzewania.</li>
          <li>Wymagania dotyczące równości, wilgotności i wytrzymałości podłoża.</li>
        </ul>
        <div class="rk-cover-note"><p><strong>LVT i SPC nie są jednym parametrem cieplnym.</strong> W analizatorze wpisuj dane konkretnej wersji produktu, a nie średnią wartość przypisaną do całej kategorii winyli.</p></div>
      </section>

      <section class="rk-cover-section" id="rk-cover-laminat">
        <span class="rk-cover-eyebrow">Najczęściej zapominana suma</span>
        <h2>Panele laminowane: opór panelu i podkładu trzeba dodać</h2>
        <p class="rk-cover-intro">W podłodze pływającej ciepło przechodzi kolejno przez podkład i panel. Nawet panel o dobrym parametrze może stworzyć niekorzystny zestaw, jeżeli zostanie położony na grubym materiale akustycznym o wysokim oporze.</p>
        <div class="rk-cover-formula">
          <strong>R<sub>zestawu</sub> = R<sub>panelu</sub> + R<sub>podkładu</sub></strong>
          <span>Jeżeli produkt ma podkład zintegrowany, trzeba ustalić, czy deklaracja R obejmuje cały element.</span>
        </div>
        <p>Wartość mniejsza niż często przywoływane 0,15 m²K/W nie zastępuje sprawdzenia mocy. Dodatkowo instrukcja panelu może ograniczać temperaturę powierzchni, tempo zmian temperatury albo konkretny sposób eksploatacji.</p>
        <div class="rk-cover-warning"><p><strong>Nie dokładaj drugiego podkładu bez pisemnego dopuszczenia.</strong> Dodatkowa warstwa zmienia opór, pracę zamków, ugięcie i warunki gwarancji.</p></div>
      </section>

      <section class="rk-cover-section" id="rk-cover-drewno">
        <span class="rk-cover-eyebrow">Wilgoć i budowa produktu są równie ważne jak R</span>
        <h2>Deska warstwowa, parkiet i drewno lite na ogrzewaniu podłogowym</h2>
        <p class="rk-cover-intro">Drewno jest materiałem higroskopijnym, dlatego ocena nie kończy się na przewodności cieplnej. Liczą się budowa elementu, gatunek, grubość, układ włókien, wilgotność, szerokość deski, stabilność wymiarowa i sposób montażu dopuszczony przez producenta.</p>
        <div class="rk-cover-grid-2">
          <div class="rk-cover-card">
            <h3>Deska warstwowa</h3>
            <p>Często ma stabilniejszą konstrukcję niż element lity, ale nie oznacza to automatycznej zgodności każdego produktu. Wymagania trzeba odczytać z aktualnej instrukcji.</p>
          </div>
          <div class="rk-cover-card is-orange">
            <h3>Drewno lite i parkiet</h3>
            <p>Może wymagać bardziej rygorystycznej kontroli wilgotności, geometrii, temperatury i technologii montażu. Nie należy stosować jednej reguły dla wszystkich gatunków.</p>
          </div>
        </div>
        <h3>Czy drewno zawsze trzeba kleić?</h3>
        <p>Nie. Dostępne są rozwiązania klejone i pływające. O właściwej metodzie decydują dokumentacja konkretnego produktu, projekt podłogi i wymagania wykonawcze. Klejenie nie może być przedstawiane jako uniwersalny obowiązek, podobnie jak montaż pływający nie jest zawsze dopuszczalny.</p>
      </section>

      <section class="rk-cover-section" id="rk-cover-dywan">
        <span class="rk-cover-eyebrow">Dodatkowa warstwa po odbiorze instalacji</span>
        <h2>Dywan i wykładzina na ogrzewaniu podłogowym</h2>
        <p class="rk-cover-intro">Wykładzina, podkład tekstylny i później położony dywan zwiększają opór po stronie pomieszczenia. Skutkiem jest mniejsze lokalne oddawanie ciepła albo potrzeba wyższej temperatury po cieplejszej stronie przegrody.</p>
        <div class="rk-cover-grid-3">
          <div class="rk-cover-card"><span class="rk-cover-card-icon">A</span><h3>Wykładzina</h3><p>Sprawdź opór kompletnego systemu wraz z podkładem i klejem oraz dopuszczenie do ogrzewania podłogowego.</p></div>
          <div class="rk-cover-card is-orange"><span class="rk-cover-card-icon">B</span><h3>Dywan ruchomy</h3><p>Traktuj go jako dodatkowy lokalny opór, którego często nie uwzględniono w obliczeniach pierwotnego projektu.</p></div>
          <div class="rk-cover-card is-green"><span class="rk-cover-card-icon">C</span><h3>Układ pokoju</h3><p>Duże powierzchnie zakryte tekstyliami albo meblami zmniejszają efektywną przestrzeń wymiany ciepła.</p></div>
        </div>
        <div class="rk-cover-warning"><p><strong>Dywan nie oznacza automatycznie pęknięcia jastrychu ani odspojenia płytek.</strong> Jest natomiast dodatkowym oporem i może zmienić lokalny rozkład temperatur, dlatego wymaga sprawdzenia zgodności z posadzką oraz projektem.</p></div>
      </section>

      <section class="rk-cover-section" id="rk-cover-podklad">
        <span class="rk-cover-eyebrow">Akustyka i ciepło wymagają kompromisu</span>
        <h2>Jaki podkład i klej wybrać pod okładzinę na podłogówce?</h2>
        <p class="rk-cover-intro">Materiał montażowy musi być częścią jednego, kompatybilnego zestawu. Podkład wybierany wyłącznie pod kątem wyciszenia może mieć wysoki opór; klej dobrany bez uwzględnienia podłoża i zmian temperatury może nie spełnić wymagań wykonawczych.</p>
        <div class="rk-cover-table-wrap">
          <table>
            <thead>
              <tr>
                <th>Warstwa</th>
                <th>Dokument do sprawdzenia</th>
                <th>Parametry istotne dla podłogówki</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td data-label="Warstwa"><strong>Podkład pod panel</strong></td>
                <td data-label="Dokument">Karta techniczna dokładnego wariantu i instrukcja panelu.</td>
                <td data-label="Parametry">Opór R, grubość, obciążenie dynamiczne i statyczne, zgodność z zamkami oraz systemem.</td>
              </tr>
              <tr>
                <td data-label="Warstwa"><strong>Klej do drewna lub LVT</strong></td>
                <td data-label="Dokument">Instrukcja okładziny, kleju i przygotowania podłoża.</td>
                <td data-label="Parametry">Dopuszczone podłoże, zużycie i grubość, elastyczność, warunki wilgotnościowe.</td>
              </tr>
              <tr>
                <td data-label="Warstwa"><strong>Zaprawa do płytek</strong></td>
                <td data-label="Dokument">Projekt warstw, instrukcja zaprawy i okładziny.</td>
                <td data-label="Parametry">Zastosowanie na podłożu ogrzewanym, pełne podparcie, grubość oraz warunki dojrzewania.</td>
              </tr>
            </tbody>
          </table>
        </div>
        <div class="rk-cover-note"><p>Nie istnieje jedna grupa materiałowa, która z definicji jest jedynym prawidłowym podkładem pod podłogówkę. Decydują parametry produktu, zgodność całego układu i instrukcje montażu.</p></div>
      </section>

      <section class="rk-cover-section" id="rk-cover-powierzchnia">
        <span class="rk-cover-eyebrow">Trzy temperatury, trzy różne znaczenia</span>
        <h2>Okładzina a temperatura powierzchni podłogi</h2>
        <p class="rk-cover-intro">Temperatura odczuwana i oddająca ciepło do pomieszczenia to temperatura powierzchni wykończenia. Nie wolno jej utożsamiać ani z temperaturą bezpośrednio pod okładziną, ani z temperaturą wody w rurze.</p>
        <div class="rk-cover-grid-3">
          <div class="rk-cover-card"><span class="rk-cover-card-icon">1</span><h3>Powierzchnia</h3><p>Odpowiada za wymianę ciepła z pomieszczeniem i podlega ograniczeniom komfortu oraz funkcji strefy.</p></div>
          <div class="rk-cover-card is-orange"><span class="rk-cover-card-icon">2</span><h3>Spód okładziny</h3><p>Jest cieplejszy od powierzchni o wartość zależną od strumienia ciepła i oporu wykończenia.</p></div>
          <div class="rk-cover-card is-green"><span class="rk-cover-card-icon">3</span><h3>Woda</h3><p>Jej temperatura musi dodatkowo pokonać opór jastrychu oraz geometrię całego systemu.</p></div>
        </div>
        <p>W artykule o <a href="https://projekt-ogrzewania.pl/jaka-jest-optymalna-temperatura-ogrzewania-podlogowego/">optymalnej temperaturze ogrzewania podłogowego</a> rozdzielamy temperaturę zasilania, powrotu, średnią temperaturę wody i temperaturę powierzchni.</p>
      </section>

      <section class="rk-cover-section" id="rk-cover-zasilanie">
        <span class="rk-cover-eyebrow">Nie da się jej odczytać z nazwy posadzki</span>
        <h2>Okładzina a temperatura zasilania ogrzewania podłogowego</h2>
        <p class="rk-cover-intro">Większy opór wykończenia może zwiększać temperaturę wymaganą po stronie systemu przy tej samej mocy, ale nie ma poprawnej reguły „każde +0,05 m²K/W oznacza +2°C albo +3°C na zasilaniu”.</p>
        <h3>Dlaczego nie podajemy jednego przelicznika?</h3>
        <p>Temperatura wody zależy równocześnie od rozstawu i średnicy rur, przewodności i grubości jastrychu, położenia rur, temperatury powrotu, oporu wykończenia, temperatury pomieszczenia i wymaganej mocy. Dopiero charakterystyka systemu łączy te elementy.</p>
        <div class="rk-cover-answer">
          <h3>Prawidłowa kolejność</h3>
          <ol>
            <li>Oblicz stratę ciepła i wymaganą moc z powierzchni czynnej.</li>
            <li>Wprowadź rzeczywisty opór wybranego wykończenia.</li>
            <li>Sprawdź krzywą lub obliczenia konkretnej konstrukcji podłogi.</li>
            <li>Zweryfikuj temperaturę powierzchni oraz limit okładziny.</li>
            <li>Dopiero wtedy dobierz parametry zasilania i powrotu.</li>
          </ol>
        </div>
        <p>Osobne opracowanie wyjaśnia <a href="https://projekt-ogrzewania.pl/maksymalna-temperatura-zasilania-podlogowki/">maksymalną temperaturę zasilania podłogówki</a> i przyczyny, dla których nie powinna być dobierana z jednej tabeli materiałów.</p>
      </section>

      <section class="rk-cover-section" id="rk-cover-pompa">
        <span class="rk-cover-eyebrow">Wpływ pośredni, ale ważny</span>
        <h2>Jaka okładzina współpracuje najlepiej z pompą ciepła?</h2>
        <p class="rk-cover-intro">Z punktu widzenia wymiany ciepła korzystny jest niski łączny opór, ponieważ może ułatwić osiągnięcie wymaganej mocy przy niższej temperaturze po stronie instalacji. Nie można jednak przypisać stałej poprawy SCOP ani konkretnej kwoty oszczędności wyłącznie zmianie posadzki.</p>
        <div class="rk-cover-grid-2">
          <div class="rk-cover-card is-green">
            <h3>Co można powiedzieć</h3>
            <p>Mniejsza bariera cieplna daje projektantowi korzystniejsze warunki do pracy niskotemperaturowej, jeżeli pozostałe elementy układu również są odpowiednio dobrane.</p>
          </div>
          <div class="rk-cover-card is-orange">
            <h3>Czego nie można obiecać</h3>
            <p>Samego wzrostu sezonowej efektywności o określoną wartość ani oszczędności w złotych bez modelu budynku, źródła, automatyki, pogody i sposobu użytkowania.</p>
          </div>
        </div>
        <div class="rk-cover-note"><p>Podłoga „nie wie”, czy wodę ogrzała pompa ciepła, kocioł czy inne źródło. Przy tych samych temperaturach i przepływie jej charakterystyka cieplna wynika z konstrukcji, a nie z nazwy urządzenia.</p></div>
      </section>

      <section class="rk-cover-section" id="rk-cover-rozstaw">
        <span class="rk-cover-eyebrow">Materiał nie wyznacza geometrii samodzielnie</span>
        <h2>Czy pod panele i drewno trzeba automatycznie zagęścić rozstaw rur?</h2>
        <p class="rk-cover-intro">Nie. Większy opór może sprawić, że gęstszy rozstaw okaże się potrzebny, ale decyzja musi wynikać z obliczeń wymaganej mocy i charakterystyki systemu. Reguły „płytka = 15 cm, drewno = 10 cm” są zbyt uproszczone.</p>
        <div class="rk-cover-grid-3">
          <div class="rk-cover-card"><span class="rk-cover-card-icon">A</span><h3>Ta sama moc</h3><p>Porównuj rozstawy przy tej samej temperaturze wody, konstrukcji, oporze i temperaturze pomieszczenia.</p></div>
          <div class="rk-cover-card is-orange"><span class="rk-cover-card-icon">B</span><h3>Równomierność</h3><p>Gęstszy układ może poprawić równomierność powierzchni, ale nie znosi limitów temperatury okładziny.</p></div>
          <div class="rk-cover-card is-green"><span class="rk-cover-card-icon">C</span><h3>Długość rur</h3><p>Zmiana rozstawu zwiększa ilość rury i wpływa na podział pomieszczenia na obwody.</p></div>
        </div>
        <p>Szczegółowe porównanie znajduje się w artykule <a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">rozstaw rur 10 czy 15 cm</a>.</p>
      </section>

      <section class="rk-cover-section" id="rk-cover-hydraulika">
        <span class="rk-cover-eyebrow">Nie myl oporu cieplnego z hydraulicznym</span>
        <h2>Czy rodzaj okładziny zmienia przepływ, opory rur i dobór pompy?</h2>
        <p class="rk-cover-intro"><strong>Okładzina nie zmienia bezpośrednio średnicy wewnętrznej rury ani oporu hydraulicznego istniejącej pętli.</strong> Może jednak pośrednio wpłynąć na projekt, jeżeli dla pokrycia strat zostaną zmienione moce, przepływy, rozstaw albo liczba obwodów.</p>
        <div class="rk-cover-table-wrap">
          <table>
            <thead>
              <tr>
                <th>Parametr</th>
                <th>Wpływ samej okładziny</th>
                <th>Możliwa konsekwencja projektowa</th>
              </tr>
            </thead>
            <tbody>
              <tr>
                <td data-label="Parametr"><strong>Opór pętli przy tym samym przepływie</strong></td>
                <td data-label="Wpływ okładziny">Brak bezpośredniej zmiany.</td>
                <td data-label="Konsekwencja">Zmieni się dopiero po zmianie długości, średnicy, medium, przepływu lub armatury.</td>
              </tr>
              <tr>
                <td data-label="Parametr"><strong>Wymagany przepływ</strong></td>
                <td data-label="Wpływ okładziny">Nie wynika wyłącznie z materiału.</td>
                <td data-label="Konsekwencja">Projektant określa go z mocy pętli i przyjętej różnicy temperatur wody.</td>
              </tr>
              <tr>
                <td data-label="Parametr"><strong>Dobór pompy</strong></td>
                <td data-label="Wpływ okładziny">Nie wybieramy pompy z tabeli posadzek.</td>
                <td data-label="Konsekwencja">Pompa wynika z przepływu instalacji i strat ciśnienia krytycznej drogi.</td>
              </tr>
            </tbody>
          </table>
        </div>
        <p>Jeżeli zmiana okładziny prowadzi do przebudowy systemu, warto ponownie sprawdzić <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">długość pętli ogrzewania podłogowego</a> i nastawy hydrauliczne.</p>
      </section>

      <section class="rk-cover-section" id="rk-cover-zmiana">
        <span class="rk-cover-eyebrow">Remont może zmienić bilans podłogi</span>
        <h2>Zmiana płytek na panele albo drewno w istniejącym domu</h2>
        <p class="rk-cover-intro">Nowa posadzka o większym oporze może obniżyć moc oddawaną przy dotychczasowych parametrach. Podnoszenie temperatury zasilania bez sprawdzenia nie jest bezpieczną procedurą, ponieważ może naruszyć limit nowego produktu i nie rozwiązać problemu we wszystkich pomieszczeniach.</p>
        <h3>Przed demontażem starej okładziny zbierz:</h3>
        <ul class="rk-cover-checklist">
          <li>obliczenia strat ciepła albo wiarygodne dane o obciążeniu pomieszczeń,</li>
          <li>rzut pętli, rozstaw rur i aktywną powierzchnię,</li>
          <li>parametry zasilania, powrotu i przepływów przy niskiej temperaturze zewnętrznej,</li>
          <li>deklarowany opór starego i nowego zestawu wykończenia,</li>
          <li>limit temperatury oraz instrukcję montażu nowego produktu,</li>
          <li>informację o jastrychu, jego wygrzaniu, wilgotności i dylatacjach.</li>
        </ul>
        <div class="rk-cover-warning"><p><strong>Zmiana posadzki może ujawnić małą rezerwę systemu.</strong> Jeżeli podłoga wcześniej pracowała blisko limitu, dodatkowy opór panelu i podkładu może spowodować niedogrzanie bez żadnej awarii hydraulicznej.</p></div>
      </section>

      <section class="rk-cover-section" id="rk-cover-bledy">
        <span class="rk-cover-eyebrow">Błędy, które tworzą fałszywą pewność</span>
        <h2>Najczęstsze błędy przy ocenie okładziny na ogrzewanie podłogowe</h2>
        <div class="rk-cover-grid-2">
          <div class="rk-cover-card"><span class="rk-cover-card-icon">1</span><h3>Stała moc przypisana do materiału</h3><p>Podawanie jednej wartości W/m² dla drewna, panelu albo gresu bez temperatur i konstrukcji systemu.</p></div>
          <div class="rk-cover-card is-orange"><span class="rk-cover-card-icon">2</span><h3>Liczenie samego panelu</h3><p>Pominięcie podkładu, kleju albo zintegrowanej warstwy spodniej.</p></div>
          <div class="rk-cover-card is-green"><span class="rk-cover-card-icon">3</span><h3>0,15 jako automatyczna zgoda</h3><p>Traktowanie często używanego progu jako pełnego sprawdzenia mocy i limitów.</p></div>
          <div class="rk-cover-card is-purple"><span class="rk-cover-card-icon">4</span><h3>Temperatura wody = temperatura panelu</h3><p>Mylenie zasilania, temperatury średniej wody, spodu okładziny i powierzchni.</p></div>
          <div class="rk-cover-card"><span class="rk-cover-card-icon">5</span><h3>Rozstaw z nazwy posadzki</h3><p>Automatyczny wybór 10 albo 15 cm bez strat ciepła i powierzchni czynnej.</p></div>
          <div class="rk-cover-card is-orange"><span class="rk-cover-card-icon">6</span><h3>Podnoszenie krzywej grzewczej</h3><p>Kompensowanie niedogrzania bez sprawdzenia dopuszczalnej temperatury i przyczyny problemu.</p></div>
          <div class="rk-cover-card is-green"><span class="rk-cover-card-icon">7</span><h3>Uśredniona karta „dla paneli”</h3><p>Stosowanie danych podobnego produktu zamiast dokumentacji dokładnego wariantu i grubości.</p></div>
          <div class="rk-cover-card is-purple"><span class="rk-cover-card-icon">8</span><h3>Pomijanie wilgotności</h3><p>Montaż drewna, LVT lub paneli bez odbioru podłoża i procedury wymaganej przez system.</p></div>
        </div>
      </section>

      <section class="rk-cover-section" id="rk-cover-checklista">
        <span class="rk-cover-eyebrow">Przed zakupem i przed montażem</span>
        <h2>Checklista doboru okładziny na ogrzewanie podłogowe</h2>
        <ul class="rk-cover-checklist">
          <li>Znam projektową stratę ciepła każdego pomieszczenia.</li>
          <li>Znam powierzchnię rzeczywiście ogrzewaną, bez stałej zabudowy.</li>
          <li>Mam kartę techniczną dokładnego wariantu okładziny.</li>
          <li>Produkt jest dopuszczony do wodnego ogrzewania podłogowego.</li>
          <li>Znam opór okładziny, a nie tylko jej grubość.</li>
          <li>Dodałem opór podkładu, kleju i innych warstw.</li>
          <li>Znam limit temperatury powierzchni wskazany przez producenta.</li>
          <li>Projekt sprawdza moc przy rzeczywistym oporze wykończenia.</li>
          <li>Rozstaw rur nie został dobrany z samej nazwy posadzki.</li>
          <li>Przy zmianie materiału ponownie sprawdziłem temperatury i moc.</li>
          <li>Jastrych ma wykonaną wymaganą procedurę uruchomienia.</li>
          <li>Wilgotność i równość podłoża zostały zmierzone właściwą metodą.</li>
          <li>Dylatacje są zgodne z projektem podłogi i układem pomieszczeń.</li>
          <li>Nie planuję zakrywać dużej aktywnej powierzchni grubymi dywanami.</li>
        </ul>
        <div class="rk-cover-note"><p>Jeżeli część podłogi ma pozostać bez rur, sprawdź poradnik <a href="https://projekt-ogrzewania.pl/gdzie-nie-ukladac-ogrzewania-podlogowego/">gdzie nie układać ogrzewania podłogowego</a>. Powierzchnia wyłączona zwiększa moc wymaganą z każdego ogrzewanego metra kwadratowego.</p></div>
      </section>

      <section class="rk-cover-section" id="rk-cover-faq">
        <span class="rk-cover-eyebrow">Najczęstsze pytania inwestorów</span>
        <h2>FAQ: opór okładziny i wydajność ogrzewania podłogowego</h2>
        <div class="rk-cover-faq">
          <details>
            <summary>Jaka okładzina najlepiej przewodzi ciepło z podłogówki?</summary>
            <div class="rk-cover-faq-answer"><p>Najkorzystniejszy cieplnie jest kompletny zestaw o niskim oporze R, zgodny z systemem i wymaganiami użytkowymi. Nie wystarczy nazwa materiału; trzeba porównać konkretne produkty wraz z podkładem albo klejem.</p></div>
          </details>
          <details>
            <summary>Czy 0,15 m²K/W jest maksymalnym oporem każdej posadzki?</summary>
            <div class="rk-cover-faq-answer"><p>To często stosowany punkt odniesienia, ale nie automatyczny test zgodności i mocy. Decydują również projektowa strata ciepła, powierzchnia czynna, charakterystyka podłogi oraz limity konkretnego produktu.</p></div>
          </details>
          <details>
            <summary>Czy opór panelu i podkładu trzeba sumować?</summary>
            <div class="rk-cover-faq-answer"><p>Tak. Ciepło przechodzi przez obie warstwy, dlatego do obliczeń przyjmuje się opór całego zestawu oraz ewentualnych innych warstw nad jastrychem.</p></div>
          </details>
          <details>
            <summary>Jak obliczyć opór warstwy z grubości i współczynnika λ?</summary>
            <div class="rk-cover-faq-answer"><p>Dla jednorodnej warstwy stosuje się R = d/λ, gdzie grubość d jest podana w metrach. Dla produktów złożonych lepiej użyć wartości R deklarowanej dla konkretnego wyrobu.</p></div>
          </details>
          <details>
            <summary>Czy większy opór zawsze oznacza wyższą temperaturę zasilania?</summary>
            <div class="rk-cover-faq-answer"><p>Przy tej samej mocy większy opór zwiększa wymaganą temperaturę po cieplejszej stronie wykończenia. Dokładna zmiana temperatury zasilania zależy jednak także od rur, jastrychu, rozstawu, przepływu i temperatury powrotu.</p></div>
          </details>
          <details>
            <summary>Czy pod drewno trzeba zawsze układać rury co 10 cm?</summary>
            <div class="rk-cover-faq-answer"><p>Nie. Rozstaw dobiera się z obliczeń wymaganej mocy i charakterystyki całego systemu. Rodzaj okładziny jest jednym z danych, ale sam nie wyznacza rozstawu.</p></div>
          </details>
          <details>
            <summary>Czy płytki zawsze zapewnią 100 W/m²?</summary>
            <div class="rk-cover-faq-answer"><p>Nie. Moc zależy od temperatury wody i pomieszczenia, rozstawu, konstrukcji podłogi, oporu wykończenia oraz dopuszczalnej temperatury powierzchni. Sama płytka nie tworzy stałej mocy.</p></div>
          </details>
          <details>
            <summary>Czy dywan może leżeć na ogrzewaniu podłogowym?</summary>
            <div class="rk-cover-faq-answer"><p>Może, jeżeli pozwalają na to instrukcje podłogi i dywanu, a dodatkowy opór nie ogranicza wymaganej mocy. Duży lub gruby dywan trzeba traktować jako lokalną warstwę izolującą.</p></div>
          </details>
          <details>
            <summary>Czy okładzina zmienia opór hydrauliczny pętli?</summary>
            <div class="rk-cover-faq-answer"><p>Nie bezpośrednio. Opór hydrauliczny zależy głównie od przepływu, średnicy i długości rury, medium oraz armatury. Okładzina może pośrednio zmienić założenia projektu, a wraz z nimi przepływy lub układ pętli.</p></div>
          </details>
          <details>
            <summary>Czy analizator podaje dokładną temperaturę zasilania?</summary>
            <div class="rk-cover-faq-answer"><p>Nie. Pokazuje wymaganą moc, referencyjną temperaturę powierzchni, spadek na wykończeniu i temperaturę bezpośrednio pod nim. Dokładne zasilanie wymaga charakterystyki rur, jastrychu i całego systemu.</p></div>
          </details>
          <details>
            <summary>Czy po zmianie płytek na panele wystarczy podnieść krzywą grzewczą?</summary>
            <div class="rk-cover-faq-answer"><p>Nie należy robić tego automatycznie. Najpierw trzeba sprawdzić nowy opór, wymaganą moc, limit temperatury panelu i rezerwę istniejącej podłogi. Wyższa temperatura może naruszyć wymagania produktu.</p></div>
          </details>
        </div>
      </section>

      <section class="rk-cover-section" id="rk-cover-zrodla">
        <span class="rk-cover-eyebrow">Źródła metodyczne i normalizacyjne</span>
        <h2>Źródła techniczne wykorzystane w opracowaniu</h2>
        <p class="rk-cover-intro">Odnośniki prowadzą wyłącznie do oficjalnych instytucji normalizacyjnych i administracji publicznej. Normy opisują metodykę oraz zakres obliczeń; nie zastępują dokumentacji konkretnej okładziny i kompletnego systemu podłogowego.</p>
        <div class="rk-cover-sources">
          <div class="rk-cover-source">
            <a href="https://knowledge.bsigroup.com/products/water-based-surface-embedded-heating-and-cooling-systems-floor-heating-methods-for-the-determination-of-the-thermal-output-using-calculations-and-experimental-tests" target="_blank" rel="nofollow noopener noreferrer">BSI — BS EN 1264-2, metody wyznaczania mocy ogrzewania podłogowego</a>
            <p>Zakres obliczeń i badań cieplnej wydajności wodnych systemów ogrzewania płaszczyznowego.</p>
          </div>
          <div class="rk-cover-source">
            <a href="https://knowledge.bsigroup.com/products/water-based-surface-embedded-heating-and-cooling-systems-dimensioning-1" target="_blank" rel="nofollow noopener noreferrer">BSI — BS EN 1264-3, wymiarowanie systemu</a>
            <p>Charakterystyki, krzywe graniczne i ograniczenia temperatury powierzchni stosowane w wymiarowaniu.</p>
          </div>
          <div class="rk-cover-source">
            <a href="https://knowledge.bsigroup.com/products/water-based-surface-embedded-heating-and-cooling-systems-installation-1" target="_blank" rel="nofollow noopener noreferrer">BSI — BS EN 1264-4, instalacja i przygotowanie pod wykończenie</a>
            <p>Wymagania wykonawcze, równoważenie, próby, początkowe ogrzewanie i gotowość do układania okładziny.</p>
          </div>
          <div class="rk-cover-source">
            <a href="https://committee.iso.org/standard/74683.html?browse=ics" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — wyznaczanie wydajności powierzchni grzewczej</a>
            <p>Metody obliczeń mocy, temperatury powierzchni, równomierności i krzywych charakterystycznych.</p>
          </div>
          <div class="rk-cover-source">
            <a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-3:2021 — projektowanie i wymiarowanie</a>
            <p>Oficjalny zakres projektowania wbudowanych wodnych systemów ogrzewania i chłodzenia.</p>
          </div>
          <div class="rk-cover-source">
            <a href="https://www.gov.uk/government/consultations/the-future-homes-and-buildings-standards-2023-consultation/the-future-homes-and-buildings-standards-2023-consultation" target="_blank" rel="nofollow noopener noreferrer">GOV.UK — Future Homes and Buildings Standards consultation</a>
            <p>Publiczny dokument pokazujący wykorzystanie wartości 0,15 m²K/W jako założenia dotyczącego oporu wykończenia w niskotemperaturowych systemach, a nie jako samodzielnego zatwierdzenia projektu.</p>
          </div>
        </div>
      </section>

      <section class="rk-cover-author" id="rk-cover-autor" aria-label="Autor opracowania">
        <input type="radio" name="rk-cover-author-tabs" id="rk-cover-author-about" checked="">
        <input type="radio" name="rk-cover-author-tabs" id="rk-cover-author-exp">
        <input type="radio" name="rk-cover-author-tabs" id="rk-cover-author-method">
        <header class="rk-cover-author-head">
          <div>
            <span class="rk-cover-eyebrow">Autor i odpowiedzialność merytoryczna</span>
            <h2>Robert Kucharski — autor opracowania</h2>
            <p>Projektant instalacji sanitarnych, specjalista HVAC i ogrzewania podłogowego.</p>
          </div>
          <span class="rk-cover-author-mark">OBLICZENIA CIEPLNE • OGRZEWANIE PŁASZCZYZNOWE • HYDRAULIKA INSTALACJI</span>
        </header>
        <div class="rk-cover-author-layout">
          <aside class="rk-cover-author-side">
            <div class="rk-cover-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych i ogrzewania podłogowego" width="600" height="600" loading="lazy" decoding="async"></div>
            <div class="rk-cover-author-name">Robert Kucharski</div>
            <div class="rk-cover-author-role">Projektant instalacji sanitarnych<br>Specjalista HVAC i ogrzewania podłogowego</div>
            <div class="rk-cover-author-social-label">Profile autora</div>
            <div class="rk-cover-author-social" aria-label="Profile Roberta Kucharskiego w mediach społecznościowych">
              <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="nofollow noopener noreferrer" aria-label="LinkedIn Roberta Kucharskiego"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M5.2 3.5A2.2 2.2 0 1 1 5.2 8a2.2 2.2 0 0 1 0-4.5zM3.3 9.6h3.8V21H3.3V9.6zm6.2 0h3.6v1.6h.1c.5-.9 1.7-2 3.6-2 3.9 0 4.6 2.5 4.6 5.9V21h-3.8v-5.2c0-1.2 0-2.9-1.8-2.9s-2.1 1.4-2.1 2.8V21H9.5V9.6z"></path></svg></a>
              <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer" aria-label="Facebook Projekt Ogrzewania"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M14 8h3V4.4c-.5-.1-2.2-.2-3.3-.2-3.2 0-5.3 1.9-5.3 5.4V12H5v4h3.4v8H13v-8h3.5l.6-4H13V10c0-1.2.3-2 1-2z"></path></svg></a>
              <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer" aria-label="Profil Projekt HVAC w serwisie X"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.3 2H22l-8.1 9.2L23.4 22H16l-5.8-7.6L3.5 22H0l8.5-9.8L-.6 2H7l5.2 6.9L18.3 2zm-1.3 18h2L5.9 3.9H3.8L17 20z"></path></svg></a>
            </div>
          </aside>
          <div class="rk-cover-author-main">
            <blockquote class="rk-cover-author-quote"><p>„Okładziny nie projektuje się obok instalacji. Jej rzeczywisty opór, limit temperatury i sposób montażu są częścią obliczeń tej samej podłogi, która ma ogrzać pomieszczenie.”</p></blockquote>
            <div class="rk-cover-author-tabs" role="tablist" aria-label="Informacje o autorze">
              <label class="rk-cover-author-tab" for="rk-cover-author-about">O autorze</label>
              <label class="rk-cover-author-tab" for="rk-cover-author-exp">Doświadczenie</label>
              <label class="rk-cover-author-tab" for="rk-cover-author-method">Metodyka</label>
            </div>
            <div class="rk-cover-author-panel rk-cover-author-panel-about">
              <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia zapotrzebowania na ciepło oraz analizy hydrauliczne dla budynków mieszkalnych. Łączy dane z rzutów i przegród z rzeczywistą powierzchnią czynną, planowanym wykończeniem podłogi, temperaturami pracy i układem pętli.</p>
              <p>Publikowane materiały powstają dla inwestorów i wykonawców, którzy chcą rozumieć zależności techniczne, a nie opierać decyzji na jednej tabeli albo nazwie materiału. Każdy wynik narzędzia internetowego jest dlatego oddzielony od końcowej weryfikacji projektowej.</p>
            </div>
            <div class="rk-cover-author-panel rk-cover-author-panel-exp">
              <p>Zakres praktyki obejmuje obliczenia strat ciepła pomieszczeń, dobór rozstawu rur, kontrolę temperatury powierzchni, długości i przepływów pętli, nastawy rozdzielaczy oraz współpracę ogrzewania płaszczyznowego ze źródłem ciepła. W analizach okładzin autor ocenia cały zestaw warstw, a nie sam materiał wierzchni.</p>
              <p>Takie podejście pozwala wykryć sytuacje, w których produkt dopuszczony do podłogówki nadal nie zapewni wymaganej mocy w konkretnym pokoju albo wymusi niekorzystne parametry pracy instalacji.</p>
            </div>
            <div class="rk-cover-author-panel rk-cover-author-panel-method">
              <p>Metodyka artykułu rozdziela: projektową stratę ciepła, aktywną powierzchnię, opór wykończenia, warunki po stronie powierzchni oraz charakterystykę systemu rur i jastrychu. Analizator wykorzystuje jawnie opisany model referencyjny; nie podaje pozornie dokładnej temperatury zasilania bez danych, które są do tego niezbędne.</p>
              <p>Treść została skonfrontowana z zakresem aktualnych części EN 1264 i ISO 11855. Dane konkretnych wyrobów należy każdorazowo sprawdzać w aktualnej dokumentacji technicznej i instrukcji montażu.</p>
            </div>
            <div class="rk-cover-mini-label">Więcej materiałów autora</div>
            <div class="rk-cover-portals">
              <a href="https://projekt-ogrzewania.pl/author/admin3399/">Wszystkie wpisy autora</a>
              <a href="https://remont.biz.pl/" target="_blank" rel="nofollow noopener noreferrer">Remont.biz.pl</a>
              <a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a>
            </div>
          </div>
        </div>
      </section>

      <aside class="rk-cover-sales-cta" aria-label="Końcowe zaproszenie do zamówienia projektu">
        <h3>Wybrana posadzka powinna znaleźć się w projekcie przed ułożeniem rur</h3>
        <p>W projekcie łączymy straty ciepła każdego pomieszczenia, powierzchnię czynną, opór planowanej okładziny, rozstaw rur, temperatury, długości pętli, przepływy oraz nastawy rozdzielacza. Dzięki temu wynik nie opiera się na założeniu, że każda płytka, deska albo panel zachowuje się tak samo.</p>
        <a class="rk-cover-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów indywidualny projekt ogrzewania podłogowego</a>
      </aside>

      <script type="application/ld+json">
      {
        "@context": "https://schema.org",
        "@graph": [
          {
            "@type": "WebSite",
            "@id": "https://projekt-ogrzewania.pl/#website",
            "url": "https://projekt-ogrzewania.pl/",
            "name": "Projekt Ogrzewania",
            "inLanguage": "pl-PL",
            "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" }
          },
          {
            "@type": "Organization",
            "@id": "https://projekt-ogrzewania.pl/#organization",
            "name": "Projekt Ogrzewania",
            "url": "https://projekt-ogrzewania.pl/",
            "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
          },
          {
            "@type": "Organization",
            "@id": "https://remont.biz.pl/#organization",
            "name": "Remont.biz.pl",
            "url": "https://remont.biz.pl/",
            "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
          },
          {
            "@type": "Organization",
            "@id": "https://sobir.pl/#organization",
            "name": "Sobir.pl",
            "url": "https://sobir.pl/",
            "founder": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" }
          },
          {
            "@type": "Person",
            "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
            "name": "Robert Kucharski",
            "url": "https://projekt-ogrzewania.pl/author/admin3399/",
            "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
            "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
            "worksFor": { "@id": "https://projekt-ogrzewania.pl/#organization" },
            "knowsAbout": [
              "ogrzewanie podłogowe",
              "obliczenia strat ciepła",
              "opór cieplny okładzin podłogowych",
              "temperatura powierzchni grzewczych",
              "hydraulika instalacji grzewczych",
              "projektowanie instalacji sanitarnych"
            ],
            "sameAs": [
              "https://www.linkedin.com/in/robert-kucharski-38069b48/",
              "https://www.facebook.com/projektogrzewaniapl",
              "https://x.com/Projekt_HVAC",
              "https://remont.biz.pl/",
              "https://sobir.pl/"
            ]
          },
          {
            "@type": "BreadcrumbList",
            "@id": "https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/#breadcrumb",
            "itemListElement": [
              {
                "@type": "ListItem",
                "position": 1,
                "name": "Strona główna",
                "item": "https://projekt-ogrzewania.pl/"
              },
              {
                "@type": "ListItem",
                "position": 2,
                "name": "Blog",
                "item": "https://projekt-ogrzewania.pl/blog/"
              },
              {
                "@type": "ListItem",
                "position": 3,
                "name": "Okładzina a wydajność ogrzewania podłogowego",
                "item": "https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/"
              }
            ]
          },
          {
            "@type": "WebPage",
            "@id": "https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/#webpage",
            "url": "https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/",
            "name": "Okładzina na ogrzewanie podłogowe: opór cieplny, moc i temperatura podłogi",
            "description": "Techniczny poradnik i analizator wpływu oporu płytek, paneli, drewna, podkładu oraz wykładziny na moc i temperaturę ogrzewania podłogowego.",
            "inLanguage": "pl-PL",
            "dateModified": "2026-09-02",
            "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
            "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/#breadcrumb" },
            "about": { "@id": "https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/#article" }
          },
          {
            "@type": "TechArticle",
            "@id": "https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/#article",
            "url": "https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/",
            "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/#webpage" },
            "headline": "Okładzina na ogrzewanie podłogowe: opór cieplny, moc i temperatura podłogi",
            "description": "Jak łączny opór okładziny, podkładu i kleju wpływa na wymaganą temperaturę powierzchni, temperaturę pod wykończeniem i osiągalną moc podłogówki.",
            "dateModified": "2026-09-02",
            "inLanguage": "pl-PL",
            "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
            "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
            "keywords": [
              "okładzina na ogrzewanie podłogowe",
              "opór cieplny podłogi",
              "opór paneli z podkładem",
              "okładzina a moc podłogówki",
              "okładzina a temperatura zasilania",
              "kalkulator oporu cieplnego okładziny"
            ],
            "citation": [
              "https://knowledge.bsigroup.com/products/water-based-surface-embedded-heating-and-cooling-systems-floor-heating-methods-for-the-determination-of-the-thermal-output-using-calculations-and-experimental-tests",
              "https://knowledge.bsigroup.com/products/water-based-surface-embedded-heating-and-cooling-systems-dimensioning-1",
              "https://committee.iso.org/standard/74683.html?browse=ics",
              "https://www.iso.org/standard/74684.html"
            ],
            "hasPart": [
              { "@id": "https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/#application" },
              { "@id": "https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/#howto" },
              { "@id": "https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/#faq" }
            ]
          },
          {
            "@type": "WebApplication",
            "@id": "https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/#application",
            "name": "Analizator wpływu okładziny na ogrzewanie podłogowe",
            "description": "Narzędzie porównuje dwa kompletne warianty wykończenia, oblicza wymagany strumień ciepła, temperaturę powierzchni, spadek temperatury na okładzinie i temperaturę pod wykończeniem.",
            "applicationCategory": "UtilitiesApplication",
            "operatingSystem": "Dowolny system z przeglądarką internetową",
            "browserRequirements": "JavaScript",
            "isAccessibleForFree": true,
            "url": "https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/#rk-cover-analizator",
            "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
            "offers": {
              "@type": "Offer",
              "price": "0",
              "priceCurrency": "PLN"
            }
          },
          {
            "@type": "HowTo",
            "@id": "https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/#howto",
            "name": "Jak uwzględnić okładzinę w projekcie ogrzewania podłogowego",
            "description": "Sześć kroków od obliczenia straty ciepła do odbioru podłoża przed montażem okładziny.",
            "totalTime": "PT45M",
            "step": [
              {
                "@type": "HowToStep",
                "position": 1,
                "name": "Oblicz stratę ciepła",
                "text": "Wyznacz projektową stratę ciepła każdego pomieszczenia."
              },
              {
                "@type": "HowToStep",
                "position": 2,
                "name": "Wyznacz powierzchnię czynną",
                "text": "Odejmij trwałą zabudowę oraz fragmenty, na których nie zostaną ułożone aktywne rury."
              },
              {
                "@type": "HowToStep",
                "position": 3,
                "name": "Zsumuj opory wykończenia",
                "text": "Dodaj opór okładziny, podkładu lub kleju oraz innych warstw nad jastrychem."
              },
              {
                "@type": "HowToStep",
                "position": 4,
                "name": "Sprawdź temperaturę powierzchni",
                "text": "Porównaj temperaturę wymaganą dla projektowej mocy z limitem strefy i konkretnego produktu."
              },
              {
                "@type": "HowToStep",
                "position": 5,
                "name": "Zweryfikuj charakterystykę systemu",
                "text": "Sprawdź rozstaw rur, konstrukcję jastrychu i temperatury wody na charakterystyce konkretnej podłogi."
              },
              {
                "@type": "HowToStep",
                "position": 6,
                "name": "Odbierz podłoże",
                "text": "Przeprowadź wymaganą procedurę uruchomienia, pomiar wilgotności i kontrolę dylatacji przed montażem."
              }
            ]
          },
          {
            "@type": "FAQPage",
            "@id": "https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/#faq",
            "mainEntity": [
              {
                "@type": "Question",
                "name": "Jaka okładzina najlepiej przewodzi ciepło z podłogówki?",
                "acceptedAnswer": { "@type": "Answer", "text": "Najkorzystniejszy cieplnie jest kompletny zestaw o niskim oporze R, zgodny z systemem i wymaganiami użytkowymi. Nie wystarczy nazwa materiału; trzeba porównać konkretne produkty wraz z podkładem albo klejem." }
              },
              {
                "@type": "Question",
                "name": "Czy 0,15 m²K/W jest maksymalnym oporem każdej posadzki?",
                "acceptedAnswer": { "@type": "Answer", "text": "To często stosowany punkt odniesienia, ale nie automatyczny test zgodności i mocy. Decydują również projektowa strata ciepła, powierzchnia czynna, charakterystyka podłogi oraz limity konkretnego produktu." }
              },
              {
                "@type": "Question",
                "name": "Czy opór panelu i podkładu trzeba sumować?",
                "acceptedAnswer": { "@type": "Answer", "text": "Tak. Ciepło przechodzi przez obie warstwy, dlatego do obliczeń przyjmuje się opór całego zestawu oraz ewentualnych innych warstw nad jastrychem." }
              },
              {
                "@type": "Question",
                "name": "Jak obliczyć opór warstwy z grubości i współczynnika λ?",
                "acceptedAnswer": { "@type": "Answer", "text": "Dla jednorodnej warstwy stosuje się R = d/λ, gdzie grubość d jest podana w metrach. Dla produktów złożonych lepiej użyć wartości R deklarowanej dla konkretnego wyrobu." }
              },
              {
                "@type": "Question",
                "name": "Czy większy opór zawsze oznacza wyższą temperaturę zasilania?",
                "acceptedAnswer": { "@type": "Answer", "text": "Przy tej samej mocy większy opór zwiększa wymaganą temperaturę po cieplejszej stronie wykończenia. Dokładna zmiana temperatury zasilania zależy jednak także od rur, jastrychu, rozstawu, przepływu i temperatury powrotu." }
              },
              {
                "@type": "Question",
                "name": "Czy pod drewno trzeba zawsze układać rury co 10 cm?",
                "acceptedAnswer": { "@type": "Answer", "text": "Nie. Rozstaw dobiera się z obliczeń wymaganej mocy i charakterystyki całego systemu. Rodzaj okładziny jest jednym z danych, ale sam nie wyznacza rozstawu." }
              },
              {
                "@type": "Question",
                "name": "Czy płytki zawsze zapewnią 100 W/m²?",
                "acceptedAnswer": { "@type": "Answer", "text": "Nie. Moc zależy od temperatury wody i pomieszczenia, rozstawu, konstrukcji podłogi, oporu wykończenia oraz dopuszczalnej temperatury powierzchni. Sama płytka nie tworzy stałej mocy." }
              },
              {
                "@type": "Question",
                "name": "Czy dywan może leżeć na ogrzewaniu podłogowym?",
                "acceptedAnswer": { "@type": "Answer", "text": "Może, jeżeli pozwalają na to instrukcje podłogi i dywanu, a dodatkowy opór nie ogranicza wymaganej mocy. Duży lub gruby dywan trzeba traktować jako lokalną warstwę izolującą." }
              },
              {
                "@type": "Question",
                "name": "Czy okładzina zmienia opór hydrauliczny pętli?",
                "acceptedAnswer": { "@type": "Answer", "text": "Nie bezpośrednio. Opór hydrauliczny zależy głównie od przepływu, średnicy i długości rury, medium oraz armatury. Okładzina może pośrednio zmienić założenia projektu, a wraz z nimi przepływy lub układ pętli." }
              },
              {
                "@type": "Question",
                "name": "Czy analizator podaje dokładną temperaturę zasilania?",
                "acceptedAnswer": { "@type": "Answer", "text": "Nie. Pokazuje wymaganą moc, referencyjną temperaturę powierzchni, spadek na wykończeniu i temperaturę bezpośrednio pod nim. Dokładne zasilanie wymaga charakterystyki rur, jastrychu i całego systemu." }
              },
              {
                "@type": "Question",
                "name": "Czy po zmianie płytek na panele wystarczy podnieść krzywą grzewczą?",
                "acceptedAnswer": { "@type": "Answer", "text": "Nie należy robić tego automatycznie. Najpierw trzeba sprawdzić nowy opór, wymaganą moc, limit temperatury panelu i rezerwę istniejącej podłogi. Wyższa temperatura może naruszyć wymagania produktu." }
              }
            ]
          }
        ]
      }
      </script>

      <script>
      (function () {
        "use strict";

        var root = document.getElementById("rk-cover-guide");
        var lastState = null;
        if (!root) { return; }

        function byId(id) {
          return document.getElementById(id);
        }

        function textValue(id) {
          var field = byId(id);
          if (!field) { return ""; }
          return String(field.value);
        }

        function numberValue(id) {
          var parsed = parseFloat(textValue(id).replace(",", "."));
          if (Number.isFinite(parsed)) { return parsed; }
          return 0;
        }

        function setText(id, value) {
          var element = byId(id);
          if (element) { element.textContent = value; }
        }

        function formatNumber(value, digits) {
          if (!Number.isFinite(value)) { return "—"; }
          return value.toFixed(digits).replace(".", ",");
        }

        function surfaceTemperature(q, roomTemperature) {
          if (q <= 0) { return roomTemperature; }
          return roomTemperature + Math.pow(q / 8.92, 1 / 1.1);
        }

        function maximumOutput(surfaceLimit, roomTemperature) {
          var difference = surfaceLimit - roomTemperature;
          if (difference <= 0) { return 0; }
          return 8.92 * Math.pow(difference, 1.1);
        }

        function readVariant(prefix) {
          var mode = textValue("rk-cover-" + prefix + "-mode");
          var declaredR = numberValue("rk-cover-" + prefix + "-cover-r");
          var thickness = numberValue("rk-cover-" + prefix + "-thickness");
          var lambda = numberValue("rk-cover-" + prefix + "-lambda");
          var coverR = declaredR;
          var validSource = declaredR > 0;

          if (mode === "calculated") {
            validSource = false;
            coverR = 0;
            if (thickness > 0) {
              if (lambda > 0) {
                coverR = thickness / 1000 / lambda;
                validSource = true;
              }
            }
          }

          var installR = Math.max(0, numberValue("rk-cover-" + prefix + "-install-r"));
          var extraR = Math.max(0, numberValue("rk-cover-" + prefix + "-extra-r"));

          return {
            prefix: prefix,
            name: textValue("rk-cover-" + prefix + "-name").trim(),
            mode: mode,
            declaredR: declaredR,
            thickness: thickness,
            lambda: lambda,
            coverR: Math.max(0, coverR),
            installR: installR,
            extraR: extraR,
            totalR: Math.max(0, coverR) + installR + extraR,
            maxTemperature: numberValue("rk-cover-" + prefix + "-max-temp"),
            validSource: validSource
          };
        }

        function readCommon() {
          var loss = numberValue("rk-cover-loss");
          var area = numberValue("rk-cover-area");
          var roomTemperature = numberValue("rk-cover-room-temp");
          var zoneLimit = numberValue("rk-cover-max-surface");
          var q = 0;
          var valid = false;

          if (loss > 0) {
            if (area > 0) {
              if (roomTemperature > 0) {
                q = loss / area;
                valid = true;
              }
            }
          }

          return {
            loss: loss,
            area: area,
            roomTemperature: roomTemperature,
            zoneLimit: zoneLimit,
            q: q,
            requiredSurface: surfaceTemperature(q, roomTemperature),
            zoneMaximumOutput: maximumOutput(zoneLimit, roomTemperature),
            valid: valid
          };
        }

        function effectiveLimit(common, variant) {
          var limit = common.zoneLimit;
          if (variant.maxTemperature > 0) {
            if (limit <= 0) {
              limit = variant.maxTemperature;
            } else if (variant.maxTemperature < limit) {
              limit = variant.maxTemperature;
            }
          }
          return limit;
        }

        function evaluateVariant(common, variant) {
          var limit = effectiveLimit(common, variant);
          var drop = common.q * variant.totalR;
          var underTemperature = common.requiredSurface + drop;
          var maxOutput = maximumOutput(limit, common.roomTemperature);
          var margin = limit - common.requiredSurface;
          var status = "good";
          var diagnostics = [];

          if (!common.valid) {
            status = "bad";
            diagnostics.push({ type: "is-bad", text: "Uzupełnij dodatnią stratę ciepła, powierzchnię czynną i temperaturę pomieszczenia." });
          }

          if (!variant.validSource) {
            status = "bad";
            diagnostics.push({ type: "is-bad", text: "Nie można wyznaczyć oporu okładziny. Podaj dodatnie R albo poprawną grubość i przewodność λ." });
          }

          if (variant.totalR <= 0) {
            status = "bad";
            diagnostics.push({ type: "is-bad", text: "Łączny opór wariantu musi być większy od zera." });
          }

          if (common.valid) {
            if (limit <= common.roomTemperature) {
              status = "bad";
              diagnostics.push({ type: "is-bad", text: "Wpisany limit powierzchni nie jest wyższy od temperatury pomieszczenia." });
            } else if (common.requiredSurface > limit) {
              status = "bad";
              diagnostics.push({ type: "is-bad", text: "Wymagana temperatura powierzchni przekracza niższy z limitów: projektu strefy lub dokumentacji wariantu." });
            } else if (margin <= 1) {
              if (status !== "bad") { status = "warning"; }
              diagnostics.push({ type: "", text: "Wynik znajduje się nie dalej niż 1 K od wpisanego limitu powierzchni. Potrzebna jest dokładna weryfikacja." });
            } else {
              diagnostics.push({ type: "is-good", text: "Referencyjna temperatura powierzchni pozostaje poniżej wpisanego limitu." });
            }
          }

          if (variant.totalR > 0.15) {
            if (status !== "bad") { status = "warning"; }
            diagnostics.push({ type: "", text: "Łączny opór przekracza 0,15 m²K/W. To nie jest automatyczne odrzucenie, ale wymaga świadomego przeliczenia systemu." });
          } else if (variant.totalR > 0.10) {
            if (status !== "bad") { status = "warning"; }
            diagnostics.push({ type: "", text: "Opór wykończenia jest istotny dla temperatury po stronie systemu. Sprawdź charakterystykę konkretnej podłogi." });
          }

          if (variant.mode === "calculated") {
            if (status !== "bad") { status = "warning"; }
            diagnostics.push({ type: "", text: "Opór wyznaczono z d/λ. Dla produktu wielowarstwowego preferuj deklarację R dokładnego wyrobu." });
          }

          diagnostics.push({ type: "", text: "Temperatura pod okładziną nie jest temperaturą zasilania. Brakuje oporu jastrychu i charakterystyki rur." });

          return {
            limit: limit,
            drop: drop,
            underTemperature: underTemperature,
            maxOutput: maxOutput,
            margin: margin,
            status: status,
            diagnostics: diagnostics
          };
        }

        function addDiagnostic(container, item) {
          var element = document.createElement("div");
          element.className = "rk-cover-diagnostic";
          if (item.type) { element.className += " " + item.type; }
          element.textContent = item.text;
          container.appendChild(element);
        }

        function statusText(status) {
          if (status === "bad") { return "Przekroczenie lub brak danych"; }
          if (status === "warning") { return "Wynik graniczny — sprawdź projekt"; }
          return "Poniżej limitu powierzchni";
        }

        function renderVariant(variant, result) {
          var prefix = variant.prefix;
          var statusElement = byId("rk-cover-" + prefix + "-status");
          var diagnostics = byId("rk-cover-" + prefix + "-diagnostics");
          var displayName = variant.name ? variant.name : "Wariant " + prefix.toUpperCase();

          setText("rk-cover-" + prefix + "-result-name", displayName);
          setText("rk-cover-" + prefix + "-total", formatNumber(variant.totalR, 3));
          setText("rk-cover-" + prefix + "-drop", formatNumber(result.drop, 1) + " K");
          setText("rk-cover-" + prefix + "-under", formatNumber(result.underTemperature, 1) + " °C");
          setText("rk-cover-" + prefix + "-layer-cover", "R " + formatNumber(variant.coverR, 3));
          setText("rk-cover-" + prefix + "-layer-install", "R " + formatNumber(variant.installR, 3));
          setText("rk-cover-" + prefix + "-layer-extra", "R " + formatNumber(variant.extraR, 3));
          setText("rk-cover-" + prefix + "-status", statusText(result.status));

          statusElement.className = "rk-cover-result-status";
          if (result.status === "warning") { statusElement.className += " is-warning"; }
          if (result.status === "bad") { statusElement.className += " is-bad"; }

          diagnostics.innerHTML = "";
          result.diagnostics.forEach(function (item) {
            addDiagnostic(diagnostics, item);
          });
        }

        function renderSummary(common, variantA, variantB, resultA, resultB) {
          var title = "Oba warianty są poniżej wpisanych limitów powierzchni";
          var text = "To nie jest jeszcze potwierdzenie temperatury zasilania. Porównaj różnicę temperatur pod okładziną i sprawdź charakterystykę systemu.";
          var badge = "Model referencyjny";
          var badgeClass = "rk-cover-result-badge";

          if (!common.valid) {
            title = "Uzupełnij dane pomieszczenia";
            text = "Bez dodatniej straty ciepła i powierzchni czynnej nie można obliczyć wymaganej mocy jednostkowej.";
            badge = "Brak danych";
            badgeClass += " is-bad";
          } else if (resultA.status === "bad") {
            title = "Co najmniej jeden wariant przekracza limit lub ma niepełne dane";
            text = "Nie koryguj takiego wyniku automatycznym podniesieniem temperatury wody.";
            badge = "Wymagana korekta";
            badgeClass += " is-bad";
          } else if (resultB.status === "bad") {
            title = "Co najmniej jeden wariant przekracza limit lub ma niepełne dane";
            text = "Nie koryguj takiego wyniku automatycznym podniesieniem temperatury wody.";
            badge = "Wymagana korekta";
            badgeClass += " is-bad";
          } else if (resultA.status === "warning") {
            title = "Porównanie wymaga dokładnej weryfikacji systemu";
            text = "Wynik jest blisko limitu, opór jest wysoki albo został obliczony pomocniczo z d/λ.";
            badge = "Wynik warunkowy";
            badgeClass += " is-warning";
          } else if (resultB.status === "warning") {
            title = "Porównanie wymaga dokładnej weryfikacji systemu";
            text = "Wynik jest blisko limitu, opór jest wysoki albo został obliczony pomocniczo z d/λ.";
            badge = "Wynik warunkowy";
            badgeClass += " is-warning";
          }

          setText("rk-cover-result-title", title);
          setText("rk-cover-result-text", text);
          setText("rk-cover-result-badge", badge);
          byId("rk-cover-result-badge").className = badgeClass;
          setText("rk-cover-required-power", formatNumber(common.q, 1) + " W/m²");
          setText("rk-cover-surface-needed", formatNumber(common.requiredSurface, 1) + " °C");
          setText("rk-cover-max-output", formatNumber(common.zoneMaximumOutput, 1) + " W/m²");
          setText("rk-cover-legend-a", variantA.name ? variantA.name : "Wariant A");
          setText("rk-cover-legend-b", variantB.name ? variantB.name : "Wariant B");
        }

        function chartPointTemperature(q, roomTemperature, totalR) {
          return surfaceTemperature(q, roomTemperature) + q * totalR;
        }

        function drawChart(common, variantA, variantB) {
          var canvas = byId("rk-cover-chart");
          if (!canvas) { return; }
          if (!canvas.getContext) { return; }

          var context = canvas.getContext("2d");
          var rectangle = canvas.getBoundingClientRect();
          var cssWidth = Math.max(300, Math.floor(rectangle.width));
          var cssHeight = Math.max(280, Math.floor(rectangle.height));
          var ratio = window.devicePixelRatio ? window.devicePixelRatio : 1;
          ratio = Math.min(ratio, 2);

          canvas.width = Math.floor(cssWidth * ratio);
          canvas.height = Math.floor(cssHeight * ratio);
          context.setTransform(ratio, 0, 0, ratio, 0, 0);
          context.clearRect(0, 0, cssWidth, cssHeight);

          var margin = { left: 60, right: 18, top: 24, bottom: 50 };
          var plotWidth = cssWidth - margin.left - margin.right;
          var plotHeight = cssHeight - margin.top - margin.bottom;
          var xMax = Math.max(120, common.q * 1.35, common.zoneMaximumOutput * 1.12);
          xMax = Math.ceil(xMax / 20) * 20;
          var endA = chartPointTemperature(xMax, common.roomTemperature, variantA.totalR);
          var endB = chartPointTemperature(xMax, common.roomTemperature, variantB.totalR);
          var yMin = Math.floor(common.roomTemperature - 1);
          var yMax = Math.max(endA, endB, common.zoneLimit + 2, common.roomTemperature + 10);
          yMax = Math.ceil(yMax / 5) * 5;

          function xPosition(value) {
            return margin.left + value / xMax * plotWidth;
          }

          function yPosition(value) {
            return margin.top + (yMax - value) / (yMax - yMin) * plotHeight;
          }

          context.fillStyle = "#f8fcfd";
          context.fillRect(0, 0, cssWidth, cssHeight);
          context.font = "12px Inter, Arial, sans-serif";
          context.lineWidth = 1;

          var step;
          for (step = 0; step <= 5; step += 1) {
            var xValue = xMax * step / 5;
            var x = xPosition(xValue);
            context.strokeStyle = "#d9e6eb";
            context.beginPath();
            context.moveTo(x, margin.top);
            context.lineTo(x, margin.top + plotHeight);
            context.stroke();
            context.fillStyle = "#627987";
            context.textAlign = "center";
            context.fillText(Math.round(xValue), x, cssHeight - 29);
          }

          for (step = 0; step <= 5; step += 1) {
            var yValue = yMin + (yMax - yMin) * step / 5;
            var y = yPosition(yValue);
            context.strokeStyle = "#d9e6eb";
            context.beginPath();
            context.moveTo(margin.left, y);
            context.lineTo(margin.left + plotWidth, y);
            context.stroke();
            context.fillStyle = "#627987";
            context.textAlign = "right";
            context.fillText(formatNumber(yValue, 0), margin.left - 9, y + 4);
          }

          context.strokeStyle = "#8aa1ad";
          context.lineWidth = 1.3;
          context.beginPath();
          context.moveTo(margin.left, margin.top);
          context.lineTo(margin.left, margin.top + plotHeight);
          context.lineTo(margin.left + plotWidth, margin.top + plotHeight);
          context.stroke();

          function drawCurve(totalR, color) {
            context.strokeStyle = color;
            context.lineWidth = 3;
            context.lineJoin = "round";
            context.beginPath();
            var index;
            for (index = 0; index <= 70; index += 1) {
              var qValue = xMax * index / 70;
              var temperature = chartPointTemperature(qValue, common.roomTemperature, totalR);
              var px = xPosition(qValue);
              var py = yPosition(temperature);
              if (index === 0) {
                context.moveTo(px, py);
              } else {
                context.lineTo(px, py);
              }
            }
            context.stroke();
          }

          drawCurve(variantA.totalR, "#25aeca");
          drawCurve(variantB.totalR, "#ff6a3d");

          if (common.q > 0) {
            if (common.q <= xMax) {
              var demandX = xPosition(common.q);
              context.save();
              context.setLineDash([6, 5]);
              context.strokeStyle = "#d69a16";
              context.lineWidth = 2;
              context.beginPath();
              context.moveTo(demandX, margin.top);
              context.lineTo(demandX, margin.top + plotHeight);
              context.stroke();
              context.restore();

              context.fillStyle = "#7a5510";
              context.textAlign = demandX > cssWidth - 145 ? "right" : "left";
              var labelX = demandX > cssWidth - 145 ? demandX - 7 : demandX + 7;
              context.fillText("q wymagane " + formatNumber(common.q, 1), labelX, margin.top + 15);

              var pointA = yPosition(chartPointTemperature(common.q, common.roomTemperature, variantA.totalR));
              var pointB = yPosition(chartPointTemperature(common.q, common.roomTemperature, variantB.totalR));
              context.fillStyle = "#25aeca";
              context.beginPath();
              context.arc(demandX, pointA, 5, 0, Math.PI * 2);
              context.fill();
              context.fillStyle = "#ff6a3d";
              context.beginPath();
              context.arc(demandX, pointB, 5, 0, Math.PI * 2);
              context.fill();
            }
          }

          context.fillStyle = "#435965";
          context.textAlign = "center";
          context.font = "600 12px Inter, Arial, sans-serif";
          context.fillText("Moc jednostkowa q [W/m²]", margin.left + plotWidth / 2, cssHeight - 8);
          context.save();
          context.translate(15, margin.top + plotHeight / 2);
          context.rotate(-Math.PI / 2);
          context.fillText("Temperatura pod okładziną [°C]", 0, 0);
          context.restore();

          var difference = Math.abs(
            chartPointTemperature(common.q, common.roomTemperature, variantA.totalR) -
            chartPointTemperature(common.q, common.roomTemperature, variantB.totalR)
          );
          setText(
            "rk-cover-chart-summary",
            "Przy wymaganej mocy " + formatNumber(common.q, 1) + " W/m² różnica temperatury pod wykończeniem między wariantami wynosi około " +
            formatNumber(difference, 1) + " K. Wykres nie przedstawia temperatury wody."
          );
        }

        function analyze(event) {
          if (event) { event.preventDefault(); }

          var common = readCommon();
          var variantA = readVariant("a");
          var variantB = readVariant("b");
          var resultA = evaluateVariant(common, variantA);
          var resultB = evaluateVariant(common, variantB);

          renderVariant(variantA, resultA);
          renderVariant(variantB, resultB);
          renderSummary(common, variantA, variantB, resultA, resultB);
          drawChart(common, variantA, variantB);

          lastState = {
            common: common,
            variantA: variantA,
            variantB: variantB
          };
        }

        var form = byId("rk-cover-form");
        if (form) {
          form.addEventListener("submit", analyze);
          var fields = form.querySelectorAll("input, select");
          var index;
          for (index = 0; index < fields.length; index += 1) {
            fields[index].addEventListener("input", analyze);
            fields[index].addEventListener("change", analyze);
          }
        }

        window.addEventListener("resize", function () {
          if (lastState) {
            drawChart(lastState.common, lastState.variantA, lastState.variantB);
          }
        });

        analyze();
      }());
      </script>
    </div>
  </article>
</div>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">Jak rodzaj okładziny podłogowej wpływa na wydajność ogrzewania podłogowego.</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
					<wfw:commentRss>https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/feed/</wfw:commentRss>
			<slash:comments>1</slash:comments>
		
		
			</item>
	</channel>
</rss>
