:root{--bg: #0a0a0b;--bg-2: #0f0f11;--bg-3: #141417;--bg-4: #1a1a1e;--border: #222228;--border-2: #2e2e36;--muted: #3a3a45;--text-dim: #5a5a6e;--text-mid: #8a8a9e;--text: #c8c8d8;--text-hi: #e8e8f0;--accent: #ff6b1a;--accent-2: #ffa040;--accent-hi: #ff8a4a;--accent-dim: #3a1a0a;--accent-bg: rgba(255, 107, 26, .08);--cool: #2ae0f0;--cool-dim: #0a2a32;--warn: #f0c44a;--err: #ff5f57;--ok: #28c840;--font-mono: "JetBrains Mono", "Space Mono", ui-monospace, monospace;--r: 4px;--r-lg: 8px;--transition: .18s ease;--sidebar-w: 280px;--right-w: 260px;--topbar-h: 48px;--minimap-h: 72px;--crosshair-h: 36px}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body,#root{height:100%;width:100%}html{font-size:16px}body{background:var(--bg);color:var(--text);font-family:var(--font-mono);font-size:.85rem;line-height:1.5;-webkit-font-smoothing:antialiased;overflow:hidden}button,input{font-family:inherit}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--muted);border-radius:2px}::-webkit-scrollbar-thumb:hover{background:var(--accent-dim)}.drop-screen{position:fixed;top:0;right:0;bottom:0;left:0;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse 60% 60% at 50% 50%,rgba(255,107,26,.06),transparent 70%),var(--bg);padding:2rem}.drop-screen-inner{width:100%;max-width:600px;text-align:center}.brand{font-size:1.4rem;font-weight:700;color:var(--text-hi);letter-spacing:-.02em;margin-bottom:.5rem}.brand span{color:var(--accent)}.brand-sub{font-size:.75rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.18em;margin-bottom:2.5rem}.dropzone{position:relative;border:1.5px dashed var(--border-2);border-radius:var(--r-lg);background:linear-gradient(180deg,var(--bg-2) 0%,var(--bg-3) 100%);padding:3rem 2rem;cursor:pointer;transition:border-color var(--transition),background var(--transition),transform var(--transition);overflow:hidden}.dropzone:before{content:"";position:absolute;top:0;left:0;right:0;height:2px;background:linear-gradient(90deg,var(--accent),var(--accent-2));opacity:0;transition:opacity var(--transition)}.dropzone:hover,.dropzone.drag-over{border-color:var(--accent);background:linear-gradient(180deg,var(--bg-3) 0%,rgba(255,107,26,.04) 100%);transform:translateY(-1px)}.dropzone:hover:before,.dropzone.drag-over:before{opacity:1}.dropzone-icon{font-size:2.2rem;color:var(--accent);filter:drop-shadow(0 0 10px rgba(255,107,26,.35));margin-bottom:.75rem}.dropzone-title{color:var(--text-hi);font-weight:500}.dropzone-sub{color:var(--text-dim);font-size:.78rem;margin-top:.4rem}.dropzone-hint{color:var(--muted);font-size:.7rem;margin-top:.9rem;letter-spacing:.05em}.linklike{background:none;border:none;padding:0;color:var(--accent);font-family:inherit;font-size:inherit;cursor:pointer;text-decoration:underline;text-decoration-color:var(--accent-dim);text-underline-offset:3px}.linklike:hover{color:var(--accent-2);text-decoration-color:var(--accent)}.alert-error{margin-top:1rem;background:#ff5f5714;border:1px solid rgba(255,95,87,.35);color:#ffb3ad;padding:.6rem .9rem;border-radius:var(--r);font-size:.78rem}.parse-progress{margin-top:1.25rem;font-size:.75rem;color:var(--text-mid);font-variant-numeric:tabular-nums}.progress-bar{height:3px;background:var(--bg-3);border-radius:2px;overflow:hidden;margin-top:.5rem;position:relative}.progress-bar>div{height:100%;background:linear-gradient(90deg,var(--accent),var(--accent-2));transition:width .15s linear}.app-shell{display:flex;flex-direction:column;height:100vh;width:100vw;overflow:hidden}.app-grid{flex:1;min-height:0;display:grid;grid-template-columns:var(--sidebar-w) 1fr var(--right-w);grid-template-rows:1fr var(--crosshair-h) var(--minimap-h);grid-template-areas:"left   chart      right" "left   crosshair  right" "left   mini       right"}.app-shell.left-collapsed .app-grid{grid-template-columns:36px 1fr var(--right-w)}.app-shell.right-collapsed .app-grid{grid-template-columns:var(--sidebar-w) 1fr 36px}.app-shell.left-collapsed.right-collapsed .app-grid{grid-template-columns:36px 1fr 36px}.topbar{display:flex;align-items:center;gap:1rem;padding:0 1rem;height:var(--topbar-h);background:var(--bg-2);border-bottom:1px solid var(--border);flex-shrink:0}.topbar .brand-mini{font-weight:700;color:var(--text-hi);letter-spacing:-.02em;font-size:.95rem}.topbar .brand-mini span{color:var(--accent)}.topbar-meta{display:flex;gap:1.25rem;flex:1;min-width:0;font-size:.72rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.1em;overflow:hidden;white-space:nowrap}.topbar-meta span strong{color:var(--text);margin-left:.4rem;font-variant-numeric:tabular-nums;font-weight:500;letter-spacing:0}.topbar-actions{display:flex;gap:.5rem;align-items:center}.warn-banner{background:#f0c44a1a;border-bottom:1px solid rgba(240,196,74,.4);color:var(--warn);padding:6px 14px;font-size:.72rem;display:flex;align-items:center;gap:.6rem;letter-spacing:.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.warn-banner strong{color:var(--warn);margin-right:.4rem}.warn-banner button{margin-left:auto;background:none;border:none;color:var(--warn);cursor:pointer;font-size:.95rem;padding:0 .3rem;opacity:.7}.warn-banner button:hover{opacity:1}.btn{display:inline-flex;align-items:center;gap:.4rem;background:transparent;border:1px solid var(--border-2);color:var(--text-mid);padding:5px 12px;font-size:.7rem;text-transform:uppercase;letter-spacing:.12em;border-radius:var(--r);cursor:pointer;transition:color var(--transition),border-color var(--transition),background var(--transition)}.btn:hover{color:var(--text-hi);border-color:var(--accent-dim)}.btn.primary{color:var(--accent);border-color:var(--accent-dim);background:var(--accent-dim)}.btn.primary:hover{background:#ff6b1a2e;border-color:var(--accent)}.toggle-group{display:inline-flex;background:var(--bg-3);border:1px solid var(--border-2);border-radius:var(--r);padding:2px}.toggle-group button{background:transparent;border:none;color:var(--text-mid);padding:4px 10px;font-size:.68rem;text-transform:uppercase;letter-spacing:.12em;border-radius:3px;cursor:pointer;transition:color var(--transition),background var(--transition)}.toggle-group button:hover{color:var(--text-hi)}.toggle-group button.active{color:var(--accent);background:var(--accent-dim)}.sidebar{background:var(--bg-2);border-right:1px solid var(--border);display:flex;flex-direction:column;overflow:hidden;min-width:0}.sidebar.right{border-right:none;border-left:1px solid var(--border)}.sidebar.left{grid-area:left}.sidebar.right{grid-area:right}.sidebar-collapsed{display:flex;flex-direction:column;align-items:center;padding:.5rem 0}.sidebar-collapsed button{background:none;border:none;color:var(--text-mid);cursor:pointer;writing-mode:vertical-rl;transform:rotate(180deg);font-size:.7rem;letter-spacing:.18em;text-transform:uppercase;padding:.75rem 0;transition:color var(--transition)}.sidebar-collapsed button:hover{color:var(--accent)}.sidebar-head{display:flex;align-items:center;justify-content:space-between;padding:.6rem .85rem;border-bottom:1px solid var(--border);flex-shrink:0}.sidebar-title{font-size:.68rem;text-transform:uppercase;letter-spacing:.18em;color:var(--text-dim)}.icon-btn{background:none;border:none;color:var(--text-dim);cursor:pointer;padding:2px 6px;font-size:.85rem;transition:color var(--transition)}.icon-btn:hover{color:var(--accent)}.search-wrap{padding:.5rem .6rem .4rem}.search-input{width:100%;background:var(--bg-3);border:1px solid var(--border);border-radius:var(--r);padding:6px 10px;font-size:.78rem;color:var(--text);outline:none;transition:border-color var(--transition)}.search-input:focus{border-color:var(--accent)}.search-input::placeholder{color:var(--muted)}.channel-list{flex:1;overflow-y:auto;padding:.25rem .4rem 1rem}.channel-item{display:grid;grid-template-columns:16px 12px 1fr auto auto;align-items:center;gap:.5rem;padding:5px 8px;border-radius:3px;cursor:pointer;transition:background var(--transition);-webkit-user-select:none;user-select:none}.channel-pin{background:none;border:none;padding:0 4px;cursor:pointer;color:var(--muted);font-size:.85rem;line-height:1;opacity:0;transition:color var(--transition),opacity var(--transition)}.channel-item:hover .channel-pin{opacity:.7}.channel-pin:hover{color:var(--accent);opacity:1!important}.channel-pin.is-primary{color:var(--accent);opacity:1}.channel-item:hover{background:var(--bg-3)}.channel-item.focused{background:var(--bg-3);outline:1px solid var(--border-2)}.channel-item.active{background:var(--bg-4)}.channel-check{width:14px;height:14px;border:1px solid var(--border-2);border-radius:2px;background:var(--bg-3);position:relative}.channel-item.active .channel-check{border-color:var(--ch-color, var(--accent));background:var(--ch-color, var(--accent))}.channel-item.active .channel-check:after{content:"";position:absolute;top:1px;left:4px;width:4px;height:8px;border:solid #0a0a0b;border-width:0 2px 2px 0;transform:rotate(45deg)}.channel-color{width:10px;height:10px;border-radius:2px;background:var(--ch-color, var(--muted));opacity:.8}.channel-item.active .channel-color{opacity:1}.channel-meta{min-width:0}.channel-name{font-size:.78rem;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.channel-units{font-size:.65rem;color:var(--text-dim)}.channel-active-idx{font-size:.62rem;color:var(--accent);background:var(--accent-dim);padding:1px 5px;border-radius:2px;font-variant-numeric:tabular-nums}.chart-area{grid-area:chart;background:var(--bg);position:relative;overflow:hidden;display:flex;flex-direction:column}.chart-empty{flex:1;display:flex;align-items:center;justify-content:center;color:var(--text-dim);font-size:.85rem;flex-direction:column;gap:.5rem}.chart-empty .hint{font-size:.7rem;color:var(--muted);text-transform:uppercase;letter-spacing:.15em}.chart-stack{flex:1;min-height:0;display:grid;grid-auto-rows:minmax(110px,1fr);padding:.25rem;gap:.25rem}.chart-stack>.uplot-wrap{position:relative;min-height:0;overflow:hidden}.chart-overlay{flex:1;padding:.25rem;min-height:0;position:relative}.chart-overlay>.uplot-wrap{position:absolute;top:.25rem;right:.25rem;bottom:.25rem;left:.25rem}.uplot-wrap{background:var(--bg-2);border:1px solid var(--border);border-radius:var(--r);padding:4px 6px;position:relative;overflow:hidden}.chart-stack>.uplot-wrap{min-height:140px}.u-legend{font-family:var(--font-mono)!important;font-size:.72rem!important;color:var(--text-mid)!important}.u-legend th,.u-legend td{padding:1px 6px!important}.u-legend .u-marker{width:8px!important;height:8px!important}.u-axis text,.u-label{fill:var(--text-dim)!important;color:var(--text-dim)!important}.crosshair-bar{grid-area:crosshair;display:flex;align-items:center;gap:0;padding:0 .6rem;background:var(--bg-2);border-top:1px solid var(--border);overflow-x:auto;overflow-y:hidden;white-space:nowrap;scrollbar-width:none}.crosshair-bar::-webkit-scrollbar{display:none}.crosshair-time{display:inline-flex;align-items:center;gap:.5rem;font-size:.68rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.12em;padding-right:.85rem;margin-right:.85rem;border-right:1px solid var(--border);flex-shrink:0;height:60%}.crosshair-time strong{color:var(--accent);font-size:.78rem;letter-spacing:0;font-variant-numeric:tabular-nums;text-transform:none}.crosshair-item{display:inline-flex;align-items:baseline;gap:.4rem;padding:0 .85rem;border-right:1px solid var(--border);flex-shrink:0}.crosshair-item:last-child{border-right:none}.crosshair-dot{width:7px;height:7px;border-radius:50%;background:var(--ch-color, var(--muted));align-self:center;flex-shrink:0}.crosshair-name{font-size:.68rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.08em}.crosshair-value{font-size:.85rem;color:var(--text-hi);font-variant-numeric:tabular-nums;font-weight:500}.crosshair-units{font-size:.62rem;color:var(--text-dim);letter-spacing:.04em}.crosshair-empty{color:var(--text-dim);font-size:.72rem;letter-spacing:.04em}.minimap{grid-area:mini;background:var(--bg-2);border-top:1px solid var(--border);padding:6px 8px;position:relative;display:flex;align-items:stretch}.minimap canvas{width:100%;height:100%;cursor:ew-resize;display:block}.marker-list{flex:1;overflow-y:auto;padding:.4rem .4rem 1rem}.marker-item{display:grid;grid-template-columns:auto 1fr auto;gap:.4rem .5rem;padding:6px 8px;border-radius:3px;cursor:pointer;border:1px solid transparent;transition:background var(--transition),border-color var(--transition);margin-bottom:4px}.marker-item:hover{background:var(--bg-3);border-color:var(--border-2)}.marker-channel{grid-column:1 / -1;display:flex;align-items:center;gap:.4rem;font-size:.65rem;color:var(--text-dim);text-transform:uppercase;letter-spacing:.1em}.marker-channel select{background:var(--bg-3);border:1px solid var(--border);color:var(--text);font-family:var(--font-mono);font-size:.7rem;padding:2px 4px;border-radius:2px;outline:none;flex:1;min-width:0}.marker-channel-dot{width:8px;height:8px;border-radius:50%;background:var(--mc-color, var(--text-dim));flex-shrink:0}.marker-time{color:var(--accent);font-size:.7rem;font-variant-numeric:tabular-nums}.marker-name{color:var(--text);font-size:.78rem;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.marker-name input{width:100%;background:var(--bg-3);border:1px solid var(--accent-dim);border-radius:2px;padding:2px 6px;color:var(--text);font-size:.78rem;outline:none}.marker-del{background:none;border:none;color:var(--text-dim);cursor:pointer;font-size:.95rem;line-height:1}.marker-del:hover{color:var(--err)}.marker-empty{color:var(--text-dim);font-size:.75rem;text-align:center;padding:1.5rem 1rem;line-height:1.6}.marker-empty kbd{background:var(--bg-3);border:1px solid var(--border-2);border-radius:3px;padding:1px 6px;color:var(--text);font-size:.7rem;font-family:var(--font-mono)}.color-popover{position:fixed;background:var(--bg-3);border:1px solid var(--border-2);border-radius:var(--r);padding:.6rem;box-shadow:0 8px 24px #00000080;z-index:1000;display:grid;grid-template-columns:repeat(6,18px);gap:6px}.color-swatch{width:18px;height:18px;border-radius:3px;border:1px solid var(--border);cursor:pointer;padding:0;transition:transform var(--transition)}.color-swatch:hover{transform:scale(1.15)}.shortcuts{position:fixed;bottom:calc(var(--minimap-h) + 14px);right:calc(var(--right-w) + 16px);z-index:50;display:flex;flex-direction:column;align-items:flex-end;gap:6px}.app-shell.right-collapsed .shortcuts{right:52px}.shortcuts-toggle{background:#0f0f11eb;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border-2);border-radius:var(--r);color:var(--text-dim);font-family:var(--font-mono);font-size:.62rem;text-transform:uppercase;letter-spacing:.14em;padding:5px 9px;cursor:pointer;transition:color var(--transition),border-color var(--transition)}.shortcuts-toggle:hover,.shortcuts.open .shortcuts-toggle{color:var(--accent);border-color:var(--accent-dim)}.shortcuts-panel{background:#0f0f11f0;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border:1px solid var(--border-2);border-radius:var(--r);padding:.55rem .75rem;font-size:.68rem;color:var(--text-dim);display:grid;grid-template-columns:auto auto;gap:4px 14px;white-space:nowrap}.shortcuts-panel kbd{background:var(--bg-3);border:1px solid var(--border-2);border-radius:2px;padding:1px 5px;color:var(--text);margin-right:5px;font-family:var(--font-mono);font-size:.65rem}.uplot .u-select{background:#ff6b1a24!important;border:1px solid var(--accent)!important;border-top:none!important;border-bottom:none!important;box-shadow:0 0 0 1px #ff6b1a2e}.uplot,.uplot *,.uplot *:before,.uplot *:after{box-sizing:border-box}.uplot{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;width:min-content}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{position:relative;-webkit-user-select:none;user-select:none}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{display:block;position:relative;width:100%;height:100%}.u-axis{position:absolute}.u-legend{font-size:14px;margin:auto;text-align:center}.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{background:#00000012;position:absolute;pointer-events:none}.u-cursor-x,.u-cursor-y{position:absolute;left:0;top:0;pointer-events:none;will-change:transform}.u-hz .u-cursor-x,.u-vt .u-cursor-y{height:100%;border-right:1px dashed #607D8B}.u-hz .u-cursor-y,.u-vt .u-cursor-x{width:100%;border-bottom:1px dashed #607D8B}.u-cursor-pt{position:absolute;top:0;left:0;border-radius:50%;border:0 solid;pointer-events:none;will-change:transform;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}
