:root{--bg-base: #1e1e1e;--bg-sidebar: #252526;--bg-panel: #1e1e1e;--bg-editor: #1e1e1e;--bg-titlebar: #323233;--bg-input: #3c3c3c;--bg-hover: #2a2d2e;--bg-active: #37373d;--bg-selection: #264f78;--bg-scrollbar: #424242;--bg-scrollbar-hover: #4f4f4f;--bg-badge: #4d4d4d;--border-color: #3c3c3c;--border-active: #007acc;--text-primary: #cccccc;--text-secondary: #9d9d9d;--text-muted: #6a6a6a;--text-accent: #4fc1ff;--text-keyword: #569cd6;--text-string: #ce9178;--text-number: #b5cea8;--text-warning: #cca700;--text-error: #f48771;--text-success: #89d185;--accent: #007acc;--accent-hover: #1c97ea;--accent-fg: #ffffff;--wave-green: #4ec9b0;--wave-blue: #569cd6;--wave-yellow: #dcdcaa;--wave-orange: #ce9178;--wave-purple: #c586c0;--wave-cyan: #4fc1ff;--wave-red: #f44747;--wave-pink: #d16d9e;--sidebar-width: 300px;--titlebar-height: 35px;--signal-row-height: 48px;--toolbar-height: 36px;--font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Helvetica, Arial, sans-serif;--font-mono: "Cascadia Code", "Fira Code", "JetBrains Mono", "Consolas", "Courier New", monospace;--font-size: 13px;--font-size-sm: 12px;--font-size-xs: 12px}*{margin:0;padding:0;box-sizing:border-box}html,body,#root{width:100%;height:100%;overflow:hidden;font-family:var(--font-family);font-size:var(--font-size);color:var(--text-primary);background:var(--bg-base)}::-webkit-scrollbar{width:10px;height:10px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--bg-scrollbar);border-radius:5px}::-webkit-scrollbar-thumb:hover{background:var(--bg-scrollbar-hover)}::-webkit-scrollbar-corner{background:transparent}.app-layout{display:flex;flex-direction:column;width:100%;height:100%}.titlebar{display:flex;align-items:center;justify-content:space-between;height:var(--titlebar-height);background:var(--bg-titlebar);border-bottom:1px solid var(--border-color);padding:0 12px;flex-shrink:0;-webkit-user-select:none;user-select:none}.titlebar-left{display:flex;align-items:center;gap:10px}.titlebar-title{display:flex;align-items:center;gap:8px;font-size:var(--font-size);font-weight:400;color:var(--text-secondary)}.app-logo{width:20px;height:20px;object-fit:contain;border-radius:4px}.titlebar-title strong{color:var(--text-primary);font-weight:500}.titlebar-right{display:flex;align-items:center;gap:6px}.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;padding:4px 10px;border:none;border-radius:3px;font-family:var(--font-family);font-size:var(--font-size);cursor:pointer;transition:background .15s;color:var(--text-primary);background:var(--bg-input)}.btn:hover{background:var(--bg-hover)}.btn-primary{background:var(--accent);color:var(--accent-fg)}.btn-primary:hover{background:var(--accent-hover)}.btn-icon{padding:4px 6px;background:transparent;border-radius:4px;line-height:1}.btn-icon:hover{background:var(--bg-hover)}.main-content{display:flex;flex:1;overflow:hidden}.sidebar{width:var(--sidebar-width);min-width:200px;background:var(--bg-sidebar);border-right:1px solid var(--border-color);display:flex;flex-direction:column;overflow:hidden;flex-shrink:0}.sidebar.collapsed{width:0;min-width:0;border-right:none;padding:0}.sidebar.collapsed>*{opacity:0;pointer-events:none}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-bottom:1px solid var(--border-color);flex-shrink:0}.sidebar-header h2{font-size:var(--font-size-sm);font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-secondary)}.search-box{padding:6px 8px;border-bottom:1px solid var(--border-color);flex-shrink:0}.search-input{width:100%;padding:4px 8px;background:var(--bg-input);border:1px solid var(--border-color);border-radius:3px;color:var(--text-primary);font-family:var(--font-family);font-size:var(--font-size);outline:none}.search-input:focus{border-color:var(--accent)}.search-input::placeholder{color:var(--text-muted)}.signal-tree{flex:1;overflow:hidden;padding:0}.tree-node{-webkit-user-select:none;user-select:none}.tree-node-header{display:flex;align-items:center;padding:2px 4px 2px 0;cursor:pointer;white-space:nowrap;transition:background .1s}.tree-node-header:hover{background:var(--bg-hover)}.tree-chevron{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;font-size:10px;color:var(--text-muted);transition:transform .15s}.tree-chevron.expanded{transform:rotate(90deg)}.tree-chevron.leaf{visibility:hidden}.tree-icon{display:inline-flex;align-items:center;justify-content:center;width:16px;height:16px;flex-shrink:0;margin-right:4px;font-size:12px}.tree-icon.scope{color:var(--text-keyword)}.tree-icon.signal{color:var(--wave-green)}.tree-label{font-size:var(--font-size);flex:1;overflow:hidden;text-overflow:ellipsis}.tree-badge{font-size:var(--font-size-xs);color:#fff;padding:1px 6px;background:var(--accent);border-radius:4px;margin-left:6px;flex-shrink:0;font-weight:500;box-shadow:0 1px 2px #0003}.signal-check{appearance:none;width:14px;height:14px;border:1px solid var(--text-muted);border-radius:3px;margin-right:6px;flex-shrink:0;cursor:pointer;position:relative;background:transparent}.signal-check:checked{background:var(--accent);border-color:var(--accent)}.signal-check:checked:after{content:"";position:absolute;left:3px;top:1px;width:5px;height:8px;border:solid var(--accent-fg);border-width:0 2px 2px 0;transform:rotate(45deg)}.signal-item{display:flex;align-items:center;padding:2px 4px 2px 0;cursor:pointer;white-space:nowrap;transition:background .1s}.signal-item:hover{background:var(--bg-hover)}.signal-item.selected{background:var(--bg-active)}.waveform-panel{flex:1;display:flex;flex-direction:column;overflow:hidden;background:var(--bg-editor)}.waveform-toolbar{display:flex;align-items:center;gap:8px;padding:4px 12px;height:var(--toolbar-height);background:var(--bg-titlebar);border-bottom:1px solid var(--border-color);flex-shrink:0}.waveform-toolbar .time-info{font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-secondary)}.waveform-toolbar .zoom-controls{display:flex;align-items:center;gap:4px;margin-left:auto}.waveform-content{flex:1;display:flex;overflow:hidden}.signal-names{width:200px;min-width:140px;border-right:1px solid var(--border-color);overflow-y:auto;overflow-x:hidden;flex-shrink:0;background:var(--bg-sidebar)}.signal-names-header{background:var(--bg-sidebar);flex-shrink:0;box-sizing:content-box}.signal-name-row{display:flex;align-items:center;height:var(--signal-row-height);padding:0 8px;border-bottom:1px solid var(--border-color);font-family:var(--font-mono);font-size:var(--font-size-sm);color:var(--text-primary);white-space:nowrap;overflow:hidden;text-overflow:ellipsis;gap:6px}.signal-name-row .signal-remove{opacity:0;transition:opacity .15s;cursor:pointer;color:var(--text-muted);flex-shrink:0;background:none;border:none;font-size:14px;padding:2px;line-height:1}.signal-name-row:hover .signal-remove{opacity:1}.signal-name-row .signal-remove:hover{color:var(--text-error)}.signal-format{background:transparent;color:var(--text-muted);border:1px solid transparent;border-radius:3px;font-family:var(--font-mono);font-size:var(--font-size-xs);padding:0 2px;outline:none;cursor:pointer}.signal-format:hover{border-color:var(--border-color);background:var(--bg-hover)}.signal-format:focus{border-color:var(--accent)}.signal-format option{background:var(--bg-input);color:var(--text-primary)}.signal-name-text{flex:1;overflow:hidden;text-overflow:ellipsis}.signal-color-bar{width:3px;height:24px;border-radius:2px;flex-shrink:0}.signal-tooltip{position:fixed;z-index:1000;background:var(--bg-input);border:1px solid var(--border-color);border-radius:4px;padding:6px 10px;font-family:var(--font-mono);font-size:var(--font-size);line-height:1.5;color:var(--text-primary);pointer-events:none;white-space:nowrap;box-shadow:0 2px 8px #0006}.signal-tooltip .tooltip-path{color:var(--text-secondary)}.signal-tooltip .tooltip-separator{color:var(--text-muted)}.signal-tooltip .tooltip-name{color:var(--text-accent);font-weight:500}.waveform-canvas-container{flex:1;overflow-x:hidden;overflow-y:auto;position:relative}.waveform-canvas-container canvas{display:block}.empty-state{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;color:var(--text-muted);gap:12px}.empty-state-icon{font-size:48px;opacity:.3}.empty-state-text{font-size:var(--font-size)}.empty-state-hint{font-size:var(--font-size-sm);color:var(--text-muted)}.loading-overlay{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;gap:16px;color:var(--text-secondary)}.spinner{width:32px;height:32px;border:3px solid var(--border-color);border-top-color:var(--accent);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.drop-zone{border:2px dashed var(--border-color);border-radius:8px;padding:32px 48px;text-align:center;transition:border-color .2s,background .2s;cursor:pointer}.drop-zone:hover,.drop-zone.drag-over{border-color:var(--accent);background:#007acc0d}.drop-zone input[type=file]{display:none}.statusbar{display:flex;align-items:center;height:22px;background:var(--accent);padding:0 10px;font-size:var(--font-size-sm);color:var(--accent-fg);flex-shrink:0;gap:16px}.statusbar-item{display:flex;align-items:center;gap:4px;white-space:nowrap}.metadata-panel{border-top:1px solid var(--border-color);padding:8px 12px;flex-shrink:0;max-height:180px;overflow-y:auto}.metadata-panel h3{font-size:var(--font-size-xs);font-weight:600;text-transform:uppercase;letter-spacing:.5px;color:var(--text-muted);margin-bottom:6px}.metadata-row{display:flex;justify-content:space-between;font-size:var(--font-size-sm);padding:1px 0}.metadata-row .label{color:var(--text-secondary)}.metadata-row .value{color:var(--text-primary);font-family:var(--font-mono)}.resize-handle{width:3px;cursor:col-resize;background:var(--border-color);flex-shrink:0;transition:background .1s,width .1s;z-index:10}.resize-handle:hover,.resize-handle.active{background:var(--accent);width:4px}.signal-name-row{cursor:pointer}.signal-name-row:hover{background-color:var(--bg-hover)}.signal-name-row.active{background-color:var(--bg-selected, rgba(60, 100, 200, .2));border-left:2px solid var(--accent)}.active-signal-format{display:flex;align-items:center;margin-right:auto;margin-left:16px;background-color:var(--bg-input);padding:2px 8px;border-radius:4px;border:1px solid var(--border-color)}.drag-overlay{position:fixed;inset:0;background:#1e1e1ed9;z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;pointer-events:none;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);border:4px dashed var(--accent);border-radius:8px;margin:8px}.drag-overlay-content{text-align:center;color:var(--text-primary)}
