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

<image>
	<url>https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/cropped-Projekt-ogrzewania-logo-1-32x32.jpg</url>
	<title>Archiwa Budowa i remonty - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/category/budowa-i-remonty/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Frezowanie ogrzewania podłogowego w starym domu – kiedy ma sens?</title>
		<link>https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Tue, 07 Apr 2026 09:03:02 +0000</pubDate>
				<category><![CDATA[Budowa i remont]]></category>
		<category><![CDATA[Budowa i remonty]]></category>
		<category><![CDATA[Frezowanie posadzki]]></category>
		<category><![CDATA[Modernizacja instalacji]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Porady dla domu]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Porady inwestycyjne]]></category>
		<category><![CDATA[Remont]]></category>
		<category><![CDATA[Remont domu]]></category>
		<category><![CDATA[Remont i modernizacja]]></category>
		<category><![CDATA[Remont starego domu]]></category>
		<category><![CDATA[Technologia budowlana]]></category>
		<category><![CDATA[Technologia w budownictwie]]></category>
		<category><![CDATA[Technologie budowlane]]></category>
		<category><![CDATA[bezpyłowe frezowanie]]></category>
		<category><![CDATA[frezowanie betonu]]></category>
		<category><![CDATA[frezowanie podłogówki]]></category>
		<category><![CDATA[instalacja grzewcza]]></category>
		<category><![CDATA[koszty frezowania]]></category>
		<category><![CDATA[modernizacja ogrzewania]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[podłogówka w starym domu]]></category>
		<category><![CDATA[projekt ogrzewania podłogowego]]></category>
		<category><![CDATA[remont]]></category>
		<category><![CDATA[remont starego domu]]></category>
		<category><![CDATA[stara wylewka]]></category>
		<category><![CDATA[system suchy]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=4152</guid>

					<description><![CDATA[<p>Remont starego budynku często wiąże się z trudnymi decyzjami, a jedną z najważniejszych jest wybór odpowiedniego systemu grzewczego. Wiele osób marzy o komfortowej, ciepłej podłodze, jednak przeraża je wizja skuwania starych wylewek, wywożenia ton gruzu i drastycznego podnoszenia poziomu posadzki, co niesie za sobą konieczność przerabiania progów czy skracania drzwi. Na szczęście istnieje nowoczesna, znacznie mniej inwazyjna alternatywa. Frezowanie ogrzewania podłogowego w starym domu to innowacyjna metoda, która pozwala ukryć rury grzewcze bezpośrednio w istniejącym już betonie. W tym obszernym poradniku przyjrzymy się z bliska, jak krok po kroku przebiega ten proces. Sprawdzimy, z jakimi realnymi kosztami musisz się liczyć, czy prace faktycznie przebiegają bezpyłowo oraz w jakich sytuacjach ta technologia sprawdzi się najlepiej.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/">Frezowanie ogrzewania podłogowego w starym domu – kiedy ma sens?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-milling-guide {
    --rk-dark: #102536;
    --rk-navy: #15384d;
    --rk-navy-2: #1d4a60;
    --rk-cyan: #25c7d8;
    --rk-cyan-dark: #078eae;
    --rk-cyan-soft: #e7f9fb;
    --rk-orange: #ff6846;
    --rk-orange-dark: #df4c2f;
    --rk-orange-soft: #fff0eb;
    --rk-green: #16836b;
    --rk-green-soft: #eaf8f3;
    --rk-yellow: #a96f00;
    --rk-yellow-soft: #fff7dc;
    --rk-red: #bb4138;
    --rk-red-soft: #fff0ee;
    --rk-purple: #6659c7;
    --rk-ink: #152d3d;
    --rk-copy: #466071;
    --rk-muted: #6c8290;
    --rk-line: #d4e3e9;
    --rk-bg: #f3f8fa;
    --rk-white: #ffffff;
    color: var(--rk-ink);
    font-family: Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Arial, sans-serif;
    font-size: 17px;
    line-height: 1.7;
    margin: 0 auto;
    max-width: 1360px;
    overflow-wrap: anywhere;
    width: 100%;
  }

  #rk-milling-guide,
  #rk-milling-guide *,
  #rk-milling-guide *::before,
  #rk-milling-guide *::after { box-sizing: border-box; min-width: 0; }
  #rk-milling-guide [hidden] { display: none !important; }
  #rk-milling-guide img,
  #rk-milling-guide svg { display: block; height: auto; max-width: 100%; }
  #rk-milling-guide button,
  #rk-milling-guide select,
  #rk-milling-guide summary { font: inherit; }
  #rk-milling-guide button { cursor: pointer; }
  #rk-milling-guide a {
    color: var(--rk-cyan-dark);
    font-weight: 760;
    text-decoration-thickness: 1.3px;
    text-underline-offset: 3px;
  }
  #rk-milling-guide a:hover { color: var(--rk-orange-dark); }
  #rk-milling-guide a:focus-visible,
  #rk-milling-guide button:focus-visible,
  #rk-milling-guide select:focus-visible,
  #rk-milling-guide summary:focus-visible {
    outline: 3px solid rgba(37, 199, 216, .48);
    outline-offset: 3px;
  }
  #rk-milling-guide h2,
  #rk-milling-guide h3,
  #rk-milling-guide h4,
  #rk-milling-guide p,
  #rk-milling-guide ul,
  #rk-milling-guide ol,
  #rk-milling-guide blockquote { margin-top: 0; }
  #rk-milling-guide h2,
  #rk-milling-guide h3,
  #rk-milling-guide h4 { color: var(--rk-dark); line-height: 1.18; }
  #rk-milling-guide h3 { font-size: 1.18rem; margin: 0 0 10px; }
  #rk-milling-guide h4 { font-size: 1rem; margin: 0 0 8px; }
  #rk-milling-guide p { color: var(--rk-copy); margin-bottom: 18px; }
  #rk-milling-guide strong { color: var(--rk-ink); }
  #rk-milling-guide ul,
  #rk-milling-guide ol { color: var(--rk-copy); margin-bottom: 22px; padding-left: 1.25em; }
  #rk-milling-guide li + li { margin-top: 8px; }
  #rk-milling-guide section[id] { scroll-margin-top: 24px; }

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

  #rk-milling-guide .rk-mill-hero {
    background:
      radial-gradient(circle at 91% 118%, rgba(37, 199, 216, .24) 0, rgba(37, 199, 216, .24) 18%, transparent 18.2%),
      linear-gradient(125deg, #0e2637 0%, #153e52 60%, #0c6977 100%);
    color: var(--rk-white);
    overflow: hidden;
    padding: clamp(48px, 7vw, 82px) clamp(24px, 6vw, 74px) clamp(42px, 6vw, 66px);
    position: relative;
  }
  #rk-milling-guide .rk-mill-hero::before {
    background: var(--rk-orange);
    border-radius: 50%;
    box-shadow: 0 0 0 9px rgba(255, 104, 70, .15);
    content: "";
    height: 12px;
    left: clamp(24px, 6vw, 74px);
    position: absolute;
    top: 38px;
    width: 12px;
  }
  #rk-milling-guide .rk-mill-kicker,
  #rk-milling-guide .rk-mill-eyebrow {
    color: var(--rk-orange);
    display: block;
    font-size: .75rem;
    font-weight: 900;
    letter-spacing: .13em;
    line-height: 1.4;
    margin-bottom: 13px;
    text-transform: uppercase;
  }
  #rk-milling-guide .rk-mill-kicker { color: #6ce7f1; margin-left: 28px; }
  #rk-milling-guide .rk-mill-hero-title,
  #rk-milling-guide .rk-mill-section-title,
  #rk-milling-guide .rk-mill-cta-title,
  #rk-milling-guide .rk-mill-author-title {
    font-weight: 950;
    letter-spacing: -.045em;
    line-height: 1.06;
  }
  #rk-milling-guide .rk-mill-hero-title {
    color: #ffffff !important;
    font-size: clamp(2.35rem, 6vw, 5rem);
    margin: 0;
    max-width: 1180px;
  }
  #rk-milling-guide .rk-mill-hero-title span { color: #67e6f2 !important; }
  #rk-milling-guide .rk-mill-hero-lead {
    color: #e1eff3;
    font-size: clamp(1.05rem, 2vw, 1.4rem);
    line-height: 1.58;
    margin: 26px 0 0;
    max-width: 1100px;
  }
  #rk-milling-guide .rk-mill-tags,
  #rk-milling-guide .rk-mill-meta { display: flex; flex-wrap: wrap; gap: 10px 12px; }
  #rk-milling-guide .rk-mill-tags { margin-top: 28px; }
  #rk-milling-guide .rk-mill-tags span {
    background: rgba(255, 255, 255, .075);
    border: 1px solid rgba(255, 255, 255, .23);
    border-radius: 999px;
    color: #ffffff;
    font-size: .79rem;
    font-weight: 820;
    padding: 7px 13px;
  }
  #rk-milling-guide .rk-mill-meta {
    color: #c9dce2;
    font-size: .82rem;
    font-weight: 720;
    margin-top: 30px;
  }
  #rk-milling-guide .rk-mill-meta strong { color: #ffffff; }

  #rk-milling-guide .rk-mill-nav {
    background: #f4fafc;
    border-bottom: 1px solid var(--rk-line);
    padding: 21px clamp(18px, 4vw, 46px) 23px;
  }
  #rk-milling-guide .rk-mill-nav-label {
    color: var(--rk-dark);
    display: block;
    font-size: .72rem;
    font-weight: 950;
    letter-spacing: .11em;
    margin-bottom: 10px;
    text-transform: uppercase;
  }
  #rk-milling-guide .rk-mill-nav-track { display: flex; flex-wrap: wrap; gap: 8px; }
  #rk-milling-guide .rk-mill-nav a {
    background: #ffffff;
    border: 1px solid #c8e0e8;
    border-radius: 999px;
    color: #345264;
    font-size: .75rem;
    font-weight: 820;
    line-height: 1.25;
    padding: 7px 11px;
    text-decoration: none;
  }
  #rk-milling-guide .rk-mill-nav a:hover {
    background: var(--rk-cyan-soft);
    border-color: #91dde6;
    color: #075f78;
  }

  #rk-milling-guide .rk-mill-section { padding: clamp(46px, 6vw, 72px) clamp(20px, 6vw, 66px); }
  #rk-milling-guide .rk-mill-section + .rk-mill-section { border-top: 1px solid var(--rk-line); }
  #rk-milling-guide .rk-mill-section-soft { background: var(--rk-bg); }
  #rk-milling-guide .rk-mill-section-dark { background: var(--rk-dark); color: #ffffff; }
  #rk-milling-guide .rk-mill-section-title,
  #rk-milling-guide .rk-mill-author-title {
    color: var(--rk-dark);
    font-size: clamp(1.9rem, 4vw, 3.45rem);
    margin: 0;
    max-width: 1080px;
  }
  #rk-milling-guide .rk-mill-section-dark .rk-mill-section-title { color: #ffffff; }
  #rk-milling-guide .rk-mill-lead {
    color: var(--rk-copy);
    font-size: clamp(1.03rem, 1.7vw, 1.23rem);
    line-height: 1.68;
    margin: 20px 0 0;
    max-width: 1120px;
  }
  #rk-milling-guide .rk-mill-section-dark .rk-mill-lead,
  #rk-milling-guide .rk-mill-section-dark > p { color: #c5d9e0; }
  #rk-milling-guide .rk-mill-section-dark strong { color: #ffffff; }

  #rk-milling-guide .rk-mill-answer {
    background: linear-gradient(135deg, #e6fafd 0%, #fbfdfe 100%);
    border: 1px solid #98dfe8;
    border-left: 7px solid var(--rk-cyan);
    border-radius: 18px;
    margin-top: 28px;
    padding: 26px 28px;
  }
  #rk-milling-guide .rk-mill-answer strong { display: block; font-size: 1.2rem; line-height: 1.45; }
  #rk-milling-guide .rk-mill-answer p { margin: 9px 0 0; }

  #rk-milling-guide .rk-mill-grid-2,
  #rk-milling-guide .rk-mill-grid-3,
  #rk-milling-guide .rk-mill-grid-4,
  #rk-milling-guide .rk-mill-step-grid,
  #rk-milling-guide .rk-mill-author-cards { display: grid; gap: 18px; margin-top: 28px; }
  #rk-milling-guide .rk-mill-grid-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-milling-guide .rk-mill-grid-3,
  #rk-milling-guide .rk-mill-step-grid,
  #rk-milling-guide .rk-mill-author-cards { grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-milling-guide .rk-mill-grid-4 { grid-template-columns: repeat(4, minmax(0, 1fr)); }
  #rk-milling-guide .rk-mill-card {
    background: #ffffff;
    border: 1px solid var(--rk-line);
    border-radius: 17px;
    padding: 23px;
  }
  #rk-milling-guide .rk-mill-card p,
  #rk-milling-guide .rk-mill-card ul { margin-bottom: 0; }
  #rk-milling-guide .rk-mill-section-soft .rk-mill-card { background: rgba(255, 255, 255, .88); }
  #rk-milling-guide .rk-mill-card-label,
  #rk-milling-guide .rk-mill-card-no {
    align-items: center;
    background: var(--rk-cyan-soft);
    border-radius: 10px;
    color: #076b82;
    display: inline-flex;
    font-size: .73rem;
    font-weight: 950;
    justify-content: center;
    margin-bottom: 14px;
    min-height: 35px;
    min-width: 35px;
    padding: 6px 10px;
    text-transform: uppercase;
  }
  #rk-milling-guide .rk-mill-card-label.is-green { background: var(--rk-green-soft); color: var(--rk-green); }
  #rk-milling-guide .rk-mill-card-label.is-orange { background: var(--rk-orange-soft); color: var(--rk-orange-dark); }
  #rk-milling-guide .rk-mill-card-label.is-yellow { background: var(--rk-yellow-soft); color: var(--rk-yellow); }
  #rk-milling-guide .rk-mill-card-label.is-red { background: var(--rk-red-soft); color: var(--rk-red); }

  #rk-milling-guide .rk-mill-note,
  #rk-milling-guide .rk-mill-responsibility {
    background: var(--rk-yellow-soft);
    border-left: 6px solid #e5aa1c;
    border-radius: 14px;
    color: #5f4a15;
    margin-top: 25px;
    padding: 18px 21px;
  }
  #rk-milling-guide .rk-mill-note p,
  #rk-milling-guide .rk-mill-responsibility p { color: inherit; margin: 0; }
  #rk-milling-guide .rk-mill-note.is-good { background: var(--rk-green-soft); border-left-color: #2fcda1; color: #155e4d; }
  #rk-milling-guide .rk-mill-note.is-stop,
  #rk-milling-guide .rk-mill-responsibility { background: var(--rk-orange-soft); border-left-color: var(--rk-orange); color: #6d3425; }

  #rk-milling-guide .rk-mill-table-wrap { margin-top: 28px; overflow-x: auto; }
  #rk-milling-guide table { border-collapse: separate; border-spacing: 0; min-width: 760px; width: 100%; }
  #rk-milling-guide th {
    background: var(--rk-dark);
    color: #ffffff;
    font-size: .76rem;
    letter-spacing: .045em;
    padding: 14px 15px;
    text-align: left;
    text-transform: uppercase;
  }
  #rk-milling-guide th:first-child { border-radius: 14px 0 0; }
  #rk-milling-guide th:last-child { border-radius: 0 14px 0 0; }
  #rk-milling-guide td {
    background: #ffffff;
    border-bottom: 1px solid var(--rk-line);
    color: var(--rk-copy);
    padding: 15px;
    vertical-align: top;
  }
  #rk-milling-guide tbody tr td:first-child { border-left: 1px solid var(--rk-line); }
  #rk-milling-guide tbody tr td:last-child { border-right: 1px solid var(--rk-line); }
  #rk-milling-guide tbody tr:last-child td:first-child { border-radius: 0 0 0 14px; }
  #rk-milling-guide tbody tr:last-child td:last-child { border-radius: 0 0 14px; }

  #rk-milling-guide .rk-mill-analyzer {
    background: #102f42;
    border: 1px solid #315c72;
    border-radius: 22px;
    margin-top: 30px;
    padding: clamp(20px, 4vw, 32px);
  }
  #rk-milling-guide .rk-mill-analyzer-head { border-bottom: 1px solid #315c72; padding-bottom: 20px; }
  #rk-milling-guide .rk-mill-analyzer-head h3 { color: #ffffff; font-size: clamp(1.5rem, 3vw, 2.3rem); }
  #rk-milling-guide .rk-mill-analyzer-head p { color: #bad3dc; margin: 8px 0 0; }
  #rk-milling-guide .rk-mill-stage {
    background: #17394b;
    border: 1px solid #376178;
    border-radius: 17px;
    margin-top: 18px;
    padding: 22px;
  }
  #rk-milling-guide .rk-mill-stage-head { align-items: flex-start; display: flex; gap: 13px; margin-bottom: 17px; }
  #rk-milling-guide .rk-mill-stage-no {
    align-items: center;
    background: var(--rk-cyan);
    border-radius: 10px;
    color: #082c3c;
    display: inline-flex;
    flex: 0 0 38px;
    font-weight: 950;
    height: 38px;
    justify-content: center;
  }
  #rk-milling-guide .rk-mill-stage-head h4 { color: #ffffff; font-size: 1.13rem; }
  #rk-milling-guide .rk-mill-stage-head p { color: #aecaD5; font-size: .87rem; margin: 4px 0 0; }
  #rk-milling-guide .rk-mill-fields { display: grid; gap: 14px; grid-template-columns: repeat(2, minmax(0, 1fr)); }
  #rk-milling-guide .rk-mill-field { display: block; }
  #rk-milling-guide .rk-mill-field span {
    color: #eaf6f8;
    display: block;
    font-size: .78rem;
    font-weight: 820;
    line-height: 1.35;
    margin-bottom: 7px;
  }
  #rk-milling-guide .rk-mill-field select {
    background: #ffffff;
    border: 1px solid #b8ccd5;
    border-radius: 10px;
    color: var(--rk-ink);
    min-height: 48px;
    padding: 10px 12px;
    width: 100%;
  }
  #rk-milling-guide .rk-mill-actions { display: flex; flex-wrap: wrap; gap: 11px; margin-top: 20px; }
  #rk-milling-guide .rk-mill-run,
  #rk-milling-guide .rk-mill-reset {
    border-radius: 11px;
    font-weight: 900;
    min-height: 48px;
    padding: 11px 18px;
  }
  #rk-milling-guide .rk-mill-run { background: var(--rk-orange); border: 1px solid var(--rk-orange); color: #ffffff; }
  #rk-milling-guide .rk-mill-run:hover { background: var(--rk-orange-dark); }
  #rk-milling-guide .rk-mill-reset { background: transparent; border: 1px solid #607f90; color: #ffffff; }
  #rk-milling-guide .rk-mill-result {
    background: #ffffff;
    border-left: 7px solid #e3aa21;
    border-radius: 17px;
    margin-top: 21px;
    padding: 23px;
  }
  #rk-milling-guide .rk-mill-result.is-good { border-left-color: #2fcda1; }
  #rk-milling-guide .rk-mill-result.is-stop { border-left-color: var(--rk-orange); }
  #rk-milling-guide .rk-mill-result-title { color: var(--rk-dark); font-size: clamp(1.3rem, 2.5vw, 2rem); font-weight: 950; line-height: 1.25; margin: 0; }
  #rk-milling-guide .rk-mill-result-intro { margin: 8px 0 0; }
  #rk-milling-guide .rk-mill-result-grid { display: grid; gap: 13px; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 18px; }
  #rk-milling-guide .rk-mill-result-col { background: #f5f9fa; border: 1px solid var(--rk-line); border-radius: 13px; padding: 16px; }
  #rk-milling-guide .rk-mill-result-col h4 { font-size: .82rem; letter-spacing: .06em; text-transform: uppercase; }
  #rk-milling-guide .rk-mill-result-col.is-ok h4 { color: var(--rk-green); }
  #rk-milling-guide .rk-mill-result-col.is-check h4 { color: #8b620b; }
  #rk-milling-guide .rk-mill-result-col.is-stop h4 { color: var(--rk-red); }
  #rk-milling-guide .rk-mill-result-col ul { font-size: .87rem; margin: 0; padding-left: 18px; }
  #rk-milling-guide .rk-mill-disclaimer { color: var(--rk-muted); font-size: .77rem; margin: 14px 0 0; }

  #rk-milling-guide .rk-mill-process {
    background: var(--rk-dark);
    border-radius: 22px;
    margin-top: 30px;
    padding: clamp(20px, 4vw, 30px);
  }
  #rk-milling-guide .rk-mill-process-tabs { display: grid; gap: 10px; grid-template-columns: repeat(3, minmax(0, 1fr)); }
  #rk-milling-guide .rk-mill-process-tab,
  #rk-milling-guide .rk-mill-method-tab {
    background: #173e51;
    border: 1px solid #38647a;
    border-radius: 13px;
    color: #ffffff;
    font-weight: 880;
    line-height: 1.3;
    min-height: 58px;
    padding: 11px 13px;
  }
  #rk-milling-guide .rk-mill-process-tab[aria-selected="true"],
  #rk-milling-guide .rk-mill-method-tab[aria-selected="true"] {
    background: var(--rk-cyan);
    border-color: var(--rk-cyan);
    color: #082a39;
  }
  #rk-milling-guide .rk-mill-process-panel,
  #rk-milling-guide .rk-mill-method-panel {
    background: #17394b;
    border: 1px solid #376178;
    border-radius: 17px;
    margin-top: 17px;
    padding: 24px;
  }
  #rk-milling-guide .rk-mill-process-panel h3,
  #rk-milling-guide .rk-mill-method-panel h3 { color: #ffffff; font-size: 1.45rem; }
  #rk-milling-guide .rk-mill-process-panel > p,
  #rk-milling-guide .rk-mill-method-panel > p { color: #c8dce3; }
  #rk-milling-guide .rk-mill-process-facts,
  #rk-milling-guide .rk-mill-method-facts { display: grid; gap: 12px; grid-template-columns: repeat(3, minmax(0, 1fr)); margin-top: 18px; }
  #rk-milling-guide .rk-mill-process-fact,
  #rk-milling-guide .rk-mill-method-fact {
    background: rgba(255, 255, 255, .055);
    border: 1px solid rgba(255, 255, 255, .13);
    border-radius: 13px;
    padding: 15px;
  }
  #rk-milling-guide .rk-mill-process-fact strong,
  #rk-milling-guide .rk-mill-method-fact strong {
    color: #74e8f1;
    display: block;
    font-size: .71rem;
    letter-spacing: .07em;
    margin-bottom: 5px;
    text-transform: uppercase;
  }
  #rk-milling-guide .rk-mill-process-fact span,
  #rk-milling-guide .rk-mill-method-fact span { color: #ffffff; font-size: .88rem; }

  #rk-milling-guide .rk-mill-cta {
    background:
      radial-gradient(circle at 94% 120%, rgba(37, 199, 216, .23) 0, rgba(37, 199, 216, .23) 19%, transparent 19.2%),
      linear-gradient(125deg, #0e2637 0%, #153e51 62%, #0d6574 100%);
    border-radius: 21px;
    color: #ffffff;
    margin-top: 32px;
    overflow: hidden;
    padding: clamp(24px, 4vw, 38px);
  }
  #rk-milling-guide .rk-mill-cta .rk-mill-eyebrow { color: #71e6ef; }
  #rk-milling-guide .rk-mill-cta-title { color: #ffffff; font-size: clamp(1.6rem, 3.3vw, 2.7rem); max-width: 980px; }
  #rk-milling-guide .rk-mill-cta p { color: #cee0e6; margin: 13px 0 0; max-width: 980px; }
  #rk-milling-guide .rk-mill-cta-button {
    background: var(--rk-orange);
    border-radius: 12px;
    box-shadow: 0 12px 25px rgba(255, 104, 70, .25);
    color: #ffffff;
    display: inline-block;
    font-weight: 920;
    margin-top: 21px;
    padding: 13px 19px;
    text-decoration: none;
  }
  #rk-milling-guide .rk-mill-cta-button:hover { background: #ffffff; color: var(--rk-orange-dark); }
  #rk-milling-guide .rk-mill-disclosure { color: #a9c5cf; display: block; font-size: .74rem; margin-top: 11px; }

  #rk-milling-guide .rk-mill-sources { display: grid; gap: 13px; list-style: none; margin: 28px 0 0; padding: 0; }
  #rk-milling-guide .rk-mill-sources li { background: #f3f8fa; border: 1px solid #cfe0e7; border-radius: 14px; padding: 18px 20px; }
  #rk-milling-guide .rk-mill-sources a { font-weight: 900; }
  #rk-milling-guide .rk-mill-sources span { color: var(--rk-copy); display: block; margin-top: 6px; }

  #rk-milling-guide .rk-mill-faq { display: grid; gap: 12px; margin-top: 28px; }
  #rk-milling-guide .rk-mill-faq details { background: #ffffff; border: 1px solid var(--rk-line); border-radius: 14px; overflow: hidden; }
  #rk-milling-guide .rk-mill-faq summary {
    color: var(--rk-dark);
    cursor: pointer;
    font-weight: 900;
    list-style: none;
    padding: 18px 52px 18px 20px;
    position: relative;
  }
  #rk-milling-guide .rk-mill-faq summary::-webkit-details-marker { display: none; }
  #rk-milling-guide .rk-mill-faq summary::after {
    color: var(--rk-cyan-dark);
    content: "+";
    font-size: 1.5rem;
    position: absolute;
    right: 20px;
    top: 11px;
  }
  #rk-milling-guide .rk-mill-faq details[open] summary::after { content: "−"; }
  #rk-milling-guide .rk-mill-faq-answer { border-top: 1px solid var(--rk-line); padding: 17px 20px; }
  #rk-milling-guide .rk-mill-faq-answer p { margin: 0; }

  #rk-milling-guide .rk-mill-author {
    background: var(--rk-dark);
    border-radius: 24px;
    color: #ffffff;
    overflow: hidden;
  }
  #rk-milling-guide .rk-mill-author-head {
    align-items: end;
    background: linear-gradient(120deg, #102536 0%, #16465b 100%);
    border-bottom: 1px solid rgba(255, 255, 255, .12);
    display: flex;
    justify-content: space-between;
    padding: 34px 38px;
  }
  #rk-milling-guide .rk-mill-author-head .rk-mill-eyebrow { color: #6ce7f1; }
  #rk-milling-guide .rk-mill-author-title { color: #ffffff; }
  #rk-milling-guide .rk-mill-author-head p { color: #c9dce2; margin: 12px 0 0; }
  #rk-milling-guide .rk-mill-author-mark {
    border: 1px solid #42697c;
    border-radius: 999px;
    color: #eaf5f7;
    flex: 0 0 auto;
    font-size: .75rem;
    font-weight: 850;
    margin-left: 20px;
    padding: 9px 13px;
  }
  #rk-milling-guide .rk-mill-author-layout { display: grid; grid-template-columns: 300px minmax(0, 1fr); }
  #rk-milling-guide .rk-mill-author-side {
    align-items: center;
    border-right: 1px solid rgba(255, 255, 255, .12);
    display: flex;
    flex-direction: column;
    padding: 36px 25px;
    text-align: center;
  }
  #rk-milling-guide .rk-mill-author-photo { border: 6px solid rgba(255, 255, 255, .2); border-radius: 50%; overflow: hidden; width: 158px; }
  #rk-milling-guide .rk-mill-author-name { font-size: 1.25rem; font-weight: 950; margin-top: 19px; }
  #rk-milling-guide .rk-mill-author-name a { color: #ffffff; text-decoration: none; }
  #rk-milling-guide .rk-mill-author-role { color: #bcd2db; font-size: .82rem; margin: 7px 0 0; }
  #rk-milling-guide .rk-mill-author-social-label,
  #rk-milling-guide .rk-mill-author-mini-label { color: #6ce7f1; font-size: .69rem; font-weight: 900; letter-spacing: .08em; margin-top: 19px; text-transform: uppercase; }
  #rk-milling-guide .rk-mill-author-social { display: flex; gap: 9px; margin-top: 10px; }
  #rk-milling-guide .rk-mill-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-milling-guide .rk-mill-author-social svg { fill: currentColor; height: 19px; width: 19px; }
  #rk-milling-guide .rk-mill-author-main { padding: 35px 38px; }
  #rk-milling-guide .rk-mill-author-quote {
    background: rgba(255, 255, 255, .055);
    border: 1px solid rgba(255, 255, 255, .14);
    border-left: 6px solid var(--rk-cyan);
    border-radius: 14px;
    font-size: 1rem;
    font-style: italic;
    font-weight: 750;
    line-height: 1.68;
    margin: 0;
    padding: 19px 21px;
  }
  #rk-milling-guide .rk-mill-author-quote p { color: #ffffff; margin: 0; }
  #rk-milling-guide .rk-mill-author-card { background: #214c60; border: 1px solid #37677c; border-radius: 13px; padding: 15px; }
  #rk-milling-guide .rk-mill-author-card b { color: #8beff7; display: block; font-size: .72rem; margin-bottom: 5px; }
  #rk-milling-guide .rk-mill-author-card p { color: #d8e9ed; font-size: .82rem; margin: 0; }
  #rk-milling-guide .rk-mill-portals { display: flex; flex-wrap: wrap; gap: 9px; margin-top: 10px; }
  #rk-milling-guide .rk-mill-portals a { border: 1px solid #42697c; border-radius: 999px; color: #ffffff; font-size: .78rem; padding: 7px 12px; text-decoration: none; }

  @media (max-width: 1050px) {
    #rk-milling-guide .rk-mill-grid-4 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-milling-guide .rk-mill-result-grid,
    #rk-milling-guide .rk-mill-process-facts,
    #rk-milling-guide .rk-mill-method-facts { grid-template-columns: 1fr; }
  }
  @media (max-width: 820px) {
    #rk-milling-guide .rk-mill-grid-3,
    #rk-milling-guide .rk-mill-step-grid,
    #rk-milling-guide .rk-mill-author-cards { grid-template-columns: repeat(2, minmax(0, 1fr)); }
    #rk-milling-guide .rk-mill-author-layout { grid-template-columns: 1fr; }
    #rk-milling-guide .rk-mill-author-side { border-bottom: 1px solid rgba(255, 255, 255, .12); border-right: 0; }
  }
  @media (max-width: 660px) {
    #rk-milling-guide { font-size: 16px; }
    #rk-milling-guide .rk-mill-grid-2,
    #rk-milling-guide .rk-mill-grid-3,
    #rk-milling-guide .rk-mill-grid-4,
    #rk-milling-guide .rk-mill-step-grid,
    #rk-milling-guide .rk-mill-author-cards,
    #rk-milling-guide .rk-mill-fields,
    #rk-milling-guide .rk-mill-process-tabs { grid-template-columns: 1fr; }
    #rk-milling-guide .rk-mill-actions { display: grid; grid-template-columns: 1fr; }
    #rk-milling-guide .rk-mill-run,
    #rk-milling-guide .rk-mill-reset,
    #rk-milling-guide .rk-mill-cta-button { text-align: center; width: 100%; }
    #rk-milling-guide .rk-mill-table-wrap { overflow: visible; }
    #rk-milling-guide table,
    #rk-milling-guide thead,
    #rk-milling-guide tbody,
    #rk-milling-guide tr,
    #rk-milling-guide th,
    #rk-milling-guide td { display: block; min-width: 0; width: 100%; }
    #rk-milling-guide thead {
      clip: rect(0 0 0 0);
      clip-path: inset(50%);
      height: 1px;
      overflow: hidden;
      position: absolute;
      white-space: nowrap;
      width: 1px;
    }
    #rk-milling-guide tbody { display: grid; gap: 14px; }
    #rk-milling-guide tbody tr { background: #ffffff; border: 1px solid var(--rk-line); border-radius: 14px; overflow: hidden; }
    #rk-milling-guide td,
    #rk-milling-guide tbody tr td:first-child,
    #rk-milling-guide tbody tr td:last-child { border: 0; border-bottom: 1px solid #e1ebef; border-radius: 0; padding: 13px 15px; }
    #rk-milling-guide td:last-child { border-bottom: 0; }
    #rk-milling-guide td::before {
      color: var(--rk-cyan-dark);
      content: attr(data-label);
      display: block;
      font-size: .68rem;
      font-weight: 950;
      letter-spacing: .07em;
      margin-bottom: 4px;
      text-transform: uppercase;
    }
    #rk-milling-guide .rk-mill-author-head { align-items: start; display: block; padding: 27px 20px; }
    #rk-milling-guide .rk-mill-author-mark { display: inline-block; margin: 14px 0 0; }
    #rk-milling-guide .rk-mill-author-main { padding: 25px 20px; }
  }
  @media (max-width: 430px) {
    #rk-milling-guide .rk-mill-shell { border-radius: 20px; }
    #rk-milling-guide .rk-mill-hero { padding-left: 18px; padding-right: 18px; }
    #rk-milling-guide .rk-mill-hero::before { left: 18px; }
    #rk-milling-guide .rk-mill-section { padding-left: 18px; padding-right: 18px; }
    #rk-milling-guide .rk-mill-nav { padding-left: 14px; padding-right: 14px; }
    #rk-milling-guide .rk-mill-nav a { flex: 1 1 calc(50% - 8px); text-align: center; }
    #rk-milling-guide .rk-mill-hero-title { font-size: 2.2rem; }
    #rk-milling-guide .rk-mill-section-title { font-size: 1.85rem; }
  }
  @media (prefers-reduced-motion: reduce) {
    #rk-milling-guide *,
    #rk-milling-guide *::before,
    #rk-milling-guide *::after { scroll-behavior: auto; transition-duration: .01ms; }
  }
</style>

<article id="rk-milling-guide" aria-labelledby="rk-mill-visual-title">
  <div class="rk-mill-shell">
    <header class="rk-mill-hero">
      <span class="rk-mill-kicker">Modernizacja starego domu · kwalifikacja przed frezowaniem</span>
      <div class="rk-mill-hero-title" id="rk-mill-visual-title">Frezowanie podłogówki: <span>najpierw podłoże, potem obliczenia</span></div>
      <p class="rk-mill-hero-lead">Frezowanie może ograniczyć zakres rozbiórki i zachować poziom podłogi, ale nie każda stara wylewka jest bezpiecznym miejscem na bruzdy. Ten poradnik prowadzi od rozpoznania warstw i instalacji przez OZC oraz hydraulikę aż do próby, wypełnienia kanałów i odbioru.</p>
      <div class="rk-mill-tags" aria-label="Zakres poradnika">
        <span>diagnostyka podłoża</span>
        <span>analizator kwalifikacji</span>
        <span>izolacja i straty w dół</span>
        <span>rury i hydraulika</span>
        <span>odbiór prac</span>
      </div>
      <div class="rk-mill-meta">
        <span>Autor: <strong>Robert Kucharski</strong></span>
        <span>Czas czytania: <strong>około 27 minut</strong></span>
        <span>Aktualizacja techniczna: <strong>16 września 2026 r.</strong></span>
      </div>
    </header>

    <nav class="rk-mill-nav" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-mill-nav-label">Na skróty</span>
      <div class="rk-mill-nav-track">
        <a href="#rk-mill-answer">Szybka odpowiedź</a>
        <a href="#rk-mill-qualify">Kiedy ma sens</a>
        <a href="#rk-mill-layers">Co wolno frezować</a>
        <a href="#rk-mill-analyzer-section">Analizator</a>
        <a href="#rk-mill-diagnosis">Diagnostyka</a>
        <a href="#rk-mill-insulation">Izolacja</a>
        <a href="#rk-mill-capacity">Czy ogrzeje dom</a>
        <a href="#rk-mill-pipes">Rury i rozstaw</a>
        <a href="#rk-mill-hydraulics">Hydraulika</a>
        <a href="#rk-mill-source">Źródło ciepła</a>
        <a href="#rk-mill-execution">Wykonanie</a>
        <a href="#rk-mill-pressure">Próba i bruzdy</a>
        <a href="#rk-mill-coverings">Okładziny</a>
        <a href="#rk-mill-compare">Porównanie metod</a>
        <a href="#rk-mill-cost">Zakres kosztów</a>
        <a href="#rk-mill-errors">Błędy</a>
        <a href="#rk-mill-data">Dane do projektu</a>
        <a href="#rk-mill-summary">Podsumowanie</a>
        <a href="#rk-mill-sources">Źródła</a>
        <a href="#rk-mill-faq">FAQ</a>
        <a href="#rk-mill-author">Autor</a>
      </div>
    </nav>

    <section class="rk-mill-section" id="rk-mill-answer">
      <span class="rk-mill-eyebrow">Odpowiedź w 60 sekund</span>
      <h2 class="rk-mill-section-title">Czy warto frezować ogrzewanie podłogowe w starym domu?</h2>
      <p class="rk-mill-lead"><strong>Tak — ale dopiero po potwierdzeniu, że frezowana warstwa jest odpowiednim jastrychem, ma wystarczającą i równą grubość, nie jest odspojona oraz nie kryje instalacji albo elementów konstrukcyjnych w torze cięcia.</strong> Drugim warunkiem jest wykazanie, że podłoga odda wymaganą moc przy akceptowalnej temperaturze i policzonej hydraulice.</p>
      <div class="rk-mill-answer">
        <strong>Frezowanie jest sposobem wykonania kanałów, a nie gotowym projektem ogrzewania.</strong>
        <p>Maszyna może poprawnie wyciąć bruzdy, a instalacja nadal może nie ogrzać domu z powodu braku izolacji, zbyt małej powierzchni czynnej, niedopasowanej okładziny, zbyt długich obwodów albo niewłaściwych przepływów.</p>
      </div>
      <div class="rk-mill-grid-3">
        <article class="rk-mill-card"><span class="rk-mill-card-label is-green">Krok 1</span><h3>Zakwalifikuj podłoże</h3><p>Rozpoznaj warstwy, zmierz grubość w kilku miejscach, oceń pęknięcia i znajdź instalacje przed pierwszym cięciem.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label">Krok 2</span><h3>Policz wymaganą moc</h3><p>Obciążenie każdego pomieszczenia porównaj z możliwą mocą czynnej powierzchni podłogi i wybranej okładziny.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label is-orange">Krok 3</span><h3>Zaprojektuj hydraulikę</h3><p>Dobierz średnicę, rozstaw, długości, przepływy, opory i rozdzielacz dla konkretnego systemu oraz źródła ciepła.</p></article>
      </div>
      <p>Jeżeli dopiero porównujesz warianty modernizacji, pomocny będzie również poradnik <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-mill-section rk-mill-section-soft" id="rk-mill-qualify">
      <span class="rk-mill-eyebrow">Decyzja przed zamówieniem usługi</span>
      <h2 class="rk-mill-section-title">Kiedy frezowanie ma sens, a kiedy lepiej wybrać inną metodę?</h2>
      <p class="rk-mill-lead">Największą zaletą frezowania jest ograniczenie wysokości nowej zabudowy i ilości rozbieranych warstw. Największą wadą — zależność od jakości tego, czego często nie widać pod okładziną.</p>
      <div class="rk-mill-grid-2">
        <article class="rk-mill-card">
          <span class="rk-mill-card-label is-green">Frezowanie warto analizować</span>
          <ul>
            <li>gdy poziomy drzwi, schodów i progów ograniczają podniesienie podłogi,</li>
            <li>gdy jastrych jest stabilny, rozpoznany i ma potwierdzoną geometrię,</li>
            <li>gdy znane są trasy instalacji oraz położenie dylatacji,</li>
            <li>gdy izolacja i obciążenie cieplne pozwalają uzyskać potrzebną moc,</li>
            <li>gdy wybrany system ma kompletną dokumentację wykonawczą.</li>
          </ul>
        </article>
        <article class="rk-mill-card">
          <span class="rk-mill-card-label is-red">Najpierw zatrzymaj decyzję</span>
          <ul>
            <li>gdy nie wiadomo, czy warstwa jest jastrychem czy częścią konstrukcji,</li>
            <li>gdy podłoże jest spękane, odspojone, kruche albo ma zmienną grubość,</li>
            <li>gdy w strefie cięcia znajdują się przewody, rury lub zbrojenie,</li>
            <li>gdy podłoga na gruncie nie ma rozpoznanej izolacji,</li>
            <li>gdy instalacja ma powstać bez OZC i obliczeń hydraulicznych.</li>
          </ul>
        </article>
      </div>
      <div class="rk-mill-note"><p><strong>Brak danych nie jest potwierdzeniem bezpieczeństwa.</strong> W starym domu „nie znaleźliśmy dokumentacji” oznacza potrzebę diagnostyki, a nie zgodę na przyjęcie najbardziej korzystnego wariantu.</p></div>
    </section>

    <section class="rk-mill-section" id="rk-mill-layers">
      <span class="rk-mill-eyebrow">Najważniejsze rozróżnienie konstrukcyjne</span>
      <h2 class="rk-mill-section-title">Jastrych, warstwa wyrównawcza czy strop — co naprawdę będzie frezowane?</h2>
      <p class="rk-mill-lead">Jedna grubość podłogi zmierzona przy ścianie nie opisuje całej przegrody. W starym budynku pod okładziną mogą występować naprawy, podsypki, pustki, instalacje i warstwy wykonane w różnych okresach.</p>
      <div class="rk-mill-table-wrap">
        <table>
          <thead><tr><th>Rozpoznana warstwa</th><th>Co oznacza dla decyzji</th><th>Jakiego potwierdzenia potrzeba</th></tr></thead>
          <tbody>
            <tr><td data-label="Warstwa"><strong>Jastrych pływający</strong></td><td data-label="Znaczenie">Może być kandydatem do frezowania, jeżeli zachowuje spójność, grubość i wymagania wybranego systemu.</td><td data-label="Potwierdzenie">Odkrywki, pomiary w wielu punktach, ocena rys i odspojeń oraz położenia dylatacji.</td></tr>
            <tr><td data-label="Warstwa"><strong>Jastrych zespolony</strong></td><td data-label="Znaczenie">Wymaga rozpoznania przyczepności i rzeczywistej granicy z podłożem; nie wystarczy suma grubości obu warstw.</td><td data-label="Potwierdzenie">Przekrój warstw i ocena stanu połączenia, dobrana do istniejącej konstrukcji.</td></tr>
            <tr><td data-label="Warstwa"><strong>Warstwa naprawcza lub wyrównawcza</strong></td><td data-label="Znaczenie">Może mieć lokalnie zbyt małą grubość albo nie przenosić obciążeń wymaganych po wykonaniu bruzd.</td><td data-label="Potwierdzenie">Mapa grubości, materiał warstwy i sposób jej związania z podłożem.</td></tr>
            <tr><td data-label="Warstwa"><strong>Płyta lub element konstrukcyjny</strong></td><td data-label="Znaczenie">Nie wolno traktować jej jak zwykłego jastrychu ani nacinać bez oceny osoby odpowiedzialnej za konstrukcję.</td><td data-label="Potwierdzenie">Dokumentacja, skanowanie i — jeśli jest to potrzebne — decyzja konstruktora.</td></tr>
            <tr><td data-label="Warstwa"><strong>Układ nierozpoznany</strong></td><td data-label="Znaczenie">Nie kwalifikuje się do rozpoczęcia prac tylko na podstawie wieku domu lub wyglądu powierzchni.</td><td data-label="Potwierdzenie">Odkrywki w reprezentatywnych miejscach i inwentaryzacja przed wyceną wykonawczą.</td></tr>
          </tbody>
        </table>
      </div>
      <p>Nie będziemy przyjmować jednej „bezpiecznej” grubości dla wszystkich podłóg. Głębokość oraz szerokość kanału zależą od zastosowanego systemu, rury i dokumentacji wykonawczej, a pozostawiona warstwa musi być oceniona w kontekście całej konstrukcji.</p>
    </section>

    <section class="rk-mill-section rk-mill-section-dark" id="rk-mill-analyzer-section">
      <span class="rk-mill-eyebrow">Narzędzie przed rozpoczęciem frezowania</span>
      <h2 class="rk-mill-section-title">Analizator kwalifikacji podłogi i kompletności projektu</h2>
      <p class="rk-mill-lead">Analizator nie wyznacza nośności i nie zastępuje oględzin. Porządkuje odpowiedzi, wskazuje czerwone flagi oraz oddziela kwalifikację podłoża od obliczeń ogrzewania.</p>
      <div class="rk-mill-analyzer" id="rk-mill-analyzer">
        <div class="rk-mill-analyzer-head">
          <h3>Czy można przejść do projektu i próby wykonawczej?</h3>
          <p>Odpowiadaj na podstawie odkrywek, pomiarów, dokumentacji budynku i projektu — nie na podstawie samej deklaracji „wylewka wygląda dobrze”.</p>
        </div>

        <div class="rk-mill-stage">
          <div class="rk-mill-stage-head"><span class="rk-mill-stage-no">1</span><div><h4>Rodzaj i stan frezowanej warstwy</h4><p>Najpierw ustal, w czym mają powstać kanały i czy podłoże jest ciągłe.</p></div></div>
          <div class="rk-mill-fields">
            <label class="rk-mill-field"><span>Rozpoznanie warstwy</span><select id="rk-mill-layer"><option value="unknown">Nie wiem / brak odkrywek</option><option value="screed">Jastrych rozpoznany</option><option value="structural">Płyta lub element konstrukcyjny</option><option value="mixed">Warstwy zmienne albo naprawiane</option></select></label>
            <label class="rk-mill-field"><span>Grubość w kilku miejscach</span><select id="rk-mill-thickness"><option value="unknown">Nie zmierzono</option><option value="mapped">Zmapowana i zgodna z systemem</option><option value="single">Tylko jeden pomiar</option><option value="insufficient">Lokalnie niewystarczająca</option></select></label>
            <label class="rk-mill-field"><span>Pęknięcia, pustki i odspojenia</span><select id="rk-mill-condition"><option value="unknown">Nie oceniono</option><option value="good">Nie stwierdzono problemu</option><option value="cracks">Występują rysy wymagające diagnozy</option><option value="delamination">Występują odspojenia lub kruchość</option></select></label>
            <label class="rk-mill-field"><span>Skan instalacji i zbrojenia</span><select id="rk-mill-scan"><option value="unknown">Nie wykonano</option><option value="clear">Trasy rozpoznane, pole cięcia wolne</option><option value="conflict">Występuje kolizja w polu cięcia</option></select></label>
            <label class="rk-mill-field"><span>Dylatacje i granice pól</span><select id="rk-mill-joints"><option value="unknown">Nie zinwentaryzowano</option><option value="known">Znane i uwzględnione</option><option value="damaged">Uszkodzone lub nieczytelne</option></select></label>
            <label class="rk-mill-field"><span>Zgodność z wybranym systemem frezowania</span><select id="rk-mill-system"><option value="unknown">Nie wybrano systemu</option><option value="yes">Potwierdzona dla tej warstwy i rury</option><option value="no">Brak zgodności albo dokumentacji</option></select></label>
          </div>
        </div>

        <div class="rk-mill-stage">
          <div class="rk-mill-stage-head"><span class="rk-mill-stage-no">2</span><div><h4>Warunki cieplne budynku</h4><p>Możliwość wykonania bruzd nie potwierdza jeszcze, że system pokryje straty.</p></div></div>
          <div class="rk-mill-fields">
            <label class="rk-mill-field"><span>Izolacja pod podłogą</span><select id="rk-mill-insulation-input"><option value="unknown">Nieznana</option><option value="verified">Rozpoznana i uwzględniona w obliczeniach</option><option value="weak">Brak lub niewystarczająca</option></select></label>
            <label class="rk-mill-field"><span>Projektowe obciążenie cieplne pomieszczeń</span><select id="rk-mill-ozc"><option value="unknown">Nieobliczone</option><option value="yes">OZC pomieszczenie po pomieszczeniu</option><option value="estimate">Tylko wskaźnik W/m² dla całego domu</option></select></label>
            <label class="rk-mill-field"><span>Powierzchnia czynna</span><select id="rk-mill-active"><option value="unknown">Niepoliczona</option><option value="yes">Rozrysowana po wyłączeniu zabudowy</option><option value="no">Przyjęta jako całe pomieszczenie</option></select></label>
            <label class="rk-mill-field"><span>Okładzina i jej opór cieplny</span><select id="rk-mill-cover"><option value="unknown">Nieustalone</option><option value="yes">Znane dla kompletnego układu</option><option value="high">Wysoki lub niepotwierdzony opór</option></select></label>
            <label class="rk-mill-field"><span>Moc podłogi porównana ze stratą pomieszczenia</span><select id="rk-mill-output"><option value="unknown">Nie sprawdzono</option><option value="yes">Pokrywa wynik przy dopuszczalnych temperaturach</option><option value="no">Nie pokrywa strat w części pomieszczeń</option></select></label>
            <label class="rk-mill-field"><span>Temperatura zasilania i powierzchni</span><select id="rk-mill-temperature"><option value="unknown">Nieobliczone</option><option value="yes">Sprawdzone dla źródła i okładziny</option><option value="no">Przyjęte jedną wartością bez obliczeń</option></select></label>
          </div>
        </div>

        <div class="rk-mill-stage">
          <div class="rk-mill-stage-head"><span class="rk-mill-stage-no">3</span><div><h4>Hydraulika i odbiór</h4><p>Ostatni etap łączy rurę, rozdzielacz, źródło, materiały oraz procedurę wykonawczą.</p></div></div>
          <div class="rk-mill-fields">
            <label class="rk-mill-field"><span>Rura i promień prowadzenia</span><select id="rk-mill-pipe"><option value="unknown">Nieustalone</option><option value="yes">Dobrane do systemu i bruzdy</option><option value="no">Wybrane wyłącznie po średnicy</option></select></label>
            <label class="rk-mill-field"><span>Długości, przepływy i opory pętli</span><select id="rk-mill-hydraulics-input"><option value="unknown">Niepoliczone</option><option value="yes">Sprawdzone obliczeniowo</option><option value="no">Przyjęte z jednej reguły długości</option></select></label>
            <label class="rk-mill-field"><span>Rozdzielacz i dostępne ciśnienie</span><select id="rk-mill-manifold"><option value="unknown">Nieustalone</option><option value="yes">Sprawdzone z drogą krytyczną</option><option value="no">Dobierane po wykonaniu pętli</option></select></label>
            <label class="rk-mill-field"><span>Materiał do przygotowania i wypełnienia kanałów</span><select id="rk-mill-fill"><option value="unknown">Nieustalony</option><option value="yes">Kompletny system i procedura</option><option value="no">Przypadkowa masa lub klej</option></select></label>
            <label class="rk-mill-field"><span>Próba oraz dokumentacja powykonawcza</span><select id="rk-mill-test"><option value="unknown">Nie zaplanowano</option><option value="yes">Procedura, protokół i zdjęcia</option><option value="no">Zakrycie bez udokumentowanej próby</option></select></label>
            <label class="rk-mill-field"><span>Odpowiedzialność za kwalifikację podłoża</span><select id="rk-mill-responsibility-input"><option value="unknown">Nieustalona</option><option value="yes">Wskazana osoba i zakres oceny</option><option value="no">Każdy zakłada, że sprawdził to ktoś inny</option></select></label>
          </div>
        </div>

        <div class="rk-mill-actions">
          <button class="rk-mill-run" id="rk-mill-run" type="button">Przeanalizuj przygotowanie inwestycji</button>
          <button class="rk-mill-reset" id="rk-mill-reset" type="button">Wyczyść odpowiedzi</button>
        </div>
        <div class="rk-mill-result" id="rk-mill-result" aria-live="polite">
          <p class="rk-mill-result-title" id="rk-mill-result-title">Uzupełnij dane podłoża, budynku i instalacji</p>
          <p class="rk-mill-result-intro" id="rk-mill-result-intro">Wynik rozdzieli warunki potwierdzone, dane do sprawdzenia oraz powody wstrzymania frezowania.</p>
          <div class="rk-mill-result-grid">
            <div class="rk-mill-result-col is-ok"><h4>Potwierdzone</h4><ul id="rk-mill-ok-list"><li>Jeszcze brak ocenionych danych.</li></ul></div>
            <div class="rk-mill-result-col is-check"><h4>Do sprawdzenia</h4><ul id="rk-mill-check-list"><li>Uzupełnij formularz na podstawie dokumentów i oględzin.</li></ul></div>
            <div class="rk-mill-result-col is-stop"><h4>Wstrzymaj prace</h4><ul id="rk-mill-stop-list"><li>Brak wyniku nie jest zgodą na rozpoczęcie frezowania.</li></ul></div>
          </div>
          <p class="rk-mill-disclaimer">Analizator ma charakter edukacyjny. Nie określa nośności, nie wykrywa ukrytych instalacji i nie zastępuje odkrywek, badań, projektu, dokumentacji systemu ani decyzji konstruktora, gdy dotyczy ona elementu konstrukcyjnego.</p>
        </div>
      </div>

      <aside class="rk-mill-cta" aria-label="Indywidualny projekt ogrzewania podłogowego">
        <span class="rk-mill-eyebrow">Naturalny następny etap</span>
        <div class="rk-mill-cta-title">Podłoże zostało zakwalifikowane do frezowania? Teraz trzeba sprawdzić, czy instalacja ogrzeje każde pomieszczenie</div>
        <p>Sama możliwość wykonania bruzd nie określa rozstawu rur, długości pętli, wymaganych przepływów, strat ciśnienia ani temperatury zasilania. Te parametry muszą wynikać z obciążenia cieplnego pomieszczeń i hydrauliki całej instalacji.</p>
        <a class="rk-mill-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Sprawdź zakres indywidualnego projektu podłogówki</a>
        <small class="rk-mill-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika. Kwalifikacja konstrukcyjna podłoża nie jest zastępowana projektem instalacji.</small>
      </aside>
    </section>

    <section class="rk-mill-section" id="rk-mill-diagnosis">
      <span class="rk-mill-eyebrow">Modułowa grafika edukacyjna</span>
      <h2 class="rk-mill-section-title">Od starej podłogi do gotowej instalacji — sześć kontroli</h2>
      <p class="rk-mill-lead">Wybierz etap. Moduł pokazuje, co trzeba sprawdzić, kto powinien potwierdzić wynik oraz jaki ślad pozostawić w dokumentacji. Kafelki nie nakładają się i na telefonie przechodzą w jedną kolumnę.</p>
      <div class="rk-mill-process" id="rk-mill-process">
        <div class="rk-mill-process-tabs" role="tablist" aria-label="Etapy kwalifikacji i wykonania">
          <button class="rk-mill-process-tab" type="button" role="tab" aria-selected="true" data-rk-process="layers">1. Warstwy</button>
          <button class="rk-mill-process-tab" type="button" role="tab" aria-selected="false" data-rk-process="scan">2. Grubość i instalacje</button>
          <button class="rk-mill-process-tab" type="button" role="tab" aria-selected="false" data-rk-process="condition">3. Stan podłoża</button>
          <button class="rk-mill-process-tab" type="button" role="tab" aria-selected="false" data-rk-process="thermal">4. Izolacja i moc</button>
          <button class="rk-mill-process-tab" type="button" role="tab" aria-selected="false" data-rk-process="design">5. Pętle i hydraulika</button>
          <button class="rk-mill-process-tab" type="button" role="tab" aria-selected="false" data-rk-process="handover">6. Próba i odbiór</button>
        </div>
        <div class="rk-mill-process-panel" role="tabpanel" aria-live="polite">
          <h3 id="rk-mill-process-title">Rozpoznaj przekrój podłogi</h3>
          <p id="rk-mill-process-summary">Zdejmij założenie, że cała grubość pod okładziną jest jednorodnym jastrychem. Odkrywka powinna pokazać granice warstw oraz ich rzeczywiste materiały.</p>
          <div class="rk-mill-process-facts">
            <div class="rk-mill-process-fact"><strong>Co sprawdzić</strong><span id="rk-mill-process-check">Rodzaj jastrychu, granice warstw, sposób związania z podłożem i ewentualną podsypkę.</span></div>
            <div class="rk-mill-process-fact"><strong>Kto potwierdza</strong><span id="rk-mill-process-who">Wykonawca diagnostyki; przy ingerencji konstrukcyjnej także konstruktor.</span></div>
            <div class="rk-mill-process-fact"><strong>Co zachować</strong><span id="rk-mill-process-proof">Zdjęcia odkrywek, lokalizacje i opis grubości każdej rozpoznanej warstwy.</span></div>
          </div>
        </div>
      </div>
    </section>

    <section class="rk-mill-section rk-mill-section-soft" id="rk-mill-insulation">
      <span class="rk-mill-eyebrow">Problem, którego nie naprawia cienka powłoka</span>
      <h2 class="rk-mill-section-title">Brak izolacji pod starą podłogą — kiedy frezowanie traci sens?</h2>
      <p class="rk-mill-lead">Warstwa naniesiona tylko wewnątrz bruzdy nie zastępuje ciągłej izolacji pod całą powierzchnią. Rekuperacja może ograniczać straty wentylacyjne budynku, ale nie zatrzymuje przewodzenia ciepła z podłogi do gruntu albo nieogrzewanego pomieszczenia.</p>
      <div class="rk-mill-grid-3">
        <article class="rk-mill-card"><span class="rk-mill-card-label is-green">Izolacja rozpoznana</span><h3>Wprowadź ją do obliczeń</h3><p>Grubość, materiał, ciągłość oraz warunki po drugiej stronie podłogi powinny znaleźć się w bilansie cieplnym.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label is-yellow">Izolacja nieznana</span><h3>Nie zgaduj z wieku domu</h3><p>Wykonaj odkrywkę albo pozyskaj dokumentację. Brak informacji nie może być zamieniony na korzystne założenie.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label is-red">Izolacji brakuje</span><h3>Porównaj alternatywy</h3><p>Policz straty w dół oraz rozważ przebudowę warstw, system suchy, niskoprofilowy albo pozostawienie innych odbiorników.</p></article>
      </div>
      <div class="rk-mill-note is-stop"><p><strong>Obniżenie temperatury zasilania nie tworzy izolacji.</strong> Może ograniczyć temperaturę przegrody, ale równocześnie zmniejsza moc oddawaną do pomieszczenia. Decyzja wymaga bilansu, a nie hasła o „ratowaniu” podłogi.</p></div>
      <p>Więcej o roli warstw pod instalacją znajdziesz w poradniku <a href="https://projekt-ogrzewania.pl/jakie-sa-najlepsze-sposoby-izolacji-pod-ogrzewanie-podlogowe/">jak izolować pod ogrzewaniem podłogowym</a>.</p>
    </section>

    <section class="rk-mill-section" id="rk-mill-capacity">
      <span class="rk-mill-eyebrow">Najpierw obciążenie każdego pomieszczenia</span>
      <h2 class="rk-mill-section-title">Czy frezowana podłogówka może samodzielnie ogrzać stary dom?</h2>
      <p class="rk-mill-lead">Odpowiedź wynika z porównania dwóch wielkości: projektowej straty ciepła pomieszczenia oraz mocy możliwej do oddania przez jego czynną powierzchnię podłogi. Powierzchnia domu i jedna temperatura zasilania nie wystarczą.</p>
      <div class="rk-mill-grid-4">
        <article class="rk-mill-card"><span class="rk-mill-card-no">Q</span><h3>Strata pomieszczenia</h3><p>OZC uwzględnia przegrody, mostki, wentylację, temperaturę projektową i warunki wewnętrzne.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-no">A</span><h3>Powierzchnia czynna</h3><p>Odlicza się trwałą zabudowę i pola, w których rury nie mogą zostać ułożone.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-no">R</span><h3>Opór wykończenia</h3><p>Okładzina wraz z podkładem wpływa na temperaturę potrzebną do przekazania wymaganej mocy.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-no">T</span><h3>Granice temperatur</h3><p>Sprawdza się komfort, rodzaj pomieszczenia, materiał podłogi i warunki źródła ciepła.</p></article>
      </div>
      <p>Podstawy opisuje poradnik <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowe obciążenie cieplne OZC</a>. Osobna analiza odpowiada na pytanie, <a href="https://projekt-ogrzewania.pl/czy-ogrzewanie-podlogowe-moze-byc-jedynym-zrodlem-ciepla-w-domu-analiza-dla-polskich-warunkow/">czy podłogówka może być jedynym źródłem ciepła</a>.</p>
      <div class="rk-mill-note"><p><strong>W starym domu krytyczne bywają łazienki, pomieszczenia narożne i strefy z dużymi przeszkleniami.</strong> Tam mniejsza powierzchnia czynna lub większa strata może wymagać dodatkowego odbiornika albo wcześniejszej termomodernizacji.</p></div>
    </section>

    <section class="rk-mill-section rk-mill-section-soft" id="rk-mill-pipes">
      <span class="rk-mill-eyebrow">Nie ma jednej średnicy dla każdej posadzki</span>
      <h2 class="rk-mill-section-title">Rura, głębokość kanału i rozstaw — decyzje jednego systemu</h2>
      <p class="rk-mill-lead">Rura 14 × 2 mm nie jest automatycznie najlepsza, a rura 16 × 2 mm nie jest automatycznie niebezpieczna. Najpierw trzeba znać dopuszczony przekrój kanału, rzeczywistą grubość warstwy, promień prowadzenia i charakterystykę hydrauliczną.</p>
      <div class="rk-mill-table-wrap">
        <table>
          <thead><tr><th>Decyzja</th><th>Od czego zależy</th><th>Czego nie przyjmować automatycznie</th></tr></thead>
          <tbody>
            <tr><td data-label="Decyzja"><strong>Średnica i konstrukcja rury</strong></td><td data-label="Zależność">Od dokumentacji systemu, geometrii kanału, promienia gięcia, przepływu i zgodnych połączeń.</td><td data-label="Nie zakładaj">Że każda rura o tym samym wymiarze pasuje do tej samej bruzdy i złączek.</td></tr>
            <tr><td data-label="Decyzja"><strong>Głębokość i szerokość bruzdy</strong></td><td data-label="Zależność">Od wymiaru rury, wymaganej otuliny, materiału wypełniającego i podłoża.</td><td data-label="Nie zakładaj">Jednej wartości 20–22 mm dla każdego systemu oraz każdej wylewki.</td></tr>
            <tr><td data-label="Decyzja"><strong>Rozstaw rur</strong></td><td data-label="Zależność">Od straty pomieszczenia, powierzchni czynnej, temperatury wody, okładziny i stref brzegowych.</td><td data-label="Nie zakładaj">Stałego układu 10 cm przy ścianach i 15 cm wszędzie indziej.</td></tr>
            <tr><td data-label="Decyzja"><strong>Długość obwodu</strong></td><td data-label="Zależność">Od światła rury, przepływu, medium, oporów miejscowych i dostępnego ciśnienia.</td><td data-label="Nie zakładaj">Że każda pętla 14 mm może mieć dokładnie 80 m.</td></tr>
          </tbody>
        </table>
      </div>
      <p>Porównanie konstrukcji i oznaczeń zawiera przewodnik <a href="https://projekt-ogrzewania.pl/rury-do-ogrzewania-podlogowego/">rury do ogrzewania podłogowego</a>. Wymaganie ograniczenia przenikania tlenu trzeba potwierdzić w dokumentacji konkretnego wyrobu — szerzej wyjaśnia to artykuł o <a href="https://projekt-ogrzewania.pl/rura-z-bariera-antydyfuzyjna-evoh/">barierze antydyfuzyjnej EVOH</a>.</p>
    </section>

    <section class="rk-mill-section" id="rk-mill-hydraulics">
      <span class="rk-mill-eyebrow">Granica pętli wynika z przepływu i oporu</span>
      <h2 class="rk-mill-section-title">Długości pętli, przepływy i pompa obiegowa</h2>
      <p class="rk-mill-lead">Małe światło rury może szybko zwiększać spadek ciśnienia, ale nie da się podać wiarygodnej wartości bez przepływu, temperatury, medium, pełnej długości i charakterystyki konkretnej rury.</p>
      <div class="rk-mill-grid-3">
        <article class="rk-mill-card"><span class="rk-mill-card-label">1. Moc</span><h3>Wyznacza przepływ</h3><p>Wymagany strumień wody wynika z mocy obwodu oraz przyjętej różnicy temperatur zasilania i powrotu.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label">2. Droga krytyczna</span><h3>Wyznacza napór</h3><p>Pompa musi obsłużyć wymagany przepływ całej instalacji i opór najbardziej wymagającej drogi, nie sumę oporów pętli.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label">3. Równoważenie</span><h3>Ustawia podział wody</h3><p>Rotametry służą do ustawienia obliczonych przepływów, a nie do naprawiania przypadkowo dobranych długości.</p></article>
      </div>
      <p>Dlaczego sama okrągła liczba metrów nie wystarcza, wyjaśnia poradnik o <a href="https://projekt-ogrzewania.pl/maksymalna-dlugosc-petli-ogrzewania-podlogowego/">maksymalnej długości pętli</a>. Do wstępnego porządkowania parametrów może służyć <a href="https://projekt-ogrzewania.pl/kalkulator-doboru-pompy-obiegowej-w-ogrzewaniu-podlogowym/">kalkulator doboru pompy obiegowej</a>, ale punkt pracy musi wynikać z całego układu.</p>
      <div class="rk-mill-note is-stop"><p><strong>Nie dobieraj pompy wyłącznie po wysokości podnoszenia „6 m”.</strong> Ten napis nie oznacza dostępnych 60 kPa przy każdym wymaganym przepływie. Potrzebna jest charakterystyka urządzenia i punkt pracy instalacji.</p></div>
    </section>

    <section class="rk-mill-section rk-mill-section-soft" id="rk-mill-source">
      <span class="rk-mill-eyebrow">Frezowanie nie narzuca jednej kotłowni</span>
      <h2 class="rk-mill-section-title">Pompa ciepła, kocioł, bufor i układ mieszający</h2>
      <p class="rk-mill-lead">Frezowana podłogówka może współpracować z różnymi źródłami. O schemacie decydują temperatura, minimalny przepływ, modulacja, pojemność wodna, odszranianie pompy ciepła, liczba stref i obecność innych odbiorników.</p>
      <div class="rk-mill-grid-3">
        <article class="rk-mill-card"><span class="rk-mill-card-label is-green">Pompa ciepła</span><h3>Sprawdź moc przy parametrach projektu</h3><p>Niska temperatura może pomagać sprawności, ale tylko wtedy, gdy powierzchnia podłogi pokrywa obciążenie pomieszczeń.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label">Kocioł</span><h3>Kontroluj temperaturę obiegu</h3><p>Potrzeba mieszania zależy od parametrów źródła, automatyki oraz tego, czy pozostały obiegi wysokotemperaturowe.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label is-yellow">Bufor</span><h3>Nie stosuj jednej liczby l/kW</h3><p>Pojemność i sposób włączenia wynikają z wymagań źródła, zładu, defrostu, strefowania i schematu hydraulicznego.</p></article>
      </div>
      <p>Zależności dla modernizowanego układu pokazuje artykuł <a href="https://projekt-ogrzewania.pl/pompa-ciepla-podlogowka-i-grzejniki/">pompa ciepła, podłogówka i grzejniki</a>. Jeżeli planujesz jeden system niskotemperaturowy, zobacz również <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekt podłogówki z pompą ciepła</a>.</p>
    </section>

    <section class="rk-mill-section" id="rk-mill-execution">
      <span class="rk-mill-eyebrow">Kolejność ograniczająca ryzyko</span>
      <h2 class="rk-mill-section-title">Jak przebiega prawidłowo przygotowane frezowanie?</h2>
      <div class="rk-mill-step-grid">
        <article class="rk-mill-card"><span class="rk-mill-card-no">01</span><h3>Inwentaryzacja</h3><p>Dokumentacja, poziomy, drzwi, schody, dylatacje, istniejące ogrzewanie i planowane okładziny.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-no">02</span><h3>Odkrywki i skan</h3><p>Rozpoznanie przekroju, mapowanie grubości oraz lokalizacja rur, przewodów i elementów metalowych.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-no">03</span><h3>Kwalifikacja podłoża</h3><p>Ocena spójności, rys, odspojeń, wilgotności i ograniczeń wynikających z konstrukcji.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-no">04</span><h3>Projekt cieplny</h3><p>OZC, powierzchnie czynne, okładziny, moc podłogi, rozstaw i temperatura pracy.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-no">05</span><h3>Projekt hydrauliczny</h3><p>Podział pętli, trasy dobiegów, długości, przepływy, opory, rozdzielacz i pompa.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-no">06</span><h3>Próba wykonawcza</h3><p>Weryfikacja maszyny, kanału, pylenia, promienia prowadzenia i zachowania podłoża na małym polu.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-no">07</span><h3>Frezowanie i czyszczenie</h3><p>Cięcie według tras, ciągły odciąg, ochrona stref i przygotowanie kanałów zgodnie z systemem.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-no">08</span><h3>Rury, próba i wypełnienie</h3><p>Ułożenie bez niedopuszczonych połączeń, kontrola, próba, materiał systemowy i zachowanie dylatacji.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-no">09</span><h3>Dokumentacja i rozruch</h3><p>Zdjęcia tras, opis pętli, protokół, nastawy, wymagane czasy technologiczne oraz uruchomienie.</p></article>
      </div>
      <p>Przebieg rur trzeba rozrysować przed przyjazdem frezarki. Dotyczy to także pól wyłączonych opisanych w poradniku <a href="https://projekt-ogrzewania.pl/gdzie-nie-ukladac-ogrzewania-podlogowego/">gdzie nie układać ogrzewania podłogowego</a>.</p>
    </section>

    <section class="rk-mill-section rk-mill-section-soft" id="rk-mill-pressure">
      <span class="rk-mill-eyebrow">Zakrycie instalacji jest momentem bez odwrotu</span>
      <h2 class="rk-mill-section-title">Próba ciśnieniowa, wypełnienie bruzd i dylatacje</h2>
      <p class="rk-mill-lead">Nie należy kopiować jednej wartości ciśnienia i czasu do każdego systemu. Procedura próby, warunki podczas wypełniania oraz moment uruchomienia wynikają z projektu, zastosowanych elementów i dokumentacji technologicznej.</p>
      <div class="rk-mill-grid-3">
        <article class="rk-mill-card"><span class="rk-mill-card-label">Próba</span><h3>Przed zakryciem</h3><p>Obejmuje całą pętlę i połączenia dostępne przy rozdzielaczu. Wynik powinien zostać zapisany w protokole.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label">Kanały</span><h3>Przygotowane systemowo</h3><p>Odkurzanie, gruntowanie i materiał wypełniający muszą odpowiadać podłożu oraz kompletnej technologii.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label">Dylatacje</span><h3>Nie znikają po frezowaniu</h3><p>Przebieg pętli i zabezpieczenie przejść nie mogą blokować pracy oddzielnych pól podłogi.</p></article>
      </div>
      <div class="rk-mill-note"><p><strong>Oznaczenie kleju do płytek nie jest samo w sobie kwalifikacją materiału do wypełnienia kanału.</strong> Liczy się przeznaczenie produktu, kompatybilność z podłożem, ogrzewaniem, rurą i późniejszą warstwą wykończeniową.</p></div>
      <p>Procedurę odbiorową rozwija poradnik o <a href="https://projekt-ogrzewania.pl/proba-szczelnosci-ogrzewania-podlogowego/">próbie szczelności ogrzewania podłogowego</a>, a zasady pól i przejść artykuł o <a href="https://projekt-ogrzewania.pl/izolacja-brzegowa-i-dylatacje-w-instalacji-ogrzewania-podlogowego/">dylatacjach i izolacji brzegowej</a>.</p>
    </section>

    <section class="rk-mill-section" id="rk-mill-coverings">
      <span class="rk-mill-eyebrow">Wykończenie jest częścią modelu cieplnego</span>
      <h2 class="rk-mill-section-title">Płytki, panele i drewno nad frezowaną podłogówką</h2>
      <p class="rk-mill-lead">Nie wystarczy opór samego panelu. Do obliczeń należy przyjąć kompletną drogę ciepła nad rurą: materiał wypełniający, warstwę wyrównującą, klej albo podkład oraz okładzinę.</p>
      <div class="rk-mill-table-wrap">
        <table>
          <thead><tr><th>Wykończenie</th><th>Co sprawdzić przed projektem</th><th>Ryzyko przy pominięciu danych</th></tr></thead>
          <tbody>
            <tr><td data-label="Wykończenie"><strong>Płytki lub kamień</strong></td><td data-label="Sprawdź">Cały system klejowy, dylatacje, równość i wymagany czas technologiczny.</td><td data-label="Ryzyko">Pęknięcia, odspojenia albo uruchomienie przed osiągnięciem wymaganych właściwości.</td></tr>
            <tr><td data-label="Wykończenie"><strong>Panele laminowane lub winylowe</strong></td><td data-label="Sprawdź">Deklarowany opór panelu i podkładu, ograniczenia temperatury oraz sposób montażu.</td><td data-label="Ryzyko">Zbyt duży opór, wyższa temperatura wody albo przekroczenie wymagań materiału.</td></tr>
            <tr><td data-label="Wykończenie"><strong>Deska warstwowa</strong></td><td data-label="Sprawdź">Opór, grubość, stabilność wymiarową, klejenie i dopuszczoną temperaturę powierzchni.</td><td data-label="Ryzyko">Niedobór mocy, szczeliny, odkształcenia albo konieczność pracy na wyższym parametrze.</td></tr>
            <tr><td data-label="Wykończenie"><strong>Wykładzina lub dywan</strong></td><td data-label="Sprawdź">Łączny opór wszystkich warstw oraz sposób mocowania.</td><td data-label="Ryzyko">Lokalne ograniczenie emisji ciepła i inny bilans niż w odkrytej części podłogi.</td></tr>
          </tbody>
        </table>
      </div>
      <p>Obliczanie i sumowanie warstw wyjaśnia poradnik <a href="https://projekt-ogrzewania.pl/opor-cieplny-r-m%c2%b2k-w-klucz-do-efektywnego-ogrzewania-podlogowego/">opór cieplny R podłogi</a>. Praktyczne porównanie materiałów znajdziesz w artykule <a href="https://projekt-ogrzewania.pl/jak-rodzaj-okladziny-podlogowej-wplywa-na-wydajnosc-ogrzewania-podlogowego/">jak okładzina wpływa na wydajność podłogówki</a>.</p>
    </section>

    <section class="rk-mill-section rk-mill-section-dark" id="rk-mill-compare">
      <span class="rk-mill-eyebrow">Porównanie bez sztucznych cen i czasów</span>
      <h2 class="rk-mill-section-title">Frezowanie, system suchy czy przebudowa podłogi?</h2>
      <p class="rk-mill-lead">Wybierz metodę. Porównanie pokazuje warunki brzegowe, a nie ogłasza jednego zwycięzcy dla każdego remontu.</p>
      <div class="rk-mill-process" id="rk-mill-methods">
        <div class="rk-mill-process-tabs" role="tablist" aria-label="Metody modernizacji podłogi">
          <button class="rk-mill-method-tab" type="button" role="tab" aria-selected="true" data-rk-method="milling">Frezowanie</button>
          <button class="rk-mill-method-tab" type="button" role="tab" aria-selected="false" data-rk-method="dry">System suchy</button>
          <button class="rk-mill-method-tab" type="button" role="tab" aria-selected="false" data-rk-method="rebuild">Przebudowa podłogi</button>
        </div>
        <div class="rk-mill-method-panel" role="tabpanel" aria-live="polite">
          <h3 id="rk-mill-method-title">Frezowanie istniejącego jastrychu</h3>
          <p id="rk-mill-method-summary">Najmniej zmienia poziom podłogi, ale wymaga najlepiej rozpoznanego i wystarczająco stabilnego podłoża.</p>
          <div class="rk-mill-method-facts">
            <div class="rk-mill-method-fact"><strong>Największa korzyść</strong><span id="rk-mill-method-benefit">Ograniczenie rozbiórki i dodatkowej wysokości zabudowy.</span></div>
            <div class="rk-mill-method-fact"><strong>Warunek wejścia</strong><span id="rk-mill-method-condition">Kwalifikacja jastrychu, instalacji, izolacji oraz pełny projekt cieplny i hydrauliczny.</span></div>
            <div class="rk-mill-method-fact"><strong>Główne ryzyko</strong><span id="rk-mill-method-risk">Ukryta słabość albo zmienna grubość warstwy ujawniona dopiero podczas cięcia.</span></div>
          </div>
        </div>
      </div>
      <p>Rozwinięcie alternatywy znajdziesz w porównaniu <a href="https://projekt-ogrzewania.pl/system-mokry-czy-suchy-w-wodnym-ogrzewaniu-podlogowym-ktory-wybrac/">system mokry czy suchy</a> oraz w poradniku o <a href="https://projekt-ogrzewania.pl/ogrzewanie-podlogowe-wodne-bez-wylewki/">wodnej podłogówce bez wylewki</a>.</p>
    </section>

    <section class="rk-mill-section" id="rk-mill-cost">
      <span class="rk-mill-eyebrow">Wycena zamiast pozornie dokładnego kalkulatora</span>
      <h2 class="rk-mill-section-title">Co naprawdę składa się na koszt frezowania podłogówki?</h2>
      <p class="rk-mill-lead">Cena za metr kanału albo metr kwadratowy nie opisuje kompletnej modernizacji. Uczciwe porównanie obejmuje tę samą granicę zakresu dla każdego wariantu.</p>
      <div class="rk-mill-grid-3">
        <article class="rk-mill-card"><span class="rk-mill-card-label">Przed pracami</span><h3>Diagnostyka i projekt</h3><p>Odkrywki, skanowanie, inwentaryzacja, OZC, projekt pętli, rozdzielacza i parametrów źródła.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label">Wykonanie</span><h3>Kanały i instalacja</h3><p>Frezowanie, odciąg, rura, dobieg, rozdzielacz, szafka, połączenia, próba i dokumentacja.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label">Odtworzenie</span><h3>Warstwy i wykończenie</h3><p>Przygotowanie, wypełnienie, wyrównanie, naprawa dylatacji, nowa okładzina oraz korekta drzwi i progów.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label is-orange">Kotłownia</span><h3>Hydraulika źródła</h3><p>Pompa, mieszanie, bufor lub sprzęgło tylko wtedy, gdy wynika to z wymagań całego układu.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label is-yellow">Ryzyko</span><h3>Prace nieprzewidziane</h3><p>Lokalne naprawy podłoża, kolizje, zmiana tras, dodatkowy rozdzielacz albo rezygnacja z części pól.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label is-green">Odbiór</span><h3>Regulacja i rozruch</h3><p>Opis pętli, przepływy, nastawy, protokoły i kontrola pracy po wykonaniu okładzin.</p></article>
      </div>
      <div class="rk-mill-note"><p><strong>Dlatego nie dodajemy kalkulatora kosztów.</strong> Bez rzeczywistej powierzchni czynnej, liczby pętli, stanu podłoża, tras dobiegowych i zakresu odtworzenia podałby jedynie atrakcyjną, lecz przypadkową kwotę.</p></div>
    </section>

    <section class="rk-mill-section rk-mill-section-soft" id="rk-mill-errors">
      <span class="rk-mill-eyebrow">Czerwone flagi przed i podczas prac</span>
      <h2 class="rk-mill-section-title">Najczęstsze błędy przy frezowaniu ogrzewania podłogowego</h2>
      <div class="rk-mill-grid-3">
        <article class="rk-mill-card"><span class="rk-mill-card-label is-red">Błąd 1</span><h3>Jedna odkrywka</h3><p>Nie pokazuje lokalnych napraw, różnic poziomu ani zmiennej grubości w pozostałej części domu.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label is-red">Błąd 2</span><h3>Cięcie przed skanowaniem</h3><p>Stwarza ryzyko uszkodzenia przewodów, rur, zbrojenia lub innych ukrytych elementów.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label is-red">Błąd 3</span><h3>Stały rozstaw dla całego domu</h3><p>Pomija różne straty pomieszczeń, powierzchnie czynne, okładziny i strefy brzegowe.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label is-red">Błąd 4</span><h3>Pętle z jednego limitu metrów</h3><p>Nie uwzględniają przepływu, światła rury, medium, dobiegów ani oporu drogi krytycznej.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label is-red">Błąd 5</span><h3>Powłoka zamiast izolacji</h3><p>Cienka warstwa w kanale nie zastępuje ciągłego materiału izolacyjnego pod powierzchnią podłogi.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label is-red">Błąd 6</span><h3>Przypadkowa masa</h3><p>Brak zgodności technologicznej może powodować słabą przyczepność, puste przestrzenie i problemy z okładziną.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label is-red">Błąd 7</span><h3>Zakrycie bez próby</h3><p>Po wykonaniu warstw naprawa staje się trudniejsza, a brak protokołu utrudnia ustalenie odpowiedzialności.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label is-red">Błąd 8</span><h3>Bufor z jednej reguły</h3><p>Pojemność oraz schemat nie wynikają wyłącznie z mocy nominalnej pompy ciepła.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label is-red">Błąd 9</span><h3>Obietnica reakcji w minutach</h3><p>Dynamika zależy od całej podłogi, temperatury, przepływu, sterowania oraz strat budynku.</p></article>
      </div>
      <p>Szerszą listę problemów wykonawczych zawiera artykuł <a href="https://projekt-ogrzewania.pl/najczestsze-bledy-przy-montazu-ogrzewania-podlogowego-i-jak-ich-uniknac/">najczęstsze błędy przy montażu podłogówki</a>.</p>
    </section>

    <section class="rk-mill-section" id="rk-mill-data">
      <span class="rk-mill-eyebrow">Checklista inwestora, wykonawcy i projektanta</span>
      <h2 class="rk-mill-section-title">Jakie dane trzeba zebrać przed ostateczną decyzją?</h2>
      <div class="rk-mill-grid-3">
        <article class="rk-mill-card"><span class="rk-mill-card-label">Budynek</span><h3>Stan i warstwy</h3><ul><li>rzuty i przekroje,</li><li>odkrywki oraz mapa grubości,</li><li>izolacja i warunki pod podłogą,</li><li>pęknięcia, wilgoć i odspojenia,</li><li>instalacje oraz zbrojenie.</li></ul></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label">Ogrzewanie</span><h3>Obliczenia</h3><ul><li>OZC każdego pomieszczenia,</li><li>temperatury projektowe,</li><li>powierzchnie czynne,</li><li>okładziny i ich opory,</li><li>moc podłogi oraz ewentualne uzupełnienie.</li></ul></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label">Instalacja</span><h3>Hydraulika i odbiór</h3><ul><li>rura i geometria kanału,</li><li>przebieg oraz długości pętli,</li><li>przepływy i opory,</li><li>rozdzielacz oraz pompa,</li><li>próba, materiały i protokoły.</li></ul></article>
      </div>
      <p>Zakres dokumentacji potrzebnej wykonawcy pokazuje poradnik <a href="https://projekt-ogrzewania.pl/jak-powinien-wygladac-profesjonalny-projekt-do-ogrzewania-podlogowego/">jak powinien wyglądać profesjonalny projekt podłogówki</a>.</p>
    </section>

    <section class="rk-mill-section rk-mill-section-soft" id="rk-mill-summary">
      <span class="rk-mill-eyebrow">Wniosek końcowy</span>
      <h2 class="rk-mill-section-title">Frezowanie jest dobrą metodą tylko dla właściwie rozpoznanej podłogi</h2>
      <p class="rk-mill-lead">Najpierw trzeba odpowiedzieć, czy istniejący jastrych można bezpiecznie wykorzystać. Dopiero później rozstrzyga się, czy frezowana powierzchnia zapewni potrzebną moc oraz czy projekt hydrauliczny będzie możliwy do wyregulowania.</p>
      <div class="rk-mill-grid-3">
        <article class="rk-mill-card"><span class="rk-mill-card-label is-green">Można rozważyć</span><h3>Gdy dane są potwierdzone</h3><p>Warstwy, grubość, instalacje, izolacja, OZC i system tworzą spójny zestaw wejściowy.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label is-yellow">Najpierw zbadaj</span><h3>Gdy podłoże jest nieznane</h3><p>Odkrywki i skanowanie kosztują mniej niż zatrzymanie prac po przecięciu instalacji albo odkryciu pustek.</p></article>
        <article class="rk-mill-card"><span class="rk-mill-card-label is-red">Wybierz alternatywę</span><h3>Gdy ryzyka nie da się usunąć</h3><p>System suchy, niskoprofilowy lub przebudowa podłogi mogą być odpowiedzialniejszą decyzją.</p></article>
      </div>
      <div class="rk-mill-cta">
        <span class="rk-mill-eyebrow">Końcowy krok projektowy</span>
        <div class="rk-mill-cta-title">Zamień zaakceptowane podłoże w policzoną instalację grzewczą</div>
        <p>Projekt łączy straty pomieszczeń, powierzchnie czynne, okładzinę, rozstaw, długości pętli, przepływy, opory, rozdzielacz i parametry źródła. Dzięki temu wykonawca dostaje konkretne trasy i nastawy, a nie jedną regułę dla całego domu.</p>
        <a class="rk-mill-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt ogrzewania podłogowego</a>
        <small class="rk-mill-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-mill-section" id="rk-mill-sources">
      <span class="rk-mill-eyebrow">Wyłącznie oficjalna dokumentacja</span>
      <h2 class="rk-mill-section-title">Źródła techniczne i zakres odpowiedzialności</h2>
      <p class="rk-mill-lead">Linki zewnętrzne znajdują się wyłącznie w tej sekcji. Prowadzą do oficjalnych kart norm i aktów prawnych; artykuł nie odsyła do konkurencji, sklepów ani materiałów sprzedażowych producentów.</p>
      <ul class="rk-mill-sources">
        <li><a href="https://www.iso.org/standard/74682.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-1:2021 — definicje i kryteria komfortu</a><span>Oficjalna karta pierwszej części serii dla wbudowanych systemów ogrzewania i chłodzenia płaszczyznowego.</span></li>
        <li><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — wyznaczanie projektowej mocy</a><span>Oficjalna karta metod określania wydajności cieplnej i temperatur powierzchni systemów wodnych.</span></li>
        <li><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-3:2021 — projektowanie i wymiarowanie</a><span>Oficjalna karta części poświęconej projektowaniu systemu zapewniającego wymaganą moc.</span></li>
        <li><a href="https://www.iso.org/standard/74685.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-5:2021 — instalowanie systemów płaszczyznowych</a><span>Oficjalna karta wymagań dla instalowania systemów wbudowanych w podłogi, ściany i sufity.</span></li>
        <li><a href="https://www.dinmedia.de/en/standard/din-4726/380677149" target="_blank" rel="nofollow noopener noreferrer">DIN 4726:2024-12 — przewody i ograniczenie przenikania tlenu</a><span>Oficjalna karta aktualnego wydania dokumentu dotyczącego przewodów w ogrzewaniu płaszczyznowym.</span></li>
        <li><a href="https://isap.sejm.gov.pl/isap.nsf/download.xsp/WDU20130000926/O/D20130926.pdf" target="_blank" rel="nofollow noopener noreferrer">Warunki Techniczne — oficjalny tekst aktu</a><span>Wymagania dotyczące ochrony cieplnej przegród budynku, w tym podłóg, należy odnosić do kompletnej przegrody.</span></li>
      </ul>
      <div class="rk-mill-responsibility"><p><strong>Zakres poradnika:</strong> treść pomaga uporządkować kwalifikację, projekt i odbiór. Nie stanowi oceny nośności konkretnej podłogi, ekspertyzy budowlanej, projektu konstrukcyjnego, dokumentacji konkretnego systemu ani zgody na nacinanie elementów konstrukcyjnych. Warunki rzeczywistego budynku i dokumenty zastosowanych wyrobów mają pierwszeństwo.</p></div>
    </section>

    <section class="rk-mill-section rk-mill-section-soft" id="rk-mill-faq">
      <span class="rk-mill-eyebrow">Rozbudowane pytania i odpowiedzi</span>
      <h2 class="rk-mill-section-title">FAQ — frezowanie ogrzewania podłogowego w starym domu</h2>
      <div class="rk-mill-faq">
        <details><summary>Czy każda stara wylewka nadaje się do frezowania?</summary><div class="rk-mill-faq-answer"><p>Nie. Trzeba rozpoznać rodzaj warstwy, jej grubość w wielu miejscach, stan, przyczepność, pęknięcia, dylatacje oraz ukryte instalacje. Wiek budynku ani twarda powierzchnia nie potwierdzają przydatności.</p></div></details>
        <details><summary>Jaka minimalna grubość wylewki jest potrzebna do frezowania?</summary><div class="rk-mill-faq-answer"><p>Nie ma jednej wartości właściwej dla każdego systemu i podłoża. Potrzebna grubość zależy od geometrii kanału, rury, budowy jastrychu, jego stanu, sposobu podparcia oraz wymagań technologicznych. Należy potwierdzić ją pomiarami i dokumentacją wybranego rozwiązania.</p></div></details>
        <details><summary>Czy pomiar młotkiem Schmidta wystarczy do kwalifikacji podłogi?</summary><div class="rk-mill-faq-answer"><p>Nie powinien być jedyną podstawą. Cienki jastrych wymaga rozpoznania przekroju, grubości, pustek, rys, odspojeń i instalacji. Dobór metod badania zależy od konstrukcji oraz rodzaju wątpliwości.</p></div></details>
        <details><summary>Czy można frezować płytę konstrukcyjną albo strop?</summary><div class="rk-mill-faq-answer"><p>Nie wolno traktować elementu konstrukcyjnego jak zwykłego jastrychu. Każda planowana ingerencja wymaga rozpoznania konstrukcji, zbrojenia i instalacji oraz decyzji osoby posiadającej odpowiednie kompetencje do oceny tego elementu.</p></div></details>
        <details><summary>Czy rura 14 × 2 mm jest zawsze najlepsza do frezowania?</summary><div class="rk-mill-faq-answer"><p>Nie. Musi pasować do systemu, kanału, promienia prowadzenia i połączeń oraz zapewnić akceptowalne opory przy wymaganym przepływie. O wyborze nie decyduje sama mniejsza średnica zewnętrzna.</p></div></details>
        <details><summary>Czy rura 16 × 2 mm jest niebezpieczna dla starej wylewki?</summary><div class="rk-mill-faq-answer"><p>Nie można tego rozstrzygnąć po samym wymiarze. Większa rura zwykle wymaga innej geometrii kanału, lecz dopuszczalność zależy od systemu, grubości i stanu frezowanej warstwy oraz projektu hydraulicznego.</p></div></details>
        <details><summary>Ile metrów może mieć pętla frezowanej podłogówki?</summary><div class="rk-mill-faq-answer"><p>Limit wynika z przepływu, średnicy wewnętrznej, właściwości rury, medium, długości dobiegów, oporów miejscowych i dostępnego ciśnienia pompy. Jedna liczba, na przykład 80 m, nie opisuje każdej pętli.</p></div></details>
        <details><summary>Czy frezowanie działa bez izolacji pod podłogą?</summary><div class="rk-mill-faq-answer"><p>Instalacja może emitować ciepło, ale brak izolacji może powodować znaczne straty w dół i pogorszyć ekonomikę. Trzeba rozpoznać przegrodę oraz obliczyć bilans. Cienka powłoka wewnątrz kanału nie zastępuje ciągłej izolacji pod podłogą.</p></div></details>
        <details><summary>Czy frezowana podłogówka zawsze szybko się nagrzewa?</summary><div class="rk-mill-faq-answer"><p>Zwykle rura położona blisko powierzchni ogranicza część bezwładności nad przewodem, ale czas odczuwalnej zmiany zależy również od całej konstrukcji, okładziny, przepływu, temperatury wody, sterowania i strat budynku. Nie należy gwarantować jednej liczby minut.</p></div></details>
        <details><summary>Czy frezowanie nie podnosi poziomu podłogi?</summary><div class="rk-mill-faq-answer"><p>Rura mieści się w istniejącej warstwie, lecz wypełnienie, wyrównanie, naprawy i nowa okładzina mogą zmienić rzędną. Wysokość trzeba sprawdzić dla kompletnego układu wraz z drzwiami, progami i schodami.</p></div></details>
        <details><summary>Czym wypełnić kanały po ułożeniu rury?</summary><div class="rk-mill-faq-answer"><p>Materiał powinien należeć do zaakceptowanej technologii, być zgodny z rodzajem podłoża, ogrzewaniem i późniejszą okładziną. Sama klasa kleju do płytek lub wysoki deklarowany współczynnik przewodzenia nie potwierdzają przydatności do konkretnego kanału.</p></div></details>
        <details><summary>Jaką próbę ciśnieniową wykonać?</summary><div class="rk-mill-faq-answer"><p>Ciśnienie, czas, medium i warunki podczas zakrywania należy przyjąć z projektu, dokumentacji zastosowanych elementów i właściwej procedury odbiorowej. Wynik powinien zostać zapisany, a trasy sfotografowane przed zakryciem.</p></div></details>
        <details><summary>Czy pompa ciepła zawsze wymaga bufora przy frezowanej podłogówce?</summary><div class="rk-mill-faq-answer"><p>Nie. Decyzja zależy od minimalnego przepływu i zładu urządzenia, odszraniania, modulacji, liczby zamykanych stref, schematu hydraulicznego i wymagań konkretnego źródła. Nie należy stosować jednej wartości litrów na kW bez analizy.</p></div></details>
        <details><summary>Czy można zachować grzejniki w części domu?</summary><div class="rk-mill-faq-answer"><p>Tak, ale układ mieszany wymaga sprawdzenia różnych temperatur, hydrauliki, regulacji i sposobu zasilania obiegów. Pozostawienie grzejników może być racjonalne w pomieszczeniach, w których podłoga nie pokrywa obciążenia.</p></div></details>
        <details><summary>Czy analizator zastępuje projekt i ocenę konstruktora?</summary><div class="rk-mill-faq-answer"><p>Nie. Wskazuje brakujące informacje i czerwone flagi. Ocena konstrukcji, pomiary, wykrycie instalacji, obliczenia cieplne oraz projekt hydrauliczny muszą zostać wykonane dla rzeczywistego budynku.</p></div></details>
      </div>
    </section>

    <section class="rk-mill-section" id="rk-mill-author" aria-labelledby="rk-mill-author-heading">
      <div class="rk-mill-author">
        <div class="rk-mill-author-head">
          <div>
            <span class="rk-mill-eyebrow">E-E-A-T i odpowiedzialność za treść</span>
            <h2 class="rk-mill-author-title" id="rk-mill-author-heading">Autor i weryfikacja merytoryczna</h2>
            <p>Treść przygotowana z perspektywy kwalifikacji podłoża, obciążenia cieplnego, hydrauliki i odpowiedzialnego odbioru instalacji.</p>
          </div>
          <span class="rk-mill-author-mark">Aktualizacja: 16.09.2026</span>
        </div>
        <div class="rk-mill-author-layout">
          <aside class="rk-mill-author-side">
            <div class="rk-mill-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-mill-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
            <p class="rk-mill-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
            <div class="rk-mill-author-social-label">Profile branżowe</div>
            <div class="rk-mill-author-social" aria-label="Profile branżowe Roberta Kucharskiego">
              <a href="https://www.linkedin.com/in/robert-kucharski-b8b906199/" target="_blank" rel="nofollow noopener noreferrer me" aria-label="LinkedIn Roberta Kucharskiego"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M6.5 8.2H3.2V21h3.3V8.2ZM4.85 3A1.92 1.92 0 1 0 4.9 6.84 1.92 1.92 0 0 0 4.85 3ZM21 13.66c0-3.86-2.06-5.66-4.81-5.66a4.14 4.14 0 0 0-3.75 2.06V8.2H9.12V21h3.32v-6.34c0-1.67.32-3.29 2.39-3.29 2.04 0 2.07 1.91 2.07 3.4V21H21v-7.34Z"></path></svg></a>
              <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Projekt Ogrzewania na Facebooku"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M14 8.5V7c0-.74.5-.92.85-.92H17V3.13L14.05 3C11.13 3 10.47 5.16 10.47 6.55V8.5H8v3.36h2.47V21H14v-9.14h2.7l.44-3.36H14Z"></path></svg></a>
              <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Projekt HVAC w serwisie X"><svg viewBox="0 0 24 24" aria-hidden="true"><path d="M18.9 3H22l-6.77 7.74L23.2 21h-6.24l-4.89-6.39L6.49 21H3.38l7.24-8.28L2.98 3h6.4l4.42 5.84L18.9 3Zm-1.09 16.2h1.72L8.44 4.7H6.59l11.22 14.5Z"></path></svg></a>
            </div>
          </aside>
          <div class="rk-mill-author-main">
            <blockquote class="rk-mill-author-quote"><p>Moim zdaniem największym błędem przy frezowaniu jest uznanie, że skoro maszyna potrafi wykonać kanał, to podłoga automatycznie nadaje się do instalacji. Najpierw kwalifikujemy warstwy i kolizje, później liczymy moc oraz hydraulikę, a dopiero na końcu uruchamiamy frezarkę.</p></blockquote>
            <div class="rk-mill-author-cards">
              <div class="rk-mill-author-card"><b>Praktyka projektowa</b><p>OZC, powierzchnie czynne, rozstawy, pętle, temperatury, przepływy i współpraca podłogówki ze źródłem.</p></div>
              <div class="rk-mill-author-card"><b>Metoda</b><p>Rozdzielenie kwalifikacji konstrukcyjnej podłoża od cieplnego i hydraulicznego projektu instalacji.</p></div>
              <div class="rk-mill-author-card"><b>Zakres aktualizacji</b><p>Nowy analizator, sześciomodułowa grafika, porównanie metod, korekta reguł liczbowych i rozbudowane FAQ.</p></div>
            </div>
            <div class="rk-mill-author-mini-label">Portale autora</div>
            <div class="rk-mill-portals">
              <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>
  </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": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski-image" },
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "knowsAbout": ["ogrzewanie podłogowe", "frezowanie jastrychu", "obliczenia OZC", "hydraulika instalacji grzewczych", "pompy ciepła", "modernizacja ogrzewania"],
      "worksFor": [
        { "@id": "https://projekt-ogrzewania.pl/#organization" },
        { "@id": "https://remont.biz.pl/#organization" },
        { "@id": "https://sobir.pl/#organization" }
      ],
      "sameAs": ["https://www.linkedin.com/in/robert-kucharski-b8b906199/", "https://www.facebook.com/projektogrzewaniapl", "https://x.com/Projekt_HVAC"]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski-image",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "width": 400,
      "height": 400,
      "caption": "Robert Kucharski — projektant instalacji sanitarnych"
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Frezowanie-ogrzewania-podlogowego-w-starym-domu.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/Infografika-Frezowanie-ogrzewania-podlogowego-w-starym-domu.webp",
      "caption": "Frezowanie ogrzewania podłogowego w starym domu"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#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": "Frezowanie ogrzewania podłogowego w starym domu", "item": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/" }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#webpage",
      "url": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/",
      "name": "Frezowanie ogrzewania podłogowego w starym domu – kiedy ma sens?",
      "description": "Sprawdź, czy stara wylewka nadaje się do frezowania pod ogrzewanie podłogowe. Poznaj badania podłoża, projekt pętli, hydraulikę i ryzyka.",
      "isPartOf": { "@id": "https://projekt-ogrzewania.pl/#website" },
      "breadcrumb": { "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#breadcrumb" },
      "primaryImageOfPage": { "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#primaryimage" },
      "dateModified": "2026-09-16T12:00:00+02:00",
      "inLanguage": "pl-PL",
      "mainEntity": { "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#article" }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#article",
      "mainEntityOfPage": { "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#webpage" },
      "headline": "Frezowanie ogrzewania podłogowego w starym domu – kiedy ma sens?",
      "description": "Techniczny poradnik kwalifikacji starej wylewki, obliczania mocy i projektowania hydrauliki frezowanego ogrzewania podłogowego.",
      "image": { "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#primaryimage" },
      "author": { "@id": "https://projekt-ogrzewania.pl/#robert-kucharski" },
      "publisher": { "@id": "https://projekt-ogrzewania.pl/#organization" },
      "dateModified": "2026-09-16T12:00:00+02:00",
      "inLanguage": "pl-PL",
      "about": ["frezowanie ogrzewania podłogowego", "stara wylewka", "modernizacja starego domu", "ogrzewanie podłogowe", "hydraulika pętli", "diagnostyka podłoża"],
      "keywords": "frezowanie ogrzewania podłogowego w starym domu, frezowanie podłogówki, stara wylewka, podłogówka bez skuwania, rura do frezowanej podłogówki",
      "isAccessibleForFree": true,
      "hasPart": [
        { "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#analyzer" },
        { "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#howto" },
        { "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#checklist" },
        { "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#faq-schema" }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#analyzer",
      "name": "Analizator kwalifikacji podłogi do frezowania",
      "url": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#rk-mill-analyzer-section",
      "applicationCategory": "UtilitiesApplication",
      "operatingSystem": "Dowolny system z nowoczesną przeglądarką internetową",
      "browserRequirements": "JavaScript",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "description": "Narzędzie edukacyjne wskazujące potwierdzone warunki, brakujące dane i czerwone flagi dotyczące podłoża, bilansu cieplnego, hydrauliki oraz odbioru frezowanej podłogówki."
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#howto",
      "name": "Jak przygotować frezowanie ogrzewania podłogowego w starym domu",
      "description": "Procedura od inwentaryzacji i odkrywek do projektu, próby, wypełnienia kanałów oraz dokumentacji powykonawczej.",
      "totalTime": "PT30M",
      "step": [
        { "@type": "HowToStep", "position": 1, "name": "Zinwentaryzuj budynek", "text": "Zbierz rzuty, poziomy, informacje o podłodze, instalacjach, dylatacjach, źródle ciepła i planowanych okładzinach." },
        { "@type": "HowToStep", "position": 2, "name": "Wykonaj odkrywki i skan", "text": "Rozpoznaj warstwy, zmapuj grubość oraz znajdź instalacje i elementy metalowe w obszarze cięcia." },
        { "@type": "HowToStep", "position": 3, "name": "Zakwalifikuj podłoże", "text": "Oceń spójność, pęknięcia, odspojenia, wilgotność, dylatacje i ograniczenia konstrukcyjne." },
        { "@type": "HowToStep", "position": 4, "name": "Oblicz moc pomieszczeń", "text": "Wykonaj OZC, określ powierzchnie czynne, okładziny i moc możliwą do oddania przez podłogę." },
        { "@type": "HowToStep", "position": 5, "name": "Zaprojektuj hydraulikę", "text": "Dobierz rurę, rozstaw, podział pętli, długości, przepływy, opory, rozdzielacz i pompę." },
        { "@type": "HowToStep", "position": 6, "name": "Wykonaj próbę technologiczną", "text": "Sprawdź na małym polu kanał, zachowanie podłoża, odciąg i prowadzenie wybranej rury." },
        { "@type": "HowToStep", "position": 7, "name": "Frezuj i ułóż pętle", "text": "Wykonaj kanały według tras, przygotuj podłoże i ułóż pętle bez niedopuszczonych połączeń." },
        { "@type": "HowToStep", "position": 8, "name": "Wykonaj próbę i wypełnij kanały", "text": "Sprawdź instalację zgodnie z procedurą, zachowaj dylatacje i zastosuj zgodny materiał systemowy." },
        { "@type": "HowToStep", "position": 9, "name": "Udokumentuj i uruchom", "text": "Zachowaj zdjęcia, opisy pętli, protokoły i nastawy oraz przestrzegaj wymaganych czasów technologicznych." }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#checklist",
      "name": "Sześć kontroli przed odbiorem frezowanej podłogówki",
      "numberOfItems": 6,
      "itemListElement": [
        { "@type": "ListItem", "position": 1, "name": "Rozpoznanie warstw podłogi" },
        { "@type": "ListItem", "position": 2, "name": "Mapa grubości i ukrytych instalacji" },
        { "@type": "ListItem", "position": 3, "name": "Stan podłoża oraz dylatacji" },
        { "@type": "ListItem", "position": 4, "name": "Izolacja, OZC i moc podłogi" },
        { "@type": "ListItem", "position": 5, "name": "Pętle, przepływy i opory" },
        { "@type": "ListItem", "position": 6, "name": "Próba i dokumentacja powykonawcza" }
      ]
    },
    {
      "@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": "Obliczenia cieplne i hydrauliczne, rozstaw rur, podział na pętle, przepływy, nastawy oraz dokumentacja dla wykonawcy."
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/#faq-schema",
      "mainEntity": [
        { "@type": "Question", "name": "Czy każda stara wylewka nadaje się do frezowania?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Trzeba rozpoznać rodzaj warstwy, jej grubość w wielu miejscach, stan, przyczepność, pęknięcia, dylatacje oraz ukryte instalacje. Wiek budynku ani twarda powierzchnia nie potwierdzają przydatności." } },
        { "@type": "Question", "name": "Jaka minimalna grubość wylewki jest potrzebna do frezowania?", "acceptedAnswer": { "@type": "Answer", "text": "Nie ma jednej wartości właściwej dla każdego systemu i podłoża. Potrzebna grubość zależy od geometrii kanału, rury, budowy jastrychu, jego stanu, sposobu podparcia oraz wymagań technologicznych." } },
        { "@type": "Question", "name": "Czy pomiar młotkiem Schmidta wystarczy do kwalifikacji podłogi?", "acceptedAnswer": { "@type": "Answer", "text": "Nie powinien być jedyną podstawą. Cienki jastrych wymaga rozpoznania przekroju, grubości, pustek, rys, odspojeń i instalacji. Dobór metod badania zależy od konstrukcji oraz rodzaju wątpliwości." } },
        { "@type": "Question", "name": "Czy można frezować płytę konstrukcyjną albo strop?", "acceptedAnswer": { "@type": "Answer", "text": "Nie wolno traktować elementu konstrukcyjnego jak zwykłego jastrychu. Planowana ingerencja wymaga rozpoznania konstrukcji, zbrojenia i instalacji oraz odpowiedniej oceny." } },
        { "@type": "Question", "name": "Czy rura 14 × 2 mm jest zawsze najlepsza do frezowania?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Musi pasować do systemu, kanału, promienia prowadzenia i połączeń oraz zapewnić akceptowalne opory przy wymaganym przepływie." } },
        { "@type": "Question", "name": "Czy rura 16 × 2 mm jest niebezpieczna dla starej wylewki?", "acceptedAnswer": { "@type": "Answer", "text": "Nie można tego rozstrzygnąć po samym wymiarze. Dopuszczalność zależy od systemu, grubości i stanu frezowanej warstwy oraz projektu hydraulicznego." } },
        { "@type": "Question", "name": "Ile metrów może mieć pętla frezowanej podłogówki?", "acceptedAnswer": { "@type": "Answer", "text": "Limit wynika z przepływu, średnicy wewnętrznej, właściwości rury, medium, długości dobiegów, oporów miejscowych i dostępnego ciśnienia pompy. Jedna liczba nie opisuje każdej pętli." } },
        { "@type": "Question", "name": "Czy frezowanie działa bez izolacji pod podłogą?", "acceptedAnswer": { "@type": "Answer", "text": "Instalacja może emitować ciepło, ale brak izolacji może powodować znaczne straty w dół i pogorszyć ekonomikę. Cienka powłoka wewnątrz kanału nie zastępuje ciągłej izolacji pod podłogą." } },
        { "@type": "Question", "name": "Czy frezowana podłogówka zawsze szybko się nagrzewa?", "acceptedAnswer": { "@type": "Answer", "text": "Czas reakcji zależy od całej konstrukcji, okładziny, przepływu, temperatury wody, sterowania i strat budynku. Nie należy gwarantować jednej liczby minut." } },
        { "@type": "Question", "name": "Czy frezowanie nie podnosi poziomu podłogi?", "acceptedAnswer": { "@type": "Answer", "text": "Rura mieści się w istniejącej warstwie, lecz wypełnienie, wyrównanie, naprawy i nowa okładzina mogą zmienić rzędną. Wysokość trzeba sprawdzić dla kompletnego układu." } },
        { "@type": "Question", "name": "Czym wypełnić kanały po ułożeniu rury?", "acceptedAnswer": { "@type": "Answer", "text": "Materiał powinien należeć do zaakceptowanej technologii, być zgodny z rodzajem podłoża, ogrzewaniem i późniejszą okładziną. Sama klasa kleju nie potwierdza przydatności do konkretnego kanału." } },
        { "@type": "Question", "name": "Jaką próbę ciśnieniową wykonać?", "acceptedAnswer": { "@type": "Answer", "text": "Ciśnienie, czas, medium i warunki podczas zakrywania należy przyjąć z projektu, dokumentacji zastosowanych elementów i właściwej procedury odbiorowej. Wynik powinien zostać zapisany." } },
        { "@type": "Question", "name": "Czy pompa ciepła zawsze wymaga bufora przy frezowanej podłogówce?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Decyzja zależy od minimalnego przepływu i zładu urządzenia, odszraniania, modulacji, liczby zamykanych stref, schematu hydraulicznego i wymagań konkretnego źródła." } },
        { "@type": "Question", "name": "Czy można zachować grzejniki w części domu?", "acceptedAnswer": { "@type": "Answer", "text": "Tak, ale układ mieszany wymaga sprawdzenia różnych temperatur, hydrauliki, regulacji i sposobu zasilania obiegów. Pozostawienie grzejników może być racjonalne tam, gdzie podłoga nie pokrywa obciążenia." } },
        { "@type": "Question", "name": "Czy analizator zastępuje projekt i ocenę konstruktora?", "acceptedAnswer": { "@type": "Answer", "text": "Nie. Wskazuje brakujące informacje i czerwone flagi. Ocena konstrukcji, pomiary, wykrycie instalacji, obliczenia cieplne oraz projekt hydrauliczny muszą zostać wykonane dla rzeczywistego budynku." } }
      ]
    }
  ]
}
</script>

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

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

  var processData = {
    layers: {
      title: "Rozpoznaj przekrój podłogi",
      summary: "Zdejmij założenie, że cała grubość pod okładziną jest jednorodnym jastrychem. Odkrywka powinna pokazać granice warstw oraz ich rzeczywiste materiały.",
      check: "Rodzaj jastrychu, granice warstw, sposób związania z podłożem i ewentualną podsypkę.",
      who: "Wykonawca diagnostyki; przy ingerencji konstrukcyjnej także konstruktor.",
      proof: "Zdjęcia odkrywek, lokalizacje i opis grubości każdej rozpoznanej warstwy."
    },
    scan: {
      title: "Zmapuj grubość oraz ukryte elementy",
      summary: "Pojedynczy pomiar nie opisuje całej kondygnacji. Trasy bruzd trzeba skonfrontować z przewodami, rurami, zbrojeniem oraz lokalnymi naprawami.",
      check: "Grubość w strefach środkowych i brzegowych, instalacje, metal oraz planowane przejścia pętli.",
      who: "Osoba wykonująca odkrywki i skanowanie wraz z wykonawcą frezowania.",
      proof: "Mapa pomiarów, zaznaczone kolizje i zaakceptowane strefy prowadzenia kanałów."
    },
    condition: {
      title: "Oceń spójność, rysy i dylatacje",
      summary: "Naprawa nie może być automatycznym sposobem dopuszczenia każdej słabej wylewki. Najpierw trzeba ustalić przyczynę uszkodzenia i zakres odspojenia.",
      check: "Rysy, odspojenia, pustki, kruchość, wilgotność, przyczepność oraz ciągłość dylatacji.",
      who: "Diagnosta podłoża lub wykonawca odpowiedzialny za technologię naprawy.",
      proof: "Protokół oględzin, zakres napraw, materiały i warunki dopuszczenia do dalszych prac."
    },
    thermal: {
      title: "Sprawdź izolację i możliwą moc podłogi",
      summary: "Warstwa może nadawać się do cięcia, ale przegroda nadal może tracić zbyt dużo ciepła w dół albo nie mieć wystarczającej powierzchni czynnej.",
      check: "Izolację, warunki pod podłogą, OZC pomieszczeń, powierzchnię czynną, okładzinę i temperatury.",
      who: "Projektant instalacji na podstawie danych z inwentaryzacji budynku.",
      proof: "Bilans pomieszczeń i porównanie wymaganej mocy z możliwościami powierzchni grzewczej."
    },
    design: {
      title: "Zaprojektuj pętle i hydraulikę",
      summary: "Średnica i rozstaw nie są wybierane niezależnie. Razem wpływają na metraż, przepływy, opory oraz możliwość regulacji rozdzielacza.",
      check: "Rurę, rozstaw, dobiegi, długości, przepływy, opory, drogę krytyczną, rozdzielacz i pompę.",
      who: "Projektant instalacji grzewczej we współpracy z wykonawcą wybranego systemu.",
      proof: "Rzut pętli, tabela obwodów, przepływy, nastawy i parametry pracy źródła."
    },
    handover: {
      title: "Wykonaj próbę i udokumentuj zakrywaną instalację",
      summary: "Po wypełnieniu kanałów odtworzenie trasy staje się trudne. Odbiór powinien nastąpić przed zakryciem oraz po regulacji gotowego układu.",
      check: "Szczelność, stan rury, dylatacje, przygotowanie kanałów, materiał wypełniający i oznaczenie pętli.",
      who: "Wykonawca instalacji oraz osoba odbierająca zakres zgodnie z projektem i procedurą.",
      proof: "Protokół próby, zdjęcia tras, numery pętli, użyte materiały, nastawy i dokumentacja powykonawcza."
    }
  };

  var methodData = {
    milling: {
      title: "Frezowanie istniejącego jastrychu",
      summary: "Najmniej zmienia poziom podłogi, ale wymaga najlepiej rozpoznanego i wystarczająco stabilnego podłoża.",
      benefit: "Ograniczenie rozbiórki i dodatkowej wysokości zabudowy.",
      condition: "Kwalifikacja jastrychu, instalacji, izolacji oraz pełny projekt cieplny i hydrauliczny.",
      risk: "Ukryta słabość albo zmienna grubość warstwy ujawniona dopiero podczas cięcia."
    },
    dry: {
      title: "Niskoprofilowy system suchy",
      summary: "Nie wymaga nacinania istniejącego jastrychu, lecz dodaje warstwy i wymaga sprawdzenia podłoża, poziomów oraz nośności całego układu.",
      benefit: "Mniejsza ingerencja w istniejącą warstwę i możliwość pracy na lekkich konstrukcjach.",
      condition: "Równe podłoże, dopuszczony układ płyt, przekazywania ciepła, okładziny i punktów podparcia.",
      risk: "Kolizje wysokościowe, niewłaściwe podparcie lub zbyt duży opór kompletnej podłogi."
    },
    rebuild: {
      title: "Rozbiórka i wykonanie podłogi od nowa",
      summary: "Największy zakres prac, lecz jedyny wariant umożliwiający pełną korektę izolacji, instalacji, poziomów i konstrukcji warstw.",
      benefit: "Możliwość zaprojektowania kompletnej przegrody oraz usunięcia ukrytych wad starej podłogi.",
      condition: "Budżet, czas, logistyka rozbiórki, ocena stropu i prawidłowy projekt nowych warstw.",
      risk: "Większy zakres robót, wilgoć technologiczna, obciążenie i dłuższe wyłączenie pomieszczeń."
    }
  };

  function showProcess(key) {
    var data = processData[key];
    if (!data) {
      return;
    }
    document.getElementById("rk-mill-process-title").textContent = data.title;
    document.getElementById("rk-mill-process-summary").textContent = data.summary;
    document.getElementById("rk-mill-process-check").textContent = data.check;
    document.getElementById("rk-mill-process-who").textContent = data.who;
    document.getElementById("rk-mill-process-proof").textContent = data.proof;
    guide.querySelectorAll("[data-rk-process]").forEach(function (button) {
      button.setAttribute("aria-selected", button.getAttribute("data-rk-process") === key ? "true" : "false");
    });
  }

  function showMethod(key) {
    var data = methodData[key];
    if (!data) {
      return;
    }
    document.getElementById("rk-mill-method-title").textContent = data.title;
    document.getElementById("rk-mill-method-summary").textContent = data.summary;
    document.getElementById("rk-mill-method-benefit").textContent = data.benefit;
    document.getElementById("rk-mill-method-condition").textContent = data.condition;
    document.getElementById("rk-mill-method-risk").textContent = data.risk;
    guide.querySelectorAll("[data-rk-method]").forEach(function (button) {
      button.setAttribute("aria-selected", button.getAttribute("data-rk-method") === key ? "true" : "false");
    });
  }

  guide.querySelectorAll("[data-rk-process]").forEach(function (button) {
    button.addEventListener("click", function () {
      showProcess(button.getAttribute("data-rk-process"));
    });
  });

  guide.querySelectorAll("[data-rk-method]").forEach(function (button) {
    button.addEventListener("click", function () {
      showMethod(button.getAttribute("data-rk-method"));
    });
  });

  function valueOf(id) {
    var field = document.getElementById(id);
    if (!field) {
      return "unknown";
    }
    return field.value;
  }

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

  function analyze() {
    var ok = [];
    var check = [];
    var stop = [];

    var layer = valueOf("rk-mill-layer");
    var thickness = valueOf("rk-mill-thickness");
    var condition = valueOf("rk-mill-condition");
    var scan = valueOf("rk-mill-scan");
    var joints = valueOf("rk-mill-joints");
    var system = valueOf("rk-mill-system");
    var insulation = valueOf("rk-mill-insulation-input");
    var ozc = valueOf("rk-mill-ozc");
    var active = valueOf("rk-mill-active");
    var cover = valueOf("rk-mill-cover");
    var output = valueOf("rk-mill-output");
    var temperature = valueOf("rk-mill-temperature");
    var pipe = valueOf("rk-mill-pipe");
    var hydraulics = valueOf("rk-mill-hydraulics-input");
    var manifold = valueOf("rk-mill-manifold");
    var fill = valueOf("rk-mill-fill");
    var test = valueOf("rk-mill-test");
    var responsibility = valueOf("rk-mill-responsibility-input");

    if (layer === "screed") { ok.push("Frezowana warstwa została rozpoznana jako jastrych."); }
    if (layer === "unknown") { check.push("Wykonaj odkrywki i ustal rodzaj frezowanej warstwy."); }
    if (layer === "mixed") { check.push("Warstwy zmienne lub naprawiane wymagają mapy zakresów i osobnej kwalifikacji."); }
    if (layer === "structural") { stop.push("Nie rozpoczynaj nacinania elementu konstrukcyjnego bez właściwej oceny i zgody."); }

    if (thickness === "mapped") { ok.push("Grubość została zmapowana i porównana z wymaganiami systemu."); }
    if (thickness === "unknown") { check.push("Zmierz grubość w wielu reprezentatywnych miejscach."); }
    if (thickness === "single") { check.push("Jeden pomiar nie potwierdza geometrii całej podłogi."); }
    if (thickness === "insufficient") { stop.push("Lokalnie niewystarczająca grubość uniemożliwia prowadzenie planowanych kanałów."); }

    if (condition === "good") { ok.push("Nie stwierdzono rys, pustek ani odspojeń wymagających zatrzymania prac."); }
    if (condition === "unknown") { check.push("Oceń spójność, rysy, pustki i odspojenia jastrychu."); }
    if (condition === "cracks") { check.push("Najpierw zdiagnozuj przyczynę rys i dobierz odpowiednią naprawę."); }
    if (condition === "delamination") { stop.push("Odspojone lub kruche podłoże nie powinno być frezowane bez rozwiązania przyczyny."); }

    if (scan === "clear") { ok.push("Trasy instalacji i elementy metalowe zostały rozpoznane."); }
    if (scan === "unknown") { check.push("Wykonaj skan i skonfrontuj go z trasami bruzd."); }
    if (scan === "conflict") { stop.push("W planowanym polu cięcia znajduje się instalacja albo element, którego nie wolno naruszyć."); }

    if (joints === "known") { ok.push("Dylatacje i granice pól są zinwentaryzowane."); }
    if (joints === "unknown") { check.push("Zlokalizuj dylatacje oraz zaplanuj przejścia pętli."); }
    if (joints === "damaged") { check.push("Uszkodzone lub nieczytelne dylatacje wymagają rozwiązania przed frezowaniem."); }

    if (system === "yes") { ok.push("System frezowania jest zgodny z rozpoznanym podłożem i rurą."); }
    if (system === "unknown") { check.push("Wybierz system i porównaj jego wymagania z podłożem."); }
    if (system === "no") { stop.push("Brakuje potwierdzonej zgodności systemu z podłożem albo rurą."); }

    if (insulation === "verified") { ok.push("Izolacja i warunki pod podłogą zostały uwzględnione w obliczeniach."); }
    if (insulation === "unknown") { check.push("Rozpoznaj izolację i warunki po drugiej stronie podłogi."); }
    if (insulation === "weak") { check.push("Policz straty w dół i porównaj frezowanie z przebudową warstw."); }

    if (ozc === "yes") { ok.push("Dostępne jest OZC dla poszczególnych pomieszczeń."); }
    if (ozc === "unknown") { check.push("Oblicz projektowe obciążenie cieplne pomieszczeń."); }
    if (ozc === "estimate") { check.push("Wskaźnik dla całego domu nie zastępuje bilansu pomieszczeń."); }

    if (active === "yes") { ok.push("Powierzchnia czynna została rozrysowana po wyłączeniu zabudowy."); }
    if (active === "unknown") { check.push("Wyznacz powierzchnię, na której rzeczywiście można ułożyć rury."); }
    if (active === "no") { check.push("Nie przyjmuj całej powierzchni pomieszczenia jako grzejnej."); }

    if (cover === "yes") { ok.push("Znany jest opór kompletnego układu wykończeniowego."); }
    if (cover === "unknown") { check.push("Ustal okładzinę, podkład lub klej oraz ich łączny opór."); }
    if (cover === "high") { check.push("Sprawdź moc i temperatury dla wysokiego albo niepotwierdzonego oporu okładziny."); }

    if (output === "yes") { ok.push("Moc podłogi pokrywa obciążenie przy zaakceptowanych temperaturach."); }
    if (output === "unknown") { check.push("Porównaj możliwą moc podłogi ze stratą każdego pomieszczenia."); }
    if (output === "no") { stop.push("Podłoga nie pokrywa strat części pomieszczeń — potrzebna jest zmiana założeń lub dodatkowy odbiornik."); }

    if (temperature === "yes") { ok.push("Temperatura wody i powierzchni została sprawdzona dla źródła oraz okładziny."); }
    if (temperature === "unknown") { check.push("Wyznacz temperatury pracy wynikające z wymaganej mocy."); }
    if (temperature === "no") { check.push("Jedna przyjęta temperatura zasilania nie zastępuje obliczeń systemu."); }

    if (pipe === "yes") { ok.push("Rura jest dopasowana do systemu, kanału i promienia prowadzenia."); }
    if (pipe === "unknown") { check.push("Dobierz rurę na podstawie systemu i obliczeń hydraulicznych."); }
    if (pipe === "no") { check.push("Sam wymiar rury nie potwierdza zgodności systemowej."); }

    if (hydraulics === "yes") { ok.push("Długości, przepływy i opory pętli zostały obliczone."); }
    if (hydraulics === "unknown") { check.push("Policz przepływy i opory dla zaprojektowanych pętli."); }
    if (hydraulics === "no") { check.push("Jedna reguła długości nie zastępuje obliczeń hydraulicznych."); }

    if (manifold === "yes") { ok.push("Rozdzielacz i pompa zostały sprawdzone z drogą krytyczną."); }
    if (manifold === "unknown") { check.push("Dobierz rozdzielacz i punkt pracy pompy przed wykonaniem pętli."); }
    if (manifold === "no") { check.push("Nie odkładaj doboru rozdzielacza i pompy na etap po frezowaniu."); }

    if (fill === "yes") { ok.push("Przygotowanie i wypełnienie kanałów tworzą udokumentowaną technologię."); }
    if (fill === "unknown") { check.push("Ustal sposób przygotowania i zgodny materiał do wypełnienia kanałów."); }
    if (fill === "no") { stop.push("Przypadkowa masa lub klej nie stanowią potwierdzonego systemu wypełnienia bruzd."); }

    if (test === "yes") { ok.push("Zaplanowano próbę, protokół i zdjęcia przed zakryciem."); }
    if (test === "unknown") { check.push("Ustal procedurę próby i dokumentacji powykonawczej."); }
    if (test === "no") { stop.push("Nie zakrywaj instalacji bez udokumentowanej próby i kontroli tras."); }

    if (responsibility === "yes") { ok.push("Odpowiedzialność za kwalifikację podłoża została przypisana."); }
    if (responsibility === "unknown") { check.push("Ustal, kto i w jakim zakresie kwalifikuje podłoże."); }
    if (responsibility === "no") { stop.push("Brak wskazanej odpowiedzialności za podłoże wymaga zatrzymania przygotowań."); }

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

    if (stop.length > 0) {
      result.classList.add("is-stop");
      title.textContent = "Nie rozpoczynaj frezowania — usuń warunki krytyczne";
      intro.textContent = "Co najmniej jedna odpowiedź wskazuje kolizję, brak zgodności albo ryzyko, którego nie wolno przykryć dalszymi pracami.";
    } else {
      if (check.length > 0) {
        title.textContent = "Potrzebna jest dalsza diagnostyka lub dokumentacja";
        intro.textContent = "Nie wskazano warunku bezwzględnie zatrzymującego, ale dane nie pozwalają jeszcze odpowiedzialnie rozpocząć frezowania.";
      } else {
        result.classList.add("is-good");
        title.textContent = "Można przejść do projektu wykonawczego i próby technologicznej";
        intro.textContent = "Formularz nie wykazał braków. Ostateczna decyzja nadal dotyczy rzeczywistego podłoża, projektu i dokumentacji wybranego systemu.";
      }
    }

    renderList("rk-mill-ok-list", ok, "Brak potwierdzonych warunków.");
    renderList("rk-mill-check-list", check, "Brak dodatkowych pozycji na tej liście.");
    renderList("rk-mill-stop-list", stop, "Nie wskazano warunku krytycznego.");
  }

  function resetAnalyzer() {
    guide.querySelectorAll("#rk-mill-analyzer select").forEach(function (field) {
      field.selectedIndex = 0;
    });
    var result = document.getElementById("rk-mill-result");
    result.classList.remove("is-good");
    result.classList.remove("is-stop");
    document.getElementById("rk-mill-result-title").textContent = "Uzupełnij dane podłoża, budynku i instalacji";
    document.getElementById("rk-mill-result-intro").textContent = "Wynik rozdzieli warunki potwierdzone, dane do sprawdzenia oraz powody wstrzymania frezowania.";
    renderList("rk-mill-ok-list", [], "Jeszcze brak ocenionych danych.");
    renderList("rk-mill-check-list", [], "Uzupełnij formularz na podstawie dokumentów i oględzin.");
    renderList("rk-mill-stop-list", [], "Brak wyniku nie jest zgodą na rozpoczęcie frezowania.");
  }

  document.getElementById("rk-mill-run").addEventListener("click", analyze);
  document.getElementById("rk-mill-reset").addEventListener("click", resetAnalyzer);
  showProcess("layers");
  showMethod("milling");
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/frezowanie-ogrzewania-podlogowego-w-starym-domu/">Frezowanie ogrzewania podłogowego w starym domu – kiedy ma sens?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Ile metrów podłogówki na jednej pętli?</title>
		<link>https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Sat, 01 Feb 2025 22:18:09 +0000</pubDate>
				<category><![CDATA[Budowa i remonty]]></category>
		<category><![CDATA[Domowe systemy grzewcze]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Ogrzewanie domu]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Planowanie instalacji grzewczych]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Porady budowlane]]></category>
		<category><![CDATA[Porady ekspertów]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Projektowanie ogrzewania]]></category>
		<category><![CDATA[Rury do ogrzewania]]></category>
		<category><![CDATA[budowa domu]]></category>
		<category><![CDATA[długość pętli]]></category>
		<category><![CDATA[hydraulika]]></category>
		<category><![CDATA[instalacje grzewcze]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[oszczędność energii]]></category>
		<category><![CDATA[porady ekspertów]]></category>
		<category><![CDATA[projektowanie ogrzewania]]></category>
		<category><![CDATA[remonty]]></category>
		<category><![CDATA[systemy grzewcze]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=2053</guid>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

            <div class="rk-loop-results" id="rk-loop-results" aria-live="polite">
              <div class="rk-loop-status" id="rk-loop-status">
                <div class="rk-loop-status-icon" id="rk-loop-status-icon">✓</div>
                <div><b id="rk-loop-status-title">Wariant spełnia przyjęte kryteria wstępne</b><span id="rk-loop-status-copy">Kalkulator znalazł pierwszy podział mieszczący się w ustawionym limicie długości, ciśnienia i prędkości.</span></div>
              </div>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

      <section class="rk-loop-section rk-loop-sources" id="rk-loop-sources">
        <span class="rk-loop-eyebrow">Źródła i metodyka</span>
        <h2>Na czym oparto opracowanie?</h2>
        <ul class="rk-loop-source-list">
          <li><b><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="noopener nofollow">ISO 11855-3:2021 — Design and dimensioning</a></b>Oficjalny opis części normy dotyczącej projektowania i wymiarowania wbudowanych systemów ogrzewania oraz chłodzenia płaszczyznowego.</li>
          <li><b><a href="https://radiant.cbe.berkeley.edu/resources/rad_tool_documentation" target="_blank" rel="noopener nofollow">University of California, Berkeley — Radiant Tools</a></b>Dokumentacja akademickiego narzędzia wskazująca zależność liczby obwodów od długości, wymaganego przepływu oraz spadku ciśnienia.</li>
          <li><b><a href="https://ceac.arizona.edu/sites/default/files/giacomelli%20heating.pdf" target="_blank" rel="noopener nofollow">University of Arizona — Heating Systems</a></b>Materiał dydaktyczny opisujący zależność strat ciśnienia od przepływu, średnicy, długości, chropowatości i oporów miejscowych oraz zastosowanie równania Darcy’ego-Weisbacha.</li>
        </ul>
        <p style="margin:17px 0 0;color:var(--rk-muted);font-size:.68rem">Kalkulator jest modelem edukacyjnym dla wody. Stosuje interpolowane właściwości wody w zakresie temperatur wejściowych, równanie Darcy’ego-Weisbacha i przybliżenie Haalanda dla współczynnika tarcia. Nie zastępuje danych konkretnego systemu ani pełnego doboru pompy.</p>
      </section>
    </main>

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

  calculateAndRender();
  updateProgress();
}());
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/ile-metrow-podlogowki-na-jednej-petli/">Ile metrów podłogówki na jednej pętli?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
