:root,:root[data-theme=midnight]{color-scheme:dark;--bg: #0b0d12;--bg-glow: rgba(124, 108, 255, .1);--surface: #14181f;--surface-2: #0f1319;--surface-3: #1e242e;--surface-4: #262d39;--border: #262c37;--border-strong: #38414f;--text: #e7eaf0;--text-2: #a6afbe;--text-3: #78828f;--accent: #8b7dff;--accent-hover: #a094ff;--accent-on: #14102b;--accent-soft: rgba(139, 125, 255, .14);--accent-line: rgba(139, 125, 255, .42);--in: #4ade80;--in-soft: rgba(74, 222, 128, .12);--out: #60a5fa;--out-soft: rgba(96, 165, 250, .12);--danger: #fb7185;--danger-soft: rgba(251, 113, 133, .12);--warning: #fbbf24;--warning-soft: rgba(251, 191, 36, .1);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .4);--shadow-md: 0 8px 24px rgba(0, 0, 0, .32);--shadow-lg: 0 24px 64px rgba(0, 0, 0, .55)}@media(prefers-color-scheme:light){:root:not([data-theme]){color-scheme:light;--bg: #f5f6f9;--bg-glow: rgba(91, 75, 219, .07);--surface: #ffffff;--surface-2: #f2f4f8;--surface-3: #e9ecf2;--surface-4: #dde2ea;--border: #e3e7ee;--border-strong: #c6cddb;--text: #131722;--text-2: #545e70;--text-3: #737d8e;--accent: #5b4bdb;--accent-hover: #4a3bc4;--accent-on: #ffffff;--accent-soft: rgba(91, 75, 219, .09);--accent-line: rgba(91, 75, 219, .32);--in: #10893e;--in-soft: rgba(16, 137, 62, .1);--out: #1d5fd1;--out-soft: rgba(29, 95, 209, .09);--danger: #d02f45;--danger-soft: rgba(208, 47, 69, .09);--warning: #a15c07;--warning-soft: rgba(161, 92, 7, .09);--shadow-sm: 0 1px 2px rgba(19, 23, 34, .06);--shadow-md: 0 8px 24px rgba(19, 23, 34, .08);--shadow-lg: 0 24px 64px rgba(19, 23, 34, .18)}}:root[data-theme=daylight]{color-scheme:light;--bg: #f5f6f9;--bg-glow: rgba(91, 75, 219, .07);--surface: #ffffff;--surface-2: #f2f4f8;--surface-3: #e9ecf2;--surface-4: #dde2ea;--border: #e3e7ee;--border-strong: #c6cddb;--text: #131722;--text-2: #545e70;--text-3: #737d8e;--accent: #5b4bdb;--accent-hover: #4a3bc4;--accent-on: #ffffff;--accent-soft: rgba(91, 75, 219, .09);--accent-line: rgba(91, 75, 219, .32);--in: #10893e;--in-soft: rgba(16, 137, 62, .1);--out: #1d5fd1;--out-soft: rgba(29, 95, 209, .09);--danger: #d02f45;--danger-soft: rgba(208, 47, 69, .09);--warning: #a15c07;--warning-soft: rgba(161, 92, 7, .09);--shadow-sm: 0 1px 2px rgba(19, 23, 34, .06);--shadow-md: 0 8px 24px rgba(19, 23, 34, .08);--shadow-lg: 0 24px 64px rgba(19, 23, 34, .18)}:root[data-theme=tape]{color-scheme:dark;--bg: #0c0a07;--bg-glow: rgba(240, 179, 93, .1);--surface: #16130e;--surface-2: #100d09;--surface-3: #211c14;--surface-4: #2c251a;--border: #2a2419;--border-strong: #443a29;--text: #f0e9dd;--text-2: #b3a894;--text-3: #857b6b;--accent: #f0b35d;--accent-hover: #ffc87c;--accent-on: #1b1305;--accent-soft: rgba(240, 179, 93, .13);--accent-line: rgba(240, 179, 93, .42);--in: #6ee7a5;--in-soft: rgba(110, 231, 165, .12);--out: #7cc0ff;--out-soft: rgba(124, 192, 255, .12);--danger: #ff8a8f;--danger-soft: rgba(255, 138, 143, .12);--warning: #fb923c;--warning-soft: rgba(251, 146, 60, .11);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .45);--shadow-md: 0 8px 24px rgba(0, 0, 0, .36);--shadow-lg: 0 24px 64px rgba(0, 0, 0, .6)}:root[data-theme=magenta]{color-scheme:dark;--bg: #0e0a12;--bg-glow: rgba(244, 114, 182, .11);--surface: #181320;--surface-2: #120e19;--surface-3: #221b2c;--surface-4: #2d2438;--border: #2a2235;--border-strong: #3f3450;--text: #ece7f2;--text-2: #ada6bb;--text-3: #7e7690;--accent: #f472b6;--accent-hover: #f9a8d4;--accent-on: #29091a;--accent-soft: rgba(244, 114, 182, .14);--accent-line: rgba(244, 114, 182, .42);--in: #4ade80;--in-soft: rgba(74, 222, 128, .12);--out: #60a5fa;--out-soft: rgba(96, 165, 250, .12);--danger: #ff5252;--danger-soft: rgba(255, 82, 82, .13);--warning: #fbbf24;--warning-soft: rgba(251, 191, 36, .1);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .45);--shadow-md: 0 8px 24px rgba(0, 0, 0, .36);--shadow-lg: 0 24px 64px rgba(0, 0, 0, .6)}:root[data-theme=contrast]{color-scheme:dark;--bg: #000000;--bg-glow: transparent;--surface: #0a0a0a;--surface-2: #151515;--surface-3: #202020;--surface-4: #2e2e2e;--border: #5a5a5a;--border-strong: #8a8a8a;--text: #ffffff;--text-2: #e4e4e4;--text-3: #bdbdbd;--accent: #ffd60a;--accent-hover: #ffe45c;--accent-on: #000000;--accent-soft: rgba(255, 214, 10, .18);--accent-line: rgba(255, 214, 10, .6);--in: #5ef08f;--in-soft: rgba(94, 240, 143, .16);--out: #7cc4ff;--out-soft: rgba(124, 196, 255, .16);--danger: #ff8a94;--danger-soft: rgba(255, 138, 148, .16);--warning: #ff9f1c;--warning-soft: rgba(255, 159, 28, .14);--shadow-sm: 0 1px 2px rgba(0, 0, 0, .6);--shadow-md: 0 8px 24px rgba(0, 0, 0, .5);--shadow-lg: 0 24px 64px rgba(0, 0, 0, .7)}:root[data-theme=paper]{color-scheme:light;--bg: #f6f2e9;--bg-glow: rgba(15, 118, 110, .06);--surface: #fffdf8;--surface-2: #f2ede1;--surface-3: #e8e1d1;--surface-4: #dbd2be;--border: #e5ddcc;--border-strong: #c8bda5;--text: #221d15;--text-2: #5c5344;--text-3: #7d7363;--accent: #0f766e;--accent-hover: #0b5f59;--accent-on: #ffffff;--accent-soft: rgba(15, 118, 110, .1);--accent-line: rgba(15, 118, 110, .32);--in: #15803d;--in-soft: rgba(21, 128, 61, .1);--out: #1d4ed8;--out-soft: rgba(29, 78, 216, .09);--danger: #b91c1c;--danger-soft: rgba(185, 28, 28, .09);--warning: #92400e;--warning-soft: rgba(146, 64, 14, .1);--shadow-sm: 0 1px 2px rgba(64, 48, 20, .08);--shadow-md: 0 8px 24px rgba(64, 48, 20, .1);--shadow-lg: 0 24px 64px rgba(64, 48, 20, .22)}:root{--font-ui: "Segoe UI Variable Text", "Segoe UI", system-ui, -apple-system, "Noto Sans TC", "Microsoft JhengHei UI", sans-serif;--font-mono: "Cascadia Mono", ui-monospace, "SF Mono", Consolas, "Liberation Mono", monospace;--radius-sm: 6px;--radius: 10px;--radius-lg: 14px;--radius-pill: 999px;--topbar-h: 60px;--sidebar-w: 340px;--control-h: 36px;font-family:var(--font-ui);font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased}*{box-sizing:border-box}html,body,#root{min-width:360px;min-height:100%;margin:0}body{min-height:100vh;overflow:hidden;color:var(--text);background:radial-gradient(70rem 34rem at 8% -12%,var(--bg-glow),transparent),var(--bg);font-size:14px;line-height:1.5}h1,h2,h3,h4{margin:0;font-weight:620;letter-spacing:-.011em}h2{font-size:15px}h3{font-size:14px}h4{font-size:13px}p{margin:0}button,input,select,textarea{font:inherit;color:inherit}button{border:0;background:none;cursor:pointer}button:disabled{cursor:not-allowed}a{color:var(--accent)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:var(--radius-sm)}.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{border:3px solid transparent;border-radius:var(--radius-pill);background:var(--surface-4);background-clip:padding-box}::-webkit-scrollbar-thumb:hover{background:var(--border-strong);background-clip:padding-box}.mono{font-family:var(--font-mono);font-variant-ligatures:none}.eyebrow{display:block;color:var(--accent);font-size:11px;font-weight:700;letter-spacing:.09em;text-transform:uppercase}.hint{color:var(--text-2);font-size:12px;line-height:1.6}.hint.centered{padding:12px 0;text-align:center}.placeholder{padding:24px 16px;color:var(--text-2);border:1px dashed var(--border-strong);border-radius:var(--radius);font-size:12px;line-height:1.6;text-align:center}.btn{height:var(--control-h);display:inline-flex;flex:none;align-items:center;justify-content:center;gap:7px;padding:0 13px;color:var(--text);border:1px solid transparent;border-radius:var(--radius);font-size:13px;font-weight:600;white-space:nowrap;text-decoration:none;transition:background-color .14s ease,border-color .14s ease,color .14s ease}.btn svg{flex:none}.btn:disabled{opacity:.45}.btn.primary{color:var(--accent-on);background:var(--accent)}.btn.primary:hover:not(:disabled){background:var(--accent-hover)}.btn.ghost{color:var(--text);border-color:var(--border);background:var(--surface)}.btn.ghost:hover:not(:disabled){border-color:var(--border-strong);background:var(--surface-3)}.btn.plain{color:var(--text-2)}.btn.plain:hover:not(:disabled){color:var(--text);background:var(--surface-3)}.btn.danger{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 34%,transparent);background:var(--danger-soft)}.btn.danger:hover:not(:disabled){background:color-mix(in srgb,var(--danger) 18%,transparent)}.btn.icon{width:var(--control-h);padding:0}.btn.block{width:100%}.btn.sm{height:30px;padding:0 10px;border-radius:var(--radius-sm);font-size:12px}.btn.sm.icon{width:30px;padding:0}input,select,textarea{width:100%;min-width:0;color:var(--text);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);transition:border-color .14s ease,box-shadow .14s ease,background-color .14s ease}input,select{height:var(--control-h);padding:0 11px}input,select{font-size:13px}textarea{padding:10px 12px;font-size:13px;line-height:1.6;resize:vertical}input.mono,textarea.mono{font-family:var(--font-mono);font-size:12.5px}input::placeholder,textarea::placeholder{color:var(--text-3)}input:hover:not(:disabled),select:hover:not(:disabled),textarea:hover:not(:disabled){border-color:var(--border-strong)}input:focus,select:focus,textarea:focus{border-color:var(--accent);outline:0;box-shadow:0 0 0 3px var(--accent-soft)}input:disabled,select:disabled,textarea:disabled{opacity:.55;cursor:not-allowed}input[type=checkbox]{width:15px;height:15px;flex:none;padding:0;accent-color:var(--accent)}.field{min-width:0;display:grid;gap:6px}.field>span{color:var(--text-2);font-size:12px;font-weight:600}.field-grid{display:grid;gap:12px}.row-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px}.row-3{display:grid;grid-template-columns:88px minmax(0,1fr) 78px;gap:8px}.checkbox{display:flex;align-items:center;gap:9px;color:var(--text-2);font-size:13px;cursor:pointer}.checkbox:has(input:disabled){cursor:not-allowed}.select-inline select{width:auto;min-width:104px;height:32px;padding:0 8px;border-radius:var(--radius-sm);font-size:12px}.badge{padding:3px 8px;color:var(--text-2);border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface-2);font-size:11px;font-weight:650;white-space:nowrap}.tag{padding:2px 6px;color:var(--text-2);border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:11px;font-weight:600;font-style:normal;white-space:nowrap}.tag.accent{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.tag.in{color:var(--in);border-color:color-mix(in srgb,var(--in) 30%,transparent)}.tag.out{color:var(--out);border-color:color-mix(in srgb,var(--out) 30%,transparent)}.tag.state-running{color:var(--in);border-color:color-mix(in srgb,var(--in) 34%,transparent)}.tag.state-paused{color:var(--warning);border-color:color-mix(in srgb,var(--warning) 34%,transparent)}.tag.state-cancelled{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 34%,transparent)}.tag.state-completed{color:var(--in);border-color:color-mix(in srgb,var(--in) 34%,transparent)}.tag.warn{color:var(--warning);border-color:color-mix(in srgb,var(--warning) 34%,transparent);background:var(--warning-soft)}.segmented{display:inline-flex;flex:none;align-items:center;gap:2px;padding:3px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.segmented button{height:28px;display:inline-flex;align-items:center;gap:6px;padding:0 10px;color:var(--text-2);border-radius:var(--radius-sm);font-size:12px;font-weight:620;white-space:nowrap;transition:background-color .14s ease,color .14s ease}.segmented button:hover:not(:disabled):not(.active){color:var(--text)}.segmented button:disabled{opacity:.4}.segmented button.active{color:var(--text);background:var(--surface);box-shadow:var(--shadow-sm)}.segmented button.active svg{color:var(--accent)}.theme-menu{position:relative;flex:none}.theme-menu>.btn{max-width:148px}.theme-menu>.btn span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.theme-popover{position:absolute;top:calc(100% + 8px);right:0;z-index:40;width:236px;display:grid;gap:1px;padding:6px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-md)}.theme-group{display:flex;align-items:center;gap:6px;padding:9px 8px 3px;color:var(--text-3);font-size:11px;font-weight:700;letter-spacing:.07em;text-transform:uppercase}.theme-option{display:grid;grid-template-columns:auto minmax(0,1fr) 15px;align-items:center;gap:10px;padding:7px 8px;border-radius:var(--radius-sm);text-align:left}.theme-option:hover{background:var(--surface-3)}.theme-option[aria-checked=true]{background:var(--accent-soft)}.theme-option svg{color:var(--accent)}.theme-option-text{min-width:0;display:grid}.theme-option strong{font-size:13px;font-weight:600}.theme-option small{color:var(--text-3);font-size:11px}.swatch{width:22px;height:22px;flex:none;border:1px solid var(--border-strong);border-radius:var(--radius-sm);background:linear-gradient(135deg,var(--sw-1) 0 52%,var(--sw-2) 52% 100%)}.swatch[data-swatch=system]{--sw-1: #0b0d12;--sw-2: #f5f6f9}.swatch[data-swatch=midnight]{--sw-1: #0b0d12;--sw-2: #8b7dff}.swatch[data-swatch=tape]{--sw-1: #0c0a07;--sw-2: #f0b35d}.swatch[data-swatch=magenta]{--sw-1: #0e0a12;--sw-2: #f472b6}.swatch[data-swatch=contrast]{--sw-1: #000000;--sw-2: #ffd60a}.swatch[data-swatch=daylight]{--sw-1: #f5f6f9;--sw-2: #5b4bdb}.swatch[data-swatch=paper]{--sw-1: #f6f2e9;--sw-2: #0f766e}.app{height:100vh;display:grid;grid-template-rows:var(--topbar-h) auto minmax(0,1fr)}.topbar{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:16px;padding:0 16px;border-bottom:1px solid var(--border);background:var(--surface)}.brand{min-width:0;display:flex;align-items:center;gap:10px}.brand-mark{width:34px;height:34px;flex:none;display:grid;place-items:center;color:var(--accent-on);border-radius:var(--radius);background:linear-gradient(150deg,var(--accent-hover),var(--accent));box-shadow:0 4px 14px var(--accent-soft)}.brand-text{min-width:0;display:grid}.brand-text strong{font-size:15px;font-weight:680;letter-spacing:-.02em}.brand-text small{color:var(--text-3);font-size:11px;font-weight:600;letter-spacing:.05em}.status{max-width:340px;display:flex;align-items:center;gap:9px;padding:5px 13px 5px 11px;border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface-2)}.status-dot{width:8px;height:8px;flex:none;border-radius:50%;background:var(--text-3)}.status-connected .status-dot{background:var(--in);box-shadow:0 0 0 3px var(--in-soft)}.status-connecting .status-dot,.status-reconnecting .status-dot{background:var(--warning);animation:pulse 1.2s ease-in-out infinite}.status-error .status-dot{background:var(--danger);box-shadow:0 0 0 3px var(--danger-soft)}.status-text{min-width:0;display:grid}.status-text strong{font-size:12.5px;font-weight:650}.status-text small{overflow:hidden;color:var(--text-3);font-family:var(--font-mono);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.topbar-actions{justify-self:end;display:flex;align-items:center;gap:8px}.update-control.downloaded{color:var(--accent-on);border-color:var(--accent);background:var(--accent)}.update-control.error{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 34%,transparent)}.session-tabs{min-width:0;display:flex;align-items:stretch;gap:8px;padding:7px 12px;border-bottom:1px solid var(--border);background:var(--surface-2)}.session-tabs-scroll{min-width:0;flex:1;display:flex;gap:6px;overflow-x:auto;scrollbar-width:thin}.session-tab{min-width:138px;max-width:250px;display:flex;align-items:center;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.session-tab:has(>button.active){border-color:color-mix(in srgb,var(--accent) 58%,var(--border));box-shadow:inset 0 -2px 0 var(--accent)}.session-tab>[role=tab]{min-width:0;height:34px;flex:1;display:flex;align-items:center;gap:7px;padding:0 9px;color:var(--text-2);text-align:left}.session-tab>[role=tab].active{color:var(--text-1)}.session-tab>[role=tab]>span:nth-child(2){overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.session-tab>[role=tab] small{min-width:18px;padding:1px 5px;color:var(--accent-on);font-size:10px;font-weight:700;text-align:center;border-radius:var(--radius-pill);background:var(--accent)}.session-tab .status-dot{width:7px;height:7px}.session-tab-close{width:28px;height:28px;flex:none;display:grid;place-items:center;margin-right:3px;color:var(--text-3);border-radius:var(--radius-sm)}.session-tab-close:hover{color:var(--danger);background:var(--danger-soft)}.session-add{flex:none;height:36px}.session-add>span:first-child{font-size:18px;line-height:1}.session-host,.session-workspace,.session-workspace>.workspace{min-height:0;height:100%}.session-host{overflow:hidden}.session-workspace[hidden]{display:none}.workspace{min-height:0;display:grid;grid-template-columns:var(--sidebar-w) minmax(0,1fr)}.sidebar{display:flex;flex-direction:column;gap:12px;padding:16px;overflow-y:auto;border-right:1px solid var(--border)}.sidebar>.panel{flex:none}.stage{min-width:0;display:grid;grid-template-rows:auto minmax(0,1fr) auto;gap:12px;padding:16px;overflow:hidden}.panel{overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm)}.panel-head,.pane-head,.subpanel-head,.publish-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.panel-head{padding:13px 16px;border-bottom:1px solid var(--border);background:var(--surface-2)}.panel-body{display:grid;gap:14px;padding:16px}.profile-row,.subscribe-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px}.protocol-guide{display:grid;gap:3px;padding:9px 10px;color:var(--text-2);border:1px solid color-mix(in srgb,var(--accent) 20%,var(--border));border-radius:var(--radius);background:var(--accent-soft);font-size:11.5px;line-height:1.5}.protocol-guide strong{color:var(--text);font-size:12px;font-weight:650}.advanced{border-top:1px solid var(--border);border-bottom:1px solid var(--border)}.advanced summary{padding:11px 2px;color:var(--text-2);font-size:12.5px;font-weight:600;cursor:pointer;list-style-position:inside}.advanced summary:hover{color:var(--text)}.advanced>.field-grid{padding:4px 0 16px}.websocket-auth-group{display:grid;gap:12px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.websocket-auth-head,.websocket-value-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.websocket-auth-head>div{min-width:0;display:grid;gap:3px}.websocket-auth-head p,.websocket-storage-note{margin:0;color:var(--text-3);font-size:11px;line-height:1.45}.websocket-value-list{display:grid;gap:7px}.websocket-value-head strong{font-size:11px;font-weight:650}.websocket-value-row{display:grid;grid-template-columns:minmax(0,1fr) 30px;gap:6px;align-items:center}.websocket-value-row input{min-width:0}.websocket-value-row input:first-child{grid-column:1 / -1}.will-group{display:grid;gap:7px;padding:11px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.will-group.enabled{border-color:color-mix(in srgb,var(--accent) 35%,var(--border))}.will-group-head{display:flex;align-items:center;justify-content:space-between;gap:8px}.will-group>p,.will-storage-note{color:var(--text-3);font-size:10.5px;line-height:1.55}.will-fields{display:grid;gap:10px;padding-top:4px;border-top:1px solid var(--border)}.will-options{display:grid;grid-template-columns:minmax(0,1fr) 92px auto;align-items:end;gap:7px}.will-retain{min-height:var(--control-h)}.will-fields textarea{min-height:72px;resize:vertical}.group-label{color:var(--accent);font-size:11px;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.tls-group{display:grid;gap:10px;padding:12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.tls-row{display:grid;grid-template-columns:minmax(0,1fr) auto auto;gap:6px;align-items:end}.subscribe-list{display:grid;gap:6px;margin:0;padding:0;list-style:none}.subscribe-item{display:grid;grid-template-columns:minmax(0,1fr) auto auto;align-items:center;gap:8px;padding:6px 6px 6px 11px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.subscribe-item>span:first-child{overflow:hidden;font-size:12.5px;text-overflow:ellipsis;white-space:nowrap}.subscribe-item .btn:hover{color:var(--danger)}.metrics{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm)}.metric{min-width:0;display:grid;gap:2px;padding:12px 16px}.metric+.metric{border-left:1px solid var(--border)}.metric-label{color:var(--text-2);font-size:11px;font-weight:650;letter-spacing:.06em;text-transform:uppercase}.metric-value{overflow:hidden;font-family:var(--font-mono);font-size:20px;font-weight:500;font-variant-numeric:tabular-nums;letter-spacing:-.02em;text-overflow:ellipsis;white-space:nowrap}.metric-state{display:flex;align-items:center;gap:8px;font-family:var(--font-ui);font-size:17px}.metric-note{color:var(--text-3);font-size:11px}.rec-dot{width:8px;height:8px;flex:none;border-radius:50%;background:var(--text-3)}.rec-dot.recording{background:var(--danger);animation:pulse 1.5s ease-in-out infinite}.stage-panel{min-height:0;display:grid;grid-template-rows:auto auto minmax(0,1fr);overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm)}.stage-toolbar{display:flex;align-items:center;gap:10px;padding:12px 14px;border-bottom:1px solid var(--border);background:var(--surface-2)}.search{min-width:0;flex:1;max-width:380px;position:relative;display:flex;align-items:center}.search>svg{position:absolute;left:11px;color:var(--text-3);pointer-events:none}.search input{padding-left:34px;padding-right:34px}.search>button{position:absolute;right:6px;display:grid;place-items:center;padding:4px;color:var(--text-3);border-radius:var(--radius-sm)}.search>button:hover{color:var(--text);background:var(--surface-3)}.toolbar-actions{margin-left:auto;display:flex;align-items:center;gap:6px}.filter-note{padding:7px 16px;color:var(--text-2);border-bottom:1px solid var(--border);background:var(--accent-soft);font-family:var(--font-mono);font-size:11.5px}.stage-scroll{min-height:0;grid-row:3;overflow-y:auto}.stage-scroll.no-scroll{overflow:hidden}.empty{height:100%;min-height:260px;display:grid;place-content:center;justify-items:center;gap:6px;padding:32px;text-align:center}.empty h3{margin-top:14px;font-size:15px}.empty p{max-width:400px;color:var(--text-2);font-size:13px;line-height:1.65}.empty-glyph{color:var(--accent);font-family:var(--font-mono);font-size:30px;font-weight:600}.signal{height:34px;display:flex;align-items:flex-end;gap:5px}.signal i{width:4px;border-radius:var(--radius-pill);background:var(--accent);animation:signal 1.4s ease-in-out infinite}.signal i:nth-child(1){height:14px}.signal i:nth-child(2){height:30px;animation-delay:.16s}.signal i:nth-child(3){height:21px;animation-delay:.32s}.timeline{min-width:760px}.msg{border-bottom:1px solid var(--border);border-left:2px solid transparent}.msg.incoming{border-left-color:color-mix(in srgb,var(--in) 55%,transparent)}.msg.outgoing{border-left-color:color-mix(in srgb,var(--out) 55%,transparent)}.msg:hover,.msg.expanded{background:var(--surface-2)}.msg-summary{width:100%;min-height:42px;display:grid;grid-template-columns:40px 98px minmax(140px,.9fr) minmax(180px,1.4fr) auto 64px 18px;align-items:center;gap:10px;padding:6px 14px;text-align:left}.dir{padding:2px 0;color:var(--in);border:1px solid color-mix(in srgb,var(--in) 32%,transparent);border-radius:var(--radius-sm);background:var(--in-soft);font-family:var(--font-mono);font-size:10.5px;font-weight:700;text-align:center}.msg.outgoing .dir,.dir.outgoing{color:var(--out);border-color:color-mix(in srgb,var(--out) 32%,transparent);background:var(--out-soft)}.msg-time,.msg-size{color:var(--text-3);font-family:var(--font-mono);font-size:11.5px;font-variant-numeric:tabular-nums}.msg-size{text-align:right}.msg-topic,.msg-preview{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.msg-topic{font-family:var(--font-mono);font-size:12.5px;font-weight:500}.msg-preview{color:var(--text-2);font-family:var(--font-mono);font-size:12px}.msg-flags{display:flex;align-items:center;gap:4px}.chevron{color:var(--text-3);transition:transform .16s ease}.msg.expanded .chevron{transform:rotate(90deg);color:var(--accent)}.msg-detail{margin:0 14px 14px 52px;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.detail-meta{display:flex;flex-wrap:wrap;gap:6px 24px;margin:0;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--surface-2)}.detail-meta>div{display:flex;align-items:baseline;gap:7px;min-width:0}.detail-meta dt{color:var(--text-3);font-size:11.5px}.detail-meta dd{overflow:hidden;margin:0;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.mqtt-properties{display:grid;gap:10px;padding:12px;border-bottom:1px solid var(--border);background:color-mix(in srgb,var(--accent-soft) 42%,var(--surface))}.mqtt-properties-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.mqtt-properties-head h3{margin-top:3px}.mqtt-properties-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px;margin:0}.mqtt-properties-meta>div{min-width:0;padding:9px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.mqtt-properties-meta dt{margin-bottom:4px;color:var(--text-3);font-size:11px;font-weight:650;letter-spacing:.03em;text-transform:uppercase}.mqtt-properties-meta dd{overflow:hidden;margin:0;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.mqtt-user-properties{overflow:hidden;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.mqtt-user-properties h4{padding:9px 10px}.mqtt-user-properties table{width:100%;border-collapse:collapse;font-size:12px}.mqtt-user-properties th,.mqtt-user-properties td{padding:8px 10px;border-top:1px solid var(--border);text-align:left;word-break:break-word}.mqtt-user-properties th{color:var(--text-3);font-size:11px;font-weight:650;letter-spacing:.03em;text-transform:uppercase}.mqtt-user-properties td:first-child{width:34%}.inspector-bar{min-height:44px;display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:7px 10px;border-bottom:1px solid var(--border)}.inspector-actions{display:flex;align-items:center;gap:8px}.kind{padding:3px 8px;color:var(--text-2);border:1px solid var(--border);border-radius:var(--radius-pill);font-family:var(--font-mono);font-size:10.5px;font-weight:700;letter-spacing:.04em;text-transform:uppercase}.kind.json{color:var(--in);border-color:color-mix(in srgb,var(--in) 32%,transparent)}.kind.binary{color:var(--warning);border-color:color-mix(in srgb,var(--warning) 32%,transparent)}.note{margin:0;padding:9px 12px;color:var(--warning);border-bottom:1px solid color-mix(in srgb,var(--warning) 24%,transparent);background:var(--warning-soft);font-size:12px;line-height:1.55}.code{max-height:300px;margin:0;padding:12px;overflow:auto;color:var(--text);background:var(--surface-2);font-family:var(--font-mono);font-size:12px;line-height:1.65;white-space:pre-wrap;word-break:break-word}.code.hex{white-space:pre;word-break:normal}.code.inline{max-height:none;display:block;padding:9px 11px;overflow-x:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);white-space:nowrap}.structured-payload{display:grid;gap:10px;padding:12px;background:var(--surface-2)}.structured-payload-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px}.structured-payload-head>div:first-child{min-width:0;display:grid;gap:3px}.structured-payload-head h3{font-size:15px}.structured-payload-head p{max-width:760px;color:var(--text-2);font-size:11.5px;line-height:1.55}.structured-payload-tags{flex:none;display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.structured-payload-error{display:grid;gap:6px;padding:12px;color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 34%,transparent);border-radius:var(--radius);background:var(--danger-soft)}.structured-payload-error strong{font-size:12.5px}.structured-payload-error code{overflow-wrap:anywhere;color:var(--text-2);font-size:11px}.payload-tree-scroll{max-height:360px;overflow:auto;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.payload-tree,.payload-tree ul{margin:0;padding:0;list-style:none}.payload-tree ul{margin-left:17px;border-left:1px solid var(--border)}.payload-tree-item,.payload-tree-branch summary{min-height:31px;display:flex;align-items:baseline;gap:7px;padding:6px 10px;border-bottom:1px solid var(--border);font-family:var(--font-mono);font-size:11.5px}.payload-tree-branch summary{cursor:pointer}.payload-tree-branch summary:hover{background:var(--accent-soft)}.payload-tree-branch summary::marker{color:var(--accent)}.payload-tree-key{color:var(--accent);font-size:11.5px;font-weight:650}.payload-tree-separator{color:var(--text-3)}.payload-tree-value{max-width:min(680px,60vw);overflow:hidden;color:var(--text);text-overflow:ellipsis;white-space:pre}.payload-tree-item small,.payload-tree-summary{color:var(--text-3);font-size:10.5px}.payload-tree-item.kind-string .payload-tree-value{color:var(--in)}.payload-tree-item.kind-number .payload-tree-value,.payload-tree-item.kind-bigint .payload-tree-value{color:var(--out)}.payload-tree-item.kind-boolean .payload-tree-value{color:var(--warning)}.payload-tree-item.kind-null .payload-tree-value,.payload-tree-item.kind-undefined .payload-tree-value,.payload-tree-item.kind-reference .payload-tree-value{color:var(--text-3)}.protobuf-schema-controls{display:grid;grid-template-columns:minmax(150px,.7fr) minmax(220px,1.3fr) 30px auto;align-items:end;gap:8px;padding:10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.protobuf-schema-controls .field>span{font-size:10.5px;letter-spacing:.03em;text-transform:uppercase}.protobuf-schema-controls select{height:30px;font-family:var(--font-mono);font-size:11.5px}.protobuf-import{position:relative;overflow:hidden}.protobuf-import input{position:absolute;width:1px;height:1px;opacity:0;pointer-events:none}.protobuf-delete{align-self:end}.protobuf-privacy{margin:-2px 0 0}.protobuf-empty{display:grid;gap:5px;padding:16px;color:var(--text-2);border:1px dashed var(--border-strong);border-radius:var(--radius);text-align:center}.protobuf-empty strong{color:var(--text);font-size:13px}.protobuf-empty p{font-size:11.5px;line-height:1.55}.protobuf-decoded-count{color:var(--text-3);font-size:10.5px}.sparkplug-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(130px,1fr));gap:7px;margin:0}.sparkplug-meta>div{min-width:0;padding:8px 9px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.sparkplug-meta dt{margin-bottom:3px;color:var(--text-3);font-size:10px;font-weight:650;text-transform:uppercase}.sparkplug-meta dd{overflow:hidden;margin:0;font-size:11.5px;text-overflow:ellipsis;white-space:nowrap}.sparkplug-metrics,.sparkplug-tree{overflow:hidden;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface)}.sparkplug-section-head{min-height:38px;display:flex;align-items:center;justify-content:space-between;gap:8px;padding:7px 10px;border-bottom:1px solid var(--border)}.sparkplug-section-head h4{font-size:12px}.sparkplug-metrics table{width:100%;border-collapse:collapse;font-size:11.5px}.sparkplug-metrics th,.sparkplug-metrics td{max-width:260px;padding:7px 9px;border-bottom:1px solid var(--border);text-align:left;white-space:nowrap}.sparkplug-metrics th{color:var(--text-3);font-size:10px;letter-spacing:.03em;text-transform:uppercase}.sparkplug-metrics tbody tr:last-child td{border-bottom:0}.sparkplug-value{overflow:hidden;text-overflow:ellipsis}.sparkplug-tree .payload-tree-scroll{max-height:300px;border:0;border-radius:0}.sparkplug-source{color:var(--text-3);font-size:10.5px}.sparkplug-source a{color:var(--accent)}.lorawan{display:grid;gap:12px;padding:12px}.lorawan-head{display:flex;align-items:center;justify-content:space-between;gap:12px}.lorawan-head h3{margin-top:3px}.lorawan-meta{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:8px;margin:0}.lorawan-meta>div{min-width:0;padding:9px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.lorawan-meta dt{margin-bottom:4px;color:var(--text-3);font-size:11px;font-weight:650;letter-spacing:.03em;text-transform:uppercase}.lorawan-meta dd{overflow:hidden;margin:0;font-size:12px;text-overflow:ellipsis;white-space:nowrap}.lorawan-block{overflow:hidden;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.lorawan-block-head{min-height:40px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 11px;border-bottom:1px solid var(--border)}.lorawan-block-head code{max-width:min(520px,52vw);display:block;margin-top:3px;overflow:hidden;color:var(--text-3);font-family:var(--font-mono);font-size:11px;text-overflow:ellipsis;white-space:nowrap}.lorawan-empty{padding:12px;color:var(--text-3);font-size:12px}.table-scroll{overflow-x:auto}.lorawan-block table{width:100%;border-collapse:collapse;font-family:var(--font-mono);font-size:12px}.lorawan-block th,.lorawan-block td{padding:8px 11px;border-top:1px solid var(--border);text-align:left;white-space:nowrap}.lorawan-block thead th{color:var(--text-3);border-top:0;font-size:11px;font-weight:650;letter-spacing:.03em;text-transform:uppercase}.lorawan-block td:first-child{width:100%}.topics{height:100%;min-height:0;display:grid;grid-template-columns:minmax(0,1.5fr) minmax(280px,.75fr)}.topics-pane,.retained-pane{min-width:0;min-height:0;padding:16px;overflow-y:auto}.retained-pane{border-left:1px solid var(--border);background:var(--surface-2)}.pane-head{margin-bottom:12px}.tree,.tree-children{margin:0;padding:0;list-style:none}.tree{display:grid;gap:6px}.tree-children{display:grid;gap:6px;margin:6px 0 0 12px;padding-left:12px;border-left:1px solid var(--border)}.tree-branch{min-width:0}.tree-node{width:100%;display:grid;gap:4px;padding:8px 10px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);text-align:left}.tree-node:hover:not(:disabled){border-color:var(--accent-line);background:var(--accent-soft)}.tree-node:disabled{opacity:1;cursor:default}.tree-row{display:flex;align-items:center;gap:8px}.tree-segment{min-width:0;flex:1;overflow:hidden;font-size:12.5px;font-weight:500;text-overflow:ellipsis;white-space:nowrap}.tree-counts{display:flex;flex:none;gap:4px}.tree-total{flex:none;min-width:28px;color:var(--text-2);font-size:12px;text-align:right}.tree-preview{display:grid;grid-template-columns:minmax(0,1fr) auto;gap:10px;color:var(--text-3);font-size:11.5px}.tree-preview>*{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.retained-pane .hint{margin-bottom:12px}.retained-list{display:grid;gap:8px}.retained-card{min-width:0;display:grid;gap:4px;padding:10px 11px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface);text-align:left}.retained-card:hover{border-color:var(--accent-line);background:var(--accent-soft)}.retained-card strong,.retained-card>span{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.retained-card strong{font-size:12.5px}.retained-card>span{color:var(--text-2);font-size:12px}.retained-card small{color:var(--text-3);font-size:11px}.packet-flow-viewer{height:100%;min-height:0;padding:16px;overflow-y:auto}.packet-flow-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:14px}.packet-flow-head>div:first-child{min-width:0;display:grid;gap:4px}.packet-flow-head h3{font-size:15px}.packet-flow-head p{max-width:760px;color:var(--text-2);font-size:12px;line-height:1.55}.packet-flow-head small{color:var(--text-3);font-size:11px}.packet-flow-summary{flex:none;display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.packet-flow-summary .pending{color:var(--warning);border-color:color-mix(in srgb,var(--warning) 34%,transparent)}.packet-flow-summary .completed{color:var(--in);border-color:color-mix(in srgb,var(--in) 34%,transparent)}.packet-flow-summary .failed{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 34%,transparent)}.packet-flow-legend{display:flex;align-items:center;gap:14px;margin-bottom:12px;padding:8px 10px;color:var(--text-2);border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2);font-size:11.5px;line-height:1.5}.packet-flow-legend>span{display:inline-flex;align-items:center;gap:6px}.packet-flow-legend>span:last-child{margin-left:auto}.packet-flow-legend i,.packet-flow-steps i{min-width:29px;display:inline-grid;place-items:center;padding:2px 5px;border:1px solid var(--border);border-radius:var(--radius-sm);font-family:var(--font-mono);font-size:10px;font-weight:750;font-style:normal}.packet-flow-legend .tx,.packet-flow-steps .tx{color:var(--out);border-color:color-mix(in srgb,var(--out) 34%,transparent);background:var(--out-soft)}.packet-flow-legend .rx,.packet-flow-steps .rx{color:var(--in);border-color:color-mix(in srgb,var(--in) 34%,transparent);background:var(--in-soft)}.packet-flow-glyph{display:flex;align-items:center;gap:10px;color:var(--text-3)}.packet-flow-glyph i{padding:7px 9px;color:var(--accent);border:1px solid var(--accent-line);border-radius:var(--radius);background:var(--accent-soft);font-family:var(--font-mono);font-size:13px;font-weight:700;font-style:normal}.packet-flow-list{display:grid;gap:10px}.packet-flow{overflow:hidden;border:1px solid var(--border);border-left:3px solid var(--warning);border-radius:var(--radius);background:var(--surface-2)}.packet-flow.state-completed{border-left-color:var(--in)}.packet-flow.state-failed{border-left-color:var(--danger)}.packet-flow-card-head{display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:center;gap:10px;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--surface)}.packet-flow-card-head .dir{min-width:36px;padding:4px 6px;border:1px solid var(--border);border-radius:var(--radius-pill);font-family:var(--font-mono);font-size:10.5px;font-weight:750;text-align:center}.packet-flow-card-head .dir.incoming{color:var(--in);border-color:color-mix(in srgb,var(--in) 34%,transparent);background:var(--in-soft)}.packet-flow-card-head .dir.outgoing{color:var(--out);border-color:color-mix(in srgb,var(--out) 34%,transparent);background:var(--out-soft)}.packet-flow-identity{min-width:0;display:grid;gap:3px}.packet-flow-identity strong{overflow:hidden;font-size:12.5px;text-overflow:ellipsis;white-space:nowrap}.packet-flow-identity span{color:var(--text-3);font-size:10.5px}.packet-flow-result{display:grid;justify-items:end;gap:3px}.packet-flow-result small{color:var(--text-3);font-family:var(--font-mono);font-size:10.5px}.packet-flow-state{padding:3px 8px;color:var(--warning);border:1px solid color-mix(in srgb,var(--warning) 34%,transparent);border-radius:var(--radius-pill);background:var(--warning-soft);font-size:10.5px;font-weight:700}.packet-flow-state.state-completed{color:var(--in);border-color:color-mix(in srgb,var(--in) 34%,transparent);background:var(--in-soft)}.packet-flow-state.state-failed{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 34%,transparent);background:var(--danger-soft)}.packet-flow-steps{display:flex;margin:0;padding:10px 12px;overflow-x:auto;list-style:none}.packet-flow-steps li{min-width:148px;position:relative;display:grid;grid-template-columns:auto minmax(0,1fr);align-items:center;gap:5px 8px;padding:7px 22px 7px 8px;border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface)}.packet-flow-steps li+li{margin-left:30px}.packet-flow-steps li+li:before{content:"→";position:absolute;left:-24px;color:var(--text-3);font-family:var(--font-mono)}.packet-flow-steps li>strong{overflow:hidden;font-family:var(--font-mono);font-size:11.5px;text-overflow:ellipsis;white-space:nowrap}.packet-flow-steps li>time{grid-column:1 / -1;color:var(--text-3);font-family:var(--font-mono);font-size:10px}.packet-flow-steps .tag{justify-self:start}.packet-flow-steps .packet-reason{grid-column:1 / -1;color:var(--text-2);font-size:10.5px;line-height:1.4}.packet-flow-steps .packet-reason.failed{color:var(--danger)}.packet-flow-steps .expected{color:var(--text-3);border-style:dashed;background:transparent}.packet-flow-steps .expected i{color:var(--text-3);border-style:dashed}.packet-flow-line{display:none}.packet-flow-no-match{display:grid;justify-items:center;gap:5px;padding:42px 16px;color:var(--text-2);text-align:center}.packet-flow-no-match strong{color:var(--text);font-size:13px}.packet-flow-no-match span{font-size:12px}.downlink-tracker{height:100%;min-height:0;padding:16px;overflow-y:auto}.downlink-tracker-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:14px}.downlink-tracker-head>div:first-child{min-width:0;display:grid;gap:4px}.downlink-tracker-head h3{font-size:15px}.downlink-tracker-head p{max-width:760px;color:var(--text-2);font-size:12px;line-height:1.55}.downlink-tracker-head .downlink-history-note{color:var(--text-3);font-size:11px}.downlink-tracker-summary{flex:none;display:flex;align-items:center;justify-content:flex-end;gap:7px;flex-wrap:wrap}.downlink-history-actions{display:flex;gap:6px}.downlink-storage-warning{margin:0 0 12px;padding:8px 10px;color:var(--danger);border:1px solid color-mix(in srgb,var(--danger) 34%,transparent);border-radius:var(--radius-sm);background:var(--danger-soft);font-size:11.5px}.downlink-track-list{display:grid;gap:10px}.downlink-track{overflow:hidden;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.downlink-track-head{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:10px 12px;border-bottom:1px solid var(--border);background:var(--surface)}.downlink-track-identity{min-width:0;display:flex;align-items:center;gap:8px}.downlink-track-identity strong,.downlink-track-identity code{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.downlink-track-identity strong{font-size:13px}.downlink-track-identity code{color:var(--text-3);font-size:11px}.downlink-status{flex:none;padding:4px 9px;color:var(--text-2);border:1px solid var(--border);border-radius:var(--radius-pill);background:var(--surface-2);font-size:11px;font-weight:700}.downlink-status.status-queued,.downlink-status.status-sent{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.downlink-status.status-acknowledged{color:var(--in);border-color:color-mix(in srgb,var(--in) 34%,transparent);background:var(--in-soft)}.downlink-status.status-not-acknowledged,.downlink-status.status-failed{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 34%,transparent);background:var(--danger-soft)}.downlink-track-meta{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin:0;padding:10px 12px;border-bottom:1px solid var(--border)}.downlink-track-meta>div{min-width:0;display:grid;gap:2px}.downlink-track-meta dt{color:var(--text-3);font-size:10.5px;font-weight:650;text-transform:uppercase}.downlink-track-meta dd{overflow:hidden;margin:0;font-size:11.5px;text-overflow:ellipsis;white-space:nowrap}.downlink-events{display:grid;gap:0;margin:0;padding:5px 12px 7px 28px;list-style:none}.downlink-event{position:relative;min-width:0;padding:7px 0 7px 14px;border-left:1px solid var(--border-strong)}.downlink-event:last-child{border-left-color:transparent}.downlink-event>i{width:9px;height:9px;position:absolute;top:12px;left:-5px;border:2px solid var(--surface-2);border-radius:50%;background:var(--text-3)}.downlink-event.status-queued>i,.downlink-event.status-sent>i{background:var(--accent)}.downlink-event.status-acknowledged>i{background:var(--in)}.downlink-event.status-not-acknowledged>i,.downlink-event.status-failed>i{background:var(--danger)}.downlink-event-copy{min-width:0;display:grid;gap:3px}.downlink-event-line{min-width:0;display:flex;align-items:baseline;justify-content:space-between;gap:12px}.downlink-event-line strong{font-size:12.5px}.downlink-event-line time{flex:none;color:var(--text-3);font-family:var(--font-mono);font-size:10.5px}.downlink-event-copy>code{overflow:hidden;color:var(--text-3);font-size:10.5px;text-overflow:ellipsis;white-space:nowrap}.downlink-error{color:var(--danger);font-size:11.5px;line-height:1.5}.downlink-empty{gap:8px}.downlink-subscriptions{display:grid;gap:6px;margin-top:8px}.downlink-subscriptions code{padding:5px 8px;color:var(--text-2);border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-2);font-size:11px}.publish{display:grid;gap:10px;padding:12px 14px 14px;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-sm)}.publish-options{display:flex;align-items:center;gap:12px}.publish-options select{width:auto;height:30px;padding:0 8px;border-radius:var(--radius-sm);font-size:12px}.publish-options .checkbox{font-size:12px}.publish-body{display:grid;grid-template-columns:minmax(160px,.5fr) minmax(240px,1fr) 108px;gap:8px;align-items:stretch}.publish-body input{height:62px}.publish-body textarea{min-height:62px;max-height:180px}.publish-body .btn{height:auto}.publish-properties{overflow:hidden;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.publish-properties>summary{min-height:40px;display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 11px;color:var(--text-2);cursor:pointer;font-size:12.5px;font-weight:650;list-style-position:inside}.publish-properties>summary:hover{color:var(--text);background:var(--surface-3)}.publish-properties>summary .tag{margin-left:auto}.publish-properties>summary .tag.mqtt5-ready{color:var(--in);border-color:color-mix(in srgb,var(--in) 30%,transparent)}.publish-properties-body{display:grid;gap:12px;padding:13px;border-top:1px solid var(--border)}.publish-property-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}.correlation-row{display:grid;grid-template-columns:180px minmax(0,1fr);gap:10px}.publish-user-properties{display:grid;gap:8px}.publish-user-properties-head{display:flex;align-items:center;justify-content:space-between;gap:10px}.publish-user-properties-head strong{color:var(--text-2);font-size:12px}.publish-user-property{display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr) auto;gap:8px;align-items:end}.publish-user-property>.btn{margin-bottom:1px}.backdrop{position:fixed;inset:0;z-index:20;display:grid;place-items:center;padding:24px;background:color-mix(in srgb,var(--bg) 74%,transparent);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.dialog{width:min(720px,100%);max-height:calc(100vh - 48px);display:grid;grid-template-rows:auto minmax(0,1fr) auto;overflow:hidden;border:1px solid var(--border);border-radius:var(--radius-lg);background:var(--surface);box-shadow:var(--shadow-lg)}.dialog.wide{width:min(880px,100%)}.dialog-head{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--border);background:var(--surface-2)}.dialog-title{min-width:0;flex:1;display:grid;gap:2px}.dialog-title h2{font-size:16px}.dialog-body{display:grid;align-content:start;gap:14px;padding:16px;overflow-y:auto}.dialog-actions{display:flex;align-items:center;justify-content:flex-end;gap:8px;padding:12px 16px;border-top:1px solid var(--border);background:var(--surface-2)}.dialog-actions .btn.plain{margin-right:auto}.summary-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:0}.summary-grid>div{min-width:0;padding:10px 12px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.summary-grid dt{margin-bottom:3px;color:var(--text-3);font-size:11px;font-weight:650;letter-spacing:.03em;text-transform:uppercase}.summary-grid dd{overflow:hidden;margin:0;font-size:12.5px;text-overflow:ellipsis;white-space:nowrap}.subpanel{display:grid;gap:12px;padding:14px;border:1px solid var(--border);border-radius:var(--radius);background:var(--surface-2)}.subpanel-head{align-items:flex-end}.subpanel.preview-ok{border-color:color-mix(in srgb,var(--in) 30%,transparent);background:var(--in-soft)}.subpanel .field.compact{width:min(230px,100%)}.subpanel>.code,.subpanel textarea,.subpanel .code.inline{background:var(--surface)}.preset-row{display:grid;grid-template-columns:minmax(170px,1fr) minmax(170px,1fr) auto;gap:10px;align-items:end}.preset-actions{display:flex;gap:6px}.option-row{display:flex;flex-wrap:wrap;align-items:flex-end;justify-content:space-between;gap:16px}.option-group{min-width:0;display:flex;flex-wrap:wrap;align-items:center;gap:8px 16px;margin:0;padding:0;border:0}.option-group legend{width:100%;padding:0;color:var(--text-2);font-size:12px;font-weight:600}.option-group .checkbox small{margin-left:2px}.speed-field{width:140px;flex:none}.remap-row,.range-row{display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:10px;align-items:end}.arrow{padding-bottom:9px;color:var(--accent);font-size:15px}.remap-preview,.trim-preview{display:grid;gap:6px;margin:0;padding:0;list-style:none}.remap-preview li{min-width:0;display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);gap:8px;align-items:center;color:var(--text-2);font-size:12px}.remap-preview li>*{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.remap-preview i{color:var(--accent);font-style:normal}.remap-preview strong{color:var(--text)}.trim-preview li{min-width:0;display:grid;grid-template-columns:40px minmax(0,1fr) auto;gap:10px;align-items:center;padding:5px 0;border-top:1px solid var(--border);font-size:12px}.trim-preview li.hint{display:block;border-top:0}.trim-preview strong{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.trim-preview time{color:var(--text-3)}.trim-row{display:grid;grid-template-columns:minmax(220px,.8fr) minmax(240px,1.2fr);gap:12px}.trim-row .range-row{grid-column:1 / -1}.downlink-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.checkbox.aligned{padding-top:22px}.downlink-payload{min-height:96px}.notice{display:grid;gap:3px;padding:11px 13px;color:var(--warning);border:1px solid color-mix(in srgb,var(--warning) 28%,transparent);border-radius:var(--radius);background:var(--warning-soft);font-size:12.5px;line-height:1.55}.notice strong{color:var(--text);font-size:13px}.notice.error{color:var(--danger);border-color:color-mix(in srgb,var(--danger) 32%,transparent);background:var(--danger-soft)}.notice.info{color:var(--accent);border-color:var(--accent-line);background:var(--accent-soft)}.notice.info code{overflow-wrap:anywhere;color:var(--text-2);font-size:11px}.feedback{color:var(--in);font-size:12px}.feedback.invalid{color:var(--danger)}.progress{display:grid;gap:7px}.progress progress{width:100%;height:6px;overflow:hidden;border:0;border-radius:var(--radius-pill);background:var(--surface-3);appearance:none}.progress progress::-webkit-progress-bar{border-radius:inherit;background:var(--surface-3)}.progress progress::-webkit-progress-value{border-radius:inherit;background:var(--accent)}.progress p{overflow:hidden;color:var(--text-2);font-size:12px;text-overflow:ellipsis;white-space:nowrap}.toast{position:fixed;right:18px;bottom:18px;z-index:30;min-width:320px;max-width:520px;display:flex;align-items:flex-start;gap:16px;padding:13px 14px;border:1px solid color-mix(in srgb,var(--danger) 40%,transparent);border-radius:var(--radius);background:var(--surface);box-shadow:var(--shadow-md)}.toast-copy{display:grid;gap:3px}.toast strong{color:var(--danger);font-size:13px}.toast span{color:var(--text-2);font-family:var(--font-mono);font-size:12px;line-height:1.5}.toast>button{margin-left:auto;display:grid;place-items:center;padding:3px;color:var(--text-3);border-radius:var(--radius-sm)}.toast>button:hover{color:var(--text);background:var(--surface-3)}@keyframes pulse{50%{opacity:.4;transform:scale(.8)}}@keyframes signal{50%{height:9px;opacity:.4}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}}@media(max-width:1240px){:root{--sidebar-w: 310px}.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.metric:nth-child(3){border-left:0}.metric:nth-child(n+3){border-top:1px solid var(--border)}.summary-grid,.downlink-fields{grid-template-columns:repeat(2,minmax(0,1fr))}.downlink-track-meta{grid-template-columns:repeat(3,minmax(0,1fr))}.publish-property-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}@media(max-width:1080px){.status{display:none}.topbar{grid-template-columns:minmax(0,1fr) auto}.segmented button span{display:none}.segmented button{padding:0 9px}.theme-menu>.btn span{display:none}}@media(max-width:900px){body{overflow:auto}.app{height:auto;min-height:100vh}.session-host,.session-workspace,.session-workspace>.workspace{height:auto}.session-host{overflow:visible}.workspace{display:block}.sidebar{border-right:0;border-bottom:1px solid var(--border)}.stage{min-height:820px}.toolbar-actions .btn span{display:none}.toolbar-actions .btn{width:var(--control-h);padding:0}.preset-row,.trim-row{grid-template-columns:1fr}.publish-body{grid-template-columns:minmax(0,1fr) 108px}.publish-body textarea{grid-column:1}.publish-body .btn{grid-column:2;grid-row:1 / span 2}.correlation-row{grid-template-columns:150px minmax(0,1fr)}.topics{grid-template-columns:1fr;overflow-y:auto}.topics-pane,.retained-pane{overflow:visible}.retained-pane{border-top:1px solid var(--border);border-left:0}}@media(max-width:680px){.topbar{padding:0 12px}.update-control span,.brand-text small{display:none}.session-tabs{padding-inline:8px}.session-tab{min-width:118px}.session-add>span:last-child{display:none}.stage-toolbar,.publish-head{flex-wrap:wrap}.publish-options{flex-wrap:wrap;row-gap:8px}.search{max-width:none;order:3;flex-basis:100%}.toolbar-actions{margin-left:0}.metrics{grid-template-columns:1fr}.metric+.metric{border-top:1px solid var(--border);border-left:0}.downlink-fields{grid-template-columns:1fr}.downlink-tracker-head{flex-direction:column}.downlink-tracker-summary{justify-content:flex-start}.packet-flow-head{flex-direction:column}.packet-flow-summary{justify-content:flex-start}.packet-flow-legend{align-items:flex-start;flex-direction:column}.packet-flow-legend>span:last-child{margin-left:0}.packet-flow-card-head{grid-template-columns:auto minmax(0,1fr)}.packet-flow-result{grid-column:1 / -1;grid-row:2;justify-items:start}.structured-payload-head{flex-direction:column}.structured-payload-tags{justify-content:flex-start}.protobuf-schema-controls{grid-template-columns:1fr 30px}.protobuf-message-type{grid-column:1 / -1;grid-row:2}.protobuf-delete{grid-column:2;grid-row:1}.protobuf-import{grid-column:1 / -1}.downlink-track-head,.downlink-event-line{align-items:flex-start;flex-direction:column}.downlink-track-meta{grid-template-columns:repeat(2,minmax(0,1fr))}.checkbox.aligned{padding-top:0}.remap-row,.range-row{grid-template-columns:1fr}.arrow{display:none}.row-2,.row-3,.publish-property-grid,.correlation-row,.publish-user-property{grid-template-columns:1fr}.websocket-value-row{grid-template-columns:minmax(0,1fr) 30px}.websocket-value-row>input:nth-child(2){grid-column:1;grid-row:2}.websocket-value-row>button{grid-column:2;grid-row:1 / span 2}.publish-user-property>.btn{justify-self:start}.toast{right:12px;left:12px;min-width:0}}
