:root{--pg-ink:var(--ink,var(--text,#16233f));--pg-muted:var(--muted,#5b6b85);--pg-dim:var(--dim,var(--subtle,#8895ab));--pg-surface:var(--surface,var(--panel-strong,#fff));--pg-surface-2:var(--surface-2,var(--panel-soft,#eef2f8));--pg-surface-3:var(--surface-3,#1c2d551a);--pg-line:var(--line,var(--border,#1c2d5524));--pg-line-strong:var(--line-strong,var(--border-strong,#1c2d5542));--pg-teal:var(--teal,var(--cyan,#0e7c6e));--pg-amber:var(--amber,#b4690e);--pg-mono:var(--mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace);--pg-neutral:#56657d;--pg-blue:#1d5bb8;--pg-purple:#6545b8;--pg-green:#0d7444;--pg-red:#b3261e;--pg-on-tone:#fff}:root[data-theme=dark]{--pg-neutral:#9fb0c6;--pg-blue:#86b6ff;--pg-purple:#bba6ff;--pg-green:#5fd99a;--pg-red:#ff8a7f;--pg-on-tone:#0b1626}.pg-sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}[data-tone=neutral]{--pg-tone:var(--pg-neutral)}[data-tone=blue]{--pg-tone:var(--pg-blue)}[data-tone=purple]{--pg-tone:var(--pg-purple)}[data-tone=green]{--pg-tone:var(--pg-green)}.pg-row{border:1px solid var(--pg-line);width:100%;min-width:0;max-width:100%;min-height:34px;color:var(--pg-ink);font:inherit;text-align:left;cursor:pointer;background:0 0;border-radius:9px;align-items:center;gap:8px;margin-top:6px;padding:3px 8px 3px 4px;display:flex}.pg-row:hover{background:var(--pg-surface-2)}.pg-badge{border:1px solid color-mix(in srgb, var(--pg-tone) 55%, transparent);background:color-mix(in srgb, var(--pg-tone) 11%, var(--pg-surface));min-width:0;color:var(--pg-tone);white-space:nowrap;border-radius:999px;flex:0 auto;align-items:center;gap:5px;padding:2px 8px 2px 4px;font-size:.72rem;font-weight:800;display:inline-flex}.pg-badge[data-tone=neutral]{background:0 0;border-style:dashed}.pg-icon{flex:none;display:block}.pg-ach{letter-spacing:.01em}.pg-count{font-variant-numeric:tabular-nums;opacity:.92;font-weight:700}.pg-case{text-overflow:ellipsis;white-space:nowrap;width:0;min-width:0;color:var(--pg-muted);flex:1 1 0;font-size:.7rem;font-weight:700;overflow:hidden}.pg-case[data-state=done]{color:var(--pg-green)}.pg-case[data-state=failed]{color:var(--pg-red)}.pg-case[data-state=ready]{color:var(--pg-blue)}.pg-chev{color:var(--pg-dim);flex:none;font-size:1rem;font-weight:800}.pg-learn>h3{align-items:center;gap:6px;display:flex}.pg-kind{border:1px solid var(--pg-line-strong);letter-spacing:.06em;text-transform:uppercase;color:var(--pg-muted);vertical-align:middle;border-radius:999px;padding:1px 6px;font-size:.6rem;font-weight:800;display:inline-block}.pg-reqs{margin:0;padding:0;list-style:none}.pg-req{padding:4px 0 4px 22px;font-size:.8rem;line-height:1.45;position:relative}.pg-req .pg-mark{text-align:center;width:16px;color:var(--pg-dim);font-weight:900;position:absolute;top:4px;left:0}.pg-req[data-state=done] .pg-mark,.pg-req[data-state=ok] .pg-mark{color:var(--pg-green)}.pg-req[data-state=failed] .pg-mark{color:var(--pg-red)}.pg-req[data-state=ready] .pg-mark{color:var(--pg-blue)}.pg-req[data-state=done] .pg-req-text{color:var(--pg-muted)}.pg-req[data-type=fair] .pg-req-text{color:var(--pg-muted);font-size:.74rem}.pg-req-pct{font-family:var(--pg-mono);color:var(--pg-dim);font-size:.72rem}.pg-req-note{color:var(--pg-muted);font-size:.72rem}.pg-req[data-state=failed] .pg-req-note{color:var(--pg-red);font-weight:700}.pg-confirm{margin-top:4px}.pg-reqbox p{margin:6px 0 0;font-size:.74rem;line-height:1.45}.pg-earned{color:var(--pg-green);font-weight:700}.pg-stale{color:var(--pg-red);font-weight:700}.pg-guided{color:var(--pg-muted)}.pg-open-link{min-height:30px;margin-top:4px;padding-left:0;font-size:.74rem}.pg-info .pg-outcome{color:var(--pg-muted);margin:8px 0 0;font-size:.78rem}.info-section.pg-info>h3{color:var(--pg-green);align-items:center;gap:6px;display:flex}.pg-modal{width:min(720px,100%)}.pg-headtext{flex-direction:column;gap:2px;min-width:0;display:flex}.pg-kicker{letter-spacing:.1em;text-transform:uppercase;color:var(--pg-teal);font-size:.62rem;font-weight:800}.pg-title{outline:none;margin:0;font-size:1rem;font-weight:800;line-height:1.3}.pg-body{flex-direction:column;gap:14px;display:flex}.pg-section{border-top:1px solid var(--pg-line);padding-top:12px}.pg-section>h3,.pg-current h3{letter-spacing:.1em;text-transform:uppercase;color:var(--pg-muted);flex-wrap:wrap;align-items:center;gap:6px;margin:0 0 6px;font-size:.68rem;font-weight:800;display:flex}.pg-dim{color:var(--pg-muted);margin:0 0 8px;font-size:.78rem;line-height:1.5}.pg-small{margin-top:8px;font-size:.7rem}.pg-summary{flex-direction:column;gap:8px;display:flex}.pg-bigbadge{color:var(--pg-tone);align-items:center;gap:12px;display:flex}.pg-bigach{font-size:1.25rem;font-weight:850;line-height:1.1}.pg-bigcount{color:var(--pg-ink);font-variant-numeric:tabular-nums;font-size:.86rem;font-weight:700}.pg-bar{background:var(--pg-surface-3);border-radius:999px;height:8px;overflow:hidden}.pg-bar>span{background:var(--pg-green);border-radius:999px;height:100%;transition:width .3s;display:block}.pg-blurb{margin:0;font-size:.82rem;line-height:1.5}.pg-saved,.pg-session{margin:0;font-size:.8rem;font-weight:700}.pg-saved .pg-dim,.pg-session .pg-dim{font-weight:500}.pg-session{color:var(--pg-red)}.pg-notice{border-left:3px solid var(--pg-amber);background:color-mix(in srgb, var(--pg-amber) 9%, transparent);border-radius:0 8px 8px 0;margin:0;padding:7px 10px;font-size:.78rem;line-height:1.45}.pg-next{margin-top:2px}.pg-next .btn{white-space:normal;text-align:left;height:auto;min-height:40px;padding:6px 12px}.pg-casename{margin:0 0 6px;font-size:.86rem;font-weight:750}.pg-list{margin:0;padding:0;list-style:none}.pg-item{border-bottom:1px solid var(--pg-line);align-items:flex-start;gap:10px;padding:9px 2px;display:flex}.pg-item:last-child{border-bottom:0}.pg-item .pg-mark{text-align:center;color:var(--pg-dim);flex:0 0 18px;padding-top:1px;font-weight:900}.pg-item[data-state=done] .pg-mark{color:var(--pg-green)}.pg-item[data-state=stale] .pg-mark{color:var(--pg-amber)}.pg-item[data-current=true]{background:color-mix(in srgb, var(--pg-teal) 6%, transparent);border-radius:8px}.pg-item-main{flex:auto;min-width:0}.pg-item-name{font-size:.84rem;font-weight:750;line-height:1.35}.pg-item-outcome{color:var(--pg-muted);margin-top:2px;font-size:.76rem;line-height:1.45}.pg-item-date{color:var(--pg-green);margin-top:3px;font-size:.72rem;font-weight:700}.pg-item[data-state=stale] .pg-item-date{color:var(--pg-amber)}.pg-load{flex:none;min-height:32px}.pg-here{color:var(--pg-teal);flex:none;padding-top:6px;font-size:.7rem;font-weight:800}.pg-certcard{border:1px solid var(--pg-line-strong);background:color-mix(in srgb, var(--pg-blue) 6%, var(--pg-surface));border-radius:12px;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:12px;display:flex}.pg-certcard[data-type=completion]{background:color-mix(in srgb, var(--pg-green) 9%, var(--pg-surface))}.pg-certname{font-size:.95rem;font-weight:850}.pg-certcard .pg-dim{margin:2px 0 0}.pg-issued{color:var(--pg-muted);margin-top:8px;font-size:.76rem}.pg-issued summary{cursor:pointer;font-weight:700}.pg-issued ul{margin:6px 0 0;padding-left:18px}.pg-actions{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.pg-filelabel{position:relative;overflow:hidden}.pg-file{opacity:0;cursor:pointer;width:100%;position:absolute;inset:0}.pg-more{margin:10px 0 4px;font-size:.78rem}.pg-more summary{cursor:pointer;color:var(--pg-muted);margin-bottom:8px;font-weight:700}.pg-text{resize:vertical;border:1px solid var(--pg-line-strong);background:var(--pg-surface-2);width:100%;font-family:var(--pg-mono);color:inherit;border-radius:8px;margin-top:8px;padding:8px;font-size:.72rem}.pg-danger>h3{color:var(--pg-red)}.btn.pg-danger-btn{background:var(--pg-red);border-color:var(--pg-red);color:#fff}:root[data-theme=dark] .btn.pg-danger-btn{color:#1b0b0b}.pg-cert{flex-direction:column;gap:12px;display:flex}.pg-field{flex-direction:column;gap:4px;font-size:.8rem;font-weight:700;display:flex}.pg-field input{min-height:38px;font:inherit;border:1px solid var(--pg-line-strong);background:var(--pg-surface-2);color:inherit;border-radius:9px;padding:0 10px;font-weight:600}.pg-preview{border:1px solid var(--pg-line-strong);background:var(--pg-surface-2);aspect-ratio:11/8.5;border-radius:10px;position:relative;overflow:hidden}.pg-preview img{object-fit:contain;width:100%;height:100%;display:block}.pg-preview[data-busy=true]:after{content:"Preparing…";background:color-mix(in srgb, var(--pg-surface) 70%, transparent);color:var(--pg-muted);place-items:center;font-weight:800;display:grid;position:absolute;inset:0}.pg-cert .btn.primary{min-height:40px}.pg-summarytext{color:var(--pg-muted);font-size:.78rem;line-height:1.5}.pg-summarytext summary{cursor:pointer;color:var(--pg-ink);font-weight:700}.pg-summarytext ul{margin:6px 0;padding-left:18px}.pg-li{border:1px solid var(--pg-line);border-radius:10px;padding:10px 12px}.pg-li h4{margin:0 0 6px;font-size:.82rem}.pg-li textarea{min-height:96px;font-family:inherit;font-size:.8rem}.pg-status{min-height:1.2em;color:var(--pg-muted);margin:0;font-size:.76rem}.pg-toasts{z-index:880;pointer-events:none;flex-direction:column;align-items:flex-end;gap:8px;max-width:min(440px,100vw - 32px);display:flex;position:fixed;bottom:16px;right:16px}.pg-toast{pointer-events:auto;border:1px solid color-mix(in srgb, var(--pg-green) 55%, transparent);background:var(--pg-surface);color:var(--pg-ink);border-radius:12px;align-items:center;gap:8px;padding:8px 8px 8px 12px;font-size:.82rem;font-weight:700;animation:.18s ease-out pg-in;display:flex;box-shadow:0 12px 30px #00000038}.pg-toast.pg-leaving{opacity:0;transition:opacity .18s}.pg-toast-mark{color:var(--pg-green);font-weight:900}.pg-toast-text{flex:auto}.pg-toast-btn{min-height:30px}.pg-toast-x{width:30px;min-height:30px;padding:0;font-size:1.05rem}@keyframes pg-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}@media (max-width:900px){.pg-toasts{max-width:none;left:10px;right:10px;bottom:calc(80px + env(safe-area-inset-bottom));align-items:stretch}}@media (max-width:640px){.pg-backdrop{align-items:end!important;padding:0!important}.pg-modal{border-bottom:0;border-radius:16px 16px 0 0;width:100%;max-height:92dvh!important}.pg-modal .modal-body{padding-bottom:calc(18px + env(safe-area-inset-bottom))}.pg-item{flex-wrap:wrap}.pg-load{margin-left:28px}}@media (max-width:900px),(pointer:coarse){.pg-row,.pg-modal .btn,.pg-toast .btn,.pg-learn .btn,.pg-info .btn,.pg-load,.pg-toast-btn,.pg-toast-x,.pg-open-link,.pg-confirm{min-height:44px}.pg-toast-x{width:44px}.pg-field input{min-height:44px}.pg-more summary,.pg-issued summary,.pg-summarytext summary{padding:10px 0}}@media (prefers-reduced-motion:reduce){.pg-toast{animation:none}.pg-bar>span{transition:none}}.pg-standalone .pg-backdrop{z-index:900;-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px);background:#0c121e8c;place-items:center;padding:20px;display:grid;position:fixed;inset:0}.pg-standalone .pg-backdrop[hidden]{display:none}.pg-standalone .pg-modal{border:1px solid var(--pg-line-strong);background:var(--pg-surface);max-height:min(86dvh,820px);color:var(--pg-ink);border-radius:16px;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 30px 80px #00000059}.pg-standalone .pg-modal .modal-head{border-bottom:1px solid var(--pg-line);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.pg-standalone .pg-modal .modal-body{flex:1;min-height:0;padding:14px 16px 20px;overflow-y:auto}.pg-standalone .pg-scope .btn,.pg-standalone .pg-toast .btn,.pg-standalone .pg-modal .btn{cursor:pointer;white-space:nowrap;border:1px solid var(--pg-line-strong);background:var(--pg-surface);min-height:36px;color:var(--pg-ink);font:inherit;border-radius:9px;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:.8rem;font-weight:700;text-decoration:none;display:inline-flex}.pg-standalone .pg-modal .btn:hover,.pg-standalone .pg-toast .btn:hover{background:var(--pg-surface-2)}.pg-standalone .pg-modal .btn.primary{background:var(--pg-teal);border-color:var(--pg-teal);color:#f2fbf9}.pg-standalone .pg-modal .btn.ghost,.pg-standalone .pg-toast .btn.ghost{color:var(--pg-muted);background:0 0;border-color:#0000}.pg-standalone .pg-modal .btn:disabled{opacity:.45;cursor:not-allowed}.pg-standalone .pg-modal .btn.pg-danger-btn{background:var(--pg-red);border-color:var(--pg-red);color:#fff}.pg-standalone .pg-row{font-size:.8rem}@media (max-width:900px),(pointer:coarse){.pg-standalone .pg-modal .btn,.pg-standalone .pg-toast .btn{min-height:44px}}@media (max-width:640px){.pg-standalone .pg-backdrop{align-items:end;padding:0}}:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;font-synthesis:none;text-rendering:optimizelegibility;--bg:#08111f;--panel:#101d2fe0;--panel-strong:#111f32;--panel-soft:#15263db3;--border:#94a3b829;--border-strong:#94a3b847;--text:#edf4ff;--muted:#91a3bb;--subtle:#667991;--blue:#3b8fff;--blue-soft:#3b8fff26;--red:#fb5b67;--red-soft:#fb5b6724;--cyan:#42d3d0;--green:#38d488;--green-soft:#38d48821;--amber:#ffb14f;--amber-soft:#ffb14f24;--shadow:0 18px 54px #00000047;--chart-grid:#94a3b821;--chart-axis:#7f91a9;--chart-axis-soft:#9aa8ba;--chart-ref:#94a3b8;--chart-tooltip-bg:#0d1929;--chart-tooltip-border:#94a3b840;--chart-tooltip-text:#e7eef8;--chart-tooltip-shadow:0 16px 40px #00000052;--trace-red:#fb5b5b;--trace-blue:#4f9cff;--trace-amber:#ffb14f;--trace-cyan:#42d3d0;--trace-green:#38d488;--trace-mint:#6ee7a8;--trace-violet:#a78bfa;--trace-pink:#fda4af;--trace-sky:#93c5fd;--trace-orchid:#f0abfc;--trace-lime:#94e36a;--trace-magenta:#f472d0;--trace-setpoint:#c8d4e6;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f4f7fb;--panel:#ffffffeb;--panel-strong:#fff;--panel-soft:#eef2f8cc;--border:#1c2d5524;--border-strong:#1c2d5542;--text:#16233f;--muted:#5b6b85;--subtle:#74839b;--blue:#1f63c9;--blue-soft:#1f63c91a;--red:#b3261e;--red-soft:#b3261e17;--cyan:#0e7c6e;--green:#17804a;--green-soft:#17804a1a;--amber:#b4690e;--amber-soft:#b4690e1a;--shadow:0 10px 30px #16233f14;--chart-grid:#1c2d551a;--chart-axis:#5b6b85;--chart-axis-soft:#6b7a93;--chart-ref:#1c2d55;--chart-tooltip-bg:#fff;--chart-tooltip-border:#1c2d552e;--chart-tooltip-text:#16233f;--chart-tooltip-shadow:0 10px 30px #16233f24;--trace-red:#c62828;--trace-blue:#1f66d1;--trace-amber:#b4690e;--trace-cyan:#0e7c6e;--trace-green:#17804a;--trace-mint:#1a9a5c;--trace-violet:#6b4fbb;--trace-pink:#c2185b;--trace-sky:#4a7fc4;--trace-orchid:#9b35b0;--trace-lime:#4d8a1f;--trace-magenta:#b0288f;--trace-setpoint:#3a4a66}*{box-sizing:border-box}html{background:var(--bg);min-width:320px}body{min-width:320px;min-height:100vh;color:var(--text);background:radial-gradient(circle at 8% 10%, var(--lightningcss-light,#519cfe12)var(--lightningcss-dark,#1a69c626), transparent 28%), radial-gradient(circle at 94% 92%, var(--lightningcss-light,#ef69870d)var(--lightningcss-dark,#b533571f), transparent 30%), var(--bg);margin:0}button,input{font:inherit}button,a,input[type=range]{-webkit-tap-highlight-color:transparent}button:focus-visible,a:focus-visible,input:focus-visible,summary:focus-visible{outline-offset:2px;outline:3px solid var(--lightningcss-light,#0060b894)var(--lightningcss-dark,#5aa5ff94)}button:disabled,input:disabled{cursor:not-allowed;opacity:.5}a{color:var(--lightningcss-light,#005ba9)var(--lightningcss-dark,#77b6ff)}.app-shell{z-index:0;width:min(1920px,100%);min-height:100vh;padding:10px clamp(10px, 1.5vw, 22px) max(12px, env(safe-area-inset-bottom));margin:0 auto;position:relative;overflow:clip}.ambient{z-index:-1;filter:blur(120px);pointer-events:none;border-radius:50%;width:36vw;height:36vw;position:fixed}.ambient--one{background:var(--lightningcss-light,#3489f40f)var(--lightningcss-dark,#1671da21);top:-18vw;left:-15vw}.ambient--two{background:var(--lightningcss-light,#d607470a)var(--lightningcss-dark,#e134571a);bottom:-18vw;right:-16vw}.app-header{z-index:40;border:1px solid var(--border);-webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);background:var(--lightningcss-light,#f4f7fbe0)var(--lightningcss-dark,#08111fe0);border-radius:18px;justify-content:space-between;align-items:center;min-height:68px;padding:9px 13px;display:flex;position:sticky;top:0;box-shadow:0 12px 36px var(--lightningcss-light,#16233f0f)var(--lightningcss-dark,#0003)}.brand,.brand__mark,.header-tools,.header-actions,.session-clock,.connection-bar,.connection-bar__status,.connection-bar__actions,.button,.status-pill,.message-banner,.alarm-banner,.panel-heading,.panel-heading--controls,.mode-switch,.heater-card__heading,.heater-card__heading>div,.physical-inline,.section-label,.range-with-value,.setpoint-card__heading,.suggestion,.modal__title,.modal__footer,.button-row,.safety-note,.stat-card,.app-footer,.app-footer>div{align-items:center;display:flex}.brand{gap:12px;min-width:250px}.brand__mark{color:#fff;background:linear-gradient(145deg,var(--lightningcss-light,#1577e5)var(--lightningcss-dark,#348fff),#1660c7);border-radius:13px;flex:0 0 44px;justify-content:center;width:44px;height:44px;box-shadow:0 10px 30px var(--lightningcss-light,#2b7ef031)var(--lightningcss-dark,#2074e552)}.brand__mark img{border-radius:inherit;object-fit:cover;width:100%;height:100%}.brand h1{letter-spacing:-.04em;margin:0;font-size:clamp(1.25rem,2vw,1.55rem)}.brand h1 span{color:var(--lightningcss-light,#005da0)var(--lightningcss-dark,#70b8ff)}.brand p,.session-clock span,.connection-bar__status span,.chart-heading span,.source-row>div>span,.stat-card span,.stat-card small,.app-footer p{color:var(--muted)}.brand p{margin:3px 0 0;font-size:.76rem}.header-tools{justify-content:flex-end;gap:12px;min-width:0}.time-window,.mode-switch{border:1px solid var(--border);background:var(--lightningcss-light,#1c2d5509)var(--lightningcss-dark,#ffffff09);border-radius:12px;grid-auto-columns:1fr;grid-auto-flow:column;padding:4px;display:grid}.time-window button,.mode-switch button{min-height:44px;color:var(--muted);cursor:pointer;white-space:nowrap;background:0 0;border:0;border-radius:8px;padding:0 12px;transition:all .16s}.time-window button{font-size:.72rem;font-weight:700}.time-window button:hover,.mode-switch button:hover{color:var(--text);background:var(--lightningcss-light,#1c2d550d)var(--lightningcss-dark,#ffffff0d)}.time-window button.is-active,.mode-switch button.is-active{color:#fff;background:var(--lightningcss-light,#2176e5)var(--lightningcss-dark,#2378e7);box-shadow:0 5px 16px var(--lightningcss-light,#2478e726)var(--lightningcss-dark,#2378e740)}.speed-control{border:1px solid var(--border);min-height:52px;color:var(--muted);white-space:nowrap;background:var(--lightningcss-light,#1c2d5509)var(--lightningcss-dark,#ffffff09);border-radius:12px;grid-template-columns:auto minmax(62px,92px) 26px;align-items:center;gap:7px;padding:4px 8px;font-size:.66rem;font-weight:700;display:grid}.speed-control input{width:100%}.speed-control output{color:var(--lightningcss-light,#1f3554)var(--lightningcss-dark,#dbeaff);font-variant-numeric:tabular-nums;text-align:right;font-size:.76rem}.speed-control.is-locked{border-color:var(--lightningcss-light,#17804a33)var(--lightningcss-dark,#38d48833)}.header-actions{gap:6px}.icon-button{border:1px solid var(--border);width:44px;min-width:44px;height:44px;color:var(--text);cursor:pointer;background:var(--lightningcss-light,#1c2d5509)var(--lightningcss-dark,#ffffff09);border-radius:11px;place-items:center;padding:0;transition:all .16s;display:inline-grid}a.icon-button{text-decoration:none}.icon-button:hover:not(:disabled){border-color:var(--border-strong);background:var(--lightningcss-light,#1c2d5514)var(--lightningcss-dark,#ffffff14);transform:translateY(-1px)}.icon-button svg{width:17px;height:17px}.session-clock{border-left:1px solid var(--border);gap:9px;min-width:96px;padding-left:12px}.session-clock>svg{width:17px;color:var(--muted)}.session-clock div{display:grid}.session-clock span{text-transform:uppercase;letter-spacing:.08em;font-size:.65rem;font-weight:700}.session-clock strong{font-variant-numeric:tabular-nums;font-size:1.08rem}.connection-bar{z-index:35;border:1px solid var(--border);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);background:var(--lightningcss-light,#eef5fee6)var(--lightningcss-dark,#0c1828e6);border-radius:15px;justify-content:space-between;gap:16px;margin:7px 0;padding:7px 10px 7px 13px;position:sticky;top:78px;box-shadow:0 10px 30px var(--lightningcss-light,#16233f0b)var(--lightningcss-dark,#00000026)}.connection-bar--connected{background:var(--lightningcss-light,#e5f1f1e6)var(--lightningcss-dark,#0b2727e6);border-color:var(--lightningcss-light,#17804a40)var(--lightningcss-dark,#38d48840)}.connection-bar--error{border-color:var(--lightningcss-light,#b3261e47)var(--lightningcss-dark,#fb5b6747)}.connection-bar__status{gap:10px;min-width:0}.connection-indicator{background:var(--lightningcss-light,#7c90a8)var(--lightningcss-dark,#61748b);border-radius:50%;flex:0 0 9px;width:9px;height:9px;box-shadow:0 0 0 5px var(--lightningcss-light,#7c90a80f)var(--lightningcss-dark,#61748b1a)}.connection-bar--connected .connection-indicator{background:var(--green);box-shadow:0 0 0 5px var(--lightningcss-light,#17804a11)var(--lightningcss-dark,#38d4881c),0 0 18px var(--lightningcss-light,#17804a36)var(--lightningcss-dark,#38d48859)}.connection-bar--connecting .connection-indicator{background:var(--amber);animation:1.2s infinite pulse}.connection-bar--error .connection-indicator{background:var(--red)}.connection-bar__status>div{min-width:0;display:grid}.connection-bar__status strong{font-size:.86rem}.connection-bar__status span{text-overflow:ellipsis;white-space:nowrap;margin-top:2px;font-size:.73rem;overflow:hidden}.connection-bar__actions,.button-row{flex-wrap:wrap;justify-content:flex-end;gap:8px}.button{color:#fff;cursor:pointer;white-space:nowrap;border:1px solid #0000;border-radius:10px;justify-content:center;gap:7px;min-height:44px;padding:0 14px;font-size:.78rem;font-weight:750;transition:all .16s}.button:hover:not(:disabled){filter:brightness(1.08);transform:translateY(-1px)}.button svg{width:16px;height:16px}.button--primary{background:var(--lightningcss-light,#2176e5)var(--lightningcss-dark,#2378e7);box-shadow:0 8px 22px var(--lightningcss-light,#2478e71f)var(--lightningcss-dark,#2378e733)}.button--success{background:#168856;box-shadow:0 8px 22px var(--lightningcss-light,#3ca36f1f)var(--lightningcss-dark,#16885633)}.button--warning{color:var(--lightningcss-light,#faf6f2)var(--lightningcss-dark,#17100a);background:var(--amber)}.button--danger{color:var(--lightningcss-light,#9a2e45)var(--lightningcss-dark,#ffb5bd);background:var(--lightningcss-light,#ffbdc057)var(--lightningcss-dark,#7e202f57);border-color:var(--lightningcss-light,#b3261e73)var(--lightningcss-dark,#fb5b6773)}.button--ghost{border-color:var(--border);color:var(--lightningcss-light,#394a5e)var(--lightningcss-dark,#c4d0df);background:var(--lightningcss-light,#1c2d5509)var(--lightningcss-dark,#ffffff09)}.button--light{color:#62121c;background:#fff0f1}.spinner{border:2px solid var(--lightningcss-light,#1c2d5524)var(--lightningcss-dark,#fff3);border-top-color:#fff;border-radius:50%;width:15px;height:15px;animation:.8s linear infinite spin}.alarm-banner,.message-banner{border-radius:14px;gap:12px;margin:10px 0;padding:12px 14px}.alarm-banner{color:#fff6f7;background:linear-gradient(100deg,#801b2bf0,#541622eb);border:1px solid #fb5b677a;align-items:flex-start;box-shadow:0 12px 34px #4b0e194d}.alarm-banner__icon{background:#ffffff1a;border-radius:10px;flex:0 0 36px;place-items:center;width:36px;height:36px;display:grid}.alarm-banner__icon svg{width:20px}.alarm-banner>div{flex:1}.alarm-banner strong{font-size:.92rem}.alarm-banner p{color:#ffd1d6;margin:3px 0 0;font-size:.78rem;line-height:1.45}.message-banner{color:var(--lightningcss-light,#154178)var(--lightningcss-dark,#bedaff);background:var(--lightningcss-light,#aad1ff38)var(--lightningcss-dark,#194b8238);border:1px solid var(--lightningcss-light,#1f63c938)var(--lightningcss-dark,#3b8fff38);min-height:46px;font-size:.78rem}.message-banner>svg{flex:0 0 18px;width:18px}.message-banner>span,.message-banner>div{flex:1}.message-banner>div{display:grid}.message-banner--error{color:var(--lightningcss-light,#903a49)var(--lightningcss-dark,#ffc4ca);background:var(--lightningcss-light,#ffbdc038)var(--lightningcss-dark,#7e202f38);border-color:var(--lightningcss-light,#b3261e47)var(--lightningcss-dark,#fb5b6747)}.connection-help{gap:3px}.connection-help p{color:var(--lightningcss-light,#6e2c38)var(--lightningcss-dark,#f5c5ca);margin:2px 0 0;line-height:1.4}.connection-help code{color:var(--lightningcss-light,#392529)var(--lightningcss-dark,#fff1f3)}.connection-help a{color:var(--lightningcss-light,#16233f)var(--lightningcss-dark,#fff);text-underline-offset:2px;font-weight:750}.connection-help a:hover,.connection-help a:focus-visible{color:var(--lightningcss-light,#57242f)var(--lightningcss-dark,#ffdbe0)}.message-banner .icon-button{border:0;width:32px;min-width:32px;height:32px}.dashboard-grid{grid-template-columns:minmax(300px,.78fr) minmax(480px,1.5fr) minmax(320px,.92fr);align-items:start;gap:10px;display:grid}.dashboard-left,.dashboard-center,.dashboard-right{align-content:start;gap:10px;min-width:0;display:grid}.panel{border:1px solid var(--border);background:var(--panel);box-shadow:var(--shadow);-webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);border-radius:15px}.panel-heading{justify-content:space-between;gap:16px;padding:12px 14px 6px}.panel-heading h2,.chart-heading h2,.modal__title h2{letter-spacing:-.02em;margin:2px 0 0;font-size:1rem}.eyebrow{color:var(--lightningcss-light,#5d7493)var(--lightningcss-dark,#6f85a2);letter-spacing:.105em;text-transform:uppercase;margin:0;font-size:.64rem;font-weight:800}.status-pill{color:var(--lightningcss-light,#006c46)var(--lightningcss-dark,#72e7ae);background:var(--green-soft);border:1px solid var(--lightningcss-light,#17804a33)var(--lightningcss-dark,#38d48833);border-radius:999px;gap:6px;min-height:30px;padding:0 10px;font-size:.7rem;font-weight:750}.status-pill svg{width:14px}.device-card{flex-direction:column;display:flex}.device-photo-wrap{aspect-ratio:1.85;background:radial-gradient(circle,var(--lightningcss-light,#6cacf526)var(--lightningcss-dark,#2766aa26),#0000 55%),var(--lightningcss-light,#eff6ff)var(--lightningcss-dark,#0a1625);border:1px solid var(--lightningcss-light,#1c2d551e)var(--lightningcss-dark,#94a3b821);border-radius:15px;width:min(440px,100% - 20px);margin:4px auto 8px;position:relative;overflow:hidden}.device-photo{z-index:1;object-fit:contain;filter:drop-shadow(0 22px 30px var(--lightningcss-light,#16233f20)var(--lightningcss-dark,#0000006b));width:94%;height:96%;position:absolute;inset:2% 3%}.heat-glow{z-index:2;aspect-ratio:1;filter:blur(12px);mix-blend-mode:screen;pointer-events:none;background:radial-gradient(circle,var(--lightningcss-light,#bd2700c7)var(--lightningcss-dark,#ff4d28c7),var(--lightningcss-light,#9b400038)var(--lightningcss-dark,#ff7b3138) 42%,#0000 72%);border-radius:50%;width:18%;margin-left:-9%;transition:opacity .4s,transform .4s;position:absolute;top:9.5%}.heat-glow--t2{left:39.5%}.heat-glow--t1{left:57.3%}.photo-reading{z-index:3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none;background:var(--lightningcss-light,#f4f9ffbd)var(--lightningcss-dark,#050d17bd);border:1px solid var(--lightningcss-light,#1c2d551d)var(--lightningcss-dark,#ffffff29);border-radius:9px;min-width:66px;padding:6px 8px;display:grid;position:absolute;top:4%;box-shadow:0 9px 28px var(--lightningcss-light,#16233f14)var(--lightningcss-dark,#00000042)}.photo-reading--t2{left:39.5%;transform:translate(calc(-100% - 8px))}.photo-reading--t1{left:57.3%;transform:translate(8px)}.photo-reading span{color:var(--muted);letter-spacing:.08em;font-size:.55rem;font-weight:800}.photo-reading strong{font-variant-numeric:tabular-nums;font-size:.9rem}.device-sources{gap:6px;padding:0 10px 10px;display:grid}.source-row{border:1px solid var(--border);background:var(--lightningcss-light,#1c2d5506)var(--lightningcss-dark,#ffffff06);border-radius:12px;grid-template-columns:34px minmax(100px,1fr) auto;align-items:center;gap:10px;min-height:50px;padding:6px 9px;display:grid}.source-row--physical{background:var(--lightningcss-light,#17804a0e)var(--lightningcss-dark,#38d4880e);border-color:var(--lightningcss-light,#17804a33)var(--lightningcss-dark,#38d48833)}.source-icon{color:var(--lightningcss-light,#005aab)var(--lightningcss-dark,#81baff);background:var(--blue-soft);border-radius:10px;place-items:center;width:34px;height:34px;display:grid}.source-row--physical .source-icon{color:var(--lightningcss-light,#006d44)var(--lightningcss-dark,#66dea1);background:var(--green-soft)}.source-icon svg{width:17px}.source-row>div:nth-child(2){display:grid}.source-row>div>strong{font-size:.78rem}.source-row>div>span{margin-top:2px;font-size:.67rem}.source-row dl{gap:16px;margin:0;display:flex}.source-row dl div{text-align:right;display:grid}.source-row dt{color:var(--subtle);font-size:.58rem;font-weight:800}.source-row dd{font-variant-numeric:tabular-nums;margin:2px 0 0;font-size:.82rem;font-weight:750}.control-panel{padding-bottom:10px}.panel-heading--controls{align-items:flex-end;padding-bottom:8px}.mode-switch button{min-width:86px;font-size:.72rem;font-weight:750}.mode-switch button.is-active:last-child{background:#168856;box-shadow:0 5px 16px var(--lightningcss-light,#3ca36f23)var(--lightningcss-dark,#1688563b)}.suggestion{color:var(--lightningcss-light,#1b4679)var(--lightningcss-dark,#b9d5f8);background:var(--lightningcss-light,#65a5f01a)var(--lightningcss-dark,#2969b01a);border:1px solid var(--lightningcss-light,#1f63c929)var(--lightningcss-dark,#3b8fff29);border-radius:11px;align-items:flex-start;gap:9px;margin:0 10px 8px;padding:7px 9px}.suggestion svg{flex:0 0 16px;width:16px;margin-top:1px}.suggestion p{margin:0;font-size:.7rem;line-height:1.45}.heater-grid,.setpoint-grid,.gain-grid,.stat-grid{display:grid}.heater-grid,.setpoint-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px;padding:0 10px}.heater-card,.setpoint-card{border:1px solid var(--border);background:var(--lightningcss-light,#1c2d5506)var(--lightningcss-dark,#ffffff06);border-radius:13px;min-width:0;padding:10px}.setpoint-card{padding:8px}.heater-card--red,.setpoint-card--red{border-top-color:var(--lightningcss-light,#b3261e7a)var(--lightningcss-dark,#fb5b677a)}.heater-card--blue,.setpoint-card--blue{border-top-color:var(--lightningcss-light,#1f66d17a)var(--lightningcss-dark,#4f9cff7a)}.heater-card__heading{border-bottom:1px solid var(--border);justify-content:space-between;gap:8px;padding-bottom:10px}.heater-card__heading>div{color:var(--lightningcss-light,#ae0033)var(--lightningcss-dark,#ff818a);gap:6px}.heater-card--blue .heater-card__heading>div{color:var(--lightningcss-light,#005bb0)var(--lightningcss-dark,#70b0ff)}.heater-card__heading svg{width:17px}.heater-card__heading strong{font-size:.8rem}.heater-card__heading>span{font-variant-numeric:tabular-nums;font-size:.95rem;font-weight:800}.heater-card__heading small{color:var(--subtle);font-size:.54rem}.physical-inline{color:var(--lightningcss-light,#006c46)var(--lightningcss-dark,#76dba8);background:var(--lightningcss-light,#17804a12)var(--lightningcss-dark,#38d48812);border-radius:8px;gap:5px;min-height:30px;margin-top:8px;padding:0 8px;font-size:.64rem}.physical-inline svg{width:13px}.power-field{gap:8px;margin-top:12px;display:grid}.section-label{color:var(--lightningcss-light,#475773)var(--lightningcss-dark,#aebbd0);justify-content:space-between;gap:6px;font-size:.68rem;font-weight:700}.range-with-value{gap:9px}input[type=range]{width:100%;min-width:0;min-height:44px;accent-color:var(--blue);cursor:pointer}.heater-card--red input[type=range]{accent-color:var(--red)}.number-with-unit{border:1px solid var(--border);background:var(--lightningcss-light,#f6fbff6b)var(--lightningcss-dark,#0209116b);border-radius:9px;grid-template-columns:minmax(48px,1fr) auto;align-items:center;min-width:82px;height:46px;padding-right:9px;display:grid}.number-with-unit input{width:100%;min-width:0;height:100%;color:var(--text);font-variant-numeric:tabular-nums;background:0 0;border:0;outline:0;padding:0 4px 0 9px}.number-with-unit small{color:var(--muted);font-size:.63rem}.power-meter{background:var(--lightningcss-light,#1c2d550f)var(--lightningcss-dark,#ffffff0f);border-radius:999px;height:5px;margin-top:10px;overflow:hidden}.power-meter span{border-radius:inherit;background:linear-gradient(90deg, var(--lightningcss-light,#ffacb1)var(--lightningcss-dark,#842d39), var(--red));height:100%;transition:width .18s;display:block}.heater-card--blue .power-meter span{background:linear-gradient(90deg, var(--lightningcss-light,#a1caff)var(--lightningcss-dark,#1f4f89), var(--blue))}.pid-controls{gap:8px;display:grid}.setpoint-card__heading{color:var(--lightningcss-light,#ad0033)var(--lightningcss-dark,#ff838c);justify-content:space-between;gap:7px;margin-bottom:6px}.setpoint-card--blue .setpoint-card__heading{color:var(--lightningcss-light,#005baa)var(--lightningcss-dark,#74b4ff)}.setpoint-card__heading svg{width:17px}.setpoint-card__heading strong{margin-right:auto;font-size:.8rem}.setpoint-card__heading>span{color:var(--subtle);font-size:.6rem;font-weight:800}.setpoint-card>label{color:var(--muted);justify-content:space-between;align-items:center;gap:10px;font-size:.68rem;display:flex}.number-with-unit--large{min-width:105px}.loop-readings{grid-template-columns:repeat(2,1fr);gap:7px;margin-top:5px;display:grid}.loop-readings>div{background:var(--lightningcss-light,#1c2d5509)var(--lightningcss-dark,#ffffff09);border-radius:9px;padding:4px 6px;display:grid}.loop-readings span,.loop-readings small{color:var(--subtle);font-size:.58rem}.loop-readings strong{margin:2px 0;font-size:.78rem}.pid-gains{background:var(--lightningcss-light,#17804a0a)var(--lightningcss-dark,#38d4880a);border:1px solid var(--lightningcss-light,#17804a29)var(--lightningcss-dark,#38d48829);border-radius:12px;margin:0 10px;padding:6px 9px}.gain-grid{grid-template-columns:repeat(3,minmax(0,1fr));gap:8px;margin-top:3px}.gain-field{gap:6px;display:grid}.gain-field>span{color:var(--muted);align-items:center;gap:5px;font-size:.64rem;font-weight:750;display:flex}.gain-field>input{border:1px solid var(--border);width:100%;min-width:0;height:44px;color:var(--text);background:var(--lightningcss-light,#f6fbff6b)var(--lightningcss-dark,#0209116b);border-radius:9px;outline:0;padding:0 10px}.gain-field>input:focus{border-color:var(--lightningcss-light,#1f63c994)var(--lightningcss-dark,#3b8fff94)}.pid-type-panel{background:var(--lightningcss-light,#65a5f00e)var(--lightningcss-dark,#2969b00e);border:1px solid var(--lightningcss-light,#1f63c92b)var(--lightningcss-dark,#3b8fff2b);border-radius:12px;gap:4px;margin:0 10px;padding:6px 9px;display:grid}.pid-type-panel .section-label strong{color:var(--lightningcss-light,#005aaa)var(--lightningcss-dark,#8fc2ff);font-size:.68rem}.pid-type-switch{grid-template-columns:repeat(3,minmax(0,1fr));gap:6px;display:grid}.pid-type-switch button{border:1px solid var(--border);min-height:44px;color:var(--muted);cursor:pointer;background:var(--lightningcss-light,#f6fbff59)var(--lightningcss-dark,#02091159);border-radius:8px;padding:0 6px;font-size:.62rem;font-weight:750}.pid-type-switch button.is-active{color:var(--lightningcss-light,#003a27)var(--lightningcss-dark,#d8f8e8);background:var(--lightningcss-light,#3ca36f6b)var(--lightningcss-dark,#1688566b);border-color:var(--lightningcss-light,#17804a66)var(--lightningcss-dark,#38d48866)}.pid-type-meta{align-items:center;gap:8px;display:flex}.pid-reference-link{color:var(--lightningcss-light,#2e5c95)var(--lightningcss-dark,#bcd9ff);text-underline-offset:2px;padding:4px 0;font-size:.64rem}.pid-reference-link:hover,.pid-reference-link:focus-visible{color:var(--lightningcss-light,#16233f)var(--lightningcss-dark,#fff)}.help-tip{z-index:10;display:inline-flex;position:relative}.help-tip[open]{z-index:25}.help-tip summary{color:#0000;cursor:help;background:0 0;border:0;place-items:center;width:44px;height:44px;margin:-5px;font-size:0;font-weight:900;list-style:none;display:grid;position:relative}.help-tip summary:after{border:1px solid var(--border-strong);color:var(--lightningcss-light,#456284)var(--lightningcss-dark,#91a8c4);content:"?";background:var(--lightningcss-light,#1c2d550a)var(--lightningcss-dark,#ffffff0a);border-radius:50%;place-items:center;width:22px;height:22px;font-size:.67rem;display:grid}.help-tip summary::-webkit-details-marker{display:none}.help-tip__content{z-index:200;border:1px solid var(--border-strong);color:var(--lightningcss-light,#2e3d4f)var(--lightningcss-dark,#d7e1ee);overscroll-behavior:contain;background:var(--lightningcss-light,#e7effc)var(--lightningcss-dark,#132239);border-radius:10px;width:min(270px,100vw - 20px);max-height:calc(100vh - 20px);padding:10px 11px;font-size:.7rem;font-weight:500;line-height:1.45;position:fixed;top:0;left:0;overflow-y:auto;box-shadow:0 15px 36px var(--lightningcss-light,#16233f20)var(--lightningcss-dark,#0000006b)}.charts-region{gap:10px;min-width:0;display:grid}.chart-loading{min-height:clamp(440px,60vh,620px);color:var(--muted);justify-content:center;align-items:center;gap:10px;font-size:.78rem;display:flex}.chart-block{min-width:0}.chart-heading{justify-content:space-between;align-items:flex-end;gap:12px;padding:0 4px 10px;display:flex}.chart-heading span{font-size:.66rem}.simulation-plot-toggle{color:var(--lightningcss-light,#3a506b)var(--lightningcss-dark,#b8c8dc);cursor:pointer;align-items:center;gap:7px;min-height:32px;font-size:.68rem;font-weight:700;display:flex}.simulation-plot-toggle input{width:17px;height:17px;accent-color:var(--blue)}.device-plots{gap:10px;min-height:0;display:grid}.device-plot{grid-template-rows:auto minmax(0,1fr);min-width:0;height:clamp(440px,60vh,620px);min-height:0;display:grid;overflow:hidden}.device-plot__heading{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:8px;min-height:30px;padding:4px 8px;display:flex}.device-plot__heading>strong{white-space:nowrap;font-size:.72rem}.plot-legend{color:var(--lightningcss-light,#445871)var(--lightningcss-dark,#aebdd0);justify-content:flex-end;align-items:center;gap:8px;font-size:.58rem;display:flex}.plot-legend span{white-space:nowrap;align-items:center;gap:4px;display:inline-flex}.legend-line{background:currentColor;width:13px;height:2px}.legend-line--t1{color:var(--lightningcss-light,#c62828)var(--lightningcss-dark,#fb5b5b)}.legend-line--t2{color:var(--lightningcss-light,#1f66d1)var(--lightningcss-dark,#4f9cff)}.legend-line--setpoint{color:var(--lightningcss-light,#a22042)var(--lightningcss-dark,#fda4af);background:repeating-linear-gradient(90deg,currentColor 0 3px,#0000 3px 6px)}.device-subplots{grid-template-rows:minmax(0,2fr) minmax(0,1fr);min-height:0;transition:grid-template-rows .14s;display:grid}.device-subplots[data-focus=top]{grid-template-rows:minmax(0,1fr) minmax(0,78px)}.device-subplots[data-focus=bottom]{grid-template-rows:minmax(0,78px) minmax(0,1fr)}.subplot{cursor:zoom-in;min-width:0;min-height:0;position:relative}.subplot[data-focused=true]{cursor:zoom-out}.subplot:focus-visible{outline:2px solid var(--accent,var(--lightningcss-light,#1f66d1)var(--lightningcss-dark,#4f9cff));outline-offset:-2px}.subplot__expand{z-index:2;color:var(--lightningcss-light,#596d88)var(--lightningcss-dark,#7f91a9);opacity:0;pointer-events:none;font-size:.6rem;line-height:1;transition:opacity .12s;position:absolute;bottom:2px;left:8px}@media (hover:hover){.subplot:hover .subplot__expand{opacity:.9}}.subplot:focus-visible .subplot__expand{opacity:.9}.subplot--temperature{border-bottom:1px solid var(--border)}.subplot__label{z-index:2;color:var(--lightningcss-light,#536883)var(--lightningcss-dark,#889ab1);pointer-events:none;font-size:.55rem;font-weight:750;position:absolute;top:3px;left:47px}.stat-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.stat-card{border:1px solid var(--border);background:var(--panel-soft);border-radius:14px;align-items:flex-start;gap:10px;min-height:76px;padding:10px;box-shadow:0 13px 34px var(--lightningcss-light,#16233f0e)var(--lightningcss-dark,#0000002e)}.stat-card--green{background:var(--lightningcss-light,#bbdfd459)var(--lightningcss-dark,#184c3f59);border-color:var(--lightningcss-light,#17804a3d)var(--lightningcss-dark,#38d4883d)}.stat-card__icon{color:var(--lightningcss-light,#005ca5)var(--lightningcss-dark,#73b6ff);background:var(--blue-soft);border-radius:9px;flex:0 0 30px;place-items:center;width:30px;height:30px;display:grid}.stat-card--green .stat-card__icon{color:var(--lightningcss-light,#006c44)var(--lightningcss-dark,#69dfa4);background:var(--green-soft)}.stat-card__icon svg{width:16px}.stat-card>div{min-width:0;display:grid}.stat-card span{letter-spacing:.08em;text-transform:uppercase;font-size:.59rem;font-weight:800}.stat-card strong{text-overflow:ellipsis;white-space:nowrap;margin:4px 0;font-size:.84rem;overflow:hidden}.stat-card small{text-overflow:ellipsis;white-space:nowrap;font-size:.59rem;overflow:hidden}.app-footer{justify-content:space-between;gap:16px;min-height:38px;margin-top:4px;padding:0 4px;font-size:.7rem}.app-footer p{margin:0}.app-footer>div{gap:16px}.app-footer a{text-decoration:none}.app-footer a:hover{text-decoration:underline}.modal-backdrop{z-index:100;-webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);background:var(--lightningcss-light,#16233f68)var(--lightningcss-dark,#02070ebd);place-items:center;padding:18px;display:grid;position:fixed;inset:0}.modal{border:1px solid var(--border-strong);background:var(--lightningcss-light,#eaf2fc)var(--lightningcss-dark,#101e30);border-radius:18px;width:min(680px,100%);max-height:min(860px,100vh - 36px);overflow:hidden;box-shadow:0 30px 90px var(--lightningcss-light,#16233f26)var(--lightningcss-dark,#00000080)}.modal--compact{width:min(560px,100%)}.modal__header{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:12px;min-height:76px;padding:13px 16px;display:flex}.modal__title{gap:11px}.modal__icon{color:var(--lightningcss-light,#005ba8)var(--lightningcss-dark,#80bbff);background:var(--blue-soft);border-radius:11px;place-items:center;width:40px;height:40px;display:grid}.modal__icon--green{color:var(--lightningcss-light,#006c45)var(--lightningcss-dark,#70e0a8);background:var(--green-soft)}.modal__icon svg{width:19px}.modal__body{max-height:calc(100vh - 210px);padding:16px;overflow-y:auto}.modal__footer{border-top:1px solid var(--border);background:var(--lightningcss-light,#1c2d5505)var(--lightningcss-dark,#ffffff05);justify-content:space-between;gap:12px;min-height:70px;padding:12px 16px}.modal__footer--end{justify-content:flex-end}.settings-list{gap:8px;display:grid}.settings-section-label{color:var(--lightningcss-light,#165ea8)var(--lightningcss-dark,#7eaee8);letter-spacing:.08em;text-transform:uppercase;margin:8px 2px 0;font-size:.68rem;font-weight:800}.settings-lock-note{color:var(--lightningcss-light,#903a49)var(--lightningcss-dark,#ffc4ca);margin:-2px 4px 2px;font-size:.7rem}.setting-field{border:1px solid var(--border);background:var(--lightningcss-light,#1c2d5505)var(--lightningcss-dark,#ffffff05);border-radius:11px;grid-template-columns:minmax(160px,.75fr) minmax(260px,1.25fr);align-items:center;gap:16px;min-height:68px;padding:10px 11px;display:grid}.setting-field__label{color:var(--lightningcss-light,#38475b)var(--lightningcss-dark,#c8d3e1);justify-content:space-between;align-items:center;gap:8px;font-size:.73rem;font-weight:700;display:flex}.setting-field__control{grid-template-columns:minmax(100px,1fr) 112px;align-items:center;gap:11px;display:grid}.safety-note{color:var(--lightningcss-light,#00452f)var(--lightningcss-dark,#c7edda);background:var(--lightningcss-light,#17804a0f)var(--lightningcss-dark,#38d4880f);border:1px solid var(--lightningcss-light,#17804a30)var(--lightningcss-dark,#38d48830);border-radius:11px;align-items:flex-start;gap:10px;padding:11px}.safety-note svg{color:var(--lightningcss-light,#006c44)var(--lightningcss-dark,#63dca0);flex:0 0 19px;width:19px}.safety-note p{margin:0;font-size:.72rem;line-height:1.5}.arm-summary{border:1px solid var(--border);border-radius:11px;gap:0;margin:14px 0 0;display:grid;overflow:hidden}.arm-summary div{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;min-height:45px;padding:8px 11px;display:flex}.arm-summary div:last-child{border-bottom:0}.arm-summary dt{color:var(--muted);font-size:.7rem}.arm-summary dd{text-align:right;margin:0;font-size:.72rem;font-weight:750}@keyframes spin{to{transform:rotate(360deg)}}@keyframes pulse{50%{opacity:.45;transform:scale(.82)}}@media (max-width:1500px){.dashboard-grid{grid-template-columns:minmax(340px,.9fr) minmax(480px,1.3fr)}.dashboard-right{grid-column:1/-1}}@media (max-width:1260px){.header-tools{gap:8px}.speed-control{grid-template-columns:auto minmax(54px,1fr) 26px}.time-window button{padding:0 9px}.stat-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media (max-width:1040px){.app-header{align-items:flex-start;gap:12px;position:relative}.header-tools{flex-wrap:wrap}.time-window{order:3;width:100%}.connection-bar{top:10px}.dashboard-grid{grid-template-columns:1fr}.dashboard-left{grid-template-columns:minmax(300px,.85fr) minmax(360px,1.15fr);align-items:stretch}}@media (max-width:820px){.app-shell{padding:8px 8px max(12px, env(safe-area-inset-bottom))}.app-header{border-radius:15px;flex-direction:column;padding:11px;position:static}.connection-bar{position:static}.brand{width:100%}.header-tools{flex-wrap:wrap;justify-content:flex-start;gap:8px;width:100%}.time-window{flex:100%;min-width:0}.speed-control{flex:160px;min-width:0}.time-window button{min-width:0;padding:0 6px}.session-clock{margin-left:auto}.connection-bar{flex-direction:column;align-items:stretch;gap:10px;padding:11px}.connection-bar__actions{grid-template-columns:repeat(2,minmax(0,1fr));display:grid}.connection-bar__actions .button--danger:last-child:nth-child(odd){grid-column:1/-1}.dashboard-left{grid-template-columns:1fr}.alarm-banner{grid-template-columns:36px 1fr;display:grid}.alarm-banner .button{grid-column:1/-1;width:100%}.device-plot{height:420px}.modal-backdrop{align-items:end;padding:0}.modal{width:100%;max-height:calc(100vh - max(8px, env(safe-area-inset-top)));border-radius:18px 18px 0 0}.modal__footer{padding-bottom:max(12px, env(safe-area-inset-bottom))}.setting-field{grid-template-columns:1fr;gap:9px}}@media (max-width:560px){.brand__mark{flex-basis:40px;width:40px;height:40px}.brand p{display:none}.header-tools{flex-wrap:wrap;justify-content:flex-start;align-items:center;gap:8px;display:flex}.header-actions{display:contents}.session-clock{border-left:0;order:1;gap:6px;min-width:0;margin-left:auto;padding-left:0}.session-clock span{display:none}.session-clock strong{font-size:.95rem}.icon-button--logo{order:1}.speed-control{flex:100%;order:2;grid-template-columns:auto minmax(0,1fr) 30px;min-width:0;min-height:46px}.time-window{flex:100%;order:3;min-width:0}.panel-heading{padding:14px 13px 7px}.panel-heading--controls{flex-direction:column;align-items:stretch}.mode-switch{width:100%}.device-photo-wrap{width:calc(100% - 20px);margin:7px 10px 10px}.photo-reading{min-width:56px;padding:5px 6px}.photo-reading strong{font-size:.76rem}.device-sources{padding:0 10px 10px}.source-row{grid-template-columns:32px 1fr}.source-row dl{border-top:1px solid var(--border);grid-column:1/-1;justify-content:flex-end;padding-top:7px}.heater-grid,.setpoint-grid{grid-template-columns:1fr;padding:0 10px}.pid-gains{margin:0 10px}.gain-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.gain-field>input{padding:0 7px}.chart-heading{flex-direction:column;align-items:flex-start;gap:4px}.device-plot{height:390px}.device-plot__heading{flex-direction:column;align-items:flex-start;gap:3px}.plot-legend{justify-content:flex-start;width:100%}.stat-grid{grid-template-columns:1fr 1fr;gap:8px}.stat-card{min-height:100px;padding:11px}.stat-card__icon{display:none}.app-footer{flex-direction:column;align-items:flex-start;padding:10px 4px}.modal__footer{flex-direction:column;align-items:stretch}.modal__footer .button-row,.modal__footer .button{width:100%}.setting-field__control{grid-template-columns:minmax(100px,1fr) 98px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.connection-bar--simulator{background:var(--lightningcss-light,#e6f1fee6)var(--lightningcss-dark,#0d2038e6);border-color:var(--lightningcss-light,#1f63c93d)var(--lightningcss-dark,#3b8fff3d)}.connection-bar--simulator .connection-indicator{background:var(--blue);box-shadow:0 0 0 5px var(--lightningcss-light,#1f63c912)var(--lightningcss-dark,#3b8fff1f),0 0 18px var(--lightningcss-light,#1f63c92e)var(--lightningcss-dark,#3b8fff4d)}.status-pill--idle{color:var(--lightningcss-light,#485e79)var(--lightningcss-dark,#9fb0c6);background:var(--lightningcss-light,#1c2d550a)var(--lightningcss-dark,#ffffff0a);border-color:var(--lightningcss-light,#1c2d5532)var(--lightningcss-dark,#94a3b838)}.reference-link{color:var(--lightningcss-light,#035ba6)var(--lightningcss-dark,#9ecbff);white-space:nowrap;align-items:center;gap:5px;padding:6px 0;font-size:.68rem;font-weight:750;text-decoration:none;display:inline-flex}.reference-link:hover,.reference-link:focus-visible{color:var(--lightningcss-light,#16233f)var(--lightningcss-dark,#fff);text-decoration:underline}.reference-link svg,.step-detail svg{width:12px;height:12px}.run-panel{gap:9px;padding-bottom:11px;display:grid}.run-progress-label{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;font-size:.72rem;font-weight:700}.progress-track{background:var(--lightningcss-light,#1c2d5512)var(--lightningcss-dark,#ffffff12);border-radius:999px;height:4px;margin:-4px 13px 0;overflow:hidden}.progress-track span{border-radius:inherit;background:linear-gradient(90deg, #1f5fae, var(--blue));height:100%;transition:width .2s linear;display:block}.source-switch,.model-switch,.step-buttons{gap:6px;margin:0 12px;display:grid}.source-switch{grid-template-columns:repeat(2,minmax(0,1fr))}.source-switch button,.model-switch button,.step-buttons button{border:1px solid var(--border);min-height:44px;color:var(--muted);cursor:pointer;background:var(--lightningcss-light,#f6fbff57)var(--lightningcss-dark,#02091157);border-radius:10px;justify-content:center;align-items:center;gap:6px;padding:0 8px;font-size:.68rem;font-weight:750;transition:all .15s;display:inline-flex}.source-switch button svg{width:14px;height:14px}.source-switch button:hover:not(:disabled),.model-switch button:hover:not(:disabled),.step-buttons button:hover:not(:disabled){border-color:var(--border-strong);color:var(--text)}.source-switch button.is-active,.model-switch button.is-active,.step-buttons button.is-active{color:#fff;background:var(--lightningcss-light,#2176e5)var(--lightningcss-dark,#2378e7);border-color:var(--lightningcss-light,#1f63c980)var(--lightningcss-dark,#3b8fff80);box-shadow:0 6px 18px var(--lightningcss-light,#2478e725)var(--lightningcss-dark,#2378e73d)}.step-select{gap:7px;display:grid}.step-select .section-label{margin:0 12px}.step-buttons{grid-template-columns:repeat(2,minmax(0,1fr))}.step-buttons button:last-child:nth-child(odd){grid-column:1/-1}.step-detail{color:var(--muted);margin:0 12px;font-size:.68rem;line-height:1.5}.manual-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:0 12px;display:grid}.manual-card{border:1px solid var(--border);background:var(--lightningcss-light,#1c2d5506)var(--lightningcss-dark,#ffffff06);border-top-width:2px;border-radius:11px;padding:7px 9px 2px}.manual-card--red{border-top-color:var(--lightningcss-light,#b3261e80)var(--lightningcss-dark,#fb5b6780)}.manual-card--blue{border-top-color:var(--lightningcss-light,#1f66d180)var(--lightningcss-dark,#4f9cff80)}.manual-card--red input[type=range]{accent-color:var(--red)}.manual-card__heading{color:var(--lightningcss-light,#ac0033)var(--lightningcss-dark,#ff858e);align-items:center;gap:6px;font-size:.72rem;display:flex}.manual-card--blue .manual-card__heading{color:var(--lightningcss-light,#005baa)var(--lightningcss-dark,#74b4ff)}.manual-card__heading svg{width:14px}.manual-card__heading span{color:var(--text);font-variant-numeric:tabular-nums;margin-left:auto;font-weight:800}.reading-grid{grid-template-columns:repeat(5,minmax(0,1fr));gap:6px;margin:0 12px;display:grid}.reading-grid>div{border:1px solid var(--border);text-align:center;background:var(--lightningcss-light,#1c2d5506)var(--lightningcss-dark,#ffffff06);border-radius:10px;padding:6px;display:grid}.reading-grid dt{color:var(--subtle);letter-spacing:.06em;text-transform:uppercase;font-size:.56rem;font-weight:800}.reading-grid dd{font-variant-numeric:tabular-nums;margin:3px 0 0;font-size:.76rem;font-weight:750}.model-panel{gap:9px;padding-bottom:12px;display:grid}.model-switch{grid-template-columns:1fr}.equation-block{background:var(--lightningcss-light,#65a5f017)var(--lightningcss-dark,#2969b017);border:1px solid var(--lightningcss-light,#1f63c92e)var(--lightningcss-dark,#3b8fff2e);border-radius:11px;gap:5px;margin:0 12px;padding:9px 11px;display:grid}.equation{color:var(--lightningcss-light,#233854)var(--lightningcss-dark,#d9e7fa);overflow-wrap:break-word;margin:0;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.68rem;line-height:1.75}.eq-sym{color:var(--lightningcss-light,#795200)var(--lightningcss-dark,#ffd08a);font-weight:700}.equation-note{color:var(--muted);margin:2px 0 0;font-size:.64rem;line-height:1.45}.include-t2{cursor:pointer;background:var(--lightningcss-light,#0e7c6e0f)var(--lightningcss-dark,#42d3d00f);border:1px solid var(--lightningcss-light,#0e7c6e38)var(--lightningcss-dark,#42d3d038);border-radius:11px;grid-template-columns:20px 1fr;align-items:start;gap:9px;margin:0 12px;padding:9px 11px;display:grid}.include-t2 input{width:18px;height:18px;accent-color:var(--cyan);margin-top:1px}.include-t2>span{color:var(--lightningcss-light,#0d3e44)var(--lightningcss-dark,#d3ecf0);gap:3px;font-size:.72rem;font-weight:750;display:grid}.include-t2 small{color:var(--muted);font-size:.64rem;font-weight:500;line-height:1.45}.sae-readout{grid-auto-columns:1fr;grid-auto-flow:column;gap:6px;margin:0 12px;display:grid}.sae-readout>div{border:1px solid var(--border);background:var(--lightningcss-light,#1c2d5506)var(--lightningcss-dark,#ffffff06);border-radius:11px;padding:7px 8px;display:grid}.sae-readout__total{background:var(--lightningcss-light,#b4690e14)var(--lightningcss-dark,#ffb14f14)!important;border-color:var(--lightningcss-light,#b4690e52)var(--lightningcss-dark,#ffb14f52)!important}.sae-readout span{color:var(--subtle);letter-spacing:.07em;text-transform:uppercase;font-size:.55rem;font-weight:800}.sae-readout strong{font-variant-numeric:tabular-nums;margin:3px 0 1px;font-size:.92rem}.sae-readout small{color:var(--muted);font-size:.58rem}.param-list{gap:6px;margin:0 12px;display:grid}.param-field{border:1px solid var(--border);background:var(--lightningcss-light,#1c2d5506)var(--lightningcss-dark,#ffffff06);border-radius:11px;gap:3px;padding:5px 9px;display:grid}.param-field__label{color:var(--lightningcss-light,#38475b)var(--lightningcss-dark,#c8d3e1);align-items:center;gap:7px;font-size:.7rem;font-weight:700;display:flex}.param-field__symbol{color:var(--lightningcss-light,#795200)var(--lightningcss-dark,#ffd08a);background:var(--lightningcss-light,#b4690e21)var(--lightningcss-dark,#ffb14f21);border-radius:7px;place-items:center;min-width:26px;height:22px;padding:0 5px;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.68rem;font-weight:800;display:inline-grid}.param-field__label .help-tip{margin-left:auto}.param-field__control{grid-template-columns:minmax(80px,1fr) 118px;align-items:center;gap:9px;display:grid}.param-field__control .number-with-unit{grid-template-columns:minmax(40px,1fr) auto;min-width:0;height:38px}.param-field__control .number-with-unit input{font-size:.76rem}.param-field__control input[type=range]{min-height:38px}.derived-row{grid-auto-columns:1fr;grid-auto-flow:column;gap:6px;margin:0 12px;display:grid}.derived-row>div{border:1px solid var(--border);background:var(--lightningcss-light,#1c2d5506)var(--lightningcss-dark,#ffffff06);border-radius:11px;padding:7px 8px;display:grid}.derived-row span{color:var(--subtle);letter-spacing:.02em;font-size:.6rem;font-weight:800}.derived-row strong{font-variant-numeric:tabular-nums;margin:3px 0 1px;font-size:.8rem}.derived-row small{color:var(--muted);font-size:.57rem}.loss-bar-wrap{margin:0 12px}.loss-bar{background:var(--lightningcss-light,#1c2d550f)var(--lightningcss-dark,#ffffff0f);border-radius:999px;height:9px;display:flex;overflow:hidden}.loss-bar__conv{background:linear-gradient(90deg, #1f5fae, var(--blue))}.loss-bar__rad{background:linear-gradient(90deg, var(--lightningcss-light,#9f6200)var(--lightningcss-dark,#b3762a), var(--amber))}.loss-bar__note{color:var(--muted);margin:6px 0 0;font-size:.64rem;line-height:1.45}.model-actions{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;margin:2px 12px 0;display:grid}.model-actions__note{color:var(--subtle);margin:0 12px;font-size:.63rem;line-height:1.45}.sae-badge{z-index:3;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);pointer-events:none;background:var(--lightningcss-light,#f3f8ffd1)var(--lightningcss-dark,#060f1bd1);border:1px solid var(--lightningcss-light,#b4690e4d)var(--lightningcss-dark,#ffb14f4d);border-radius:10px;padding:7px 10px;display:grid;position:absolute;top:8px;right:14px;box-shadow:0 10px 28px var(--lightningcss-light,#16233f17)var(--lightningcss-dark,#0000004d)}.sae-badge span{color:var(--subtle);letter-spacing:.07em;text-transform:uppercase;font-size:.53rem;font-weight:800}.sae-badge strong{color:var(--lightningcss-light,#795200)var(--lightningcss-dark,#ffd08a);font-variant-numeric:tabular-nums;margin:3px 0 1px;font-size:.84rem}.sae-badge small{color:var(--muted);font-size:.58rem}.plot-empty{height:100%;color:var(--muted);text-align:center;place-items:center;margin:0;padding:24px;font-size:.76rem;display:grid}.legend-line--m1{color:var(--lightningcss-light,#b4690e)var(--lightningcss-dark,#ffb14f);background:repeating-linear-gradient(90deg,currentColor 0 4px,#0000 4px 7px)}.legend-line--m2{color:var(--lightningcss-light,#0e7c6e)var(--lightningcss-dark,#42d3d0);background:repeating-linear-gradient(90deg,currentColor 0 4px,#0000 4px 7px)}.legend-swatch{background:currentColor;border-radius:3px;width:10px;height:10px}.legend-swatch--conv{color:var(--lightningcss-light,#1f63c9)var(--lightningcss-dark,#3b8fff)}.legend-swatch--rad{color:var(--lightningcss-light,#b4690e)var(--lightningcss-dark,#ffb14f)}.loss-plot{grid-template-rows:auto minmax(0,1fr);min-width:0;height:clamp(200px,26vh,280px);display:grid;overflow:hidden}.loss-plot__body{min-width:0;min-height:0;position:relative}.settings-intro{color:var(--muted);margin:0 0 4px;font-size:.72rem;line-height:1.5}@media (max-width:820px){.reading-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.sae-readout,.derived-row{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:row}}@media (max-width:560px){.source-switch,.step-buttons,.manual-grid,.model-actions{grid-template-columns:1fr}.step-buttons button:last-child:nth-child(odd){grid-column:auto}.reading-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.param-field__control{grid-template-columns:minmax(70px,1fr) 104px}.sae-badge{padding:5px 8px;right:8px}.sae-badge strong{font-size:.74rem}}.param-row{gap:0;min-width:0;display:grid}.param-preview{background:var(--lightningcss-light,#f3f8ffb8)var(--lightningcss-dark,#060f1bb8);border:1px solid var(--lightningcss-light,#b4690e47)var(--lightningcss-dark,#ffb14f47);border-radius:10px;grid-template-columns:1fr auto;gap:2px 6px;margin:3px 0 2px;padding:6px 8px 4px;animation:.14s ease-out preview-in;display:grid;box-shadow:inset 0 0 0 1px var(--lightningcss-light,#1c2d5505)var(--lightningcss-dark,#ffffff05)}.param-preview__head{grid-column:1/-1;justify-content:space-between;align-items:baseline;gap:8px;display:flex}.param-preview__param{color:var(--lightningcss-light,#795200)var(--lightningcss-dark,#ffd08a);font-variant-numeric:tabular-nums;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.66rem;font-weight:800}.param-preview__sae{color:var(--muted);font-variant-numeric:tabular-nums;font-size:.61rem;font-weight:700}.param-preview__svg{width:100%;min-width:0;height:104px;overflow:visible}.mini-line{fill:none;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke}.mini-line--measured-t1{stroke:var(--lightningcss-light,#c62828)var(--lightningcss-dark,#fb5b5b);stroke-width:1.7px}.mini-line--model-t1{stroke:var(--lightningcss-light,#b4690e)var(--lightningcss-dark,#ffb14f);stroke-width:1.7px;stroke-dasharray:5 3}.mini-line--measured-t2{stroke:var(--lightningcss-light,#1f66d1)var(--lightningcss-dark,#4f9cff);stroke-width:1.5px}.mini-line--model-t2{stroke:var(--lightningcss-light,#0e7c6e)var(--lightningcss-dark,#42d3d0);stroke-width:1.5px;stroke-dasharray:5 3}.param-preview__scale{color:var(--subtle);font-variant-numeric:tabular-nums;white-space:nowrap;flex-direction:column;justify-content:space-between;padding:2px 0 1px;font-size:.55rem;display:flex}.param-preview__empty{color:var(--muted);text-align:center;grid-column:1/-1;margin:6px 0 4px;font-size:.65rem}@keyframes preview-in{0%{opacity:0;transform:translateY(-3px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){.param-preview{animation:none}}.subplot__timelabel{z-index:2;color:var(--lightningcss-light,#596d88)var(--lightningcss-dark,#7f91a9);font-variant-numeric:tabular-nums;pointer-events:none;font-size:.55rem;font-weight:700;position:absolute;bottom:1px;right:12px}.brand__mark{text-decoration:none}.app-header{z-index:30;border:1px solid var(--border);background:var(--panel-strong);min-height:54px;box-shadow:var(--shadow);-webkit-backdrop-filter:none;backdrop-filter:none;border-radius:14px;flex-flow:row;align-items:center;gap:12px;margin:0;padding:6px 12px;position:relative}.app-id{flex:auto;align-items:baseline;gap:10px;min-width:0;display:flex;overflow:hidden}.app-id h1{letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap;flex:none;min-width:0;margin:0;font-size:1.02rem;font-weight:800;overflow:hidden}.app-id .tagline{min-width:0;color:var(--muted);text-overflow:ellipsis;white-space:nowrap;flex:0 auto;font-size:.76rem;overflow:hidden}.app-header .header-tools{flex-wrap:nowrap;flex:none;gap:8px;margin-left:auto}.header-links{flex:none;align-items:center;gap:8px;display:flex}.app-header .clock{color:var(--muted);font-variant-numeric:tabular-nums;white-space:nowrap;align-items:center;gap:5px;padding:0 4px;font-family:ui-monospace,SFMono-Regular,SF Mono,Menlo,Consolas,monospace;font-size:.8rem;display:inline-flex}.app-header .clock svg{width:14px;height:14px}.app-header .clock strong{font-weight:inherit}.app-header .visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.btn{border:1px solid var(--border-strong);min-height:36px;color:var(--text);background:var(--panel-strong);white-space:nowrap;cursor:pointer;border-radius:9px;justify-content:center;align-items:center;gap:6px;padding:0 12px;font-size:.8rem;font-weight:700;text-decoration:none;transition:background .12s,border-color .12s;display:inline-flex}.btn:hover:not(:disabled){background:var(--lightningcss-light,#eef2f8)var(--lightningcss-dark,#16283f)}.btn svg{flex:none;width:16px;height:16px}.btn.primary{border-color:var(--cyan);color:#f2fbf9;background:var(--cyan)}.btn.primary:hover:not(:disabled){background:var(--lightningcss-light,#16a394)var(--lightningcss-dark,#5fe3e0)}.app-header .view-switch,.time-window{border:1px solid var(--border-strong);background:var(--lightningcss-light,#eef2f8)var(--lightningcss-dark,#16283f);border-radius:10px;gap:0;padding:2px}.app-header .view-switch button,.time-window button{min-height:32px;color:var(--muted);background:0 0;border-radius:8px;padding:0 10px;font-size:.76rem;font-weight:700}.app-header .view-switch button.is-active,.time-window button.is-active{color:var(--text);background:var(--panel-strong);box-shadow:0 1px 3px var(--lightningcss-light,#16233f17)var(--lightningcss-dark,#0000004d)}.app-header .speed-control{border-color:var(--border-strong);background:var(--lightningcss-light,#eef2f8)var(--lightningcss-dark,#16283f);border-radius:10px;min-height:36px;padding:0 10px}.app-header .speed-control input[type=range]{height:24px;min-height:0}.chart-heading__tools{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:8px;display:flex}.chart-heading__tools .time-window{order:0;width:auto}@media (min-width:901px){.charts-region>.chart-heading{align-items:center;padding:0 4px}.charts-region>.chart-heading .eyebrow{display:none}.charts-region>.chart-heading h2{color:var(--muted);letter-spacing:.1em;text-transform:uppercase;margin:0;font-size:.7rem;font-weight:800}}.btn.ghost{color:var(--muted);background:0 0;border-color:#0000}.btn.ghost:hover:not(:disabled){color:var(--text);background:var(--lightningcss-light,#eef2f8)var(--lightningcss-dark,#16283f)}.btn.icon{flex:none;width:36px;padding:0;font-size:.95rem}.ap-home{background:#10203a;border:1px solid #94a3b84d;border-radius:9px;flex:none;place-items:center;width:36px;height:36px;padding:4px;text-decoration:none;transition:background .12s,border-color .12s;display:inline-grid}.ap-home:hover{background:#17304f;border-color:#94a3b880}.ap-home img{object-fit:contain;width:100%;height:100%;display:block}.app-footer{margin:0;padding:0 6px;font-size:.66rem}.studio-tabs{display:none}@media (max-width:1500px){.header-links .btn{width:36px;padding:0}.header-links .btn-label,.app-header .speed-control>span{display:none}.app-header .speed-control{grid-template-columns:92px 26px}}@media (max-width:1180px){.app-id .tagline{display:none}}@media (min-width:901px) and (max-width:1180px){.app-header .header-tools .btn:not(.run){width:36px;padding:0}.app-header .header-tools .btn:not(.run) .btn-label,.chart-heading__tools>span{display:none}}@media (min-width:901px){.app-shell{height:100vh;flex-direction:column;gap:8px;height:100dvh;min-height:0;padding:8px;display:flex;overflow:hidden}.app-shell>main{flex:auto;min-height:0;margin:0}.app-shell>.message-banner,.app-shell>.app-footer{flex:none;margin:0}.app-footer{flex-wrap:nowrap}.app-footer p{text-overflow:ellipsis;white-space:nowrap;min-width:0;max-width:none;overflow:hidden}}@media (max-width:900px){.app-shell{padding:6px 6px calc(76px + env(safe-area-inset-bottom))}.app-shell>*+*{margin-top:6px}.app-header{border-radius:14px;flex-direction:row;justify-content:flex-start;align-items:center;gap:8px;min-height:48px;padding:5px 8px}.app-id h1{flex:auto;font-size:.9rem}.app-header .header-tools{z-index:500;width:auto;padding:8px 10px calc(8px + env(safe-area-inset-bottom));border-top:1px solid var(--border-strong);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);background:var(--lightningcss-light,#fffffff0)var(--lightningcss-dark,#111f32f0);align-items:center;gap:8px;margin:0;display:flex;position:fixed;bottom:0;left:0;right:0}.app-header .header-tools .btn{flex:1 1 0;min-width:54px;min-height:46px;padding:0 8px}.studio-tabs{border:1px solid var(--border);background:var(--panel-strong);border-radius:14px;grid-auto-columns:minmax(0,1fr);grid-auto-flow:column;gap:4px;padding:4px;display:grid}.studio-tabs button{min-height:44px;color:var(--muted);cursor:pointer;background:0 0;border:0;border-radius:9px;padding:0 6px;font-size:.74rem;font-weight:750}.studio-tabs button[aria-selected=true]{color:var(--text);background:var(--lightningcss-light,#e5ebf4)var(--lightningcss-dark,#1d3050)}.header-links .btn{width:40px;min-height:40px;padding:0}.header-links .btn-label{display:none}.app-header>.btn.icon{width:40px;min-height:40px}.app-header .header-tools .speed-control{flex:auto;grid-template-columns:minmax(0,1fr) 30px;min-width:96px}.app-header .header-tools .speed-control>span{display:none}}@media (max-width:540px){.app-header .clock{display:none}}@media (max-width:420px){.app-header .header-tools .btn:not(.run) .btn-label{display:none}}@media (min-width:901px){.dashboard-grid{grid-template-rows:minmax(0,1fr);grid-template-columns:minmax(300px,.78fr) minmax(0,1.5fr) minmax(320px,.92fr);align-items:stretch;height:100%}.dashboard-left,.dashboard-right{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;grid-column:auto;grid-template-columns:minmax(0,1fr);min-height:0;overflow-y:auto}.dashboard-center,.dashboard-center>.charts-region{flex-direction:column;min-height:0;display:flex}.dashboard-center>.charts-region{flex:auto}.dashboard-center .device-plot{flex:auto;height:auto;min-height:220px}.dashboard-center .loss-plot{flex:none}.app-shell>.connection-bar,.app-shell>.alarm-banner{flex:none;margin:0;position:relative;top:auto}}@media (min-width:901px) and (max-width:1100px){.dashboard-grid{grid-template:"center left"minmax(0,1fr)"center right"minmax(0,1fr)/minmax(0,1.25fr) minmax(300px,1fr)}.dashboard-left{grid-area:left}.dashboard-center{grid-area:center}.dashboard-right{grid-area:right}.dashboard-grid .device-photo-wrap{width:min(300px,100% - 20px)}}@media (max-width:900px){.dashboard-grid{flex-direction:column;align-items:stretch;gap:6px;display:flex}.dashboard-left,.dashboard-right{display:contents}.dashboard-center{order:1}.dashboard-grid>.studio-tabs{order:2}.dashboard-grid .run-panel,.dashboard-grid .model-panel{order:3}.dashboard-grid[data-tab=run] .model-panel,.dashboard-grid[data-tab=model] .run-panel{display:none}}@media (pointer:coarse){.app-footer>div{flex-wrap:wrap;gap:4px 16px}.app-footer a,.reference-link,.pid-reference-link{align-items:center;min-height:40px;display:inline-flex}input[type=range]{height:44px}input[type=number],input[type=text],select,.number-with-unit{min-height:44px}input[type=checkbox],input[type=radio]{width:22px;height:22px}.icon-button{width:44px;min-width:44px;height:44px}.button,.pid-type-switch button,.mode-switch button,.time-window button{min-height:44px}.message-banner .icon-button{width:40px;min-width:40px;height:40px}.btn{min-height:44px}.btn.icon{width:44px}.ap-home{width:44px;height:44px}.app-header .speed-control input[type=range]{height:40px}.app-header .view-switch button,.time-window button{min-height:40px}}
