.demo-body{isolation:isolate;min-height:100vh}.demo-body>.scene{position:fixed}.demo-body:after{content:"";position:fixed;inset:0;background:linear-gradient(90deg,transparent,#0002);z-index:-1;pointer-events:none}.demo-body .topbar{position:relative;background:var(--surface);backdrop-filter:blur(16px);border-bottom:1px solid var(--line);padding:10px 3%;min-height:84px;gap:28px}.demo-body .topbar .wordmark{width:215px;height:48px}.demo-body .topbar h1{font-size:clamp(22px,2.4vw,38px);letter-spacing:-.032em;line-height:1.12;flex:1}.demo-body main{display:flex;justify-content:flex-end;padding:13px 1.7% 110px;min-height:calc(100vh - 84px)}.cfd-device{width:min(750px,54%);padding:20px;align-self:flex-start;border-radius:17px}.cfd-device .panel-title h2{font-size:29px}.cfd-device .pills{gap:9px}.cfd-device .pills>span{padding:7px 14px}.mode-alert{display:grid;grid-template-columns:1.3fr 1fr;gap:10px;margin-bottom:10px}.modes{display:grid;grid-template-columns:repeat(4,1fr);gap:7px;padding:6px;background:var(--tile);border-radius:12px}.modes button{display:flex;align-items:center;flex-direction:column;justify-content:center;gap:7px;border:1px solid var(--line);background:var(--tile);padding:11px 6px;border-radius:9px;font-size:13px;min-height:82px}.modes button[aria-pressed=true]{border:1.5px solid var(--accent);color:var(--accent);background:color-mix(in srgb,var(--accent) 8%,var(--tile))}.modes .ico{height:29px;width:29px}.alert-banner{border:1px solid color-mix(in srgb,var(--danger) 25%,transparent);background:var(--danger-bg);border-radius:10px;padding:15px 13px;display:flex;flex-direction:column;justify-content:center;font-size:13px;color:var(--danger);gap:5px}.alert-banner.normal{background:var(--tile);color:var(--ink);border-color:var(--line)}.temperature-grid{display:grid;grid-template-columns:1.05fr 1fr;gap:10px;margin-bottom:15px}.cfd-device .readings{grid-template-columns:repeat(2,1fr);gap:10px;margin:0}.cfd-device .reading{padding:12px 16px}.cfd-device .reading small{font-size:14px}.cfd-device .reading strong{font-size:38px;line-height:1.3}.tile{border:1px solid var(--line);background:var(--tile);padding:12px 14px;border-radius:12px;min-width:0}.tile h3{font-size:16px;font-weight:650;margin-bottom:10px}.chart{padding:10px 14px}.chart p{font-size:13px;line-height:1.4}.chart svg{width:100%;display:block;height:133px;overflow:visible;margin:4px 0}.chart text{fill:var(--ink);font:12px system-ui,sans-serif}.grid-lines{stroke:var(--muted);opacity:.2;fill:none}.limit{stroke:var(--muted);stroke-dasharray:5 5;fill:none}.chart-line{stroke:var(--accent);stroke-width:3;fill:none}.chart-fill{fill:var(--accent);opacity:.1}#chart-dot{fill:var(--accent)}.dashboard-columns{display:grid;grid-template-columns:1.28fr 1fr;gap:12px}.left-column,.right-column{display:flex;flex-direction:column;gap:13px}.switch-row{display:flex;align-items:center;gap:12px;font-size:14px;min-height:35px}.switch-row .switch{margin-left:auto}.outputs .switch-row{padding:6px;background:var(--tile);border-radius:10px}.rule{font-size:13px;color:var(--muted);margin:5px 0 9px 36px}.output-status{padding:9px 11px;font-size:12px;line-height:1.4;background:var(--danger-bg);color:var(--danger);border-radius:8px}.output-status.quiet{background:var(--tile);color:var(--muted)}.history p,.connectivity p,.facts p{display:flex;align-items:center;gap:10px;font-size:12px;line-height:1.5}.history{min-height:88px}.history .ico{width:25px}.facts p{align-items:flex-start}.facts p+p{margin-top:15px}.facts .ico{width:23px;height:23px}.facts .local{margin-left:auto;font-size:10px;padding:5px 10px}.try-alert{flex:1;min-height:126px}.alert-buttons{display:flex;flex-wrap:wrap;gap:7px}.alert-buttons button{padding:11px 10px;font-size:11px;background:var(--tile);border:1px solid var(--line);border-radius:8px;min-height:41px}.alert-buttons button[aria-pressed=true]{background:var(--accent);color:var(--on-accent);border-color:var(--accent)}.try-alert .note{margin-top:12px;font-size:11px}.text-button{padding:6px 0;color:var(--accent);text-decoration:underline;background:none;border:none;font-size:12px}.notifications .note{font-size:10px}.online{width:9px;height:9px;border-radius:50%;background:var(--good)}.caption{position:fixed;left:1.8%;bottom:25px;max-width:690px;padding:12px 18px;font-size:12px;z-index:1}.caption strong{font-weight:550}.caption p{font-size:11px;margin-top:3px}.scene-name{position:fixed;right:2.5%;bottom:25px;color:#fff;text-shadow:0 2px 4px #000;font-size:13px}.dark-name{display:none}[data-theme=dark] .light-name{display:none}[data-theme=dark] .dark-name{display:inline}
@media(min-width:1500px){.demo-body main{padding-top:15px}.cfd-device{width:750px}.cfd-device .reading{padding-block:13px}.chart svg{height:142px}.tile{padding:13px 14px}}
@media(max-width:1250px){.cfd-device{width:65%;max-width:750px}.cfd-device .panel-title h2{font-size:25px}.cfd-device .panel-title{flex-wrap:wrap}.demo-body .topbar .wordmark{width:180px}.demo-body .topbar h1{font-size:28px}.caption{max-width:650px}.mode-alert{grid-template-columns:1fr}.alert-banner{padding:10px}.modes button{min-height:67px;padding:7px}}
@media(max-width:850px){.cfd-device{width:85%}.demo-body .topbar h1{display:none}.caption{position:static;margin:0 20px 22px;max-width:none}.demo-body main{padding-bottom:25px}.scene-name{display:none}}
@media(max-width:600px){.demo-body>.scene{position:absolute;top:77px;bottom:auto;height:240px}.demo-body>.scene img{object-position:57% 50%}.demo-body:after{display:none}.demo-body .topbar{padding:12px 16px;min-height:77px;gap:8px}.demo-body .topbar .wordmark{width:150px;height:36px}.demo-body main{display:block;padding:215px 0 0;min-height:0}.cfd-device{width:100%;max-width:none;padding:19px 15px;border-radius:20px 20px 0 0;border-bottom:0;box-shadow:none;background:var(--surface)}.cfd-device .panel-title h2{font-size:25px;white-space:normal}.cfd-device .panel-title{gap:12px;margin-bottom:16px}.cfd-device .pills{gap:6px}.cfd-device .pills>span{font-size:9px;padding:5px 12px}.mode-alert{gap:10px}.modes{gap:6px}.modes button{font-size:12px;min-height:75px}.alert-banner{font-size:13px;padding:12px}.temperature-grid{grid-template-columns:1fr}.cfd-device .reading{padding:14px 17px}.cfd-device .reading strong{font-size:37px}.chart svg{height:155px}.chart p{font-size:13px}.dashboard-columns{grid-template-columns:1fr}.left-column,.right-column{gap:12px}.tile{padding:15px}.tile h3{font-size:17px}.switch-row{min-height:39px;font-size:15px}.alert-buttons{gap:7px}.alert-buttons button{font-size:11px;padding:11px 9px}.rule{margin-left:0}.output-status{font-size:13px}.history p,.connectivity p,.facts p{font-size:13px}.notifications .note{font-size:12px}.text-button{font-size:13px}.caption{position:static;margin:0;padding:20px 16px;border:0;border-radius:0;font-size:11px;box-shadow:none;background:var(--bg)}.caption p{font-size:10px}.facts p+p{margin-top:12px}}

/* The scene name label collided with the panel; the theme toggle already names the scene. */
.scene-name{display:none}

/* Power cut: the stretch with no readings is shaded, not drawn as a line. */
.chart-gap{fill:var(--ink);opacity:.12}
.chart-gap-label{font-size:11px!important;opacity:.8}
