.uplot,.uplot *,.uplot :before,.uplot :after{box-sizing:border-box}.uplot{width:min-content;font-family:system-ui,-apple-system,Segoe UI,Roboto,Helvetica Neue,Arial,Noto Sans,sans-serif,Apple Color Emoji,Segoe UI Emoji,Segoe UI Symbol,Noto Color Emoji;line-height:1.5}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{-webkit-user-select:none;user-select:none;position:relative}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{width:100%;height:100%;display:block;position:relative}.u-axis{position:absolute}.u-legend{text-align:center;margin:auto;font-size:14px}.u-inline{display:block}.u-inline *{display:inline-block}.u-inline tr{margin-right:16px}.u-legend th{font-weight:600}.u-legend th>*{vertical-align:middle;display:inline-block}.u-legend .u-marker{width:1em;height:1em;margin-right:4px;background-clip:padding-box!important}.u-inline.u-live th:after{content:":";vertical-align:middle}.u-inline:not(.u-live) .u-value{display:none}.u-series>*{padding:4px}.u-series th{cursor:pointer}.u-legend .u-off>*{opacity:.3}.u-select{pointer-events:none;background:#00000012;position:absolute}.u-cursor-x,.u-cursor-y{pointer-events:none;will-change:transform;position:absolute;top:0;left:0}.u-hz .u-cursor-x,.u-vt .u-cursor-y{border-right:1px dashed #607d8b;height:100%}.u-hz .u-cursor-y,.u-vt .u-cursor-x{border-bottom:1px dashed #607d8b;width:100%}.u-cursor-pt{pointer-events:none;will-change:transform;border:0 solid;border-radius:50%;position:absolute;top:0;left:0;background-clip:padding-box!important}.u-axis.u-off,.u-select.u-off,.u-cursor-x.u-off,.u-cursor-y.u-off,.u-cursor-pt.u-off{display:none}@font-face{font-family:Aldrich;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/aldrich-latin.woff2)format("woff2")}@font-face{font-family:Space Grotesk;font-style:normal;font-weight:300 700;font-display:swap;src:url(/fonts/spacegrotesk-latin.woff2)format("woff2")}:root{--ground:#eef2f3;--panel:#fff;--panel-2:#f7f9fa;--ink:#15212a;--muted:#566671;--faint:#8a99a2;--border:#dde5e9;--border-strong:#c6d1d7;--accent:#0d7c86;--accent-ink:#fff;--accent-soft:#dbeeef;--good:#1f9d57;--good-soft:#dff2e6;--warn:#b07d09;--warn-soft:#f6ecd2;--fault:#c23b26;--fault-soft:#f7e0da;--info:#3b6fb0;--info-soft:#e0ebf6;--display:"Aldrich","Space Grotesk",system-ui,sans-serif;--sans:"Space Grotesk",system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;--mono:ui-monospace,"SF Mono","Cascadia Code","JetBrains Mono",Menlo,Consolas,monospace;--r:7px;--r-sm:5px;--shadow:0 1px 2px #1428320f,0 6px 20px #1428320d}*{box-sizing:border-box}body{background:var(--ground);color:var(--ink);font-family:var(--sans);-webkit-font-smoothing:antialiased;margin:0;font-size:14px;line-height:1.5}h2{text-wrap:balance;margin:0}.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}.lbl{letter-spacing:.07em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:600}.hint{color:var(--faint);font-size:11px}.muted{color:var(--muted)}[hidden]{display:none!important}.err{background:var(--fault-soft);border:1px solid color-mix(in srgb,var(--fault) 35%,transparent);color:var(--fault);border-radius:var(--r-sm);margin-bottom:12px;padding:10px 12px;font-size:13px}.topbar{background:var(--panel);border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:16px;padding:12px 20px;display:flex}.brand{align-items:center;gap:11px;display:flex}.brand-logo{border-radius:6px;flex:none;width:auto;height:52px;display:block}.brand-name{font-family:var(--display);letter-spacing:.04em;color:var(--ink);font-size:16px;font-weight:400;line-height:1.05}.chip{border:1px solid var(--border);background:var(--panel-2);color:var(--muted);border-radius:100px;align-items:center;gap:7px;padding:5px 10px;font-size:12px;display:inline-flex}.chip .mono{color:var(--ink)}.wrap{max-width:1000px;margin:0 auto;padding:22px 20px}.page-title{font-family:var(--display);letter-spacing:.01em;margin:0 0 14px;font-size:18px;font-weight:400}.led{border-radius:50%;flex:none;width:9px;height:9px}.led.good{background:var(--good);box-shadow:0 0 0 3px color-mix(in srgb,var(--good) 22%,transparent)}.led.warn{background:var(--warn);box-shadow:0 0 0 3px color-mix(in srgb,var(--warn) 22%,transparent)}.led.fault{background:var(--fault);box-shadow:0 0 0 3px color-mix(in srgb,var(--fault) 22%,transparent)}.led.info{background:var(--info);box-shadow:0 0 0 3px color-mix(in srgb,var(--info) 22%,transparent)}.led.live{animation:1.8s ease-in-out infinite pulse}@keyframes pulse{0%,to{opacity:1}50%{opacity:.35}}.auth{background:var(--ground);place-items:center;min-height:100vh;padding:20px;display:grid}.auth-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--r);width:100%;max-width:360px;box-shadow:var(--shadow);padding:26px}.auth-brand{text-align:center;flex-direction:column;align-items:center;gap:11px;margin-bottom:20px;display:flex}.auth-brand img{border-radius:8px;width:auto;height:66px}.auth-brand .brand-name{letter-spacing:.05em;font-size:18px}.auth-sub{color:var(--muted);text-align:center;margin:-8px 0 18px;font-size:13px}.auth-card .field{margin-bottom:14px}.auth-card .btn{justify-content:center;width:100%;margin-top:4px}.gw-list{flex-direction:column;gap:10px;max-width:760px;display:flex}.gw-card{background:var(--panel);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow);cursor:pointer;text-align:left;color:inherit;align-items:center;gap:14px;padding:14px 16px;font-family:inherit;display:flex}.gw-card:hover{border-color:var(--border-strong)}.gw-card:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.gw-name{font-size:15px;font-weight:650;line-height:1.3}.gw-meta{color:var(--muted);margin-top:2px;font-size:12.5px}.gw-state{font-family:var(--display);letter-spacing:.06em;border:1px solid var(--border);color:var(--faint);white-space:nowrap;border-radius:100px;margin-left:auto;padding:4px 11px;font-size:11px}.gw-state.ONLINE{color:var(--good);border-color:color-mix(in srgb,var(--good) 40%,transparent);background:var(--good-soft)}.gw-state.STALE{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 40%,transparent);background:var(--warn-soft)}.gw-state.DARK{color:var(--faint)}.dot{border-radius:50%;flex:none;width:10px;height:10px}.dot.ONLINE{background:var(--good)}.dot.STALE{background:var(--warn)}.dot.DARK{background:var(--faint)}.crumbs{align-items:center;gap:12px;margin-bottom:14px;display:flex}.crumbs strong{font-family:var(--display);font-size:16px;font-weight:400}.subtabs{background:var(--panel-2);border:1px solid var(--border);border-radius:100px;gap:2px;margin-bottom:16px;padding:3px;display:inline-flex}.subtab{font-family:var(--display);color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:100px;padding:6px 16px;font-size:12.5px;font-weight:400}.subtab.active{background:var(--panel);color:var(--ink);box-shadow:var(--shadow)}.subtab:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.menu{position:relative}.menu-btn{border:1px solid var(--border-strong);background:var(--panel);color:var(--muted);border-radius:var(--r-sm);cursor:pointer;justify-content:center;align-items:center;width:34px;height:34px;font-size:18px;line-height:1;display:inline-flex}.menu-btn:hover,.menu-btn.active{border-color:var(--muted);color:var(--ink)}.menu-btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.menu-pop{background:var(--panel);border:1px solid var(--border-strong);border-radius:var(--r-sm);min-width:170px;box-shadow:var(--shadow);z-index:30;padding:5px;position:absolute;top:calc(100% + 6px);right:0}.menu-head{font-family:var(--mono);color:var(--muted);border-bottom:1px solid var(--border);word-break:break-all;margin-bottom:4px;padding:6px 10px 9px;font-size:12px}.menu-item{text-align:left;width:100%;color:var(--ink);cursor:pointer;background:0 0;border:none;border-radius:6px;padding:8px 10px;font-family:inherit;font-size:13.5px;display:block}.menu-item:hover{background:var(--panel-2)}.panel{background:var(--panel);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}.panel-body{padding:20px}.fsec+.fsec{margin-top:22px}.fsec-label{font-family:var(--display);letter-spacing:.09em;text-transform:uppercase;color:var(--faint);align-items:center;gap:12px;margin-bottom:14px;font-size:11px;font-weight:400;display:flex}.fsec-label:after{content:"";background:var(--border);flex:1;height:1px}.grid{gap:15px 18px;display:grid}.grid.c2{grid-template-columns:repeat(2,1fr)}.grid.c4{grid-template-columns:repeat(4,1fr)}.field{flex-direction:column;gap:6px;min-width:0;display:flex}.field.wide{grid-column:1/-1}.field.row{flex-direction:row;justify-content:space-between;align-items:center;gap:12px}input,select{color:var(--ink);background:var(--panel-2);border:1px solid var(--border-strong);border-radius:var(--r-sm);width:100%;padding:9px 11px;font-family:inherit;font-size:14px}input.mono,select.mono{font-family:var(--mono)}input:focus,select:focus{outline:2px solid var(--accent);outline-offset:0;border-color:var(--accent)}select{appearance:none;background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 16px) 51%,calc(100% - 11px) 51%;background-repeat:no-repeat;background-size:5px 5px,5px 5px;padding-right:30px}.input-unit{position:relative}.input-unit input{padding-right:36px}.input-unit .unit{color:var(--faint);font-size:12px;font-family:var(--mono);position:absolute;top:50%;right:11px;transform:translateY(-50%)}.port-row{align-items:center;gap:9px;display:flex}.port-row input{flex:1}.form-actions{border-top:1px solid var(--border);background:var(--panel-2);flex-wrap:wrap;align-items:center;gap:9px;padding:15px 20px;display:flex}.form-actions .spacer{flex:1}.btn{border-radius:var(--r-sm);cursor:pointer;border:1px solid var(--border-strong);background:var(--panel);color:var(--ink);align-items:center;gap:7px;padding:9px 15px;font-family:inherit;font-size:13.5px;font-weight:600;display:inline-flex}.btn:hover{border-color:var(--muted)}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.btn:disabled{opacity:.55;cursor:default}.btn.primary{background:var(--accent);color:var(--accent-ink);border-color:#0000}.btn.primary:hover{filter:brightness(1.06)}.btn.sm{padding:6px 11px;font-size:12.5px}.btn.ghost{background:0 0}.btn.danger{color:var(--fault)}.kv{background:var(--panel-2);border:1px solid var(--border);color:var(--muted);border-radius:100px;align-items:center;gap:6px;padding:4px 10px;font-size:12px;display:inline-flex}.kv b{color:var(--ink);font-family:var(--mono)}.id-chip{font-family:var(--mono);color:var(--faint);background:var(--panel-2);border:1px solid var(--border);word-break:break-all;border-radius:5px;align-self:flex-start;padding:4px 8px;font-size:11px}.link{color:var(--accent);cursor:pointer;background:0 0;border:none;padding:0;font-family:inherit;font-size:13px;font-weight:600}.link:hover{text-decoration:underline}.tbl-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px;padding:16px 18px 14px;display:flex}.tbl-head .t{font-size:15px;font-weight:650}.tbl-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:13px}thead th{text-align:left;letter-spacing:.06em;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap;padding:10px 14px;font-size:11px;font-weight:600}tbody td{border-bottom:1px solid var(--border);vertical-align:middle;padding:10px 14px}tbody tr:last-child td{border-bottom:none}tbody tr.off td{opacity:.6}.t-tag{font-family:var(--mono);font-weight:600}.t-desc{color:var(--muted)}.desc{color:var(--muted);margin-top:2px;font-size:11.5px}.type-badge{font-family:var(--mono);background:var(--panel-2);border:1px solid var(--border);color:var(--muted);white-space:nowrap;border-radius:4px;padding:2px 7px;font-size:11.5px}.type-badge.reg{color:var(--accent);border-color:color-mix(in srgb,var(--accent) 30%,transparent);background:var(--accent-soft)}.num{font-family:var(--mono);font-variant-numeric:tabular-nums;text-align:right}.empty{text-align:center;color:var(--faint);padding:34px 20px}.dev{background:var(--panel);border:1px solid var(--border);border-radius:var(--r);box-shadow:var(--shadow);margin-bottom:14px;overflow:hidden}.dev-head{border-bottom:1px solid var(--border);flex-wrap:wrap;align-items:baseline;gap:10px;padding:14px 16px;display:flex}.dev-head strong{font-family:var(--display);font-size:15px;font-weight:400}.dev-port{font-family:var(--mono);color:var(--faint);text-overflow:ellipsis;white-space:nowrap;margin:8px 0 4px;padding:0 16px;font-size:11.5px;overflow:hidden}.cfg-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:16px;display:flex}.pill{font-family:var(--display);letter-spacing:.05em;border:1px solid var(--border);color:var(--muted);border-radius:100px;padding:4px 11px;font-size:11px}.pill.IN_SYNC{color:var(--good);border-color:color-mix(in srgb,var(--good) 40%,transparent);background:var(--good-soft)}.pill.PENDING{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 40%,transparent);background:var(--warn-soft)}.pill.CONFLICT{color:var(--fault);border-color:color-mix(in srgb,var(--fault) 40%,transparent);background:var(--fault-soft)}.pill.UNKNOWN{color:var(--muted)}.sha{font-family:var(--mono);color:var(--faint);margin-left:auto;font-size:12px}.foot{color:var(--muted);margin-top:14px;font-size:12px}.ed-head{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:14px;display:flex}.ed-head strong{font-family:var(--display);font-size:16px;font-weight:400}.ed-devhead{justify-content:space-between;align-items:center;gap:10px;margin-bottom:10px;display:flex}.hint.err{color:var(--fault)}.ed-add{border:1px dashed var(--border-strong);width:100%;color:var(--muted);border-radius:var(--r);cursor:pointer;background:0 0;padding:11px;font-family:inherit;font-size:13px;font-weight:600}.ed-add:hover{border-color:var(--accent);color:var(--accent)}.ed-bar{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:10px;margin-top:16px;padding:14px 0 0;display:flex}.ed-workspace{align-items:flex-start;gap:18px;display:flex}.rail{flex-direction:column;flex:none;gap:9px;width:224px;display:flex;position:sticky;top:16px}.rail-head{justify-content:space-between;align-items:center;padding:0 2px;display:flex}.rail-head .lbl{color:var(--faint)}.conn-list{flex-direction:column;gap:7px;display:flex}.conn-item{border-radius:var(--r);border:1px solid var(--border);background:var(--panel);cursor:pointer;text-align:left;width:100%;color:var(--ink);align-items:center;gap:10px;padding:10px 12px;font-family:inherit;display:flex}.conn-item:hover{border-color:var(--border-strong)}.conn-item.active{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent),var(--shadow)}.conn-item:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.conn-name{text-overflow:ellipsis;white-space:nowrap;flex:1;min-width:0;font-size:13.5px;font-weight:600;line-height:1.3;overflow:hidden}.conn-count{font-family:var(--mono);color:var(--faint);font-size:11px}.rail-add{border:1px dashed var(--border-strong);color:var(--muted);border-radius:var(--r);cursor:pointer;background:0 0;padding:10px;font-family:inherit;font-size:13px;font-weight:600}.rail-add:hover{border-color:var(--accent);color:var(--accent)}.detail{flex-direction:column;flex:1;gap:14px;min-width:0;display:flex}.live-cell{font-family:var(--mono);font-variant-numeric:tabular-nums;white-space:nowrap;align-items:center;gap:8px;font-weight:600;display:flex}.live-cell .u{color:var(--muted);font-size:12px;font-weight:400}.live-cell.stale{color:var(--warn)}.live-cell.none{color:var(--faint);font-weight:400}.tp{border:1px solid color-mix(in srgb,var(--accent) 35%,var(--border));border-radius:var(--r);background:var(--accent-soft);padding:14px}.tp-lbl{letter-spacing:.09em;text-transform:uppercase;color:var(--accent);align-items:center;gap:7px;margin-bottom:8px;font-size:10.5px;font-weight:700;display:flex}.tp-value{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em;color:var(--ink);font-size:31px;font-weight:600;line-height:1}.tp-value .u{color:var(--muted);margin-left:5px;font-size:14px}.tp-raw{font-family:var(--mono);color:var(--muted);margin-top:7px;font-size:11.5px}.result{border:1px solid var(--border);border-radius:var(--r);overflow:hidden}.result-head{color:var(--muted);align-items:center;gap:10px;padding:10px 13px;font-size:13px;display:flex}.port-opts{border-top:1px solid var(--border);flex-direction:column;display:flex}.port-opt{border:none;border-bottom:1px solid var(--border);background:var(--panel);cursor:pointer;text-align:left;width:100%;color:var(--ink);flex-wrap:wrap;align-items:center;gap:7px;padding:9px 13px;font-family:inherit;font-size:12.5px;display:flex}.port-opt:last-child{border-bottom:none}.port-opt:hover{background:var(--panel-2)}.port-opt.active{background:var(--accent-soft)}.port-opt .port-path{color:var(--faint);margin-left:auto;font-size:11px}.banner{border:1px solid var(--border);border-radius:var(--r);background:var(--panel);box-shadow:var(--shadow);border-left-width:3px;padding:14px 16px;font-size:13.5px}.banner p{color:var(--muted);margin:6px 0 0}.banner.pending{border-left-color:var(--warn)}.banner.conflict{border-left-color:var(--fault)}.banner.error{border-left-color:var(--fault);background:var(--fault-soft)}.chgs{flex-direction:column;gap:7px;margin:12px 0;padding:0;list-style:none;display:flex}.chg{align-items:center;gap:9px;font-size:13px;display:flex}.chg-op{font-family:var(--mono);letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--border);border-radius:4px;padding:2px 7px;font-size:10px;font-weight:700}.chg.added .chg-op{color:var(--good);border-color:color-mix(in srgb,var(--good) 40%,transparent);background:var(--good-soft)}.chg.removed .chg-op{color:var(--fault);border-color:color-mix(in srgb,var(--fault) 40%,transparent);background:var(--fault-soft)}.chg.changed .chg-op{color:var(--warn);border-color:color-mix(in srgb,var(--warn) 40%,transparent);background:var(--warn-soft)}.chg-kind{color:var(--faint)}.toggle{border:1px solid var(--border-strong);background:var(--panel-2);cursor:pointer;border-radius:22px;flex:none;width:38px;height:22px;padding:0;transition:background .15s,border-color .15s;position:relative}.toggle .knob{background:var(--muted);border-radius:50%;width:16px;height:16px;transition:transform .15s,background .15s;position:absolute;top:2px;left:2px}.toggle.on{background:var(--accent);border-color:#0000}.toggle.on .knob{background:#fff;transform:translate(16px)}.toggle:focus-visible{outline:2px solid var(--accent);outline-offset:2px}.toggle-cell{align-items:center;gap:8px;display:inline-flex}.rec-int{font-family:var(--mono);color:var(--muted);font-size:12px}.live-top{color:var(--muted);align-items:center;gap:9px;padding:0 2px 12px;font-size:12.5px;display:flex}.live-grid{grid-template-columns:repeat(auto-fill,minmax(200px,1fr));gap:12px;display:grid}.gauge{border:1px solid var(--border);border-radius:var(--r);background:var(--panel);box-shadow:var(--shadow);flex-direction:column;gap:9px;padding:14px;display:flex}.gauge-top{justify-content:space-between;align-items:center;gap:8px;display:flex}.gauge-tag{font-family:var(--mono);font-size:13px;font-weight:600}.gauge-val{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:-.02em;font-size:26px;font-weight:600;line-height:1}.gauge-val.stale{color:var(--warn)}.gauge-val .u{color:var(--muted);margin-left:4px;font-size:13px;font-weight:500}.gauge-meta{color:var(--faint);font-size:11.5px}.trends-controls{flex-wrap:wrap;align-items:center;gap:10px;margin-bottom:6px;display:flex}.trends-controls select{width:auto}.seg{background:var(--panel-2);border:1px solid var(--border);border-radius:100px;gap:2px;padding:3px;display:inline-flex}.seg-i{font-family:var(--sans);color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:100px;padding:6px 13px;font-size:12.5px;font-weight:600}.seg-i:hover{color:var(--ink)}.seg-i.active{background:var(--panel);color:var(--ink);box-shadow:var(--shadow)}.src{color:var(--faint);margin:8px 0;font-size:12px}.plot{width:100%;margin-top:8px}.uplot,.u-legend{font-family:var(--sans);color:var(--ink)}.u-legend .u-value{color:var(--muted);font-variant-numeric:tabular-nums}.u-legend .u-label{color:var(--muted)}.trends-controls .spacer{flex:1}.trends-controls .ctl{align-items:center;gap:8px;display:inline-flex}.ctl-sep{background:var(--border);align-self:stretch;width:1px;margin:0 2px}.range-wrap{position:relative}.cpop{z-index:20;background:var(--panel);border:1px solid var(--border-strong);border-radius:var(--r);box-shadow:var(--shadow);padding:11px 12px;position:absolute;top:calc(100% + 8px);left:0}.cpop-g{grid-template-columns:auto auto;align-items:center;gap:8px 10px;display:grid}.cpop-g label{letter-spacing:.04em;text-transform:uppercase;color:var(--muted);font-size:11px;font-weight:600}.cpop-g input,.cpop-g select{color:var(--ink);background:var(--panel-2);border:1px solid var(--border);border-radius:var(--r-sm);width:auto;padding:6px 8px;font-size:12px}.cpop-g input:focus,.cpop-g select:focus{border-color:var(--accent);outline:none}.cpop-foot{justify-content:flex-end;margin-top:11px;display:flex}.chips{flex-wrap:wrap;gap:7px;margin-top:12px;display:flex}.chip-series{border:1px solid var(--border);background:var(--panel-2);font-size:12.5px;font-family:var(--mono);border-radius:100px;align-items:center;gap:6px;padding:4px 8px 4px 9px;display:inline-flex}.chip-series .dot{border-radius:50%;flex:none;width:9px;height:9px}.chip-conn{color:var(--faint);font-size:11.5px}.chip-x{color:var(--muted);cursor:pointer;background:0 0;border:none;padding:0 2px;font-size:15px;line-height:1}.chip-x:hover{color:var(--fault)}.chart{width:100%;margin-top:14px}.chart-hint{text-align:center;color:var(--faint);-webkit-user-select:none;user-select:none;margin-top:8px;font-size:11.5px}.btn.live{align-items:center;gap:6px;display:inline-flex}.live-dot{background:var(--faint);border-radius:50%;width:8px;height:8px}.btn.live.on{border-color:var(--good);color:var(--good)}.btn.live.on .live-dot{background:var(--good);animation:1.4s ease-in-out infinite live-pulse}@keyframes live-pulse{0%,to{opacity:1}50%{opacity:.25}}.u-tt{pointer-events:none;z-index:10;white-space:nowrap;background:var(--panel);border:1px solid var(--border-strong);border-radius:var(--r-sm);color:var(--ink);box-shadow:var(--shadow);padding:7px 9px;font-size:11.5px;line-height:1.55;position:absolute;top:0;left:0}.u-tt-time{color:var(--muted);font-variant-numeric:tabular-nums;margin-bottom:5px;font-weight:600}.u-tt-row{align-items:center;gap:7px;display:flex}.u-tt-dot{border-radius:50%;flex:none;width:8px;height:8px}.u-tt-lbl{color:var(--muted);flex:1;padding-right:14px}.u-tt-val{font-variant-numeric:tabular-nums;font-weight:600}.scrim{opacity:0;pointer-events:none;z-index:40;background:#0a141973;transition:opacity .2s;position:fixed;inset:0}.scrim.open{opacity:1;pointer-events:auto}.drawer{background:var(--panel);border-left:1px solid var(--border);z-index:41;flex-direction:column;width:min(450px,94vw);height:100%;transition:transform .24s;display:flex;position:fixed;top:0;right:0;transform:translate(100%);box-shadow:-14px 0 44px #0003}.drawer.open{transform:none}.drawer-head{border-bottom:1px solid var(--border);justify-content:space-between;align-items:center;gap:10px;padding:16px 18px;display:flex}.drawer-title{font-family:var(--display);font-size:14.5px;font-weight:400}.close-x{color:var(--muted);cursor:pointer;background:0 0;border:none;border-radius:5px;padding:2px 6px;font-size:22px;line-height:1}.close-x:hover{background:var(--panel-2)}.drawer-body{flex-direction:column;flex:1;gap:15px;padding:18px;display:flex;overflow-y:auto}.drawer-foot{border-top:1px solid var(--border);background:var(--panel-2);align-items:center;gap:9px;padding:14px 18px;display:flex}.toast{background:var(--ink);color:var(--ground);z-index:60;border-radius:8px;padding:10px 16px;font-size:13px;font-weight:600;position:fixed;bottom:22px;left:50%;transform:translate(-50%)}@media (width<=760px){.ed-workspace{flex-direction:column}.rail{width:100%;position:static}.conn-list{flex-direction:row;overflow-x:auto}.conn-item{min-width:190px}}@media (width<=640px){.grid.c2,.grid.c4{grid-template-columns:1fr}.topbar{flex-wrap:wrap;gap:10px}}@media (prefers-reduced-motion:reduce){*{transition:none!important;animation:none!important}}
