<?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 automatyka c.o. - Projekt Ogrzewania</title>
	<atom:link href="https://projekt-ogrzewania.pl/tag/automatyka-c-o/feed/" rel="self" type="application/rss+xml" />
	<link>https://projekt-ogrzewania.pl/tag/automatyka-c-o/</link>
	<description>Twój partner w projektowaniu komfortu – profesjonalne ogrzewanie podłogowe dla Twojego domu.</description>
	<lastBuildDate>Thu, 10 Sep 2026 18:54:38 +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 automatyka c.o. - Projekt Ogrzewania</title>
	<link>https://projekt-ogrzewania.pl/tag/automatyka-c-o/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Krzywa grzewcza w ogrzewaniu podłogowym – jak ustawić ją bez błędów?</title>
		<link>https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/</link>
		
		<dc:creator><![CDATA[Robert Kucharski]]></dc:creator>
		<pubDate>Tue, 06 Jan 2026 10:25:59 +0000</pubDate>
				<category><![CDATA[Automatyka grzewcza]]></category>
		<category><![CDATA[Efektywność energetyczna]]></category>
		<category><![CDATA[Instalacje grzewcze]]></category>
		<category><![CDATA[Kocioł gazowy]]></category>
		<category><![CDATA[Ogrzewanie podłogowe]]></category>
		<category><![CDATA[Pompa ciepła]]></category>
		<category><![CDATA[Poradniki instalacyjne]]></category>
		<category><![CDATA[Poradniki techniczne]]></category>
		<category><![CDATA[Porady techniczne]]></category>
		<category><![CDATA[Projektowanie instalacji]]></category>
		<category><![CDATA[Projektowanie instalacji grzewczych]]></category>
		<category><![CDATA[Regulacja instalacji]]></category>
		<category><![CDATA[Termomodernizacja]]></category>
		<category><![CDATA[automatyka c.o.]]></category>
		<category><![CDATA[bezwładność cieplna]]></category>
		<category><![CDATA[efektywność energetyczna]]></category>
		<category><![CDATA[komfort cieplny]]></category>
		<category><![CDATA[krzywa grzewcza]]></category>
		<category><![CDATA[ogrzewanie podłogowe]]></category>
		<category><![CDATA[projekt instalacji]]></category>
		<category><![CDATA[regulacja ogrzewania]]></category>
		<category><![CDATA[sterowanie pogodowe]]></category>
		<category><![CDATA[temperatura zasilania]]></category>
		<guid isPermaLink="false">https://projekt-ogrzewania.pl/?p=3069</guid>

					<description><![CDATA[<p>Krzywa grzewcza w ogrzewaniu podłogowym to temat, który decyduje nie tylko o komforcie cieplnym, ale też o realnych kosztach eksploatacji domu. W artykule pokazujemy, dlaczego to właśnie algorytm sterujący, a nie sama instalacja, jest kluczem do efektywnego ogrzewania. Krok po kroku wyjaśniamy, jak działa krzywa grzewcza, jak dobrać jej parametry do rodzaju budynku oraz jak ją prawidłowo stroić w praktyce, aby uniknąć przegrzewania, niedogrzania i niepotrzebnych strat energii.</p>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">Krzywa grzewcza w ogrzewaniu podłogowym – jak ustawić ją bez błędów?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<style>
  #rk-curve-guide {
    --rk-curve-navy: #123247;
    --rk-curve-navy-deep: #0b2536;
    --rk-curve-teal: #0e7787;
    --rk-curve-cyan: #5fdef0;
    --rk-curve-orange: #ff7a21;
    --rk-curve-green: #248c68;
    --rk-curve-red: #c64b48;
    --rk-curve-amber: #b77812;
    --rk-curve-ink: #173246;
    --rk-curve-muted: #5d7180;
    --rk-curve-line: #d7e1e7;
    --rk-curve-soft: #f3f7f9;
    --rk-curve-white: #ffffff;
    --rk-curve-shadow: 0 18px 48px rgba(13, 43, 60, 0.12);
    color: var(--rk-curve-ink);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;
    font-size: 18px;
    line-height: 1.72;
    overflow-x: hidden;
  }

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

</style>

<article id="rk-curve-guide" aria-labelledby="rk-curve-visual-title">
  <div class="rk-curve-shell">
    <header class="rk-curve-hero">
      <div class="rk-curve-hero-inner">
        <span class="rk-curve-kicker">Sterowanie pogodowe · bez uniwersalnych nastaw</span>
        <div class="rk-curve-hero-title" id="rk-curve-visual-title">Dwa punkty zamiast jednej <span>„magicznej” liczby</span></div>
        <p class="rk-curve-hero-lead">Krzywa grzewcza łączy temperaturę zewnętrzną z wymaganą temperaturą wody, ale jej numer nie jest uniwersalny. Punkt obliczeniowy wynika z budynku i podłogi, sposób wprowadzania danych — ze sterownika, a końcowa korekta — z obserwacji stabilnie pracującej instalacji.</p>

        <div class="rk-curve-hero-tags" aria-label="Zakres poradnika">
          <span class="rk-curve-hero-tag">nachylenie i przesunięcie</span>
          <span class="rk-curve-hero-tag">model dwóch punktów</span>
          <span class="rk-curve-hero-tag">temperatura zasilania</span>
          <span class="rk-curve-hero-tag">pompa ciepła i kocioł</span>
          <span class="rk-curve-hero-tag">strojenie bez zgadywania</span>
        </div>

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

        <div class="rk-curve-hero-metrics" aria-label="Trzy warstwy poprawnej krzywej grzewczej">
          <div class="rk-curve-hero-metric">
            <b>Punkt projektowy</b>
            <span>OZC, powierzchnia czynna, konstrukcja podłogi i okładzina wyznaczają wymagany parametr w warunkach obliczeniowych.</span>
          </div>
          <div class="rk-curve-hero-metric">
            <b>Algorytm sterownika</b>
            <span>Nachylenie 0,3, punkty charakterystyki albo temperatura bazowa mogą oznaczać różne modele zależnie od producenta.</span>
          </div>
          <div class="rk-curve-hero-metric">
            <b>Strojenie w budynku</b>
            <span>Korektę wykonuje się małymi krokami po sprawdzeniu przepływów, czujników, harmonogramu i wpływu regulatorów pokojowych.</span>
          </div>
        </div>
      </div>
    </header>

    <nav class="rk-curve-shortcuts" aria-label="Na skróty — wszystkie sekcje artykułu">
      <span class="rk-curve-shortcuts-label">Na skróty</span>
      <a href="#rk-curve-answer">Czym jest krzywa?</a>
      <a href="#rk-curve-chart">Wykres interaktywny</a>
      <a href="#rk-curve-parameters">Parametry krzywej</a>
      <a href="#rk-curve-factors">Temperatura zasilania</a>
      <a href="#rk-curve-design">Punkt obliczeniowy</a>
      <a href="#rk-curve-sources">Pompa ciepła i kocioł</a>
      <a href="#rk-curve-graphic">Grafika edukacyjna</a>
      <a href="#rk-curve-inertia">Bezwładność i czujnik</a>
      <a href="#rk-curve-room-control">Termostat i strefy</a>
      <a href="#rk-curve-tuning">Strojenie krok po kroku</a>
      <a href="#rk-curve-symptoms">Korekta objawów</a>
      <a href="#rk-curve-hydraulics">Hydraulika</a>
      <a href="#rk-curve-flooring">Okładzina podłogi</a>
      <a href="#rk-curve-efficiency">Rachunki i sprawność</a>
      <a href="#rk-curve-errors">Najczęstsze błędy</a>
      <a href="#rk-curve-checklist">Lista kontrolna</a>
      <a href="#rk-curve-conclusions">Wnioski</a>
      <a href="#rk-curve-references">Źródła</a>
      <a href="#rk-curve-faq">FAQ</a>
      <a href="#rk-curve-author">Autor</a>
    </nav>

    <section class="rk-curve-section" id="rk-curve-answer">
      <span class="rk-curve-eyebrow">Odpowiedź w 30 sekund</span>
      <h2 class="rk-curve-section-title">Czym jest krzywa grzewcza w ogrzewaniu podłogowym?</h2>
      <div class="rk-curve-answer">
        <span class="rk-curve-answer-label">Najkrótsza poprawna definicja</span>
        <p><strong>Krzywa grzewcza określa zadaną temperaturę zasilania obiegu w zależności od temperatury zewnętrznej. Im zimniej na zewnątrz, tym większej mocy potrzebuje budynek i zazwyczaj tym wyższa jest wymagana temperatura wody. Właściwa charakterystyka ma zapewnić komfort bez niepotrzebnego przegrzewania wody.</strong></p>
      </div>

      <div class="rk-curve-grid-4">
        <article class="rk-curve-card">
          <span class="rk-curve-card-number">1</span>
          <h3>Oś pozioma</h3>
          <p>Pokazuje temperaturę zewnętrzną. W lewo znajdują się warunki coraz chłodniejsze, w prawo — łagodniejsze.</p>
        </article>
        <article class="rk-curve-card">
          <span class="rk-curve-card-number">2</span>
          <h3>Oś pionowa</h3>
          <p>Pokazuje zadaną temperaturę zasilania obiegu. Nie jest to automatycznie temperatura powierzchni podłogi ani pokoju.</p>
        </article>
        <article class="rk-curve-card">
          <span class="rk-curve-card-number">3</span>
          <h3>Linia lub krzywa</h3>
          <p>Łączy warunki zewnętrzne z parametrem wody. Jej przebieg zależy od modelu matematycznego zastosowanego w regulatorze.</p>
        </article>
        <article class="rk-curve-card">
          <span class="rk-curve-card-number">4</span>
          <h3>Ograniczenia</h3>
          <p>Minimum, maksimum, granica grzania, wpływ pomieszczenia i harmonogram mogą zmienić wynik samej charakterystyki.</p>
        </article>
      </div>

      <p>Krzywa jest podstawowym elementem <a href="https://projekt-ogrzewania.pl/sterowanie-pogodowe-w-ogrzewaniu-podlogowym/">sterowania pogodowego ogrzewaniem podłogowym</a>. Czujnik zewnętrzny nie przewiduje przyszłej pogody. Pozwala jednak regulatorowi zmieniać temperaturę wody, zanim masywna podłoga i powietrze w domu zdążą w pełni odpowiedzieć na zmianę strat ciepła.</p>

      <div class="rk-curve-callout"><strong>Krzywa nie określa bezpośrednio mocy sprężarki, przepływu pętli ani temperatury każdego pokoju.</strong> Źródło ciepła, pompa obiegowa, rozdzielacz, podłoga i regulatory pokojowe tworzą kolejne warstwy jednego systemu.</div>
    </section>

    <section class="rk-curve-section rk-curve-section-soft" id="rk-curve-chart">
      <span class="rk-curve-eyebrow">Model dwóch punktów i porównanie korekt</span>
      <h2 class="rk-curve-section-title">Interaktywny wykres krzywej grzewczej</h2>
      <p class="rk-curve-lead">Wprowadź dwa punkty odniesienia, ograniczenia zasilania i granicę grzania. Następnie wybierz temperaturę zewnętrzną lub porównaj zmianę nachylenia z równoległym przesunięciem całej linii.</p>

      <div class="rk-curve-tool" id="rk-curve-chart-tool">
        <div class="rk-curve-tool-head">
          <span class="rk-curve-eyebrow">Edukacyjny model liniowy</span>
          <h3>Zobacz, jak dwa punkty budują charakterystykę</h3>
          <p>Narzędzie nie przelicza wartości „slope” konkretnej marki. Pokazuje geometrię krzywej oraz wynik modelu dwupunktowego, który można porównać z dokumentacją własnego regulatora.</p>
        </div>

        <div class="rk-curve-tool-body">
          <div class="rk-curve-field-grid rk-curve-field-grid-3">
            <div class="rk-curve-field">
              <label for="rk-curve-cold-outdoor">Zimny punkt — temperatura zewnętrzna</label>
              <input id="rk-curve-cold-outdoor" type="number" min="-30" max="0" step="1" value="-20" inputmode="decimal">
              <span class="rk-curve-field-help">Najczęściej temperatura obliczeniowa przyjęta w projekcie, nie wartość wybrana z pamięci.</span>
            </div>
            <div class="rk-curve-field">
              <label for="rk-curve-cold-supply">Zimny punkt — temperatura zasilania</label>
              <input id="rk-curve-cold-supply" type="number" min="20" max="55" step="0.5" value="35" inputmode="decimal">
              <span class="rk-curve-field-help">Projektowy parametr obiegu przy temperaturze obliczeniowej.</span>
            </div>
            <div class="rk-curve-field">
              <label for="rk-curve-mild-outdoor">Łagodny punkt — temperatura zewnętrzna</label>
              <input id="rk-curve-mild-outdoor" type="number" min="1" max="18" step="1" value="10" inputmode="decimal">
              <span class="rk-curve-field-help">Punkt opisujący pracę przy niewielkim zapotrzebowaniu na ciepło.</span>
            </div>
            <div class="rk-curve-field">
              <label for="rk-curve-mild-supply">Łagodny punkt — temperatura zasilania</label>
              <input id="rk-curve-mild-supply" type="number" min="18" max="40" step="0.5" value="24" inputmode="decimal">
              <span class="rk-curve-field-help">Wartość odniesienia, nie uniwersalna nastawa dla każdego domu.</span>
            </div>
            <div class="rk-curve-field">
              <label for="rk-curve-min-supply">Minimalna temperatura zasilania</label>
              <input id="rk-curve-min-supply" type="number" min="15" max="35" step="0.5" value="22" inputmode="decimal">
              <span class="rk-curve-field-help">Dolne ograniczenie tylko wtedy, gdy regulator i instalacja go wymagają.</span>
            </div>
            <div class="rk-curve-field">
              <label for="rk-curve-max-supply">Maksymalna temperatura zasilania</label>
              <input id="rk-curve-max-supply" type="number" min="25" max="60" step="0.5" value="40" inputmode="decimal">
              <span class="rk-curve-field-help">Ograniczenie powinno respektować projekt, podłogę, okładzinę i źródło.</span>
            </div>
          </div>

          <div class="rk-curve-field-grid">
            <div class="rk-curve-field">
              <label for="rk-curve-heating-limit">Granica wyłączenia ogrzewania</label>
              <input id="rk-curve-heating-limit" type="number" min="5" max="22" step="0.5" value="16" inputmode="decimal">
              <span class="rk-curve-field-help">Powyżej tej temperatury model oznacza obieg jako wyłączony. Rzeczywista logika zależy od sterownika.</span>
            </div>
            <div class="rk-curve-field">
              <label for="rk-curve-current-outdoor">Analizowana temperatura zewnętrzna: <strong id="rk-curve-current-label">−10°C</strong></label>
              <input class="rk-curve-range" id="rk-curve-current-outdoor" type="range" min="-25" max="20" step="1" value="-10">
              <span class="rk-curve-field-help">Przesuń suwak, aby zobaczyć punkt pracy na wykresie.</span>
            </div>
          </div>

          <span class="rk-curve-control-label">Porównaj z krzywą bazową</span>
          <div class="rk-curve-graphic-controls" role="group" aria-label="Wybierz porównanie zmiany krzywej">
            <button type="button" data-rk-curve-mode="base" aria-pressed="true">Bez porównania</button>
            <button type="button" data-rk-curve-mode="steeper" aria-pressed="false">Większe nachylenie</button>
            <button type="button" data-rk-curve-mode="flatter" aria-pressed="false">Mniejsze nachylenie</button>
            <button type="button" data-rk-curve-mode="up" aria-pressed="false">Przesunięcie +2 K</button>
            <button type="button" data-rk-curve-mode="down" aria-pressed="false">Przesunięcie −2 K</button>
          </div>

          <div class="rk-curve-calc-layout">
            <div class="rk-curve-chart-card">
              <div class="rk-curve-chart-title">Temperatura zasilania w funkcji temperatury zewnętrznej</div>
              <div class="rk-curve-chart-wrap">
                <svg id="rk-curve-svg" viewBox="0 0 800 430" role="img" aria-labelledby="rk-curve-svg-title rk-curve-svg-desc">
                  <title id="rk-curve-svg-title">Interaktywny wykres krzywej grzewczej</title>
                  <desc id="rk-curve-svg-desc">Wykres pokazuje bazową i opcjonalną porównawczą temperaturę zasilania zależną od temperatury zewnętrznej.</desc>
                </svg>
              </div>
              <div class="rk-curve-legend" aria-label="Legenda wykresu">
                <span><i></i>krzywa bazowa</span>
                <span class="is-pump" id="rk-curve-compare-legend"><i></i>krzywa porównawcza</span>
                <span class="is-point"><i></i>aktualny punkt</span>
              </div>
            </div>

            <div class="rk-curve-results" aria-live="polite">
              <div class="rk-curve-result-grid">
                <div class="rk-curve-result"><span>Temperatura zewnętrzna</span><strong id="rk-curve-result-outdoor">−10°C</strong></div>
                <div class="rk-curve-result"><span>Krzywa bazowa — zasilanie</span><strong id="rk-curve-result-base">31,3°C</strong></div>
                <div class="rk-curve-result"><span>Krzywa porównawcza</span><strong id="rk-curve-result-compare">—</strong></div>
                <div class="rk-curve-result"><span>Stan modelu</span><strong id="rk-curve-result-state">Zakres liniowy</strong></div>
              </div>

              <div class="rk-curve-breakdown">
                <span class="rk-curve-breakdown-title">Jak powstał wynik?</span>
                <p id="rk-curve-equation-copy">Model interpoluje temperaturę pomiędzy zimnym i łagodnym punktem, a następnie stosuje ograniczenia minimum, maksimum i granicę grzania.</p>
              </div>
              <div class="rk-curve-status" id="rk-curve-chart-status">Dane tworzą poprawną malejącą charakterystykę: wraz ze wzrostem temperatury zewnętrznej temperatura zasilania spada.</div>
            </div>
          </div>

          <div class="rk-curve-tool-disclaimer"><strong>Granica modelu:</strong> wynik jest edukacyjną interpolacją dwóch punktów. Nie stanowi nastawy konkretnej pompy ciepła lub kotła, nie uwzględnia nieliniowości algorytmu producenta, wpływu pomieszczenia, prognozy pogody, dynamiki budynku ani ograniczeń serwisowych.</div>
        </div>
      </div>
    </section>

    <section class="rk-curve-section" id="rk-curve-parameters">
      <span class="rk-curve-eyebrow">Pięć ustawień, które często są mylone</span>
      <h2 class="rk-curve-section-title">Nachylenie, przesunięcie, minimum, maksimum i granica grzania</h2>
      <p class="rk-curve-lead">Regulator może opisywać charakterystykę liczbą nachylenia, dwoma punktami, temperaturą bazową albo własnym zestawem parametrów. Dlatego przed zmianą ustawień trzeba odczytać instrukcję dokładnego modelu.</p>

      <div class="rk-curve-grid-3">
        <article class="rk-curve-card"><h3>Nachylenie</h3><p>Zmienia różnicę pomiędzy zimną i łagodną częścią charakterystyki. Korekta jest zwykle coraz bardziej widoczna wraz ze spadkiem temperatury zewnętrznej.</p></article>
        <article class="rk-curve-card"><h3>Przesunięcie równoległe</h3><p>Podnosi albo obniża cały przebieg w przybliżeniu o podobną wartość. Nie każdy regulator realizuje offset dokładnie w ten sam sposób.</p></article>
        <article class="rk-curve-card"><h3>Temperatura minimalna</h3><p>Ogranicza obniżanie parametru wody. Zbyt wysoka może powodować przegrzewanie w łagodnych warunkach i częste wyłączanie źródła.</p></article>
        <article class="rk-curve-card"><h3>Temperatura maksymalna</h3><p>Chroni układ przed przekroczeniem przyjętego parametru, ale nie zastępuje prawidłowego projektu i zabezpieczeń urządzenia.</p></article>
        <article class="rk-curve-card"><h3>Granica grzania</h3><p>Określa temperaturę zewnętrzną, powyżej której ogrzewanie może zostać zatrzymane. Należy uwzględnić bezwładność i zyski budynku.</p></article>
        <article class="rk-curve-card"><h3>Wpływ temperatury pokojowej</h3><p>W wybranych systemach pomiar wewnętrzny koryguje wynik pogodowy. Jego waga, ograniczenia i sposób działania są właściwością sterownika.</p></article>
      </div>

      <div class="rk-curve-warning"><strong>„Krzywa 0,3” nie jest samodzielną specyfikacją.</strong> Bez nazwy urządzenia, trybu regulacji, temperatury projektowej, punktu bazowego i ograniczeń nie da się stwierdzić, jaką temperaturę zasilania regulator rzeczywiście wyznaczy.</div>
    </section>

    <section class="rk-curve-section rk-curve-section-soft" id="rk-curve-factors">
      <span class="rk-curve-eyebrow">Od strat budynku do emisji podłogi</span>
      <h2 class="rk-curve-section-title">Od czego zależy temperatura zasilania podłogówki?</h2>
      <p class="rk-curve-lead">Metraż nie wystarcza. Dwa domy o tej samej powierzchni mogą potrzebować innej mocy i innej temperatury wody, ponieważ różnią się izolacją, wentylacją, przeszkleniami, geometrią pętli oraz wykończeniem podłogi.</p>

      <div class="rk-curve-spec-grid">
        <div class="rk-curve-spec"><span class="rk-curve-spec-mark">1</span><div><strong>Obciążenie cieplne pomieszczeń</strong><span>Wynik <a href="https://projekt-ogrzewania.pl/projektowe-obciazenie-cieplne-ozc/">projektowego obciążenia cieplnego OZC</a> określa moc wymaganą przy przyjętych warunkach wewnętrznych i zewnętrznych.</span></div></div>
        <div class="rk-curve-spec"><span class="rk-curve-spec-mark">2</span><div><strong>Rzeczywista powierzchnia czynna</strong><span>Stałe zabudowy i obszary bez rur ograniczają powierzchnię, przez którą można przekazać ciepło do pomieszczenia.</span></div></div>
        <div class="rk-curve-spec"><span class="rk-curve-spec-mark">3</span><div><strong>Rozstaw i średnica rur</strong><span><a href="https://projekt-ogrzewania.pl/rozstaw-rur-w-ogrzewaniu-podlogowym-co-10-czy-15-cm/">Rozstaw rur 10 czy 15 cm</a> wpływa na relację pomiędzy temperaturą czynnika, mocą i równomiernością powierzchni.</span></div></div>
        <div class="rk-curve-spec"><span class="rk-curve-spec-mark">4</span><div><strong>Konstrukcja warstw</strong><span>Położenie rur, rodzaj jastrychu, grubości oraz przewodzenie materiałów zmieniają opór pomiędzy wodą i pomieszczeniem.</span></div></div>
        <div class="rk-curve-spec"><span class="rk-curve-spec-mark">5</span><div><strong>Okładzina podłogowa</strong><span>Płytki, winyl, laminat i drewno mają inne opory oraz ograniczenia temperaturowe. Liczy się kompletny układ wykończenia.</span></div></div>
        <div class="rk-curve-spec"><span class="rk-curve-spec-mark">6</span><div><strong>Przepływ i projektowe ΔT</strong><span>Moc jest przenoszona przez wodę. <a href="https://projekt-ogrzewania.pl/spadek-temperatury-%ce%b4t-roznica-miedzy-temperatura-zasilania-a-powrotu/">Różnica temperatur zasilania i powrotu</a> oraz przepływy muszą być ze sobą zgodne.</span></div></div>
      </div>

      <div class="rk-curve-callout"><strong>Temperatury zasilania nie oblicza się przez podzielenie całkowitej mocy przez metraż i dodanie jednego oporu okładziny.</strong> Potrzebny jest model emisji systemu uwzględniający konstrukcję, temperaturę średnią czynnika, powierzchnię, strumień ciepła i ograniczenia temperatury podłogi.</div>
    </section>

    <section class="rk-curve-section" id="rk-curve-design">
      <span class="rk-curve-eyebrow">Punkt, który powinien istnieć przed pierwszym uruchomieniem</span>
      <h2 class="rk-curve-section-title">Jak projekt wyznacza punkt obliczeniowy krzywej?</h2>
      <p class="rk-curve-lead">Projektowy punkt łączy temperaturę zewnętrzną przyjętą dla lokalizacji z temperaturą zasilania wystarczającą do pokrycia obciążeń wszystkich pomieszczeń. Najtrudniejsze pomieszczenie może wyznaczyć wspólny parametr obiegu, a pozostałe pętle są równoważone przepływem i geometrią.</p>

      <div class="rk-curve-chain" aria-label="Kolejność wyznaczania punktu obliczeniowego">
        <div class="rk-curve-chain-item"><strong>Warunki obliczeniowe</strong><span>lokalizacja i temperatura wewnętrzna</span></div>
        <div class="rk-curve-chain-item"><strong>OZC pomieszczeń</strong><span>wymagana moc</span></div>
        <div class="rk-curve-chain-item"><strong>Projekt podłogi</strong><span>powierzchnia, rozstaw i okładzina</span></div>
        <div class="rk-curve-chain-item"><strong>Temperatura i przepływ</strong><span>spójny punkt pracy</span></div>
        <div class="rk-curve-chain-item"><strong>Nastawa regulatora</strong><span>odwzorowanie według instrukcji</span></div>
      </div>

      <div class="rk-curve-grid-3">
        <article class="rk-curve-card"><h3>Temperatura obliczeniowa nie jest wszędzie taka sama</h3><p>Wynika z przyjętej metody, lokalizacji i dokumentacji projektu. Wartość −20°C może być właściwym założeniem dla konkretnego zadania, ale nie jest automatyczną temperaturą całej Polski.</p></article>
        <article class="rk-curve-card"><h3>Najwyższa temperatura nie jest celem</h3><p>Projekt powinien zapewnić wymaganą moc przy możliwie niskim, lecz wystarczającym parametrze oraz z zachowaniem dopuszczalnej temperatury powierzchni i materiałów.</p></article>
        <article class="rk-curve-card"><h3>Strojenie nie zastępuje obliczeń</h3><p>Jeżeli podłoga nie ma wymaganej powierzchni lub mocy, podnoszenie krzywej może przekroczyć ograniczenia, a nadal nie rozwiązać problemu komfortu.</p></article>
      </div>

      <p>Szerszą kolejność obliczeń pokazuje poradnik o <a href="https://projekt-ogrzewania.pl/projekt-ogrzewania-podlogowego-z-pompa-ciepla/">projekcie ogrzewania podłogowego z pompą ciepła</a>, natomiast dobór geometrii wyjaśnia materiał o <a href="https://projekt-ogrzewania.pl/jak-zaplanowac-rozmieszczenie-petli-grzewczych-w-ogrzewaniu-podlogowym/">planowaniu pętli grzewczych</a>.</p>

      <div class="rk-curve-cta">
        <div class="rk-curve-cta-title">Sterownik może ustawić tylko tak niską temperaturę, na jaką pozwala zaprojektowana podłoga</div>
        <p>Obciążenia pomieszczeń, powierzchnie czynne, rozstaw rur, opory okładzin, długości pętli i przepływy określają temperaturę wody potrzebną w warunkach obliczeniowych. Dopiero ten punkt pozwala świadomie ustawić i później korygować krzywą grzewczą.</p>
        <a class="rk-curve-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów projekt podłogówki z obliczoną temperaturą zasilania</a>
        <small class="rk-curve-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-curve-section rk-curve-section-dark" id="rk-curve-sources">
      <span class="rk-curve-eyebrow">Ta sama fizyka, inna logika urządzenia</span>
      <h2 class="rk-curve-section-title">Krzywa grzewcza z pompą ciepła i kotłem — co się różni?</h2>
      <p class="rk-curve-lead">Oba źródła mogą korzystać z regulacji pogodowej, lecz różnią się zakresem modulacji, sprawnością przy określonych temperaturach, minimalnym przepływem, pojemnością wodną i reakcją na mały odbiór. Krzywa musi być częścią całej konfiguracji, a nie odizolowanym suwakiem.</p>

      <div class="rk-curve-grid-2">
        <article class="rk-curve-card">
          <h3>Pompa ciepła</h3>
          <ul>
            <li>temperatura zasilania wpływa na warunki pracy i osiąganą sprawność,</li>
            <li>trzeba respektować wymagania minimalnego przepływu i objętości wody,</li>
            <li>ważna jest minimalna moc dostępna w aktualnych warunkach,</li>
            <li>zamknięcie stref może zmniejszyć odbiór i skrócić cykle pracy,</li>
            <li>odszranianie i zabezpieczenia zależą od dokładnego modelu.</li>
          </ul>
        </article>
        <article class="rk-curve-card">
          <h3>Kocioł gazowy</h3>
          <ul>
            <li>regulator może sterować temperaturą wody i mocą palnika,</li>
            <li>znaczenie ma zakres modulacji oraz hydraulika obiegu,</li>
            <li>zbyt mały odbiór również może powodować częste cykle,</li>
            <li>układ mieszający może mieć własną, oddzielną charakterystykę,</li>
            <li>logika styku on/off różni się od komunikacji cyfrowej.</li>
          </ul>
        </article>
      </div>

      <div class="rk-curve-callout"><strong>Nie przepisuj liczby nachylenia pomiędzy urządzeniami.</strong> Nawet przy tym samym budynku dwa sterowniki mogą wymagać innego sposobu wprowadzenia punktów, poziomu krzywej, temperatury bazowej lub wpływu pokojowego. Punktem wspólnym są wymagane temperatury wody, nie nazwa parametru w menu.</div>

      <p>Przy pompie ciepła warto osobno przeanalizować <a href="https://projekt-ogrzewania.pl/pompa-ciepla/">zasadę doboru urządzenia</a>, a przy układach rozdzielonych także rzeczywistą funkcję <a href="https://projekt-ogrzewania.pl/bufor-ciepla-w-ogrzewaniu-podlogowym/">bufora ciepła w podłogówce</a>. Bufor nie jest automatycznie wymagany tylko dlatego, że instalacja ma pogodówkę lub termostaty.</p>
    </section>

    <section class="rk-curve-section" id="rk-curve-graphic">
      <span class="rk-curve-eyebrow">Interaktywna grafika edukacyjna</span>
      <h2 class="rk-curve-section-title">Jak czujnik, regulator, źródło i podłoga reagują na pogodę?</h2>
      <p class="rk-curve-lead">Wybierz scenariusz. Sześć niezależnych modułów pokaże, który element mierzy temperaturę, który wyznacza parametr wody, który dostarcza energię oraz dlaczego pomieszczenie nie reaguje w tej samej chwili co elektronika.</p>

      <div class="rk-curve-tool" id="rk-curve-system-tool">
        <div class="rk-curve-tool-head">
          <span class="rk-curve-eyebrow">Od elewacji do temperatury pokoju</span>
          <h3>Prześledź reakcję całego układu</h3>
          <p>Moduły opisują zależności, nie uniwersalne czasy ani parametry. Dokładne sekwencje wynikają z konstrukcji budynku i dokumentacji urządzeń.</p>
        </div>
        <div class="rk-curve-tool-body">
          <div class="rk-curve-graphic-controls" role="group" aria-label="Wybierz scenariusz pracy regulacji pogodowej">
            <button type="button" data-rk-curve-system="colder" aria-pressed="true">Na zewnątrz robi się zimniej</button>
            <button type="button" data-rk-curve-system="sun" aria-pressed="false">Słońce ogrzewa salon</button>
            <button type="button" data-rk-curve-system="high" aria-pressed="false">Krzywa jest za wysoka</button>
            <button type="button" data-rk-curve-system="zones" aria-pressed="false">Większość pętli się zamyka</button>
          </div>

          <div class="rk-curve-hydraulic-grid" aria-live="polite">
            <article class="rk-curve-hydraulic-card is-active" data-rk-curve-component="sensor">
              <span class="rk-curve-hydraulic-number">1</span><h3>Czujnik zewnętrzny</h3>
              <span class="rk-curve-hydraulic-value" data-rk-curve-component-value="">Rejestruje spadek temperatury</span>
              <p data-rk-curve-component-copy="">Mierzy warunki przy elewacji. Nie mierzy strat budynku ani temperatury posadzki.</p>
            </article>
            <article class="rk-curve-hydraulic-card is-active" data-rk-curve-component="controller">
              <span class="rk-curve-hydraulic-number">2</span><h3>Regulator pogodowy</h3>
              <span class="rk-curve-hydraulic-value" data-rk-curve-component-value="">Wyznacza wyższą wartość zadaną</span>
              <p data-rk-curve-component-copy="">Korzysta z krzywej, ograniczeń i dodatkowych korekt. Nie naprawia błędnej hydrauliki.</p>
            </article>
            <article class="rk-curve-hydraulic-card is-active" data-rk-curve-component="source">
              <span class="rk-curve-hydraulic-number">3</span><h3>Źródło ciepła</h3>
              <span class="rk-curve-hydraulic-value" data-rk-curve-component-value="">Podąża do nowej temperatury</span>
              <p data-rk-curve-component-copy="">Moduluje lub cyklicznie pracuje według własnej automatyki, dostępnej mocy i zabezpieczeń.</p>
            </article>
            <article class="rk-curve-hydraulic-card is-active" data-rk-curve-component="flow">
              <span class="rk-curve-hydraulic-number">4</span><h3>Pompa i przepływy</h3>
              <span class="rk-curve-hydraulic-value" data-rk-curve-component-value="">Transportują energię</span>
              <p data-rk-curve-component-copy="">Rozdział wody zależy od pompy, oporów i nastaw pętli, a nie od samej linii na wykresie.</p>
            </article>
            <article class="rk-curve-hydraulic-card is-active" data-rk-curve-component="floor">
              <span class="rk-curve-hydraulic-number">5</span><h3>Podłoga</h3>
              <span class="rk-curve-hydraulic-value" data-rk-curve-component-value="">Zmienia emisję z opóźnieniem</span>
              <p data-rk-curve-component-copy="">Woda ogrzewa konstrukcję, która akumuluje energię i przekazuje ją do pomieszczenia.</p>
            </article>
            <article class="rk-curve-hydraulic-card is-active" data-rk-curve-component="room">
              <span class="rk-curve-hydraulic-number">6</span><h3>Pomieszczenie</h3>
              <span class="rk-curve-hydraulic-value" data-rk-curve-component-value="">Dąży do nowej równowagi</span>
              <p data-rk-curve-component-copy="">Temperatura zależy jednocześnie od podłogi, strat, wentylacji, słońca i zysków wewnętrznych.</p>
            </article>
          </div>

          <div class="rk-curve-graphic-result" id="rk-curve-system-result" role="status" aria-live="polite">
            <strong>Spadek temperatury zewnętrznej zmienia wartość zadaną wody, a nie temperaturę pokoju bezpośrednio.</strong>
            <p>Efekt przechodzi przez źródło, przepływ i akumulującą podłogę. Dlatego regulator może odpowiedzieć natychmiast, lecz nowa równowaga cieplna wymaga czasu.</p>
          </div>
          <div class="rk-curve-tool-disclaimer"><strong>Nie jest to symulator czasowy.</strong> Grafika nie podaje liczby godzin, procentu modulacji ani temperatury wynikowej, ponieważ te wartości wymagają danych konkretnego budynku i urządzeń.</div>
        </div>
      </div>
    </section>

    <section class="rk-curve-section rk-curve-section-soft" id="rk-curve-inertia">
      <span class="rk-curve-eyebrow">Elektronika reaguje szybciej niż budynek</span>
      <h2 class="rk-curve-section-title">Bezwładność podłogówki i lokalizacja czujnika zewnętrznego</h2>
      <p class="rk-curve-lead">Czas reakcji nie jest jedną stałą. Zależy od rodzaju systemu, masy i grubości warstw, położenia rur, okładziny, temperatury wody, mocy chwilowej, izolacji oraz zysków w pomieszczeniu.</p>

      <div class="rk-curve-grid-2">
        <article class="rk-curve-card">
          <h3>Co oznacza bezwładność?</h3>
          <p>Po podniesieniu temperatury zasilania część energii najpierw zwiększa temperaturę konstrukcji. Po obniżeniu lub zamknięciu przepływu posadzka nadal oddaje wcześniej zgromadzone ciepło. Dlatego nie należy oceniać korekty po kilku godzinach.</p>
          <p>Szersze wyjaśnienie znajduje się w poradniku o <a href="https://projekt-ogrzewania.pl/czym-jest-bezwladnosc-cieplna-w-ogrzewaniu-podlogowym/">bezwładności cieplnej ogrzewania podłogowego</a>.</p>
        </article>
        <article class="rk-curve-card">
          <h3>Gdzie zamontować czujnik?</h3>
          <p>Miejsce należy wybrać według instrukcji producenta: poza bezpośrednim słońcem, wyrzutniami, nawiewami, otwieranymi oknami i lokalnymi źródłami ciepła. Elewacja i wysokość montażu muszą odpowiadać wymaganiom dokładnego urządzenia.</p>
          <p>Nie wpisujemy uniwersalnej ściany ani wysokości, ponieważ obudowa, osłona radiacyjna i zalecenia montażowe różnią się między systemami.</p>
        </article>
      </div>

      <div class="rk-curve-callout"><strong>Do strojenia potrzebny jest stabilny okres, nie sztywne „48 godzin”.</strong> Po zmianie trzeba poczekać wystarczająco długo, aby odróżnić reakcję budynku od krótkiej zmiany pogody, słońca, wietrzenia albo harmonogramu. Czas obserwacji dobiera się do bezwładności i warunków.</div>
    </section>

    <section class="rk-curve-section" id="rk-curve-room-control">
      <span class="rk-curve-eyebrow">Regulacja nadrzędna i lokalne ograniczenie</span>
      <h2 class="rk-curve-section-title">Krzywa grzewcza a termostat pokojowy i sterowanie strefowe</h2>
      <p class="rk-curve-lead">Pogodówka ustala temperaturę wody dla obiegu. Termostat pokojowy może korygować wartość zadaną, zgłaszać zapotrzebowanie albo zamykać przypisaną strefę — zależnie od systemu. Te funkcje trzeba rozdzielić.</p>

      <div class="rk-curve-compare-table" role="table" aria-label="Porównanie regulacji pogodowej i pokojowej">
        <div class="rk-curve-table-row rk-curve-table-head" role="row"><div role="columnheader">Warstwa</div><div role="columnheader">Co kontroluje</div><div role="columnheader">Czego nie zastępuje</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Warstwa" role="cell">Regulator pogodowy</div><div data-label="Kontroluje" role="cell">Wyznacza parametr zasilania w zależności od temperatury zewnętrznej i dodatkowych ustawień.</div><div data-label="Nie zastępuje" role="cell">Projektowych przepływów, równoważenia pętli i mocy powierzchni grzewczej.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Warstwa" role="cell">Wpływ pokojowy</div><div data-label="Kontroluje" role="cell">Może przesuwać wartość zadaną obiegu na podstawie reprezentatywnej temperatury wewnętrznej.</div><div data-label="Nie zastępuje" role="cell">Poprawnej lokalizacji czujnika oraz podstawowej charakterystyki pogodowej.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Warstwa" role="cell">Termostat strefowy</div><div data-label="Kontroluje" role="cell">Otwiera albo zamyka jeden lub kilka zaworów przypisanych do strefy.</div><div data-label="Nie zastępuje" role="cell">Minimalnego przepływu źródła, nastaw pompy i kontroli temperatury wody.</div></div>
      </div>

      <p>Przed strojeniem warto ustalić rolę <a href="https://projekt-ogrzewania.pl/termostat-w-ogrzewaniu-podlogowym/">termostatu w ogrzewaniu podłogowym</a> i przeczytać, kiedy <a href="https://projekt-ogrzewania.pl/sterowanie-strefowe-ogrzewaniem-czy-warto/">sterowanie strefowe podłogówki</a> pomaga, a kiedy zmienia warunki hydrauliczne. Na czas testów nie należy mechanicznie zdejmować siłowników ani wymuszać otwarcia bez sprawdzenia instrukcji i bezpiecznego trybu urządzeń.</p>
    </section>

    <section class="rk-curve-section rk-curve-section-soft" id="rk-curve-tuning">
      <span class="rk-curve-eyebrow">Jedna kontrolowana zmiana naraz</span>
      <h2 class="rk-curve-section-title">Jak ustawić krzywą grzewczą krok po kroku?</h2>
      <p class="rk-curve-lead">Celem nie jest najniższy numer w menu. Celem jest najniższa charakterystyka, która przy projektowych przepływach i dopuszczalnych temperaturach zapewnia komfort w całym wymaganym zakresie pogody.</p>

      <div class="rk-curve-steps">
        <article class="rk-curve-step"><h3>Zapisz stan początkowy</h3><p>Zanotuj tryb pracy, punkty lub nachylenie, przesunięcie, minimum, maksimum, granicę grzania, wpływ pokojowy, harmonogram i ustawienia pomp.</p></article>
        <article class="rk-curve-step"><h3>Sprawdź dokumentację sterownika</h3><p>Ustal, co dokładnie oznaczają parametry, której strefy lub obiegu dotyczą i czy urządzenie używa linii, krzywej nieliniowej albo dwóch punktów.</p></article>
        <article class="rk-curve-step"><h3>Potwierdź przepływy projektowe</h3><p>Otwórz wymagane obiegi zgodnie z bezpieczną procedurą i sprawdź <a href="https://projekt-ogrzewania.pl/rotametr-wskaznik-przeplywu-w-rozdzielaczu-ogrzewania-podlogowego/">nastawy rotametrów</a>. Nie stroi się krzywej na niezrównoważonym rozdzielaczu.</p></article>
        <article class="rk-curve-step"><h3>Usuń zakłócające harmonogramy</h3><p>Na czas obserwacji utrzymuj możliwie stałe wymagania. Zanotuj słońce, kominek, intensywne gotowanie, długie wietrzenie i inne zyski.</p></article>
        <article class="rk-curve-step"><h3>Ustaw punkt startowy</h3><p>Przenieś do sterownika parametry wynikające z projektu oraz instrukcji. Gdy brakuje projektu, użyj ostrożnej wartości zalecanej przez producenta jako punktu do dalszej weryfikacji, nie jako wyniku końcowego.</p></article>
        <article class="rk-curve-step"><h3>Obserwuj temperaturę reprezentatywną</h3><p>Mierz w pomieszczeniu, które nie jest chwilowo dogrzewane słońcem lub urządzeniami i którego pętla ma potwierdzony przepływ.</p></article>
        <article class="rk-curve-step"><h3>Koryguj jeden parametr</h3><p>Zmiana jednocześnie nachylenia, offsetu, harmonogramu i przepływu uniemożliwia ustalenie, która korekta zadziałała.</p></article>
        <article class="rk-curve-step"><h3>Poczekaj na miarodajny efekt</h3><p>Uwzględnij bezwładność oraz stabilność pogody. Porównuj podobne warunki i prowadź dziennik zamiast zmieniać nastawy każdego ranka.</p></article>
      </div>
    </section>

    <section class="rk-curve-section" id="rk-curve-symptoms">
      <span class="rk-curve-eyebrow">Macierz obserwacji, nie automatyczna diagnoza</span>
      <h2 class="rk-curve-section-title">Jak korygować krzywą na podstawie objawów?</h2>
      <p class="rk-curve-lead">Objaw można powiązać z geometrią charakterystyki dopiero po sprawdzeniu pomiarów, przepływów, harmonogramów i ograniczeń. Tabela pokazuje kierunek analizy, a nie gotową nastawę dla nieznanej instalacji.</p>

      <div class="rk-curve-diagnostic-table" role="table" aria-label="Objawy i możliwe korekty krzywej grzewczej">
        <div class="rk-curve-table-row rk-curve-table-head" role="row"><div role="columnheader">Zaobserwowany stan</div><div role="columnheader">Możliwy związek z krzywą</div><div role="columnheader">Co najpierw wykluczyć</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Stan" role="cell">Za chłodno przy odwilży i mrozie</div><div data-label="Krzywa" role="cell">Cały przebieg może być ustawiony za nisko; do analizy jest przesunięcie lub oba punkty.</div><div data-label="Najpierw wyklucz" role="cell">Błędny pomiar, harmonogram, zamknięte zawory, zbyt małe przepływy i ograniczenie maksymalnej temperatury.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Stan" role="cell">Dobrze przy dodatniej temperaturze, chłodno podczas mrozu</div><div data-label="Krzywa" role="cell">Zimny punkt może być za niski albo charakterystyka za płaska.</div><div data-label="Najpierw wyklucz" role="cell">Niedobór mocy podłogi, ograniczenie źródła, spadek przepływu i nieprawidłowy punkt obliczeniowy.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Stan" role="cell">Dobrze przy odwilży, za ciepło podczas mrozu</div><div data-label="Krzywa" role="cell">Zimny punkt może być za wysoki albo charakterystyka zbyt stroma.</div><div data-label="Najpierw wyklucz" role="cell">Zyski słoneczne, kominek, zmianę sposobu użytkowania i silny wpływ regulatora pokojowego.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Stan" role="cell">Za ciepło głównie w łagodną pogodę</div><div data-label="Krzywa" role="cell">Łagodny punkt, minimum zasilania lub granica grzania mogą być ustawione za wysoko.</div><div data-label="Najpierw wyklucz" role="cell">Zyski wewnętrzne, nieprawidłowy czujnik zewnętrzny i pracę dodatkowego źródła.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Stan" role="cell">Jedne pokoje zimne, inne przegrzane</div><div data-label="Krzywa" role="cell">Jedna wspólna krzywa rzadko jest jedyną przyczyną różnicy pomieszczeń.</div><div data-label="Najpierw wyklucz" role="cell">OZC pomieszczeń, powierzchnie czynne, rozstaw, okładziny, przepływy i pomylone pętle.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Stan" role="cell">Źródło często się włącza i wyłącza</div><div data-label="Krzywa" role="cell">Za wysoka wartość zadana może pogarszać sytuację, ale nie jest jedyną przyczyną.</div><div data-label="Najpierw wyklucz" role="cell">Minimalną moc, przepływ, objętość wody, zamykanie stref, histerezę i logikę sterowania.</div></div>
      </div>

      <div class="rk-curve-note"><strong>Nie koryguj całej instalacji pod jeden chwilowo zimny pokój.</strong> Jeżeli pozostałe pomieszczenia mają poprawną temperaturę, najpierw sprawdź ten obieg i możliwość oddania wymaganej mocy.</div>
    </section>

    <section class="rk-curve-section rk-curve-section-soft" id="rk-curve-hydraulics">
      <span class="rk-curve-eyebrow">Krzywa mówi „jaka temperatura”, hydraulika — „czy energia dotrze”</span>
      <h2 class="rk-curve-section-title">Co sprawdzić w hydraulice przed zmianą ustawień?</h2>
      <p class="rk-curve-lead">Podniesienie temperatury zasilania nie skompensuje dowolnie małego przepływu, zapowietrzenia, zabrudzenia, zablokowanego zaworu lub nieprawidłowej pracy pompy. Najpierw trzeba oddzielić błąd dystrybucji od błędu regulatora.</p>

      <div class="rk-curve-grid-3">
        <article class="rk-curve-card"><h3>Przepływy pętli</h3><p>Porównaj odczyty z projektem przy znanych stanach zaworów. Nie ustawiaj jednakowego przepływu na każdej pętli i nie przyjmuj jednego zakresu dla całego domu.</p></article>
        <article class="rk-curve-card"><h3>Pompa obiegowa</h3><p>Sprawdź punkt pracy, tryb regulacji oraz zachowanie przy zmianie liczby otwartych gałęzi. Pomaga poradnik o <a href="https://projekt-ogrzewania.pl/pompa-obiegowa-w-instalacji-ogrzewania-podlogowego/">doborze pompy obiegowej do podłogówki</a>.</p></article>
        <article class="rk-curve-card"><h3>Stan zaworów</h3><p>Potwierdź wkładki, siłowniki i przypisanie stref. Czas ruchu <a href="https://projekt-ogrzewania.pl/silowniki-termoelektryczne-na-rozdzielaczach/">siłowników termoelektrycznych</a> nie oznacza natychmiastowej zmiany przepływu.</p></article>
        <article class="rk-curve-card"><h3>Temperatury rzeczywiste</h3><p>Odczytaj zasilanie i powrót w ustalonym stanie. Wartość zadana regulatora nie zawsze jest równa chwilowej temperaturze zmierzonej na przewodzie.</p></article>
        <article class="rk-curve-card"><h3>Filtry i powietrze</h3><p>Zabrudzenie, powietrze i niedostateczne ciśnienie statyczne mogą ograniczyć obieg oraz powodować hałas, którego nie naprawi zmiana nachylenia.</p></article>
        <article class="rk-curve-card"><h3>Stan częściowego obciążenia</h3><p>Jeśli termostaty zamykają pętle, sprawdź minimalny czynny przepływ i odbiór energii. Nie zakładaj automatycznie, że potrzebny jest bypass lub bufor.</p></article>
      </div>
    </section>

    <section class="rk-curve-section" id="rk-curve-flooring">
      <span class="rk-curve-eyebrow">Opór okładziny zmienia możliwości emitera</span>
      <h2 class="rk-curve-section-title">Jak okładzina podłogi wpływa na krzywą?</h2>
      <p class="rk-curve-lead">Większy opór pomiędzy jastrychem a pomieszczeniem może wymagać wyższej temperatury średniej czynnika do przekazania tej samej mocy. Nie oznacza to jednak stałej korekty o 2, 3 lub 4 K dla każdej zamiany materiału.</p>

      <div class="rk-curve-grid-3">
        <article class="rk-curve-card"><h3>Płytki i kamień</h3><p>Zwykle tworzą układ o małym oporze, lecz liczą się również klej, grubość, rozstaw i konstrukcja pod spodem.</p></article>
        <article class="rk-curve-card"><h3>Panele i winyl</h3><p>Należy zsumować opór produktu i podkładu oraz sprawdzić dopuszczenie producenta do ogrzewania podłogowego i limit temperatury.</p></article>
        <article class="rk-curve-card"><h3>Drewno</h3><p>Gatunek, konstrukcja deski, grubość, klejenie i wymagania producenta wpływają na opór oraz ograniczenia. Zobacz <a href="https://projekt-ogrzewania.pl/wybor-idealnego-drewna-do-ogrzewania-podlogowego-kompletna-tabela-i-poradnik/">dobór drewna na ogrzewanie podłogowe</a>.</p></article>
      </div>

      <p>Jeżeli wykończenie zostanie zmienione po wykonaniu projektu, trzeba ponownie sprawdzić wymaganą moc, temperaturę powierzchni oraz parametr wody. Szczegóły opisuje poradnik o tym, <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>

      <div class="rk-curve-warning"><strong>Nie podnoś automatycznie przesunięcia krzywej po zmianie okładziny.</strong> Najpierw sprawdź jej deklarowany opór, dopuszczalną temperaturę, zapas mocy powierzchni i warunki gwarancji.</div>
    </section>

    <section class="rk-curve-section rk-curve-section-soft" id="rk-curve-efficiency">
      <span class="rk-curve-eyebrow">Najniższa skuteczna, nie najniższa możliwa</span>
      <h2 class="rk-curve-section-title">Czy niższa krzywa zawsze oznacza niższe rachunki?</h2>
      <p class="rk-curve-lead">Niższa temperatura wody może poprawić warunki pracy źródła i ograniczyć straty dystrybucji, ale tylko wtedy, gdy instalacja nadal pokrywa zapotrzebowanie. Nie istnieje jeden procent wzrostu COP lub spadku kosztów przypisany każdemu obniżeniu o 1°C.</p>

      <div class="rk-curve-compare-table" role="table" aria-label="Wpływ obniżania krzywej na sprawność i komfort">
        <div class="rk-curve-table-row rk-curve-table-head" role="row"><div role="columnheader">Sytuacja</div><div role="columnheader">Możliwy efekt</div><div role="columnheader">Ryzyko</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Sytuacja" role="cell">Krzywa była zawyżona</div><div data-label="Efekt" role="cell">Mniej przegrzewania, łagodniejsza praca źródła i mniejsza potrzeba zamykania stref.</div><div data-label="Ryzyko" role="cell">Zbyt szybka korekta może zostać błędnie oceniona przed ustabilizowaniem podłogi.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Sytuacja" role="cell">Krzywa jest już blisko minimum</div><div data-label="Efekt" role="cell">Dalsze obniżenie może nie dać istotnej korzyści albo wydłużyć pracę przy podobnym zużyciu.</div><div data-label="Ryzyko" role="cell">Niedogrzanie najtrudniejszego pomieszczenia i uruchomienie droższego źródła pomocniczego.</div></div>
        <div class="rk-curve-table-row" role="row"><div class="rk-curve-table-label" data-label="Sytuacja" role="cell">Przepływy są nieprawidłowe</div><div data-label="Efekt" role="cell">Zmiana krzywej może przesunąć temperaturę całego domu, ale nie wyrówna dystrybucji.</div><div data-label="Ryzyko" role="cell">Przegrzanie poprawnych pomieszczeń w próbie dogrzania jednego słabego obiegu.</div></div>
      </div>

      <div class="rk-curve-answer"><span class="rk-curve-answer-label">Dlaczego nie dodajemy kalkulatora oszczędności?</span><p><strong>Rzeczywisty wynik zależy od modelu źródła, temperatur dolnego i górnego źródła, pogody, taryfy, modulacji, hydrauliki, nastaw oraz zachowania użytkowników. Kalkulator mnożący rachunek przez stałe 2,5% na każdy stopień tworzyłby pozorną dokładność.</strong></p></div>
    </section>

    <section class="rk-curve-section" id="rk-curve-errors">
      <span class="rk-curve-eyebrow">Błędy, które zniekształcają wynik strojenia</span>
      <h2 class="rk-curve-section-title">Najczęstsze błędy podczas strojenia krzywej</h2>
      <div class="rk-curve-mistakes">
        <div class="rk-curve-mistake"><span class="rk-curve-mistake-icon">!</span><div><strong>Kopiowanie numeru z internetu</strong><p>Nie wiadomo, czy urządzenie używa tej samej skali, punktu bazowego i ograniczeń.</p></div></div>
        <div class="rk-curve-mistake"><span class="rk-curve-mistake-icon">!</span><div><strong>Zmiana kilku ustawień jednocześnie</strong><p>Nie da się ustalić, czy zadziałało nachylenie, offset, przepływ, harmonogram czy termostat.</p></div></div>
        <div class="rk-curve-mistake"><span class="rk-curve-mistake-icon">!</span><div><strong>Ocena po kilku godzinach</strong><p>Posadzka i budynek mogą nadal reagować na poprzedni stan oraz zmianę pogody.</p></div></div>
        <div class="rk-curve-mistake"><span class="rk-curve-mistake-icon">!</span><div><strong>Strojenie przy pozamykanych pętlach</strong><p>Termostaty zasłaniają reakcję obiegu i jednocześnie zmieniają przepływ widziany przez źródło.</p></div></div>
        <div class="rk-curve-mistake"><span class="rk-curve-mistake-icon">!</span><div><strong>Brak zapisu ustawień</strong><p>Po kilku korektach użytkownik nie zna wartości bazowych i nie potrafi wrócić do stabilnego stanu.</p></div></div>
        <div class="rk-curve-mistake"><span class="rk-curve-mistake-icon">!</span><div><strong>Korygowanie pod jeden pokój</strong><p>Problem lokalny może wynikać z projektu pętli, przepływu, okładziny albo wyjątkowych strat.</p></div></div>
        <div class="rk-curve-mistake"><span class="rk-curve-mistake-icon">!</span><div><strong>Ignorowanie limitów materiałów</strong><p>Podnoszenie temperatury bez sprawdzenia podłogi i okładziny może naruszyć ograniczenia techniczne.</p></div></div>
        <div class="rk-curve-mistake"><span class="rk-curve-mistake-icon">!</span><div><strong>Mylenie zadanej z rzeczywistą</strong><p>Temperatura na ekranie, zasilaniu, powrocie i powierzchni podłogi opisuje różne miejsca układu.</p></div></div>
      </div>
    </section>

    <section class="rk-curve-section rk-curve-section-soft" id="rk-curve-checklist">
      <span class="rk-curve-eyebrow">Przed pierwszą i każdą kolejną korektą</span>
      <h2 class="rk-curve-section-title">Lista kontrolna ustawienia krzywej</h2>
      <p class="rk-curve-lead">Jeśli brakuje kilku odpowiedzi, najpierw uzupełnij dokumentację lub diagnostykę. Krzywa nie powinna być pierwszym narzędziem do naprawiania każdego problemu z ogrzewaniem.</p>

      <div class="rk-curve-checklist">
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Model i instrukcja regulatora</strong><br>Czy wiadomo, jak urządzenie definiuje krzywą, poziom i punkty?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Temperatura obliczeniowa</strong><br>Czy pochodzi z projektu dla lokalizacji i przyjętej metody?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Projektowa temperatura zasilania</strong><br>Czy wynika z OZC, konstrukcji podłogi i wymaganej mocy?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Minimum i maksimum</strong><br>Czy ograniczenia są zgodne z podłogą, okładziną i źródłem?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Granica grzania</strong><br>Czy jej wpływ na komfort w okresie przejściowym został sprawdzony?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Czujnik zewnętrzny</strong><br>Czy jest zamontowany i odczytuje zgodnie z instrukcją?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Przepływy pętli</strong><br>Czy odpowiadają wartościom projektowym przy znanym stanie zaworów?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Pompa obiegowa</strong><br>Czy jej tryb i punkt pracy odpowiadają aktualnej hydraulice?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Termostaty i siłowniki</strong><br>Czy ich wpływ jest znany i kontrolowany podczas obserwacji?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Pomieszczenie referencyjne</strong><br>Czy pomiar nie jest chwilowo zakłócany słońcem lub urządzeniami?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Stabilne warunki</strong><br>Czy od ostatniej korekty upłynął czas odpowiedni dla konstrukcji?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Jedna zmiana naraz</strong><br>Czy pozostałe parametry pozostają niezmienione podczas testu?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Dziennik obserwacji</strong><br>Czy zapisujesz pogodę, temperatury, zmieniony parametr i czas reakcji?</div></div>
        <div class="rk-curve-checklist-item"><span>✓</span><div><strong>Możliwość powrotu</strong><br>Czy zapisano stan bazowy i wiadomo, jak bezpiecznie go przywrócić?</div></div>
      </div>
    </section>

    <section class="rk-curve-section" id="rk-curve-conclusions">
      <span class="rk-curve-eyebrow">Wnioski projektanta</span>
      <h2 class="rk-curve-section-title">Wnioski — jak znaleźć najniższą skuteczną krzywą?</h2>
      <p class="rk-curve-lead">Najpierw wyznacz projektowy punkt pracy podłogi, potem odwzoruj go w logice konkretnego sterownika, sprawdź przepływy i dopiero wtedy wykonuj niewielkie korekty. Najniższa skuteczna krzywa to taka, która zapewnia komfort również w trudnych warunkach, bez przekraczania ograniczeń i bez destabilizowania źródła.</p>

      <div class="rk-curve-grid-3">
        <article class="rk-curve-card"><h3>Projekt wyznacza granice</h3><p>OZC, geometria i okładzina określają, jaką moc podłoga może oddać przy dopuszczalnych temperaturach.</p></article>
        <article class="rk-curve-card"><h3>Sterownik odwzorowuje zależność</h3><p>Nachylenie, offset albo dwa punkty są tylko sposobem zapisania wymaganej charakterystyki w konkretnym urządzeniu.</p></article>
        <article class="rk-curve-card"><h3>Budynek pozwala ją dostroić</h3><p>Obserwacja w stabilnych warunkach pomaga skorygować model, ale nie zastępuje równoważenia i danych projektowych.</p></article>
      </div>

      <div class="rk-curve-answer"><span class="rk-curve-answer-label">Reguła końcowa</span><p><strong>Nie szukaj w internecie jednej „najlepszej krzywej do podłogówki”. Szukaj wymaganych temperatur wody dla własnego budynku, sprawdź sposób ich wprowadzania w sterowniku i zmieniaj tylko jeden parametr po uzyskaniu miarodajnej obserwacji.</strong></p></div>

      <div class="rk-curve-cta">
        <div class="rk-curve-cta-title">Zaprojektuj temperaturę wody, pętle i przepływy jako jeden układ</div>
        <p>Kompletny projekt ogrzewania podłogowego łączy obciążenia pomieszczeń, powierzchnie czynne, rozstaw, długości pętli, przepływy, opory, nastawy rozdzielacza i projektową temperaturę zasilania. Dzięki temu krzywa startuje od danych, a nie od losowego numeru.</p>
        <a class="rk-curve-cta-button" href="https://projekt-ogrzewania.pl/produkt/projekt-instalacji-ogrzewania-podlogowego-podlogowki/">Zamów kompletny projekt ogrzewania podłogowego</a>
        <small class="rk-curve-link-disclosure">Odnośnik prowadzi do płatnej usługi projektowej autora poradnika.</small>
      </div>
    </section>

    <section class="rk-curve-section" id="rk-curve-references">
      <span class="rk-curve-eyebrow">Podstawa techniczna i granice narzędzia</span>
      <h2 class="rk-curve-section-title">Źródła i zakres odpowiedzialności</h2>
      <p class="rk-curve-lead">Normy dotyczące systemów płaszczyznowych opisują wyznaczanie mocy, projektowanie i wymiarowanie, a norma automatyki budynkowej porządkuje funkcje sterowania. Nie ustanawiają jednego nachylenia, offsetu, czasu oczekiwania ani temperatury zasilania dla każdego domu.</p>

      <div class="rk-curve-source-grid">
        <article class="rk-curve-source-card"><a href="https://www.iso.org/standard/74683.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-2:2021 — określanie mocy systemów płaszczyznowych</a><p>Oficjalna karta normy opisującej procedury wyznaczania strumienia ciepła, temperatur i zależności charakterystycznych wodnych systemów powierzchniowych.</p></article>
        <article class="rk-curve-source-card"><a href="https://www.iso.org/standard/74684.html" target="_blank" rel="nofollow noopener noreferrer">ISO 11855-3:2021 — projektowanie i wymiarowanie</a><p>Oficjalna karta normy ustanawiającej metodę projektowania oraz wymiarowania wbudowanych systemów ogrzewania i chłodzenia.</p></article>
        <article class="rk-curve-source-card"><a href="https://www.iso.org/standard/65883.html" target="_blank" rel="nofollow noopener noreferrer">ISO 52120-1:2021 — automatyka budynkowa i efektywność energetyczna</a><p>Oficjalna karta normy porządkującej funkcje regulacji oraz metody oceny ich wpływu. We wrześniu 2026 r. dokument jest oznaczony przez ISO jako przeznaczony do rewizji.</p></article>
        <article class="rk-curve-source-card"><a href="https://library.mitsubishielectric.co.uk/pdf/book/Ecodan_FTC6_PAC-IF07_1-3_B-E_Instruction_Book_BT79R180H01" target="_blank" rel="nofollow noopener noreferrer">Mitsubishi Electric — dokumentacja regulatora Ecodan FTC6</a><p>Przykład oficjalnej instrukcji konkretnego systemu. Nastawy, tryby, ograniczenia i sekwencje należy zawsze sprawdzać dla dokładnego modelu urządzenia.</p></article>
      </div>

      <div class="rk-curve-responsibility">
        <p><strong>Zakres odpowiedzialności:</strong> artykuł, wykres i grafika mają charakter edukacyjny. Nie są projektem wykonawczym, konfiguracją serwisową, instrukcją producenta, pomiarem instalacji ani gwarancją temperatury, sprawności lub oszczędności.</p>
        <p><strong>Model wykresu:</strong> narzędzie korzysta z liniowej interpolacji dwóch punktów i jawnych ograniczeń. Algorytm rzeczywistego regulatora może być nieliniowy, używać uśredniania, korekty pokojowej, prognozy, adaptacji lub innych funkcji.</p>
        <p><strong>Aktualność:</strong> stan techniczny materiału zweryfikowano 10 września 2026 r. Status norm i dokumentacja urządzeń mogą ulec zmianie.</p>
      </div>
    </section>

    <section class="rk-curve-section rk-curve-section-soft" id="rk-curve-faq">
      <span class="rk-curve-eyebrow">Najczęstsze pytania inwestorów i instalatorów</span>
      <h2 class="rk-curve-section-title">FAQ — krzywa grzewcza w podłogówce</h2>
      <div class="rk-curve-faq">
        <details><summary>Jaka krzywa grzewcza jest najlepsza do ogrzewania podłogowego?</summary><div class="rk-curve-faq-answer"><p>Nie istnieje jedna najlepsza wartość. Krzywa musi odpowiadać projektowemu obciążeniu budynku, mocy podłogi, okładzinie, przepływom i algorytmowi konkretnego sterownika. Wartość startowa z instrukcji wymaga późniejszej weryfikacji.</p></div></details>
        <details><summary>Co oznacza krzywa grzewcza 0,3?</summary><div class="rk-curve-faq-answer"><p>Bez wskazania producenta i pozostałych ustawień nie da się tego jednoznacznie określić. Liczba może opisywać nachylenie według własnego modelu urządzenia, a wynik zależy również od poziomu, temperatury bazowej, minimum, maksimum i wpływu pokojowego.</p></div></details>
        <details><summary>Jak ustawić krzywą grzewczą przy pompie ciepła i podłogówce?</summary><div class="rk-curve-faq-answer"><p>Należy zacząć od projektowej temperatury zasilania przy obliczeniowej temperaturze zewnętrznej, odwzorować ją zgodnie z instrukcją regulatora, sprawdzić przepływy i obserwować budynek w stabilnych warunkach. Korekty wykonuje się pojedynczo i z zachowaniem wymagań urządzenia.</p></div></details>
        <details><summary>Czym różni się nachylenie od przesunięcia krzywej?</summary><div class="rk-curve-faq-answer"><p>Nachylenie zmienia różnicę pomiędzy zimną i łagodną częścią charakterystyki. Przesunięcie podnosi albo obniża cały przebieg w przybliżeniu równolegle. Dokładny sposób realizacji obu funkcji trzeba sprawdzić w instrukcji sterownika.</p></div></details>
        <details><summary>Kiedy zwiększyć nachylenie krzywej grzewczej?</summary><div class="rk-curve-faq-answer"><p>Można je analizować, gdy przy łagodnej pogodzie jest poprawnie, a niedobór pojawia się wraz z silnym mrozem. Najpierw trzeba wykluczyć brak mocy podłogi, niewłaściwy przepływ, ograniczenie źródła, błędny czujnik i zamknięte pętle.</p></div></details>
        <details><summary>Kiedy zmienić przesunięcie krzywej?</summary><div class="rk-curve-faq-answer"><p>Przesunięcie może być właściwym kierunkiem, gdy podobne odchylenie temperatury występuje w szerokim zakresie pogody. Nie należy jednak podawać uniwersalnej korekty w kelwinach bez obserwacji i znajomości algorytmu urządzenia.</p></div></details>
        <details><summary>Dlaczego podłoga jest chłodna w dotyku, mimo że w domu jest ciepło?</summary><div class="rk-curve-faq-answer"><p>W dobrze ocieplonym budynku podłoga może potrzebować niewielkiej nadwyżki temperatury ponad pomieszczenie. Jeżeli bilans cieplny jest zachowany, powierzchnia nie musi być wyraźnie ciepła w dotyku. Odczucie nie jest pomiarem mocy instalacji.</p></div></details>
        <details><summary>Czy można ustawić osobną krzywą dla łazienki?</summary><div class="rk-curve-faq-answer"><p>Pojedyncza pętla na wspólnym obiegu zwykle korzysta z tej samej temperatury zasilania. Oddzielna krzywa wymaga niezależnie regulowanego obiegu lub funkcji przewidzianej przez system. Komfort łazienki powinien być uwzględniony przede wszystkim w projekcie powierzchni i mocy.</p></div></details>
        <details><summary>Czy termostaty pokojowe wykluczają regulację pogodową?</summary><div class="rk-curve-faq-answer"><p>Nie. Mogą pełnić funkcję korekty, ograniczenia lokalnego albo sygnału zapotrzebowania. Trzeba jednak sprawdzić, czy zamykanie pętli nie narusza wymaganego przepływu i czy termostaty nie maskują zawyżonej krzywej.</p></div></details>
        <details><summary>Jak długo czekać po zmianie krzywej?</summary><div class="rk-curve-faq-answer"><p>Nie ma jednego czasu dla każdej podłogi. Należy uwzględnić bezwładność konstrukcji i stabilność warunków. Miarodajna ocena wymaga, aby efekt poprzedniej nastawy nie mieszał się z krótką zmianą pogody, nasłonecznienia lub sposobu użytkowania.</p></div></details>
      </div>
    </section>

    <section class="rk-curve-author" id="rk-curve-author">
      <span class="rk-curve-eyebrow">Opracowanie eksperckie</span>
      <h2 class="rk-curve-author-title">Autor i weryfikacja merytoryczna</h2>
      <div class="rk-curve-author-layout">
        <aside class="rk-curve-author-side">
          <div class="rk-curve-author-photo"><img src="https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp" alt="Robert Kucharski — projektant instalacji sanitarnych i specjalista HVAC" width="400" height="400" loading="lazy" decoding="async"></div>
          <div class="rk-curve-author-name"><a href="https://projekt-ogrzewania.pl/author/admin3399/">Robert Kucharski</a></div>
          <p class="rk-curve-author-role">Projektant instalacji sanitarnych<br>specjalista HVAC i ogrzewania podłogowego</p>
          <div class="rk-curve-author-social" aria-label="Profile autora">
            <a href="https://www.linkedin.com/in/robert-kucharski-38069b48/" target="_blank" rel="nofollow noopener noreferrer me" aria-label="LinkedIn Roberta Kucharskiego">in</a>
            <a href="https://www.facebook.com/projektogrzewaniapl" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Facebook Projekt Ogrzewania">f</a>
            <a href="https://x.com/Projekt_HVAC" target="_blank" rel="nofollow noopener noreferrer me" aria-label="Profil Projekt HVAC w serwisie X">X</a>
          </div>
        </aside>
        <div class="rk-curve-author-main">
          <div class="rk-curve-author-quote">„Krzywa grzewcza nie jest numerem do skopiowania. Jest sposobem odwzorowania temperatur wody, których potrzebuje konkretny budynek i konkretnie zaprojektowana podłoga.”</div>
          <p>Robert Kucharski opracowuje projekty ogrzewania podłogowego, obliczenia cieplne i hydrauliczne oraz materiały techniczne dla inwestorów i wykonawców. Łączy obciążenia pomieszczeń, konstrukcję przegród, powierzchnie czynne, rozstawy, temperatury wody, przepływy i wymagania źródła ciepła.</p>
          <p>W tej aktualizacji usunięto uniwersalne nachylenia przypisane do klas budynku, stały procent poprawy SCOP, uproszczone obliczenie temperatury z powierzchni, jedną liczbę przepływu dla pomp ciepła oraz obowiązkowy bufor przy sterowaniu strefowym.</p>
          <p>Interaktywny wykres jawnie wykorzystuje dwa punkty i ograniczenia, dzięki czemu nie udaje algorytmu konkretnej marki. Grafika edukacyjna rozdziela pomiar pogody, obliczenie wartości zadanej, pracę źródła, hydraulikę, akumulację podłogi i efekt w pomieszczeniu.</p>
          <p>Autor publikuje również w portalach <a href="https://remont.biz.pl/" target="_blank" rel="nofollow noopener noreferrer">Remont.biz.pl</a> i <a href="https://sobir.pl/" target="_blank" rel="nofollow noopener noreferrer">Sobir.pl</a>. <a href="https://projekt-ogrzewania.pl/author/admin3399/">Zobacz pozostałe artykuły Roberta Kucharskiego</a>.</p>
          <div class="rk-curve-author-facts">
            <div class="rk-curve-author-fact"><strong>Zakres</strong>ogrzewanie podłogowe, regulacja pogodowa i hydraulika</div>
            <div class="rk-curve-author-fact"><strong>Metoda pracy</strong>OZC, projektowe temperatury, przepływy i dokumentacja urządzeń</div>
            <div class="rk-curve-author-fact"><strong>Aktualizacja</strong>stan techniczny materiału sprawdzony 10 września 2026 r.</div>
          </div>
        </div>
      </div>
    </section>
  </div>
</article>


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

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

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

  function numberValue(id, fallback) {
    var element = document.getElementById(id);
    var value;
    if (!element) {
      return fallback;
    }
    value = parseFloat(element.value);
    if (!Number.isFinite(value)) {
      return fallback;
    }
    return value;
  }

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

  function formatNumber(value, digits) {
    return value.toLocaleString("pl-PL", {
      minimumFractionDigits: digits,
      maximumFractionDigits: digits
    });
  }

  function formatTemperature(value, digits) {
    var text = formatNumber(value, digits);
    return text.replace("-", "−") + "°C";
  }

  function setPressed(buttons, activeButton) {
    buttons.forEach(function (button) {
      button.setAttribute("aria-pressed", button === activeButton ? "true" : "false");
    });
  }

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

  function getCurveData() {
    return {
      coldOutdoor: numberValue("rk-curve-cold-outdoor", -20),
      coldSupply: numberValue("rk-curve-cold-supply", 35),
      mildOutdoor: numberValue("rk-curve-mild-outdoor", 10),
      mildSupply: numberValue("rk-curve-mild-supply", 24),
      minSupply: numberValue("rk-curve-min-supply", 22),
      maxSupply: numberValue("rk-curve-max-supply", 40),
      heatingLimit: numberValue("rk-curve-heating-limit", 16),
      currentOutdoor: numberValue("rk-curve-current-outdoor", -10)
    };
  }

  function adjustedSupplies(data, mode) {
    var cold = data.coldSupply;
    var mild = data.mildSupply;
    if (mode === "steeper") {
      cold += 2;
    }
    if (mode === "flatter") {
      cold -= 2;
    }
    if (mode === "up") {
      cold += 2;
      mild += 2;
    }
    if (mode === "down") {
      cold -= 2;
      mild -= 2;
    }
    return { cold: cold, mild: mild };
  }

  function rawCurveValue(outdoor, data, mode) {
    var supplies = adjustedSupplies(data, mode);
    var span = data.mildOutdoor - data.coldOutdoor;
    var ratio = (outdoor - data.coldOutdoor) / span;
    return supplies.cold + ratio * (supplies.mild - supplies.cold);
  }

  function curveValue(outdoor, data, mode) {
    var raw = rawCurveValue(outdoor, data, mode);
    var limited = clamp(raw, data.minSupply, data.maxSupply);
    var state = "linear";
    if (raw < data.minSupply) {
      state = "minimum";
    }
    if (raw > data.maxSupply) {
      state = "maximum";
    }
    if (outdoor >= data.heatingLimit) {
      state = "off";
    }
    return {
      raw: raw,
      limited: limited,
      state: state,
      off: state === "off"
    };
  }

  function stateLabel(state) {
    if (state === "minimum") {
      return "Ograniczenie minimum";
    }
    if (state === "maximum") {
      return "Ograniczenie maksimum";
    }
    if (state === "off") {
      return "Ogrzewanie wyłączone";
    }
    return "Zakres liniowy";
  }

  function modeLabel(mode) {
    if (mode === "steeper") {
      return "większe nachylenie";
    }
    if (mode === "flatter") {
      return "mniejsze nachylenie";
    }
    if (mode === "up") {
      return "przesunięcie +2 K";
    }
    if (mode === "down") {
      return "przesunięcie −2 K";
    }
    return "krzywa bazowa";
  }

  function renderChart(data) {
    var svg = document.getElementById("rk-curve-svg");
    var left = 68;
    var right = 770;
    var top = 28;
    var bottom = 365;
    var xMinimum = Math.min(-25, Math.floor(data.coldOutdoor / 5) * 5);
    var xMaximum = 20;
    var yMinimum = Math.min(15, Math.floor((data.minSupply - 3) / 5) * 5);
    var highestSupply = Math.max(data.maxSupply, data.coldSupply + 4, data.mildSupply + 4);
    var yMaximum = Math.max(45, Math.ceil(highestSupply / 5) * 5);
    var pathEnd = Math.min(xMaximum, data.heatingLimit);
    var x;
    var y;

    function chartX(value) {
      return left + (value - xMinimum) / (xMaximum - xMinimum) * (right - left);
    }

    function chartY(value) {
      return bottom - (value - yMinimum) / (yMaximum - yMinimum) * (bottom - top);
    }

    function addPath(mode, cssClass) {
      var points = [];
      var outdoor = xMinimum;
      var value;
      while (outdoor < pathEnd) {
        value = clamp(rawCurveValue(outdoor, data, mode), data.minSupply, data.maxSupply);
        points.push((points.length === 0 ? "M" : "L") + chartX(outdoor).toFixed(2) + " " + chartY(value).toFixed(2));
        outdoor += 0.5;
      }
      value = clamp(rawCurveValue(pathEnd, data, mode), data.minSupply, data.maxSupply);
      points.push((points.length === 0 ? "M" : "L") + chartX(pathEnd).toFixed(2) + " " + chartY(value).toFixed(2));
      svg.appendChild(svgElement("path", { "class": cssClass, d: points.join(" ") }));
    }

    function addPoint(outdoor, supply, cssClass, radius) {
      if (outdoor < xMinimum) {
        return;
      }
      if (outdoor > xMaximum) {
        return;
      }
      svg.appendChild(svgElement("circle", {
        "class": cssClass,
        cx: chartX(outdoor),
        cy: chartY(supply),
        r: radius
      }));
    }

    if (!svg) {
      return;
    }
    svg.replaceChildren();
    svg.appendChild(svgElement("title", { id: "rk-curve-svg-title" }, "Interaktywny wykres krzywej grzewczej"));
    svg.appendChild(svgElement("desc", { id: "rk-curve-svg-desc" }, "Bazowa i opcjonalna porównawcza temperatura zasilania w zależności od temperatury zewnętrznej."));

    x = Math.ceil(xMinimum / 5) * 5;
    while (x <= xMaximum) {
      svg.appendChild(svgElement("line", {
        "class": "rk-curve-chart-grid-line",
        x1: chartX(x),
        y1: top,
        x2: chartX(x),
        y2: bottom
      }));
      svg.appendChild(svgElement("text", {
        "class": "rk-curve-chart-tick",
        x: chartX(x),
        y: bottom + 23,
        "text-anchor": "middle"
      }, String(x).replace("-", "−")));
      x += 5;
    }

    y = Math.ceil(yMinimum / 5) * 5;
    while (y <= yMaximum) {
      svg.appendChild(svgElement("line", {
        "class": "rk-curve-chart-grid-line",
        x1: left,
        y1: chartY(y),
        x2: right,
        y2: chartY(y)
      }));
      svg.appendChild(svgElement("text", {
        "class": "rk-curve-chart-tick",
        x: left - 12,
        y: chartY(y) + 4,
        "text-anchor": "end"
      }, String(y)));
      y += 5;
    }

    svg.appendChild(svgElement("line", {
      "class": "rk-curve-chart-axis",
      x1: left,
      y1: bottom,
      x2: right,
      y2: bottom
    }));
    svg.appendChild(svgElement("line", {
      "class": "rk-curve-chart-axis",
      x1: left,
      y1: top,
      x2: left,
      y2: bottom
    }));

    if (data.heatingLimit >= xMinimum) {
      if (data.heatingLimit <= xMaximum) {
        svg.appendChild(svgElement("line", {
          "class": "rk-curve-limit-line",
          x1: chartX(data.heatingLimit),
          y1: top,
          x2: chartX(data.heatingLimit),
          y2: bottom
        }));
        svg.appendChild(svgElement("text", {
          "class": "rk-curve-limit-label",
          x: chartX(data.heatingLimit) - 7,
          y: top + 16,
          "text-anchor": "end"
        }, "granica grzania"));
      }
    }

    svg.appendChild(svgElement("line", {
      "class": "rk-curve-current-guide",
      x1: chartX(clamp(data.currentOutdoor, xMinimum, xMaximum)),
      y1: top,
      x2: chartX(clamp(data.currentOutdoor, xMinimum, xMaximum)),
      y2: bottom
    }));

    addPath("base", "rk-curve-system-path");
    if (compareMode !== "base") {
      addPath(compareMode, "rk-curve-device-path");
    }

    addPoint(data.coldOutdoor, clamp(data.coldSupply, data.minSupply, data.maxSupply), "rk-curve-design-point", 6);
    addPoint(data.mildOutdoor, clamp(data.mildSupply, data.minSupply, data.maxSupply), "rk-curve-design-point", 6);

    var currentBase = curveValue(data.currentOutdoor, data, "base");
    if (!currentBase.off) {
      addPoint(data.currentOutdoor, currentBase.limited, "rk-curve-operating-point", 7);
    }

    svg.appendChild(svgElement("text", {
      "class": "rk-curve-chart-label",
      x: (left + right) / 2,
      y: 415,
      "text-anchor": "middle"
    }, "Temperatura zewnętrzna [°C]"));
    svg.appendChild(svgElement("text", {
      "class": "rk-curve-chart-label",
      x: 17,
      y: (top + bottom) / 2,
      "text-anchor": "middle",
      transform: "rotate(-90 17 " + (top + bottom) / 2 + ")"
    }, "Temperatura zasilania [°C]"));
  }

  function renderCurve() {
    var data = getCurveData();
    var status = document.getElementById("rk-curve-chart-status");
    var currentLabel = document.getElementById("rk-curve-current-label");
    var baseResult = curveValue(data.currentOutdoor, data, "base");
    var compareResult = curveValue(data.currentOutdoor, data, compareMode);
    var resultCompare = document.getElementById("rk-curve-result-compare");
    var compareLegend = document.getElementById("rk-curve-compare-legend");
    var equationCopy = document.getElementById("rk-curve-equation-copy");
    var valid = true;

    if (data.coldOutdoor >= data.mildOutdoor) {
      valid = false;
    }
    if (data.minSupply > data.maxSupply) {
      valid = false;
    }

    if (currentLabel) {
      currentLabel.textContent = formatTemperature(data.currentOutdoor, 0);
    }
    document.getElementById("rk-curve-result-outdoor").textContent = formatTemperature(data.currentOutdoor, 0);

    status.classList.remove("is-bad");
    status.classList.remove("is-warning");
    status.classList.remove("is-good");

    if (!valid) {
      document.getElementById("rk-curve-result-base").textContent = "—";
      resultCompare.textContent = "—";
      document.getElementById("rk-curve-result-state").textContent = "Popraw dane";
      equationCopy.textContent = "Zimny punkt zewnętrzny musi być niższy od łagodnego, a minimum zasilania nie może przekraczać maksimum.";
      status.classList.add("is-bad");
      status.textContent = "Nie można zbudować charakterystyki. Sprawdź kolejność temperatur zewnętrznych oraz ograniczenia temperatury zasilania.";
      return;
    }

    if (baseResult.off) {
      document.getElementById("rk-curve-result-base").textContent = "wyłączone";
    } else {
      document.getElementById("rk-curve-result-base").textContent = formatTemperature(baseResult.limited, 1);
    }
    document.getElementById("rk-curve-result-state").textContent = stateLabel(baseResult.state);

    if (compareMode === "base") {
      resultCompare.textContent = "—";
      compareLegend.classList.add("rk-curve-is-hidden");
    } else {
      compareLegend.classList.remove("rk-curve-is-hidden");
      if (compareResult.off) {
        resultCompare.textContent = "wyłączone";
      } else {
        resultCompare.textContent = formatTemperature(compareResult.limited, 1);
      }
    }

    if (baseResult.off) {
      equationCopy.textContent = "Analizowana temperatura osiągnęła granicę grzania. Model oznacza obieg jako wyłączony; rzeczywisty regulator może stosować histerezę, uśrednianie lub inną logikę.";
    } else {
      equationCopy.textContent = "Interpolacja daje " + formatTemperature(baseResult.raw, 1) + ". Po zastosowaniu minimum " + formatTemperature(data.minSupply, 1) + " i maksimum " + formatTemperature(data.maxSupply, 1) + " wynik wynosi " + formatTemperature(baseResult.limited, 1) + ".";
    }

    if (data.coldSupply <= data.mildSupply) {
      status.classList.add("is-warning");
      status.textContent = "Dane tworzą nietypową charakterystykę: temperatura zasilania nie spada wraz z ociepleniem. Sprawdź wpisane punkty i instrukcję regulatora.";
    } else {
      status.classList.add("is-good");
      status.textContent = "Dane tworzą malejącą charakterystykę. Wybrany wariant „" + modeLabel(compareMode) + "” pokazuje zmianę geometrii, a nie gotową nastawę konkretnej marki.";
    }

    renderChart(data);
  }

  var systemStates = {
    colder: {
      resultTitle: "Spadek temperatury zewnętrznej zmienia wartość zadaną wody, a nie temperaturę pokoju bezpośrednio.",
      resultCopy: "Efekt przechodzi przez źródło, przepływ i akumulującą podłogę. Regulator może odpowiedzieć od razu, lecz nowa równowaga cieplna budynku wymaga czasu.",
      components: {
        sensor: { value: "Rejestruje spadek temperatury", copy: "Mierzy warunki przy elewacji. Nie mierzy strat budynku ani temperatury posadzki.", active: true },
        controller: { value: "Wyznacza wyższą wartość zadaną", copy: "Korzysta z krzywej, ograniczeń i dodatkowych korekt. Nie naprawia błędnej hydrauliki.", active: true },
        source: { value: "Podąża do nowej temperatury", copy: "Moduluje lub cyklicznie pracuje według własnej automatyki, dostępnej mocy i zabezpieczeń.", active: true },
        flow: { value: "Transportują energię", copy: "Rozdział wody zależy od pompy, oporów i nastaw pętli, a nie od samej linii na wykresie.", active: true },
        floor: { value: "Zmienia emisję z opóźnieniem", copy: "Woda ogrzewa konstrukcję, która akumuluje energię i przekazuje ją do pomieszczenia.", active: true },
        room: { value: "Dąży do nowej równowagi", copy: "Temperatura zależy jednocześnie od podłogi, strat, wentylacji, słońca i zysków wewnętrznych.", active: true }
      }
    },
    sun: {
      resultTitle: "Pogodówka nie widzi bezpośrednio słońca wpadającego do salonu.",
      resultCopy: "Lokalny zysk może przegrzać jedno pomieszczenie mimo poprawnej krzywej dla całego obiegu. Reakcję zapewnia bilans budynku, ewentualna korekta pokojowa lub sterowanie strefowe, lecz podłoga nadal oddaje zgromadzone ciepło.",
      components: {
        sensor: { value: "Mierzy pogodę przy elewacji", copy: "Nie rozpoznaje bezpośrednio lokalnego nasłonecznienia za szybą ani pracy urządzeń w pokoju.", active: false },
        controller: { value: "Utrzymuje wynik krzywej", copy: "Bez informacji z pomieszczenia nie ma podstawy, aby skorygować wyłącznie salon.", active: false },
        source: { value: "Obsługuje aktywny obieg", copy: "Może nadal dostarczać ciepło do innych pomieszczeń, które nie otrzymują zysków słonecznych.", active: false },
        flow: { value: "Zależą od zaworów i pompy", copy: "Przepływ salonu zmieni się dopiero po działaniu właściwego regulatora lub zaworu.", active: false },
        floor: { value: "Oddaje zgromadzoną energię", copy: "Ograniczenie nowego dopływu ciepła nie usuwa energii, która znajduje się już w konstrukcji.", active: true },
        room: { value: "Otrzymuje dodatkowy zysk", copy: "Temperatura może wzrosnąć od słońca mimo niezmienionej temperatury zewnętrznej.", active: true }
      }
    },
    high: {
      resultTitle: "Zbyt wysoka krzywa dostarcza nadmierny parametr do całego obiegu.",
      resultCopy: "Termostaty mogą ograniczać objaw przez zamykanie pętli, ale nie obniżają samej temperatury wytwarzanej przez źródło. Warto najpierw potwierdzić, czy przegrzewanie ma charakter ogólny i powtarzalny.",
      components: {
        sensor: { value: "Pomiar może być prawidłowy", copy: "Poprawny odczyt zewnętrzny nie gwarantuje, że nachylenie, przesunięcie i limity są dobrze dobrane.", active: false },
        controller: { value: "Wyznacza za wysoką wartość", copy: "Błąd może dotyczyć poziomu, nachylenia, punktu bazowego, minimum albo dodatkowej korekty.", active: true },
        source: { value: "Podgrzewa wodę wyżej niż potrzeba", copy: "Rzeczywisty skutek zależy od modulacji, ograniczeń i sposobu pracy urządzenia.", active: true },
        flow: { value: "Rozprowadzają cieplejszą wodę", copy: "Prawidłowe przepływy nie skompensują trwale zawyżonego parametru dla całego obiegu.", active: true },
        floor: { value: "Akumuluje więcej energii", copy: "Po korekcie krzywej konstrukcja potrzebuje czasu, aby oddać wcześniejszy nadmiar.", active: true },
        room: { value: "Przegrzewa się szerzej", copy: "Jeżeli objaw występuje w wielu pomieszczeniach przy różnej pogodzie, analizuje się przesunięcie całej krzywej.", active: true }
      }
    },
    zones: {
      resultTitle: "Zamykanie pętli zmienia hydraulikę, ale nie przelicza automatycznie krzywej grzewczej.",
      resultCopy: "Pompa i źródło widzą mniejszy czynny układ. Trzeba sprawdzić minimalny przepływ, najmniejszy odbiór mocy, logikę pompy oraz wymagania urządzenia zamiast zakładać obowiązkowy schemat dla każdego domu.",
      components: {
        sensor: { value: "Odczyt pogody bez zmian", copy: "Stan siłowników nie zmienia mierzonej temperatury zewnętrznej.", active: false },
        controller: { value: "Krzywa może pozostać taka sama", copy: "Oddzielna automatyka strefowa zamyka zawory, o ile nie przekazuje nadrzędnej korekty do źródła.", active: false },
        source: { value: "Ma mniejszy odbiór do obsługi", copy: "Minimalna moc, objętość wody, przepływ i sekwencja wyłączenia wymagają weryfikacji.", active: true },
        flow: { value: "Punkt pracy się przesuwa", copy: "Rzeczywisty przepływ zależy od trybu pompy, charakterystyki zaworów i oporów otwartych gałęzi.", active: true },
        floor: { value: "Czynne zostają wybrane strefy", copy: "Zamknięte podłogi nadal przez pewien czas oddają wcześniej zgromadzone ciepło.", active: true },
        room: { value: "Temperatury reagują nierównocześnie", copy: "Wymiana ciepła między pokojami oraz bezwładność ograniczają szybkość i skalę różnic.", active: true }
      }
    }
  };

  function renderSystem(key) {
    var state = systemStates[key];
    var result = document.getElementById("rk-curve-system-result");
    if (!state) {
      return;
    }

    Object.keys(state.components).forEach(function (componentKey) {
      var card = root.querySelector('[data-rk-curve-component="' + componentKey + '"]');
      var value;
      var copy;
      var item = state.components[componentKey];
      if (!card) {
        return;
      }
      value = card.querySelector("[data-rk-curve-component-value]");
      copy = card.querySelector("[data-rk-curve-component-copy]");
      if (value) {
        value.textContent = item.value;
      }
      if (copy) {
        copy.textContent = item.copy;
      }
      card.classList.remove("is-active");
      card.classList.remove("is-muted");
      if (item.active) {
        card.classList.add("is-active");
      } else {
        card.classList.add("is-muted");
      }
    });

    if (result) {
      result.replaceChildren();
      var title = document.createElement("strong");
      var copy = document.createElement("p");
      title.textContent = state.resultTitle;
      copy.textContent = state.resultCopy;
      result.appendChild(title);
      result.appendChild(copy);
    }
  }

  var curveInputs = Array.prototype.slice.call(root.querySelectorAll("#rk-curve-chart-tool input"));
  curveInputs.forEach(function (input) {
    input.addEventListener("input", renderCurve);
    input.addEventListener("change", renderCurve);
  });

  var compareButtons = Array.prototype.slice.call(root.querySelectorAll("[data-rk-curve-mode]"));
  compareButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      compareMode = button.getAttribute("data-rk-curve-mode");
      setPressed(compareButtons, button);
      renderCurve();
    });
  });

  var systemButtons = Array.prototype.slice.call(root.querySelectorAll("[data-rk-curve-system]"));
  systemButtons.forEach(function (button) {
    button.addEventListener("click", function () {
      setPressed(systemButtons, button);
      renderSystem(button.getAttribute("data-rk-curve-system"));
    });
  });

  renderCurve();
  renderSystem("colder");
}());
</script>


<script type="application/ld+json">
{
  "@context": "https://schema.org",
  "@graph": [
    {
      "@type": "WebSite",
      "@id": "https://projekt-ogrzewania.pl/#website",
      "url": "https://projekt-ogrzewania.pl/",
      "name": "Projekt Ogrzewania",
      "description": "Profesjonalne projektowanie ogrzewania podłogowego i poradniki techniczne HVAC.",
      "inLanguage": "pl-PL",
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "potentialAction": {
        "@type": "SearchAction",
        "target": {
          "@type": "EntryPoint",
          "urlTemplate": "https://projekt-ogrzewania.pl/?s={search_term_string}"
        },
        "query-input": "required name=search_term_string"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://projekt-ogrzewania.pl/#organization",
      "name": "Projekt Ogrzewania",
      "url": "https://projekt-ogrzewania.pl/",
      "logo": {
        "@id": "https://projekt-ogrzewania.pl/#logo"
      },
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "sameAs": [
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "Organization",
      "@id": "https://remont.biz.pl/#organization",
      "name": "Remont.biz.pl",
      "url": "https://remont.biz.pl/",
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      }
    },
    {
      "@type": "Organization",
      "@id": "https://sobir.pl/#organization",
      "name": "Sobir.pl",
      "url": "https://sobir.pl/",
      "founder": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      }
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/#logo",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2024/09/Projekt-ogrzewania-logo-1.jpg",
      "width": 1024,
      "height": 1024,
      "caption": "Projekt Ogrzewania"
    },
    {
      "@type": "Person",
      "@id": "https://projekt-ogrzewania.pl/#robert-kucharski",
      "name": "Robert Kucharski",
      "url": "https://projekt-ogrzewania.pl/author/admin3399/",
      "image": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/04/PO-Robert-Kucharski.webp",
      "jobTitle": "Projektant instalacji sanitarnych i specjalista HVAC",
      "worksFor": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "knowsAbout": [
        "ogrzewanie podłogowe",
        "krzywa grzewcza",
        "sterowanie pogodowe",
        "pompy ciepła",
        "hydraulika instalacji",
        "projektowe obciążenie cieplne"
      ],
      "sameAs": [
        "https://www.linkedin.com/in/robert-kucharski-38069b48/",
        "https://www.facebook.com/projektogrzewaniapl",
        "https://x.com/Projekt_HVAC"
      ]
    },
    {
      "@type": "ImageObject",
      "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#primaryimage",
      "url": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/01/Krzywa-grzewcza-w-ogrzewaniu-podlogowym.webp",
      "contentUrl": "https://projekt-ogrzewania.pl/wp-content/uploads/2026/01/Krzywa-grzewcza-w-ogrzewaniu-podlogowym.webp",
      "width": 945,
      "height": 945,
      "caption": "Krzywa grzewcza w ogrzewaniu podłogowym",
      "representativeOfPage": true,
      "inLanguage": "pl-PL"
    },
    {
      "@type": "BreadcrumbList",
      "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#breadcrumb",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Projekt Ogrzewania",
          "item": "https://projekt-ogrzewania.pl/"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Poradniki",
          "item": "https://projekt-ogrzewania.pl/blog/"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Krzywa grzewcza w ogrzewaniu podłogowym",
          "item": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/"
        }
      ]
    },
    {
      "@type": "WebPage",
      "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#webpage",
      "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/",
      "name": "Krzywa grzewcza w ogrzewaniu podłogowym – jak ją ustawić i korygować bez zgadywania?",
      "description": "Krzywa grzewcza w ogrzewaniu podłogowym: sprawdź, jak ustawić nachylenie, przesunięcie i temperaturę zasilania oraz poprawnie stroić układ bez błędów.",
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/#website"
      },
      "breadcrumb": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#breadcrumb"
      },
      "primaryImageOfPage": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#primaryimage"
      },
      "mainEntity": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#article"
      },
      "datePublished": "2026-01-06T10:25:59+00:00",
      "dateModified": "2026-09-10",
      "inLanguage": "pl-PL",
      "potentialAction": {
        "@type": "ReadAction",
        "target": [
          "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/"
        ]
      }
    },
    {
      "@type": "TechArticle",
      "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#article",
      "mainEntityOfPage": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#webpage"
      },
      "headline": "Krzywa grzewcza w ogrzewaniu podłogowym – jak ją ustawić i korygować bez zgadywania?",
      "alternativeHeadline": "Nachylenie, przesunięcie, temperatura zasilania i strojenie pogodówki krok po kroku",
      "description": "Techniczny poradnik o wyznaczaniu, wprowadzaniu i strojeniu krzywej grzewczej podłogówki z interaktywnym wykresem dwóch punktów i modułową grafiką pracy systemu.",
      "image": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#primaryimage"
      },
      "author": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "publisher": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "datePublished": "2026-01-06T10:25:59+00:00",
      "dateModified": "2026-09-10",
      "inLanguage": "pl-PL",
      "timeRequired": "PT30M",
      "wordCount": 4186,
      "isAccessibleForFree": true,
      "copyrightYear": 2026,
      "copyrightHolder": {
        "@id": "https://projekt-ogrzewania.pl/#organization"
      },
      "articleSection": [
        "Czym jest krzywa grzewcza",
        "Interaktywny wykres krzywej",
        "Nachylenie i przesunięcie",
        "Temperatura zasilania podłogówki",
        "Projektowy punkt obliczeniowy",
        "Pompa ciepła i kocioł",
        "Bezwładność i czujnik zewnętrzny",
        "Termostat i sterowanie strefowe",
        "Strojenie krok po kroku",
        "Objawy błędnej krzywej",
        "Hydraulika i okładzina",
        "Sprawność i rachunki",
        "FAQ"
      ],
      "keywords": [
        "krzywa grzewcza w ogrzewaniu podłogowym",
        "jaka krzywa grzewcza do podłogówki",
        "jak ustawić krzywą grzewczą",
        "nachylenie krzywej grzewczej do podłogówki",
        "przesunięcie krzywej grzewczej",
        "krzywa grzewcza pompa ciepła podłogówka",
        "jaka krzywa grzewcza do pompy ciepła",
        "krzywa grzewcza 0,3 co oznacza",
        "temperatura zasilania podłogówki przy -20°C",
        "krzywa grzewcza a termostat pokojowy",
        "krzywa grzewcza za wysoka objawy",
        "krzywa grzewcza za niska objawy",
        "korekta krzywej grzewczej"
      ],
      "about": [
        {
          "@type": "Thing",
          "name": "Krzywa grzewcza"
        },
        {
          "@type": "Thing",
          "name": "Ogrzewanie podłogowe"
        },
        {
          "@type": "Thing",
          "name": "Sterowanie pogodowe"
        }
      ],
      "mentions": [
        {
          "@type": "Thing",
          "name": "Temperatura zasilania"
        },
        {
          "@type": "Thing",
          "name": "Nachylenie krzywej grzewczej"
        },
        {
          "@type": "Thing",
          "name": "Przesunięcie równoległe"
        },
        {
          "@type": "Thing",
          "name": "Pompa ciepła"
        },
        {
          "@type": "Thing",
          "name": "Termostat pokojowy"
        },
        {
          "@type": "Thing",
          "name": "Równoważenie hydrauliczne"
        }
      ],
      "citation": [
        "https://www.iso.org/standard/74683.html",
        "https://www.iso.org/standard/74684.html",
        "https://www.iso.org/standard/65883.html",
        "https://library.mitsubishielectric.co.uk/pdf/book/Ecodan_FTC6_PAC-IF07_1-3_B-E_Instruction_Book_BT79R180H01"
      ],
      "speakable": {
        "@type": "SpeakableSpecification",
        "cssSelector": [
          "#rk-curve-answer .rk-curve-answer",
          "#rk-curve-design .rk-curve-lead",
          "#rk-curve-conclusions .rk-curve-answer"
        ]
      },
      "hasPart": [
        {
          "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#curve-chart"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#system-graphic"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#howto"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#checklist"
        },
        {
          "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#faq"
        }
      ]
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#curve-chart",
      "name": "Interaktywny wykres krzywej grzewczej z dwóch punktów",
      "description": "Edukacyjny model liniowy pokazujący bazową krzywą, nachylenie, przesunięcie, minimum, maksimum, granicę grzania i analizowany punkt pracy.",
      "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-chart",
      "applicationCategory": "EducationalApplication",
      "applicationSubCategory": "HVAC and building controls",
      "operatingSystem": "Any",
      "browserRequirements": "Przeglądarka internetowa z obsługą JavaScript i SVG",
      "softwareVersion": "1.0",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#article"
      },
      "featureList": [
        "Definicja zimnego i łagodnego punktu krzywej",
        "Ograniczenie minimalnej i maksymalnej temperatury zasilania",
        "Granica wyłączenia ogrzewania",
        "Porównanie większego i mniejszego nachylenia",
        "Porównanie przesunięcia równoległego o 2 K",
        "Dynamiczny punkt dla wybranej temperatury zewnętrznej"
      ],
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      }
    },
    {
      "@type": "WebApplication",
      "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#system-graphic",
      "name": "Interaktywna grafika reakcji regulacji pogodowej",
      "description": "Modułowa grafika pokazująca role czujnika zewnętrznego, regulatora, źródła ciepła, pompy i przepływów, podłogi oraz pomieszczenia w czterech scenariuszach.",
      "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-graphic",
      "applicationCategory": "EducationalApplication",
      "applicationSubCategory": "HVAC and building physics",
      "operatingSystem": "Any",
      "browserRequirements": "Przeglądarka internetowa z obsługą JavaScript",
      "softwareVersion": "1.0",
      "isAccessibleForFree": true,
      "inLanguage": "pl-PL",
      "creator": {
        "@id": "https://projekt-ogrzewania.pl/#robert-kucharski"
      },
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#article"
      },
      "featureList": [
        "Scenariusz spadku temperatury zewnętrznej",
        "Scenariusz zysku słonecznego w salonie",
        "Scenariusz zbyt wysokiej krzywej",
        "Scenariusz zamknięcia większości pętli",
        "Sześć oddzielnych modułów instalacji",
        "Responsywny układ bez nakładania elementów"
      ],
      "offers": {
        "@type": "Offer",
        "price": "0",
        "priceCurrency": "PLN"
      }
    },
    {
      "@type": "HowTo",
      "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#howto",
      "name": "Jak ustawić krzywą grzewczą ogrzewania podłogowego krok po kroku",
      "description": "Kolejność przygotowania, obserwacji i pojedynczych korekt krzywej grzewczej po sprawdzeniu dokumentacji oraz hydrauliki.",
      "inLanguage": "pl-PL",
      "supply": [
        {
          "@type": "HowToSupply",
          "name": "Projekt ogrzewania podłogowego i OZC"
        },
        {
          "@type": "HowToSupply",
          "name": "Dokumentacja regulatora i źródła ciepła"
        },
        {
          "@type": "HowToSupply",
          "name": "Projektowe przepływy pętli"
        }
      ],
      "tool": [
        {
          "@type": "HowToTool",
          "name": "Odczyt czujnika temperatury zewnętrznej"
        },
        {
          "@type": "HowToTool",
          "name": "Termometr w reprezentatywnym pomieszczeniu"
        },
        {
          "@type": "HowToTool",
          "name": "Dziennik ustawień i obserwacji"
        }
      ],
      "step": [
        {
          "@type": "HowToStep",
          "position": 1,
          "name": "Zapisz stan początkowy",
          "text": "Zanotuj tryb pracy, parametry krzywej, ograniczenia, harmonogram oraz ustawienia pomp.",
          "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-tuning"
        },
        {
          "@type": "HowToStep",
          "position": 2,
          "name": "Sprawdź dokumentację sterownika",
          "text": "Ustal znaczenie parametrów, zakres obiegu i model charakterystyki stosowany przez urządzenie.",
          "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-tuning"
        },
        {
          "@type": "HowToStep",
          "position": 3,
          "name": "Potwierdź przepływy projektowe",
          "text": "Sprawdź nastawy rozdzielacza przy znanym i bezpiecznym stanie zaworów.",
          "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-tuning"
        },
        {
          "@type": "HowToStep",
          "position": 4,
          "name": "Usuń zakłócające harmonogramy",
          "text": "Na czas obserwacji utrzymuj możliwie stałe wymagania i notuj istotne zyski ciepła.",
          "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-tuning"
        },
        {
          "@type": "HowToStep",
          "position": 5,
          "name": "Ustaw punkt startowy",
          "text": "Przenieś do sterownika parametry wynikające z projektu i instrukcji dokładnego modelu.",
          "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-tuning"
        },
        {
          "@type": "HowToStep",
          "position": 6,
          "name": "Obserwuj temperaturę reprezentatywną",
          "text": "Wybierz pomieszczenie bez chwilowego wpływu słońca lub urządzeń i z potwierdzonym przepływem.",
          "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-tuning"
        },
        {
          "@type": "HowToStep",
          "position": 7,
          "name": "Koryguj jeden parametr",
          "text": "Zmieniaj tylko jedno ustawienie, aby można było przypisać mu zaobserwowany efekt.",
          "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-tuning"
        },
        {
          "@type": "HowToStep",
          "position": 8,
          "name": "Poczekaj na miarodajny efekt",
          "text": "Uwzględnij bezwładność konstrukcji, stabilność pogody i porównuj podobne warunki.",
          "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-tuning"
        }
      ]
    },
    {
      "@type": "ItemList",
      "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#checklist",
      "name": "Lista kontrolna ustawienia krzywej grzewczej",
      "numberOfItems": 14,
      "itemListOrder": "https://schema.org/ItemListOrderAscending",
      "itemListElement": [
        {
          "@type": "ListItem",
          "position": 1,
          "name": "Model i instrukcja regulatora"
        },
        {
          "@type": "ListItem",
          "position": 2,
          "name": "Temperatura obliczeniowa"
        },
        {
          "@type": "ListItem",
          "position": 3,
          "name": "Projektowa temperatura zasilania"
        },
        {
          "@type": "ListItem",
          "position": 4,
          "name": "Minimum i maksimum temperatury"
        },
        {
          "@type": "ListItem",
          "position": 5,
          "name": "Granica grzania"
        },
        {
          "@type": "ListItem",
          "position": 6,
          "name": "Czujnik zewnętrzny"
        },
        {
          "@type": "ListItem",
          "position": 7,
          "name": "Przepływy pętli"
        },
        {
          "@type": "ListItem",
          "position": 8,
          "name": "Pompa obiegowa"
        },
        {
          "@type": "ListItem",
          "position": 9,
          "name": "Termostaty i siłowniki"
        },
        {
          "@type": "ListItem",
          "position": 10,
          "name": "Pomieszczenie referencyjne"
        },
        {
          "@type": "ListItem",
          "position": 11,
          "name": "Stabilne warunki obserwacji"
        },
        {
          "@type": "ListItem",
          "position": 12,
          "name": "Jedna zmiana naraz"
        },
        {
          "@type": "ListItem",
          "position": 13,
          "name": "Dziennik obserwacji"
        },
        {
          "@type": "ListItem",
          "position": 14,
          "name": "Możliwość powrotu do stanu bazowego"
        }
      ],
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#article"
      }
    },
    {
      "@type": "FAQPage",
      "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#faq",
      "url": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#rk-curve-faq",
      "inLanguage": "pl-PL",
      "isPartOf": {
        "@id": "https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/#webpage"
      },
      "mainEntity": [
        {
          "@type": "Question",
          "name": "Jaka krzywa grzewcza jest najlepsza do ogrzewania podłogowego?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie istnieje jedna najlepsza wartość. Krzywa musi odpowiadać projektowemu obciążeniu budynku, mocy podłogi, okładzinie, przepływom i algorytmowi konkretnego sterownika. Wartość startowa z instrukcji wymaga późniejszej weryfikacji."
          }
        },
        {
          "@type": "Question",
          "name": "Co oznacza krzywa grzewcza 0,3?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Bez wskazania producenta i pozostałych ustawień nie da się tego jednoznacznie określić. Liczba może opisywać nachylenie według własnego modelu urządzenia, a wynik zależy również od poziomu, temperatury bazowej, minimum, maksimum i wpływu pokojowego."
          }
        },
        {
          "@type": "Question",
          "name": "Jak ustawić krzywą grzewczą przy pompie ciepła i podłogówce?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Należy zacząć od projektowej temperatury zasilania przy obliczeniowej temperaturze zewnętrznej, odwzorować ją zgodnie z instrukcją regulatora, sprawdzić przepływy i obserwować budynek w stabilnych warunkach. Korekty wykonuje się pojedynczo i z zachowaniem wymagań urządzenia."
          }
        },
        {
          "@type": "Question",
          "name": "Czym różni się nachylenie od przesunięcia krzywej?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nachylenie zmienia różnicę pomiędzy zimną i łagodną częścią charakterystyki. Przesunięcie podnosi albo obniża cały przebieg w przybliżeniu równolegle. Dokładny sposób realizacji obu funkcji trzeba sprawdzić w instrukcji sterownika."
          }
        },
        {
          "@type": "Question",
          "name": "Kiedy zwiększyć nachylenie krzywej grzewczej?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Można je analizować, gdy przy łagodnej pogodzie jest poprawnie, a niedobór pojawia się wraz z silnym mrozem. Najpierw trzeba wykluczyć brak mocy podłogi, niewłaściwy przepływ, ograniczenie źródła, błędny czujnik i zamknięte pętle."
          }
        },
        {
          "@type": "Question",
          "name": "Kiedy zmienić przesunięcie krzywej?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Przesunięcie może być właściwym kierunkiem, gdy podobne odchylenie temperatury występuje w szerokim zakresie pogody. Nie należy jednak podawać uniwersalnej korekty w kelwinach bez obserwacji i znajomości algorytmu urządzenia."
          }
        },
        {
          "@type": "Question",
          "name": "Dlaczego podłoga jest chłodna w dotyku, mimo że w domu jest ciepło?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "W dobrze ocieplonym budynku podłoga może potrzebować niewielkiej nadwyżki temperatury ponad pomieszczenie. Jeżeli bilans cieplny jest zachowany, powierzchnia nie musi być wyraźnie ciepła w dotyku. Odczucie nie jest pomiarem mocy instalacji."
          }
        },
        {
          "@type": "Question",
          "name": "Czy można ustawić osobną krzywą dla łazienki?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Pojedyncza pętla na wspólnym obiegu zwykle korzysta z tej samej temperatury zasilania. Oddzielna krzywa wymaga niezależnie regulowanego obiegu lub funkcji przewidzianej przez system. Komfort łazienki powinien być uwzględniony przede wszystkim w projekcie powierzchni i mocy."
          }
        },
        {
          "@type": "Question",
          "name": "Czy termostaty pokojowe wykluczają regulację pogodową?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie. Mogą pełnić funkcję korekty, ograniczenia lokalnego albo sygnału zapotrzebowania. Trzeba jednak sprawdzić, czy zamykanie pętli nie narusza wymaganego przepływu i czy termostaty nie maskują zawyżonej krzywej."
          }
        },
        {
          "@type": "Question",
          "name": "Jak długo czekać po zmianie krzywej?",
          "acceptedAnswer": {
            "@type": "Answer",
            "text": "Nie ma jednego czasu dla każdej podłogi. Należy uwzględnić bezwładność konstrukcji i stabilność warunków. Miarodajna ocena wymaga, aby efekt poprzedniej nastawy nie mieszał się z krótką zmianą pogody, nasłonecznienia lub sposobu użytkowania."
          }
        }
      ]
    }
  ]
}
</script>
<p>Artykuł <a href="https://projekt-ogrzewania.pl/krzywa-grzewcza-w-ogrzewaniu-podlogowym/">Krzywa grzewcza w ogrzewaniu podłogowym – jak ustawić ją bez błędów?</a> pochodzi z serwisu <a href="https://projekt-ogrzewania.pl">Projekt Ogrzewania</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
