:root { --surface: #ffffff; --surface-soft: #f4f8f5; --surface-strong: #e8f1eb; --background: #edf3ef; --primary: #176b4d; --primary-strong: #0d5139; --primary-soft: #dceee5; --warning: #a96813; --warning-soft: #fff3d9; --critical: #b43c35; --critical-soft: #fde7e4; --text: #17241d; --muted: #617168; --border: #d4dfd8; --shadow: 0 8px 24px rgb(21 57 39 / 8%); --radius-sm: 8px; --radius: 12px; --radius-lg: 18px; --space-1: .25rem; --space-2: .5rem; --space-3: .75rem; --space-4: 1rem; --space-5: 1.5rem; --space-6: 2rem; font-family: "Segoe UI", system-ui, -apple-system, BlinkMacSystemFont, sans-serif; color: var(--text); background: var(--background); }
* { box-sizing: border-box; }
html { min-width: 320px; background: var(--background); }
body { margin: 0px; min-height: 100vh; background: radial-gradient(circle at 85% 0, #f7fbf8 0, var(--background) 34rem); }
button, input { font: inherit; }
button { cursor: pointer; }
a { color: inherit; }
.app-shell { min-height: 100vh; display: grid; grid-template-columns: 224px minmax(0px, 1fr); }
.page-host { min-width: 0px; }
.navigation-rail { position: sticky; top: 0px; height: 100vh; padding: var(--space-5) var(--space-3); color: rgb(234, 247, 239); background: rgb(18, 60, 44); display: flex; flex-direction: column; z-index: 5; }
.brand-mark { display: flex; align-items: center; gap: 0.7rem; padding: 0px 0.55rem 1.4rem; border-bottom: 1px solid rgba(255, 255, 255, 0.14); }
.brand-mark__symbol { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 11px; background: rgb(120, 207, 158); color: rgb(13, 59, 41); font-size: 1.2rem; font-weight: 800; }
.brand-mark strong, .brand-mark small { display: block; }
.brand-mark small { margin-top: 0.1rem; color: rgb(167, 201, 182); font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.08em; }
.navigation-rail nav { display: grid; gap: 0.25rem; margin-top: 1.35rem; }
.nav-link { display: flex; align-items: center; gap: 0.75rem; min-height: 43px; padding: 0.65rem 0.75rem; border-radius: 10px; color: rgb(186, 213, 198); text-decoration: none; font-size: 0.9rem; font-weight: 650; }
.nav-link:hover { background: rgba(255, 255, 255, 0.07); color: rgb(255, 255, 255); }
.nav-link.active { background: rgb(226, 243, 233); color: rgb(17, 72, 50); box-shadow: rgb(114, 201, 154) 3px 0px inset; }
.nav-subtree { display: grid; gap: 0.15rem; margin: -0.05rem 0px 0.35rem 2.4rem; padding-left: 0.55rem; border-left: 1px solid rgba(255, 255, 255, 0.18); }
.nav-child-link { display: flex; align-items: center; gap: 0.45rem; min-height: 30px; padding: 0.3rem 0.4rem; border-radius: 7px; color: rgb(169, 203, 187); text-decoration: none; font-size: 0.73rem; }
.nav-child-link span { display: grid; place-items: center; width: 22px; height: 18px; border: 1px solid; border-radius: 5px; font-size: 0.55rem; font-weight: 800; }
.nav-child-link:hover, .nav-child-link.active { color: rgb(255, 255, 255); background: rgba(255, 255, 255, 0.09); }
.nav-icon { width: 19px; height: 19px; fill: none; stroke: currentcolor; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; flex: 0 0 auto; }
.rail-footer { margin-top: auto; padding: 0.8rem; color: rgb(159, 195, 175); font-size: 0.7rem; letter-spacing: 0.1em; }
.rail-live-dot { display: inline-block; width: 7px; height: 7px; margin-right: 0.4rem; border-radius: 50%; background: rgb(120, 207, 158); }
.mobile-navigation { display: none; }
.operator-page { width: min(100%, 1600px); margin: 0px auto; padding: var(--space-5) var(--space-6) var(--space-4); }
.operator-topbar { min-height: 84px; display: flex; justify-content: space-between; align-items: flex-start; gap: var(--space-5); margin-bottom: var(--space-4); padding-bottom: var(--space-4); border-bottom: 1px solid var(--border); }
.operator-kicker, .eyebrow { margin: 0px 0px 0.25rem; color: var(--primary); font-size: 0.68rem; font-weight: 800; letter-spacing: 0.11em; text-transform: uppercase; }
.operator-topbar h1 { margin: 0px; font-size: clamp(1.5rem, 2.4vw, 2.15rem); line-height: 1.1; }
.operator-subtitle { margin: 0.35rem 0px 0px; color: var(--muted); font-size: 0.9rem; }
.operator-status { display: flex; align-items: center; justify-content: flex-end; flex-wrap: wrap; gap: 0.45rem; max-width: 440px; }
.operator-status time { color: var(--muted); font-size: 0.8rem; font-variant-numeric: tabular-nums; }
.status-badge, .readonly-badge, .read-only-pill { display: inline-flex; align-items: center; min-height: 25px; padding: 0.28rem 0.6rem; border-radius: 999px; font-size: 0.68rem; font-weight: 800; letter-spacing: 0.05em; }
.status-badge--live { color: rgb(11, 91, 59); background: rgb(215, 243, 227); }
.status-badge--stale, .status-badge--waitingforfirsttick, .status-badge--waitingforfoundation { color: rgb(128, 80, 13); background: var(--warning-soft); }
.status-badge--error { color: rgb(143, 41, 37); background: var(--critical-soft); }
.readonly-badge, .read-only-pill { color: rgb(55, 92, 73); background: var(--surface-strong); }
.page-state { display: flex; align-items: center; gap: 0.65rem; margin-bottom: var(--space-4); padding: 0.65rem 0.85rem; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); font-size: 0.82rem; }
.page-state strong { margin-right: 0.2rem; }
.page-state--stale, .page-state--waiting { border-color: rgb(232, 202, 149); background: var(--warning-soft); }
.page-state--error { border-color: rgb(237, 184, 179); background: var(--critical-soft); }
.section-heading { display: flex; justify-content: space-between; align-items: flex-end; gap: 1rem; }
.section-heading h2 { margin: 0px; font-size: 1.18rem; }
.compact-heading { margin: 0px 0px 0.75rem; }
.overview-main-grid { display: grid; grid-template-columns: minmax(0px, 1.55fr) minmax(300px, 0.65fr); gap: var(--space-4); align-items: start; }
.overview-status-column, .zone-summary, .zone-detail-panel { min-width: 0px; padding: var(--space-4); border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); box-shadow: var(--shadow); }
.operational-schematic-card { min-width: 0px; padding: var(--space-4); border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); box-shadow: var(--shadow); }
.compact-widget-grid, .metrics-grid { display: grid; grid-template-columns: repeat(2, minmax(0px, 1fr)); gap: 0.55rem; }
.weather-widget-grid { display: grid; grid-template-columns: repeat(4, minmax(0px, 1fr)); gap: 0.7rem; }
.profile-widget { min-width: 0px; padding: 0.72rem 0.78rem; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface-soft); }
.profile-widget__heading { display: flex; justify-content: space-between; gap: 0.45rem; align-items: flex-start; }
.profile-widget h3 { margin: 0px; color: var(--muted); font-size: 0.75rem; font-weight: 700; }
.profile-widget__value { margin: 0.32rem 0px 0.18rem; font-size: 1.35rem; font-weight: 760; font-variant-numeric: tabular-nums; line-height: 1.05; }
.profile-widget__value small { color: var(--muted); font-size: 0.65rem; font-weight: 600; }
.profile-widget__meta { margin: 0px; color: var(--muted); font-size: 0.65rem; }
.value-state-label { color: var(--primary); font-size: 0.58rem; font-weight: 800; text-align: right; text-transform: uppercase; }
.value-state--warninglow, .value-state--warninghigh { border-color: rgb(229, 189, 121); background: var(--warning-soft); }
.value-state--criticallow, .value-state--criticalhigh { border-color: rgb(229, 162, 156); background: var(--critical-soft); }
.value-state--unavailable { border-style: dashed; }
.value-state--stale, .is-stale { opacity: 0.78; background-image: linear-gradient(135deg, transparent 0px, transparent 46%, rgba(130, 92, 27, 0.05) 46%, rgba(130, 92, 27, 0.05) 54%, transparent 54%); background-size: 8px 8px; }
.unavailable-value { color: var(--muted); font-size: 1rem; }
.technical-details { margin-top: 0.45rem; color: var(--muted); font-size: 0.65rem; }
.technical-details code { display: block; margin-top: 0.25rem; overflow-wrap: anywhere; }
.equipment-compact-grid { display: grid; grid-template-columns: repeat(2, minmax(0px, 1fr)); gap: 0.45rem; margin-top: 0.6rem; }
.equipment-indicator { padding: 0.58rem 0.65rem; border: 1px solid var(--border); border-radius: var(--radius-sm); background: rgb(255, 255, 255); }
.equipment-indicator > div:first-child { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; }
.equipment-indicator h3 { margin: 0px; color: var(--muted); font-size: 0.68rem; }
.equipment-indicator strong { font-size: 0.75rem; }
.equipment-track { height: 6px; margin-top: 0.45rem; overflow: hidden; border-radius: 99px; background: rgb(221, 231, 225); }
.equipment-track span { display: block; height: 100%; border-radius: inherit; background: var(--primary); }
.equipment-track--unavailable { border: 1px dashed rgb(174, 187, 180); background: transparent; }
.valve-state { display: flex; align-items: center; gap: 0.4rem; margin-top: 0.4rem; color: var(--muted); font-size: 0.63rem; font-weight: 700; }
.valve-state span { width: 9px; height: 9px; border: 2px solid; border-radius: 50%; }
.valve-state--open { color: var(--primary); }
.valve-state--closed { color: rgb(107, 119, 112); }
.zone-summary-grid, .zone-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0px, 1fr)); gap: var(--space-4); margin: var(--space-4) 0; }
.zone-summary > h3 { margin: 0px 0px 0.65rem; font-size: 1rem; }
.climate-measurements { grid-template-columns: repeat(3, minmax(0px, 1fr)); }
.climate-outputs { grid-template-columns: repeat(3, minmax(0px, 1fr)); }
.irrigation-operating-context{display:flex;gap:.5rem;flex-wrap:wrap;margin-bottom:.65rem}.irrigation-operating-context span{padding:.35rem .55rem;border:1px solid var(--border);border-radius:8px;background:var(--surface);font-size:.7rem;font-weight:700}.irrigation-process-grid{display:grid;grid-template-columns:minmax(0,2.1fr) minmax(250px,.9fr);gap:.65rem}.irrigation-synoptic-card,.irrigation-cycle-card,.irrigation-setpoint-card,.irrigation-devices-card{min-width:0;padding:.75rem;border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:var(--shadow)}.irrigation-cycle-card h2,.irrigation-devices-card h2{margin:.12rem 0 .65rem;font-size:1.15rem}.irrigation-current-section{display:block;font-size:1rem}.irrigation-cycle-card p{line-height:1.7;font-size:.78rem}.irrigation-sequence{display:flex;gap:.35rem;align-items:center;flex-wrap:wrap;margin-top:.6rem;padding-top:.55rem;border-top:1px solid var(--border);font-size:.7rem}.irrigation-sequence span{padding:.2rem .32rem;border-radius:5px;background:var(--surface-soft)}.irrigation-sequence span.is-active,.irrigation-device-row strong.is-active{color:#075d3c;background:#dceee5}.irrigation-middle-grid{display:grid;grid-template-columns:minmax(0,2.1fr) minmax(250px,.9fr);gap:.65rem;margin:.65rem 0}.irrigation-setpoint-card{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:.55rem}.irrigation-setpoint-card .process-card-heading{grid-column:1/-1}.irrigation-group-values{padding:.55rem;border:1px solid var(--border);border-radius:10px;background:var(--surface-soft)}.irrigation-group-values.is-active{border-color:#4daa78;box-shadow:inset 3px 0 #176b4d}.irrigation-group-values h3{margin:0 0 .35rem}.irrigation-group-values dl{display:grid;grid-template-columns:1fr auto;gap:.2rem;margin:0;font-size:.7rem}.irrigation-group-values dt{color:var(--muted)}.irrigation-group-values dd{margin:0;font-weight:750}.irrigation-group-values small{display:block;margin-top:.35rem;color:var(--muted);font-size:.6rem}.irrigation-device-row{display:flex;justify-content:space-between;gap:.5rem;padding:.45rem 0;border-top:1px solid var(--border);font-size:.72rem}.irrigation-device-row strong{padding:.1rem .3rem;border-radius:4px;color:#617168;background:#eef2ef}@media(max-width:900px){.irrigation-process-grid,.irrigation-middle-grid{grid-template-columns:1fr}.irrigation-cycle-card{order:-1}}@media(max-width:560px){.irrigation-setpoint-card{grid-template-columns:1fr}.irrigation-synoptic-card{overflow:auto}.irrigation-operating-context{display:grid;grid-template-columns:1fr}.irrigation-middle-grid{margin:.45rem 0}}
.greenhouse-schematic { display: block; width: 100%; height: auto; max-height: 470px; }
.greenhouse-roof, .greenhouse-zone { fill: rgb(233, 245, 238); stroke: rgb(78, 139, 109); stroke-width: 3; }
.greenhouse-zone { fill: rgb(247, 251, 248); }
.sun { fill: rgb(243, 189, 78); stroke: rgb(211, 148, 35); stroke-width: 3; }
.tank { fill: rgb(231, 242, 246); stroke: rgb(77, 130, 148); stroke-width: 3; }
.tank-fill { fill: rgb(120, 184, 199); }
.supply-line, .return-line { fill: none; stroke: rgb(38, 132, 164); stroke-width: 8; stroke-linecap: round; stroke-linejoin: round; }
.return-line { stroke: rgb(107, 146, 160); stroke-dasharray: 8, 6; }
.valve { fill: rgb(238, 242, 239); stroke: rgb(95, 111, 102); stroke-width: 5; }
.valve--open { fill: rgb(104, 201, 146); stroke: rgb(23, 107, 77); }
.valve--closed { fill: rgb(216, 221, 218); }
.valve--unavailable { fill: rgb(255, 255, 255); stroke-dasharray: 4, 3; }
.zone-label, .svg-label { fill: rgb(49, 91, 70); font-size: 15px; font-weight: 800; letter-spacing: 0.06em; text-transform: uppercase; }
.zone-value, .svg-value { fill: var(--text); font-size: 28px; font-weight: 750; }
.svg-small, .line-label, .valve-label, .equipment-state-text { fill: var(--muted); font-size: 12px; font-weight: 650; }
.charts-grid { display: grid; grid-template-columns: repeat(2, minmax(0px, 1fr)); gap: var(--space-4); }
.chart-card { min-width: 0px; padding: var(--space-4); border: 1px solid var(--border); border-radius: var(--radius-lg); background: var(--surface); box-shadow: var(--shadow); }
.chart-card__heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.75rem; }
.chart-card__heading h3 { margin: 0px; font-size: 1rem; }
.chart-card__actions { display: flex; align-items: flex-end; gap: 0.55rem; flex-direction: column; }
.chart-unit { color: var(--muted); font-size: 0.7rem; }
.range-selector, .service-filters { display: flex; gap: 0.2rem; }
.range-selector button, .service-filters button { padding: 0.24rem 0.45rem; border: 1px solid var(--border); border-radius: 6px; color: var(--muted); background: rgb(255, 255, 255); font-size: 0.62rem; }
.range-selector button.active, .service-filters button.active { border-color: var(--primary); color: rgb(255, 255, 255); background: var(--primary); }
.time-chart { display: block; width: 100%; margin-top: 0.35rem; }
.chart-grid { stroke: rgb(185, 201, 192); stroke-width: 1; }
.chart-grid--soft { stroke: rgb(220, 229, 223); stroke-dasharray: 5, 5; }
.chart-label { fill: var(--muted); font-size: 10px; }
.chart-empty { display: grid; place-items: center; min-height: 210px; color: var(--muted); font-size: 0.8rem; }
.chart-legend { display: grid; gap: 0.38rem; }
.chart-legend__series { display: grid; grid-template-columns: 8px minmax(80px, 1fr) auto; column-gap: 0.4rem; align-items: center; min-width: 0px; color: var(--muted); font-size: 0.68rem; }
.chart-legend i { width: 8px; height: 8px; border-radius: 50%; }
.chart-legend strong { color: var(--text); }
.chart-legend small { grid-column: 2 / -1; color: var(--muted); white-space: nowrap; }
.short-history-note { margin: 0.35rem 0px -0.15rem; color: var(--muted); font-size: 0.65rem; }
.service-summary { display: grid; grid-template-columns: repeat(4, minmax(0px, 1fr)); gap: 0.55rem; margin-bottom: var(--space-4); }
.runtime-item { min-width: 0px; padding: 0.7rem; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.runtime-item span, .runtime-item strong { display: block; }
.runtime-item span { margin-bottom: 0.25rem; color: var(--muted); font-size: 0.65rem; }
.runtime-item strong { overflow-wrap: anywhere; font-size: 0.78rem; }
.mono, code { font-family: "Cascadia Mono", Consolas, monospace; }
.service-tag-table { overflow: hidden; border: 1px solid var(--border); border-radius: var(--radius); background: var(--surface); }
.service-tag-row { display: grid; grid-template-columns: minmax(240px, 1.5fr) 1fr 0.65fr 1fr 1.4fr; gap: 0.75rem; align-items: center; min-height: 40px; padding: 0.45rem 0.7rem; border-top: 1px solid var(--border); font-size: 0.7rem; }
.service-tag-row:first-child { border-top: 0px; }
.service-tag-row--header { color: var(--muted); background: var(--surface-soft); font-size: 0.63rem; font-weight: 800; text-transform: uppercase; }
.service-tag-row[data-tag-class="missing"] { background: var(--warning-soft); }
.service-tag-row[data-tag-class="unused"] { color: var(--muted); }
.service-diagnostic { padding: 0.7rem; color: var(--critical); background: var(--critical-soft); }
.operator-footer { display: flex; justify-content: space-between; gap: 1rem; margin-top: var(--space-5); padding-top: var(--space-3); border-top: 1px solid var(--border); color: var(--muted); font-size: 0.65rem; }
.climate-process-page { max-width: 1660px; }
.climate-zone-selector { display: flex; align-items: center; gap: 0.35rem; margin: -0.45rem 0px 0.55rem; }
.climate-zone-selector__label { margin-right: 0.2rem; color: var(--muted); font-size: 0.66rem; font-weight: 750; }
.climate-zone-selector a { display: inline-flex; align-items: center; gap: 0.45rem; min-height: 32px; padding: 0.34rem 0.68rem; border: 1px solid var(--border); border-radius: 9px; color: var(--muted); background: var(--surface); text-decoration: none; font-size: 0.76rem; font-weight: 700; }
.climate-zone-selector a span { display: grid; place-items: center; min-width: 24px; height: 18px; border-radius: 5px; color: var(--primary); background: var(--primary-soft); font-size: 0.56rem; }
.climate-zone-selector a.active { border-color: rgb(91, 169, 132); color: rgb(13, 81, 57); background: rgb(237, 248, 242); box-shadow: rgb(47, 139, 101) 0px -2px inset; }
.operating-summary { display: grid; grid-template-columns: repeat(6, minmax(0px, 1fr)); gap: 0.42rem; margin-bottom: 0.58rem; }
.operating-summary__item { position: relative; min-width: 0px; min-height: 70px; padding: 0.5rem 0.62rem 0.46rem 0.78rem; overflow: hidden; border: 1px solid var(--border); border-radius: 10px; background: var(--surface); }
.operating-summary__item::before { position: absolute; inset: 0px auto 0px 0px; width: 3px; background: rgb(142, 170, 160); content: ""; }
.operating-summary__item > span, .operating-summary__item > small { display: block; overflow: hidden; color: var(--muted); font-size: 0.61rem; text-overflow: ellipsis; white-space: nowrap; }
.operating-summary__item > strong { display: block; margin: 0.13rem 0px; overflow: hidden; font-size: clamp(0.82rem, 1.05vw, 1rem); font-variant-numeric: tabular-nums; text-overflow: ellipsis; white-space: nowrap; }
.operating-summary__item > small { font-weight: 700; }
.summary-state--quiet i, .selected-reading__normal i, .greenhouse-state-summary strong i { display: inline-block; width: 7px; height: 7px; margin-right: 0.35rem; border-radius: 50%; background: rgb(77, 154, 115); }
.summary-source { font-weight: 550 !important; }
.visually-hidden { position: absolute !important; width: 1px !important; height: 1px !important; padding: 0px !important; overflow: hidden !important; clip: rect(0px, 0px, 0px, 0px) !important; white-space: nowrap !important; border: 0px !important; }
.state-active::before { background: rgb(22, 133, 92); }
.state-inactive::before { background: rgb(138, 153, 145); }
.state-warning::before { background: var(--warning); }
.state-critical::before { background: var(--critical); }
.state-stale::before { background: rgb(167, 119, 40); }
.state-unavailable::before { background: rgb(142, 154, 148); }
.climate-process-main { display: grid; grid-template-columns: minmax(0px, 1fr) minmax(260px, 285px); gap: 0.62rem; align-items: stretch; }
.climate-process-canvas, .climate-context { min-width: 0px; border: 1px solid var(--border); border-radius: 16px; background: var(--surface); box-shadow: var(--shadow); }
.climate-process-canvas { padding: 0.6rem 0.65rem 0.5rem; overflow: hidden; }
.process-card-heading { display: flex; align-items: flex-start; justify-content: space-between; gap: 1rem; padding: 0px 0.1rem 0.18rem; }
.process-card-heading h2 { margin: 0px; font-size: 0.95rem; }
.greenhouse-climate-process { display: block; width: 100%; height: auto; max-height: 500px; }
.process-sky { stroke: rgb(220, 231, 225); stroke-width: 1; }
.greenhouse-frame { fill: none; stroke: rgb(70, 111, 92); stroke-width: 9; stroke-linejoin: round; }
.greenhouse-glass { fill: rgba(255, 255, 255, 0.55); stroke: rgb(171, 198, 184); stroke-width: 2; }
.roof-ridge, .greenhouse-floor { fill: none; stroke: rgb(70, 111, 92); stroke-width: 8; stroke-linecap: round; }
.roof-vent { fill: none; stroke: rgb(23, 124, 89); stroke-width: 12; stroke-linecap: round; transform-box: fill-box; }
.thermal-screen-track { stroke: rgb(107, 131, 119); stroke-width: 2; stroke-dasharray: 5, 5; }
.thermal-screen { fill: rgb(130, 148, 139); opacity: 0.7; }
.weather-sun { fill: rgb(247, 198, 91); stroke: rgb(217, 157, 42); stroke-width: 3; }
.weather-wind { fill: none; stroke: rgb(91, 136, 151); stroke-width: 4; stroke-linecap: round; }
.process-element-card { fill: rgba(255, 255, 255, 0.9); stroke: rgb(169, 194, 182); stroke-width: 1.5; }
.climate-core .process-element-card { fill: rgb(248, 252, 250); stroke: rgb(92, 158, 125); stroke-width: 2.5; }
.climate-temperature { fill: rgb(18, 60, 44); font-size: 46px; font-weight: 800; }
.climate-secondary { fill: rgb(64, 95, 80); font-size: 14px; font-weight: 720; }
.outdoor-temperature-value { fill: rgb(23, 61, 45); font-size: 25px; font-weight: 800; font-variant-numeric: tabular-nums; }
.fans circle { fill: rgb(248, 251, 249); stroke: rgb(104, 141, 123); stroke-width: 3; }
.fan-blades { fill: rgb(86, 142, 114); transform-origin: center center; }
.heating-pipe { fill: none; stroke: rgb(217, 120, 45); stroke-width: 11; stroke-linecap: round; }
.heating-valve { fill: rgb(255, 243, 233); stroke: rgb(189, 95, 31); stroke-width: 4; }
.process-meta { fill: rgb(97, 113, 104); font-size: 11.5px; font-weight: 620; }
.process-hotspot { cursor: pointer; outline: none; }
.process-hotspot:focus-visible { filter: drop-shadow(rgb(18, 111, 78) 0px 0px 5px); }
.process-hotspot.is-selected { filter: drop-shadow(rgba(28, 117, 82, 0.42) 0px 0px 7px); }
.process-hotspot.is-selected .process-element-card { fill: rgb(234, 247, 240); stroke: rgb(13, 104, 72); stroke-width: 4; }
.process-hotspot.is-selected > circle { stroke: rgb(13, 104, 72); stroke-width: 4; }
.process-hotspot.state-unavailable { opacity: 0.48; stroke-dasharray: 6, 5; }
.process-hotspot.state-stale { opacity: 0.68; }
.process-hotspot.state-warning .climate-temperature { fill: var(--warning); }
.process-hotspot.state-critical .climate-temperature { fill: var(--critical); }
.process-hotspot.state-inactive .fan-blades { opacity: 0.28; }
.process-accessibility-note { margin: 0.05rem 0.25rem 0px; color: var(--muted); font-size: 0.61rem; }
.climate-context { display: grid; gap: 0px; overflow: hidden; }
.context-section { min-width: 0px; padding: 0.78rem 0.82rem; border-bottom: 1px solid var(--border); }
.context-section:last-child { border-bottom: 0px; }
.context-section h2 { margin: 0px 0px 0.48rem; font-size: 0.9rem; }
.context-section p { margin: 0.25rem 0px 0px; color: var(--muted); font-size: 0.68rem; line-height: 1.45; }
.context-heading { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; }
.context-heading strong { color: var(--primary); font-size: 0.82rem; }
.greenhouse-state-summary { background: rgb(251, 253, 252); }
.greenhouse-state-summary .state-warning { color: rgb(128, 80, 13); }
.greenhouse-state-summary .state-stale, .greenhouse-state-summary .state-unavailable { color: var(--muted); }
.outdoor-context dl, .selected-element dl { margin: 0px; }
.outdoor-context dl { display: grid; grid-template-columns: repeat(2, minmax(0px, 1fr)); gap: 0.4rem; }
.outdoor-context dl div { display: grid; gap: 0.12rem; min-width: 0px; padding: 0.48rem; border: 1px solid var(--border); border-radius: 9px; background: var(--surface-soft); }
.outdoor-context dt { color: var(--muted); font-size: 0.6rem; }
.outdoor-context dd { margin: 0px; overflow: hidden; color: var(--text); font-size: 0.78rem; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
.outdoor-context .outdoor-primary { border-color: rgb(168, 201, 184); background: rgb(238, 248, 243); }
.outdoor-context .outdoor-primary dd { color: rgb(23, 76, 54); font-size: 0.98rem; }
.selected-element { background: rgb(255, 255, 255); }
.selected-element h2 { margin-bottom: 0.25rem; font-size: 1.08rem; }
.selected-reading { display: flex; align-items: center; justify-content: space-between; gap: 0.5rem; margin-bottom: 0.62rem; }
.selected-reading > strong { min-width: 0px; overflow: hidden; font-size: 1.32rem; font-variant-numeric: tabular-nums; text-overflow: ellipsis; white-space: nowrap; }
.selected-reading__normal { flex: 0 0 auto; }
.state-chip { flex: 0 0 auto; padding: 0.22rem 0.45rem; border-radius: 99px; background: var(--surface-strong); font-size: 0.58rem; font-weight: 750; }
.state-chip.state-warning { background: var(--warning-soft); color: rgb(123, 77, 11); }
.state-chip.state-critical { background: var(--critical-soft); color: rgb(139, 45, 40); }
.climate-center-summary { display: grid; grid-template-columns: repeat(3, minmax(0px, 1fr)); gap: 0.3rem; margin-bottom: 0.65rem !important; }
.climate-center-summary div { padding: 0.36rem 0.25rem; border-radius: 7px; background: var(--surface-soft); text-align: center; display: grid !important; gap: 0.1rem !important; }
.climate-center-summary dt { color: var(--muted); font-size: 0.58rem; }
.climate-center-summary dd { margin: 0px; font-size: 0.68rem; font-weight: 750; }
.selected-metadata { display: grid; gap: 0.35rem; padding-top: 0.56rem; border-top: 1px solid var(--border); }
.selected-metadata div { display: flex; justify-content: space-between; gap: 0.5rem; color: var(--muted); font-size: 0.62rem; }
.selected-metadata dd { margin: 0px; max-width: 60%; color: var(--text); font-weight: 700; text-align: right; }
.process-convention { padding: 0.45rem 0.5rem; border-left: 3px solid rgb(123, 156, 140); background: var(--surface-soft); }
.technical-details { margin-top: 0.48rem; color: var(--muted); font-size: 0.62rem; }
.technical-details code { display: block; margin-top: 0.35rem; overflow-wrap: anywhere; color: var(--text); }
.climate-trends { margin-top: 0.75rem; }
.climate-trends__heading { margin-bottom: 0.55rem; }
.climate-trend-grid { display: grid; grid-template-columns: repeat(2, minmax(0px, 1fr)); gap: 0.7rem; }
.climate-trend-grid .chart-card { padding: 0.78rem; }
.climate-trend-grid .time-chart { min-height: 210px; max-height: 235px; }
.climate-trend-grid .chart-empty { min-height: 205px; }
.climate-trend-grid .chart-card__heading { min-height: 48px; }
.climate-trend-grid .chart-legend { min-height: 42px; }
.comparison-link, .comparison-return a { color: var(--primary); font-size: 0.72rem; font-weight: 750; text-decoration: none; }
.comparison-link:hover, .comparison-return a:hover { text-decoration: underline; }
.comparison-return { margin: -0.3rem 0px 0.7rem; }
.process-unavailable { display: flex; align-items: center; gap: 1rem; min-height: 220px; padding: 2rem; border: 1px dashed rgb(181, 196, 188); border-radius: var(--radius-lg); background: var(--surface); }
.process-unavailable .state-symbol { display: grid; place-items: center; width: 46px; height: 46px; border-radius: 50%; color: rgb(128, 80, 13); background: var(--warning-soft); font-size: 1.4rem; font-weight: 900; }
.process-unavailable h2, .process-unavailable p { margin: 0px; }
.process-unavailable p { margin-top: 0.3rem; color: var(--muted); }
.hero { background: var(--primary); }
.greenhouse-schematic, .metrics-grid, .chart-card, .app-shell { isolation: isolate; }
@media (max-width: 1180px) {
  .app-shell { grid-template-columns: 190px minmax(0px, 1fr); }
  .operator-page { padding-inline: var(--space-4); }
  .overview-main-grid { grid-template-columns: 1fr; }
  .weather-widget-grid { grid-template-columns: repeat(3, minmax(0px, 1fr)); }
  .service-summary { grid-template-columns: repeat(3, minmax(0px, 1fr)); }
  .operating-summary { grid-template-columns: repeat(3, minmax(0px, 1fr)); }
  .climate-process-main { grid-template-columns: 1fr; }
  .climate-context { grid-template-columns: 0.8fr 1.35fr 1fr; }
  .context-section { border-right: 1px solid var(--border); border-bottom: 0px; }
  .context-section:last-child { border-right: 0px; }
}

/* DEMO-UI-016 · Climate sensors */
.climate-sensors-page{overflow-x:hidden}.sensors-heading{display:flex;align-items:end;justify-content:space-between;gap:18px;margin:12px 0}.sensors-heading h2{margin:3px 0 2px;font-size:1.45rem}.sensors-heading p{margin:0;color:var(--muted);font-size:.72rem}.sensors-summary{display:grid;grid-template-columns:repeat(3,minmax(92px,1fr));min-width:340px;border:1px solid var(--border);border-radius:13px;background:var(--surface);box-shadow:var(--shadow);overflow:hidden}.sensors-summary>span{display:flex;flex-direction:column;gap:2px;padding:10px 14px;border-right:1px solid var(--border)}.sensors-summary>span:last-child{border:0}.sensors-summary small{color:var(--muted);font-size:.58rem;text-transform:uppercase;letter-spacing:.05em}.sensors-summary strong{font-size:1rem}.sensors-summary .has-problem{background:#fff7e9;color:#6c4a0b}
.sensors-toolbar{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px;padding:7px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.sensor-filter{display:flex;gap:5px}.sensor-filter button,.sensor-detail-trend__heading button{min-height:38px;padding:7px 12px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text);font-weight:750}.sensor-filter button.active,.sensor-detail-trend__heading button.active{border-color:var(--primary);background:var(--primary);color:#fff}.sensor-filter button span{display:inline-grid;place-items:center;min-width:20px;height:20px;margin-left:4px;border-radius:10px;background:color-mix(in srgb,currentColor 12%,transparent);font-size:.65rem}.sensor-scenario-label{display:flex;align-items:center;gap:6px;padding-right:7px;color:#385f51;font-size:.67rem;font-weight:750}.sensor-scenario-label i{width:8px;height:8px;border-radius:50%;background:var(--primary)}
.sensor-groups{display:grid;gap:12px}.sensor-group{padding:14px;border:1px solid var(--border);border-radius:15px;background:var(--surface);box-shadow:var(--shadow)}.sensor-group>header{display:flex;align-items:start;justify-content:space-between;gap:18px;margin-bottom:12px}.sensor-group>header h3{margin:2px 0 0;font-size:1.05rem}.sensor-group>header p{max-width:520px;margin:0;color:var(--muted);font-size:.66rem;line-height:1.45;text-align:right}.sensor-card-grid,.sensor-heating-map__circuits{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:9px}.sensor-card{display:grid;grid-template-columns:minmax(0,1fr) 110px;grid-template-areas:"top top" "value trend" "state trend";gap:4px 10px;min-width:0;min-height:142px;padding:11px;border:1px solid var(--border);border-left:4px solid #2b8061;border-radius:11px;background:#fff;color:var(--text);text-align:left;box-shadow:0 3px 10px rgba(15,51,39,.05);cursor:pointer}.sensor-card:hover,.sensor-card:focus-visible{border-color:var(--primary);box-shadow:0 7px 18px rgba(15,91,65,.13);transform:translateY(-1px)}.sensor-card__top{grid-area:top;display:flex;align-items:start;justify-content:space-between;gap:8px}.sensor-card__top>span{display:flex;flex-direction:column;min-width:0}.sensor-card__top small{overflow:hidden;color:var(--muted);font-size:.56rem;text-overflow:ellipsis;white-space:nowrap}.sensor-card__top strong{font-size:.73rem}.sensor-card__top i{width:9px;height:9px;margin-top:3px;border:2px solid #fff;border-radius:50%;background:#2b8061;box-shadow:0 0 0 1px #2b8061}.sensor-card__value{grid-area:value;align-self:end;display:flex;align-items:baseline;gap:4px}.sensor-card__value b{font-size:1.18rem}.sensor-card__value em{color:var(--muted);font-size:.62rem;font-style:normal}.sensor-card__state{grid-area:state;display:flex;flex-direction:column;gap:2px}.sensor-card__state strong{font-size:.6rem}.sensor-card__state small{color:var(--muted);font-size:.56rem}.sensor-card.state-warning,.sensor-card.state-stale,.sensor-card.state-trendgap{border-left-color:#c07b12}.sensor-card.state-warning .sensor-card__top i,.sensor-card.state-stale .sensor-card__top i,.sensor-card.state-trendgap .sensor-card__top i{background:#c07b12;box-shadow:0 0 0 1px #c07b12}.sensor-card.state-bad,.sensor-card.state-nodata{border-left-color:#b73c31}.sensor-card.state-bad .sensor-card__top i,.sensor-card.state-nodata .sensor-card__top i{background:#b73c31;box-shadow:0 0 0 1px #b73c31}.sensor-card.state-unmapped,.sensor-card.state-unknown,.sensor-card.state-initializing{border-left-color:#6e7781}.sensor-card.state-unmapped .sensor-card__top i,.sensor-card.state-unknown .sensor-card__top i,.sensor-card.state-initializing .sensor-card__top i{background:#6e7781;box-shadow:0 0 0 1px #6e7781}.sensor-card.state-recovery{border-left-color:#2775a8;background:#f6fbff}.sensor-trend{grid-area:trend;align-self:end;min-width:0}.sensor-trend svg{display:block;width:100%;height:58px}.sensor-trend polyline{fill:none;stroke:#2b8061;stroke-width:3;vector-effect:non-scaling-stroke}.sensor-trend__axis{stroke:#d7e1dc;stroke-width:1}.sensor-trend__gap{stroke:#b73c31;stroke-width:1.5;stroke-dasharray:4 3}.sensor-trend--large svg{height:210px}.sensor-trend__time{display:flex;justify-content:space-between;color:var(--muted);font-size:.58rem}
.sensor-aggregate{display:grid;grid-template-columns:minmax(210px,.7fr) minmax(0,1.3fr);gap:14px;margin-bottom:12px;padding:11px;border:1px solid #acd2c2;border-radius:10px;background:#f2faf6}.sensor-aggregate>div{display:flex;flex-direction:column}.sensor-aggregate small{color:var(--muted);font-size:.58rem;text-transform:uppercase}.sensor-aggregate strong{font-size:1.35rem}.sensor-aggregate span{color:#45675b;font-size:.59rem}.sensor-aggregate dl{display:grid;grid-template-columns:repeat(4,1fr);margin:0}.sensor-aggregate dl>div{display:flex;flex-direction:column;justify-content:center;padding:0 12px;border-left:1px solid #cfe2da}.sensor-aggregate dt{color:var(--muted);font-size:.56rem}.sensor-aggregate dd{margin:2px 0 0;font-size:.72rem;font-weight:800}.sensor-aggregate.is-insufficient{border-color:#e2c99d;background:#fff9ef}.sensor-heating-map{display:grid;gap:0}.sensor-card--supply{width:min(430px,100%);margin:auto}.sensor-heating-map__connector{height:30px;position:relative}.sensor-heating-map__connector:before{content:"";position:absolute;left:50%;top:0;width:1px;height:16px;background:#5d8d7b}.sensor-heating-map__connector span{position:absolute;left:12.5%;right:12.5%;top:15px;border-top:1px solid #5d8d7b}.sensor-heating-map__connector span:after{content:"";position:absolute;left:50%;top:-4px;width:7px;height:7px;border-radius:50%;background:#5d8d7b;transform:translateX(-50%)}
.sensors-empty{display:flex;flex-direction:column;gap:3px;padding:24px;border:1px dashed #a8c8bb;border-radius:13px;background:#f5fbf8;text-align:center}.sensors-empty span{color:var(--muted);font-size:.7rem}.sensors-demo-tools{margin-top:12px;padding:10px 12px;border:1px dashed #adc8bc;border-radius:10px;background:#f6faf8}.sensors-demo-tools summary{cursor:pointer;font-size:.68rem;font-weight:800}.sensors-demo-tools label{display:flex;align-items:center;gap:10px;margin-top:10px;font-size:.65rem}.sensors-demo-tools select{min-height:40px;min-width:280px;padding:6px 9px;border:1px solid var(--border);border-radius:8px;background:#fff}.sensors-demo-tools p{margin:7px 0 0;color:var(--muted);font-size:.6rem}
.sensor-detail-backdrop{position:fixed;z-index:90;inset:0;background:rgba(7,31,23,.28);backdrop-filter:blur(1px)}.sensor-detail{position:fixed;z-index:91;top:0;right:0;width:min(480px,100vw);height:100dvh;background:var(--surface);box-shadow:-18px 0 45px rgba(15,51,39,.23);overflow:hidden}.sensor-detail>header{min-height:82px;display:flex;align-items:center;justify-content:space-between;gap:14px;padding:14px 17px;border-bottom:1px solid var(--border)}.sensor-detail>header h2{margin:2px 0;font-size:1.1rem}.sensor-detail>header p{margin:0;color:var(--muted);font-size:.62rem}.sensor-detail__close{min-width:88px;min-height:44px;padding:8px;border:1px solid var(--border);border-radius:9px;background:#fff;font-weight:800}.sensor-detail__body{height:calc(100dvh - 82px);overflow:auto;padding:14px}.sensor-detail-value{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:14px;border:1px solid #b7d7ca;border-left:5px solid #2b8061;border-radius:10px;background:#f4faf7}.sensor-detail-value>div{display:flex;align-items:baseline;gap:5px}.sensor-detail-value>div strong{font-size:1.8rem}.sensor-detail-value>div span{color:var(--muted);font-size:.75rem}.sensor-detail-value p{display:flex;flex-direction:column;align-items:flex-end;margin:0;text-align:right}.sensor-detail-value p b{font-size:.67rem}.sensor-detail-value p span{color:var(--muted);font-size:.58rem}.sensor-detail-value.state-warning,.sensor-detail-value.state-stale,.sensor-detail-value.state-trendgap{border-left-color:#c07b12;background:#fff9ef}.sensor-detail-value.state-bad,.sensor-detail-value.state-nodata{border-left-color:#b73c31;background:#fff6f5}.sensor-detail-trend{margin-top:12px;padding:11px;border:1px solid var(--border);border-radius:11px}.sensor-detail-trend__heading{display:flex;align-items:center;justify-content:space-between;gap:10px}.sensor-detail-trend__heading h3{margin:0;font-size:.82rem}.sensor-detail-trend__heading>div{display:flex;gap:4px}.sensor-detail-trend__heading button{min-height:34px;padding:5px 8px;font-size:.6rem}.sensor-detail-facts{display:grid;grid-template-columns:1fr 1fr;margin:12px 0;border:1px solid var(--border);border-radius:10px;overflow:hidden}.sensor-detail-facts>div{min-width:0;padding:9px 10px;border-right:1px solid var(--border);border-bottom:1px solid var(--border)}.sensor-detail-facts dt{color:var(--muted);font-size:.56rem}.sensor-detail-facts dd{overflow-wrap:anywhere;margin:3px 0 0;font-size:.65rem;font-weight:750}.sensor-detail-facts__wide{grid-column:1/-1}.sensor-detail-facts code{font-size:.59rem}.sensor-calibration-link{display:flex;align-items:center;justify-content:center;min-height:44px;border:1px solid var(--primary);border-radius:9px;color:var(--primary);font-size:.67rem;font-weight:800;text-decoration:none}.sensor-calibration-link:hover,.sensor-calibration-link:focus-visible{background:var(--primary);color:#fff}.sensor-readonly-note{margin:10px 0 0;color:var(--muted);font-size:.6rem;text-align:center}
@media(max-width:1450px){.sensor-card-grid,.sensor-heating-map__circuits{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:1050px){.sensor-card-grid,.sensor-heating-map__circuits{grid-template-columns:repeat(2,minmax(0,1fr))}.sensors-heading{align-items:stretch;flex-direction:column}.sensors-summary{min-width:0;width:100%}}
@media(max-width:620px){.sensors-heading{margin-top:8px}.sensors-heading h2{font-size:1.2rem}.sensors-summary>span{padding:8px}.sensors-toolbar{align-items:stretch;flex-direction:column}.sensor-filter{display:grid;grid-template-columns:1fr 1fr}.sensor-filter button{min-height:44px}.sensor-scenario-label{padding:2px 5px}.sensor-group{padding:10px}.sensor-group>header{display:grid;gap:4px}.sensor-group>header p{text-align:left}.sensor-card-grid,.sensor-heating-map__circuits{grid-template-columns:1fr}.sensor-card{grid-template-columns:minmax(0,1fr) 125px;min-height:138px}.sensor-aggregate{grid-template-columns:1fr}.sensor-aggregate dl{grid-template-columns:1fr 1fr}.sensor-aggregate dl>div{padding:7px;border-top:1px solid #cfe2da;border-left:0}.sensor-heating-map__connector{height:23px}.sensor-heating-map__connector span{display:none}.sensor-heating-map__connector:before{height:23px}.sensors-demo-tools label{align-items:stretch;flex-direction:column}.sensors-demo-tools select{width:100%;min-width:0;min-height:44px}.sensor-detail{width:100%}.sensor-detail>header{min-height:76px;padding:10px}.sensor-detail__body{height:calc(100dvh - 76px);padding:10px 10px calc(20px + env(safe-area-inset-bottom))}.sensor-detail-value{align-items:flex-start;flex-direction:column}.sensor-detail-value p{align-items:flex-start;text-align:left}.sensor-detail-trend__heading{align-items:stretch;flex-direction:column}.sensor-detail-trend__heading>div{display:grid;grid-template-columns:repeat(4,1fr)}.sensor-detail-trend__heading button{min-height:44px}.sensor-detail-facts{grid-template-columns:1fr}.sensor-detail-facts__wide{grid-column:auto}.sensor-trend--large svg{height:180px}}
@media (min-width: 1550px) {
  .climate-trend-grid { grid-template-columns: repeat(4, minmax(0px, 1fr)); }
  .climate-trend-grid .chart-card__heading { min-height: 54px; }
}
@media (max-width: 760px) {
  .app-shell { display: block; padding-top: 59px; }
  .navigation-rail { display: none; }
  .mobile-navigation { position: fixed; inset: 0px 0px auto; z-index: 10; display: grid; grid-template-columns: repeat(6, 1fr); height: 59px; border-bottom: 1px solid rgb(40, 86, 65); background: rgb(18, 60, 44); }
  .mobile-nav-link { display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 0.15rem; min-width: 0px; color: rgb(185, 212, 197); text-decoration: none; font-size: 0.55rem; }
  .mobile-nav-link .nav-icon { width: 17px; height: 17px; }
  .mobile-nav-link.active { color: rgb(255, 255, 255); background: rgba(255, 255, 255, 0.1); }
  .operator-page { padding: var(--space-3); }
  .operator-topbar { min-height: 0px; flex-direction: column; }
  .operator-status { justify-content: flex-start; }
  .zone-summary-grid, .zone-detail-grid, .charts-grid { grid-template-columns: 1fr; }
  .weather-widget-grid, .service-summary { grid-template-columns: repeat(2, minmax(0px, 1fr)); }
  .climate-measurements { grid-template-columns: repeat(2, minmax(0px, 1fr)); }
  .service-tag-table { overflow-x: auto; }
  .service-tag-row { min-width: 850px; }
  .section-heading { align-items: flex-start; flex-direction: column; }
  .operator-footer { flex-direction: column; }
  .climate-process-main { grid-template-columns: 1fr; }
  .operating-summary { grid-template-columns: repeat(2, minmax(0px, 1fr)); }
  .climate-trend-grid { grid-template-columns: 1fr; }
  .climate-context { grid-template-columns: 1fr; }
  .context-section { border-right: 0px; border-bottom: 1px solid var(--border); }
  .greenhouse-climate-process { max-height: none; }
}
@media (max-width: 480px) {
  .compact-widget-grid, .weather-widget-grid, .service-summary { grid-template-columns: 1fr; }
  .equipment-compact-grid, .climate-outputs { grid-template-columns: 1fr; }
  .profile-widget__value { font-size: 1.2rem; }
  .climate-zone-selector { display: grid; grid-template-columns: repeat(2, minmax(0px, 1fr)); }
  .climate-zone-selector__label { grid-column: 1 / -1; }
  .climate-zone-selector a { justify-content: center; padding-inline: 0.35rem; }
  .operating-summary { gap: 0.35rem; }
  .operating-summary__item { padding-inline: 0.65rem; }
  .process-card-heading { align-items: flex-start; flex-direction: column; gap: 0.2rem; }
  .process-accessibility-note { font-size: 0.58rem; }
}

/* DEMO-UI-007 — approved climate main and synchronized trends */
.climate-process-page,.climate-trends-page{max-width:1760px;overflow-x:hidden}
.climate-process-main{display:grid!important;grid-template-columns:minmax(0,1fr) 310px!important;gap:12px!important;align-items:start}
.climate-main-synoptic{min-width:0;border:1px solid var(--border);border-radius:14px;background:var(--surface);box-shadow:var(--shadow);padding:12px;overflow:hidden}
.greenhouse-shell{position:relative;height:520px;margin-top:8px;border:1px solid #dce8e1;border-radius:11px;background:linear-gradient(180deg,#fbfdfc,#f6faf7);overflow:hidden}
.greenhouse-structure{position:absolute;inset:0;width:100%;height:100%;overflow:visible}
.greenhouse-construction{fill:none;stroke:#9aa9a1;stroke-width:2.2;vector-effect:non-scaling-stroke}
.greenhouse-construction line:last-child{stroke:#537663;stroke-width:3}
.physical-vent{stroke:#176c4b;stroke-width:4;stroke-linecap:round;vector-effect:non-scaling-stroke;transition:transform .35s ease}
.vent-hinge{fill:#fff;stroke:#176c4b;stroke-width:2;vector-effect:non-scaling-stroke}
.vent-drive-labels{position:absolute;z-index:4;top:5%;left:42%;width:23%;display:flex;justify-content:space-between;gap:8px;transform:translateX(-4%)}
.vent-drive-label{display:grid;grid-template-columns:auto auto;gap:1px 5px;min-width:72px;padding:4px 7px;border:1px solid #cbded4;border-radius:7px;background:rgba(255,255,255,.94);color:#1c4535;font-size:12px;text-align:left}
.vent-drive-label small{grid-column:1/-1;color:var(--muted);font-size:10px}.vent-drive-label.is-selected{outline:2px solid #1a875e}
.curtain-stack{position:absolute;z-index:3;top:28%;left:7%;right:7%;display:grid;gap:8px}
.curtain-plane{position:relative;display:grid;grid-template-columns:1fr auto;align-items:center;gap:7px;width:100%;height:24px;padding:2px 8px;border:0;background:transparent;color:#315847;font-size:11px;text-align:left}
.curtain-plane>span{position:absolute;inset:5px auto 5px 0;border:1px solid #7fb69a;background:repeating-linear-gradient(90deg,#d9eee2 0 6px,#f4faf7 6px 11px)}
.curtain-plane:nth-child(2)>span{border-color:#d98361;background:repeating-linear-gradient(90deg,#fde7dc 0 6px,#fff7f3 6px 11px)}
.curtain-plane strong,.curtain-plane b{z-index:1;background:#fff;padding:1px 4px}.curtain-plane b{justify-self:end}
.climate-reading-panel{position:absolute;z-index:5;top:41%;left:50%;transform:translateX(-50%);display:grid;grid-template-columns:repeat(2,1fr);gap:5px;width:27%;min-width:220px;padding:10px;border:1px solid #cfddd5;border-radius:8px;background:rgba(255,255,255,.97);box-shadow:0 5px 15px rgba(25,68,50,.08);color:#173c2d;text-align:left}
.climate-reading-panel span{display:grid;grid-template-columns:1fr auto;gap:2px 6px}.climate-reading-panel small{font-size:11px}.climate-reading-panel strong{font-size:13px}.climate-reading-panel em{grid-column:1/-1;color:#28845e;font-size:9px;font-style:normal}.climate-reading-panel.is-selected{outline:2px solid #1a875e}
.greenhouse-sensors{position:absolute;z-index:4;inset:0;pointer-events:none}.greenhouse-sensor{position:absolute;display:flex;align-items:center;gap:4px;padding:4px 6px;border:0;background:rgba(255,255,255,.8);color:#214738;font-size:10px;pointer-events:auto}.greenhouse-sensor span{color:#237b57}.greenhouse-sensor small{color:#237b57}.greenhouse-sensor--sensor-t1{left:12%;top:77%}.greenhouse-sensor--sensor-t2{left:38%;top:64%}.greenhouse-sensor--sensor-t3{right:38%;top:64%}.greenhouse-sensor--sensor-t4{right:12%;top:77%}
.greenhouse-aux{position:absolute;z-index:5;top:55%;display:grid;justify-items:center;gap:3px;width:20%;padding:8px;border:0;background:transparent;color:#166d4a}.greenhouse-aux--fan{left:12%}.greenhouse-aux--misting{right:12%}.greenhouse-aux strong{font-size:12px}.greenhouse-aux b,.greenhouse-aux small{font-size:10px}.fan-symbol{display:grid;place-items:center;width:50px;height:50px;border:2px solid #2d8d66;border-radius:50%;font-size:34px;line-height:1}.mist-symbol{font-size:40px;letter-spacing:-10px;transform:rotate(-90deg)}
.heating-mode-controls{display:flex;align-items:center;gap:12px;margin-top:8px;padding:7px 9px;border:1px solid var(--border);border-radius:9px;background:#fbfcfb;font-size:11px}.heating-mode-controls>div{display:flex;flex:1}.heating-mode-controls button{flex:1;min-height:34px;border:1px solid transparent;background:transparent;font-size:11px}.heating-mode-controls button.active{border-color:#6baa8b;border-radius:7px;background:#eef8f2;color:#116a48;font-weight:700}.heating-mode-controls>span{display:flex;align-items:center;gap:4px;white-space:nowrap}.status-dot{width:10px;height:10px;border:1px solid #447;border-radius:50%}.status-dot--active{border-color:#e76f24;background:#e76f24}.status-dot--off{background:#fff}
.heating-circuit-panel{display:grid;grid-template-columns:minmax(225px,280px) minmax(0,1fr);gap:10px;margin-top:8px}.heating-circuit-list{display:grid;gap:3px;align-content:start}.heating-circuit-list button{display:grid;grid-template-columns:12px 1fr auto auto;align-items:center;gap:2px 7px;min-height:35px;padding:4px 7px;border:1px solid var(--border);border-radius:6px;background:#fff;color:#204437;text-align:left}.heating-circuit-list button>i{grid-row:1/3;width:10px;height:10px;border:1px solid #517565;border-radius:50%}.heating-circuit-list button>strong{font-size:11px}.heating-circuit-list button>span{font-size:10px}.heating-circuit-list button>b,.heating-circuit-list button>em,.heating-circuit-list button>small{font-size:9px;font-style:normal}.heating-circuit-list button.active{border-color:#1f8a60;box-shadow:inset 3px 0 #1f8a60}.heating-circuit-list button.state-critical small{color:#b63232}.heating-circuit-list button.state-unavailable{border-style:dashed;opacity:.78}
.heating-circuit-detail{min-width:0;border:1px solid var(--border);border-radius:9px;background:#fff;padding:9px}.heating-circuit-detail>header{display:flex;justify-content:space-between;align-items:start}.heating-circuit-detail h3{margin:2px 0;font-size:14px}.hydraulic-layout{display:grid;grid-template-columns:minmax(0,1.2fr) minmax(180px,.8fr);gap:7px;align-items:center}.hydraulic-layout>svg:first-child{width:100%;height:155px}.hydraulic-layout text{fill:#476557;font-size:10px}.hydraulic-supply{fill:none;stroke:#ec563f;stroke-width:3}.hydraulic-return,.hydraulic-bypass{fill:none;stroke:#3478c8;stroke-width:3}.pump-symbol,.three-way-valve path,.three-way-valve circle{fill:#fff;stroke:#284d3d;stroke-width:2}.pump-arrow{fill:#284d3d}.heat-receiver{fill:#f8fbf9;stroke:#365e4c;stroke-width:2}.heat-wave{fill:none;stroke:#e26343;stroke-width:2}.twi-sensor{fill:#fff;stroke:#1c7f58;stroke-width:3}.circuit-facts{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:5px}.circuit-facts span{display:flex;flex-direction:column;padding:5px;border-radius:6px;background:#f5f8f6}.circuit-facts small{font-size:9px;color:var(--muted)}.circuit-facts strong{font-size:10px}.circuit-sparkline{grid-column:2;width:100%;height:52px}.circuit-sparkline polyline{fill:none;stroke:#197b55;stroke-width:2}.heating-circuit-detail>p{margin:2px 0 0;color:var(--muted);font-size:10px}
.weather-detail-row{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:8px}.wind-rose{position:relative;height:145px;border:1px solid var(--border);border-radius:9px;background:radial-gradient(circle,#fff 0 38%,#edf4f0 39% 40%,transparent 41%);text-align:center}.wind-rose:before,.wind-rose:after{position:absolute;left:50%;top:15px;bottom:28px;border-left:1px solid #cbd8d1;content:""}.wind-rose:after{transform:rotate(90deg)}.wind-rose>i{position:absolute;z-index:2;left:50%;top:50%;width:0;height:0;border-left:7px solid transparent;border-right:7px solid transparent;border-bottom:48px solid #16724f;transform-origin:50% 86%}.wind-rose strong{position:absolute;left:8px;bottom:6px;font-size:11px}.wind-rose small{position:absolute;right:7px;bottom:6px;font-size:9px}.wind-label{position:absolute;font-size:9px}.wind-label--n{top:4px;left:49%}.wind-label--e{right:4px;top:48%}.wind-label--s{bottom:27px;left:49%}.wind-label--w{left:4px;top:48%}.rain-state{display:grid;place-items:center;align-content:center;gap:3px;border:1px solid var(--border);border-radius:9px}.rain-state>span{font-size:32px}.rain-state small{color:var(--muted)}.rain-state strong{font-size:18px}.rain-state b{font-size:10px}.rain-state.is-active{color:#0e7149;background:#f0faf4}.rain-state.is-off{color:#65776e;background:#f6f7f6}
.context-chart-library{min-width:0}.context-chart-toolbar{display:flex;justify-content:space-between;align-items:center;gap:10px;margin-bottom:8px}.context-chart-toolbar details{position:relative}.context-chart-toolbar summary{cursor:pointer;font-weight:700}.context-chart-picker{position:absolute;z-index:12;top:30px;left:0;display:grid;gap:4px;width:260px;padding:9px;border:1px solid var(--border);border-radius:8px;background:#fff;box-shadow:var(--shadow)}.context-chart-picker label{display:flex;gap:6px;padding:5px;border-radius:5px}.context-chart-picker label.is-selected{background:#eef8f2}.overview-context-trends{display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:10px}.overview-trend-area{display:flex;flex-direction:column;min-width:0;min-height:335px;border:1px solid var(--border);border-radius:12px;background:#fff;padding:6px}.overview-trend-area>.multi-axis-chart{flex:1;border:0;box-shadow:none}.overview-trend-area>a{align-self:flex-start;margin:0 9px 7px;color:#14714e;font-size:11px;font-weight:700}
.trend-workbench{display:grid;grid-template-columns:280px minmax(0,1fr);gap:12px;align-items:start}.trend-series-picker{position:sticky;top:12px;max-height:calc(100vh - 24px);overflow:auto;border:1px solid var(--border);border-radius:12px;background:#fff;padding:10px}.trend-series-picker>header{display:flex;justify-content:space-between}.trend-series-picker h2{margin:2px 0 8px}.picker-close,.picker-open{display:none}.trend-tag-option{display:grid;grid-template-columns:16px 8px 1fr auto;gap:5px;align-items:center;padding:6px;border:1px solid transparent;border-radius:6px}.trend-tag-option>i{width:7px;height:7px;border-radius:50%}.trend-tag-option>span{display:flex;min-width:0;flex-direction:column}.trend-tag-option strong{font-size:11px}.trend-tag-option small{overflow:hidden;color:var(--muted);font-size:9px;text-overflow:ellipsis}.trend-tag-option em{font-size:9px;font-style:normal}.trend-tag-option>b{grid-column:3/-1;color:#267b59;font-size:8px}.trend-tag-option.is-selected{border-color:#8ec3aa;background:#eef8f2}.trend-tag-option.is-unavailable{opacity:.58}.trend-tag-option.is-unavailable>b{color:#a55a31}.trend-analysis-area{min-width:0;border:1px solid var(--border);border-radius:14px;background:#fff;padding:12px}.trend-analysis-header{display:flex;justify-content:space-between}.trend-analysis-header h2{margin:2px 0 8px}.trend-preset-bar{display:flex;align-items:center;gap:5px;overflow-x:auto;padding:5px 0}.trend-preset-bar>span{font-size:10px;font-weight:700;white-space:nowrap}.trend-preset-bar button{min-height:30px;padding:4px 8px;border:1px solid var(--border);border-radius:6px;background:#fff;font-size:10px;white-space:nowrap}.trend-preset-bar button.active{border-color:#197a55;background:#eaf7ef;color:#116a48}.custom-range-control{display:flex;flex-wrap:wrap;gap:8px;align-items:end;padding:7px;background:#f5f8f6}.custom-range-control label{display:flex;flex-direction:column;font-size:10px}.custom-range-control input{min-height:34px}.series-limit-message,.preset-incomplete{display:flex;gap:6px;margin:7px 0;padding:7px 9px;border-radius:7px;font-size:11px}.series-limit-message{background:#fff2d7;color:#74501c}.preset-incomplete{background:#fff0e8;color:#8c4525}.selected-series-legend{display:flex;flex-wrap:wrap;gap:5px;align-items:center;margin:7px 0}.selected-series-legend>div{display:grid;grid-template-columns:7px 1fr auto auto;gap:5px;align-items:center;min-width:180px;padding:5px 7px;border:1px solid var(--border);border-radius:7px}.selected-series-legend>div>i{width:7px;height:7px;border-radius:50%}.selected-series-legend span{display:flex;flex-direction:column}.selected-series-legend strong{font-size:10px}.selected-series-legend small{font-size:8px;color:var(--muted)}.selected-series-legend button{border:0;background:transparent;font-size:9px}.selected-series-legend .is-hidden{opacity:.45;text-decoration:line-through}.event-lane-selector{display:flex;flex-wrap:wrap;gap:8px;align-items:center;margin:7px 0;padding:6px 8px;border-radius:7px;background:#f5f8f6;font-size:10px}.event-lane-selector>span{font-weight:700}.event-lane-selector label{display:flex;gap:3px}.event-lane-selector em{margin-left:auto;color:var(--muted);font-style:normal}
.synchronized-trend{min-width:0}.trend-lanes-stack{position:relative;display:grid;gap:6px;padding:5px 0}.numeric-trend-lane{display:grid;grid-template-columns:145px minmax(0,1fr);min-width:0;border:1px solid var(--border);border-radius:8px;overflow:hidden}.numeric-trend-lane>header,.discrete-state-lane>header{display:flex;flex-direction:column;justify-content:center;padding:7px;background:#f5f8f6}.numeric-trend-lane>header strong,.discrete-state-lane>header strong{font-size:10px}.numeric-trend-lane>header span,.discrete-state-lane>header span{color:var(--muted);font-size:9px}.numeric-trend-lane svg{display:block;width:100%;height:142px}.lane-background{fill:#fff}.lane-grid{stroke:#e3ebe6;stroke-width:1}.lane-tick,.lane-time{fill:#718078;font-size:9px}.bad-quality-point{fill:#fff;stroke:#c4473e;stroke-width:2}.discrete-state-lane{display:grid;grid-template-columns:145px minmax(0,1fr);min-height:45px;border:1px solid var(--border);border-radius:8px;overflow:hidden}.discrete-state-track{position:relative;margin:8px 2.8%;background:#edf2ef}.discrete-state-track>span{position:absolute;top:0;bottom:0;display:grid;place-items:center;overflow:hidden;border-right:1px solid #fff;font-size:8px;white-space:nowrap}.tone-normal,.tone-active{background:#ccebd9;color:#0f6545}.tone-manual{background:#dbe6f7;color:#345a87}.tone-warning{background:#ffe3c2;color:#8d4d15}.tone-muted{background:#e9eeeb;color:#53645b}.event-marker-layer{position:absolute;z-index:5;inset:0 2.8% 0 16.5%;pointer-events:none}.event-marker{position:absolute;top:0;bottom:0;width:1px;padding:0;border:0;border-left:1px dashed #ac6535;background:transparent;pointer-events:auto}.event-marker i{position:absolute;top:2px;left:-5px;width:9px;height:9px;border-radius:50%;background:#b45d2a}.event-marker span{position:absolute;top:1px;left:7px;padding:1px 3px;background:#fff8e9;color:#71431f;font-size:7px;white-space:nowrap}.event-marker--alarm{border-color:#b73333}.event-marker--alarm i{background:#b73333}.event-marker--quality{border-color:#6b6aa4}.event-marker--quality i{background:#6b6aa4}.shared-time-cursor{position:absolute;z-index:8;top:0;bottom:0;width:1px;background:#173f31;pointer-events:none}.shared-time-cursor-control{position:absolute;z-index:9;inset:0 2.8% 0 16.5%;width:80.7%;height:100%;opacity:.01;cursor:ew-resize}.shared-trend-tooltip{position:absolute;z-index:10;top:30px;display:grid;gap:3px;width:245px;padding:7px;border:1px solid #acc5b8;border-radius:8px;background:rgba(255,255,255,.97);box-shadow:0 6px 18px rgba(30,69,52,.14);transform:translateX(-50%);pointer-events:none}.shared-trend-tooltip>strong{font-size:10px}.shared-trend-tooltip>span{display:grid;grid-template-columns:7px 1fr auto;gap:5px;align-items:center}.shared-trend-tooltip i{width:6px;height:6px;border-radius:50%}.shared-trend-tooltip span span{display:flex;flex-direction:column}.shared-trend-tooltip span span,.shared-trend-tooltip b{font-size:9px}.shared-trend-tooltip small{color:var(--muted);font-size:8px}.shared-time-axis-label{padding:6px;color:var(--muted);font-size:9px;text-align:center}.shared-time-axis-label span{font-weight:700}.trend-query-state{display:flex;flex-direction:column;gap:3px;padding:28px;border:1px dashed var(--border);border-radius:8px;text-align:center}.trend-query-state--error{background:#fff1ed;color:#8b362d}.preset-editor{display:flex;flex-wrap:wrap;gap:8px;align-items:end;margin-top:10px;padding:9px;border:1px solid var(--border);border-radius:8px;background:#f8faf9}.preset-editor h3{margin:2px 0}.preset-editor label{display:flex;flex-direction:column;font-size:9px}.preset-editor input[type=text]{min-height:34px}.preset-editor .share-preset{flex-direction:row;align-items:center}.preset-editor>small{color:var(--muted);font-size:8px}.user-preset-list{display:flex;flex-basis:100%;gap:5px}.user-preset-list span{display:flex;gap:6px;padding:4px 6px;border:1px solid var(--border);border-radius:5px;font-size:9px}
@media (prefers-reduced-motion:reduce){.physical-vent,.fan-symbol{transition:none!important;animation:none!important}}
@media (max-width:1100px){.climate-process-main{grid-template-columns:1fr!important}.climate-status-sidebar{width:100%!important;display:grid;grid-template-columns:repeat(3,minmax(0,1fr))}.trend-workbench{grid-template-columns:235px minmax(0,1fr)}}
@media (max-width:820px){.climate-status-sidebar{grid-template-columns:1fr}.greenhouse-shell{height:560px}.heating-mode-controls{align-items:stretch;flex-direction:column}.heating-mode-controls>div{width:100%}.heating-circuit-panel{grid-template-columns:1fr}.heating-circuit-list{grid-template-columns:repeat(2,minmax(0,1fr))}.hydraulic-layout{grid-template-columns:1fr}.circuit-sparkline{grid-column:1}.overview-context-trends{grid-template-columns:1fr!important}.overview-trend-area{min-height:320px}.trend-workbench{grid-template-columns:1fr}.trend-series-picker{position:fixed;z-index:50;inset:0 0 0 auto;width:min(92vw,360px);max-height:none;border-radius:0;transform:translateX(105%);transition:transform .2s ease}.trend-series-picker.is-open{transform:translateX(0)}.picker-close,.picker-open{display:block}.numeric-trend-lane,.discrete-state-lane{grid-template-columns:100px minmax(0,1fr)}.event-marker-layer,.shared-time-cursor-control{left:105px}.event-lane-selector em{margin-left:0}.context-chart-toolbar{align-items:flex-start;flex-direction:column}}
@media (max-width:480px){.climate-main-synoptic{padding:7px}.process-card-heading{align-items:flex-start;flex-direction:column}.greenhouse-shell{height:590px}.vent-drive-labels{top:8%;left:36%;width:37%}.vent-drive-label{min-width:57px;padding:3px;font-size:10px}.curtain-stack{top:25%;left:6%;right:6%}.climate-reading-panel{top:37%;width:46%;min-width:165px;padding:6px}.climate-reading-panel small{font-size:9px}.climate-reading-panel strong{font-size:10px}.greenhouse-aux{top:58%;width:32%}.greenhouse-aux--fan{left:4%}.greenhouse-aux--misting{right:4%}.greenhouse-sensor--sensor-t1{left:5%;top:82%}.greenhouse-sensor--sensor-t4{right:5%;top:82%}.greenhouse-sensor--sensor-t2{left:31%;top:71%}.greenhouse-sensor--sensor-t3{right:31%;top:71%}.greenhouse-sensor{padding:2px;font-size:8px}.heating-mode-controls>div{display:grid;grid-template-columns:1fr}.heating-circuit-list{grid-template-columns:1fr}.hydraulic-layout>svg:first-child{height:130px}.overview-trend-area{min-height:290px}.numeric-trend-lane{grid-template-columns:1fr}.numeric-trend-lane>header{flex-direction:row;justify-content:space-between}.numeric-trend-lane svg{height:130px}.discrete-state-lane{grid-template-columns:92px minmax(0,1fr)}.event-marker-layer{left:0}.shared-time-cursor-control{left:0;width:94%}.shared-trend-tooltip{left:50%!important;width:88%;transform:translateX(-50%)}.trend-analysis-area{padding:8px}.trend-preset-bar{margin-inline:-4px}.selected-series-legend>div{flex:1 1 100%}.preset-editor{align-items:stretch;flex-direction:column}.custom-range-control{align-items:stretch;flex-direction:column}}

/* DEMO-UI-006 visual QA refinements */
.process-synoptic { position:relative; display:block !important; min-height:548px !important; padding:55px 10px 10px !important; overflow:hidden !important; }
.process-outdoor { position:absolute !important; z-index:5; top:18px !important; left:18px !important; width:154px !important; min-height:34px !important; display:flex !important; gap:7px !important; align-items:center !important; margin:0 !important; padding:4px 7px !important; border:0 !important; background:rgba(245,250,246,.82) !important; }
.process-outdoor > span:nth-child(n+3) { display:none !important; }.process-outdoor > span:first-child { font-size:1.1rem !important; }.process-outdoor small { font-size:.58rem !important; }.process-outdoor strong { font-size:.72rem !important; }
.greenhouse-process { min-height:480px !important; padding:43px 11px 9px !important; }.greenhouse-process::before,.greenhouse-process::after { display:none !important; }
.process-vent-row { top:-26px !important; left:8% !important; right:2% !important; gap:7px !important; }
.process-vent-row .process-node { height:56px !important; min-height:56px !important; padding:4px 8px !important; transform:none !important; grid-template-columns:18px minmax(0,1fr) auto !important; border:1px solid #b8d3c8 !important; border-bottom:3px solid var(--primary) !important; border-radius:6px !important; }
.process-vent-row .process-node__icon { width:18px !important; height:18px !important; }.process-vent-row .process-node span { line-height:1.05 !important; }.process-vent-row .process-node span small { font-size:.53rem !important; }.process-vent-row .process-node span strong { font-size:.66rem !important; }.process-vent-row .process-node span b { font-size:.64rem !important; }.process-vent-row .process-node__limit { font-size:.51rem !important; white-space:nowrap; }.process-vent-row .process-node em { font-size:.49rem !important; }
.process-screen-track { height:27px !important; margin:0 0 5px !important; }.process-screen-track .process-node { height:24px !important; min-height:24px !important; padding:1px 6px !important; }.process-screen-track .process-node span small { display:none; }.process-screen-track .process-node span strong,.process-screen-track .process-node span b { font-size:.61rem !important; }
.process-zone-interior { grid-template-rows:auto auto auto 25px auto !important; gap:5px !important; min-height:0 !important; }
.process-climate-core { min-height:72px !important; padding:7px !important; }.process-climate-core strong { font-size:1.35rem !important; }
.process-sensor-row { grid-template-columns:repeat(4,minmax(0,1fr)) !important; gap:4px !important; }.process-sensor-row .process-node { min-height:39px !important; padding:3px 5px !important; grid-template-columns:12px 1fr !important; }.process-sensor-row .process-node__icon { width:12px !important;height:12px !important;}.process-sensor-row .process-node span small { display:none; }.process-sensor-row .process-node span strong,.process-sensor-row .process-node span b { font-size:.58rem !important; }.process-sensor-row .process-node em { font-size:.46rem !important; }
.process-node--hydrofan { min-height:48px !important; height:48px !important; padding:4px 7px !important; }.process-function-pills small { padding:2px 5px !important; font-size:.52rem !important; }
.process-crop-bed { min-height:22px !important; height:22px !important; }.process-crop-bed span { font-size:1.15rem !important; }
.process-heating-loops { grid-template-columns:1fr !important; }
.heating-circuit-row { min-height:42px; padding:5px 7px; }.heating-circuit-row small { font-size:.5rem; }.heating-circuit-row strong,.heating-circuit-row b { font-size:.59rem; }

@media (max-width: 820px) {
  .climate-status-sidebar { order:-1; }
  .analytical-trend { order:-1; }
  .process-synoptic { padding:60px 6px 8px !important; }.process-outdoor { top:7px !important;left:7px !important;right:auto !important;width:152px !important;height:42px !important; }
  .greenhouse-process { min-height:500px !important;padding:48px 7px 8px !important; }.process-sensor-row { grid-template-columns:repeat(2,minmax(0,1fr)) !important; }.process-node--hydrofan { height:auto !important;min-height:48px !important; }
  .multi-axis-plot svg { width:100% !important; max-width:100% !important; height:230px !important; transform:none !important; }
  .multi-axis-plot { min-height:250px !important; }
}
.climate-section-navigation { display: flex; align-items: center; gap: 0.2rem; margin: -0.2rem 0px 0.65rem; overflow-x: auto; border-bottom: 1px solid var(--border); scrollbar-width: thin; }
.climate-section-navigation a, .climate-section-navigation span { flex: 0 0 auto; padding: 0.52rem 0.72rem; border-bottom: 2px solid transparent; color: var(--muted); font-size: 0.69rem; font-weight: 720; text-decoration: none; white-space: nowrap; }
.climate-section-navigation a:hover { color: var(--primary); }
.climate-section-navigation a.active { border-bottom-color: var(--accent); color: var(--primary); }
.climate-section-navigation span[aria-disabled="true"] { opacity: 0.52; }
.climate-context-bar { display: grid; grid-template-columns: 0.8fr 0.65fr 1.7fr 0.9fr 0.7fr; gap: 1px; margin-bottom: 0.55rem; overflow: hidden; border: 1px solid var(--border); border-radius: 10px; background: var(--border); }
.climate-context-bar span { display: grid; gap: 0.1rem; min-width: 0px; padding: 0.45rem 0.62rem; background: rgb(255, 255, 255); }
.climate-context-bar small { color: var(--muted); font-size: 0.55rem; text-transform: uppercase; letter-spacing: 0.06em; }
.climate-context-bar strong { overflow: hidden; font-size: 0.68rem; text-overflow: ellipsis; white-space: nowrap; }
.climate-process-main { grid-template-columns: minmax(0px, 1fr) minmax(310px, 340px); align-items: start; }
.process-card-heading { min-height: 48px; }
.installation-variant { max-width: 48%; color: var(--muted); font-size: 0.62rem; font-weight: 700; text-align: right; }
.process-synoptic { display: grid; grid-template-columns: 128px minmax(0px, 1fr); gap: 0.7rem; min-height: 510px; padding: 0.72rem; overflow: hidden; border-radius: 14px; background: linear-gradient(rgb(231, 243, 243) 0%, rgb(248, 251, 248) 54%, rgb(237, 244, 233) 100%); }
.process-outdoor, .process-climate-core, .process-device { border: 1px solid rgb(184, 203, 194); color: var(--text); background: rgba(255, 255, 255, 0.91); box-shadow: rgba(22, 61, 44, 0.07) 0px 3px 10px; cursor: pointer; }
.process-outdoor:hover, .process-climate-core:hover, .process-device:hover { border-color: var(--accent); }
.process-outdoor:focus-visible, .process-climate-core:focus-visible, .process-device:focus-visible { outline: rgba(23, 124, 91, 0.28) solid 3px; outline-offset: 2px; }
.process-outdoor { align-self: start; display: grid; justify-items: start; gap: 0.25rem; margin-top: 90px; padding: 0.75rem; border-radius: 14px; text-align: left; }
.process-outdoor > span { color: rgb(217, 154, 32); font-size: 2rem; }
.process-outdoor small { color: var(--muted); }
.process-outdoor strong { font-size: 1.05rem; }
.process-outdoor em { color: var(--muted); font-size: 0.58rem; font-style: normal; }
.greenhouse-process { position: relative; display: grid; grid-template-rows: auto auto auto auto 44px auto; gap: 0.45rem; min-width: 0px; padding: 2.2rem 0.75rem 0.75rem; border-width: 0px 6px 6px; border-style: none solid solid; border-color: currentcolor rgb(82, 117, 101) rgb(82, 117, 101); border-image: none; border-radius: 6px 6px 12px 12px; background: rgba(255, 255, 255, 0.44); }
.greenhouse-process::before, .greenhouse-process::after { position: absolute; top: 0px; z-index: 0; width: 52%; height: 6px; background: rgb(82, 117, 101); content: ""; }
.greenhouse-process::before { left: 0px; transform: rotate(-11deg); transform-origin: left center; }
.greenhouse-process::after { right: 0px; transform: rotate(11deg); transform-origin: right center; }
.greenhouse-process > * { position: relative; z-index: 1; }
.process-roof, .process-screen-row, .process-sensor-row, .process-equipment-lanes { display: grid; grid-template-columns: repeat(auto-fit, minmax(145px, 1fr)); gap: 0.38rem; min-width: 0px; }
.process-screen-row { padding: 0.25rem 0px; border-top: 2px dashed rgb(134, 155, 145); border-bottom: 2px dashed rgb(134, 155, 145); }
.process-climate-core { display: grid; grid-template-columns: repeat(3, minmax(0px, 1fr)); gap: 0.3rem; justify-self: center; width: min(100%, 460px); padding: 0.62rem 0.8rem; border: 3px solid var(--accent); border-radius: 15px; text-align: center; }
.process-climate-core small, .process-climate-core strong { grid-column: 1 / -1; }
.process-climate-core small { color: var(--primary); font-weight: 750; }
.process-climate-core strong { color: var(--primary); font-size: 1.75rem; font-variant-numeric: tabular-nums; }
.process-climate-core span { font-size: 0.62rem; font-weight: 700; }
.process-sensor-row { grid-template-columns: repeat(auto-fit, minmax(108px, 1fr)); }
.process-crop-bed { display: flex; align-items: end; justify-content: space-around; overflow: hidden; color: rgb(94, 158, 113); font-size: 2.8rem; line-height: 0.7; }
.process-equipment-lanes { grid-template-columns: repeat(3, minmax(0px, 1fr)); align-content: end; }
.process-device { display: grid; grid-template-columns: 24px minmax(0px, 1fr) auto; align-items: center; gap: 0.38rem; min-width: 0px; min-height: 54px; padding: 0.42rem 0.48rem; border-radius: 9px; text-align: left; }
.process-device > span:nth-child(2) { display: grid; min-width: 0px; }
.process-device small { overflow: hidden; color: var(--muted); font-size: 0.49rem; text-overflow: ellipsis; white-space: nowrap; }
.process-device strong { overflow: hidden; font-size: 0.61rem; text-overflow: ellipsis; white-space: nowrap; }
.process-device em { overflow: hidden; color: var(--primary); font-size: 0.58rem; font-style: normal; font-weight: 750; text-overflow: ellipsis; white-space: nowrap; }
.process-device__icon { display: grid; place-items: center; width: 23px; height: 23px; border-radius: 50%; color: var(--primary); background: var(--surface-strong); font-size: 0.9rem; font-weight: 900; }
.device-mode { align-self: start; padding: 0.16rem 0.25rem; border-radius: 99px; color: rgb(53, 95, 76); background: rgb(232, 244, 237); font-size: 0.45rem; }
.process-device.state-critical .device-mode { color: rgb(139, 45, 40); background: var(--critical-soft); }
.process-device.state-blocked .device-mode { color: rgb(123, 77, 11); background: var(--warning-soft); }
.process-device.state-manual .device-mode { color: rgb(53, 81, 123); background: rgb(231, 238, 248); }
.process-device.state-inactive .device-mode { color: var(--muted); background: var(--surface-strong); }
.process-device.is-selected, .process-outdoor.is-selected, .process-climate-core.is-selected { outline: rgba(23, 124, 91, 0.24) solid 3px; border-color: var(--accent); box-shadow: 0 0 0 2px #fff,0 0 0 4px var(--accent); }
.process-device--compact { min-height: 45px; }
.process-device--compact .process-device__icon { width: 18px; height: 18px; }
.process-device--compact strong { font-size: 0.56rem; }
.climate-context { max-height: 650px; overflow-y: auto; border: 1px solid var(--border); border-radius: var(--radius-lg); background: rgb(255, 255, 255); scrollbar-width: thin; }
.greenhouse-state-summary small { display: block; margin-top: 0.3rem; color: var(--muted); font-size: 0.57rem; }
.climate-context__mobile-header { display: none; }
.device-detail-grid { gap: 0.42rem; }
.device-detail-grid div { align-items: start; }
.device-detail-grid dd { max-width: 64%; white-space: normal; }
.state-chip.state-blocked { color: rgb(123, 77, 11); background: var(--warning-soft); }
.state-chip.state-manual { color: rgb(53, 81, 123); background: rgb(231, 238, 248); }
.state-chip.state-inactive { color: var(--muted); background: var(--surface-strong); }
.state-chip.state-active { color: var(--primary); background: var(--normal-soft); }
.setpoint-provenance { display: grid; gap: 0.55rem; }
.setpoint-trace { overflow: hidden; border: 1px solid var(--border); border-radius: 9px; }
.setpoint-trace > div { display: flex; justify-content: space-between; gap: 0.5rem; padding: 0.45rem 0.5rem; background: var(--surface-soft); font-size: 0.64rem; }
.setpoint-trace > div b { color: var(--primary); font-size: 0.74rem; }
.setpoint-trace ol { display: grid; gap: 0px; margin: 0px; padding: 0px; list-style: none; }
.setpoint-trace li { display: grid; grid-template-columns: 1fr auto; gap: 0.05rem 0.35rem; padding: 0.34rem 0.48rem; border-top: 1px solid var(--border); font-size: 0.57rem; }
.setpoint-trace li small { grid-column: 1 / -1; color: var(--muted); }
.setpoint-trace .setpoint-limit { color: rgb(128, 80, 13); background: rgb(255, 250, 240); }
.setpoint-trace .setpoint-result { color: var(--primary); background: var(--normal-soft); font-weight: 800; }
.process-constraints ul { display: grid; gap: 0.42rem; margin: 0.4rem 0px 0px; padding: 0px; list-style: none; }
.process-constraints li { display: grid; grid-template-columns: 8px 1fr; gap: 0.42rem; }
.process-constraints li > i { width: 7px; height: 7px; margin-top: 0.22rem; border-radius: 50%; background: rgb(108, 139, 124); }
.process-constraints li.constraint--active > i { background: var(--warning); }
.process-constraints li.constraint--blocked > i { background: var(--critical); }
.process-constraints li span { display: grid; gap: 0.08rem; }
.process-constraints li strong { font-size: 0.62rem; }
.process-constraints li small { color: var(--muted); font-size: 0.55rem; line-height: 1.35; }
.process-constraints li em { color: var(--primary); font-size: 0.52rem; font-style: normal; font-weight: 700; }
.climate-trend-grid { grid-template-columns: repeat(3, minmax(0px, 1fr)); }
.chart-point { opacity: 0; transition: opacity 0.15s; }
.time-chart:hover .chart-point, .chart-point:focus { opacity: 1; outline: none; }
.trend-explorer { display: grid; grid-template-columns: minmax(220px, 260px) minmax(0px, 1fr); gap: 0.8rem; align-items: start; }
.trend-series-picker, .analytical-trend { min-width: 0px; padding: 0.9rem; border: 1px solid var(--border); border-radius: var(--radius-lg); background: rgb(255, 255, 255); box-shadow: var(--shadow); }
.trend-series-picker h2 { margin: 0.2rem 0px; font-size: 1rem; }
.trend-series-picker > p { margin: 0px 0px 0.65rem; color: var(--muted); font-size: 0.62rem; line-height: 1.4; }
.trend-series-list { display: grid; gap: 0.25rem; }
.trend-series-list label { display: grid; grid-template-columns: 16px 8px 1fr; align-items: center; gap: 0.38rem; padding: 0.38rem; border-radius: 7px; cursor: pointer; }
.trend-series-list label:hover { background: var(--surface-soft); }
.trend-series-list label > i, .selected-series-chips i { width: 8px; height: 8px; border-radius: 50%; }
.trend-series-list label span { display: flex; justify-content: space-between; gap: 0.4rem; min-width: 0px; font-size: 0.62rem; font-weight: 700; }
.trend-series-list label small { color: var(--muted); font-weight: 600; }
.analytical-trend__header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; }
.analytical-trend__header h2 { margin: 0.2rem 0px 0px; }
.selected-series-chips { display: flex; flex-wrap: wrap; gap: 0.32rem; margin: 0.7rem 0px; }
.selected-series-chips button { display: flex; align-items: center; gap: 0.3rem; padding: 0.3rem 0.45rem; border: 1px solid var(--border); border-radius: 99px; color: var(--text); background: rgb(255, 255, 255); font-size: 0.58rem; cursor: pointer; }
.selected-series-chips button:hover { border-color: var(--accent); }
.analytical-trend__lanes { display: grid; gap: 0.55rem; }
.analytical-trend__lanes .chart-card { padding: 0.65rem; box-shadow: none; }
.analytical-trend__lanes .chart-card__heading { min-height: 36px; }
.analytical-trend__lanes .time-chart { max-height: 235px; }
.readonly-disclosure { color: var(--muted); font-size: 0.62rem; }
@media (max-width: 1180px) {
  .climate-context-bar { grid-template-columns: repeat(3, minmax(0px, 1fr)); }
  .climate-context { grid-template-columns: 1fr; max-height: none; }
  .context-section { border-right: 0px; border-bottom: 1px solid var(--border); }
  .process-synoptic { min-height: 480px; }
  .climate-trend-grid { grid-template-columns: repeat(2, minmax(0px, 1fr)); }
}
@media (max-width: 760px) {
  body { overflow-x: hidden; }
  .app-shell, .page-host, .operator-page { max-width: 100vw; overflow-x: hidden; }
  .mobile-navigation { grid-template-columns: repeat(6, minmax(0px, 1fr)); }
  .mobile-nav-link span { display: block; max-width: 100%; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .page-state { align-items: flex-start; flex-wrap: wrap; }
  .page-state span { min-width: 0px; }
  .climate-section-navigation { margin-inline: calc(-1 * var(--space-3)); padding-inline: var(--space-3); }
  .climate-context-bar { grid-template-columns: repeat(2, minmax(0px, 1fr)); }
  .climate-context-bar span:nth-child(3) { grid-column: 1 / -1; }
  .process-synoptic { grid-template-columns: 1fr; min-height: 0px; padding: 0.5rem; }
  .process-outdoor { grid-template-columns: auto 1fr auto; align-items: center; margin: 0px; }
  .process-outdoor > span { grid-row: 1 / 3; }
  .process-outdoor small { align-self: end; }
  .process-outdoor strong { grid-column: 2; }
  .process-outdoor em { grid-area: 1 / 3 / 3; }
  .greenhouse-process { grid-template-rows: auto; padding: 1.7rem 0.45rem 0.5rem; }
  .process-roof, .process-screen-row, .process-sensor-row, .process-equipment-lanes { grid-template-columns: 1fr; }
  .process-climate-core { grid-template-columns: repeat(3, minmax(0px, 1fr)); }
  .process-crop-bed { height: 32px; }
  .climate-process-main { grid-template-columns: minmax(0px, 1fr); }
  .climate-process-canvas, .climate-context { min-width: 0px; width: 100%; }
  .climate-context { display: none; }
  .climate-context.mobile-is-open { position: fixed; inset: 59px 0px 0px; z-index: 9; display: block; width: 100%; max-height: calc(100dvh - 59px); overflow-y: auto; border: 0px; border-radius: 0px; box-shadow: none; }
  .climate-context__mobile-header { position: sticky; top: 0px; z-index: 2; display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 0.7rem 0.8rem; border-bottom: 1px solid var(--border); background: rgb(255, 255, 255); }
  .climate-context__mobile-header button { min-height: 38px; padding: 0.45rem 0.7rem; border: 1px solid var(--primary); border-radius: 8px; color: var(--primary); background: rgb(255, 255, 255); font-size: 0.72rem; font-weight: 750; }
  .process-device { min-height: 48px; }
  .process-device small, .process-device em { white-space: normal; }
  .process-device strong { white-space: normal; }
  .climate-trend-grid { grid-template-columns: 1fr; }
  .trend-explorer { grid-template-columns: 1fr; }
  .trend-series-list { grid-template-columns: repeat(2, minmax(0px, 1fr)); }
  .analytical-trend__header { align-items: flex-start; flex-direction: column; }
}
@media (max-width: 480px) {
  .climate-context-bar { grid-template-columns: 1fr 1fr; }
  .climate-context-bar span { padding: 0.4rem; }
  .climate-context-bar strong { font-size: 0.61rem; }
  .installation-variant { max-width: none; text-align: left; }
  .trend-series-list { grid-template-columns: 1fr; }
  .analytical-trend, .trend-series-picker { padding: 0.65rem; }
  .selected-series-chips { gap: 0.2rem; }
  .selected-series-chips button { max-width: 100%; }
}
@media (max-width: 600px) {
  .trend-series-list { grid-template-columns: 1fr; }
  .trend-series-list label span { min-width: 0px; overflow-wrap: anywhere; }
}
.operating-summary { grid-template-columns: minmax(240px, 1.45fr) repeat(auto-fit, minmax(130px, 1fr)); }
.operating-summary__item { min-height: 82px; padding: 0.62rem 0.72rem 0.55rem 0.82rem; }
.operating-summary__item > span { font-size: 0.75rem; }
.operating-summary__item > strong { margin: 0.2rem 0px; font-size: 1.08rem; }
.operating-summary__item > span, .operating-summary__item > strong { overflow: visible; text-overflow: clip; white-space: normal; }
.operating-summary__temperature { display: grid; grid-template-columns: 1fr 1.7fr; gap: 0.2rem 0.65rem; }
.operating-summary__temperature > span { grid-column: 1 / -1; }
.operating-summary__temperature > strong { align-self: center; font-size: 1.42rem; }
.temperature-control-chain { display: grid; grid-template-columns: 1fr 1fr; gap: 0.35rem; }
.temperature-control-chain span { display: grid; align-content: center; padding-left: 0.5rem; border-left: 1px solid var(--border); }
.temperature-control-chain small { color: var(--muted); font-size: 0.69rem; }
.temperature-control-chain b { font-size: 0.84rem; }
.temperature-control-chain .deviation-warning b { color: var(--warning); }
.summary-state { align-items: center; gap: 0.32rem; display: flex !important; font-size: 0.7rem !important; text-overflow: clip !important; white-space: normal !important; }
.summary-state i { width: 7px; height: 7px; flex: 0 0 auto; border-radius: 50%; background: rgb(77, 154, 115); }
.summary-state--warning i { background: var(--warning); }
.summary-state--critical i { background: var(--critical); }
.summary-state--unavailable i, .summary-state--stale i { background: rgb(132, 147, 139); }
.operating-summary__action small { color: var(--primary) !important; font-size: 0.78rem !important; }
.climate-process-main { grid-template-columns: minmax(0px, 1fr) minmax(380px, 420px); gap: 0.8rem; }
.climate-context { max-height: none; overflow: visible; }
.climate-context .context-section { padding: 1rem; }
.climate-context h2 { font-size: 1.08rem; }
.climate-context p, .climate-context dt, .climate-context dd, .climate-context small { font-size: 0.75rem; line-height: 1.45; }
.process-synoptic { display: grid; grid-template-columns: 1fr; gap: 0.55rem; min-height: 560px; padding: 0.65rem; }
.process-outdoor { display: grid; grid-template-columns: auto 1.2fr 1fr 1fr; align-items: center; gap: 0.65rem; width: 100%; margin: 0px; padding: 0.55rem 0.75rem; border-width: 0px 0px 1px; border-style: none none solid; border-color: currentcolor currentcolor rgb(184, 203, 194); border-image: none; border-radius: 0px; background: transparent; box-shadow: none; text-align: left; }
.process-outdoor > span { display: grid; }
.process-outdoor > span:first-child { color: rgb(217, 154, 32); font-size: 1.5rem; }
.process-outdoor small { color: var(--muted); font-size: 0.72rem; }
.process-outdoor strong, .process-outdoor b { font-size: 0.88rem; }
.greenhouse-process { position: relative; display: grid; grid-template-rows: auto auto 1fr; gap: 0.45rem; min-height: 485px; padding: 2.8rem 1rem 1rem; border-width: 0px 5px 5px; border-style: none solid solid; border-color: currentcolor rgb(82, 117, 101) rgb(82, 117, 101); border-image: none; background: rgba(255, 255, 255, 0.38); }
.greenhouse-process::before, .greenhouse-process::after { height: 5px; }
.process-vent-row { display: grid; grid-template-columns: repeat(2, minmax(0px, 1fr)); gap: 1.2rem; align-items: start; }
.process-vent-row[data-count="1"] { grid-template-columns: minmax(0px, 1fr); }
.process-screen-track { position: relative; min-height: 42px; padding: 0.1rem 1rem; border-top: 3px dashed rgb(127, 151, 138); border-bottom: 0px; }
.process-screen-track::after { position: absolute; inset: 9px 8% auto; height: 5px; border-radius: 4px; background: rgb(127, 151, 138); content: ""; opacity: 0.55; }
.process-zone-interior { display: grid; grid-template-rows: auto auto auto 38px auto; gap: 0.55rem; min-height: 350px; }
.process-climate-core { justify-self: center; display: grid; grid-template-columns: repeat(2, auto); gap: 0.12rem 0.65rem; width: min(420px, 80%); padding: 0.5rem 0.8rem; border: 2px solid rgb(121, 170, 146); border-radius: 10px; background: rgba(255, 255, 255, 0.7); box-shadow: none; }
.process-climate-core small, .process-climate-core strong { grid-column: 1 / -1; }
.process-climate-core small { font-size: 0.75rem; }
.process-climate-core strong { font-size: 1.5rem; }
.process-climate-core span { font-size: 0.74rem; }
.process-sensor-row { display: flex; justify-content: space-around; gap: 0.6rem; padding-inline: 2%; }
.process-auxiliaries { display: flex; justify-content: center; flex-wrap: wrap; gap: 1rem; min-height: 58px; }
.process-node { position: relative; display: inline-grid; grid-template-columns: 24px minmax(0px, auto); align-items: center; gap: 0.4rem; min-width: 0px; min-height: 42px; padding: 0.35rem 0.5rem; border: 1px solid transparent; border-radius: 7px; color: var(--text); background: transparent; box-shadow: none; text-align: left; cursor: pointer; }
.process-node:hover { border-color: rgb(155, 188, 175); background: rgba(255, 255, 255, 0.7); }
.process-node:focus-visible, .heating-loop:focus-visible { outline: rgba(23, 124, 91, 0.3) solid 3px; outline-offset: 2px; }
.process-node > span:nth-child(2) { display: grid; gap: 0.05rem; }
.process-node strong { font-size: 0.78rem; }
.process-node b { color: var(--primary); font-size: 0.82rem; }
.process-node small { grid-column: 1 / -1; color: var(--muted); font-size: 0.7rem; }
.process-node em { position: absolute; top: 2px; right: 2px; padding: 0.08rem 0.22rem; border-radius: 99px; color: var(--primary); background: var(--primary-soft); font-size: 0.61rem; font-style: normal; font-weight: 800; }
.process-node__icon { display: grid; place-items: center; width: 24px; height: 24px; color: var(--primary); font-size: 1.05rem; }
.process-node--sensor { grid-template-columns: 14px auto; }
.process-node--sensor .process-node__icon { width: 14px; height: 14px; font-size: 0.55rem; }
.process-node--sensor small { display: none; }
.process-node--sensor em { position: static; grid-column: 1 / -1; justify-self: center; }
.process-node--vent { padding-top: 0.55rem; border-bottom: 4px solid rgb(47, 139, 101); }
.process-node--vent:first-child { transform: rotate(-3deg); }
.process-node--vent:last-child { transform: rotate(3deg); }
.process-vent-row[data-count="1"] .process-node--vent { transform: none; }
.process-node--screen { z-index: 1; background: rgb(238, 243, 240); }
.process-node--fan, .process-node--humidifier, .process-node--irrigation { min-width: 150px; }
.process-node.state-blocked em, .constraint--blocked { color: rgb(139, 45, 40); background: var(--critical-soft); }
.process-node.state-critical em { color: rgb(139, 45, 40); background: var(--critical-soft); }
.process-node.state-manual em { color: rgb(53, 81, 123); background: rgb(231, 238, 248); }
.process-node.state-inactive em, .process-node.state-unavailable em { color: rgb(89, 104, 97); background: rgb(231, 236, 233); }
.process-node.is-selected, .heating-loop.is-selected { border-color: var(--accent); background: rgb(237, 248, 242); box-shadow: rgba(23, 124, 91, 0.16) 0px 0px 0px 2px; }
.process-heating-loops { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 0.7rem; align-items: end; }
.heating-loop { display: grid; gap: 0.25rem; min-height: 55px; padding: 0.35rem 0.5rem; border: 1px solid transparent; border-radius: 7px; color: var(--text); background: transparent; text-align: left; }
.heating-loop__pipe { display: block; height: 11px; border-width: 0px 3px 3px; border-style: none solid solid; border-color: currentcolor rgb(199, 101, 40) rgb(199, 101, 40); border-image: none; border-radius: 0px 0px 10px 10px; }
.heating-loop > span:last-child { display: grid; grid-template-columns: 1fr auto; gap: 0.08rem 0.4rem; }
.heating-loop strong { font-size: 0.75rem; }
.heating-loop b { color: rgb(166, 79, 29); font-size: 0.78rem; }
.heating-loop small { grid-column: 1 / -1; color: var(--muted); font-size: 0.68rem; }
.process-crop-bed { height: 38px; font-size: 2.3rem; }
.process-accessibility-note { font-size: 0.72rem; }
.process-glance { display: grid; gap: 0.55rem; }
.context-heading { margin: 0px; }
.context-heading strong { font-size: 0.8rem; }
.resulting-setpoints { display: grid; grid-template-columns: 1fr 1fr; gap: 0.5rem; }
.resulting-setpoints > div { padding: 0.65rem; border: 1px solid var(--border); border-radius: 9px; background: var(--surface-soft); }
.resulting-setpoints small { display: block; color: var(--muted); }
.resulting-setpoints strong { display: block; margin-top: 0.1rem; color: var(--primary); font-size: 1.35rem; }
.resulting-setpoints strong span { font-size: 0.78rem; }
.process-glance__facts { display: grid; gap: 0.35rem; margin: 0px; }
.process-glance__facts div { display: grid; grid-template-columns: 1fr 1.25fr; gap: 0.5rem; padding-top: 0.4rem; border-top: 1px solid var(--border); }
.process-glance__facts dd { margin: 0px; font-weight: 750; text-align: right; }
.process-glance__facts .is-warning { color: var(--warning); }
.immediate-constraints { display: grid; grid-template-columns: 1fr 1fr; gap: 0.55rem; }
.constraint-group h3 { display: flex; align-items: center; gap: 0.4rem; margin: 0px 0px 0.4rem; font-size: 0.82rem; }
.constraint-group h3 span { display: grid; place-items: center; min-width: 24px; height: 24px; border-radius: 50%; background: var(--warning-soft); }
.constraint-group--blocked h3 span { color: rgb(139, 45, 40); background: var(--critical-soft); }
.constraint-group > p { margin: 0px; color: var(--muted); }
.constraint-summary { display: grid; gap: 0.16rem; padding: 0.48rem; border-left: 3px solid var(--warning); background: rgb(255, 250, 240); }
.constraint-summary strong { font-size: 0.76rem; }
.constraint-summary span, .constraint-summary small { font-size: 0.7rem; }
.constraint-summary small { color: var(--primary); }
.compact-setpoint-equations { display: grid; gap: 0.45rem; }
.setpoint-equation { display: grid; gap: 0.18rem; padding: 0.5rem; border: 1px solid var(--border); border-radius: 8px; }
.setpoint-equation strong { font-size: 0.78rem; }
.setpoint-equation span { font-size: 0.75rem; line-height: 1.45; }
.setpoint-equation b { color: var(--primary); }
.setpoint-calculation summary, .technical-details summary { min-height: 34px; color: var(--primary); font-size: 0.75rem; font-weight: 750; cursor: pointer; }
.setpoint-calculation .setpoint-trace { margin-top: 0.45rem; }
.context-back { min-height: 38px; margin-bottom: 0.45rem; padding: 0.4rem 0.55rem; border: 1px solid var(--primary); border-radius: 8px; color: var(--primary); background: rgb(255, 255, 255); font-size: 0.75rem; font-weight: 750; }
.context-device-heading { display: flex; align-items: center; justify-content: space-between; gap: 0.6rem; }
.context-device-heading h2 { margin: 0.3rem 0px; }
.device-constraint { display: grid; gap: 0.2rem; margin-top: 0.55rem; padding: 0.55rem; border-left: 3px solid var(--warning); }
.device-constraint span { font-size: 0.75rem; }
.overview-context-trends { display: grid; grid-template-columns: repeat(2, minmax(0px, 1fr)); gap: 0.8rem; }
.overview-trend-area { min-width: 0px; }
.context-trend-switcher { display: flex; align-items: flex-end; justify-content: space-between; gap: 0.6rem; margin-bottom: 0.4rem; }
.context-trend-switcher h3 { margin: 0.12rem 0px 0px; font-size: 1rem; }
.context-trend-switcher [role="group"] { display: flex; gap: 0.2rem; }
.context-trend-switcher button, .range-selector button { min-height: 34px; padding: 0.36rem 0.55rem; font-size: 0.72rem; }
.context-trend-switcher button { border: 1px solid var(--border); border-radius: 7px; color: var(--muted); background: rgb(255, 255, 255); }
.context-trend-switcher button.active { color: rgb(255, 255, 255); border-color: var(--primary); background: var(--primary); }
.synchronized-trends { min-width: 0px; padding: 0.85rem; border: 1px solid var(--border); border-radius: 13px; background: rgb(255, 255, 255); }
.synchronized-trends__header { display: flex; align-items: flex-start; justify-content: space-between; gap: 0.7rem; }
.synchronized-trends__header h3 { margin: 0.12rem 0px 0px; font-size: 1rem; }
.data-quality { flex: 0 0 auto; padding: 0.22rem 0.42rem; border-radius: 99px; color: var(--primary); background: var(--primary-soft); font-size: 0.68rem; font-weight: 750; }
.data-quality--stale { color: rgb(128, 80, 13); background: var(--warning-soft); }
.data-quality--unavailable { color: var(--muted); background: var(--surface-strong); }
.synchronized-plot { position: relative; min-width: 0px; margin-top: 0.6rem; padding-top: 58px; }
.synchronized-lanes { display: grid; gap: 0.35rem; }
.trend-lane { display: grid; grid-template-columns: 112px minmax(0px, 1fr); gap: 0.45rem; min-height: 138px; border-top: 1px solid var(--border); }
.trend-lane__axis { display: grid; grid-template-columns: 1fr auto; align-content: center; gap: 0.15rem 0.35rem; color: var(--muted); }
.trend-lane__axis strong { grid-column: 1 / -1; color: var(--text); font-size: 0.78rem; }
.trend-lane__axis span, .trend-lane__axis small { font-size: 0.69rem; }
.trend-lane__axis small:last-child { align-self: end; }
.trend-lane svg { display: block; width: 100%; height: 138px; }
.shared-cursor { position: absolute; top: 58px; bottom: 24px; z-index: 3; width: 1px; background: rgb(35, 61, 49); pointer-events: none; }
.shared-cursor::before { position: absolute; top: -4px; left: -4px; width: 9px; height: 9px; border-radius: 50%; background: rgb(35, 61, 49); content: ""; }
.shared-tooltip { position: absolute; top: 0px; z-index: 4; display: grid; min-width: 200px; max-width: 260px; max-height: 55px; padding: 0.4rem 0.5rem; overflow-y: auto; border: 1px solid rgb(141, 169, 155); border-radius: 7px; background: rgba(255, 255, 255, 0.97); box-shadow: var(--shadow); transform: translateX(-50%); font-size: 0.68rem; }
.shared-tooltip strong { margin-bottom: 0.15rem; }
.shared-tooltip span { display: grid; grid-template-columns: 8px 1fr auto; align-items: center; gap: 0.3rem; }
.shared-tooltip span i { width: 7px; height: 7px; border-radius: 50%; }
.shared-tooltip span.is-hidden { text-decoration: line-through; opacity: 0.5; }
.shared-cursor-control { position: absolute; inset: 58px 2.22% 24px 9.72%; z-index: 5; width: 88.06%; height: calc(100% - 82px); margin: 0px; opacity: 0; cursor: col-resize; }
.shared-cursor-control:focus-visible { opacity: 0.12; outline: 2px solid var(--accent); }
.shared-time-axis { display: grid; grid-template-columns: 1fr auto 1fr; gap: 0.6rem; align-items: center; margin: 0.1rem 2.22% 0px calc(112px + 0.45rem); color: var(--muted); font-size: 0.69rem; }
.shared-time-axis time:last-child { text-align: right; }
.synchronized-legend { display: flex; flex-wrap: wrap; gap: 0.3rem; margin-top: 0.5rem; }
.synchronized-legend button { display: grid; grid-template-columns: 8px auto auto; align-items: center; gap: 0.32rem; min-height: 34px; padding: 0.35rem 0.48rem; border: 1px solid var(--border); border-radius: 7px; color: var(--text); background: rgb(255, 255, 255); font-size: 0.72rem; }
.synchronized-legend button i { width: 8px; height: 8px; border-radius: 50%; }
.synchronized-legend button small { color: var(--muted); }
.synchronized-legend button.is-hidden { text-decoration: line-through; opacity: 0.55; }
.synchronized-trends--compact { padding: 0.7rem; }
.synchronized-trends--compact .trend-lane { grid-template-columns: 88px minmax(0px, 1fr); min-height: 104px; }
.synchronized-trends--compact .trend-lane svg { height: 104px; }
.synchronized-trends--compact .shared-time-axis { margin-left: calc(88px + 0.45rem); }
.synchronized-trends--compact .shared-tooltip { min-width: 175px; }
.trend-explorer { grid-template-columns: minmax(210px, 235px) minmax(0px, 1fr); gap: 0.8rem; }
.trend-series-picker, .analytical-trend { padding: 1rem; }
.trend-series-picker > p, .readonly-disclosure { font-size: 0.75rem; }
.trend-series-group { padding-top: 0.55rem; border-top: 1px solid var(--border); }
.trend-series-group h3 { margin: 0px 0px 0.25rem; color: var(--muted); font-size: 0.72rem; text-transform: uppercase; letter-spacing: 0.06em; }
.trend-series-list label { min-height: 38px; padding: 0.4rem 0.3rem; }
.trend-series-list label.is-selected { background: var(--surface-soft); }
.trend-series-list label span { font-size: 0.75rem; }
.trend-series-list label small { font-size: 0.68rem; }
.analytical-trend__header h2 { font-size: 1.22rem; }
.selected-series-chips { align-items: center; }
.selected-series-chips button { min-height: 34px; font-size: 0.72rem; }
.selected-series-chips > small { margin-left: auto; color: var(--muted); font-size: 0.72rem; }
.series-limit-message { margin: 0.55rem 0px 0px; padding: 0.55rem 0.65rem; border-left: 3px solid var(--warning); color: rgb(112, 69, 10); background: var(--warning-soft); font-size: 0.75rem; }
@media (max-width: 1320px) {
  .operating-summary { grid-template-columns: repeat(3, minmax(0px, 1fr)); }
  .operating-summary__temperature { grid-column: span 2; }
  .climate-process-main { grid-template-columns: minmax(0px, 1fr) minmax(350px, 380px); }
}
@media (max-width: 1180px) {
  .climate-process-main { grid-template-columns: 1fr; }
  .climate-context { display: grid; grid-template-columns: repeat(2, minmax(0px, 1fr)); }
  .compact-setpoint-equations { grid-column: 1 / -1; }
  .process-synoptic { min-height: 520px; }
  .trend-explorer { grid-template-columns: 210px minmax(0px, 1fr); }
}
@media (max-width: 760px) {
  .operating-summary { grid-template-columns: repeat(2, minmax(0px, 1fr)); }
  .operating-summary__temperature { grid-column: 1 / -1; }
  .operating-summary__item { min-height: 72px; }
  .process-synoptic { min-height: 0px; }
  .process-outdoor { grid-template-columns: auto 1fr 1fr; }
  .process-outdoor > span:last-child { display: none; }
  .greenhouse-process { min-height: 0px; padding-inline: 0.55rem; }
  .process-vent-row { grid-template-columns: 1fr; gap: 0.35rem; }
  .process-node--vent { transform: none !important; }
  .process-zone-interior { grid-template-rows: auto auto auto 32px auto; }
  .process-climate-core { width: 100%; }
  .process-sensor-row, .process-auxiliaries { display: grid; grid-template-columns: 1fr; }
  .process-node { width: 100%; min-height: 48px; border-bottom-color: var(--border); }
  .process-node--sensor { grid-template-columns: 18px 1fr auto; }
  .process-node--sensor em { position: static; grid-column: auto; }
  .process-heating-loops { grid-template-columns: 1fr; }
  .heating-loop { min-height: 58px; }
  .overview-context-trends { grid-template-columns: 1fr; }
  .context-trend-switcher { align-items: flex-start; flex-direction: column; }
  .trend-explorer { grid-template-columns: 1fr; }
  .trend-series-picker { max-height: none; }
  .analytical-trend, .trend-series-picker { padding: 0.75rem; }
  .trend-lane { grid-template-columns: 74px minmax(0px, 1fr); }
  .shared-time-axis { margin-left: calc(74px + 0.45rem); }
  .shared-tooltip { min-width: 170px; max-width: 210px; }
  .synchronized-trends--compact .trend-lane { grid-template-columns: 70px minmax(0px, 1fr); }
  .synchronized-trends--compact .shared-time-axis { margin-left: calc(70px + 0.45rem); }
  .immediate-constraints { grid-template-columns: 1fr; }
}
@media (max-width: 480px) {
  .operating-summary__temperature { grid-template-columns: 1fr; }
  .temperature-control-chain { grid-template-columns: 1fr 1fr; }
  .synchronized-trends { padding: 0.55rem; }
  .trend-lane { min-height: 112px; }
  .trend-lane svg { height: 112px; }
  .trend-lane__axis strong { font-size: 0.7rem; }
  .shared-tooltip { max-height: 58px; }
  .context-trend-switcher [role="group"] { width: 100%; }
  .context-trend-switcher button { flex: 1 1 0%; }
}

/* DEMO-UI-006 · Climate UI third correction */
.climate-mode-row { display:grid; grid-template-columns:minmax(0,1fr) auto; gap:12px; align-items:stretch; margin:10px 0; }
.climate-mode-strip { display:grid; grid-template-columns:1.3fr repeat(3,minmax(120px,1fr)); min-height:58px; border:1px solid var(--border); border-radius:14px; background:var(--surface); box-shadow:0 6px 20px rgba(28,69,54,.06); overflow:hidden; }
.climate-mode-strip > span { display:flex; flex-direction:column; justify-content:center; gap:3px; padding:9px 15px; border-right:1px solid var(--border); }
.climate-mode-strip > span:last-child { border:0; }
.climate-mode-strip small { color:var(--muted); font-size:.68rem; }
.climate-mode-strip strong { font-size:.86rem; line-height:1.2; }
.climate-mode-strip__state { position:relative; padding-left:31px !important; }
.climate-mode-strip__state > i { position:absolute; left:15px; width:8px; height:8px; border-radius:50%; background:var(--primary); box-shadow:0 0 0 4px color-mix(in srgb,var(--primary) 13%,transparent); }
.strategy-drawer-trigger { border:1px solid var(--primary); border-radius:14px; padding:0 20px; color:var(--primary); background:var(--surface); font-weight:800; white-space:nowrap; }
.strategy-drawer-trigger:hover,.strategy-drawer-trigger:focus-visible { color:#fff; background:var(--primary); }

.climate-process-main { display:grid !important; grid-template-columns:minmax(0,1fr) 328px !important; gap:14px !important; align-items:start; }
.climate-process-canvas { min-width:0; }
.climate-status-sidebar { display:grid; gap:10px; width:328px; }
.climate-status-card { border:1px solid var(--border); border-radius:16px; background:var(--surface); box-shadow:0 8px 28px rgba(28,69,54,.07); padding:14px; }
.climate-status-card header { display:flex; justify-content:space-between; align-items:end; margin-bottom:10px; }
.climate-status-card h2 { margin:0; font-size:1rem; }
.climate-status-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:7px; }
.climate-status-grid--weather { grid-template-columns:repeat(2,minmax(0,1fr)); }
.climate-status-metric { position:relative; min-height:66px; display:grid; grid-template-columns:24px 1fr; grid-template-areas:"icon label" "icon value" "quality quality"; align-items:center; padding:8px; border-radius:10px; background:var(--surface-soft); }
.climate-status-metric > i { grid-area:icon; font-style:normal; color:var(--primary); }
.climate-status-metric > small { grid-area:label; color:var(--muted); font-size:.66rem; }
.climate-status-metric > strong { grid-area:value; font-size:.85rem; }
.climate-status-metric > em { grid-area:quality; justify-self:end; color:var(--primary); font-size:.56rem; font-style:normal; font-weight:800; letter-spacing:.05em; }
.climate-status-metric > em.quality-stale { color:var(--warning); }
.climate-status-metric > em.quality-brak-danych { color:var(--muted); }
.climate-setpoint-compare { display:grid; grid-template-columns:1fr 1fr; gap:7px; margin-top:8px; }
.climate-setpoint-compare span { display:flex; flex-direction:column; padding:8px; border:1px solid var(--border); border-radius:9px; }
.climate-setpoint-compare small,.climate-state-list dt { color:var(--muted); font-size:.64rem; }
.climate-setpoint-compare strong { font-size:.8rem; }
.climate-state-list { margin:0; }
.climate-state-list div { display:flex; justify-content:space-between; gap:10px; padding:7px 0; border-bottom:1px solid var(--border); }
.climate-state-list dd { margin:0; text-align:right; font-weight:750; font-size:.75rem; }
.climate-function-state { display:grid; grid-template-columns:1fr 1fr; gap:7px; margin-top:9px; }
.climate-function-state > span,.drawer-device-functions > span { display:flex; flex-direction:column; gap:2px; padding:8px; border:1px solid color-mix(in srgb,var(--primary) 25%,var(--border)); border-radius:9px; background:color-mix(in srgb,var(--primary) 5%,var(--surface)); }
.climate-function-state small,.drawer-device-functions small { color:var(--muted); }
.climate-function-state strong,.drawer-device-functions strong { font-size:.76rem; }
.climate-function-state em,.drawer-device-functions em { color:var(--muted); font-size:.63rem; font-style:normal; }
.climate-constraint-badges { display:grid; gap:6px; margin-top:9px; }
.climate-constraint-badges > span { display:flex; flex-direction:column; gap:2px; padding:7px 9px; border-left:3px solid var(--warning); border-radius:6px; background:var(--surface-soft); }
.climate-constraint-badges b { font-size:.7rem; }.climate-constraint-badges small { color:var(--muted); font-size:.62rem; }

.process-synoptic { min-height:590px !important; padding:25px 14px 12px 138px !important; overflow:visible !important; }
.greenhouse-process { position:relative; min-height:540px !important; padding:60px 15px 14px !important; border:4px solid #47745f !important; border-top:0 !important; border-radius:0 0 13px 13px !important; overflow:visible !important; background:linear-gradient(180deg,rgba(213,240,239,.5),rgba(250,252,248,.86) 42%,rgba(232,241,222,.75)); }
.greenhouse-roof { position:absolute; z-index:0; top:-47px; left:-4px; width:calc(100% + 8px); height:51px; overflow:visible; }
.greenhouse-roof span { position:absolute; bottom:0; width:50.5%; height:51px; border-top:4px solid #47745f; }
.greenhouse-roof span:first-child { left:0; transform:skewY(-10deg); transform-origin:bottom right; border-left:4px solid #47745f; }
.greenhouse-roof span:last-child { right:0; transform:skewY(10deg); transform-origin:bottom left; border-right:4px solid #47745f; }
.process-vent-row { position:absolute !important; z-index:3; top:-27px !important; left:3% !important; right:3% !important; display:grid !important; grid-template-columns:repeat(auto-fit,minmax(210px,1fr)); gap:10px; }
.process-vent-row .process-node { min-height:48px; border-color:#a7c9bc; background:rgba(255,255,255,.96); }
.process-screen-track { position:relative !important; top:auto !important; margin:3px 0 9px; height:33px; padding:0 !important; border-top:2px dashed #8ba99d; border-bottom:2px dashed #8ba99d; }
.process-screen-track .process-node { min-height:29px !important; height:29px; border:0; box-shadow:none; background:transparent; }
.process-screen-track .process-node__icon { width:20px;height:20px; }
.process-zone-interior { display:grid !important; gap:8px !important; align-content:start; }
.process-climate-core { justify-self:center; min-width:52%; min-height:88px !important; display:grid !important; grid-template-columns:repeat(3,1fr); gap:4px 14px; align-items:center; border:2px solid #b8d7cc !important; }
.process-climate-core small,.process-climate-core strong { grid-column:1/-1; }.process-climate-core strong { font-size:1.6rem !important; }
.process-sensor-row { display:grid !important; grid-template-columns:repeat(auto-fit,minmax(140px,1fr)); gap:7px; }
.process-auxiliaries { display:grid !important; grid-template-columns:repeat(auto-fit,minmax(240px,1fr)); gap:7px; }
.process-node--hydrofan { min-height:66px !important; }
.process-function-pills { display:flex !important; flex-wrap:wrap; gap:5px; grid-column:2/-1; }
.process-function-pills small { border-radius:999px; padding:3px 7px; background:#e8f5ef; color:#2d6651; font-size:.6rem; }
.process-function-pills i { display:inline-block; width:5px; height:5px; margin-right:4px; border-radius:50%; background:var(--primary); }
.process-crop-bed { min-height:29px !important; margin:0 !important; }
.process-heating-loops { display:grid !important; gap:6px !important; }
.heating-circuit-row { display:grid; grid-template-columns:minmax(150px,1.6fr) repeat(6,minmax(56px,.7fr)) minmax(74px,.8fr); gap:5px; align-items:center; width:100%; padding:8px 9px; border:1px solid var(--border); border-left:4px solid #d47842; border-radius:10px; background:rgba(255,255,255,.95); color:inherit; text-align:left; box-shadow:0 2px 8px rgba(33,68,53,.06); }
.heating-circuit-row:hover,.heating-circuit-row:focus-visible,.heating-circuit-row.is-selected { border-color:var(--primary); box-shadow:0 0 0 2px color-mix(in srgb,var(--primary) 13%,transparent); }
.heating-circuit-row.state-critical { border-left-color:var(--critical); }
.heating-circuit-row__identity { display:flex; align-items:center; gap:7px; }.heating-circuit-row__identity > i { width:19px;height:19px;border-radius:50%;border:3px solid #d47842; }
.heating-circuit-row__identity span,.heating-circuit-row__metric,.heating-circuit-row__state { display:flex; flex-direction:column; gap:2px; }
.heating-circuit-row small { color:var(--muted); font-size:.55rem; }.heating-circuit-row strong,.heating-circuit-row b { font-size:.66rem; }
.heating-circuit-row__state { text-align:right; }.heating-circuit-row__state b { color:var(--primary); }.state-critical .heating-circuit-row__state b { color:var(--critical); }

.climate-drawer-backdrop { position:fixed; z-index:80; inset:0; background:rgba(7,31,23,.25); backdrop-filter:blur(1px); }
.climate-drawer { position:fixed; z-index:81; top:0; right:0; width:min(420px,100vw); height:100dvh; transform:translateX(105%); transition:transform .2s ease; background:var(--surface); box-shadow:-16px 0 44px rgba(15,51,39,.2); visibility:hidden; }
.climate-drawer.is-open { transform:translateX(0); visibility:visible; }
.climate-drawer__header { min-height:72px; display:flex; justify-content:space-between; align-items:center; gap:12px; padding:14px 18px; border-bottom:1px solid var(--border); }
.climate-drawer__header > div { display:flex; flex-direction:column; }.climate-drawer__header strong { font-size:1rem; }
.climate-drawer__close { border:1px solid var(--border); border-radius:9px; padding:7px 9px; background:var(--surface); font-weight:750; }
.climate-drawer__body { height:calc(100dvh - 72px); overflow:auto; padding:12px; }
.drawer-honesty-note { padding:9px; border-radius:8px; background:var(--surface-soft); color:var(--muted); font-size:.7rem; line-height:1.45; }
.drawer-device-functions { display:grid; grid-template-columns:1fr 1fr; gap:8px; margin:10px 0; }

.multi-axis-chart { position:relative; min-width:0; border:1px solid var(--border); border-radius:16px; background:var(--surface); padding:13px; }
.multi-axis-chart__header { display:flex; justify-content:space-between; align-items:start; gap:10px; margin-bottom:8px; }.multi-axis-chart__header h3 { margin:2px 0 0; font-size:1rem; }
.trend-time-toolbar { display:flex; justify-content:space-between; flex-wrap:wrap; gap:8px; padding:8px; border-radius:10px; background:var(--surface-soft); }
.history-navigation { display:flex; flex-wrap:wrap; gap:5px; }.history-navigation button,.range-selector button { min-height:31px; padding:5px 9px; border:1px solid var(--border); border-radius:7px; background:var(--surface); font-size:.68rem; font-weight:700; }.history-navigation button:disabled { opacity:.45; }.range-selector button.active { color:#fff; background:var(--primary); border-color:var(--primary); }
.visible-window { display:flex; align-items:center; flex-wrap:wrap; gap:7px; padding:8px 4px; color:var(--muted); font-size:.69rem; }.visible-window time { color:var(--text); font-weight:700; }.visible-window small { margin-left:auto; }.window-state { border-radius:999px; padding:4px 7px; font-weight:800; }.window-state.is-live { color:var(--primary); background:#e2f6ec; }.window-state.is-history { color:#7c5c18; background:#fff3d6; }
.multi-axis-plot { position:relative; min-height:370px; cursor:crosshair; touch-action:none; user-select:none; }
.multi-axis-plot svg { display:block; width:100%; height:auto; max-height:430px; overflow:visible; }
.chart-plot-background { fill:#fbfdfb; stroke:#e3ebe6; }.chart-grid { stroke:#d9e3dc; stroke-width:1; }.chart-grid--soft { stroke-dasharray:4 5; }.multi-y-axis line { stroke-width:1.5; }.multi-y-axis__unit { font-size:12px; font-weight:800; }.multi-y-axis__tick { font-size:9px; }.chart-time-axis { stroke:#9bb0a5; }.chart-time-label,.chart-time-title { fill:#74887d; font-size:9px; }.multi-chart-cursor { stroke:#1e3e33; stroke-width:1.5; stroke-dasharray:4 3; pointer-events:none; }
.multi-chart-tooltip { position:absolute; z-index:4; top:34px; width:min(260px,42%); transform:translateX(-50%); display:grid; gap:3px; padding:9px; border:1px solid #cddbd3; border-radius:9px; background:rgba(255,255,255,.96); box-shadow:0 10px 24px rgba(19,55,42,.12); pointer-events:none; }
.multi-chart-tooltip > strong { font-size:.69rem; }.multi-chart-tooltip > span { display:grid; grid-template-columns:8px 1fr auto; gap:6px; align-items:center; font-size:.64rem; }.multi-chart-tooltip > span > i { width:7px;height:7px;border-radius:50%; }.multi-chart-tooltip span span { display:flex; flex-direction:column; }.multi-chart-tooltip small { color:var(--muted);font-size:.54rem; }.multi-chart-tooltip .is-hidden { opacity:.4; }
.multi-axis-plot .shared-cursor-control { position:absolute; z-index:5; left:10%; right:10%; bottom:20px; width:80%; height:18px; opacity:.01; cursor:ew-resize; }
.chart-empty--overlay { position:absolute; z-index:3; inset:55px 11% 55px; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px; background:rgba(251,253,251,.9); }.chart-empty--overlay span { color:var(--muted);font-size:.72rem; }
.trend-navigator { display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:8px; color:var(--muted); font-size:.6rem; }.trend-navigator__track { position:relative; height:20px; border-radius:6px; background:linear-gradient(90deg,#edf3ef,#d5e8df); overflow:hidden; }.trend-navigator__track i { position:absolute; top:2px; bottom:2px; border:2px solid var(--primary); border-radius:5px; background:rgba(39,128,91,.14); }
.multi-axis-legend { display:flex; flex-wrap:wrap; gap:6px; margin-top:10px; }.multi-axis-legend button { display:grid; grid-template-columns:8px 1fr auto; align-items:center; gap:6px; min-height:37px; padding:5px 8px; border:1px solid var(--border); border-radius:8px; background:var(--surface); text-align:left; }.multi-axis-legend button > i { width:7px;height:7px;border-radius:50%; }.multi-axis-legend button > span { display:flex;flex-direction:column; }.multi-axis-legend strong { font-size:.65rem; }.multi-axis-legend small,.multi-axis-legend em { color:var(--muted);font-size:.54rem;font-style:normal; }.multi-axis-legend button.is-hidden { opacity:.45;text-decoration:line-through; }
.multi-axis-chart--compact { padding:10px; }.multi-axis-chart--compact .multi-axis-plot { min-height:250px; }.multi-axis-chart--compact .multi-chart-tooltip { top:24px; }.multi-axis-chart--compact .multi-axis-legend { margin-top:4px; }.multi-axis-chart--compact .multi-axis-legend button { min-height:30px; }
.trend-series-search { display:flex; flex-direction:column; gap:4px; margin:10px 0; color:var(--muted);font-size:.65rem; }.trend-series-search input { width:100%; min-height:35px; border:1px solid var(--border); border-radius:8px; padding:7px 9px; background:var(--surface);color:var(--text); }.series-search-empty { color:var(--muted);font-size:.7rem; }.selected-series-chips button span { display:flex;flex-direction:column; }.selected-series-chips button small { font-size:.52rem;color:var(--muted); }.selected-series-chips button b { margin-left:4px; }

@media (max-width: 1100px) {
  .climate-process-main { grid-template-columns:minmax(0,1fr) 300px !important; }.climate-status-sidebar { width:300px; }
  .process-synoptic { padding-left:112px !important; }.heating-circuit-row { grid-template-columns:minmax(130px,1.5fr) repeat(3,minmax(54px,.7fr)) minmax(70px,.8fr); }.heating-circuit-row__metric:nth-of-type(4),.heating-circuit-row__metric:nth-of-type(5),.heating-circuit-row__metric:nth-of-type(6) { display:none; }
}
@media (max-width: 820px) {
  .climate-mode-row { grid-template-columns:1fr; }.climate-mode-strip { grid-template-columns:1fr 1fr; }.climate-mode-strip > span:nth-child(2) { border-right:0; }.strategy-drawer-trigger { min-height:43px; }
  .climate-process-main { grid-template-columns:1fr !important; }.climate-status-sidebar { width:100%; grid-template-columns:1fr; }
  .process-synoptic { padding:66px 7px 9px !important; min-height:auto !important; }.process-outdoor { top:5px !important;left:7px !important;right:7px !important;width:auto !important;height:53px !important;display:flex !important; }
  .greenhouse-process { min-height:520px !important; padding:54px 8px 10px !important; }.process-vent-row { grid-template-columns:1fr 1fr; gap:4px; }.process-vent-row .process-node { min-height:45px;padding:5px; }.process-node__limit { display:none; }
  .process-climate-core { min-width:88%; }.process-sensor-row { grid-template-columns:repeat(2,1fr); }.process-auxiliaries { grid-template-columns:1fr; }.process-function-pills { display:none !important; }
  .heating-circuit-row { grid-template-columns:minmax(115px,1.5fr) repeat(2,minmax(50px,.7fr)) minmax(65px,.8fr); }.heating-circuit-row__metric:nth-of-type(n+3) { display:none; }
  .overview-context-trends { grid-template-columns:1fr !important; }
  .trend-explorer { grid-template-columns:1fr !important; }.trend-series-picker { position:static !important;max-height:none !important; }.trend-time-toolbar { align-items:stretch; }.range-selector,.history-navigation { width:100%; }.range-selector button,.history-navigation button { flex:1; }.visible-window small { width:100%;margin-left:0; }
  .multi-axis-plot { min-height:290px; overflow:hidden; }.multi-axis-plot svg { width:760px;max-width:none;transform:translateX(-75px); }.multi-chart-tooltip { width:58%; }.multi-axis-legend button { flex:1 1 46%; }.multi-axis-chart--compact .multi-axis-plot { min-height:230px; }
  .climate-drawer { width:100vw; }.climate-drawer__body { padding-bottom:30px; }
}
@media (max-width: 480px) {
  .climate-mode-strip { grid-template-columns:1fr 1fr; }.climate-mode-strip > span { padding:8px 10px; }.climate-mode-strip__state { grid-column:1/-1;border-right:0 !important;border-bottom:1px solid var(--border); }
  .climate-status-grid--weather { grid-template-columns:1fr 1fr; }.process-card-heading { align-items:start !important; }.installation-variant { max-width:48%;text-align:right; }
  .greenhouse-process { padding-top:57px !important; }.process-vent-row .process-node span:nth-child(2) small { display:none; }.process-screen-track { margin-top:5px; }.process-climate-core { grid-template-columns:1fr 1fr; }.process-climate-core span:last-child { display:none; }
  .process-sensor-row .process-node:nth-child(n+3) { display:none; }.process-crop-bed span:nth-child(even) { display:none; }.heating-circuit-row { grid-template-columns:minmax(105px,1.3fr) 55px 67px; }.heating-circuit-row__metric:nth-of-type(n+2) { display:none; }
  .multi-axis-chart { padding:8px; }.multi-axis-chart__header { flex-direction:column; }.range-selector button { padding:5px 6px; }.history-navigation button { flex-basis:45%; }.multi-axis-plot svg { transform:translateX(-125px); }.multi-chart-tooltip { left:50% !important;width:86%;transform:translateX(-50%); }.multi-axis-legend button { flex-basis:100%; }
}

@media (max-width:1100px){
  .climate-process-main{grid-template-columns:1fr!important}
  .climate-status-sidebar{display:grid;width:100%!important;grid-template-columns:repeat(3,minmax(0,1fr))}
}
@media (max-width:820px){
  .climate-status-sidebar{grid-template-columns:1fr}
  .trend-workbench{grid-template-columns:1fr}
  .trend-series-picker{position:fixed!important;z-index:50;inset:0 0 0 auto;width:min(92vw,360px);max-height:none!important;border-radius:0;transform:translateX(105%);transition:transform .2s ease}
  .trend-series-picker.is-open{transform:translateX(0)}
  .picker-close,.picker-open{display:block}
}

/* DEMO-UI-007 final cascade guards */
.greenhouse-construction,.greenhouse-construction path,.greenhouse-construction line{fill:none!important;stroke:#9aa9a1!important;stroke-width:2.2!important}
.greenhouse-construction line:last-child{stroke:#537663!important;stroke-width:3!important}
.physical-roof-vents .physical-vent{fill:none!important;stroke:#176c4b!important;stroke-width:4!important}
.physical-roof-vents .vent-hinge{fill:#fff!important;stroke:#176c4b!important;stroke-width:2!important}
.climate-process-page,.climate-trends-page{width:100%;max-width:100%;min-width:0;overflow-x:hidden}
.climate-process-main{grid-template-columns:minmax(0,1fr) 310px!important;gap:12px!important}
.climate-status-sidebar{order:0!important;width:310px!important;min-width:0}
@media (max-width:1100px){.climate-process-main{grid-template-columns:1fr!important}.climate-status-sidebar{width:100%!important}}

/* DEMO-UI-008 — local C.O. master-detail and readable chart scales */
.heating-circuit-panel{grid-template-columns:minmax(340px,390px) minmax(0,1fr)!important;gap:14px!important}
.heating-circuit-list{gap:5px!important}
.heating-circuit-list button{display:grid!important;grid-template-columns:18px minmax(82px,1.1fr) minmax(72px,.9fr) minmax(96px,1fr)!important;grid-template-rows:1fr 1fr;gap:2px 8px!important;min-height:52px!important;padding:6px 9px!important;border-width:1px!important;border-radius:8px!important;line-height:1.15}
.heating-circuit-list button .circuit-selection-mark{grid-column:1;grid-row:1/3;display:grid;width:16px;height:16px;place-items:center;border:2px solid #517565;border-radius:50%;font-size:10px;font-weight:900}
.heating-circuit-list button .circuit-name{grid-column:2;grid-row:1/3;display:flex;flex-direction:column;align-self:center;gap:3px}
.heating-circuit-list button .circuit-name strong{font-size:13px!important;line-height:1.2}
.heating-circuit-list button .circuit-name small{font-size:12px!important;font-weight:800}
.heating-circuit-list button .circuit-temperature{grid-column:3;grid-row:1}.heating-circuit-list button .circuit-setpoint{grid-column:4;grid-row:1}.heating-circuit-list button .circuit-pump{grid-column:3;grid-row:2}.heating-circuit-list button .circuit-valve{grid-column:4;grid-row:2}
.heating-circuit-list button .circuit-temperature,.heating-circuit-list button .circuit-setpoint,.heating-circuit-list button .circuit-pump,.heating-circuit-list button .circuit-valve{display:flex;min-width:0;flex-direction:column;justify-content:center}
.heating-circuit-list button span small{overflow:hidden;color:var(--muted);font-size:12px!important;text-overflow:ellipsis;white-space:nowrap}.heating-circuit-list button span strong{overflow:hidden;font-size:12px!important;text-overflow:ellipsis;white-space:nowrap}
.heating-circuit-list button.active{border:2px solid #245b45!important;box-shadow:inset 4px 0 #245b45,0 0 0 1px #fff!important}.heating-circuit-list button.active .circuit-selection-mark{color:#fff;border-color:#245b45;background:#245b45}.heating-circuit-list button:focus-visible{outline:3px solid #72a990;outline-offset:2px}
.heating-circuit-detail{padding:14px!important}.heating-circuit-detail h3{font-size:18px!important}.hydraulic-layout{grid-template-columns:minmax(0,1.35fr) minmax(230px,.75fr)!important;gap:12px!important}.hydraulic-layout>svg:first-child{height:185px!important}.hydraulic-layout text{font-size:12px!important}.circuit-facts{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:7px!important}.circuit-facts span{min-height:48px;padding:7px!important}.circuit-facts small{font-size:12px!important}.circuit-facts strong{font-size:13px!important}.circuit-facts .circuit-derived-state{grid-column:1/-1;min-height:45px}.circuit-sparkline{grid-column:2!important;height:70px!important}.heating-circuit-detail>p{font-size:12px!important;line-height:1.45}
.numeric-trend-lane>header strong,.discrete-state-lane>header strong{font-size:12px!important}.numeric-trend-lane>header span,.discrete-state-lane>header span{font-size:11px!important}.numeric-trend-lane svg{height:168px!important}.lane-tick{font-size:12px!important;font-weight:700}.lane-time{font-size:11px!important;font-weight:600}.lane-grid{stroke:#d2ded7!important}.discrete-state-track>span{font-size:10px!important}.shared-time-axis-label{font-size:11px!important}.shared-trend-tooltip{width:min(240px,42vw)!important;max-height:70%;overflow:hidden}.shared-trend-tooltip>strong{font-size:11px!important}.shared-trend-tooltip span span,.shared-trend-tooltip b{font-size:10px!important}
.multi-y-axis__unit{font-size:14px!important}.multi-y-axis__tick{font-size:12px!important;font-weight:700}.chart-time-label,.chart-time-title{font-size:11px!important;font-weight:600}.chart-grid{stroke:#cddbd3!important}.multi-chart-tooltip{width:min(250px,44%)!important}.multi-chart-tooltip>strong{font-size:12px!important}.multi-chart-tooltip span span,.multi-chart-tooltip b{font-size:11px!important}.multi-chart-tooltip small{font-size:9px!important}
@media (max-width:820px){.heating-circuit-panel{grid-template-columns:1fr!important}.heating-circuit-list{grid-template-columns:1fr!important}.hydraulic-layout{grid-template-columns:1fr!important}.circuit-sparkline{grid-column:1!important}.circuit-facts{grid-template-columns:repeat(2,minmax(0,1fr))!important}.numeric-trend-lane svg{height:160px!important}}
@media (max-width:480px){.heating-circuit-list button{grid-template-columns:18px minmax(78px,1fr) minmax(64px,.8fr) minmax(90px,1fr)!important}.heating-circuit-detail{padding:10px!important}.circuit-facts{grid-template-columns:1fr 1fr!important}.multi-axis-plot svg{width:100%!important;max-width:100%!important;transform:none!important}.multi-y-axis__tick{font-size:13px!important}.chart-time-label,.chart-time-title{font-size:12px!important}.shared-trend-tooltip,.multi-chart-tooltip{left:50%!important;width:86%!important;transform:translateX(-50%)!important}}

/* CLIMATE-CORRECTION-4 — one plot, SVG synoptic and semantic C.O. states */
:root{--co-supply:#df5f4a;--co-return:#357fc5;--co-active:#177a51;--co-opening:#e06d2c;--co-closing:#2872bf;--co-stop:#c23d38;--co-manual:#8059a5;--co-fault:#b73131}
.curtain-system{pointer-events:auto}.curtain-svg-group{cursor:pointer;outline:none}.curtain-svg-track{fill:#f9fbfa;stroke:#adc2b7;stroke-width:1}.curtain-svg-fill{fill:#dcefe5;stroke:#3d8e69;stroke-width:1;transition:x .55s ease,width .55s ease}.curtain-svg-fill--lower{fill:#fff0e8;stroke:#d87851}.curtain-svg-label,.curtain-svg-value{fill:#315847;font-size:10px;font-weight:700;paint-order:stroke;stroke:#fff;stroke-width:3px;stroke-linejoin:round}.curtain-svg-group.is-selected .curtain-svg-track{stroke:#0b6c48;stroke-width:2}
.metric-icon{width:18px;height:18px;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round;color:#177a51;flex:none}.climate-reading-panel span{grid-template-columns:18px 1fr auto!important;align-items:center}.climate-reading-panel span>.metric-icon{grid-column:1;grid-row:1/3}.climate-reading-panel span>small{grid-column:2}.climate-reading-panel span>strong{grid-column:3}.climate-reading-panel span>em{grid-column:2/4!important}.climate-status-metric>.metric-icon{grid-row:1/4;width:21px;height:21px}.greenhouse-sensor>.metric-icon{width:14px;height:14px}.greenhouse-sensor{font-size:11px!important;font-weight:700}.greenhouse-sensor b{font-variant-numeric:tabular-nums}
.fan-symbol{width:58px;height:58px;overflow:visible}.fan-housing,.fan-airflow{fill:none;stroke:#25845e;stroke-width:2}.fan-airflow{stroke-dasharray:5 4}.fan-rotor{fill:#25845e;transform-origin:32px 32px}.fan-symbol.is-running .fan-rotor{animation:fan-rotation var(--fan-duration,1.3s) linear infinite}.fan-symbol.is-stopped .fan-rotor{animation:none}.mist-symbol{width:64px;height:58px;transform:none;overflow:visible}.mist-nozzle,.mist-arc{fill:none;stroke:#25845e;stroke-width:2;stroke-linecap:round}.mist-drops{fill:#25845e}.mist-symbol.is-running .mist-drops{animation:mist-fall 1.15s ease-in-out infinite}.mist-symbol.is-stopped .mist-drops{animation:none;opacity:.35}@keyframes fan-rotation{to{transform:rotate(360deg)}}@keyframes mist-fall{0%{transform:translateY(-3px);opacity:.2}45%{opacity:1}100%{transform:translateY(8px);opacity:.15}}
.unified-numeric-trend{position:relative;z-index:2;overflow:hidden;border:1px solid var(--border);border-radius:10px;background:#fff}.unified-numeric-trend>header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:9px 12px;border-bottom:1px solid var(--border);background:#f7faf8}.unified-numeric-trend>header div{display:flex;flex-direction:column}.unified-numeric-trend>header strong{font-size:13px}.unified-numeric-trend>header span{color:var(--muted);font-size:11px}.unified-numeric-trend>header button{min-height:30px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--primary);font-size:11px;font-weight:700}.unified-trend-layout{display:grid;grid-template-columns:minmax(102px,150px) minmax(0,1fr);min-height:390px}.unit-axis-rail{display:flex;flex-direction:column;gap:5px;max-height:390px;padding:8px;overflow:auto;border-right:1px solid var(--border);background:#f7faf8}.unit-axis-card{display:grid;grid-template-columns:1fr auto;gap:1px 8px;padding:6px;border-left:3px solid var(--axis-color);border-radius:5px;background:#fff}.unit-axis-card strong{grid-row:1/6;align-self:center;color:var(--axis-color);font-size:11px}.unit-axis-card span{color:#53645b;font-size:9px;text-align:right;font-variant-numeric:tabular-nums}.unit-axis-card.is-highlighted{outline:2px solid var(--axis-color);outline-offset:-1px}.unified-trend-plot{position:relative;min-width:0;touch-action:none}.unified-trend-plot svg{display:block;width:100%;height:390px}.unified-series-line{transition:opacity .15s,stroke-width .15s}.unified-series-line.is-dimmed{opacity:.18}.unified-series-line.is-highlighted{filter:drop-shadow(0 0 2px rgba(0,0,0,.22))}.shared-plot-cursor{stroke:#173f31;stroke-width:1;pointer-events:none}.shared-plot-cursor-control{position:absolute;z-index:4;inset:0;width:100%;height:100%;opacity:.01;cursor:crosshair}.event-marker-layer--unified{left:calc(150px + 6.4%);right:2.8%;bottom:0;z-index:3}.selected-series-legend>div.is-highlighted{box-shadow:inset 0 0 0 2px var(--primary)}.selected-series-legend>div button[aria-pressed=true]{color:#fff;background:var(--primary)}
.heating-circuit-detail .hydraulic-supply{stroke:var(--co-supply)!important}.heating-circuit-detail .hydraulic-return{stroke:var(--co-return)!important}.heating-circuit-list .state-manual{border-left-color:var(--co-manual)!important}.heating-circuit-list .state-critical,.constraint--critical{border-color:var(--co-fault)!important}.circuit-valve strong{color:var(--co-active)}
@media (prefers-reduced-motion:reduce){.physical-vent,.curtain-svg-fill,.fan-rotor,.mist-drops{transition:none!important;animation:none!important}}
@media (max-width:820px){.unified-trend-layout{grid-template-columns:105px minmax(0,1fr)}.unit-axis-rail{max-height:330px}.unified-trend-plot svg{height:330px}.event-marker-layer--unified{left:110px}}
@media (max-width:480px){.unified-trend-layout{grid-template-columns:78px minmax(0,1fr)}.unit-axis-card{grid-template-columns:1fr;padding:4px}.unit-axis-card strong{grid-row:auto;font-size:10px}.unit-axis-card span{font-size:8px}.unified-trend-plot svg{height:300px}.event-marker-layer--unified{left:82px}.curtain-svg-label,.curtain-svg-value{font-size:12px}.greenhouse-sensor{font-size:10px!important}}
.circuit-detail-actions{display:flex;align-items:center;gap:7px}.circuit-detail-actions button{min-height:32px;padding:5px 9px;border:1px solid var(--primary);border-radius:6px;background:#fff;color:var(--primary);font-size:11px;font-weight:750}.circuit-mini-trend{position:relative;grid-column:2;min-width:0;padding:5px;border:1px solid var(--border);border-radius:8px;background:#fff}.circuit-mini-trend svg{display:block;width:100%;height:150px}.circuit-mini-trend>input{position:absolute;inset:5px 5px 30px;width:calc(100% - 10px);height:calc(100% - 35px);opacity:.01}.circuit-mini-trend>output{position:absolute;top:12px;right:10px;display:grid;gap:2px;min-width:125px;padding:6px;border:1px solid #b8cabf;border-radius:6px;background:rgba(255,255,255,.94);font-size:9px;pointer-events:none}.circuit-mini-trend>output span{display:flex;justify-content:space-between;gap:8px}.circuit-mini-trend>output small{color:var(--muted)}.circuit-mini-trend>footer{display:flex;gap:12px;padding:0 8px 3px;font-size:10px}.circuit-mini-trend>footer span{display:flex;align-items:center;gap:4px}.circuit-mini-trend>footer i{width:14px;border-top:2px solid var(--primary)}.circuit-mini-trend>footer i.setpoint{border-color:#3478b8;border-top-style:dashed}.mini-trend-grid{stroke:#dce5df}.mini-trend-tick,.mini-trend-time,.mini-trend-unit{fill:#64736b;font-size:10px}.mini-trend-actual{fill:none;stroke:var(--primary);stroke-width:2.5}.mini-trend-setpoint{fill:none;stroke:#3478b8;stroke-width:2;stroke-dasharray:6 4}.mini-trend-cursor{stroke:#1e4435;stroke-width:1}.circuit-strategy .device-detail-grid{grid-template-columns:repeat(2,minmax(0,1fr))}
@media (max-width:820px){.circuit-mini-trend{grid-column:1}.circuit-detail-actions{align-items:flex-end;flex-direction:column}}

/* DEMO-UI-010 — Klimat / Nastawy */
.climate-settings-page{max-width:1760px;padding-bottom:96px;overflow-x:hidden}
.settings-page-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin:.2rem 0 .7rem;padding:.75rem 1rem;border:1px solid var(--border);border-radius:14px;background:#fff;box-shadow:var(--shadow)}
.settings-page-heading h2,.effective-values h3,.settings-editor h3,.plc-strategy-card h3{margin:.14rem 0}.settings-page-heading h2{font-size:1.35rem}
.settings-plc-status{display:flex;align-items:center;gap:12px;color:var(--muted);font-size:.72rem}.settings-plc-status strong{display:flex;align-items:center;gap:6px;color:#126545}.settings-plc-status strong i{width:8px;height:8px;border-radius:50%;background:#28a66e;box-shadow:0 0 0 4px #def4e8}.demo-disclosure{padding:4px 7px;border-radius:999px;background:#f0f4f1;color:#53645b;font-weight:750}
.effective-values{margin-bottom:.75rem;padding:.8rem;border:1px solid var(--border);border-radius:14px;background:#fff;box-shadow:var(--shadow)}.effective-values__heading{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:.55rem}.effective-values__heading p{margin:0;color:var(--muted);font-size:.7rem}.effective-values__grid{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:6px}.effective-values__grid article{display:flex;min-width:0;min-height:92px;flex-direction:column;justify-content:center;padding:.65rem;border:1px solid #dfe9e3;border-left:3px solid #65a889;border-radius:9px;background:#f8fbf9}.effective-values__grid span{color:var(--muted);font-size:.64rem}.effective-values__grid strong{margin:.18rem 0;color:#153f31;font-size:1rem;white-space:nowrap}.effective-values__grid small{color:#337359;font-size:.58rem;font-weight:700}
.settings-workspace{display:grid;grid-template-columns:minmax(0,2fr) minmax(310px,1fr);gap:12px;align-items:start}.settings-editor,.plc-strategy-card{min-width:0;border:1px solid var(--border);border-radius:14px;background:#fff;box-shadow:var(--shadow)}.settings-editor{overflow:hidden}.settings-tabs{display:flex;gap:4px;padding:8px;border-bottom:1px solid var(--border);background:#f5f8f6;overflow-x:auto}.settings-tabs button{min-height:38px;padding:6px 14px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--muted);font-size:.74rem;font-weight:750;white-space:nowrap}.settings-tabs button:hover{background:#fff}.settings-tabs button.active{border-color:#77b396;background:#fff;color:#116a48;box-shadow:0 1px 2px rgba(28,67,50,.1)}.settings-tabs button:focus-visible,.settings-number-field input:focus-visible,.settings-toggle-row button:focus-visible,.settings-changebar button:focus-visible,.demo-scenario select:focus-visible{outline:3px solid rgba(29,133,88,.3);outline-offset:2px}
.settings-panel{padding:16px}.settings-panel>header{max-width:760px;margin-bottom:14px}.settings-panel>header p,.curve-editor__heading p{margin:.25rem 0;color:var(--muted);font-size:.72rem;line-height:1.5}.settings-toggle-list{display:grid;gap:7px;margin-bottom:12px}.settings-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:10px 12px;border:1px solid var(--border);border-radius:9px}.settings-toggle-row.is-dirty,.settings-number-field.is-dirty{border-color:#d4a657;background:#fffbef}.settings-toggle-row>div{display:flex;min-width:0;flex-direction:column}.settings-toggle-row strong{font-size:.78rem}.settings-toggle-row span{color:var(--muted);font-size:.66rem}.settings-toggle-row small{margin-top:3px;color:#337359;font-size:.57rem;font-weight:700}.settings-toggle-row.is-dirty small{color:#865b18}.settings-toggle-row button{display:flex;align-items:center;gap:7px;min-width:118px;min-height:36px;padding:4px 8px;border:1px solid var(--border);border-radius:999px;background:#fff;color:#53645b;font-size:.66rem;font-weight:750}.settings-toggle-row button i{position:relative;width:31px;height:18px;border-radius:999px;background:#bbc7c0}.settings-toggle-row button i:after{position:absolute;top:3px;left:3px;width:12px;height:12px;border-radius:50%;background:#fff;content:"";transition:transform .15s}.settings-toggle-row button[aria-checked=true]{color:#126545;border-color:#83b99f}.settings-toggle-row button[aria-checked=true] i{background:#239063}.settings-toggle-row button[aria-checked=true] i:after{transform:translateX(13px)}
.settings-fields-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.settings-fields-grid--curve{grid-template-columns:repeat(4,minmax(0,1fr))}.settings-number-field{min-width:0;padding:10px;border:1px solid var(--border);border-radius:9px;background:#fff}.settings-number-field>label{display:flex;min-height:34px;flex-direction:column}.settings-number-field>label span{font-size:.72rem;font-weight:750}.settings-number-field>label small{color:var(--muted);font-size:.59rem}.settings-number-field__control{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;margin-top:5px;border:1px solid #b9c9c0;border-radius:7px;background:#fff}.settings-number-field__control:focus-within{border-color:#25885f;box-shadow:0 0 0 2px rgba(37,136,95,.13)}.settings-number-field input{min-width:0;height:40px;padding:6px 8px;border:0;border-radius:7px;background:transparent;color:var(--text);font-size:.9rem;font-weight:750;font-variant-numeric:tabular-nums}.settings-number-field input:focus{outline:0}.settings-number-field__control>span{padding:0 9px;color:var(--muted);font-size:.68rem}.settings-number-field__state{min-height:16px;margin-top:4px;color:#337359;font-size:.56rem;font-weight:650}.field-dirty{color:#865b18}.field-error{color:#a5362e}.settings-number-field input[aria-invalid=true]{color:#9f302a}
.program-readback,.wt-readback{display:flex;align-items:center;gap:12px;margin-top:10px;padding:10px 12px;border-left:3px solid #648c9e;border-radius:7px;background:#f1f6f8}.program-readback span{font-size:.7rem}.program-readback strong{font-size:.9rem}.program-readback small,.wt-readback small{margin-left:auto;color:var(--muted);font-size:.59rem}.settings-secondary-link{display:inline-flex;gap:8px;margin-top:12px;color:#176f50;font-size:.7rem;font-weight:750}.settings-secondary-link span{color:var(--muted);font-weight:600}.curve-editor{margin-top:10px;padding:12px;border:1px solid var(--border);border-radius:10px;background:#fbfcfb}.curve-editor__heading{display:flex;align-items:center;justify-content:space-between;gap:14px;margin-bottom:9px}.curve-editor h4{margin:0;font-size:.84rem}.curve-editor output{display:flex;min-width:145px;flex-direction:column;padding:7px 9px;border-radius:7px;background:#eaf6ef}.curve-editor output span,.curve-editor output small{color:#38725b;font-size:.56rem}.curve-editor output strong{font-size:.82rem}.wt-readback{justify-content:flex-end}.wt-readback>div{display:flex;gap:6px;align-items:baseline}.wt-readback span{color:var(--muted);font-size:.64rem}.wt-readback strong{font-size:.78rem}
.safety-summary{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.safety-summary article{display:flex;min-height:100px;flex-direction:column;padding:12px;border:1px solid var(--border);border-radius:9px;background:#f8faf9}.safety-summary strong{font-size:.76rem}.safety-summary span{margin:.3rem 0;font-size:.7rem}.safety-summary small,.settings-future-note{color:var(--muted);font-size:.6rem}.settings-future-note{padding:10px;border-left:3px solid #c6a45f;background:#fff9e9}
.plc-strategy-card{position:sticky;top:12px;padding:16px}.plc-strategy-card dl{margin:12px 0;border-top:1px solid var(--border)}.plc-strategy-card dl div{display:flex;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px solid var(--border)}.plc-strategy-card dt{color:var(--muted);font-size:.65rem}.plc-strategy-card dd{margin:0;font-size:.7rem;font-weight:800;text-align:right}.strategy-flow{display:flex;flex-wrap:wrap;gap:5px;align-items:center;padding:10px;border-radius:8px;background:#edf7f1}.strategy-flow span{padding:4px 6px;border-radius:5px;background:#fff;color:#184f3a;font-size:.61rem;font-weight:700}.strategy-flow b{color:#44906d;font-size:.7rem}.plc-strategy-card>p{color:var(--muted);font-size:.63rem;line-height:1.5}.demo-scenario{display:flex;flex-direction:column;gap:4px;margin-top:12px;padding-top:10px;border-top:1px dashed var(--border);color:var(--muted);font-size:.59rem}.demo-scenario select{min-height:38px;padding:6px;border:1px solid var(--border);border-radius:7px;background:#fff;color:var(--text);font-size:.68rem}
.settings-changebar{position:fixed;z-index:40;right:24px;bottom:max(16px,env(safe-area-inset-bottom));left:248px;display:flex;align-items:center;justify-content:space-between;gap:16px;max-width:1600px;margin:auto;padding:11px 14px;border:1px solid #c99b4c;border-radius:12px;background:rgba(255,250,235,.97);box-shadow:0 10px 30px rgba(35,58,47,.2);backdrop-filter:blur(8px)}.settings-changebar>div:first-child{display:flex;min-width:0;flex-direction:column}.settings-changebar strong{font-size:.74rem}.settings-changebar span{color:#75551d;font-size:.63rem}.settings-changebar.is-success{border-color:#66aa88;background:rgba(235,249,241,.98)}.settings-changebar.is-success span{color:#176747}.settings-changebar.is-warning{border-color:#c88736;background:rgba(255,246,226,.98)}.settings-changebar.is-error{border-color:#c96c64;background:rgba(255,241,239,.98)}.settings-changebar.is-error span{color:#9b342d}.settings-changebar__actions{display:flex;gap:7px}.settings-changebar button{min-height:38px;padding:6px 12px;border-radius:7px;font-size:.7rem;font-weight:750}.settings-changebar button.secondary{border:1px solid var(--border);background:#fff;color:var(--text)}.settings-changebar button.primary{border:1px solid #126545;background:#126545;color:#fff}.settings-changebar button:disabled{cursor:not-allowed;opacity:.55}
@media(max-width:1180px){.effective-values__grid{grid-template-columns:repeat(3,minmax(0,1fr))}.settings-workspace{grid-template-columns:minmax(0,1.8fr) minmax(280px,1fr)}.settings-fields-grid--curve{grid-template-columns:repeat(2,minmax(0,1fr))}.settings-changebar{left:214px}}
@media(max-width:820px){.settings-page-heading{align-items:flex-start;flex-direction:column}.settings-plc-status{align-items:flex-start;flex-wrap:wrap}.settings-workspace{display:flex;flex-direction:column}.settings-editor,.plc-strategy-card{width:100%}.plc-strategy-card{position:static;order:-1}.effective-values__grid{grid-template-columns:repeat(2,minmax(0,1fr))}.settings-changebar{left:12px;right:12px}.settings-panel{padding:12px}}
@media(max-width:480px){.climate-settings-page{padding-bottom:130px}.settings-page-heading{padding:11px}.settings-plc-status{display:grid;grid-template-columns:1fr 1fr;width:100%;gap:7px}.settings-plc-status strong{grid-column:1/-1}.effective-values{padding:8px}.effective-values__heading{align-items:flex-start;flex-direction:column}.effective-values__grid{grid-template-columns:1fr 1fr}.effective-values__grid article{min-height:84px;padding:8px}.effective-values__grid strong{font-size:.82rem}.settings-fields-grid,.settings-fields-grid--curve,.safety-summary{grid-template-columns:1fr}.settings-toggle-row{align-items:flex-start;flex-direction:column}.settings-toggle-row button{justify-content:center;width:100%}.curve-editor{padding:8px}.curve-editor__heading{align-items:flex-start;flex-direction:column}.curve-editor output{width:100%}.wt-readback{align-items:flex-start;flex-wrap:wrap;justify-content:flex-start}.wt-readback small{flex-basis:100%;margin-left:0}.settings-changebar{align-items:stretch;flex-direction:column;padding:10px}.settings-changebar__actions{display:grid;grid-template-columns:1fr 1fr}.settings-changebar button{width:100%}}

/* DEMO-UI-010A — korekta semantyki i hierarchii Nastaw */
.effective-values__grid article{border-left-color:#b8c4bd;background:#fafbfa}.effective-values__grid strong{color:var(--text)}.effective-values__grid small{color:var(--muted)}
.settings-toggle-row small,.settings-number-field__state{color:var(--muted)}.settings-toggle-row.is-confirmed{border-color:#83b99f;background:#f0f8f3}.settings-toggle-row.is-confirmed small,.field-confirmed{color:#176747;font-weight:750}
.settings-readonly-field{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:4px 16px;padding:12px;border:1px solid var(--border);border-radius:9px;background:#f7f9f8}.settings-readonly-field>div{display:flex;min-width:0;flex-direction:column}.settings-readonly-field strong{font-size:.76rem}.settings-readonly-field span,.settings-readonly-field small{color:var(--muted);font-size:.62rem}.settings-readonly-field output{grid-row:1/3;grid-column:2;color:var(--text);font-size:1rem;font-weight:800}.settings-readonly-field small{grid-column:1/-1;padding-top:5px;border-top:1px solid var(--border)}
.settings-mode-notice{margin:8px 0 0;padding:8px 10px;border-left:3px solid #c79442;background:#fff8e8;color:#6f501e;font-size:.64rem;line-height:1.45}.strategy-reason{margin:10px 0;padding:11px;border-left:3px solid #66879a;border-radius:6px;background:#f1f6f8;color:#23483a!important;font-size:.72rem!important;font-weight:750;line-height:1.5!important}
.settings-toggle-row button[aria-checked=true]{color:#385d6b;border-color:#8ea9b3}.settings-toggle-row button[aria-checked=true] i{background:#5e8694}.curve-editor output{background:#f1f5f6}.curve-editor output span,.curve-editor output small{color:var(--muted)}.strategy-flow{background:#f2f5f3}.strategy-flow span{color:#304c41}.strategy-flow b{color:#6c7d74}
@media(max-width:820px){.plc-strategy-card{order:0}.settings-readonly-field{grid-template-columns:1fr auto}}
@media(max-width:480px){.settings-number-field>label{min-height:0}.settings-number-field>label span,.settings-readonly-field strong{overflow-wrap:anywhere}.settings-readonly-field{grid-template-columns:1fr}.settings-readonly-field output{grid-row:auto;grid-column:1}.settings-readonly-field small{grid-column:1}.strategy-reason{font-size:.68rem!important}}

/* DEMO-UI-011 — Climate daily programs */
.climate-programs-page{padding-bottom:92px}.program-page-heading{margin-bottom:.55rem}.program-type-tabs{display:flex;gap:6px;margin-bottom:.65rem;padding:5px;border:1px solid var(--border);border-radius:11px;background:#f4f7f5;overflow-x:auto}.program-type-tabs button{display:flex;flex:1 1 0;align-items:center;justify-content:center;gap:8px;min-height:42px;padding:7px 16px;border:1px solid transparent;border-radius:8px;background:transparent;color:var(--muted);font-size:.75rem;font-weight:800;white-space:nowrap}.program-type-tabs button.active{border-color:#82aeb5;background:#fff;color:#294f5d;box-shadow:0 1px 3px rgb(38 70 57 / 11%)}.program-tab-badge{padding:2px 6px;border-radius:999px;background:#fff0cf;color:#795615;font-size:.57rem}.program-type-tabs button:focus-visible,.program-point-editor input:focus-visible,.program-point-navigation button:focus-visible,.program-points-table tr:focus-visible,.program-demo-tools select:focus-visible,.program-demo-tools summary:focus-visible{outline:3px solid rgba(39,112,139,.28);outline-offset:2px}
.program-runtime-summary{margin-bottom:.7rem;padding:12px 14px;border:1px solid var(--border);border-radius:14px;background:#fff;box-shadow:var(--shadow)}.program-runtime-summary>header,.program-points-section>header{display:flex;align-items:center;justify-content:space-between;gap:14px}.program-runtime-summary h3,.program-points-section h3,.program-chart h3,.program-point-editor h3{margin:.12rem 0;font-size:1rem}.program-runtime-state{padding:5px 9px;border:1px solid #b8c6bf;border-radius:999px;background:#f4f7f5;color:#52655b;font-size:.64rem;font-weight:800}.program-runtime-state.is-active{border-color:#8fafa5;background:#edf5f1;color:#335d50}.program-runtime-state.is-inactive{border-color:#d1ab62;background:#fff7e5;color:#78571b}.program-runtime-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:7px;margin-top:9px}.program-runtime-grid article{display:flex;min-width:0;min-height:78px;flex-direction:column;justify-content:center;padding:9px 10px;border:1px solid #dde6e1;border-left:3px solid #9cadb5;border-radius:8px;background:#f8faf9}.program-runtime-grid span,.humidity-program-runtime span{color:var(--muted);font-size:.61rem}.program-runtime-grid strong,.humidity-program-runtime strong{margin:3px 0;font-size:.82rem}.program-runtime-grid small,.humidity-program-runtime small{color:var(--muted);font-size:.56rem}.program-runtime-summary>p{margin:9px 0 0;padding-top:8px;border-top:1px solid var(--border);color:var(--muted);font-size:.65rem;line-height:1.45}.humidity-program-runtime{display:grid;grid-template-columns:1.2fr 1fr auto;align-items:center;gap:10px;margin-top:9px;padding:9px 10px;border:1px solid #d9e2dd;border-radius:8px;background:#f7f9f8}.humidity-program-runtime>div{display:flex;flex-direction:column}.humidity-program-runtime a{color:var(--primary);font-size:.65rem;font-weight:750}.program-inactive-notice{padding:9px!important;border:0!important;border-left:3px solid #c68b35!important;background:#fff7e6;color:#71531d!important}
.program-workspace{display:grid;grid-template-columns:minmax(0,1.75fr) minmax(290px,.85fr);gap:11px;align-items:stretch;margin-bottom:.7rem}.program-chart,.program-point-editor,.program-points-section,.program-demo-tools{min-width:0;border:1px solid var(--border);border-radius:14px;background:#fff;box-shadow:var(--shadow)}.program-chart{padding:12px}.program-chart__header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.program-chart__selection{max-width:48%;padding:5px 8px;border-radius:7px;background:#edf3f5;color:#315768;font-size:.63rem;font-weight:750;text-align:right}.program-chart__canvas{min-height:280px;margin-top:6px}.program-chart svg{display:block;width:100%;height:auto;min-height:280px}.program-chart__plot{fill:#fbfcfb;stroke:#d9e3dd}.program-chart__grid{stroke:#e3e9e5;stroke-dasharray:3 5}.program-chart__x-grid{stroke:#edf1ef}.program-chart__x-label,.program-chart__y-label,.program-chart__axis-title{fill:#68776f;font-size:16px;font-weight:600}.program-line{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.program-line--confirmed{stroke:#356b5a;stroke-width:3}.program-line--draft{stroke:#bd7a25;stroke-width:3;stroke-dasharray:8 7}.program-line--point-guide{stroke-width:2;stroke-dasharray:2 9;opacity:.72}.program-chart__now{stroke:#4e7180;stroke-width:2;stroke-dasharray:3 4;vector-effect:non-scaling-stroke}.program-chart__now-label{fill:#355968;font-size:14px;font-weight:750}.program-point{cursor:pointer}.program-point circle{fill:#fff;stroke:#356b5a;stroke-width:4;vector-effect:non-scaling-stroke}.program-point text{fill:#243b31;font-size:14px;font-weight:800;pointer-events:none}.program-point[aria-pressed=true] circle{fill:#e4f1ec;stroke-width:6}.program-point--dirty circle{stroke:#b67823;stroke-dasharray:4 3}.program-point--error circle{stroke:#b23d35;stroke-dasharray:2 2}.program-point--mismatch circle{stroke:#80569a;stroke-width:6}.program-point:focus{outline:none}.program-point:focus circle{filter:drop-shadow(0 0 6px #347b9a)}.program-point__state{font-size:18px!important}.program-point--dirty .program-point__state{fill:#8c5f19}.program-point--error .program-point__state{fill:#a22f29}.program-point--mismatch .program-point__state{fill:#714587}.program-chart__legend{display:flex;flex-wrap:wrap;gap:7px 14px;padding-top:8px;border-top:1px solid var(--border)}.program-chart__legend span{display:flex;align-items:center;gap:6px;color:#4e6056;font-size:.59rem;font-weight:700}.legend-line{display:inline-block;width:27px;border-top:3px solid #356b5a}.legend-line--draft{border-color:#bd7a25;border-top-style:dashed}.legend-marker{display:inline-flex;width:15px;height:15px;align-items:center;justify-content:center;border:2px solid #356b5a;border-radius:50%;font-size:10px;font-style:normal}.legend-marker--selected{border-width:4px}.legend-marker--error{border-color:#b23d35;color:#a22f29}.legend-marker--mismatch{border-color:#80569a;color:#714587}.program-chart__disclosure{margin:7px 0 0;color:var(--muted);font-size:.58rem;line-height:1.45}
.program-chart__point-nav{display:flex;gap:5px;margin:5px 0 8px;overflow-x:auto;scrollbar-width:thin}.program-chart__point-nav button{display:grid;grid-template-columns:auto auto;align-items:center;gap:1px 5px;min-width:92px;min-height:44px;padding:5px 7px;border:1px solid var(--border);border-radius:7px;background:#fff;color:#40564b;text-align:left}.program-chart__point-nav button strong{font-size:.65rem}.program-chart__point-nav button span{font-size:.58rem}.program-chart__point-nav button small{grid-column:1/-1;color:var(--muted);font-size:.5rem;white-space:nowrap}.program-chart__point-nav button.is-selected{border-color:#668f9e;background:#edf4f6;box-shadow:inset 0 0 0 1px #668f9e}.program-chart__point-nav button.is-dirty{border-style:dashed;border-color:#bb7c28}.program-chart__point-nav button.is-error{border-color:#b94d45}.program-chart__point-nav button.is-mismatch{border-color:#80569a}.program-chart__point-nav button:focus-visible{outline:3px solid rgba(39,112,139,.3);outline-offset:2px}.program-point-editor{display:flex;flex-direction:column;padding:13px}.program-point-editor>header{position:relative;padding-bottom:9px;border-bottom:1px solid var(--border)}.point-status{display:inline-block;margin-top:4px;padding:3px 6px;border-radius:5px;background:#eff3f1;color:#55665d;font-size:.58rem;font-weight:750}.point-status--dirty{background:#fff2d6;color:#805a17}.point-status--error{background:#fde9e7;color:#9e342d}.point-status--mismatch{background:#f1e9f5;color:#6e4680}.program-point-fields{display:grid;gap:8px;margin-top:10px}.program-point-fields>label{display:flex;min-width:0;flex-direction:column;gap:4px;padding:8px;border:1px solid var(--border);border-radius:8px}.program-point-fields>label>span{font-size:.66rem;font-weight:800}.program-point-fields>label>small{color:var(--muted);font-size:.55rem}.program-point-fields label>div{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;border:1px solid #b7c6bd;border-radius:6px}.program-point-fields input{min-width:0;height:39px;padding:6px 8px;border:0;border-radius:6px;background:#fff;color:var(--text);font-size:.82rem;font-weight:750}.program-point-fields input:disabled{background:#f0f3f1;color:#66766e}.program-point-fields label>div b{padding:0 8px;color:var(--muted);font-size:.64rem}.program-point-fields label.has-error{border-color:#c5665f;background:#fff8f7}.program-field-error{color:#a4312b;font-size:.56rem;font-style:normal;font-weight:700}.program-ramp-preview{padding:9px;border-left:3px solid #7897a4;border-radius:6px;background:#f2f6f7}.program-ramp-preview span,.program-ramp-preview small{color:var(--muted);font-size:.56rem}.program-ramp-preview strong{display:block;margin:2px 0;font-size:.76rem}.program-ramp-preview p{margin:5px 0;font-size:.64rem;line-height:1.45}.program-mismatch{margin-top:9px;padding:9px;border:1px solid #ad84bd;border-radius:8px;background:#faf6fc}.program-mismatch>strong,.program-mismatch>span{display:block}.program-mismatch>strong{color:#6d447d;font-size:.67rem}.program-mismatch>span{font-size:.59rem}.program-mismatch dl{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin:7px 0 0}.program-mismatch dl div{padding:6px;background:#fff}.program-mismatch dt{color:var(--muted);font-size:.54rem}.program-mismatch dd{margin:1px 0;font-size:.66rem;font-weight:800}.program-point-navigation{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:5px;margin-top:auto;padding-top:11px}.program-point-navigation button{min-height:42px;padding:6px;border:1px solid #b9c8c0;border-radius:7px;background:#fff;color:#294f42;font-size:.61rem;font-weight:750}.program-point-navigation button:last-child{justify-self:stretch}.program-point-navigation button:disabled{opacity:.42}.program-point-navigation span{font-size:.6rem;font-weight:750}
.program-points-section{margin-bottom:.7rem;padding:12px}.program-points-section>header>span{color:var(--muted);font-size:.61rem}.program-points-table-wrap{margin-top:8px;overflow-x:auto;border:1px solid var(--border);border-radius:8px}.program-points-table{width:100%;border-collapse:collapse;font-size:.65rem}.program-points-table th{padding:7px 9px;background:#f3f6f4;color:var(--muted);font-size:.56rem;text-align:left;text-transform:uppercase}.program-points-table td{padding:8px 9px;border-top:1px solid #e1e7e3}.program-points-table tr{cursor:pointer}.program-points-table tbody tr:hover,.program-points-table tr.is-selected{background:#edf4f1}.program-points-table tr.is-selected td:first-child{box-shadow:inset 3px 0 #537e8d}.program-points-table td:last-child span{font-weight:750}.program-points-table .point-row--dirty td:last-child span{color:#865c18}.program-points-table .point-row--error td:last-child span{color:#a5352e}.program-points-table .point-row--mismatch td:last-child span{color:#704582}.program-demo-tools{margin-bottom:.7rem;padding:9px 12px}.program-demo-tools summary{cursor:pointer;color:#42594e;font-size:.65rem;font-weight:800}.program-demo-tools>div{display:grid;grid-template-columns:1fr 1fr 1.4fr;gap:8px;margin-top:9px}.program-demo-tools label{display:flex;flex-direction:column;gap:3px}.program-demo-tools label span{font-size:.57rem;font-weight:750}.program-demo-tools select{min-height:36px;padding:5px;border:1px solid #b9c7c0;border-radius:6px;background:#fff;font-size:.64rem}.program-demo-tools p{margin:0;color:var(--muted);font-size:.58rem;line-height:1.45}.program-changebar span:empty{display:none}
@media(max-width:1100px){.program-workspace{grid-template-columns:minmax(0,1.5fr) minmax(280px,1fr)}.program-runtime-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.program-chart__canvas{min-height:240px}.program-chart svg{min-height:240px}}
@media(max-width:820px){.climate-programs-page{padding-bottom:145px}.program-workspace{grid-template-columns:1fr}.program-chart,.program-point-editor{width:100%}.program-point-editor{min-height:430px}.program-demo-tools>div{grid-template-columns:1fr 1fr}.program-demo-tools p{grid-column:1/-1}.program-changebar{bottom:max(12px,env(safe-area-inset-bottom))}.humidity-program-runtime{grid-template-columns:1fr 1fr}.humidity-program-runtime a{grid-column:1/-1}.program-runtime-summary>header,.program-points-section>header{align-items:flex-start;flex-direction:column}.program-points-section>header{gap:4px}}
@media(max-width:600px){.program-page-heading{padding:11px}.program-type-tabs button{min-width:145px}.program-runtime-grid{grid-template-columns:1fr 1fr}.program-runtime-grid article{min-height:84px}.program-workspace{gap:8px}.program-chart{padding:8px}.program-chart__header{flex-direction:column}.program-chart__selection{max-width:100%;text-align:left}.program-chart__canvas{min-height:225px;overflow:hidden}.program-chart svg{min-height:225px}.program-chart__x-label,.program-chart__y-label,.program-chart__axis-title{font-size:20px}.program-chart__now-label{font-size:18px}.program-point text{font-size:18px}.program-chart__legend{gap:7px}.program-chart__legend span{flex:1 1 44%}.program-point-navigation button{min-height:46px}.program-points-table-wrap{overflow:visible;border:0}.program-points-table,.program-points-table tbody{display:block}.program-points-table thead{display:none}.program-points-table tr{display:block;margin-bottom:7px;border:1px solid var(--border);border-radius:8px;background:#fff}.program-points-table td{display:grid;grid-template-columns:minmax(90px,.8fr) minmax(0,1.2fr);gap:8px;padding:6px 8px;border-top:1px solid #edf0ee;text-align:right}.program-points-table td:first-child{border-top:0}.program-points-table td:before{color:var(--muted);content:attr(data-label);font-size:.55rem;font-weight:700;text-align:left}.program-points-table tr.is-selected{border-color:#789aa7}.program-points-table tr.is-selected td:first-child{box-shadow:inset 3px 0 #537e8d}.program-demo-tools>div{grid-template-columns:1fr}.program-demo-tools p{grid-column:auto}.settings-changebar.program-changebar{align-items:stretch;flex-direction:column}.humidity-program-runtime{grid-template-columns:1fr}.humidity-program-runtime a{grid-column:auto}}
@media(max-width:390px){.program-runtime-grid{grid-template-columns:1fr}.program-chart__legend span{flex:1 1 100%}.program-point-navigation{grid-template-columns:1fr 1fr}.program-point-navigation span{grid-row:1;grid-column:1/-1;text-align:center}.program-point-navigation button{grid-row:2}.program-type-tabs{scrollbar-width:thin}}

/* DEMO-UI-011A — czytelność wykresów, czasu i stanów Programów */
.operator-system-time{display:inline-flex;align-items:flex-end;flex-direction:column;gap:1px}.operator-system-time small{color:#52645b;font-size:.58rem;font-weight:750}.operator-system-time time{color:#52645b}
.climate-programs-page{overflow-x:hidden;scroll-padding-bottom:150px}.climate-programs-page .program-page-heading{align-items:flex-start}.climate-programs-page .program-page-heading>div:first-child{flex:0 0 auto;min-width:190px}.climate-programs-page .settings-plc-status{flex:1;justify-content:flex-end;max-width:760px;row-gap:6px}.climate-programs-page .settings-plc-status>span:not(.demo-disclosure):not(.program-stale-status){color:#4c6156;font-weight:650}.program-stale-status{padding:4px 7px;border-radius:6px;background:#fff0d8;color:#785216!important;font-weight:800!important}
.program-type-tabs{width:max-content;max-width:100%;padding:4px}.program-type-tabs button{flex:0 0 auto;min-width:0;min-height:40px;padding:7px 14px}.program-type-tabs button[aria-selected=true]{border-color:#527f8f;background:#fff;color:#234d5c}.program-type-tabs button:focus-visible{outline:3px solid #8cc2d6;outline-offset:2px}#program-panel{min-width:0}
.program-chart__state-summary{display:flex;flex-wrap:wrap;gap:6px;margin:8px 0 2px}.program-chart__state-summary span,.program-point-operational span{display:inline-flex;align-items:center;gap:5px;padding:4px 7px;border:1px solid #cbd6d0;border-radius:999px;background:#f7f9f8;color:#344c41;font-size:.59rem}.program-chart__state-summary strong{font-size:inherit}.program-chart__state-summary .is-active,.program-point-operational .is-active{border-color:#87aa9a;background:#edf6f1;color:#245c47}.program-chart__state-summary .is-selected,.program-point-operational .is-selected{border-color:#739baa;background:#eef5f7;color:#274f5e}.program-chart__state-summary .is-next,.program-point-operational .is-next{border-color:#a79abc;background:#f5f2f8;color:#5b4970}
.program-chart__canvas{min-height:0;margin-top:3px}.program-chart svg{min-height:0;aspect-ratio:840/410}.program-chart__tick--mobile{display:none}.program-chart__x-label,.program-chart__y-label,.program-chart__axis-title{fill:#4d6056;font-size:15px;font-weight:700}.program-chart__y-label{paint-order:stroke;stroke:#fbfcfb;stroke-width:5px;stroke-linejoin:round}.program-chart__grid{stroke:#dde5e0}.program-chart__x-grid{stroke:#e7ede9}.program-chart__humidity-guide{stroke:#9aaea4;stroke-width:1.5;stroke-dasharray:3 7;opacity:.8;vector-effect:non-scaling-stroke}.program-chart__humidity-guide.is-draft{stroke:#ae7227;stroke-width:2}.program-chart__now{stroke:#385f70;stroke-width:2.5}.program-chart__now-label{fill:#294f60;font-size:15px;font-weight:850}
.program-point .program-point__hit{fill:transparent!important;stroke:transparent!important;stroke-width:0!important;pointer-events:all}.program-point .program-point__target{fill:#fff;stroke:#356b5a;stroke-width:4;vector-effect:non-scaling-stroke}.program-point.program-point--dirty .program-point__target{stroke:#a66a1f;stroke-dasharray:4 3}.program-point.program-point--error .program-point__target{stroke:#aa352f;stroke-dasharray:2 2}.program-point.program-point--mismatch .program-point__target{stroke:#77508c;stroke-width:6}.program-point .program-point__active-core{fill:#245e48!important;stroke:#fff!important;stroke-width:1.5!important}.program-point .program-point__selected-ring{fill:none!important;stroke:#315f72!important;stroke-width:3!important;stroke-dasharray:none!important}.program-point .program-point__next-diamond{fill:none;stroke:#745f87;stroke-width:3;vector-effect:non-scaling-stroke}.program-point:focus .program-point__selected-ring,.program-point:focus .program-point__target{filter:drop-shadow(0 0 5px #3f8ca8)}.program-point:focus-visible .program-point__hit{stroke:#4c95af!important;stroke-width:3!important;stroke-dasharray:6 5!important}.program-point text{fill:#233e32;font-size:15px}.program-point__state{font-size:17px!important}
.program-chart__legend{align-items:flex-start;gap:8px 14px}.program-chart__legend span{color:#354d42;font-size:.64rem;line-height:1.35}.legend-line--now{border-color:#385f70;border-top-style:dotted}.legend-marker--target{background:#fff}.legend-marker--draft{border-color:#a66a1f;border-style:dashed}.legend-marker--active{border-color:#356b5a;background:#356b5a;color:#fff}.legend-marker--selected{border:3px double #315f72;color:#315f72}.legend-marker--next{border-color:#745f87;border-radius:2px;color:#745f87;transform:rotate(45deg)}.legend-marker--next+*{transform:none}.program-chart__disclosure{margin-top:9px;padding:8px 9px;border-left:3px solid #7795a1;background:#f2f6f7;color:#344e43;font-size:.66rem;font-weight:650;line-height:1.5}
.program-chart__point-nav button{min-width:112px;min-height:54px}.program-chart__point-nav button small{color:#53665c;font-size:.54rem;font-weight:700}.program-chart__point-nav button em{grid-column:1/-1;color:#315666;font-size:.51rem;font-style:normal;font-weight:800;line-height:1.2;white-space:normal}.program-chart__point-nav button.is-active{box-shadow:inset 4px 0 #4d8870}.program-chart__point-nav button.is-next{border-bottom:3px solid #87749a}.program-chart__point-nav button.is-selected{outline:2px solid #537f90;outline-offset:-2px}
.program-point-operational{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}.program-point-fields>label>small,.program-ramp-preview span,.program-ramp-preview small,.program-points-section>header>span,.program-demo-tools p{color:#52645b;font-size:.62rem;font-weight:600}.program-ramp-preview p{font-size:.68rem}.program-points-table th{color:#405349;font-size:.6rem;font-weight:800}.program-points-table td:last-child{display:flex;flex-direction:column;align-items:flex-start;gap:2px}.program-points-table td:last-child small{color:#52645b;font-size:.55rem;font-weight:700}.program-runtime-grid span,.humidity-program-runtime span{color:#52645b}.program-runtime-grid small,.humidity-program-runtime small{color:#52645b;font-size:.59rem}.program-runtime-summary>p{color:#40564b;font-size:.68rem}.program-chart__selection{color:#294f5f;font-size:.66rem}.program-chart__point-nav button:focus-visible{outline:3px solid #76aac0;outline-offset:2px}
@media(max-width:820px){.operator-system-time{align-items:flex-start}.climate-programs-page{padding-bottom:170px}.climate-programs-page .settings-plc-status{justify-content:flex-start}.program-point-editor{min-height:0}.program-chart svg{min-height:0}.program-changebar{max-height:132px}.program-points-section,.program-demo-tools{scroll-margin-bottom:150px}}
@media(max-width:600px){.climate-programs-page .program-page-heading>div:first-child{min-width:0}.climate-programs-page .settings-plc-status{display:flex;flex-direction:column;align-items:flex-start;width:100%;gap:5px}.climate-programs-page .settings-plc-status strong{grid-column:auto}.program-type-tabs{width:100%;overflow-x:auto}.program-type-tabs button{min-width:max-content}.program-chart__state-summary{display:grid;grid-template-columns:1fr}.program-chart__canvas{min-height:0;overflow:visible}.program-chart svg{min-height:0}.program-chart__tick--desktop{display:none}.program-chart__tick--mobile{display:inline}.program-chart__x-label{font-size:24px}.program-chart__y-label,.program-chart__axis-title{font-size:21px}.program-chart__now-label{font-size:19px}.program-point text{font-size:20px}.program-chart__legend span{flex:1 1 46%;min-width:0}.program-chart__point-nav button{min-width:118px;min-height:60px}.program-points-table td:last-child{align-items:flex-end}.program-changebar{max-height:none}.program-chart__disclosure{font-size:.68rem}}
@media(max-width:390px){.program-chart__legend span{flex:1 1 100%}.program-type-tabs button{min-width:128px}.program-chart__state-summary span{font-size:.61rem}.program-chart__point-nav{padding-bottom:3px}}

/* DEMO-UI-012 — supplemental and vegetative heating programs */
.program-runtime-state.is-error{border-color:#bd6861;background:#fff0ef;color:#8e302a}.program-result-card{border-left-color:#7e8b85!important;background:#f1f3f2!important}.program-result-card strong{font-size:1rem}.program-chart__operating-window{fill:#dcebe4;opacity:.68;pointer-events:none}.program-line--point-guide{stroke:#6f9186;stroke-width:1.35;stroke-dasharray:none;opacity:.62;pointer-events:none}.program-line--step{stroke-linecap:square;stroke-linejoin:miter}.legend-line--point-guide{border-color:#6f9186;border-top-width:2px;opacity:.72}.legend-window{display:inline-block;width:24px;height:12px;border:1px solid #9db7ab;border-radius:3px;background:#dcebe4}
.program-heating-settings{margin-bottom:.7rem;padding:12px 14px;border:1px solid var(--border);border-radius:14px;background:#fff;box-shadow:var(--shadow)}.program-heating-settings>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px;margin-bottom:9px}.program-heating-settings h3{margin:.12rem 0;font-size:1rem}.program-heating-settings>header>span{padding:5px 8px;border-radius:7px;background:#edf3f0;color:#355a4d;font-size:.64rem;font-weight:800}.program-heating-settings__grid{display:grid;grid-template-columns:1.35fr 1fr .8fr .8fr 1.15fr 1.1fr;gap:8px}.program-heating-settings__grid>label,.program-air-temperature-card,.program-result-readonly{display:flex;min-width:0;min-height:96px;flex-direction:column;justify-content:center;gap:4px;padding:9px 10px;border:1px solid #d7e1dc;border-radius:9px;background:#f9fbfa}.program-heating-settings__grid>label>span:first-child,.program-air-temperature-card>span,.program-result-readonly>span{color:#405349;font-size:.62rem;font-weight:800}.program-heating-settings__grid label>div{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;border:1px solid #b7c6bd;border-radius:6px;background:#fff}.program-heating-settings__grid input[type=text],.program-heating-settings__grid input[type=time]{width:100%;min-width:0;height:39px;padding:6px 8px;border:1px solid #b7c6bd;border-radius:6px;background:#fff;color:var(--text);font-size:.78rem;font-weight:800}.program-heating-settings__grid label>div input{border:0}.program-heating-settings__grid label>div b{padding:0 8px;color:#52645b;font-size:.64rem}.program-heating-settings__grid small{color:#52645b;font-size:.58rem;line-height:1.4}.program-heating-settings__grid label.has-error{border-color:#c5665f;background:#fff8f7}.program-air-temperature-card strong,.program-result-readonly strong{font-size:.9rem}.program-result-readonly{border-color:#cbd2ce;background:#ecefed;color:#39453f}.program-result-readonly strong{font-size:1.05rem}.program-subsoil-control{background:#f5f8f6!important}.program-switch-row{display:flex!important;grid-template-columns:none!important;align-items:center!important;gap:8px;border:0!important;background:transparent!important}.program-switch-row input{width:42px;height:24px;accent-color:#2f6e57}.program-switch-row strong{font-size:.72rem}.program-configuration-mismatch{margin-top:10px}.program-heating-settings input:focus-visible,.program-switch-row input:focus-visible{outline:3px solid #8cc2d6;outline-offset:2px}
@media(max-width:1200px){.program-heating-settings__grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:820px){.program-heating-settings__grid{grid-template-columns:repeat(2,minmax(0,1fr))}.program-runtime-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.program-type-tabs{scroll-snap-type:x proximity}.program-type-tabs button{min-width:max-content;scroll-snap-align:start}.program-heating-settings{padding:10px}.program-heating-settings>header{flex-direction:column}.program-heating-settings__grid{grid-template-columns:1fr}.program-heating-settings__grid>label,.program-air-temperature-card,.program-result-readonly{min-height:88px}.program-runtime-grid{grid-template-columns:1fr 1fr}.program-chart__operating-window{opacity:.58}}
@media(max-width:390px){.program-runtime-grid{grid-template-columns:1fr}.program-type-tabs button{min-width:max-content}}

/* DEMO-UI-013 — Climate cooling configuration */
.cooling-program-panel[hidden]{display:none!important}.cooling-program-panel{min-width:0}.cooling-runtime-summary>p{margin-bottom:0}.cooling-runtime-grid{grid-template-columns:repeat(4,minmax(0,1fr))}.cooling-configuration{margin-top:12px;padding:16px;border:1px solid var(--border);border-radius:16px;background:var(--surface);box-shadow:var(--shadow)}.cooling-configuration>header{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;margin-bottom:14px}.cooling-configuration>header h3{margin:3px 0 0}.cooling-configuration>header>span{padding:7px 10px;border-radius:999px;background:var(--surface-soft);color:var(--muted);font-weight:700}.cooling-form-groups{display:grid;grid-template-columns:minmax(240px,.72fr) minmax(0,1.55fr);gap:14px}.cooling-form-groups fieldset{min-width:0;margin:0;padding:14px;border:1px solid var(--border);border-radius:13px}.cooling-form-groups legend{padding:0 7px;color:var(--text);font-weight:800}.cooling-field-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}.cooling-field-grid label{display:grid;align-content:start;gap:6px;min-width:0;padding:11px;border:1px solid var(--border);border-radius:11px;background:var(--surface-soft)}.cooling-field-grid label>span{font-weight:800}.cooling-field-grid label>small{color:var(--muted);line-height:1.35}.cooling-field-grid input{width:100%;min-width:0;min-height:44px;padding:9px 10px;border:1px solid #b7c6bd;border-radius:8px;background:var(--surface);color:var(--text);font:inherit;font-weight:750}.cooling-input-with-unit{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:8px}.cooling-input-with-unit b{min-width:28px;color:var(--muted)}.cooling-field-grid label.is-dirty{border-style:dashed;border-color:var(--primary)}.cooling-field-grid label.has-mismatch{border:2px solid #ad7a27;background:#fff7e6}.cooling-field-grid label.has-error{border:2px solid #b23d35}.cooling-field-grid label:focus-within{outline:3px solid rgba(65,137,160,.28);outline-offset:2px}.cooling-field-mismatch{color:#78571b;font-style:normal;font-weight:750;line-height:1.35}.cooling-mismatch-summary{margin-top:12px}.cooling-mismatch-summary code{overflow-wrap:anywhere}.cooling-demo-tools{margin-top:12px}.cooling-changebar{z-index:14}
@media(max-width:1000px){.cooling-runtime-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.cooling-form-groups{grid-template-columns:1fr}}
@media(max-width:560px){.cooling-runtime-grid,.cooling-field-grid{grid-template-columns:1fr}.cooling-configuration{padding:12px}.cooling-configuration>header{display:grid}.cooling-form-groups fieldset{padding:10px}.cooling-changebar{bottom:calc(58px + env(safe-area-inset-bottom))}}

/* DEMO-UI-014 — Climate sensor calibration */
.sensor-calibration-page{overflow-x:hidden;scroll-padding-bottom:150px;padding-bottom:110px}.calibration-page-heading{display:flex;align-items:stretch;justify-content:space-between;gap:14px;margin:10px 0}.calibration-page-heading h2{margin:3px 0 0}.calibration-heading-status{display:grid;grid-template-columns:repeat(4,minmax(115px,1fr)) auto;align-items:stretch;min-width:min(760px,70%);border:1px solid var(--border);border-radius:13px;background:var(--surface);box-shadow:var(--shadow);overflow:hidden}.calibration-heading-status>span{display:flex;flex-direction:column;justify-content:center;gap:2px;padding:9px 12px;border-right:1px solid var(--border)}.calibration-heading-status small{color:var(--muted);font-size:.56rem;text-transform:uppercase;letter-spacing:.04em}.calibration-heading-status strong{font-size:.72rem}.calibration-heading-status>b{display:flex;align-items:center;padding:9px 12px;background:var(--surface-soft);color:#355a4d;font-size:.6rem}.calibration-safety{margin:0 0 12px;padding:10px 12px;border:1px solid #d8c497;border-left:4px solid var(--warning);border-radius:9px;background:#fff9ec;color:#574620;font-size:.68rem;line-height:1.45}
.sensor-calibration-workspace{display:grid;grid-template-columns:minmax(0,1.5fr) minmax(350px,.8fr);gap:12px;align-items:start}.sensor-calibration-primary{display:grid;gap:12px;min-width:0}.calibration-section{min-width:0;padding:13px;border:1px solid var(--border);border-radius:15px;background:var(--surface);box-shadow:var(--shadow)}.calibration-section>header{display:flex;align-items:flex-start;justify-content:space-between;gap:14px;margin-bottom:10px}.calibration-section>header h3{margin:2px 0 0;font-size:1rem}.calibration-section>header p{max-width:420px;margin:0;color:var(--muted);font-size:.62rem;line-height:1.45;text-align:right}
.calibration-table{width:100%;border-collapse:separate;border-spacing:0;font-size:.67rem}.calibration-table th,.calibration-table td{padding:7px 8px;border-top:1px solid #e3e9e5;vertical-align:middle}.calibration-table thead th{border-top:0;background:#f1f5f3;color:#45594f;font-size:.57rem;text-align:left;text-transform:uppercase;letter-spacing:.035em}.calibration-table thead th:first-child{border-radius:8px 0 0 8px}.calibration-table thead th:last-child{border-radius:0 8px 8px 0}.calibration-table tbody th{width:28%;text-align:left}.calibration-table tbody th strong,.calibration-table tbody th small{display:block}.calibration-table tbody th small{margin-top:2px;color:var(--muted);font-size:.54rem;font-weight:500}.calibration-table tr.is-dirty>th{box-shadow:inset 3px 0 var(--primary)}.calibration-table tr.is-error>th{box-shadow:inset 3px 0 var(--critical)}.calibration-table tr.is-mismatch>th{box-shadow:inset 3px 0 var(--warning)}
.calibration-field{display:grid;gap:4px;min-width:0;padding:8px;border:1px solid var(--border);border-radius:9px;background:#fbfcfb}.calibration-field>label{display:flex;justify-content:space-between;gap:8px;color:#304b40;font-size:.65rem;font-weight:800}.calibration-field>label small{color:var(--muted);font-size:.51rem;font-weight:650}.calibration-field>small{color:var(--muted);font-size:.54rem;line-height:1.35}.calibration-field--compact{padding:5px 7px}.calibration-field--compact>label{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}.calibration-field--compact>small{font-size:.5rem}.calibration-input-row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:7px}.calibration-input-row input{width:100%;min-width:0;min-height:40px;padding:7px 9px;border:1px solid #aebfb6;border-radius:7px;background:#fff;color:var(--text);font:inherit;font-size:.75rem;font-weight:800}.calibration-unit{min-width:25px;color:#455b50;font-size:.66rem;font-weight:800}.calibration-field.is-dirty{border-style:dashed;border-color:var(--primary);background:#f2faf6}.calibration-field.is-error{border:2px solid var(--critical);background:#fff5f4}.calibration-field.is-mismatch{border:2px solid #ae7b26;background:#fff8e9}.calibration-field:focus-within{outline:3px solid rgba(65,137,160,.28);outline-offset:2px}.calibration-field input:focus-visible{outline:2px solid #4b91aa;outline-offset:2px}.calibration-field-error,.calibration-field-mismatch{display:block;color:#8d2e28;font-size:.55rem;font-style:normal;font-weight:800;line-height:1.35}.calibration-field-mismatch{color:#735315}
.calibration-readout{display:grid;gap:2px;min-width:0;padding:8px 9px;border:1px solid #cad6d0;border-radius:9px;background:#edf3f0}.calibration-readout>span{color:#40574c;font-size:.52rem;font-weight:850;text-transform:uppercase;letter-spacing:.04em}.calibration-readout>strong{font-size:.83rem}.calibration-readout>small{color:#52675c;font-size:.52rem;line-height:1.3}.calibration-readout.is-good{border-left:3px solid var(--primary)}.calibration-readout.is-warning{border-left:3px solid var(--warning);background:#fff8e9}.calibration-readout.is-unavailable{border-left:3px solid #7b8681;background:#f1f3f2}.humidity-calibration-grid{display:grid;grid-template-columns:1fr 1fr 1.1fr;gap:9px}.calibration-no-compute{margin:9px 0 0;padding-left:9px;border-left:3px solid #7b9bad;color:#465b51;font-size:.59rem;line-height:1.45}
.weather-calibration{display:grid;gap:9px}.weather-calibration>header{margin-bottom:0}.weather-calibration-group{display:grid;gap:7px;padding:10px;border:1px solid #dce4df;border-radius:11px;background:#fafcfb}.weather-calibration-group h4{margin:0;font-size:.76rem}.weather-calibration-fields,.weather-readout-pair{display:grid;grid-template-columns:1fr 1fr;gap:7px}.weather-calibration-group>.calibration-field{padding:7px}.weather-calibration-group>.calibration-readout{margin-top:1px}
.calibration-demo-tools{margin-top:12px;padding:10px 12px;border:1px solid var(--border);border-radius:12px;background:var(--surface)}.calibration-demo-tools summary{cursor:pointer;color:#3c5549;font-size:.66rem;font-weight:850}.calibration-demo-tools>div{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:9px}.calibration-demo-tools label{display:grid;gap:4px}.calibration-demo-tools label span{font-size:.58rem;font-weight:800}.calibration-demo-tools select{min-height:40px;padding:7px 9px;border:1px solid #aebfb6;border-radius:7px;background:#fff}.calibration-demo-tools p{margin:8px 0 0;color:var(--muted);font-size:.58rem;line-height:1.45}
.calibration-changebar{position:fixed;z-index:15;right:22px;bottom:14px;left:calc(var(--sidebar-width) + 22px);display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;border:1px solid #d9bd83;border-radius:12px;background:#fffaf0;box-shadow:0 12px 35px rgba(38,61,50,.2)}.calibration-changebar>div:first-child{display:flex;flex-direction:column;gap:2px}.calibration-changebar strong{font-size:.72rem}.calibration-changebar span{color:#596b61;font-size:.59rem}.calibration-changebar.is-success{border-color:#83b39e;background:#eff9f4}.calibration-changebar.is-error{border-color:#ca746d;background:#fff4f2}.calibration-readback-summary{display:flex;flex-direction:column;gap:2px;max-width:460px}.calibration-changebar__actions{display:flex;gap:8px}.calibration-changebar button{min-height:42px;padding:8px 13px;border:1px solid #b8c6bf;border-radius:8px;background:#fff;font-size:.66rem;font-weight:850}.calibration-changebar button.primary{border-color:var(--primary);background:var(--primary);color:#fff}.calibration-changebar button:disabled{cursor:not-allowed;opacity:.55}.calibration-changebar button:focus-visible,.calibration-demo-tools summary:focus-visible{outline:3px solid #76aac0;outline-offset:2px}
@media(max-width:1120px){.calibration-page-heading{display:grid;grid-template-columns:minmax(0,1fr);justify-content:stretch}.calibration-heading-status{min-width:0;width:100%}.sensor-calibration-workspace{grid-template-columns:minmax(0,1.25fr) minmax(320px,.8fr)}}
@media(max-width:860px){.sensor-calibration-workspace{grid-template-columns:1fr}.calibration-heading-status{grid-template-columns:repeat(2,1fr)}.calibration-heading-status>b{grid-column:1/-1}.calibration-changebar{left:14px;right:14px}.weather-calibration{grid-template-columns:1fr 1fr}.weather-calibration>header{grid-column:1/-1}.weather-calibration-group{min-width:0}}
@media(max-width:600px){.sensor-calibration-page{padding-bottom:190px}.calibration-page-heading{margin-top:8px}.calibration-heading-status{grid-template-columns:1fr 1fr}.calibration-heading-status>span{padding:8px}.calibration-safety{font-size:.66rem}.calibration-section{padding:10px}.calibration-section>header{display:grid;gap:5px}.calibration-section>header p{text-align:left}.calibration-table,.calibration-table tbody{display:block}.calibration-table thead{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.calibration-table tr{display:grid;grid-template-columns:1fr 1fr;gap:7px;margin-bottom:8px;padding:9px;border:1px solid var(--border);border-radius:10px;background:#fff}.calibration-table tbody th,.calibration-table tbody td{display:block;width:auto;padding:0;border:0}.calibration-table tbody th{grid-column:1/-1;padding-left:5px}.calibration-table tr.is-dirty>th,.calibration-table tr.is-error>th,.calibration-table tr.is-mismatch>th{box-shadow:none;border-left:3px solid var(--primary)}.calibration-table tr.is-error>th{border-color:var(--critical)}.calibration-table tr.is-mismatch>th{border-color:var(--warning)}.calibration-field--compact{padding:7px}.calibration-field--compact>label{position:static;width:auto;height:auto;clip:auto;white-space:normal}.humidity-calibration-grid,.weather-calibration,.weather-calibration-fields,.weather-readout-pair,.calibration-demo-tools>div{grid-template-columns:1fr}.weather-calibration>header{grid-column:auto}.calibration-changebar{bottom:calc(58px + env(safe-area-inset-bottom));grid-template-columns:1fr;max-height:178px;padding:9px}.calibration-changebar__actions{display:grid;grid-template-columns:1fr 1fr}.calibration-changebar button{min-height:46px}.calibration-readback-summary{max-height:46px;overflow:auto}.calibration-input-row input{min-height:44px}}
@media(max-width:390px){.calibration-heading-status{grid-template-columns:1fr}.calibration-heading-status>b{grid-column:auto}.calibration-table tr{grid-template-columns:1fr}.calibration-table tbody th{grid-column:auto}.calibration-changebar__actions{grid-template-columns:1fr 1fr}.calibration-changebar button{padding:7px 8px}}

/* DEMO-UI-015 · Climate dynamics */
.climate-dynamics-page{padding-bottom:120px}.dynamics-page-heading{display:flex;align-items:flex-start;justify-content:space-between;gap:18px;margin:14px 0}.dynamics-page-heading h2{margin:2px 0 3px;font-size:1.45rem}.dynamics-page-heading p{margin:0;color:var(--muted);font-size:.78rem}.dynamics-heading-status{display:grid;grid-template-columns:repeat(4,minmax(120px,1fr));min-width:min(100%,650px);overflow:hidden;border:1px solid var(--border);border-radius:13px;background:#fff}.dynamics-heading-status>span{display:grid;gap:2px;padding:9px 12px;border-right:1px solid var(--border)}.dynamics-heading-status>span:last-of-type{border:0}.dynamics-heading-status small{color:var(--muted);font-size:.61rem}.dynamics-heading-status strong{font-size:.72rem}.dynamics-heading-status>b{grid-column:1/-1;padding:5px 12px;background:#eaf7ef;color:var(--primary);font-size:.61rem;letter-spacing:.08em;text-align:center}
.dynamics-selector{display:grid;grid-template-columns:auto minmax(290px,.65fr) minmax(0,1.35fr);align-items:center;gap:13px;margin-bottom:10px;padding:11px 13px;border:1px solid var(--border);border-radius:14px;background:#fff;box-shadow:var(--shadow)}.dynamics-selector h3{margin:2px 0;font-size:1rem}.dynamics-selector__groups,.dynamics-object-tabs{display:flex;gap:5px;min-width:0}.dynamics-selector button{min-height:38px;padding:7px 13px;border:1px solid var(--border);border-radius:9px;background:#fff;color:var(--text);font-weight:750}.dynamics-selector button.active{border-color:var(--primary);background:#eaf7ef;color:var(--primary);box-shadow:inset 0 0 0 1px var(--primary)}.dynamics-object-tabs{overflow-x:auto;padding:2px}.dynamics-object-tabs button{white-space:nowrap}.dynamics-object-tabs small{display:block;color:var(--warning);font-size:.55rem}.dynamics-object-select{display:none}.dynamics-incomplete{display:grid;grid-template-columns:auto 1fr;gap:10px 24px;padding:18px;border:1px solid #dbb566;border-radius:14px;background:#fff9eb}.dynamics-incomplete h3{margin:3px 0}.dynamics-incomplete p{margin:0}.dynamics-incomplete ul{grid-column:1/-1;margin:0;padding-left:22px}.dynamics-incomplete code{overflow-wrap:anywhere;font-size:.7rem}
.dynamics-legend{display:flex;flex-wrap:wrap;gap:16px;margin:10px 0;padding:8px 12px;border:1px solid var(--border);border-radius:10px;background:#f7faf8;color:var(--muted);font-size:.68rem}.dynamics-legend span{display:flex;align-items:center;gap:6px}.dynamics-legend i{width:18px;height:13px;border:1px solid var(--border);border-radius:3px;background:#fff}.dynamics-legend i.readout{background:#eef1ef}.dynamics-legend i.flow{height:2px;border:0;background:var(--primary)}
.dynamics-template{display:grid;gap:10px;padding:13px;border:1px solid var(--border);border-radius:15px;background:#fff;box-shadow:var(--shadow)}.dynamics-template>header,.dynamics-block>header,.dynamics-trend>header{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.dynamics-template>header h3,.dynamics-trend h3{margin:2px 0;font-size:1.18rem}.dynamics-template>header p,.dynamics-block>header p,.dynamics-trend>p{max-width:520px;margin:0;color:var(--muted);font-size:.68rem;text-align:right}.dynamics-block{min-width:0;padding:10px;border:1px solid var(--border);border-radius:12px;background:#fbfcfb}.dynamics-block h4{margin:0;font-size:.82rem}.dynamics-block h5{margin:8px 0 5px}.ventilation-paths{display:grid;grid-template-columns:1fr 1fr;gap:8px}.dynamics-signal-path{min-width:0;padding:10px;border:1px solid #c8ded3;border-radius:12px;background:#f4fbf7}.dynamics-signal-path>header{display:flex;justify-content:space-between;gap:9px;margin-bottom:8px;color:var(--primary)}.dynamics-signal-path>header span{font-weight:850}.dynamics-signal-path>header small{color:var(--muted)}.signal-flow{display:grid;grid-template-columns:minmax(86px,1fr) auto minmax(86px,1fr) auto minmax(86px,1fr) auto minmax(210px,1.45fr) auto minmax(86px,1fr);align-items:center;gap:5px}.signal-flow>b,.flow-arrow,.dynamics-merge>b,.motor-flow>b{color:var(--primary);text-align:center}.regulator-card{padding:8px;border:1px dashed #7eb49a;border-radius:9px;background:#fff}.regulator-card h4{margin:0 0 6px}.dynamics-merge{display:grid;grid-template-columns:1fr auto minmax(130px,.4fr) auto 1fr;align-items:center;gap:8px;padding:6px 14px;color:var(--muted);text-align:center}.dynamics-merge .dynamics-readout{border-color:var(--primary)}
.dynamics-readout{display:grid;gap:2px;min-width:0;padding:8px;border:1px solid #d5dbd8;border-radius:8px;background:#edf1ef}.dynamics-readout>span{overflow-wrap:anywhere;color:var(--muted);font-size:.59rem}.dynamics-readout>strong{font-size:.83rem}.dynamics-readout>small{color:#577165;font-size:.54rem;line-height:1.25}.dynamics-readout.is-stale{border-color:#c99a35;background:#fff7df}.dynamics-readout.is-bad,.dynamics-readout.is-communication-lost{border-color:#c86b60;background:#fff0ee}.ventilation-motors{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.ventilation-motors article{min-width:0;padding:9px;border:1px solid var(--border);border-radius:10px;background:#fff}.motor-flow{display:grid;grid-template-columns:minmax(0,1fr) auto 24px auto minmax(0,1fr);align-items:center;gap:4px;margin-bottom:5px}.motor-symbol{display:grid;place-items:center;width:23px;height:23px;border:2px solid var(--primary);border-radius:50%;font-size:.62rem;font-weight:900}.dynamics-lower-grid{display:grid;grid-template-columns:1.35fr 1fr;gap:8px}.dynamics-settings-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.dynamics-settings-grid.compact{grid-template-columns:repeat(4,minmax(0,1fr))}.dynamics-settings-grid.scaling{grid-template-columns:repeat(6,minmax(0,1fr))}.dynamics-field{display:grid;align-content:start;gap:3px;min-width:0;padding:7px;border:1px solid #d9e2dd;border-radius:8px;background:#fff}.dynamics-field.is-dirty{border-color:var(--primary);box-shadow:inset 3px 0 var(--primary)}.dynamics-field.is-error{border-color:var(--critical);box-shadow:inset 3px 0 var(--critical)}.dynamics-field.is-mismatch{border-color:var(--warning);box-shadow:inset 3px 0 var(--warning)}.dynamics-field>label{display:grid;font-size:.65rem;font-weight:800}.dynamics-field>label small,.dynamics-field>small{color:var(--muted);font-size:.52rem;font-weight:400;line-height:1.25}.dynamics-input-row{display:flex;align-items:center;gap:4px}.dynamics-input-row input,.dynamics-input-row select{width:100%;min-width:0;height:31px;padding:4px 6px;border:1px solid #bfcac4;border-radius:6px;background:#fff;color:var(--text);font-weight:750}.dynamics-input-row input[readonly],.dynamics-input-row select:disabled{background:#f4f5f4;color:#6a746f}.dynamics-input-row>span{font-size:.63rem}.dynamics-field>em{color:var(--critical);font-size:.55rem;font-style:normal}.dynamics-field>em.mismatch{color:#8a5a00}.dynamics-readouts-row,.stage-readouts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:6px;margin-top:7px}
.cascade-flow,.constant-flow{display:grid;grid-template-columns:minmax(240px,1.35fr) auto minmax(240px,1.35fr) auto minmax(180px,.7fr) auto minmax(130px,.45fr);align-items:stretch;gap:7px}.constant-flow{grid-template-columns:minmax(300px,1.7fr) auto minmax(180px,.6fr) auto minmax(150px,.5fr)}.regulator-stage .stage-readouts{grid-template-columns:repeat(2,minmax(0,1fr));margin:8px 0}.pump-block,.valve-block{display:grid;align-content:start;gap:8px}.dynamics-no-trend{margin:0;padding:9px 11px;border-left:3px solid var(--primary);background:#f3f8f5;color:var(--muted);font-size:.7rem}
.dynamics-trend{display:grid;gap:8px;padding:11px;border:1px solid var(--border);border-radius:12px;background:#fff}.dynamics-source-badge{padding:5px 8px;border-radius:999px;background:#eaf7ef;color:var(--primary);font-size:.6rem;font-weight:800}.dynamics-trend__toggles{display:flex;flex-wrap:wrap;gap:6px}.dynamics-trend__toggles label{display:flex;align-items:center;gap:5px;padding:5px 8px;border:1px solid var(--border);border-radius:8px;font-size:.62rem}.dynamics-trend i{display:inline-block;width:16px;height:3px;background:var(--primary)}.dynamics-trend i.target{height:0;border-top:2px dashed #2d6ac8;background:transparent}.dynamics-trend i.water{background:#d17830}.dynamics-trend__plot{position:relative;display:grid;grid-template-columns:minmax(0,1fr) minmax(190px,.28fr);gap:10px;align-items:center}.dynamics-trend__plot svg{width:100%;min-width:0}.dynamics-trend__grid{stroke:#e1e8e4;stroke-width:1}.dynamics-trend__plot svg text{fill:#6d7b74;font-size:10px}.dynamics-trend__series{fill:none;stroke:var(--primary);stroke-width:3;stroke-linecap:round;stroke-linejoin:round}.dynamics-trend__series.target{stroke:#2d6ac8;stroke-dasharray:9 6}.dynamics-trend__series.water{stroke:#d17830;stroke-width:2}.dynamics-trend__cursor{stroke:#263e33;stroke-width:1}.dynamics-trend__plot>input{position:absolute;left:58px;right:calc(28% + 18px);bottom:5px;width:auto;opacity:.08}.dynamics-trend__plot output{display:grid;gap:6px;padding:9px;border:1px solid var(--border);border-radius:9px;background:#f7faf8;font-size:.62rem}.dynamics-trend__plot output span{display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:5px}.dynamics-trend>p{text-align:left;max-width:none}
.dynamics-demo-tools{margin:10px 0;padding:9px 12px;border:1px dashed #a8bcb1;border-radius:11px;background:#f8faf9}.dynamics-demo-tools summary{cursor:pointer;color:var(--primary);font-weight:800}.dynamics-demo-tools>div{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:8px}.dynamics-demo-tools label{display:grid;gap:4px;font-size:.62rem}.dynamics-demo-tools select{min-width:0;padding:6px;border:1px solid var(--border);border-radius:7px;background:#fff}.dynamics-demo-tools p{margin:7px 0 0;color:var(--muted);font-size:.62rem}.dynamics-changebar{position:fixed;z-index:20;right:20px;bottom:18px;left:calc(var(--sidebar-width) + 20px);display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:12px;max-width:1220px;margin:auto;padding:10px 14px;border:1px solid var(--primary);border-radius:13px;background:#f2fbf6;box-shadow:0 12px 30px #183b2c30}.dynamics-changebar.warning{border-color:var(--warning);background:#fff8e8}.dynamics-changebar.error{border-color:var(--critical);background:#fff0ee}.dynamics-changebar>div:first-child{display:grid;gap:2px}.dynamics-changebar span,.dynamics-changebar small{color:var(--muted);font-size:.62rem}.dynamics-readback-summary{display:grid;gap:2px}.dynamics-changebar__actions{display:flex;gap:6px}.dynamics-changebar button{min-height:38px;padding:7px 12px;border-radius:8px;font-weight:800}.dynamics-changebar button.primary{border:1px solid var(--primary);background:var(--primary);color:#fff}.dynamics-changebar button.secondary{border:1px solid var(--border);background:#fff;color:var(--text)}
@media(max-width:1450px){.ventilation-paths{grid-template-columns:1fr}.signal-flow{grid-template-columns:minmax(82px,1fr) auto minmax(82px,1fr) auto minmax(82px,1fr) auto minmax(230px,1.4fr) auto minmax(82px,1fr)}}
@media(max-width:1180px){.dynamics-page-heading{display:grid}.dynamics-heading-status{width:100%;min-width:0}.dynamics-selector{grid-template-columns:auto 1fr}.dynamics-selector__objects{grid-column:1/-1}.signal-flow{grid-template-columns:repeat(9,max-content);overflow-x:auto}.signal-flow>.regulator-card{min-width:230px}.ventilation-motors{grid-template-columns:1fr 1fr}.dynamics-settings-grid.scaling{grid-template-columns:repeat(4,minmax(0,1fr))}.cascade-flow{grid-template-columns:1fr auto 1fr}.cascade-flow>.pump-block,.cascade-flow>.valve-block{grid-row:2}.cascade-flow>.pump-block{grid-column:1}.cascade-flow>.valve-block{grid-column:3}.cascade-flow>.flow-arrow:nth-of-type(3){display:none}.dynamics-demo-tools>div{grid-template-columns:repeat(3,1fr)}}
@media(max-width:760px){.climate-dynamics-page{padding-bottom:195px}.dynamics-page-heading{margin-top:8px}.dynamics-page-heading>div:first-child p{font-size:.69rem}.dynamics-heading-status{grid-template-columns:1fr 1fr}.dynamics-heading-status>span:nth-child(2){border-right:0}.dynamics-selector{display:grid;grid-template-columns:1fr;padding:9px}.dynamics-selector__objects{grid-column:auto}.dynamics-selector__groups{display:grid;grid-template-columns:1fr 1fr}.dynamics-selector__groups button{white-space:normal}.dynamics-object-tabs{display:none}.dynamics-object-select{display:grid;gap:4px;font-size:.68rem;font-weight:800}.dynamics-object-select select{min-height:44px;padding:8px;border:1px solid var(--border);border-radius:8px;background:#fff}.dynamics-legend{display:grid;gap:6px}.dynamics-template{padding:9px}.dynamics-template>header,.dynamics-block>header,.dynamics-trend>header{display:grid}.dynamics-template>header p,.dynamics-block>header p{text-align:left}.ventilation-paths,.dynamics-lower-grid,.ventilation-motors{grid-template-columns:1fr}.signal-flow{grid-template-columns:1fr}.signal-flow>b{transform:rotate(90deg)}.signal-flow>.regulator-card{min-width:0}.dynamics-merge{grid-template-columns:1fr}.dynamics-merge>b{transform:rotate(90deg)}.dynamics-settings-grid,.dynamics-settings-grid.compact,.dynamics-settings-grid.scaling{grid-template-columns:1fr 1fr}.dynamics-readouts-row,.stage-readouts{grid-template-columns:1fr 1fr}.cascade-flow,.constant-flow{grid-template-columns:1fr}.cascade-flow>.pump-block,.cascade-flow>.valve-block{grid-row:auto;grid-column:auto}.cascade-flow>.flow-arrow,.constant-flow>.flow-arrow{transform:rotate(90deg)}.cascade-flow>.flow-arrow:nth-of-type(3){display:block}.dynamics-trend__plot{grid-template-columns:1fr}.dynamics-trend__plot>input{right:16px}.dynamics-trend__plot output{grid-template-columns:1fr}.dynamics-demo-tools>div{grid-template-columns:1fr}.dynamics-changebar{right:8px;bottom:calc(58px + env(safe-area-inset-bottom));left:8px;grid-template-columns:1fr;max-height:185px;overflow:auto;padding:9px}.dynamics-changebar__actions{display:grid;grid-template-columns:1fr 1fr}.dynamics-changebar button{min-height:46px}.dynamics-incomplete{grid-template-columns:1fr}.dynamics-incomplete ul{grid-column:auto}}
@media(max-width:390px){.dynamics-heading-status{grid-template-columns:1fr}.dynamics-heading-status>span{border-right:0}.dynamics-settings-grid,.dynamics-settings-grid.compact,.dynamics-settings-grid.scaling,.dynamics-readouts-row,.stage-readouts{grid-template-columns:1fr}.dynamics-changebar__actions{grid-template-columns:1fr 1fr}}

/* DEMO-UI-015A · faithful automation schematics */
.dynamics-schematic{display:grid;gap:7px;margin-top:8px}.dynamics-schematic>header{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;padding:0 3px}.dynamics-schematic>header h3{margin:2px 0;font-size:1.08rem}.dynamics-schematic>header p{max-width:570px;margin:0;color:var(--muted);font-size:.67rem;text-align:right}.scheme-safety-note{margin:0;padding:6px 9px;border-left:3px solid var(--primary);background:#f4f8f6;color:var(--muted);font-size:.62rem}.dynamics-selector{padding:7px 10px;border-radius:10px;box-shadow:none}.dynamics-selector h3{font-size:.86rem}.dynamics-selector button{min-height:34px;padding:5px 10px}.dynamics-legend{margin:6px 0;padding:5px 9px}
.automation-viewport-shell{min-width:0;border:1px solid #b9c9c0;border-radius:11px;background:#e9efeb;box-shadow:0 8px 18px #183b2c13}.automation-viewport-toolbar{display:flex;align-items:center;justify-content:flex-end;gap:5px;min-height:39px;padding:5px 8px;border-bottom:1px solid #c6d3cc;background:#f8faf9}.automation-viewport-toolbar>span{display:grid;margin-right:auto}.automation-viewport-toolbar strong{font-size:.69rem}.automation-viewport-toolbar small{color:var(--muted);font-size:.55rem}.automation-viewport-toolbar button{min-height:30px;padding:4px 9px;border:1px solid #9cb4a7;border-radius:6px;background:#fff;color:var(--primary);font-size:.63rem;font-weight:800}.automation-viewport-toolbar button:focus-visible,.automation-viewport:focus-visible{outline:3px solid #e2a934;outline-offset:2px}.automation-viewport-toolbar button:disabled{opacity:.45}.automation-viewport{max-width:100%;overflow:auto;overscroll-behavior:contain;background:#dce4df;scrollbar-color:#6b8879 #dce4df}.automation-viewport.is-fit{overflow:hidden}.automation-stage-space{position:relative}.automation-viewport.is-fit .automation-stage-space{width:930px;height:525px}.automation-stage{position:absolute;top:0;left:0;width:1240px;height:700px;overflow:hidden;transform-origin:top left;background-color:#edf2ef;background-image:linear-gradient(#d8e1dc 1px,transparent 1px),linear-gradient(90deg,#d8e1dc 1px,transparent 1px);background-size:28px 28px}.automation-viewport.is-fit .automation-stage{transform:scale(.75)}.automation-viewport.is-manual{height:530px}.automation-viewport-help{margin:0;padding:4px 9px;border-top:1px solid #c6d3cc;background:#f8faf9;color:var(--muted);font-size:.54rem}.automation-viewport-help kbd{padding:1px 4px;border:1px solid #b6c4bc;border-radius:3px;background:#fff;color:var(--text);font:inherit;font-weight:800}
.automation-scheme{position:relative;width:1240px;height:700px;color:#10291e}.automation-wires{position:absolute;inset:0;z-index:1;width:1240px;height:700px;overflow:visible}.automation-wires path{fill:none;stroke:#183d2d;stroke-width:3;stroke-linecap:square;stroke-linejoin:miter;marker-end:url(#scheme-arrow)}.automation-wires .wire-branch{stroke-width:3.5}.automation-wires circle{fill:#183d2d;stroke:none}.automation-wires marker path{fill:#183d2d;stroke:none}.scheme-node{position:absolute;z-index:2;box-sizing:border-box}.scheme-node h4{margin:0 0 6px;font-size:15px}.automation-scheme .dynamics-field{position:relative;display:grid;grid-template-columns:minmax(34px,1fr) auto;align-items:center;gap:3px;min-width:0;padding:2px 3px;border:1px solid transparent;border-radius:3px;background:transparent;box-shadow:none}.automation-scheme .dynamics-field.is-dirty,.automation-scheme .dynamics-field.is-error,.automation-scheme .dynamics-field.is-mismatch{padding-left:7px;border-color:#1a7d52;background:#effaf4;box-shadow:inset 4px 0 #1a7d52}.automation-scheme .dynamics-field.is-error{border-color:#b32e29;background:#fff1ef;box-shadow:inset 4px 0 #b32e29}.automation-scheme .dynamics-field.is-mismatch{border-color:#ad6a00;background:#fff7e4;box-shadow:inset 4px 0 #ad6a00}.automation-scheme .dynamics-field>label{display:flex;align-items:center;justify-content:space-between;gap:3px;min-width:0;font-size:11px;font-weight:700}.automation-scheme .field-kind,.automation-scheme .readout-kind{color:#66766e;font-size:8px;font-weight:600;text-transform:uppercase}.automation-scheme .dynamics-input-row{justify-content:flex-end}.automation-scheme .dynamics-input-row input,.automation-scheme .dynamics-input-row select{width:64px;height:28px;padding:2px 5px;border:1px solid #82968b;border-radius:2px;background:#fff;font-size:12px;font-weight:750}.automation-scheme .dynamics-input-row select{width:74px}.automation-scheme .dynamics-input-row>span{font-size:10px}.automation-scheme .field-state-badge{position:absolute;right:-2px;bottom:-10px;padding:1px 3px;border-radius:3px;background:#176f49;color:#fff;font-size:8px;font-weight:800}.automation-scheme .dynamics-field>em{grid-column:1/-1;font-size:9px;line-height:1.2}.automation-scheme .dynamics-readout{display:grid;grid-template-columns:1fr;gap:1px;min-width:70px;padding:4px 6px;border:1px solid #87948e;border-radius:2px;background:#d9dddb}.automation-scheme .dynamics-readout>span{display:flex;align-items:center;justify-content:space-between;gap:4px;color:#43554c;font-size:9px}.automation-scheme .dynamics-readout>strong{font-size:13px}.automation-scheme .dynamics-readout.is-stale,.automation-scheme .dynamics-readout.is-bad,.automation-scheme .dynamics-readout.is-communication-lost{border-width:2px}.automation-scheme .readout-alert{margin-top:2px;color:#8a3100;font-size:8px;font-style:normal;font-weight:750}.program-line{display:grid;grid-template-columns:86px 38px 86px;align-items:center;gap:4px}.sum-symbol{display:grid;place-items:center;width:34px;height:34px;border:2px solid #183d2d;border-radius:50%;background:#f8faf9;font-size:20px}.program-measurement{width:92px;margin:12px auto 0}.program-measurement::before{content:"";display:block;width:2px;height:19px;margin:-12px auto 3px;background:#183d2d}
.vent-program{width:215px}.vent-program--temperature{top:80px;left:20px}.vent-program--humidity{top:340px;left:20px}.vent-regulator{width:185px;min-height:200px;padding:11px 12px;border:2px solid #52675d;background:#e3e8e5}.vent-regulator--temperature{top:45px;left:300px}.vent-regulator--humidity{top:305px;left:300px}.automation-regulator .regulator-parameters{display:grid;gap:1px}.automation-regulator .regulator-output{display:grid;grid-template-columns:1fr 78px;align-items:center;gap:4px;margin-top:3px;font-size:10px}.automation-regulator .regulator-output .dynamics-readout{min-width:0}.w-block{top:245px;left:590px;display:grid;place-items:center;width:100px;height:100px;color:#0648c7}.w-block::before{content:"";position:absolute;inset:0;z-index:-1;border:2px solid #40554a;background:#d7dfda;clip-path:polygon(0 0,100% 50%,0 100%)}.w-block>span{font-size:26px}.w-block .dynamics-readout{width:70px}.actuator-path{display:grid;grid-template-columns:120px 70px 1fr;align-items:center;gap:12px;width:400px}.actuator-path--left{top:45px;left:805px}.actuator-path--right{top:400px;left:805px}.three-state-regulator{display:grid;gap:5px;padding:10px;border:2px solid #52675d;background:#e3e8e5}.three-state-regulator strong{font-size:12px}.motor-device{display:grid;place-items:center;gap:2px}.motor-device>span{display:grid;place-items:center;width:60px;height:60px;border:4px solid #173c2c;border-radius:50%;background:#eef2ef;font-size:34px;font-weight:900}.motor-device small{font-size:9px;font-weight:800}.motor-device.small>span{width:36px;height:36px;border-width:3px;font-size:19px}.apy-block{padding:8px 9px;border:2px solid #52675d;background:#e3e8e5}.apy-block h4{font-size:13px}.apy-block>.dynamics-readout{position:absolute;top:8px;right:8px;width:66px}.apy-settings{display:grid;grid-template-columns:1fr;gap:1px;margin-top:18px}.scaling-block{top:180px;left:805px;width:230px;padding:9px;border:2px solid #52675d;background:#e3e8e5}.scaling-readouts{display:grid;grid-template-columns:1fr 1fr;gap:4px;margin-bottom:5px}.scaling-table{display:grid;grid-template-columns:repeat(3,1fr);gap:1px}.scaling-table .dynamics-field{grid-template-columns:1fr}.scaling-table .dynamics-field label{font-size:9px}.vent-zone-block{top:525px;left:380px;width:370px;padding:9px 12px;border:2px solid #52675d;background:#e3e8e5}.zone-settings{display:grid;grid-template-columns:1fr 1fr;gap:2px 10px}.zone-readouts{display:grid;grid-template-columns:1fr 1fr;gap:5px;margin-top:6px}.extra-pair-block{top:535px;width:210px;padding:7px;border:2px solid #52675d;background:#e3e8e5}.extra-pair-block--2{left:790px}.extra-pair-block--3{left:1015px}.extra-pair-block h4{font-size:12px}.extra-actuator{display:grid;grid-template-columns:42px 1fr;gap:5px;margin-top:4px}.extra-actuator>div:last-child>strong{font-size:10px}.extra-actuator .dynamics-readout{margin:2px 0}.extra-actuator .apy-settings{margin:0}.extra-scaling-block{top:205px;left:1045px;width:175px;padding:8px;border:2px solid #52675d;background:#e3e8e5}.extra-scaling-block h4{font-size:12px}.extra-scale-row{display:grid;grid-template-columns:1fr 1fr;gap:1px}.extra-scale-row>strong{grid-column:1/-1;margin-top:3px;font-size:9px}.extra-scale-row .dynamics-field{grid-template-columns:1fr}.autocalibration-block{top:652px;left:790px;width:430px}.autocalibration-block .dynamics-field{grid-template-columns:1fr auto;padding:5px 8px;border:1px solid #52675d;background:#e3e8e5}
.heating-program,.constant-program{top:215px;left:30px;width:205px}.heating-master-regulator{top:180px;left:330px;width:195px;min-height:220px;padding:12px;border:2px solid #52675d;background:#e3e8e5}.water-input{top:225px;left:555px;display:grid;grid-template-columns:38px 80px;align-items:start;gap:5px;width:120px}.water-input .program-measurement{grid-column:1/-1;margin-top:17px}.heating-slave-regulator{top:180px;left:650px;width:195px;min-height:220px;padding:12px;border:2px solid #52675d;background:#e3e8e5}.pump-control-block{top:30px;left:700px;width:175px;padding:10px;border:2px solid #52675d;background:#e3e8e5}.pump-control-block>div{display:grid;gap:2px}.pump-device{top:44px;left:1010px;display:grid;grid-template-columns:56px 1fr;align-items:center;gap:7px;width:200px}.pump-symbol{display:grid;place-items:center;width:52px;height:52px;border:4px solid #173c2c;border-radius:50%;background:#aeb9b3;font-size:28px;font-weight:900}.pump-device>strong{font-size:12px}.pump-device>.dynamics-readout{grid-column:2}.valve-device{top:205px;left:1010px;display:grid;grid-template-columns:100px 90px;align-items:center;width:205px}.valve-device>strong{grid-column:1/-1;margin-bottom:4px;font-size:12px}.valve-symbol{display:flex;align-items:center}.valve-symbol i{display:grid;place-items:center;width:36px;height:36px;border:3px solid #173c2c;border-radius:50%;background:#fff;font-style:normal;font-weight:900}.valve-symbol b{position:relative;width:55px;height:62px}.valve-symbol b::before,.valve-symbol b::after{content:"";position:absolute;left:4px;width:0;height:0;border-top:25px solid transparent;border-bottom:25px solid transparent}.valve-symbol b::before{top:5px;border-left:44px solid #5f7067}.valve-symbol b::after{top:5px;left:0;border-right:44px solid #c3cbc7}.scheme-trend-node{position:absolute;z-index:2;top:420px;left:310px;width:570px;height:255px}.scheme-trend-node .dynamics-trend{gap:3px;padding:7px;border:2px solid #52675d;border-radius:0;background:#e3e8e5;box-shadow:none}.scheme-trend-node .dynamics-trend h3{font-size:13px}.scheme-trend-node .dynamics-trend__toggles label{padding:2px 5px;background:#f8faf9}.scheme-trend-node .dynamics-trend__plot{grid-template-columns:1fr 145px;gap:5px}.scheme-trend-node .dynamics-trend__plot svg{height:145px}.scheme-trend-node .dynamics-trend__plot output{padding:5px}.scheme-trend-node .dynamics-trend>p{display:none}.constant-program{top:245px;left:45px}.constant-regulator{top:205px;left:390px;width:210px;min-height:225px;padding:12px;border:2px solid #52675d;background:#e3e8e5}.constant-pump{top:55px;left:990px}.constant-valve{top:235px;left:1005px}.constant-no-trend{position:absolute;top:500px;left:390px;width:440px;margin:0;padding:9px;border-left:4px solid #52675d;background:#e3e8e5;color:#52675d;font-size:11px}
@media(max-width:760px){.dynamics-schematic>header{display:grid;padding:0 2px}.dynamics-schematic>header p{text-align:left}.automation-viewport-toolbar{position:sticky;top:0;z-index:3;display:grid;grid-template-columns:1fr repeat(2,38px);padding:6px}.automation-viewport-toolbar>span{grid-column:1/-1}.automation-viewport-toolbar button:nth-of-type(3),.automation-viewport-toolbar button:nth-of-type(4){grid-column:span 1}.automation-viewport-toolbar button{min-height:42px}.automation-viewport.is-fit .automation-stage-space{width:310px;height:175px}.automation-viewport.is-fit .automation-stage{transform:scale(.25)}.automation-viewport.is-manual{height:510px}.automation-viewport-help{font-size:.58rem}.dynamics-changebar{max-height:175px}.scheme-safety-note{font-size:.6rem}}

@media(max-width:760px){.automation-viewport-toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}.automation-viewport-toolbar button:nth-of-type(3),.automation-viewport-toolbar button:nth-of-type(4){grid-column:auto}}

/* DEMO-UI-015B · active bounds, collision-free geometry and Greenhouse styling */
.climate-dynamics-page .dynamics-page-heading {
  align-items: stretch;
  gap: 10px;
  margin: 8px 0;
}
.climate-dynamics-page .dynamics-page-heading > div:first-child {
  align-content: center;
}
.climate-dynamics-page .dynamics-page-heading > div:first-child p {
  margin: 2px 0 0;
}
.climate-dynamics-page .dynamics-heading-status {
  min-height: 64px;
  box-shadow: none;
}
.climate-dynamics-page .dynamics-selector {
  grid-template-columns: auto auto minmax(0, 1fr);
  gap: 10px;
  margin-bottom: 6px;
  padding: 7px 9px;
  border-radius: 10px;
  background: var(--surface);
}
.climate-dynamics-page .dynamics-selector h3 {
  margin: 0;
  font-size: .82rem;
}
.climate-dynamics-page .dynamics-selector__groups {
  min-width: 260px;
}
.climate-dynamics-page .dynamics-selector__objects {
  min-width: 0;
}
.climate-dynamics-page .dynamics-selector button {
  min-height: 36px;
}
.climate-dynamics-page .dynamics-legend {
  gap: 14px;
  margin: 4px 0;
  padding: 5px 9px;
  background: transparent;
}
.dynamics-schematic {
  gap: 6px;
  margin-top: 5px;
}
.dynamics-schematic > header {
  align-items: center;
  min-height: 42px;
  padding: 0 4px;
}
.dynamics-schematic > header h3 {
  margin: 0;
  color: var(--primary);
  font-size: 1.08rem;
}
.dynamics-schematic > header p {
  max-width: 620px;
  font-size: .72rem;
  line-height: 1.35;
}
.automation-viewport-shell {
  min-width: 0;
  overflow: clip;
  border: 1px solid var(--border);
  border-radius: 12px;
  background: var(--surface);
  box-shadow: 0 8px 22px rgba(21, 69, 49, .08);
}
.automation-viewport-toolbar {
  min-height: 48px;
  padding: 6px 9px;
  border-bottom: 1px solid var(--border);
  background: var(--surface);
}
.automation-scale-indicator {
  display: flex;
  align-items: center;
  min-height: 32px;
  margin-right: auto;
  padding: 0 10px;
  border-left: 3px solid var(--primary);
  color: var(--muted);
}
.automation-viewport-toolbar .automation-scale-indicator small {
  font-size: .72rem;
  font-weight: 750;
}
.automation-viewport-toolbar button {
  min-width: 40px;
  min-height: 40px;
  padding: 6px 11px;
  border-color: var(--border);
  border-radius: 8px;
  font-size: .72rem;
}
.automation-viewport-toolbar button:hover {
  border-color: var(--primary);
  background: var(--primary-soft);
}
.automation-viewport {
  max-width: 100%;
  max-height: min(72vh, 880px);
  overflow: auto;
  overscroll-behavior: contain;
  background: #f7faf8;
  scrollbar-color: #6b8879 #e8efeb;
  scrollbar-gutter: stable;
}
.automation-viewport.is-fit,
.automation-viewport.is-manual {
  height: auto;
  overflow: auto;
}
.automation-stage-space {
  position: relative;
  min-width: 1px;
  min-height: 1px;
}
.automation-stage {
  position: absolute;
  inset: 0 auto auto 0;
  overflow: visible;
  transform-origin: top left;
  background-color: #f8fbf9;
  background-image:
    linear-gradient(rgba(53, 107, 82, .055) 1px, transparent 1px),
    linear-gradient(90deg, rgba(53, 107, 82, .055) 1px, transparent 1px);
  background-size: 32px 32px;
}
.automation-viewport-help {
  padding: 5px 10px;
  border-color: var(--border);
  background: var(--surface);
  font-size: .65rem;
}
.automation-scheme {
  position: relative;
  width: 100%;
  height: 100%;
  color: var(--text);
  font-size: 14px;
}
.automation-wires {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
}
.automation-wires path {
  stroke: #155b40;
  stroke-width: 3.2;
}
.automation-wires .wire-branch {
  stroke-width: 3.6;
}
.automation-wires circle {
  fill: #155b40;
}
.scheme-node {
  box-sizing: border-box;
}
.scheme-node h4 {
  margin: 0 0 8px;
  color: #153e2d;
  font-size: 17px;
  line-height: 1.25;
}
.automation-scheme .automation-regulator,
.automation-scheme .scaling-block,
.automation-scheme .vent-zone-block,
.automation-scheme .extra-pair-block,
.automation-scheme .extra-scaling-block,
.automation-scheme .pump-control-block,
.automation-scheme .apy-block {
  border: 1.5px solid #86a696;
  border-radius: 8px;
  background: rgba(255, 255, 255, .97);
  box-shadow: 0 4px 12px rgba(24, 61, 45, .08);
}
.automation-scheme .dynamics-field {
  grid-template-columns: minmax(48px, 1fr) auto;
  gap: 5px;
  min-height: 40px;
  padding: 2px 4px;
}
.automation-scheme .dynamics-field > label {
  gap: 5px;
  font-size: 14px;
  line-height: 1.15;
}
.automation-scheme .field-kind,
.automation-scheme .readout-kind {
  font-size: 8px;
  letter-spacing: .02em;
}
.automation-scheme .dynamics-input-row input,
.automation-scheme .dynamics-input-row select {
  width: 72px;
  height: 36px;
  padding: 3px 7px;
  border-color: #789487;
  border-radius: 5px;
  font-size: 16px;
}
.automation-scheme .dynamics-input-row select {
  width: 82px;
}
.automation-scheme .dynamics-input-row > span {
  font-size: 11px;
}
.automation-scheme .dynamics-readout {
  box-sizing: border-box;
  min-width: 78px;
  min-height: 38px;
  padding: 5px 7px;
  border: 1px solid #aebdb5;
  border-radius: 6px;
  background: #e8edeb;
}
.automation-scheme .dynamics-readout > span {
  font-size: 10px;
}
.automation-scheme .dynamics-readout > strong {
  font-size: 16px;
  line-height: 1.25;
}
.automation-scheme .dynamics-readout.is-stale,
.automation-scheme .dynamics-readout.is-bad,
.automation-scheme .dynamics-readout.is-communication-lost {
  border-width: 2px;
  background: #fff7e7;
}
.automation-scheme .readout-alert {
  font-size: 9px;
  line-height: 1.2;
}
.automation-scheme .dynamics-field.is-dirty,
.automation-scheme .dynamics-field.is-error,
.automation-scheme .dynamics-field.is-mismatch {
  border-radius: 6px;
}
.program-line {
  grid-template-columns: 82px 38px 82px;
  gap: 5px;
}
.sum-symbol {
  width: 34px;
  height: 34px;
  border-color: #155b40;
  background: #fff;
}
.program-measurement {
  width: 98px;
  margin-top: 15px;
}

/* Ventilation geometry: explicit bounds for active 1/2/3-pair variants. */
.vent-program {
  width: 230px;
}
.vent-program--temperature { top: 80px; left: 20px; }
.vent-program--humidity { top: 435px; left: 20px; }
.vent-regulator {
  left: 250px;
  width: 205px;
  min-height: 245px;
  padding: 13px;
}
.vent-regulator--temperature { top: 35px; }
.vent-regulator--humidity { top: 390px; }
.automation-regulator .regulator-parameters {
  gap: 2px;
}
.automation-regulator .regulator-output {
  grid-template-columns: 1fr 86px;
  min-height: 38px;
  margin-top: 5px;
  font-size: 12px;
}
.w-block {
  top: 255px;
  left: 500px;
  width: 105px;
  height: 105px;
}
.w-block > span {
  font-size: 30px;
}
.actuator-path {
  grid-template-columns: 130px 72px minmax(0, 1fr);
  gap: 12px;
  left: 650px;
  width: 440px;
}
.actuator-path--left { top: 35px; }
.actuator-path--right { top: 620px; }
.three-state-regulator {
  min-height: 96px;
  padding: 11px;
  border: 1.5px solid #86a696;
  border-radius: 8px;
  background: #fff;
}
.three-state-regulator strong {
  font-size: 13px;
}
.motor-device > span {
  width: 64px;
  height: 64px;
  border-color: #155b40;
  background: #fff;
}
.motor-device small {
  font-size: 10px;
}
.apy-block {
  min-height: 150px;
  padding: 10px;
}
.apy-block h4 {
  font-size: 14px;
}
.apy-block > .dynamics-readout {
  top: 10px;
  right: 10px;
  width: 86px;
}
.apy-settings {
  gap: 2px;
  margin-top: 24px;
}
.scaling-block {
  top: 230px;
  left: 650px;
  width: 230px;
  min-height: 225px;
  padding: 11px;
}
.scaling-readouts {
  gap: 6px;
  margin-bottom: 7px;
}
.scaling-table {
  gap: 2px;
}
.scaling-table .dynamics-field {
  min-height: 52px;
}
.scaling-table .dynamics-field label {
  font-size: 12px;
}
.scaling-table .dynamics-input-row input {
  width: 100%;
  min-width: 0;
}
.extra-scaling-block {
  top: 230px;
  left: 895px;
  width: 200px;
  min-height: 225px;
  padding: 11px;
}
.extra-scaling-block h4 {
  font-size: 14px;
}
.extra-scale-row {
  gap: 3px;
}
.extra-scaling-block .dynamics-field {
  grid-template-columns: minmax(0, 1fr);
  min-height: 58px;
}
.extra-scaling-block .dynamics-input-row input {
  width: 100%;
  min-width: 0;
}
.extra-scale-row > strong {
  margin-top: 6px;
  font-size: 11px;
}
.vent-zone-block {
  top: 720px;
  left: 250px;
  width: 360px;
  min-height: 225px;
  padding: 12px;
}
.zone-settings {
  gap: 3px 10px;
}
.zone-readouts {
  gap: 7px;
  margin-top: 8px;
}
.extra-pair-block {
  top: 800px;
  width: 220px;
  min-height: 270px;
  padding: 10px;
}
.extra-pair-block--2 { left: 650px; }
.extra-pair-block--3 { left: 885px; }
.extra-pair-block h4 {
  font-size: 14px;
}
.extra-actuator {
  grid-template-columns: 44px minmax(0, 1fr);
  gap: 7px;
  margin-top: 7px;
}
.extra-actuator > div:last-child > strong {
  font-size: 12px;
}
.extra-actuator .apy-settings {
  margin-top: 3px;
}
.autocalibration-block {
  left: 650px;
  width: 455px;
}
.ventilation-scheme[data-pairs="1"] .autocalibration-block { top: 855px; }
.ventilation-scheme[data-pairs="2"] .autocalibration-block,
.ventilation-scheme[data-pairs="3"] .autocalibration-block { top: 1190px; }
.autocalibration-block .dynamics-field {
  min-height: 44px;
  padding: 5px 9px;
}

/* Cascade geometry: the 60 s trend owns a separate lane below the control path. */
.heating-program,
.constant-program {
  top: 245px;
  left: 20px;
  width: 215px;
}
.heating-master-regulator,
.heating-slave-regulator {
  top: 190px;
  width: 210px;
  min-height: 280px;
  padding: 13px;
}
.heating-master-regulator { left: 260px; }
.water-input {
  top: 255px;
  left: 480px;
  grid-template-columns: 38px 82px;
  width: 140px;
}
.heating-slave-regulator { left: 625px; }
.pump-control-block {
  top: 30px;
  left: 660px;
  width: 200px;
  min-height: 130px;
  padding: 12px;
}
.pump-device {
  top: 44px;
  left: 890px;
  grid-template-columns: 58px minmax(0, 1fr);
  width: 210px;
}
.pump-symbol {
  width: 54px;
  height: 54px;
  border-color: #155b40;
  background: #dfe9e4;
}
.pump-device > strong {
  font-size: 13px;
}
.valve-device {
  top: 245px;
  left: 890px;
  grid-template-columns: 105px 92px;
  width: 210px;
}
.valve-device > strong {
  font-size: 13px;
}
.scheme-trend-node {
  top: 510px;
  left: 240px;
  width: 620px;
  height: 270px;
}
.scheme-trend-node .dynamics-trend {
  min-height: 260px;
  padding: 9px;
  border-color: #86a696;
  border-radius: 8px;
  background: #fff;
}
.scheme-trend-node .dynamics-trend h3 {
  font-size: 14px;
}
.scheme-trend-node .dynamics-trend__plot svg {
  height: 150px;
}

/* Constant-value geometry uses smaller real bounds instead of the cascade canvas. */
.constant-program {
  top: 240px;
  left: 20px;
  width: 220px;
}
.constant-regulator {
  top: 185px;
  left: 300px;
  width: 220px;
  min-height: 285px;
  padding: 13px;
}
.constant-pump {
  top: 45px;
  left: 820px;
}
.constant-valve {
  top: 245px;
  left: 820px;
}
.constant-no-trend {
  top: 490px;
  left: 300px;
  width: 450px;
  padding: 10px 12px;
  border-left-color: var(--primary);
  border-radius: 0 7px 7px 0;
  background: #eef6f2;
  font-size: 12px;
}

@media (max-width: 1180px) {
  .climate-dynamics-page .dynamics-selector {
    grid-template-columns: auto auto minmax(0, 1fr);
  }
  .climate-dynamics-page .dynamics-selector__objects {
    grid-column: auto;
  }
}

@media (max-width: 760px) {
  .climate-dynamics-page .dynamics-page-heading {
    gap: 7px;
  }
  .climate-dynamics-page .dynamics-selector {
    grid-template-columns: 1fr;
  }
  .climate-dynamics-page .dynamics-selector__groups {
    min-width: 0;
  }
  .climate-dynamics-page .dynamics-selector__objects {
    grid-column: auto;
  }
  .automation-viewport-toolbar {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
  .automation-scale-indicator {
    grid-column: 1 / -1;
    min-height: 28px;
    padding-inline: 7px;
  }
  .automation-viewport-toolbar button {
    min-width: 40px;
    min-height: 44px;
  }
  .automation-viewport {
    max-height: 510px;
  }
  .automation-viewport-help {
    font-size: .61rem;
  }
}

/* DEMO-UI-016A: semantic state accents and explicit collector branches. */
.sensor-card{border-left-color:var(--primary)}
.sensor-card.state-warning,.sensor-card.state-stale,.sensor-card.state-trendgap{border-color:var(--warning);border-left-color:var(--warning);background:var(--warning-soft)}
.sensor-card.state-warning .sensor-card__top i,.sensor-card.state-stale .sensor-card__top i,.sensor-card.state-trendgap .sensor-card__top i{background:var(--warning);box-shadow:0 0 0 1px var(--warning)}
.sensor-card.state-bad,.sensor-card.state-nodata{border-color:var(--critical);border-left-color:var(--critical);background:var(--critical-soft)}
.sensor-card.state-bad .sensor-card__top i,.sensor-card.state-nodata .sensor-card__top i{background:var(--critical);box-shadow:0 0 0 1px var(--critical)}
.sensor-card.state-unmapped,.sensor-card.state-unknown,.sensor-card.state-initializing{border-color:var(--muted);border-left-color:var(--muted);background:var(--surface-soft)}
.sensor-card.state-unmapped .sensor-card__top i,.sensor-card.state-unknown .sensor-card__top i,.sensor-card.state-initializing .sensor-card__top i{background:var(--muted);box-shadow:0 0 0 1px var(--muted)}
.sensor-card.state-recovery{border-left-color:var(--primary);background:var(--primary-soft)}
.sensor-card:focus-visible{outline:3px solid var(--warning);outline-offset:2px}
.sensor-heating-map__connector{display:grid;place-items:center;height:38px}
.sensor-heating-map__connector::before{inset-block:0;height:auto;background:var(--primary)}
.sensor-heating-map__connector span{position:relative;inset:auto;padding:3px 9px;border:1px solid #9bbbab;border-radius:999px;background:var(--surface);color:var(--primary);font-size:.52rem;font-weight:800;text-transform:uppercase;letter-spacing:.04em}
.sensor-heating-map__connector span::after{display:none}
.sensor-heating-map__circuits{align-items:stretch}
.sensor-heating-map__branch{position:relative;display:grid;grid-template-rows:auto 1fr;min-width:0;padding-top:16px}
.sensor-heating-map__branch>span{position:absolute;top:0;left:50%;height:16px;padding:0 5px;border-left:1px solid var(--primary);background:var(--surface);color:var(--muted);font-size:.48rem;font-weight:750;line-height:16px;white-space:nowrap;transform:translateX(-50%)}
.sensor-heating-map__branch>.sensor-card{width:100%;height:100%}
@media(max-width:620px){.sensor-heating-map__connector{height:34px}.sensor-heating-map__connector::before{height:auto}.sensor-heating-map__branch{padding-top:18px}.sensor-heating-map__branch>span{height:18px}}
@media(min-width:621px){.climate-sensors-page{width:calc(100% - 16px)}}
@media(min-width:1451px){.operator-page.climate-sensors-page{width:min(calc(100vw - 400px),1360px)!important;max-width:1360px!important}}

/* DEMO-UI-017: climate diagnostics. */
.climate-diagnostics-page{overflow-x:hidden}.diagnostics-heading{display:grid;grid-template-columns:minmax(260px,.85fr) minmax(620px,1.6fr);align-items:end;gap:16px;margin:12px 0}.diagnostics-heading h2{margin:3px 0 2px;font-size:1.45rem}.diagnostics-heading p{margin:0;color:var(--muted);font-size:.7rem}.diagnostics-state-strip{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));border:1px solid var(--border);border-radius:13px;background:var(--surface);box-shadow:var(--shadow);overflow:hidden}.diagnostics-state-strip>span{display:flex;flex-direction:column;gap:3px;min-width:0;padding:9px 11px;border-right:1px solid var(--border)}.diagnostics-state-strip>span:last-child{border:0}.diagnostics-state-strip small{color:var(--muted);font-size:.52rem;text-transform:uppercase;letter-spacing:.04em}.diagnostics-state-strip strong{overflow-wrap:anywhere;font-size:.68rem}.diagnostics-state-strip .state-error{background:var(--critical-soft);color:var(--critical)}.diagnostics-state-strip .state-warning{background:var(--warning-soft);color:#76500a}.diagnostics-state-strip .state-healthy{background:var(--primary-soft);color:var(--primary)}
.diagnostic-flow,.diagnostic-issues,.diagnostic-quality-summary,.diagnostic-operations,.diagnostic-technical{margin-bottom:12px;padding:13px;border:1px solid var(--border);border-radius:14px;background:var(--surface);box-shadow:var(--shadow)}.diagnostic-flow>header,.diagnostic-issues>header,.diagnostic-quality-summary>header,.diagnostic-operations>header{display:flex;align-items:start;justify-content:space-between;gap:12px;margin-bottom:10px}.diagnostic-flow h3,.diagnostic-issues h3,.diagnostic-quality-summary h3,.diagnostic-operations h3{margin:2px 0 0;font-size:1rem}.diagnostic-flow>header>strong{padding:4px 8px;border:1px solid #a9c9bb;border-radius:999px;color:var(--primary);font-size:.58rem}.diagnostic-flow__stages{display:flex;align-items:stretch;gap:6px}.diagnostic-stage{position:relative;display:flex;gap:8px;min-width:0;flex:1;padding:10px;border:1px solid #aad0c0;border-left:4px solid var(--primary);border-radius:10px;background:var(--primary-soft)}.diagnostic-stage__index{display:grid;place-items:center;flex:0 0 22px;width:22px;height:22px;border-radius:50%;background:var(--primary);color:#fff;font-size:.58rem;font-weight:900}.diagnostic-stage>div{display:flex;flex-direction:column;min-width:0}.diagnostic-stage strong{font-size:.67rem}.diagnostic-stage b{margin-top:2px;color:var(--primary);font-size:.6rem}.diagnostic-stage small,.diagnostic-stage p{margin:2px 0 0;color:var(--muted);font-size:.52rem;line-height:1.35}.diagnostic-stage.state-warning{border-color:var(--warning);border-left-color:var(--warning);background:var(--warning-soft)}.diagnostic-stage.state-warning b{color:#76500a}.diagnostic-stage.state-communicationlost,.diagnostic-stage.state-offline{border-color:var(--critical);border-left-color:var(--critical);background:var(--critical-soft)}.diagnostic-stage.state-communicationlost b,.diagnostic-stage.state-offline b{color:var(--critical)}.diagnostic-link{display:flex;align-items:center;justify-content:center;gap:3px;flex:0 0 74px;color:var(--primary);text-align:center}.diagnostic-link>span{font-size:1.15rem}.diagnostic-link small{font-size:.46rem;line-height:1.2}.diagnostic-link.state-stopped{color:var(--critical)}.diagnostic-link.state-delayed{color:#80580c}
.diagnostics-primary-grid{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(270px,.7fr);gap:12px}.diagnostics-problems-toggle{display:flex;align-items:center;gap:6px;min-height:34px;font-size:.61rem;font-weight:750}.diagnostics-problems-toggle input{width:18px;height:18px;accent-color:var(--primary)}.diagnostic-filters{display:flex;gap:5px;overflow-x:auto;padding-bottom:5px}.diagnostic-filters button{flex:0 0 auto;min-height:36px;padding:6px 9px;border:1px solid var(--border);border-radius:8px;background:#fff;font-size:.58rem;font-weight:750}.diagnostic-filters button.active{border-color:var(--primary);background:var(--primary);color:#fff}.diagnostic-issue-list{display:grid;gap:7px}.diagnostic-issue{display:grid;grid-template-columns:86px minmax(0,1fr) minmax(155px,.38fr) 70px;align-items:center;gap:10px;width:100%;min-width:0;padding:10px;border:1px solid var(--border);border-left:5px solid var(--warning);border-radius:10px;background:#fff;color:var(--text);text-align:left}.diagnostic-issue:hover,.diagnostic-issue:focus-visible{border-color:var(--primary);box-shadow:0 6px 15px rgba(15,91,65,.11)}.diagnostic-issue.severity-error{border-color:var(--critical);border-left-color:var(--critical);background:var(--critical-soft)}.diagnostic-issue.severity-warning{border-color:var(--warning);border-left-color:var(--warning);background:var(--warning-soft)}.diagnostic-issue.severity-information{border-left-color:#2775a8;background:#f3f9fd}.diagnostic-issue__severity{font-size:.58rem;font-weight:900;text-transform:uppercase}.diagnostic-issue__body,.diagnostic-issue__impact{display:flex;flex-direction:column;min-width:0}.diagnostic-issue__body strong{font-size:.68rem}.diagnostic-issue__body small,.diagnostic-issue__impact small{color:var(--muted);font-size:.51rem}.diagnostic-issue__body p{margin:3px 0 0;font-size:.57rem;line-height:1.35}.diagnostic-issue__impact b{font-size:.58rem}.diagnostic-issue__open{color:var(--primary);font-size:.55rem;font-weight:800}.diagnostic-empty{display:flex;flex-direction:column;gap:3px;padding:20px;border:1px dashed #a8c8bb;border-radius:10px;background:#f5fbf8;text-align:center}.diagnostic-empty strong{font-size:.7rem}.diagnostic-empty span{color:var(--muted);font-size:.58rem}
.diagnostic-quality-counts{display:grid;grid-template-columns:1fr 1fr;gap:6px}.diagnostic-quality-counts button{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:46px;padding:8px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text);text-align:left}.diagnostic-quality-counts button:hover,.diagnostic-quality-counts button:focus-visible{border-color:var(--primary);background:var(--primary-soft)}.diagnostic-quality-counts span{font-size:.56rem}.diagnostic-quality-counts strong{font-size:.85rem}.diagnostic-quality-summary>p{margin:9px 0 0;color:var(--muted);font-size:.52rem;line-height:1.4}
.diagnostic-operations-grid{display:grid;grid-template-columns:1.05fr .8fr 1.05fr;gap:8px}.diagnostic-operations-grid article{padding:10px;border:1px solid var(--border);border-radius:10px;background:var(--surface-soft)}.diagnostic-operations-grid article.state-offline,.diagnostic-operations-grid article.state-paused{border-color:var(--critical);background:var(--critical-soft)}.diagnostic-operations-grid article.state-retrying,.diagnostic-operations-grid article.state-pending{border-color:var(--warning);background:var(--warning-soft)}.diagnostic-operations-grid h4{margin:0 0 7px;font-size:.7rem}.diagnostic-operations-grid dl{display:grid;grid-template-columns:1fr 1fr;margin:0}.diagnostic-operations-grid dl>div{min-width:0;padding:6px;border-top:1px solid var(--border)}.diagnostic-operations-grid dt{color:var(--muted);font-size:.49rem}.diagnostic-operations-grid dd{overflow-wrap:anywhere;margin:2px 0 0;font-size:.56rem;font-weight:750}
.diagnostic-technical{padding:0;overflow:hidden}.diagnostic-technical>summary{display:flex;justify-content:space-between;gap:10px;padding:12px 14px;cursor:pointer;font-size:.72rem;font-weight:850}.diagnostic-technical>summary span{color:var(--muted);font-size:.55rem}.diagnostic-technical__toolbar{display:grid;grid-template-columns:1.5fr repeat(5,minmax(110px,.65fr));gap:6px;padding:10px;border-top:1px solid var(--border);background:var(--surface-soft)}.diagnostic-technical__toolbar label{display:flex;flex-direction:column;gap:3px;min-width:0}.diagnostic-technical__toolbar span{color:var(--muted);font-size:.48rem;text-transform:uppercase}.diagnostic-technical__toolbar input,.diagnostic-technical__toolbar select{width:100%;min-width:0;min-height:38px;padding:6px 7px;border:1px solid var(--border);border-radius:7px;background:#fff;font-size:.58rem}.diagnostic-technical__table-wrap{overflow-x:auto}.diagnostic-technical table{width:100%;min-width:1130px;border-collapse:collapse}.diagnostic-technical th,.diagnostic-technical td{padding:8px;border-top:1px solid var(--border);vertical-align:top;text-align:left;font-size:.53rem}.diagnostic-technical thead th{background:#edf4f0;color:#345c4d;font-size:.49rem;text-transform:uppercase}.diagnostic-technical tbody tr.state-error{background:var(--critical-soft)}.diagnostic-technical tbody tr.state-warning{background:var(--warning-soft)}.diagnostic-technical tbody strong,.diagnostic-technical tbody small{display:block}.diagnostic-technical tbody small{margin-top:2px;color:var(--muted);font-size:.47rem;line-height:1.35}.diagnostic-technical code{overflow-wrap:anywhere;font-size:.5rem}.diagnostic-technical>p{margin:0;padding:9px 12px;border-top:1px solid var(--border);color:var(--muted);font-size:.5rem;text-align:center}
.diagnostics-demo-tools{margin-top:12px;padding:10px 12px;border:1px dashed #adc8bc;border-radius:10px;background:#f6faf8}.diagnostics-demo-tools summary{cursor:pointer;font-size:.65rem;font-weight:800}.diagnostics-demo-tools label{display:flex;align-items:center;gap:10px;margin-top:9px;font-size:.58rem}.diagnostics-demo-tools select{min-width:300px;min-height:40px;padding:6px 8px;border:1px solid var(--border);border-radius:8px;background:#fff}.diagnostics-demo-tools p{margin:7px 0 0;color:var(--muted);font-size:.52rem}.diagnostic-issue-detail__summary{display:flex;flex-direction:column;gap:3px;padding:12px;border:1px solid var(--warning);border-left:5px solid var(--warning);border-radius:9px;background:var(--warning-soft)}.diagnostic-issue-detail__summary.severity-error{border-color:var(--critical);background:var(--critical-soft)}.diagnostic-issue-detail__summary strong{font-size:.74rem}.diagnostic-issue-detail__summary span{color:var(--muted);font-size:.55rem}.diagnostic-issue-detail__summary p{margin:4px 0 0;font-size:.62rem;line-height:1.45}.diagnostic-affected h3,.diagnostic-suggested-check h3{display:flex;justify-content:space-between;margin:12px 0 6px;font-size:.72rem}.diagnostic-affected h3 span{display:grid;place-items:center;min-width:23px;height:23px;border-radius:50%;background:var(--primary-soft);color:var(--primary);font-size:.57rem}.diagnostic-affected>div{display:grid;gap:5px;max-height:240px;overflow:auto}.diagnostic-affected a{display:flex;justify-content:space-between;gap:8px;min-height:42px;padding:8px;border:1px solid var(--border);border-radius:8px;color:var(--text);text-decoration:none}.diagnostic-affected a:hover,.diagnostic-affected a:focus-visible{border-color:var(--primary);background:var(--primary-soft)}.diagnostic-affected a strong{font-size:.6rem}.diagnostic-affected a small{color:var(--muted);font-size:.5rem;text-align:right}.diagnostic-suggested-check{padding:10px;border:1px solid #b8d3c8;border-radius:9px;background:#f5faf7}.diagnostic-suggested-check h3{margin-top:0}.diagnostic-suggested-check p{margin:0;font-size:.6rem;line-height:1.45}.diagnostic-context-links{display:grid;grid-template-columns:repeat(3,1fr);gap:5px;margin-top:9px}.diagnostic-context-links a,.diagnostic-technical-button{display:grid;place-items:center;min-height:44px;padding:7px;border:1px solid var(--primary);border-radius:8px;background:#fff;color:var(--primary);font-size:.56rem;font-weight:800;text-align:center;text-decoration:none}.diagnostic-context-links a:hover,.diagnostic-context-links a:focus-visible,.diagnostic-technical-button:hover,.diagnostic-technical-button:focus-visible{background:var(--primary);color:#fff}.diagnostic-technical-button{width:100%;margin-top:6px;cursor:pointer}
@media(max-width:1280px){.diagnostics-heading{grid-template-columns:1fr}.diagnostics-state-strip{width:100%}.diagnostic-flow__stages{gap:4px}.diagnostic-link{flex-basis:52px}.diagnostic-link small{display:none}.diagnostics-primary-grid{grid-template-columns:1fr}.diagnostic-quality-counts{grid-template-columns:repeat(4,1fr)}.diagnostic-technical__toolbar{grid-template-columns:repeat(3,1fr)}}
@media(max-width:820px){.diagnostic-flow__stages{display:grid;grid-template-columns:1fr}.diagnostic-link{min-height:38px;flex-basis:auto;transform:none}.diagnostic-link>span{transform:rotate(90deg)}.diagnostic-link small{display:block}.diagnostic-operations-grid{grid-template-columns:1fr}.diagnostic-issue{grid-template-columns:72px minmax(0,1fr);align-items:start}.diagnostic-issue__impact{grid-column:2}.diagnostic-issue__open{grid-column:2}.diagnostic-technical__toolbar{grid-template-columns:1fr 1fr}.diagnostic-technical__table-wrap{overflow:visible}.diagnostic-technical table,.diagnostic-technical tbody,.diagnostic-technical tr,.diagnostic-technical th,.diagnostic-technical td{display:block;min-width:0;width:100%}.diagnostic-technical thead{display:none}.diagnostic-technical tbody{display:grid;gap:8px;padding:8px}.diagnostic-technical tbody tr{padding:8px;border:1px solid var(--border);border-left:4px solid var(--primary);border-radius:9px}.diagnostic-technical tbody tr.state-error{border-left-color:var(--critical)}.diagnostic-technical tbody tr.state-warning{border-left-color:var(--warning)}.diagnostic-technical th,.diagnostic-technical td{display:grid;grid-template-columns:98px minmax(0,1fr);gap:7px;padding:6px;border-top:1px solid var(--border)}.diagnostic-technical th:before,.diagnostic-technical td:before{content:attr(data-label);color:var(--muted);font-size:.48rem;text-transform:uppercase}.diagnostic-technical th:before{content:"Pomiar"}}
@media(max-width:620px){.diagnostics-heading{margin-top:8px}.diagnostics-heading h2{font-size:1.2rem}.diagnostics-state-strip{grid-template-columns:1fr 1fr}.diagnostics-state-strip>span:nth-child(2){border-right:0}.diagnostics-state-strip>span:nth-child(-n+2){border-bottom:1px solid var(--border)}.diagnostic-flow,.diagnostic-issues,.diagnostic-quality-summary,.diagnostic-operations{padding:10px}.diagnostic-flow>header,.diagnostic-issues>header{display:grid}.diagnostic-quality-counts{grid-template-columns:1fr 1fr}.diagnostic-issue{grid-template-columns:1fr;gap:5px}.diagnostic-issue__impact,.diagnostic-issue__open{grid-column:1}.diagnostic-issue__severity{width:max-content}.diagnostic-technical__toolbar{grid-template-columns:1fr}.diagnostics-demo-tools label{align-items:stretch;flex-direction:column}.diagnostics-demo-tools select{width:100%;min-width:0;min-height:44px}.diagnostic-context-links{grid-template-columns:1fr}.diagnostic-affected a{align-items:flex-start;flex-direction:column}.diagnostic-affected a small{text-align:left}}
@media(min-width:621px){.climate-diagnostics-page{width:calc(100% - 16px)}}
@media(min-width:1451px){.operator-page.climate-diagnostics-page{width:min(calc(100vw - 400px),1360px)!important;max-width:1360px!important}}
@media(prefers-reduced-motion:reduce){.diagnostic-stage,.diagnostic-link,.diagnostic-issue{transition:none!important}}
.diagnostic-technical__toolbar{grid-template-columns:1.5fr repeat(6,minmax(110px,.65fr))}
@media(max-width:1280px){.diagnostic-technical__toolbar{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:820px){.diagnostic-technical__toolbar{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:620px){.diagnostic-technical__toolbar{grid-template-columns:minmax(0,1fr)}}

/* DEMO-UI-018: local-only climate strategy editor. */
.strategy-settings-page{overflow-x:hidden}.strategy-demo-banner{display:flex;align-items:center;justify-content:space-between;gap:14px;margin:10px 0;padding:10px 13px;border:1px solid #a7cbbc;border-radius:12px;background:#f0faf5;box-shadow:var(--shadow)}.strategy-demo-banner>div{display:flex;align-items:center;gap:8px;min-width:0}.strategy-demo-banner i{width:9px;height:9px;border-radius:50%;background:var(--primary);box-shadow:0 0 0 4px #d8eee4}.strategy-demo-banner strong{font-size:.72rem}.strategy-demo-banner span{color:var(--muted);font-size:.62rem}.strategy-demo-banner label{display:flex;align-items:center;gap:7px;color:var(--muted);font-size:.54rem;font-weight:800;text-transform:uppercase}.strategy-demo-banner select{min-height:36px;padding:5px 26px 5px 8px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--text);font-size:.58rem;text-transform:none}
.strategy-empty-state{display:grid;justify-items:center;gap:8px;margin:20px 0;padding:54px 24px;border:1px dashed #9fc3b4;border-radius:16px;background:var(--surface);text-align:center;box-shadow:var(--shadow)}.strategy-empty-state h2{max-width:660px;margin:0;font-size:1.35rem}.strategy-empty-state p{max-width:680px;margin:0;color:var(--muted);font-size:.7rem;line-height:1.5}.strategy-empty-state .primary-link{min-height:42px;margin-top:5px;padding:11px 15px;border-radius:9px;background:var(--primary);color:#fff;font-size:.62rem;font-weight:850;text-decoration:none}
.strategy-heading{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin:12px 0}.strategy-heading h2{margin:3px 0;font-size:1.42rem}.strategy-heading p{margin:0;color:var(--muted);font-size:.65rem}.strategy-source-state{display:flex;flex-direction:column;align-items:flex-end;gap:2px;text-align:right}.strategy-source-state>span{display:flex;align-items:center;gap:6px;color:var(--primary);font-size:.57rem;font-weight:850;text-transform:uppercase}.strategy-source-state i{width:7px;height:7px;border-radius:50%;background:var(--primary)}.strategy-source-state strong{font-size:.7rem}.strategy-source-state small{color:var(--muted);font-size:.5rem}
.strategy-now-strip{display:grid;grid-template-columns:100px repeat(7,minmax(0,1fr));margin-bottom:12px;border:1px solid var(--border);border-radius:13px;background:var(--surface);box-shadow:var(--shadow);overflow:hidden}.strategy-now-strip h3,.strategy-now-strip article{display:flex;flex-direction:column;justify-content:center;min-width:0;min-height:62px;padding:9px 10px;border-right:1px solid var(--border)}.strategy-now-strip article:last-child{border:0}.strategy-now-strip h3{margin:0;background:var(--primary);color:#fff}.strategy-now-strip h3 span{font-size:.8rem}.strategy-now-strip h3 small{font-size:.49rem;opacity:.8}.strategy-now-strip article span{color:var(--muted);font-size:.48rem;text-transform:uppercase}.strategy-now-strip article strong{margin-top:3px;font-size:.72rem;white-space:nowrap}.strategy-now-strip article small{margin-top:2px;color:var(--muted);font-size:.46rem;line-height:1.25}
.strategy-workspace{display:grid;grid-template-columns:minmax(0,2.25fr) minmax(340px,1fr);align-items:start;gap:12px}.strategy-editor,.strategy-result-panel,.strategy-influences{border:1px solid var(--border);border-radius:15px;background:var(--surface);box-shadow:var(--shadow)}.strategy-editor{min-width:0;padding:12px}.strategy-mode-switch{display:flex;width:max-content;margin:0 0 9px;padding:3px;border-radius:10px;background:#eaf2ee}.strategy-mode-switch button{min-height:36px;padding:7px 14px;border:0;border-radius:8px;background:transparent;color:#44675a;font-size:.6rem;font-weight:850}.strategy-mode-switch button.active{background:var(--primary);color:#fff;box-shadow:0 3px 8px rgba(15,91,65,.18)}
.strategy-profile-chart{border:1px solid var(--border);border-radius:12px;background:#fbfdfc;overflow:hidden}.strategy-profile-chart__header{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-bottom:1px solid var(--border)}.strategy-profile-chart__header h3{margin:2px 0 0;font-size:.9rem}.strategy-chart-legend{display:flex;gap:10px;color:var(--muted);font-size:.5rem}.strategy-chart-legend span{display:flex;align-items:center;gap:4px}.strategy-chart-legend i{display:block;width:18px;border-top:2px solid var(--primary)}.strategy-chart-legend i.draft{border-top-style:dashed}.strategy-chart-legend i.transition{width:7px;height:7px;border:2px solid #c97e2c;border-radius:2px}.strategy-chart-scroll{width:100%;overflow:hidden}.strategy-profile-chart svg{display:block;width:100%;min-width:620px;height:auto;touch-action:none;user-select:none}.strategy-grid line{stroke:#dce8e2;stroke-width:1}.strategy-grid text{fill:#73857d;font-size:12px;text-anchor:middle}.strategy-grid .now{stroke:#cf8a31;stroke-width:1.5;stroke-dasharray:4 4}.strategy-grid .now-label{fill:#98611d;font-size:11px;text-anchor:start}.profile-lane .lane-title{fill:#193c31;font-size:14px;font-weight:800}.profile-lane .lane-unit{fill:#6f8179;font-size:12px;text-anchor:end}.profile-source,.profile-draft{fill:none;stroke-width:3;stroke-linejoin:round;stroke-linecap:round}.profile-source.temperature{stroke:#cf873a}.profile-draft.temperature{stroke:#a75e19;stroke-dasharray:7 5;opacity:0}.profile-source.humidity{stroke:#2b9e91}.profile-draft.humidity{stroke:#08766e;stroke-dasharray:7 5;opacity:0}.profile-draft.changed{opacity:1}.selected-segment{stroke-width:8;opacity:.17}.selected-segment.temperature{stroke:#c56f20}.selected-segment.humidity{stroke:#08766e}.strategy-chart-point{cursor:grab;outline:none}.strategy-chart-point:active{cursor:grabbing}.strategy-chart-point .point-dot{fill:#fff;stroke-width:3}.temperature-lane .point-dot{stroke:#c56f20}.humidity-lane .point-dot{stroke:#087f76}.strategy-chart-point .focus-ring{fill:transparent;stroke:transparent;stroke-width:3}.strategy-chart-point.selected .focus-ring,.strategy-chart-point:focus-visible .focus-ring{stroke:#0f5b41}.strategy-chart-point.editing .focus-ring{fill:#dff2e9;stroke:#0f5b41}.gradient-mark{fill:none;stroke:#c56f20;stroke-width:2}.point-tooltip rect{fill:#123e31;filter:drop-shadow(0 3px 5px rgba(0,0,0,.2))}.point-tooltip text{fill:#fff;font-size:12px}.humidity-lane.muted{opacity:.38}.profile-disabled-label{fill:#634b12;font-size:13px;font-weight:800;text-anchor:middle}.strategy-chart-note{margin:0;padding:8px 12px;border-top:1px solid var(--border);color:var(--muted);font-size:.5rem;line-height:1.4}.strategy-chart-note strong{color:var(--text)}
.strategy-points{margin-top:10px}.strategy-points>header{display:flex;align-items:end;justify-content:space-between;gap:10px;margin-bottom:7px}.strategy-points h3{margin:2px 0 0;font-size:.9rem}.point-count{padding:4px 8px;border-radius:999px;background:#edf5f1;color:var(--primary);font-size:.52rem;font-weight:800}.strategy-points-table{display:grid;gap:5px}.strategy-points-head,.strategy-point-row{display:grid;align-items:center;gap:7px}.temperature-points .strategy-points-head,.temperature-points .strategy-point-row{grid-template-columns:52px minmax(110px,.75fr) minmax(140px,1fr) minmax(120px,.8fr) minmax(130px,.9fr)}.humidity-points .strategy-points-head,.humidity-points .strategy-point-row{grid-template-columns:52px minmax(120px,.8fr) minmax(150px,1fr) minmax(140px,.9fr)}.strategy-points-head{padding:0 8px;color:var(--muted);font-size:.48rem;text-transform:uppercase}.strategy-point-row{position:relative;min-height:46px;padding:5px 7px;border:1px solid var(--border);border-left:4px solid transparent;border-radius:9px;background:#fff}.strategy-point-row.selected{border-color:#77ae98;border-left-color:var(--primary);background:#f3faf6}.strategy-point-row.has-error{border-color:var(--critical);border-left-color:var(--critical);background:var(--critical-soft)}.point-index{display:grid;place-items:center;width:34px;height:34px;border:1px solid #9bc3b3;border-radius:50%;background:#fff;color:var(--primary);font-size:.63rem;font-weight:900}.strategy-point-row label{display:flex;align-items:center;gap:6px;min-width:0}.strategy-point-row label>span:first-child{display:none}.strategy-point-row input,.humidity-profile-controls input,.characteristic-fields input,.remaining-influences input{width:100%;min-width:0;min-height:34px;padding:6px 8px;border:1px solid var(--border);border-radius:7px;background:#fff;color:var(--text);font-size:.62rem}.strategy-point-row input[aria-invalid=true],.humidity-profile-controls input[aria-invalid=true]{border-color:var(--critical);box-shadow:0 0 0 2px rgba(178,51,43,.1)}.input-unit{display:grid!important;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:5px;width:100%}.input-unit b{color:var(--muted);font-size:.52rem}.point-state{min-width:0}.state-pill{display:inline-flex;align-items:center;min-height:26px;padding:4px 7px;border-radius:999px;background:#edf4f0;color:#466257;font-size:.49rem;font-weight:800;white-space:nowrap}.state-pill.dirty{background:#fff2d5;color:#754e06}.state-pill.error{background:#f9dedd;color:#9f2b25}.point-issues{display:contents}.point-issues span{grid-column:2/-1;color:#76500a;font-size:.5rem}.point-issues span.error{color:var(--critical)}.humidity-profile-controls{display:grid;grid-template-columns:minmax(160px,1.2fr) auto minmax(130px,.8fr) minmax(150px,.9fr);align-items:end;gap:8px;margin-bottom:8px;padding:9px;border-radius:10px;background:#f3f8f5}.humidity-profile-controls>div{display:flex;flex-direction:column}.humidity-profile-controls strong{font-size:.62rem}.humidity-profile-controls span{color:var(--muted);font-size:.5rem}.humidity-profile-controls label{display:flex;flex-direction:column;gap:3px}.strategy-switch{display:flex;align-items:center;gap:6px;min-height:38px;padding:5px 8px;border:1px solid var(--border);border-radius:9px;background:#fff}.strategy-switch i{position:relative;width:30px;height:17px;border-radius:999px;background:#9ba9a3}.strategy-switch i:after{content:"";position:absolute;top:2px;left:2px;width:13px;height:13px;border-radius:50%;background:#fff}.strategy-switch.on i{background:var(--primary)}.strategy-switch.on i:after{left:15px}.strategy-switch span{font-size:.54rem;font-weight:800}
.strategy-result-panel{position:sticky;top:10px;overflow:hidden}.strategy-result-panel>header{padding:13px;border-bottom:1px solid var(--border)}.strategy-result-panel h3{margin:2px 0 0;font-size:1rem}.source-result,.draft-result{padding:13px;border-bottom:1px solid var(--border)}.source-result h4,.draft-result h4{margin:0;font-size:.72rem}.source-result>p,.draft-result>p{margin:4px 0 9px;color:var(--muted);font-size:.52rem;line-height:1.4}.source-result dl,.draft-result dl{margin:0}.source-result dl>div,.draft-result dl>div{display:flex;align-items:center;justify-content:space-between;gap:9px;min-height:35px;border-bottom:1px solid #edf2ef}.source-result dt,.draft-result dt{color:var(--muted);font-size:.54rem}.source-result dd,.draft-result dd{margin:0;font-size:.66rem;font-weight:850}.source-result>small{display:block;margin-top:8px;color:var(--muted);font-size:.48rem}.draft-result{background:#f5f8f7}.draft-result.visible{border-left:4px dashed #c17a2d;background:#fff9eb}.draft-result>strong{display:block;margin:3px 0 6px;color:#855714;font-size:.56rem}.preview-caveat{padding:7px;border-radius:7px;background:#fff0ca;color:#6f4a08!important}.strategy-result-provenance{display:grid;grid-template-columns:72px 1fr;gap:4px 8px;padding:12px}.strategy-result-provenance span{color:var(--muted);font-size:.49rem}.strategy-result-provenance strong{overflow-wrap:anywhere;font-size:.52rem}
.strategy-influences{margin-top:12px;overflow:hidden}.strategy-influences>summary{display:flex;align-items:center;justify-content:space-between;gap:10px;min-height:58px;padding:11px 14px;cursor:pointer;list-style:none}.strategy-influences>summary::-webkit-details-marker{display:none}.strategy-influences>summary>span{display:flex;flex-direction:column}.strategy-influences>summary strong{font-size:.78rem}.strategy-influences>summary small{color:var(--muted);font-size:.53rem}.influence-grid{display:grid;grid-template-columns:1fr 1fr .8fr;gap:9px;padding:0 12px 12px}.characteristic-card,.remaining-influences{min-width:0;padding:11px;border:1px solid var(--border);border-radius:11px;background:#fbfdfc}.characteristic-card>header{display:flex;align-items:start;justify-content:space-between;gap:8px}.characteristic-card h4,.remaining-influences h4{margin:0;font-size:.7rem}.characteristic-card p{margin:3px 0 0;color:var(--muted);font-size:.48rem}.characteristic-card output{display:flex;flex-direction:column;text-align:right}.characteristic-card output span{color:var(--muted);font-size:.45rem}.characteristic-card output strong{font-size:.66rem}.characteristic-card svg{display:block;width:100%;height:90px}.characteristic-card svg line{stroke:#9eb7ac;stroke-width:1}.characteristic-card svg .characteristic-line{stroke:var(--primary);stroke-width:3}.characteristic-card svg circle{fill:#fff;stroke:var(--primary);stroke-width:2}.characteristic-card svg text{fill:#75877f;font-size:10px}.characteristic-fields{display:grid;grid-template-columns:1fr 1fr;gap:6px}.characteristic-fields label{display:grid;grid-template-columns:1fr 62px auto;align-items:center;gap:4px;color:var(--muted);font-size:.47rem}.characteristic-fields b{font-size:.47rem}.remaining-influences dl{margin:8px 0 0}.remaining-influences dl>div{display:flex;align-items:center;justify-content:space-between;gap:8px;min-height:39px;border-top:1px solid var(--border)}.remaining-influences dt{color:var(--muted);font-size:.5rem}.remaining-influences dd{margin:0;text-align:right;font-size:.54rem;font-weight:750}.remaining-influences input{display:inline-block;width:58px;min-height:32px}
.strategy-actionbar{position:sticky;z-index:12;bottom:8px;display:flex;align-items:center;justify-content:space-between;gap:12px;margin-top:12px;padding:10px 12px;border:1px solid #8fbaa8;border-radius:13px;background:rgba(248,252,250,.97);box-shadow:0 12px 32px rgba(15,65,48,.2);backdrop-filter:blur(8px)}.strategy-actionbar>div{display:flex;flex-direction:column}.strategy-actionbar strong{font-size:.68rem}.strategy-actionbar span{color:var(--muted);font-size:.52rem}.strategy-actionbar>div:last-child{flex-direction:row;gap:7px}.strategy-actionbar button,.strategy-summary-dialog button{min-height:40px;padding:8px 12px;border:1px solid var(--border);border-radius:8px;background:#fff;font-size:.57rem;font-weight:850}.strategy-actionbar .primary,.strategy-summary-dialog .primary{border-color:var(--primary);background:var(--primary);color:#fff}.strategy-actionbar button:disabled,.strategy-summary-dialog button:disabled{cursor:not-allowed;opacity:.45}
.strategy-dialog-backdrop{position:fixed;z-index:60;inset:0;display:grid;place-items:center;padding:20px;background:rgba(3,30,21,.48)}.strategy-summary-dialog{display:flex;flex-direction:column;width:min(720px,100%);max-height:min(760px,calc(100vh - 40px));padding:16px;border-radius:15px;background:#fff;box-shadow:0 25px 70px rgba(0,0,0,.3);overflow:auto}.strategy-summary-dialog>header{display:flex;align-items:start;justify-content:space-between;gap:12px}.strategy-summary-dialog h2{margin:2px 0;font-size:1.25rem}.dialog-close{display:grid;place-items:center;width:42px;padding:0!important;font-size:1.25rem!important}.strategy-summary-dialog>p{margin:8px 0;font-size:.62rem}.strategy-summary-list{display:grid;gap:5px}.strategy-summary-list article{display:grid;grid-template-columns:minmax(180px,1fr) 1fr;gap:10px;padding:9px;border:1px solid var(--border);border-left:4px solid #c8802f;border-radius:8px;background:#fffaf0}.strategy-summary-list strong{font-size:.57rem}.strategy-summary-list span{font-size:.57rem}.strategy-summary-list b{padding:0 5px;color:#a5631f}.summary-validation{margin-top:10px;padding:9px;border-radius:9px;background:#f7f8f7}.summary-validation h3{margin:0 0 6px;font-size:.68rem}.summary-validation p{margin:4px 0;font-size:.55rem}.summary-validation p.error{color:var(--critical)}.summary-validation p.warning{color:#76500a}.summary-safety{padding:9px;border:1px solid #a7cbbb;border-radius:8px;background:#eff8f3;color:#214f3e}.strategy-summary-dialog>footer{display:flex;justify-content:flex-end;gap:7px;margin-top:12px}.strategy-summary-dialog .danger-quiet{border-color:#d89b96;color:var(--critical)}
.strategy-settings-page button:focus-visible,.strategy-settings-page a:focus-visible,.strategy-settings-page input:focus-visible,.strategy-settings-page select:focus-visible,.strategy-settings-page summary:focus-visible{outline:3px solid #d69a43;outline-offset:2px}
@media(max-width:1280px){.strategy-now-strip{grid-template-columns:90px repeat(4,1fr)}.strategy-now-strip article:nth-of-type(4){border-right:0}.strategy-now-strip h3,.strategy-now-strip article{border-bottom:1px solid var(--border)}.strategy-workspace{grid-template-columns:minmax(0,1.75fr) minmax(320px,.85fr)}.influence-grid{grid-template-columns:1fr 1fr}.remaining-influences{grid-column:1/-1}.characteristic-fields label{grid-template-columns:1fr 54px auto}}
@media(max-width:980px){.strategy-workspace{grid-template-columns:1fr}.strategy-result-panel{position:static}.strategy-now-strip{grid-template-columns:90px repeat(3,1fr)}.strategy-now-strip article:nth-of-type(3),.strategy-now-strip article:nth-of-type(6){border-right:0}.strategy-result-panel{display:grid;grid-template-columns:1fr 1fr}.strategy-result-panel>header,.strategy-result-provenance{grid-column:1/-1}.source-result{border-right:1px solid var(--border)}}
@media(max-width:720px){.strategy-demo-banner,.strategy-heading{align-items:stretch;flex-direction:column}.strategy-demo-banner>div{align-items:flex-start;flex-wrap:wrap}.strategy-demo-banner label{align-items:stretch;flex-direction:column}.strategy-demo-banner select{width:100%;min-height:44px}.strategy-source-state{align-items:flex-start;text-align:left}.strategy-heading h2{font-size:1.15rem}.strategy-now-strip{grid-template-columns:1fr 1fr}.strategy-now-strip h3{grid-column:1/-1;min-height:48px}.strategy-now-strip h3,.strategy-now-strip article{border-right:1px solid var(--border)}.strategy-now-strip article:nth-child(odd){border-right:0}.strategy-editor{padding:8px}.strategy-mode-switch{display:grid;grid-template-columns:repeat(3,1fr);width:100%}.strategy-mode-switch button{min-height:44px;padding:7px 4px}.strategy-profile-chart__header{align-items:flex-start;flex-direction:column}.strategy-chart-scroll{overflow-x:auto;overscroll-behavior-x:contain}.strategy-profile-chart svg{min-width:680px}.strategy-points-head{display:none}.temperature-points .strategy-point-row,.humidity-points .strategy-point-row{grid-template-columns:44px 1fr 1fr}.strategy-point-row{align-items:end;min-height:0;padding:8px}.strategy-point-row label{align-items:stretch;flex-direction:column;gap:3px}.strategy-point-row label>span:first-child{display:block;color:var(--muted);font-size:.46rem;text-transform:uppercase}.strategy-point-row input{min-height:44px}.point-index{align-self:center;width:40px;height:40px;grid-row:1/3}.temperature-points .strategy-point-row label:nth-of-type(3),.temperature-points .strategy-point-row .point-state,.humidity-points .strategy-point-row .point-state{grid-column:2/4}.point-state{padding-top:3px}.state-pill{min-height:30px}.point-issues span{grid-column:2/4}.humidity-profile-controls{grid-template-columns:1fr 1fr}.humidity-profile-controls>div{grid-column:1/-1}.humidity-profile-controls input{min-height:44px}.strategy-result-panel{display:block}.source-result{border-right:0}.strategy-influences>summary{align-items:flex-start;flex-direction:column}.influence-grid{grid-template-columns:1fr}.remaining-influences{grid-column:auto}.characteristic-fields label{grid-template-columns:1fr 70px auto}.strategy-actionbar{position:static;align-items:stretch;flex-direction:column}.strategy-actionbar>div:last-child{display:grid;grid-template-columns:1fr 1fr}.strategy-actionbar button{min-height:44px}.strategy-summary-dialog{height:calc(100vh - 20px);max-height:none;padding:12px}.strategy-summary-list article{grid-template-columns:1fr}.strategy-summary-dialog>footer{display:grid;grid-template-columns:1fr}.strategy-summary-dialog>footer button{min-height:44px}}

/* DEMO-UI-018A: wspólna czytelność dobowych edytorów i brak powielonej nawigacji. */
.strategy-value-grid{stroke:#dce8e2;stroke-width:1}.strategy-value-label{fill:#657970;font-size:10px;font-weight:750}.strategy-context-link{align-self:center;color:var(--primary);font-size:.62rem;font-weight:800;white-space:nowrap}.program-kind-select{display:none}.program-chart__point-nav{display:none}.program-runtime-summary{padding:10px 12px}.program-runtime-grid article{min-height:58px}.program-runtime-summary>p{font-size:.61rem}.program-chart__now-label{font-size:12px}.program-chart__state-summary{margin-top:6px}.program-chart__legend{margin-top:2px}.program-chart__selection{font-variant-numeric:tabular-nums}.program-summary-dialog{max-width:760px}
@media(max-width:600px){.program-type-tabs{display:none}.program-kind-select{display:flex;flex-direction:column;gap:4px;margin-bottom:8px;color:#40564b;font-size:.62rem;font-weight:800}.program-kind-select select{min-height:44px;padding:7px 10px;border:1px solid #9fb4aa;border-radius:8px;background:#fff;color:#183c31;font:inherit}.program-chart__point-nav{display:flex}.program-points-section{display:block}.program-runtime-grid article{min-height:70px}.strategy-context-link{align-self:flex-start}.strategy-value-label{font-size:12px}}
@media(max-width:420px){.strategy-settings-page{width:100%!important}.strategy-now-strip article strong{font-size:.66rem}.strategy-chart-legend{flex-wrap:wrap}.strategy-points>header{align-items:flex-start;flex-direction:column}.temperature-points .strategy-point-row,.humidity-points .strategy-point-row{grid-template-columns:42px minmax(0,1fr)}.strategy-point-row .point-index{grid-row:auto}.strategy-point-row label,.temperature-points .strategy-point-row label:nth-of-type(3),.temperature-points .strategy-point-row .point-state,.humidity-points .strategy-point-row .point-state,.point-issues span{grid-column:2}.humidity-profile-controls{grid-template-columns:1fr}.humidity-profile-controls>*{grid-column:1!important}.strategy-actionbar>div:last-child{grid-template-columns:1fr}.characteristic-fields{grid-template-columns:1fr}.strategy-result-panel dl>div{min-height:42px}}

/* DEMO-UI-018B — wspólny język wizualny dobowych profili Nastaw i Programów */
.daily-program-chart{--daily-source:#cf873a;--daily-draft:#a75e19;--daily-accent:#c56f20;--daily-accent-soft:#fff4e8}.daily-program-chart--humidity{--daily-source:#2b9e91;--daily-draft:#08766e;--daily-accent:#087f76;--daily-accent-soft:#e9f7f4}.daily-program-chart--supplemental{--daily-source:#c96d42;--daily-draft:#9f4527;--daily-accent:#b85832;--daily-accent-soft:#fff0ea}.daily-program-chart--vegetative{--daily-source:#6c8e4b;--daily-draft:#486d2a;--daily-accent:#5b7f38;--daily-accent-soft:#f0f6e9}.daily-program-legend{font-variant-numeric:tabular-nums}.daily-program-chart .program-chart__grid,.daily-program-chart .program-chart__x-grid,.daily-program-chart .strategy-value-grid,.daily-program-chart .strategy-grid line{stroke:#dce8e2;stroke-width:1}.daily-program-chart .program-chart__x-label,.daily-program-chart .program-chart__y-label,.daily-program-chart .program-chart__axis-title,.daily-program-chart .strategy-value-label,.daily-program-chart .strategy-grid text{fill:#657970;font-weight:650}.daily-program-chart .program-chart__now,.daily-program-chart .strategy-grid .now{stroke:#cf8a31;stroke-width:1.5;stroke-dasharray:4 4}.daily-program-chart .program-chart__now-label,.daily-program-chart .strategy-grid .now-label{fill:#98611d;font-weight:750}.daily-program-chart .program-line--confirmed{stroke:var(--daily-source)}.daily-program-chart .program-line--draft{stroke:var(--daily-draft)}.daily-program-chart .program-point__target{stroke:var(--daily-accent)}.daily-program-chart .program-point[aria-pressed=true] .program-point__target{fill:var(--daily-accent-soft)}.daily-program-chart .program-point__active-core{fill:var(--daily-accent)!important}.daily-program-chart .legend-line--confirmed{border-color:var(--daily-source)}.daily-program-chart .legend-line--draft{border-color:var(--daily-draft)}.daily-program-chart .legend-marker--target{border-color:var(--daily-accent)}
.climate-now-strip{font-variant-numeric:tabular-nums}.program-runtime-summary{margin-bottom:10px;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none}.strategy-now-strip.program-now-strip{grid-template-columns:90px repeat(auto-fit,minmax(135px,1fr));margin-bottom:0}.program-now-strip article{min-height:58px}.program-now-strip article strong{overflow:hidden;text-overflow:ellipsis}.program-now-strip__identity{background:#f4f8f6}.program-now-status{display:inline-block;width:7px;height:7px;margin-right:5px;border-radius:50%;background:#8d9b94}.program-now-status.is-active{background:#31815f}.program-now-status.is-inactive{background:#c18a32}.program-now-status.is-error{background:#b7433a}.program-runtime-note{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:5px 4px 0;color:#52645b;font-size:.58rem;line-height:1.4}.program-runtime-note a{color:var(--primary);font-weight:800;white-space:nowrap}.program-inactive-notice{margin:6px 0 0}
.program-chart{overflow:hidden;padding:0}.program-chart__header{padding:10px 12px;border-bottom:1px solid var(--border)}.program-chart__canvas{min-height:0;margin:0;padding:2px 10px 0;background:#fbfdfc}.program-chart svg{min-height:0}.program-chart__plot{fill:#fbfdfc;stroke:#dce8e2}.program-chart__state-summary{gap:12px;margin:0;padding:6px 12px;border-bottom:1px solid #e6ece8;background:#f7faf8}.program-chart__state-summary span,.program-point-operational span{padding:0;border:0;background:transparent!important;font-size:.53rem}.program-chart__state-summary .is-active,.program-chart__state-summary .is-selected,.program-chart__state-summary .is-next{color:#52645b}.program-chart__state-summary i{font-style:normal}.program-chart__selection{border:1px solid #d6e2dc;background:#f5f9f7;color:#365c4e}.program-chart__legend{margin:0;padding:8px 12px;border-top:1px solid var(--border);background:#fff}.program-chart__legend span{font-size:.54rem;font-weight:650}.program-chart__disclosure{margin:0;padding:7px 12px;border-top:1px solid #edf1ef;background:#fafcfb}.program-point .program-point__target{stroke-width:3}.program-point.program-point--mismatch .program-point__target{stroke-width:4}.program-point .program-point__selected-ring{stroke-width:2}.program-point .program-point__next-diamond{stroke-width:2}.program-point__state{font-size:13px!important}.program-point text{font-size:13px}.program-point__number{font-size:13px!important}.program-line--confirmed,.program-line--draft{stroke-width:2.5}
.program-workspace{grid-template-columns:minmax(0,2.15fr) minmax(260px,.72fr);gap:10px;align-items:start}.program-point-editor{padding:10px;box-shadow:none}.program-point-editor>header{display:grid;grid-template-columns:1fr auto;align-items:start;gap:2px 8px;padding-bottom:7px}.program-point-editor>header .eyebrow,.program-point-editor>header h3{grid-column:1}.program-point-editor>header>.point-status{grid-column:2;grid-row:1/3;margin:0}.program-point-operational{grid-column:1/-1;margin-top:3px}.program-point-fields{gap:6px;margin-top:7px}.program-point-fields>label{gap:3px;padding:6px;border-radius:7px;background:#fbfdfc}.program-point-fields input{height:34px;padding:5px 7px;font-size:.72rem}.program-point-fields>label>span{font-size:.6rem}.program-ramp-preview{padding:7px}.program-ramp-preview p{margin:3px 0;font-size:.6rem}.program-point-navigation{margin-top:8px;padding-top:7px;border-top:1px solid var(--border)}.program-point-navigation button{min-height:34px}.program-point-navigation span{font-size:.55rem}
.program-points-disclosure{padding:0;overflow:hidden}.program-points-disclosure>summary{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;cursor:pointer;list-style:none}.program-points-disclosure>summary::-webkit-details-marker{display:none}.program-points-disclosure>summary:before{content:'›';display:grid;place-items:center;width:22px;height:22px;flex:0 0 22px;border:1px solid #a8bbb1;border-radius:50%;color:var(--primary);font-size:1rem;font-weight:800;transition:transform .16s ease}.program-points-disclosure[open]>summary:before{transform:rotate(90deg)}.program-points-disclosure>summary>span:first-of-type{display:flex;flex:1;flex-direction:column}.program-points-disclosure>summary strong{font-size:.82rem}.program-points-disclosure>summary>span:last-child{color:var(--muted);font-size:.58rem}.program-points-disclosure .program-points-table-wrap{margin:0 10px 8px}.program-points-disclosure>p{margin:0;padding:0 12px 9px;color:var(--muted);font-size:.57rem}
.program-heating-settings{padding:10px 12px;box-shadow:none}.program-heating-settings>header{align-items:center;margin-bottom:7px}.program-heating-settings__grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px}.program-heating-settings__grid>label,.program-air-temperature-card,.program-result-readonly{min-height:70px;padding:7px 8px;border-radius:8px}.program-heating-settings__grid input[type=text],.program-heating-settings__grid input[type=time]{height:34px}.program-heating-settings__grid small{font-size:.54rem}.cooling-configuration{margin-top:10px;padding:12px;box-shadow:none}.cooling-configuration>header{margin-bottom:9px}.cooling-form-groups{gap:9px}.cooling-form-groups fieldset{padding:10px}.cooling-field-grid{gap:6px}.cooling-field-grid label{gap:4px;padding:7px;border-radius:8px}.cooling-field-grid input{min-height:36px;padding:6px 8px}
@media(max-width:1100px){.strategy-now-strip.program-now-strip{grid-template-columns:90px repeat(3,minmax(0,1fr))}.program-workspace{grid-template-columns:minmax(0,1.55fr) minmax(260px,.8fr)}}
@media(max-width:820px){.strategy-now-strip.program-now-strip{grid-template-columns:90px repeat(2,minmax(0,1fr))}.program-workspace{grid-template-columns:1fr}.program-runtime-note{align-items:flex-start;flex-direction:column}.program-point-editor{min-height:0}.program-heating-settings__grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:600px){.strategy-now-strip.program-now-strip{grid-template-columns:1fr 1fr}.strategy-now-strip.program-now-strip h3{grid-column:1/-1}.program-now-strip article{min-height:62px}.program-chart__header{padding:9px}.program-chart__state-summary{display:flex;overflow-x:auto;padding:7px 9px;white-space:nowrap}.program-chart__canvas{padding:0}.program-chart__x-label{font-size:20px}.program-chart__y-label,.program-chart__axis-title{font-size:17px}.program-chart__now-label{font-size:15px}.program-point text,.program-point__number{font-size:16px!important}.program-point__state{font-size:14px!important}.program-chart__legend{padding:8px 9px}.program-chart__legend span{flex:0 1 auto}.program-points-section{display:block}.program-points-disclosure>summary{align-items:flex-start}.program-points-disclosure>summary>span:last-child{text-align:right}.program-heating-settings__grid{grid-template-columns:1fr}}
@media(max-width:390px){.strategy-now-strip.program-now-strip{grid-template-columns:1fr}.strategy-now-strip.program-now-strip h3{grid-column:auto}.program-points-disclosure>summary{display:grid;grid-template-columns:auto 1fr}.program-points-disclosure>summary>span:last-child{grid-column:2;text-align:left}}
@media(prefers-reduced-motion:reduce){.strategy-settings-page *{scroll-behavior:auto!important;transition:none!important;animation:none!important}}
@media(min-width:621px){.strategy-settings-page{width:calc(100% - 16px)}}
@media(min-width:1451px){.operator-page.strategy-settings-page{width:min(calc(100vw - 400px),1420px)!important;max-width:1420px!important}}
.daily-program-chart--humidity .program-line--point-guide{stroke:var(--daily-source)}.daily-program-chart--humidity .program-chart__humidity-guide{stroke:#73bdb5}.daily-program-chart--humidity .program-chart__humidity-guide.is-draft{stroke:var(--daily-draft)}.program-points-disclosure .when-expanded{display:none}.program-points-disclosure[open] .when-collapsed{display:none}.program-points-disclosure[open] .when-expanded{display:inline}

/* DEMO-UI-019 — Climate Trends Workspace */
.climate-trends-page{--trend-measured:#23775a;--trend-target:#d9823b;--trend-humidity:#289b91;--trend-grid:#dbe7e1}.climate-trends-workspace{display:grid;gap:10px;min-width:0}.trend-context-strip{display:grid;grid-template-columns:repeat(5,minmax(120px,1fr)) auto;overflow:hidden;border:1px solid var(--border);border-radius:12px;background:#fff;box-shadow:0 3px 12px rgba(25,65,48,.05)}.trend-context-strip>span{display:flex;min-width:0;min-height:55px;flex-direction:column;justify-content:center;padding:8px 11px;border-right:1px solid var(--border)}.trend-context-strip small{color:var(--muted);font-size:.52rem}.trend-context-strip strong{overflow:hidden;margin-top:2px;font-size:.66rem;text-overflow:ellipsis;white-space:nowrap}.trend-context-strip>span.is-stale strong{color:#9a5d1d}.trend-context-strip>b{display:grid;place-items:center;padding:8px 12px;background:#fff4dc;color:#775117;font-size:.53rem;letter-spacing:.06em;text-align:center}
.climate-quick-trends{min-width:0;padding:10px;border:1px solid var(--border);border-radius:14px;background:#fff;box-shadow:var(--shadow)}.climate-quick-trends>header{display:flex;align-items:end;justify-content:space-between;gap:12px;margin-bottom:7px}.climate-quick-trends h2{margin:2px 0 0;font-size:.93rem}.climate-quick-trends>header small{color:var(--muted);font-size:.56rem}.climate-quick-trends__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:7px}.climate-quick-trend{min-width:0;overflow:hidden;border:1px solid var(--border);border-radius:9px;background:#fbfdfc}.climate-quick-trend>header{display:flex;align-items:center;justify-content:space-between;gap:6px;padding:7px 9px;border-bottom:1px solid #e7ede9}.climate-quick-trend>header strong{font-size:.62rem}.climate-quick-trend>header span{color:var(--muted);font-size:.49rem}.climate-quick-trend svg{display:block;width:100%;height:100px}.quick-trend-bg{fill:#fbfdfc}.quick-trend-grid{stroke:var(--trend-grid);stroke-dasharray:4 5}.quick-trend-line{fill:none;stroke-linecap:round;stroke-linejoin:round}.quick-trend-line.line-dashed{stroke-dasharray:7 5}.climate-quick-trend>footer{display:flex;flex-wrap:wrap;gap:4px 10px;padding:6px 9px;border-top:1px solid #edf2ef}.climate-quick-trend>footer span{display:flex;align-items:center;gap:4px;color:#53655c;font-size:.49rem}.climate-quick-trend>footer i{width:12px;height:2px}
.trend-workbench--history{grid-template-columns:250px minmax(0,1fr);gap:10px}.trend-workbench--history .trend-series-picker{padding:9px;box-shadow:var(--shadow)}.trend-workbench--history .trend-series-picker h2{font-size:.9rem}.trend-workbench--history .trend-series-group h3{margin:11px 0 3px;padding-top:7px;border-top:1px solid var(--border);color:#53665d;font-size:.57rem;text-transform:uppercase}.trend-category-filter{display:flex;flex-wrap:wrap;gap:4px}.trend-category-filter button{min-height:27px;padding:3px 6px;border:1px solid var(--border);border-radius:999px;background:#fff;color:#55685e;font-size:.49rem;font-weight:750}.trend-category-filter button.active{border-color:#5f9d82;background:#eaf6ef;color:#176747}.trend-analysis-area--history{padding:11px;box-shadow:var(--shadow)}.trend-analysis-area--history .trend-analysis-header p{margin:2px 0 0;color:var(--muted);font-size:.57rem}.trend-analysis-area--history .picker-open b{margin-left:5px}.trend-preset-bar--history{padding:5px;border:1px solid var(--border);border-radius:9px;background:#f5f8f6}.trend-preset-bar--history button{min-height:32px}.trend-time-toolbar--history{margin-top:7px}.trend-time-toolbar--history .range-selector,.trend-time-toolbar--history .history-navigation{display:flex;flex-wrap:wrap;gap:5px}.trend-time-toolbar--history .back-to-now{border-color:#6f9e8a;color:var(--primary)}.trend-visible-window{padding:6px 3px}.selected-series-legend--history{margin:5px 0}.selected-series-legend--history>div{grid-template-columns:7px minmax(110px,1fr) auto auto auto;min-width:245px;background:#fff}.selected-series-legend--history>div button{min-height:26px;padding:3px 5px;border-radius:5px}.selected-series-legend--history>div button:hover{background:#edf5f1}.trend-event-controls{margin:6px 0;border:1px solid var(--border);border-radius:8px;background:#f8faf9}.trend-event-controls>summary{padding:7px 9px;cursor:pointer;color:#435a4f;font-size:.57rem;font-weight:800}.trend-event-controls .event-lane-selector{margin:0;border-top:1px solid var(--border);border-radius:0}.trend-provider-scenario{display:flex;align-items:center;gap:5px;margin-left:auto}.trend-provider-scenario select{min-height:31px;border:1px solid var(--border);border-radius:6px;background:#fff;color:var(--text);font-size:.57rem}.trend-stale-notice{display:flex;gap:8px;margin:6px 0;padding:8px 10px;border-left:3px solid #be7f2f;background:#fff7e7;color:#704f1d;font-size:.58rem}.trend-stale-notice span{color:#765d35}
.trend-lanes-stack--workspace{gap:6px;padding:2px 0}.history-unit-lane{grid-template-columns:115px minmax(0,1fr);min-height:190px}.history-unit-lane>header{position:relative;z-index:2;padding:8px 9px}.history-unit-lane>header em{margin-top:5px;color:#a55d2e;font-size:.48rem;font-style:normal;font-weight:800}.history-unit-plot{min-width:0;touch-action:none}.history-unit-plot svg{display:block;width:100%;height:190px}.history-series-line{fill:none;stroke-linecap:round;vector-effect:non-scaling-stroke}.history-series-line.line-dashed{stroke-dasharray:8 6}.history-series-line.is-dimmed{opacity:.18}.history-series-line.is-highlighted{filter:drop-shadow(0 0 2px rgba(0,0,0,.25))}.trend-now-line{stroke:#c47b27;stroke-width:1.4;stroke-dasharray:4 4}.trend-now-label{fill:#945a1b;font-size:9px;font-weight:800}.history-binary-lane{min-height:42px}.event-marker-layer--history{inset:0 2.8% 0 115px}.history-cursor-control{inset:0 2.8% 0 115px;width:calc(97.2% - 115px);height:100%}.history-shared-tooltip{top:22px;max-height:min(420px,80%);overflow:auto}.trend-query-state--loading{background:linear-gradient(100deg,#f1f5f3,#fff,#f1f5f3);background-size:200% 100%;animation:trend-loading 1.6s linear infinite}.trend-query-state--empty{background:#fafcfb}.line-step{stroke-linejoin:miter}@keyframes trend-loading{to{background-position:-200% 0}}
@media(max-width:1100px){.trend-context-strip{grid-template-columns:repeat(3,1fr)}.trend-context-strip>b{min-height:48px}.climate-quick-trends__grid{grid-template-columns:1fr 1fr}.climate-quick-trend:last-child{grid-column:1/-1}.trend-workbench--history{grid-template-columns:225px minmax(0,1fr)}}
@media(max-width:820px){.trend-context-strip{grid-template-columns:1fr 1fr}.trend-context-strip>span{min-height:49px}.trend-context-strip>b{grid-column:1/-1;min-height:36px}.climate-quick-trends__grid{grid-template-columns:1fr}.climate-quick-trend:last-child{grid-column:auto}.climate-quick-trend svg{height:112px}.trend-workbench--history{grid-template-columns:1fr}.trend-analysis-area--history .picker-open{display:block}.trend-workbench--history .trend-series-picker{position:fixed!important;z-index:70;inset:0 0 0 auto;width:min(92vw,360px);max-height:100dvh!important;border-radius:0;transform:translateX(105%)}.trend-workbench--history .trend-series-picker.is-open{transform:translateX(0)}.history-unit-lane{grid-template-columns:92px minmax(0,1fr)}.event-marker-layer--history{left:92px}.history-cursor-control{left:92px;width:calc(97.2% - 92px)}.selected-series-legend--history>div{flex:1 1 100%}.trend-provider-scenario{flex-basis:100%;margin-left:0}}
@media(max-width:480px){.climate-trends-page{overflow-x:hidden}.climate-trends-workspace{gap:7px}.trend-context-strip>span{padding:7px 8px}.trend-context-strip strong{font-size:.6rem}.climate-quick-trends{padding:8px}.climate-quick-trends>header{align-items:flex-start;flex-direction:column}.climate-quick-trend>header{align-items:flex-start;flex-direction:column}.trend-analysis-area--history{padding:7px}.trend-analysis-area--history .trend-analysis-header{align-items:flex-start;gap:7px}.trend-analysis-area--history .picker-open{min-height:39px;white-space:nowrap}.trend-time-toolbar--history .range-selector button{flex:1 1 18%;min-width:0;padding:4px}.trend-time-toolbar--history .history-navigation button{flex:1 1 45%;min-height:39px}.trend-time-toolbar--history .back-to-now{flex-basis:100%}.trend-visible-window{gap:4px;font-size:.58rem}.trend-visible-window small{width:auto;margin-left:0}.selected-series-legend--history>div{grid-template-columns:7px minmax(0,1fr) auto auto}.selected-series-legend--history>div button:first-of-type{display:none}.history-unit-lane{grid-template-columns:1fr;min-height:0}.history-unit-lane>header{align-items:center;flex-direction:row;justify-content:space-between;padding:6px 8px}.history-unit-lane>header em{margin:0}.history-unit-plot svg{width:100%;height:176px}.history-binary-lane,.discrete-state-lane{grid-template-columns:82px minmax(0,1fr)}.event-marker-layer--history{left:0}.history-cursor-control{left:0;width:97.2%}.event-marker span{display:none}.history-shared-tooltip{left:50%!important;width:90%!important;max-height:70%;transform:translateX(-50%)!important}.trend-preset-bar--history{overflow-x:auto}.trend-preset-bar--history button{min-width:max-content}.custom-range-control input{width:100%;min-height:42px}}
@media(prefers-reduced-motion:reduce){.trend-query-state--loading{animation:none}}

/* DEMO-UI-019A+020 — readable trend axes, sensors and diagnostics */
.lane-axis-unit{fill:#41594e;font-size:10px;font-weight:800}.history-unit-lane .lane-tick{fill:#4f6359;font-size:11px;font-weight:700;font-variant-numeric:tabular-nums}.history-shared-tooltip b{font-variant-numeric:tabular-nums}.climate-sensors-page,.climate-diagnostics-page{overflow-x:hidden}
.sensor-workspace,.diagnostics-lite{display:grid;gap:10px;min-width:0;margin-top:10px}.sensor-workspace__heading,.diagnostics-lite__heading{display:grid;grid-template-columns:minmax(250px,.7fr) minmax(0,1.8fr);align-items:end;gap:14px}.sensor-workspace__heading h2,.diagnostics-lite__heading h2{margin:2px 0;font-size:1.35rem}.sensor-workspace__heading p,.diagnostics-lite__heading p{margin:0;color:var(--muted);font-size:.66rem}.sensor-summary-strip{display:grid;grid-template-columns:repeat(5,minmax(76px,1fr)) minmax(150px,1.35fr);overflow:hidden;border:1px solid var(--border);border-radius:12px;background:#fff;box-shadow:var(--shadow)}.sensor-summary-strip>span{display:flex;min-width:0;min-height:58px;flex-direction:column;justify-content:center;padding:7px 10px;border-right:1px solid var(--border)}.sensor-summary-strip>span:last-child{border:0}.sensor-summary-strip small{color:var(--muted);font-size:.49rem;text-transform:uppercase;letter-spacing:.04em}.sensor-summary-strip strong{font-size:.82rem}.sensor-summary-strip em{margin-top:2px;color:var(--muted);font-size:.46rem;font-style:normal}.sensor-summary-strip .tone-stale{background:#fff8e7}.sensor-summary-strip .tone-warning{background:#fff4e8}.sensor-summary-strip .tone-error{background:#fff0ed;color:#8d3a31}
.sensor-toolbar{display:grid;grid-template-columns:minmax(230px,1.5fr) minmax(155px,.7fr) minmax(165px,.7fr) auto;align-items:end;gap:7px;padding:8px;border:1px solid var(--border);border-radius:10px;background:#f7faf8}.sensor-toolbar label,.diagnostics-demo-tools label,.sensors-demo-tools label{display:flex;min-width:0;flex-direction:column;gap:3px;color:#52655b;font-size:.52rem;font-weight:750}.sensor-toolbar input,.sensor-toolbar select,.diagnostics-demo-tools select,.sensors-demo-tools select{min-width:0;min-height:36px;border:1px solid var(--border);border-radius:7px;background:#fff;padding:5px 8px;color:var(--text)}.sensor-result-count{display:flex;min-height:36px;align-items:center;gap:4px;padding:0 8px;color:var(--muted);font-size:.56rem;white-space:nowrap}.sensor-result-count strong{color:var(--primary)}
.sensor-list-and-detail{display:grid;grid-template-columns:minmax(0,1.7fr) minmax(280px,.65fr);align-items:start;gap:10px}.sensor-compact-groups{display:grid;gap:8px;min-width:0}.sensor-compact-group{overflow:hidden;border:1px solid var(--border);border-radius:11px;background:#fff}.sensor-compact-group>header{display:flex;align-items:end;justify-content:space-between;gap:12px;padding:8px 10px;border-bottom:1px solid var(--border);background:#f8fbf9}.sensor-compact-group h3{margin:2px 0 0;font-size:.78rem}.sensor-compact-group>header p{max-width:55%;margin:0;color:var(--muted);font-size:.5rem;text-align:right}.sensor-table{display:grid}.sensor-row{display:grid;grid-template-columns:minmax(155px,1.1fr) 90px minmax(115px,.7fr) minmax(180px,1.25fr) auto;align-items:center;gap:8px;min-width:0;padding:8px 10px;border:0;border-bottom:1px solid #e8eeea;background:#fff;color:inherit;text-align:left}.sensor-row:last-child{border-bottom:0}.sensor-row:hover,.sensor-row.is-selected{background:#eff8f3}.sensor-row.is-selected{box-shadow:inset 3px 0 var(--primary)}.sensor-row__name,.sensor-row__value,.sensor-status,.sensor-row__source{display:flex;min-width:0;flex-direction:column}.sensor-row__name strong{font-size:.65rem}.sensor-row small{overflow:hidden;color:var(--muted);font-size:.49rem;text-overflow:ellipsis;white-space:nowrap}.sensor-row__value{align-items:flex-end}.sensor-row__value strong{font-size:.78rem;font-variant-numeric:tabular-nums}.sensor-status{position:relative;padding-left:13px}.sensor-status i{position:absolute;top:3px;left:0;width:7px;height:7px;border-radius:50%;background:#238461}.sensor-status strong{font-size:.56rem}.sensor-row.state-stale .sensor-status i{background:#a66d1e}.sensor-row.state-warning .sensor-status i{background:#d17a21}.sensor-row.state-error .sensor-status i,.sensor-row.state-unmapped .sensor-status i{background:#bc4237}.sensor-row__source code{overflow:hidden;font-size:.48rem;text-overflow:ellipsis;white-space:nowrap}.sensor-row__open{color:var(--primary);font-size:.53rem;font-weight:800;white-space:nowrap}
.sensor-inline-detail{position:sticky;top:8px;overflow:hidden;border:1px solid #adc9bb;border-radius:12px;background:#fff;box-shadow:var(--shadow)}.sensor-inline-detail>header{display:flex;align-items:flex-start;justify-content:space-between;gap:8px;padding:10px;border-bottom:1px solid var(--border)}.sensor-inline-detail h3{margin:2px 0 0;font-size:.85rem}.sensor-inline-detail>header button{width:32px;height:32px;border:1px solid var(--border);border-radius:7px;background:#fff}.sensor-detail-current{display:flex;align-items:end;justify-content:space-between;padding:10px;background:#f0f8f4}.sensor-detail-current>strong{font-size:1.25rem}.sensor-detail-current small{font-size:.62rem}.sensor-detail-current>span{font-size:.58rem;font-weight:800}.sensor-detail-current.state-error,.sensor-detail-current.state-unmapped{background:#fff0ed;color:#85382f}.sensor-detail-current.state-stale,.sensor-detail-current.state-warning{background:#fff7e8;color:#785217}.sensor-inline-detail dl{display:grid;grid-template-columns:1fr 1fr;margin:0;padding:5px 10px}.sensor-inline-detail dl div{min-width:0;padding:7px 4px;border-bottom:1px solid #edf1ef}.sensor-inline-detail dt{color:var(--muted);font-size:.48rem}.sensor-inline-detail dd{overflow-wrap:anywhere;margin:2px 0 0;font-size:.57rem;font-weight:750}.sensor-inline-detail code{font-size:.48rem}.sensor-detail-preview{padding:8px 10px}.sensor-detail-preview h4{margin:0 0 5px;font-size:.62rem}.sensor-detail-preview .sensor-trend-large{height:auto}.sensor-open-trends{display:block;margin:0 10px;padding:8px;border:1px solid #79a68f;border-radius:7px;color:var(--primary);font-size:.58rem;font-weight:850;text-align:center}.sensor-inline-detail>p{margin:7px 10px 10px;color:var(--muted);font-size:.48rem}.sensors-demo-tools,.diagnostics-demo-tools{padding:8px 10px;border:1px solid var(--border);border-radius:9px;background:#f8faf9}.sensors-demo-tools summary,.diagnostics-demo-tools summary{cursor:pointer;font-size:.58rem;font-weight:800}.sensors-demo-tools[open] summary,.diagnostics-demo-tools[open] summary{margin-bottom:7px}.sensors-demo-tools p,.diagnostics-demo-tools p{margin:5px 0 0;color:var(--muted);font-size:.5rem}
.diagnostics-lite__heading{grid-template-columns:1fr auto}.diagnostic-overall{display:grid;grid-template-columns:10px auto;column-gap:7px;min-width:190px;padding:8px 11px;border:1px solid var(--border);border-radius:10px;background:#fff}.diagnostic-overall i{grid-row:1/3;align-self:center;width:9px;height:9px;border-radius:50%;background:#24825f}.diagnostic-overall small{color:var(--muted);font-size:.48rem;text-transform:uppercase}.diagnostic-overall strong{font-size:.68rem}.diagnostic-overall.state-warning{background:#fff8e7}.diagnostic-overall.state-warning i{background:#c77b1f}.diagnostic-overall.state-error{background:#fff0ed;color:#86372e}.diagnostic-overall.state-error i{background:#bc4237}.diagnostic-environment,.diagnostic-quality-lite,.diagnostic-time,.diagnostic-events{min-width:0;padding:10px;border:1px solid var(--border);border-radius:12px;background:#fff;box-shadow:var(--shadow)}.diagnostic-environment>header,.diagnostic-events>header{display:flex;align-items:start;justify-content:space-between;gap:10px}.diagnostic-environment h3,.diagnostic-quality-lite h3,.diagnostic-time h3,.diagnostic-events h3{margin:2px 0 0;font-size:.82rem}.diagnostic-environment>header>strong{padding:4px 7px;border-radius:999px;background:#eef3f0;color:#52635a;font-size:.49rem}.diagnostic-demo-chain{display:grid;grid-template-columns:minmax(0,1fr) 30px minmax(0,1fr);align-items:stretch;gap:5px;margin-top:8px}.diagnostic-demo-chain article{display:grid;grid-template-columns:13px 1fr;gap:7px;padding:9px;border:1px solid #b8d1c4;border-radius:9px;background:#f1f8f4}.diagnostic-demo-chain article>span{color:#238461}.diagnostic-demo-chain article div{display:flex;min-width:0;flex-direction:column}.diagnostic-demo-chain article strong{font-size:.66rem}.diagnostic-demo-chain article b{margin-top:2px;color:#207052;font-size:.54rem}.diagnostic-demo-chain article small{margin-top:3px;color:var(--muted);font-size:.49rem}.diagnostic-demo-chain article.state-warning{border-color:#e3bd73;background:#fff8e8}.diagnostic-demo-chain article.state-communicationlost{border-color:#dc928a;background:#fff1ee}.diagnostic-chain-arrow{display:grid;place-items:center;color:#4f7764;font-size:1rem}.diagnostic-environment-facts{display:grid;grid-template-columns:repeat(4,1fr);margin:8px 0 0;border:1px solid var(--border);border-radius:8px;overflow:hidden}.diagnostic-environment-facts>div{padding:7px 9px;border-right:1px solid var(--border)}.diagnostic-environment-facts>div:last-child{border:0}.diagnostic-environment-facts dt{color:var(--muted);font-size:.48rem}.diagnostic-environment-facts dd{margin:2px 0 0;font-size:.56rem;font-weight:800}.diagnostics-lite-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}.diagnostic-quality-strip{display:grid;grid-template-columns:repeat(4,1fr);margin-top:8px;border:1px solid var(--border);border-radius:8px;overflow:hidden}.diagnostic-quality-strip>span{display:flex;flex-direction:column;padding:7px 8px;border-right:1px solid var(--border)}.diagnostic-quality-strip>span:last-child{border:0}.diagnostic-quality-strip small{color:var(--muted);font-size:.46rem}.diagnostic-quality-strip strong{font-size:.78rem}.diagnostic-quality-strip .tone-stale,.diagnostic-quality-strip .tone-warning{background:#fff8e8}.diagnostic-quality-strip .tone-error{background:#fff0ed;color:#86372e}.diagnostic-quality-lite dl,.diagnostic-time dl{display:grid;grid-template-columns:1fr 1fr;margin:7px 0 0}.diagnostic-quality-lite dl div,.diagnostic-time dl div{padding:6px 4px;border-top:1px solid #edf1ef}.diagnostic-quality-lite dt,.diagnostic-time dt{color:var(--muted);font-size:.48rem}.diagnostic-quality-lite dd,.diagnostic-time dd{margin:2px 0 0;font-size:.55rem;font-weight:750}.diagnostic-time dl{grid-template-columns:1fr 1fr}.diagnostic-events>header>span{color:var(--muted);font-size:.52rem}.diagnostic-events>div{display:grid;margin-top:7px}.diagnostic-events article{display:grid;grid-template-columns:92px 80px 110px minmax(0,1fr);align-items:center;gap:7px;padding:7px 4px;border-top:1px solid #edf1ef}.diagnostic-events time,.diagnostic-events strong,.diagnostic-events b,.diagnostic-events p{font-size:.53rem}.diagnostic-events time{color:var(--muted)}.diagnostic-events strong{color:#23775a}.diagnostic-events .level-ostrzeżenie strong{color:#9a651c}.diagnostic-events .level-błąd strong{color:#a53c33}.diagnostic-events p{margin:0;color:#4f6157}
@media(max-width:1000px){.sensor-workspace__heading{grid-template-columns:1fr}.sensor-summary-strip{grid-template-columns:repeat(3,1fr)}.sensor-list-and-detail{grid-template-columns:1fr}.sensor-inline-detail{position:static}.sensor-row{grid-template-columns:minmax(150px,1.1fr) 80px minmax(110px,.8fr) minmax(160px,1fr) auto}.diagnostics-lite-grid{grid-template-columns:1fr}}
@media(max-width:620px){.sensor-workspace,.diagnostics-lite{gap:7px}.sensor-workspace__heading,.diagnostics-lite__heading{grid-template-columns:1fr}.sensor-summary-strip{grid-template-columns:1fr 1fr}.sensor-summary-strip>span{min-height:50px}.sensor-toolbar{grid-template-columns:1fr}.sensor-result-count{min-height:24px}.sensor-compact-group>header{align-items:flex-start;flex-direction:column}.sensor-compact-group>header p{max-width:none;text-align:left}.sensor-row{grid-template-columns:minmax(0,1fr) auto;padding:9px}.sensor-row__value{align-items:flex-end}.sensor-status,.sensor-row__source{grid-column:1/-1}.sensor-row__open{position:absolute;right:10px;margin-top:42px}.sensor-row{position:relative}.sensor-inline-detail dl{grid-template-columns:1fr}.sensor-detail-preview svg{height:135px}.diagnostic-overall{min-width:0}.diagnostic-demo-chain{grid-template-columns:1fr}.diagnostic-chain-arrow{min-height:20px;transform:rotate(90deg)}.diagnostic-environment-facts,.diagnostic-quality-strip{grid-template-columns:1fr 1fr}.diagnostic-environment-facts>div:nth-child(2){border-right:0}.diagnostic-environment-facts>div:nth-child(-n+2){border-bottom:1px solid var(--border)}.diagnostic-quality-lite dl,.diagnostic-time dl{grid-template-columns:1fr}.diagnostic-events article{grid-template-columns:80px 1fr}.diagnostic-events article b,.diagnostic-events article p{grid-column:1/-1}.history-unit-lane .lane-tick{font-size:8px}}
/* D1 account and access surface */
.account-shell{min-height:100vh;background:linear-gradient(140deg,#eaf4ef,#f8fbf9);padding:clamp(1.25rem,5vw,4rem);color:#17372d}
.account-brand{display:flex;align-items:center;gap:.75rem;max-width:720px;margin:0 auto 1.5rem}.account-brand>span:last-child{display:flex;flex-direction:column}.account-brand small{color:#668078;text-transform:uppercase;letter-spacing:.08em}
.account-host{max-width:720px;margin:0 auto}.account-card{background:#fff;border:1px solid #d3e1db;border-radius:16px;box-shadow:0 14px 45px rgba(20,65,50,.08);padding:clamp(1.25rem,4vw,2.5rem)}.account-card--wide{max-width:1100px;margin-left:50%;transform:translateX(-50%);width:min(1100px,calc(100vw - 2rem))}
.account-card h1{margin:.3rem 0 .65rem}.account-card p{color:#5a716a}.account-form{display:grid;gap:1rem;margin-top:1.5rem}.account-form label{display:grid;gap:.35rem;font-weight:700}.account-form input,.account-form select,.account-form textarea{font:inherit;border:1px solid #b9cbc4;border-radius:8px;padding:.7rem;background:#fff;color:#17372d}.account-form button,.account-link-button,.account-users button{border:0;border-radius:8px;padding:.72rem 1rem;background:#11734f;color:#fff;font-weight:800;cursor:pointer;text-decoration:none}.account-check{display:flex!important;grid-template-columns:auto 1fr!important;align-items:center;font-weight:500!important}.account-check input{width:auto}
.account-message{margin:1rem 0;padding:.8rem 1rem;border-radius:8px;background:#e7f5ee;color:#135d43}.account-message--error{background:#fff1ed;color:#8b2f20}.mfa-key{display:grid;gap:.4rem;padding:1rem;border:1px solid #b9cbc4;border-radius:8px;background:#f5faf7}.mfa-key code{font-size:1.05rem;overflow-wrap:anywhere}
.account-form--inline{grid-template-columns:2fr 1.5fr 1fr auto;align-items:end}.account-users{display:grid;gap:.65rem;margin:1.5rem 0}.account-users article{display:grid;grid-template-columns:minmax(220px,1fr) auto auto auto;gap:.6rem;align-items:center;padding:.75rem;border:1px solid #d8e4df;border-radius:10px}.account-users article>div{display:grid}.account-users article span{font-size:.85rem;color:#687d76}.account-users form{display:flex;gap:.35rem}.account-users select{max-width:150px}
.rail-account{display:grid;gap:.35rem;margin-top:auto;padding:1rem .75rem;border-top:1px solid rgba(255,255,255,.14);font-size:.78rem}.rail-account span{opacity:.72}.rail-account a,.rail-account button{color:inherit;background:none;border:0;padding:0;text-align:left;text-decoration:underline;font:inherit;cursor:pointer}.rail-account form{margin:0}
@media(max-width:760px){.account-form--inline,.account-users article{grid-template-columns:1fr}.account-card--wide{transform:none;margin-left:0}.rail-account{display:none}}
