.graphic-open,.graphic-viewer button{border:1px solid var(--line-strong,#52647c);background:var(--surface-2,#162238);min-height:44px;color:var(--ink,#eef5ff);font:700 12px/1.2 var(--sans,system-ui);cursor:pointer;border-radius:8px;padding:8px 12px}.graphic-open:focus-visible,.graphic-viewer :focus-visible{outline:3px solid var(--teal,#42cdd0);outline-offset:2px}.graphic-actions{justify-content:flex-end;padding:0 10px 6px;display:flex}.graphic-viewer{box-sizing:border-box;border:1px solid var(--line-strong,#52647c);background:var(--surface,#0e1a2c);width:calc(100vw - 24px);max-width:1500px;height:calc(100dvh - 24px);max-height:none;color:var(--ink,#eef5ff);font:14px/1.4 var(--sans,system-ui);border-radius:12px;padding:12px;overflow:hidden}.graphic-viewer[open]{flex-direction:column;gap:8px;display:flex}.graphic-viewer::backdrop{background:#000b}.graphic-tools{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:8px;display:flex}.graphic-tools strong{font-size:15px}.graphic-zoom{flex-wrap:wrap;justify-content:center;align-items:center;gap:6px;display:flex}.graphic-zoom output{text-align:center;font-variant-numeric:tabular-nums;min-width:44px}.graphic-viewer button{min-width:44px}.graphic-viewer button:disabled{opacity:.4;cursor:default}.graphic-help{color:var(--muted,#a3b6ce);margin:0;font-size:12px}.graphic-status{color:var(--red,#fb5b67);margin:0;font-size:13px;font-weight:700}.graphic-status[data-state=warn]{color:var(--amber,#ffb14f)}.graphic-status[data-state=good]{color:var(--teal,#42d3d0)}.graphic-scroll{overscroll-behavior:contain;border:1px solid var(--line,#33465e);border-radius:8px;flex:1;min-height:0;overflow:auto}.graphic-stage{flex:none;position:relative}.graphic-stage>canvas,.graphic-stage>svg{width:100%;height:100%;display:block}@media (max-width:540px){.graphic-viewer{width:100vw;max-width:none;height:100dvh;padding:max(8px, env(safe-area-inset-top)) 8px max(8px, env(safe-area-inset-bottom));border-radius:0;margin:0}.graphic-tools{justify-content:center}.graphic-tools strong{text-align:center;width:100%}}: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{--mdl-ink:var(--ink,var(--text,#16233f));--mdl-muted:var(--muted,#5b6b85);--mdl-dim:var(--dim,var(--subtle,#8895ab));--mdl-surface:var(--surface,var(--panel-strong,#fff));--mdl-surface-2:var(--surface-2,var(--panel-soft,#eef2f8));--mdl-line:var(--line,var(--border,#1c2d5524));--mdl-line-strong:var(--line-strong,var(--border-strong,#1c2d5542));--mdl-accent:var(--teal,var(--cyan,#0e7c6e));--mdl-head:var(--navy,var(--text,#1c2d55));--mdl-mono:var(--mono,ui-monospace, SFMono-Regular, Menlo, Consolas, monospace)}.mdl-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}.mdl-backdrop[hidden]{display:none}.mdl-dialog{border:1px solid var(--mdl-line-strong);background:var(--mdl-surface);width:min(900px,100%);max-height:min(84dvh,760px);color:var(--mdl-ink);text-align:left;border-radius:16px;flex-direction:column;display:flex;overflow:hidden;box-shadow:0 30px 80px #00000059}.mdl-head{border-bottom:1px solid var(--mdl-line);justify-content:space-between;align-items:center;gap:12px;padding:12px 16px;display:flex}.mdl-head h2{color:var(--mdl-ink);margin:0;font-size:1rem;font-weight:800;line-height:1.3}.mdl-close{border:1px solid var(--mdl-line-strong);min-height:34px;color:var(--mdl-ink);font:inherit;cursor:pointer;background:0 0;border-radius:9px;flex:none;padding:0 12px;font-size:.8rem;font-weight:700}.mdl-close:hover{background:var(--mdl-surface-2)}.mdl-tabs{border-bottom:1px solid var(--mdl-line);flex-wrap:wrap;gap:4px;padding:8px 16px 0;display:flex}.mdl-tab{font:inherit;color:var(--mdl-muted);cursor:pointer;background:0 0;border:0;border-bottom:2px solid #0000;padding:7px 12px;font-size:.78rem;font-weight:700}.mdl-tab[aria-selected=true]{color:var(--mdl-ink);border-bottom-color:var(--mdl-accent)}.mdl-tab:focus-visible,.mdl-close:focus-visible,.mdl-body:focus-visible{outline:2px solid var(--mdl-accent);outline-offset:2px}.mdl-body{min-height:0;color:var(--mdl-ink);flex:1;padding:14px 16px 20px;font-size:.82rem;line-height:1.55;overflow-y:auto}.mdl-body p{margin:0 0 10px}.mdl-body code{font-family:var(--mdl-mono);font-size:.92em}.mdl-body a{color:var(--mdl-accent)}.mdl-note{color:var(--mdl-muted)}.mdl-intro{color:var(--mdl-muted);margin:0 0 14px}.mdl-eq{margin:0 0 16px}.mdl-eq h4{color:var(--mdl-head);margin:0 0 6px;font-size:.78rem;font-weight:800}.mdl-eq-render{border:1px solid var(--mdl-line);background:var(--mdl-surface-2);border-radius:10px;padding:10px 12px;overflow-x:auto}.mdl-eq-render.mdl-tex-source{font-family:var(--mdl-mono);white-space:pre-wrap;overflow-wrap:anywhere;font-size:.82rem}.mdl-eq p{color:var(--mdl-muted);margin:6px 0 0;font-size:.8rem;line-height:1.55}.mdl-scroll{overflow-x:auto}.mdl-table{border-collapse:collapse;width:100%;font-size:.8rem}.mdl-table th,.mdl-table td{text-align:left;vertical-align:top;border-bottom:1px solid var(--mdl-line);padding:6px 8px}.mdl-table thead th{text-transform:uppercase;letter-spacing:.07em;color:var(--mdl-dim);white-space:nowrap;font-size:.66rem}.mdl-table .mdl-num{text-align:right;font-family:var(--mdl-mono);font-variant-numeric:tabular-nums;white-space:nowrap}.mdl-table thead .mdl-num{font-family:inherit}.mdl-table .mdl-sym{white-space:nowrap;font-family:Cambria Math,STIX Two Math,Georgia,serif;font-style:italic}.mdl-table .mdl-unit,.mdl-table .mdl-range{white-space:nowrap;color:var(--mdl-muted)}.mdl-table .mdl-desc{color:var(--mdl-muted);margin-top:2px;font-size:.74rem;line-height:1.45}.mdl-table tr.mdl-group th{letter-spacing:.04em;color:var(--mdl-head);text-transform:none;padding-top:12px;font-size:.7rem;font-weight:800}.mdl-section{margin:0 0 14px}.mdl-section h3{letter-spacing:.08em;text-transform:uppercase;color:var(--mdl-muted);margin:0 0 6px;font-size:.7rem;font-weight:800}.mdl-list{margin:0;padding-left:18px}.mdl-list li{margin-bottom:7px;line-height:1.55}@media (max-width:640px){.mdl-backdrop{padding:8px}.mdl-dialog{max-height:min(92dvh,900px)}.mdl-head{padding:10px 12px}.mdl-tabs{gap:6px;padding:8px 12px 0}.mdl-body{padding:12px 12px calc(16px + env(safe-area-inset-bottom))}.mdl-table thead{display:none}.mdl-table,.mdl-table tbody{display:block}.mdl-table tr{border-bottom:1px solid var(--mdl-line);flex-wrap:wrap;align-items:baseline;column-gap:12px;padding:7px 0 7px calc(3.6em + 12px);display:flex}.mdl-table tr.mdl-group{padding-left:0}.mdl-table th,.mdl-table td{border:0;padding:0}.mdl-table td.mdl-sym{white-space:normal;overflow-wrap:anywhere;flex:0 0 3.6em;margin-left:calc(-3.6em - 12px)}.mdl-table td:nth-child(2){flex:100%;min-width:0}.mdl-table td[data-label]{text-align:left;white-space:normal;overflow-wrap:anywhere;flex:0 auto;margin-top:4px;font-family:inherit}.mdl-table td[data-label]:before{content:attr(data-label) " ";letter-spacing:.07em;text-transform:uppercase;color:var(--mdl-dim);font-size:.62rem;font-weight:800}.mdl-table tr.mdl-group th{flex:100%;padding-top:10px}}@media (pointer:coarse){.mdl-tab{min-height:44px;padding:0 12px}.mdl-close{min-width:64px;min-height:44px}}: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(360px,.9fr) minmax(560px,1.35fr);align-items:start;gap:10px;display:grid}.dashboard-left,.dashboard-right{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,#bd2700bf)var(--lightningcss-dark,#ff4d28bf),var(--lightningcss-light,#9b400033)var(--lightningcss-dark,#ff7b3133) 42%,#0000 72%);border-radius:50%;width:18%;transition:opacity .3s;position:absolute;top:20%}.heat-glow--one{left:30%}.heat-glow--two{left:51%}.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--one{left:23%}.photo-reading--two{left:59%}.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--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;right:12px}.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 (min-width:1261px){.dashboard-grid{grid-template-columns:minmax(420px,.82fr) minmax(620px,1.35fr)}.dashboard-left{grid-column:1;grid-template-columns:1fr;align-items:start}.device-card,.control-panel{height:auto}.device-photo-wrap{aspect-ratio:1.85;flex:none;min-height:0;max-height:none}.dashboard-right{grid-column:2}}@media (max-width:1260px){.dashboard-grid{grid-template-columns:minmax(340px,.86fr) minmax(520px,1.14fr)}.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(340px,.9fr) minmax(420px,1.1fr);align-items:stretch}.device-card,.control-panel{height:100%}}@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}.device-card,.control-panel{height:auto}.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}}.status-pill--alarm{color:var(--lightningcss-light,#aa0238)var(--lightningcss-dark,#ff97a0);background:var(--red-soft);border-color:var(--lightningcss-light,#b3261e4d)var(--lightningcss-dark,#fb5b674d);animation:1.2s infinite pulse}.sim-visual{--sim-wall-edge:var(--lightningcss-light,#6f86a3)var(--lightningcss-dark,#9db4d0);--sim-wall-shine:var(--lightningcss-light,#c3d1e2)var(--lightningcss-dark,#e3eefb);--sim-wall-shade:var(--lightningcss-light,#5f7693)var(--lightningcss-dark,#8ba3c0);--sim-dial-low:var(--lightningcss-light,#17804a)var(--lightningcss-dark,#38d488);--sim-dial-mid:var(--lightningcss-light,#b4690e)var(--lightningcss-dark,#ffb14f);--sim-dial-high:var(--lightningcss-light,#b3261e)var(--lightningcss-dark,#fb5b67);--sim-hub:var(--lightningcss-light,#202d3a)var(--lightningcss-dark,#dce8f7);background:radial-gradient(circle at 50% 42%,var(--lightningcss-light,#6cacf529)var(--lightningcss-dark,#2766aa29),#0000 58%),var(--lightningcss-light,#eff6ff)var(--lightningcss-dark,#0a1625);border:1px solid var(--lightningcss-light,#1c2d551e)var(--lightningcss-dark,#94a3b821);border-radius:15px;width:min(480px,100% - 20px);margin:4px auto 8px;position:relative;overflow:hidden}.sim-visual svg{width:100%;height:auto;display:block}.sim-wall{stroke:url(#sim-wall);stroke-width:6px;stroke-linejoin:round;stroke-linecap:round}.sim-pipe{fill:var(--lightningcss-light,#c5d5ea)var(--lightningcss-dark,#33465f);stroke:var(--lightningcss-light,#2c466573)var(--lightningcss-dark,#c4d6ec73);stroke-width:1.2px}.sim-liquid{transition:y 90ms linear,height 90ms linear}.sim-wave{fill:none;stroke:var(--lightningcss-light,#00384f8c)var(--lightningcss-dark,#d6f0ff8c);stroke-width:2px;animation:2.6s ease-in-out infinite sim-wave-bob}@keyframes sim-wave-bob{0%,to{transform:translateY(0)}50%{transform:translateY(1.6px)}}.sim-stream{fill:var(--lightningcss-light,#006193bf)var(--lightningcss-dark,#7dc8ffbf);animation:2.4s ease-in-out infinite sim-stream-shimmer}.sim-stream--out{fill:var(--lightningcss-light,#006193ad)var(--lightningcss-dark,#7dc8ffad)}@keyframes sim-stream-shimmer{0%,to{opacity:.85}50%{opacity:.6}}.sim-spill path{fill:none;stroke:var(--lightningcss-light,#006193a6)var(--lightningcss-dark,#7dc8ffa6);stroke-width:4px;stroke-linecap:round;animation:1.6s ease-in-out infinite sim-stream-shimmer}.sim-tick line{stroke:var(--lightningcss-light,#1c2d5573)var(--lightningcss-dark,#94a3b880);stroke-width:1.4px}.sim-tick text,.sim-axis-label{fill:var(--lightningcss-light,#5b6b85)var(--lightningcss-dark,#91a3bb);font-variant-numeric:tabular-nums;font-size:10px}.sim-axis-label{letter-spacing:.1em;text-transform:uppercase;font-size:9px;font-weight:700}.sim-setpoint line{stroke:var(--lightningcss-light,#a22042)var(--lightningcss-dark,#fda4af);stroke-width:1.6px;stroke-dasharray:3 6}.sim-setpoint text{fill:var(--lightningcss-light,#a22042)var(--lightningcss-dark,#fda4af);font-size:10.5px;font-weight:700}.sim-readout{fill:var(--lightningcss-light,#202d3a)var(--lightningcss-dark,#eef6ff);font-variant-numeric:tabular-nums;paint-order:stroke;stroke:var(--lightningcss-light,#f3f8ff8c)var(--lightningcss-dark,#06101e8c);stroke-width:3.5px;font-size:17px;font-weight:800}.sim-valve-label{fill:var(--lightningcss-light,#475773)var(--lightningcss-dark,#aebbd0);letter-spacing:.04em;font-size:9.5px;font-weight:700}.sim-readings .source-row{grid-template-columns:minmax(100px,1fr) auto}.sim-readings .source-row>div:first-child{display:grid}.source-row--outlet{background:var(--lightningcss-light,#b4690e0d)var(--lightningcss-dark,#ffb14f0d);border-color:var(--lightningcss-light,#b4690e38)var(--lightningcss-dark,#ffb14f38)}.controls-body{gap:9px;padding:0 10px;display:grid}.controls-tuning{gap:8px;min-width:0;display:grid}.controls-primary,.controls-secondary{min-width:0}.heater-card--amber{border-top-color:var(--lightningcss-light,#b4690e80)var(--lightningcss-dark,#ffb14f80)}.heater-card--amber .power-meter span,.power-meter--amber span{background:linear-gradient(90deg, var(--lightningcss-light,#ce9a60)var(--lightningcss-dark,#8a5a1d), var(--amber))}.legend-line--level,.legend-line--inlet{color:var(--lightningcss-light,#1f66d1)var(--lightningcss-dark,#4f9cff)}.legend-line--outlet{color:var(--lightningcss-light,#b4690e)var(--lightningcss-dark,#ffb14f)}.results-button svg{width:15px}@media (max-width:560px){.results-button{flex:1}}@media (min-width:1261px){html,body{height:100%;overflow:hidden}.app-shell{flex-direction:column;gap:7px;height:100vh;min-height:0;padding:8px clamp(10px,1.3vw,18px) 6px;display:flex;overflow:hidden}.app-header{flex:none;min-height:60px;padding:7px 12px}.message-banner{flex:none;margin:0}.dashboard-grid{flex:auto;align-items:stretch;gap:9px;min-height:0}.dashboard-left{grid-template-rows:minmax(150px,1fr) auto;min-height:0}.dashboard-right{grid-template-rows:minmax(0,1fr) auto;min-height:0}.app-footer{flex:none;min-height:0;padding:2px 6px;font-size:.68rem}.charts-region{grid-template-rows:auto minmax(0,1fr);min-height:0}.chart-heading{padding:0 4px 5px}.device-plots,.device-plot{height:100%;min-height:0}.stat-grid{gap:8px}.stat-card{min-height:60px;padding:8px 9px}.device-card{height:100%;min-height:0;overflow:hidden}.device-card .panel-heading{flex:none;padding:8px 12px 2px}.sim-visual{aspect-ratio:460/336;flex:0 auto;width:calc(100% - 18px);max-width:620px;max-height:100%;margin:auto}.sim-visual svg{width:100%;height:100%}.sim-readings{flex:none;grid-template-columns:repeat(2,minmax(0,1fr));padding:0 9px 8px}.sim-readings .source-row{min-height:44px;padding:5px 8px}.control-panel{height:auto;min-height:0;padding-bottom:8px;overflow-y:auto}.panel-heading--controls{padding:8px 12px 4px}.suggestion{min-height:0;margin:4px 10px 2px;padding:6px 9px;font-size:.66rem}.suggestion p{font-size:.68rem;line-height:1.35}.heater-card,.setpoint-card{padding:8px 9px}.heater-card__heading{padding-bottom:6px}.power-field{gap:5px;margin-top:7px}.power-meter{margin-top:6px}.controls-body{grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;gap:8px}.controls-primary{grid-area:1/1}.controls-secondary{grid-area:1/2}.controls-tuning{grid-area:2/1/auto/-1;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.pid-gains,.pid-type-panel{padding:7px 9px}.gain-grid{gap:8px}input[type=range]{min-height:34px}.number-with-unit{min-width:74px;height:38px}.pid-type-switch button,.mode-switch button,.time-window button{min-height:38px}.icon-button{width:38px;min-width:38px;height:38px}.button{min-height:38px}}@media (min-width:1261px) and (max-height:830px){.sim-readings{display:none}}@media (min-width:1261px) and (max-height:700px){.suggestion{display:none}}.gain-grid--four .gain-field input{width:100%;min-width:0}.heater-card--green,.setpoint-card--green{border-top-color:var(--lightningcss-light,#17804a80)var(--lightningcss-dark,#38d48880)}.heater-card--cyan,.setpoint-card--cyan{border-top-color:var(--lightningcss-light,#0e7c6e80)var(--lightningcss-dark,#42d3d080)}.heater-card--violet,.setpoint-card--violet{border-top-color:var(--lightningcss-light,#6b4fbb80)var(--lightningcss-dark,#a78bfa80)}.heater-card--amber,.setpoint-card--amber{border-top-color:var(--lightningcss-light,#b4690e80)var(--lightningcss-dark,#ffb14f80)}.heater-card--red,.setpoint-card--red{border-top-color:var(--lightningcss-light,#b3261e80)var(--lightningcss-dark,#fb5b6780)}.heater-card--green .heater-card__heading>div{color:var(--lightningcss-light,#006d43)var(--lightningcss-dark,#6ee7a8)}.heater-card--cyan .heater-card__heading>div{color:var(--lightningcss-light,#006967)var(--lightningcss-dark,#6fe3e0)}.heater-card--violet .heater-card__heading>div{color:var(--lightningcss-light,#6242a9)var(--lightningcss-dark,#c4b5fd)}.heater-card--amber .heater-card__heading>div{color:var(--lightningcss-light,#7d5000)var(--lightningcss-dark,#ffc477)}.heater-card--green input[type=range]{accent-color:var(--green)}.heater-card--cyan input[type=range]{accent-color:var(--cyan)}.heater-card--violet input[type=range]{accent-color:var(--lightningcss-light,#6b4fbb)var(--lightningcss-dark,#a78bfa)}.heater-card--amber input[type=range]{accent-color:var(--amber)}.heater-card--blue input[type=range]{accent-color:var(--blue)}.power-meter--green span{background:linear-gradient(90deg, var(--lightningcss-light,#8dd6aa)var(--lightningcss-dark,#12613c), var(--green))}.power-meter--cyan span{background:linear-gradient(90deg, var(--lightningcss-light,#94d6d6)var(--lightningcss-dark,#12595a), var(--cyan))}.power-meter--violet span{background:linear-gradient(90deg,var(--lightningcss-light,#c8c2ff)var(--lightningcss-dark,#4c3d8a),var(--lightningcss-light,#6b4fbb)var(--lightningcss-dark,#a78bfa))}.power-meter--amber span{background:linear-gradient(90deg, var(--lightningcss-light,#ce9a60)var(--lightningcss-dark,#8a5a1d), var(--amber))}.power-meter--blue span{background:linear-gradient(90deg, var(--lightningcss-light,#a7cdff)var(--lightningcss-dark,#1a4c8a), var(--blue))}.power-meter--red span{background:linear-gradient(90deg, var(--lightningcss-light,#ffacac)var(--lightningcss-dark,#8a2731), var(--red))}.power-meter--signed{position:relative}.power-meter--signed:before{top:0;bottom:0;left:var(--zero,50%);background:var(--border-strong);content:"";width:1px;position:absolute}.power-meter--signed span{margin-left:var(--origin,0%)}.legend-line--blue{color:var(--lightningcss-light,#1f66d1)var(--lightningcss-dark,#4f9cff)}.legend-line--amber{color:var(--lightningcss-light,#b4690e)var(--lightningcss-dark,#ffb14f)}.legend-line--green{color:var(--lightningcss-light,#17804a)var(--lightningcss-dark,#38d488)}.legend-line--red{color:var(--lightningcss-light,#b3261e)var(--lightningcss-dark,#fb5b67)}.legend-line--cyan{color:var(--lightningcss-light,#0e7c6e)var(--lightningcss-dark,#42d3d0)}.legend-line--violet{color:var(--lightningcss-light,#6b4fbb)var(--lightningcss-dark,#a78bfa)}.legend-line--slate{color:var(--lightningcss-light,#1c2d55e6)var(--lightningcss-dark,#94a3b8)}.legend-line--pink{color:var(--lightningcss-light,#a22042)var(--lightningcss-dark,#fda4af)}.legend-line--dashed{background:repeating-linear-gradient(90deg,currentColor 0 3px,#0000 3px 6px)}.controls-disturbance{min-width:0}.disturbance-panel{background:var(--lightningcss-light,#b4690e0b)var(--lightningcss-dark,#ffb14f0b);border:1px solid var(--lightningcss-light,#b4690e33)var(--lightningcss-dark,#ffb14f33);border-radius:12px;gap:8px;padding:9px 10px 10px;display:grid}.disturbance-panel>.section-label{color:var(--lightningcss-light,#7d5000)var(--lightningcss-dark,#ffc477)}.disturbance-grid{gap:9px;display:grid}.disturbance-grid--two{grid-template-columns:repeat(2,minmax(0,1fr))}.disturbance-field{gap:4px;min-width:0;display:grid}.disturbance-field>.section-label{font-size:.66rem}.disturbance-field__value{font-variant-numeric:tabular-nums;font-weight:750}.tips-list{gap:8px;display:grid}.tip-item{border:1px solid var(--border);background:var(--panel-soft);border-radius:12px}.tip-item[open]{border-color:var(--border-strong)}.tip-item>summary{color:var(--text);cursor:pointer;justify-content:space-between;align-items:center;gap:10px;padding:11px 12px;font-size:.82rem;font-weight:700;list-style:none;display:flex}.tip-item>summary::-webkit-details-marker{display:none}.tip-item>summary:after{color:var(--muted);content:"+";font-size:.9rem}.tip-item[open]>summary:after{content:"−"}.tip-item__body{color:var(--muted);gap:8px;padding:0 12px 12px;font-size:.78rem;line-height:1.5;display:grid}.tip-item__body p{margin:0}.tip-item__body code{background:var(--lightningcss-light,#1c2d5520)var(--lightningcss-dark,#94a3b824);border-radius:5px;padding:1px 4px;font-size:.74rem}.tip-item__body .tip-equation{border:1px solid var(--border);color:var(--text);white-space:pre;background:var(--lightningcss-light,#f4f7fb99)var(--lightningcss-dark,#08111f99);border-radius:9px;padding:8px 10px;font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:.72rem;overflow-x:auto}.tip-item__links{flex-wrap:wrap;gap:10px;font-size:.74rem;font-weight:650;display:flex}.modal--wide{width:min(760px,100%)}.gain-grid--three{grid-template-columns:repeat(3,minmax(58px,1fr))}.gain-grid--four{grid-template-columns:repeat(2,minmax(64px,1fr))}.gain-grid--four .gain-field input,.gain-grid--three .gain-field input{width:100%;min-width:0}.structure-switch{grid-template-columns:repeat(2,minmax(0,1fr));gap:6px;display:grid}.structure-switch button{border:1px solid var(--border);min-height:36px;color:var(--muted);font:inherit;cursor:pointer;background:0 0;border-radius:9px;padding:0 9px;font-size:.7rem;font-weight:700}.structure-switch button.is-active{background:var(--blue-soft);color:var(--lightningcss-light,#1c3b64)var(--lightningcss-dark,#cfe3ff);border-color:var(--lightningcss-light,#1f63c973)var(--lightningcss-dark,#3b8fff73)}.structure-switch button:disabled{opacity:.5;cursor:not-allowed}.sim-vessel{fill:var(--lightningcss-light,#ffffffd9)var(--lightningcss-dark,#111f32d9);stroke:var(--lightningcss-light,#2c466566)var(--lightningcss-dark,#c4d6ec66);stroke-width:2px}.sim-label{fill:var(--lightningcss-light,#475773)var(--lightningcss-dark,#aebbd0);letter-spacing:.04em;font-size:9.5px;font-weight:700}.sim-value{fill:var(--lightningcss-light,#202d3a)var(--lightningcss-dark,#eef6ff);font-variant-numeric:tabular-nums;font-size:12px;font-weight:800}.sim-arrow{stroke-linecap:round;fill:none}.sim-flow-dash{stroke-linecap:round;fill:none;stroke-dasharray:6 9;animation:.9s linear infinite sim-flow}@keyframes sim-flow{to{stroke-dashoffset:-15px}}.sim-spin{transform-box:fill-box;transform-origin:50%;animation:4s linear infinite spin}.sim-band{fill:var(--lightningcss-light,#17804a1a)var(--lightningcss-dark,#38d4881a);stroke:var(--lightningcss-light,#17804a59)var(--lightningcss-dark,#38d48859);stroke-width:1px;stroke-dasharray:3 5}@media (min-width:1261px){.disturbance-panel{padding:7px 9px 8px}.controls-disturbance{grid-column:1/-1}}@media (max-width:560px){.disturbance-grid--two,.structure-switch{grid-template-columns:1fr}.header-actions{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.results-button{flex:initial;grid-column:1/-1}}.structure-block{gap:6px;margin-bottom:8px;display:grid}.structure-block>.section-label{color:var(--lightningcss-light,#1c3b64)var(--lightningcss-dark,#cfe3ff)}.ff-chip{color:var(--lightningcss-light,#7d5000)var(--lightningcss-dark,#ffc477);min-height:24px;font:inherit;letter-spacing:.02em;cursor:pointer;background:0 0;border:1px solid var(--lightningcss-light,#b4690e52)var(--lightningcss-dark,#ffb14f52);border-radius:999px;margin-left:auto;padding:0 9px;font-size:.62rem;font-weight:800}.ff-chip.is-active{color:var(--lightningcss-light,#7a5200)var(--lightningcss-dark,#ffd9a3);background:var(--lightningcss-light,#b4690e29)var(--lightningcss-dark,#ffb14f29);border-color:var(--lightningcss-light,#b4690e99)var(--lightningcss-dark,#ffb14f99)}.ff-chip:disabled{opacity:.5;cursor:not-allowed}.step-buttons{grid-column:1/-1;grid-auto-flow:column;gap:5px;display:grid}.step-buttons button{color:var(--lightningcss-light,#7d5000)var(--lightningcss-dark,#ffc477);min-height:28px;font:inherit;font-variant-numeric:tabular-nums;cursor:pointer;background:var(--lightningcss-light,#b4690e0f)var(--lightningcss-dark,#ffb14f0f);border:1px solid var(--lightningcss-light,#b4690e47)var(--lightningcss-dark,#ffb14f47);border-radius:8px;padding:0 6px;font-size:.63rem;font-weight:800}.step-buttons button:hover:not(:disabled){background:var(--lightningcss-light,#b4690e24)var(--lightningcss-dark,#ffb14f24);border-color:var(--lightningcss-light,#b4690e80)var(--lightningcss-dark,#ffb14f80)}.step-buttons button.is-active{color:var(--lightningcss-light,#795200)var(--lightningcss-dark,#ffe0b3);background:var(--lightningcss-light,#b4690e2e)var(--lightningcss-dark,#ffb14f2e);border-color:var(--lightningcss-light,#b4690e99)var(--lightningcss-dark,#ffb14f99)}.step-buttons button:disabled{opacity:.5;cursor:not-allowed}.controls-loop{min-width:0}.sim-signal{fill:none;stroke:var(--lightningcss-light,#1c2d5545)var(--lightningcss-dark,#94a3b84d);stroke-width:1.5px;stroke-dasharray:5 4;stroke-linecap:round}.sim-signal--level.is-live{stroke:var(--lightningcss-light,#006485)var(--lightningcss-dark,#7dd3fc);stroke-width:1.8px}.sim-signal--ff.is-live{stroke:var(--lightningcss-light,#b4690e)var(--lightningcss-dark,#ffb14f);stroke-width:1.8px}.sim-signal--inner.is-live{stroke:var(--lightningcss-light,#006d43)var(--lightningcss-dark,#6ee7a8);stroke-width:1.8px}.sim-signal.is-live{animation:1.4s linear infinite sim-signal-march}@keyframes sim-signal-march{to{stroke-dashoffset:-18px}}.sim-node circle{fill:var(--lightningcss-light,#f0f6fff0)var(--lightningcss-dark,#091526f0);stroke:var(--lightningcss-light,#1c2d5567)var(--lightningcss-dark,#94a3b873);stroke-width:1.6px}.sim-node text{fill:var(--lightningcss-light,#4b6382)var(--lightningcss-dark,#90a4bd);letter-spacing:.03em;font-size:12px;font-weight:800}.sim-node--meter circle{stroke:var(--lightningcss-light,#2c466599)var(--lightningcss-dark,#c4d6ec99)}.sim-node--meter text{fill:var(--lightningcss-light,#2e4158)var(--lightningcss-dark,#cfdcec)}.sim-node--level.is-live circle{stroke:var(--lightningcss-light,#006485)var(--lightningcss-dark,#7dd3fc)}.sim-node--level.is-live text{fill:var(--lightningcss-light,#043850)var(--lightningcss-dark,#d6efff)}.sim-node--inner.is-live circle{stroke:var(--lightningcss-light,#006d43)var(--lightningcss-dark,#6ee7a8)}.sim-node--inner.is-live text{fill:var(--lightningcss-light,#003924)var(--lightningcss-dark,#d5fbe6)}.sim-node--ff.is-live circle{stroke:var(--lightningcss-light,#b4690e)var(--lightningcss-dark,#ffb14f)}.sim-node--ff.is-live text{fill:var(--lightningcss-light,#7a5100)var(--lightningcss-dark,#ffe1b8)}.sim-sign{fill:var(--lightningcss-light,#7d5000)var(--lightningcss-dark,#ffc477);text-anchor:middle;font-size:13px;font-weight:800}.sim-flow-sp{fill:var(--lightningcss-light,#006d43)var(--lightningcss-dark,#6ee7a8);font-variant-numeric:tabular-nums;font-size:10px;font-weight:800}.sim-gauge-face{fill:var(--lightningcss-light,#ecf4ffe6)var(--lightningcss-dark,#0c1a2de6);stroke:var(--lightningcss-light,#2c466559)var(--lightningcss-dark,#c4d6ec59);stroke-width:1.4px}.sim-gauge-track{fill:none;stroke:var(--lightningcss-light,#1c2d5532)var(--lightningcss-dark,#94a3b838);stroke-width:3.4px;stroke-linecap:round}.sim-gauge-fill{fill:none;stroke-width:3.4px;stroke-linecap:round}.sim-gauge-needle{stroke:var(--lightningcss-light,#202d3a)var(--lightningcss-dark,#eef6ff);stroke-width:1.9px;stroke-linecap:round}.sim-tag{fill:var(--lightningcss-light,#566c8a)var(--lightningcss-dark,#7f93ad);letter-spacing:.08em;font-size:7.5px;font-weight:800}.sim-valve-body{fill:var(--lightningcss-light,#1f66d1)var(--lightningcss-dark,#4f9cff);stroke:var(--lightningcss-light,#1f66d1)var(--lightningcss-dark,#4f9cff);stroke-width:1.6px}.sim-valve-stem{stroke:var(--lightningcss-light,#2c466580)var(--lightningcss-dark,#c4d6ec80);stroke-width:2.2px;stroke-linecap:round}.sim-valve-travel{stroke:var(--lightningcss-light,#006485)var(--lightningcss-dark,#7dd3fc);stroke-width:4px;stroke-linecap:round;transition:y2 90ms linear}.sim-valve-actuator{fill:var(--lightningcss-light,#1f66d138)var(--lightningcss-dark,#4f9cff38);stroke:var(--lightningcss-light,#006485)var(--lightningcss-dark,#7dd3fc);stroke-width:1.8px}.sim-tap{stroke:var(--lightningcss-light,#1c2d5573)var(--lightningcss-dark,#94a3b880);stroke-width:1.2px;stroke-dasharray:3 3}.sim-orifice{stroke:var(--lightningcss-light,#213a54bf)var(--lightningcss-dark,#d6e6f8bf);stroke-width:2.4px}.sim-arrowhead{fill:var(--lightningcss-light,#b4690e)var(--lightningcss-dark,#ffb14f);stroke:var(--lightningcss-light,#b4690e)var(--lightningcss-dark,#ffb14f);stroke-width:1px}.sim-stream--leak{fill:var(--lightningcss-light,#0061938c)var(--lightningcss-dark,#7dc8ff8c)}@media (min-width:1261px){.controls-body{grid-template-columns:1.12fr 1fr}.structure-switch{grid-template-columns:repeat(4,minmax(0,1fr));gap:4px}.structure-switch button{white-space:nowrap;min-height:32px;padding:0 3px;font-size:.62rem}.controls-loop .gain-grid--four{grid-template-columns:repeat(4,minmax(0,1fr))}.step-buttons button{min-height:26px}.dashboard-left{grid-template-rows:minmax(220px,1fr) minmax(0,auto)}.control-panel{max-height:100%}.structure-block{margin-bottom:7px}.controls-primary,.controls-secondary{grid-row:1}.controls-tuning{grid-row:2}.controls-loop{grid-area:3/1/auto/-1}.sim-visual{max-width:640px}}@media (max-width:620px){.structure-switch{grid-template-columns:repeat(2,minmax(0,1fr))}.disturbance-grid--two{grid-template-columns:1fr}}@media (max-width:560px){.header-actions{grid-template-columns:repeat(4,minmax(0,1fr));gap:6px}.results-button{flex:initial;grid-column:1/-1}}.sim-signal-arrow{fill:var(--lightningcss-light,#1c2d555c)var(--lightningcss-dark,#94a3b866);stroke:none}.sim-signal-arrow--level.is-live{fill:var(--lightningcss-light,#006485)var(--lightningcss-dark,#7dd3fc)}.sim-signal-arrow--ff.is-live{fill:var(--lightningcss-light,#b4690e)var(--lightningcss-dark,#ffb14f)}.sim-signal-arrow--inner.is-live{fill:var(--lightningcss-light,#006d43)var(--lightningcss-dark,#6ee7a8)}.sim-visual .sim-label{font-size:10.5px}.sim-visual .sim-tick text{font-size:9.5px}@media (min-width:1261px) and (max-height:900px){.sim-readings{display:none}}@media (min-width:1261px) and (max-height:780px){.dashboard-left{grid-template-rows:minmax(150px,1fr) minmax(0,auto)}}.sim-legend{fill:var(--lightningcss-light,#edf5ff9e)var(--lightningcss-dark,#0b182a9e);stroke:var(--lightningcss-light,#1c2d552e)var(--lightningcss-dark,#94a3b833);stroke-width:1px}.sim-legend-line{fill:var(--lightningcss-light,#3b506b)var(--lightningcss-dark,#b9c8dc);letter-spacing:.01em;font-size:9.5px;font-weight:700}.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}.icon-button--logo{padding:4px}.icon-button--logo img{object-fit:contain;width:100%;height:100%;display:block}.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:"scene control control"minmax(0,1fr)"trends trends learn"minmax(0,.78fr)/minmax(0,62fr) minmax(0,11fr) minmax(0,27fr);align-items:stretch;gap:8px;height:100%}.dashboard-left,.dashboard-right{display:contents}.dashboard-grid .device-card{flex-direction:column;grid-area:scene;height:auto;min-height:0;display:flex;overflow:hidden}.dashboard-grid .device-card .panel-heading{flex:none}.dashboard-grid .sim-visual{aspect-ratio:auto;flex:auto;width:calc(100% - 18px);max-width:none;min-height:0;max-height:none;margin:2px auto 9px}.dashboard-grid .sim-visual svg{width:100%;height:100%}.dashboard-grid .sim-readings{flex:none}.dashboard-grid .controls-body,.dashboard-grid .controls-tuning{grid-template-columns:minmax(0,1fr)}.dashboard-grid .controls-body>*{grid-area:auto}.dashboard-grid .control-panel{overscroll-behavior:contain;scrollbar-width:thin;scrollbar-color:var(--border-strong) transparent;grid-area:control;height:auto;min-height:0;overflow-y:auto}.dashboard-grid .charts-region,.dashboard-grid .chart-loading{grid-area:trends;min-height:0}.dashboard-grid .charts-region{grid-template-rows:auto minmax(0,1fr);display:grid}.dashboard-grid .device-plots,.dashboard-grid .device-plot{height:100%;min-height:0}.dashboard-grid .stat-grid{grid-area:learn;grid-template-columns:repeat(2,minmax(0,1fr));align-content:start;min-height:0;overflow-y:auto}}@media (min-width:901px) and (max-height:860px){.dashboard-grid .device-subplots:not([data-focus=top]):not([data-focus=bottom]){grid-template-rows:minmax(0,1.3fr) minmax(0,1fr)}}@media (min-width:901px) and (max-height:760px),(min-width:901px) and (max-width:1180px){.dashboard-grid .sim-readings{display:none}}@media (max-width:900px){.dashboard-grid{flex-direction:column;align-items:stretch;gap:6px;display:flex}.dashboard-left,.dashboard-right{display:contents}.dashboard-grid>.studio-tabs{order:1}.dashboard-grid .control-panel,.dashboard-grid .charts-region,.dashboard-grid .chart-loading,.dashboard-grid .stat-grid{order:2}.dashboard-grid[data-tab=controls] .charts-region,.dashboard-grid[data-tab=controls] .chart-loading,.dashboard-grid[data-tab=controls] .stat-grid,.dashboard-grid[data-tab=charts] .control-panel,.dashboard-grid[data-tab=charts] .stat-grid,.dashboard-grid[data-tab=status] .control-panel,.dashboard-grid[data-tab=status] .charts-region,.dashboard-grid[data-tab=status] .chart-loading{display:none}}.graphic-open,.graphic-viewer{--surface:var(--lightningcss-light,#fff)var(--lightningcss-dark,#0e1a2c);--surface-2:var(--lightningcss-light,#eef2f8)var(--lightningcss-dark,#162238);--ink:var(--lightningcss-light,#16233f)var(--lightningcss-dark,#eef5ff);--line:var(--lightningcss-light,#1c2d5524)var(--lightningcss-dark,#33465e);--line-strong:var(--lightningcss-light,#1c2d5542)var(--lightningcss-dark,#52647c);--muted:var(--lightningcss-light,#5b6b85)var(--lightningcss-dark,#a3b6ce);--teal:var(--lightningcss-light,#0e7c6e)var(--lightningcss-dark,#42cdd0)}@media (pointer:coarse){.structure-switch button{min-height:44px}.step-buttons button{min-height:40px;font-size:.7rem}.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}}
