.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}:root{--bg: #f7f7f8;--panel: #ffffff;--panel-2: #fafafc;--hover: #f0f0f3;--hover-soft: #f3f4f6;--border: #d8d8de;--border-soft: #ececef;--text: #1f1f23;--muted: #7a7a82;--code-bg: #f4f4f6;--accent: #2f6fed;--accent-2: #1a4fc4;--accent-bg: #e8efff;--plot-select-bg: rgba(47, 111, 237, .18);--plot-select-border: rgba(47, 111, 237, .55);--error-bg: #fff1f0;--error-fg: #b32626;--modal-backdrop: rgba(15, 15, 20, .45);--shadow-modal: 0 12px 40px rgba(0, 0, 0, .25);--overlay-bg: rgba(255, 255, 255, .85);--kind-voltage: #1f77b4;--kind-current: #d62728;--kind-frequency: #8c564b;--kind-power: #2ca02c;--cursor-a: #0a8f3a;--cursor-b: #9026c2;--cursor-a-bg: #e7f6ec;--cursor-b-bg: #f3e9f9}[data-theme=dark]{--bg: #15151a;--panel: #1f1f26;--panel-2: #25252d;--hover: #2c2c35;--hover-soft: #292930;--border: #36363f;--border-soft: #2a2a32;--text: #e5e5ea;--muted: #9e9eaa;--code-bg: #2a2a32;--accent: #6ea0ff;--accent-2: #4a7fee;--accent-bg: #1c2d50;--plot-select-bg: rgba(110, 160, 255, .28);--plot-select-border: rgba(110, 160, 255, .7);--error-bg: #3a1a1a;--error-fg: #ff8080;--modal-backdrop: rgba(0, 0, 0, .6);--shadow-modal: 0 12px 40px rgba(0, 0, 0, .5);--overlay-bg: rgba(31, 31, 38, .85);--kind-voltage: #6ea0ff;--kind-current: #ff7271;--kind-frequency: #d2a16e;--kind-power: #6ec77f;--cursor-a: #58c97d;--cursor-b: #c281e8;--cursor-a-bg: #1a3322;--cursor-b-bg: #2c1f3a}*{box-sizing:border-box}html,body,#root{height:100%;margin:0}body{font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-size:14px;color:var(--text);background:var(--bg)}.app{display:flex;flex-direction:column;height:100vh}.app-header{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:.55rem 1rem;background:linear-gradient(180deg,var(--panel) 0%,var(--panel-2) 100%);border-bottom:1px solid var(--border);box-shadow:0 1px #00000005}.app-brand{display:flex;align-items:center;gap:.6rem;flex:0 0 auto}.app-brand-mark{width:32px;height:22px;color:var(--accent);flex:0 0 auto}.app-title{display:flex;align-items:baseline;gap:.55rem;margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,sans-serif;font-weight:400}.app-title-brand{font-size:1.15rem;font-weight:700;letter-spacing:-.01em;line-height:1}.app-title-grid{color:var(--text)}.app-title-forge{color:var(--accent);background:linear-gradient(180deg,var(--accent) 0%,var(--accent-2) 100%);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}.app-title-product{font-size:1rem;color:var(--text);font-weight:600;letter-spacing:0;line-height:1}.app-title-product:before{content:"·";color:var(--muted);font-weight:400;margin-right:.45rem;display:inline-block}.app-body{display:flex;flex:1;min-height:0}.sidebar{width:320px;background:var(--panel);border-right:1px solid var(--border);overflow-y:auto;display:flex;flex-direction:column;flex:0 0 auto;transition:width .15s ease}.sidebar.collapsed{width:36px;overflow:hidden}.sidebar-header{display:flex;align-items:center;justify-content:space-between;padding:.4rem .5rem;border-bottom:1px solid var(--border);background:var(--panel-2);position:sticky;top:0;z-index:1}.sidebar.collapsed .sidebar-header{justify-content:center;padding:.4rem 0}.sidebar-title{font-size:11px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.sidebar-toggle{width:22px;height:22px;padding:0;border:1px solid var(--border);border-radius:3px;background:var(--panel);cursor:pointer;font-size:16px;line-height:18px;color:var(--muted);display:inline-flex;align-items:center;justify-content:center}.sidebar-toggle:hover{background:var(--hover);color:var(--text)}.sidebar-rail-label{writing-mode:vertical-rl;transform:rotate(180deg);margin:.75rem auto 0;font-size:10px;color:var(--muted);letter-spacing:.1em;font-family:ui-monospace,SFMono-Regular,monospace;-webkit-user-select:none;user-select:none}.main{flex:1;overflow:auto;padding:1rem 1.25rem}.upload{display:flex;align-items:center;gap:.5rem}.upload-file-btn{display:inline-flex;align-items:center;gap:.4rem;padding:5px 12px;font-family:inherit;font-size:13px;font-weight:600;line-height:1.2;color:#fff;background:var(--accent);border:1px solid var(--accent);border-radius:5px;cursor:pointer;-webkit-user-select:none;user-select:none;transition:background-color .12s ease,border-color .12s ease}.upload-file-btn:hover{background:var(--accent-2);border-color:var(--accent-2)}.upload-file-btn:focus-within{outline:2px solid var(--accent);outline-offset:2px}.upload-file-btn.is-disabled{background:var(--border);border-color:var(--border);color:var(--muted);cursor:not-allowed}.upload-file-icon{flex:0 0 auto}.upload-file-input{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.upload-hint,.upload-status{font-size:12px;color:var(--muted)}.upload-rate{display:inline-flex;align-items:center;gap:.3rem;font-size:11px;color:var(--muted);font-family:ui-monospace,SFMono-Regular,monospace}.upload-rate input{width:70px;padding:2px 4px;font-size:11px;font-family:inherit;border:1px solid var(--border);border-radius:3px}.upload-rate input:focus{outline:1px solid var(--accent);border-color:var(--accent)}.theme-switcher{display:inline-flex;border:1px solid var(--border);border-radius:4px;overflow:hidden;font-size:11px;font-family:ui-monospace,SFMono-Regular,monospace}.theme-switcher button{padding:.25rem .55rem;background:var(--panel);border:none;cursor:pointer;color:var(--muted);font-weight:500}.theme-switcher button:hover{color:var(--text);background:var(--hover)}.theme-switcher button.active{background:var(--accent-bg);color:var(--accent);font-weight:700}.theme-switcher button+button{border-left:1px solid var(--border)}.uplot,.u-legend,[data-theme=dark] .u-legend th,[data-theme=dark] .u-legend td{color:var(--text)}.u-select{background:var(--plot-select-bg);border:1px solid var(--plot-select-border)}.wizard-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:var(--modal-backdrop);display:flex;align-items:center;justify-content:center;z-index:1000;padding:1rem}.wizard-modal{background:var(--panel);border-radius:6px;box-shadow:var(--shadow-modal);width:min(960px,100%);max-height:90vh;display:flex;flex-direction:column}.wizard-header{display:flex;align-items:center;justify-content:space-between;padding:.75rem 1rem;border-bottom:1px solid var(--border)}.wizard-header h2{margin:0;font-size:1rem;font-weight:600}.wizard-close{background:transparent;border:none;font-size:22px;line-height:1;color:var(--muted);cursor:pointer;padding:.2rem .4rem;border-radius:3px}.wizard-close:hover{background:var(--hover);color:var(--text)}.wizard-intro{padding:.6rem 1rem 0;margin:0;font-size:13px;color:var(--text);line-height:1.45}.wizard-intro code{background:var(--code-bg);border-radius:3px;padding:0 .25rem}.wizard-table-wrap{overflow:auto;padding:.75rem 1rem;flex:1;min-height:0}.wizard-table{width:100%;border-collapse:collapse;font-size:12px;font-family:ui-monospace,SFMono-Regular,monospace}.wizard-table th,.wizard-table td{padding:.3rem .5rem;border-bottom:1px solid var(--border-soft);text-align:left;vertical-align:middle}.wizard-table thead th{font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.04em;font-size:11px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--panel)}.wizard-col-name{font-weight:600}.wizard-col-name code{font-size:12px}.wizard-sample-cell{color:var(--muted);max-width:160px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.wizard-unit-input{width:70px;padding:2px 4px;border:1px solid var(--border);border-radius:3px;font-family:inherit;font-size:12px}.wizard-unit-input:disabled{background:var(--code-bg);color:var(--muted)}.wizard-errors{margin:0;padding:.4rem 1rem 0 2rem;color:var(--error-fg);font-size:12px}.wizard-footer{display:flex;align-items:center;gap:.5rem;padding:.75rem 1rem;border-top:1px solid var(--border);background:var(--panel-2)}.wizard-fingerprint{flex:1;color:var(--muted);font-size:11px;font-family:ui-monospace,SFMono-Regular,monospace}.wizard-cancel,.wizard-submit{padding:.35rem .9rem;border-radius:3px;cursor:pointer;font-weight:600;font-size:12px;border:1px solid var(--border);background:var(--panel)}.wizard-cancel:hover:not(:disabled){background:var(--hover)}.wizard-submit{background:var(--accent);color:#fff;border-color:var(--accent)}.wizard-submit:hover:not(:disabled){background:var(--accent-2)}.wizard-submit:disabled,.wizard-cancel:disabled{opacity:.5;cursor:not-allowed}.error-banner{background:var(--error-bg);color:var(--error-fg);padding:.5rem 1rem;border-bottom:1px solid var(--border);font-family:ui-monospace,SFMono-Regular,monospace;font-size:12px}.event-list{list-style:none;margin:0;padding:0}.event-list-empty{padding:1rem;color:var(--muted);font-style:italic}.event-list-item{position:relative;padding:.75rem 2rem .75rem 1rem;border-bottom:1px solid var(--border);cursor:pointer}.event-list-item:hover{background:var(--hover-soft)}.event-list-item.selected{background:var(--accent-bg);border-left:3px solid var(--accent);padding-left:calc(1rem - 3px)}.event-list-title{font-weight:500}.event-list-meta{font-size:11px;color:var(--muted);margin-top:.25rem;font-family:ui-monospace,SFMono-Regular,monospace}.event-list-delete{position:absolute;top:.5rem;right:.5rem;background:none;border:none;color:var(--muted);cursor:pointer;font-size:18px;line-height:1;padding:.2rem .4rem}.event-list-delete:hover{color:var(--error-fg)}.detail-meta h2{margin:0 0 .5rem;font-size:1.1rem}.detail-fields{display:grid;grid-template-columns:max-content 1fr;gap:.2rem 1rem;margin:0 0 1rem;font-family:ui-monospace,SFMono-Regular,monospace;font-size:12px}.detail-fields dt{color:var(--muted)}.detail-fields dd{margin:0}.muted{color:var(--muted)}.zoom-toolbar{display:flex;align-items:center;gap:.6rem;margin-bottom:.5rem;padding:.3rem .5rem;background:var(--accent-bg);border:1px solid var(--accent);border-radius:4px;font-size:12px}.zoom-label{color:var(--accent);font-weight:500;font-family:ui-monospace,SFMono-Regular,monospace;flex:1}.zoom-reset{padding:.25rem .6rem;border:1px solid var(--accent);border-radius:3px;background:var(--panel);color:var(--accent);cursor:pointer;font-weight:600;font-size:12px}.zoom-reset:hover{background:var(--accent);color:#fff}.detail-plots{display:flex;flex-direction:column;gap:.75rem;margin-bottom:1rem}.detail-plot-wrap{background:var(--panel);border:1px solid var(--border);border-radius:4px;padding:.5rem}.cpanel{display:flex;flex-direction:column}.cpanel-panel{background:var(--panel);border:1px solid var(--border);border-radius:4px}.cpanel-plain{background:transparent;border:none}.cpanel-header{display:flex;align-items:center;gap:.4rem;padding:.25rem .5rem;cursor:default;-webkit-user-select:none;user-select:none}.cpanel-panel .cpanel-header{border-bottom:1px solid var(--border);background:var(--panel-2)}.cpanel.collapsed .cpanel-header{border-bottom:none}.cpanel-toggle{width:18px;height:18px;padding:0;border:none;background:transparent;cursor:pointer;font-size:11px;line-height:1;color:var(--muted);border-radius:2px;display:inline-flex;align-items:center;justify-content:center}.cpanel-toggle:hover{background:var(--border-soft);color:var(--text)}.cpanel-close{width:18px;height:18px;padding:0;border:none;background:transparent;cursor:pointer;font-size:14px;line-height:1;color:var(--muted);border-radius:2px;display:inline-flex;align-items:center;justify-content:center;margin-left:.25rem}.cpanel-close:hover{background:var(--error-bg, #fff0f0);color:var(--error-fg, #c0392b)}.cpanel-title{margin:0;font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em;flex:1}.cpanel-right,.cpanel-meta{font-size:11px;color:var(--muted);font-family:ui-monospace,SFMono-Regular,monospace}.cpanel-body{padding:.4rem .5rem}.cpanel-plain .cpanel-body{padding:.4rem 0}.detail-plot-block,.detail-cursor-block{margin-bottom:.75rem}.empty-plots{padding:2rem;text-align:center;color:var(--muted);font-style:italic}.plot-header{display:flex;align-items:baseline;justify-content:space-between;padding:.1rem .25rem .4rem}.plot-header h3{margin:0;font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.plot-channel-count{font-size:11px;color:var(--muted);font-family:ui-monospace,SFMono-Regular,monospace}.waveform-plot{position:relative;min-height:280px}.waveform-canvas{width:100%;position:relative}.wp-tooltip{position:absolute;pointer-events:none;z-index:5;background:var(--panel);border:1px solid var(--border);border-radius:4px;padding:5px 8px;font-size:11px;color:var(--text);box-shadow:0 2px 8px #0000001f;white-space:nowrap;max-width:320px}.wp-tip-time{font-family:ui-monospace,SFMono-Regular,monospace;font-weight:600;padding-bottom:3px;margin-bottom:4px;border-bottom:1px solid var(--border-soft);color:var(--text)}.wp-tip-row{display:flex;align-items:center;gap:6px;line-height:1.45}.wp-tip-swatch{width:8px;height:8px;border-radius:50%;display:inline-block;flex:0 0 auto}.wp-tip-name{color:var(--muted);flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis}.wp-tip-value{font-family:ui-monospace,SFMono-Regular,monospace;font-weight:600;color:var(--text);flex:0 0 auto}.empty-plot{height:280px;display:flex;align-items:center;justify-content:center;color:var(--muted);font-style:italic}.loading-overlay{position:absolute;top:.5rem;right:.75rem;z-index:2;background:var(--overlay-bg);padding:.2rem .45rem;border-radius:4px;border:1px solid var(--border);font-size:11px;color:var(--muted)}.spinner-wrap{display:inline-flex;align-items:center;gap:.4rem;vertical-align:middle}.spinner{display:inline-block;border-style:solid;border-color:#2f6fed2e;border-top-color:var(--accent);border-radius:50%;animation:spinner-rotate .8s linear infinite;flex:0 0 auto}.spinner-label{font-size:12px;color:var(--muted);font-family:ui-monospace,SFMono-Regular,monospace}@keyframes spinner-rotate{to{transform:rotate(360deg)}}@media(prefers-reduced-motion:reduce){.spinner{animation-duration:2.4s}}.detail-cursor-wrap{background:var(--panel);border:1px solid var(--border);border-radius:4px;padding:.5rem .75rem;margin-bottom:1rem}.cursor-toolbar{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:12px}.cursor-toolbar-label{color:var(--muted);font-weight:500}.cursor-toggle{display:inline-flex;align-items:center;gap:.25rem;padding:.2rem .5rem;border:1px solid var(--border);border-radius:3px;cursor:pointer;font-weight:600;background:var(--panel-2);color:var(--text)}.cursor-toggle input{margin:0}.cursor-toggle.a{color:var(--cursor-a)}.cursor-toggle.b{color:var(--cursor-b)}.cursor-toggle.active.a{background:#e7f6ec;border-color:var(--cursor-a)}.cursor-toggle.active.b{background:#f3e9f9;border-color:var(--cursor-b)}.cursor-clear{margin-left:.25rem;padding:.2rem .6rem;border:1px solid var(--border);background:var(--panel-2);color:var(--text);border-radius:3px;cursor:pointer;font-size:12px}.cursor-clear:hover{background:var(--hover)}.cursor-hint{color:var(--muted);font-style:italic}.cursor-table{width:100%;border-collapse:collapse;font-family:ui-monospace,SFMono-Regular,monospace;font-size:12px}.cursor-table th,.cursor-table td{text-align:right;padding:.15rem .5rem;border-bottom:1px solid var(--border-soft)}.cursor-table thead th{color:var(--muted);font-weight:500}.cursor-table tbody th{text-align:left;color:var(--text);font-weight:500}.cursor-time-row td:nth-child(2){color:var(--cursor-a)}.cursor-time-row td:nth-child(3){color:var(--cursor-b)}.cursor-ch.kind-current th{color:var(--kind-current)}.cursor-ch.kind-voltage th{color:var(--kind-voltage)}.cursor-ch.kind-frequency th{color:var(--kind-frequency)}.cursor-ch.kind-power th{color:var(--kind-power)}.digital-panel{position:relative}.digital-canvas{width:100%}.detail-phasors{display:flex;flex-wrap:wrap;gap:.75rem;margin-bottom:1rem}.phasor-panel{width:100%}.phasor-collapsible{flex:1 1 320px;min-width:320px}.phasor-meta{font-size:11px;color:var(--muted);margin-bottom:.25rem;font-family:ui-monospace,SFMono-Regular,monospace}.phasor-meta-item{margin-right:.5rem}.phasor-empty{padding:1.5rem 1rem;text-align:center;color:var(--muted);font-style:italic;font-size:12px}.phasor-body{display:flex;align-items:flex-start;gap:.75rem}.phasor-svg{flex:0 0 auto;background:var(--panel);border-radius:2px}.phasor-table{flex:1 1 auto;font-size:12px;font-family:ui-monospace,SFMono-Regular,monospace;border-collapse:collapse;width:100%}.phasor-table th,.phasor-table td{padding:.15rem .4rem;text-align:right;border-bottom:1px solid var(--border-soft)}.phasor-table thead th{color:var(--muted);font-weight:500;font-size:11px}.phasor-table thead .col-a{color:var(--cursor-a)}.phasor-table thead .col-b{color:var(--cursor-b)}.phasor-table tbody th{text-align:left;font-weight:500;display:flex;align-items:center;gap:.4rem}.phasor-swatch{display:inline-block;width:10px;height:10px;border-radius:50%;flex:0 0 auto}.phase-rotation-toolbar{display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;font-size:12px}.phase-rotation-label{color:var(--muted);font-weight:500}.phase-rotation-toggle{display:inline-flex;align-items:center;gap:.25rem;padding:.2rem .55rem;border:1px solid var(--border);border-radius:3px;cursor:pointer;font-weight:600;font-family:ui-monospace,SFMono-Regular,monospace;background:var(--panel-2)}.phase-rotation-toggle input{margin:0}.phase-rotation-toggle.active{background:var(--accent-bg);border-color:var(--accent);color:var(--accent)}.phase-rotation-hint{color:var(--muted);font-style:italic;font-size:11px}.phasor-sep-row th{padding-top:.4rem;font-size:10px;text-transform:uppercase;letter-spacing:.05em;color:var(--muted);font-weight:600;border-bottom:1px solid var(--border);border-top:1px solid var(--border)}.phasor-seq-row th{font-weight:600}.cursor-section-divider th{text-align:left;padding-top:.5rem;color:var(--muted);font-size:11px;text-transform:uppercase;letter-spacing:.05em;font-weight:600;border-bottom:1px solid var(--border)}.cursor-digital th{font-weight:500;color:#1f77b4}.cursor-digital td{font-family:ui-monospace,SFMono-Regular,monospace}.channel-group-header{display:flex;align-items:baseline;justify-content:space-between;gap:.5rem}.channel-group-header h3{margin:0 0 .5rem}.digital-filter{font-size:11px;color:var(--muted);display:inline-flex;align-items:center;gap:.25rem;cursor:pointer}.digital-filter input{margin:0}.channel-search-wrap{display:flex;align-items:center;gap:.5rem;margin-bottom:.4rem}.channel-search{flex:1;padding:.25rem .4rem;border:1px solid var(--border);border-radius:3px;font-size:12px;font-family:ui-monospace,SFMono-Regular,monospace;background:var(--panel)}.channel-search:focus{outline:1px solid var(--accent);border-color:var(--accent)}.channel-search::-webkit-search-cancel-button{cursor:pointer}.channel-search-count{font-size:11px;color:var(--muted);font-family:ui-monospace,SFMono-Regular,monospace;white-space:nowrap}.channel-list-empty{padding:.5rem .25rem;color:var(--muted);font-style:italic;font-size:12px}.ch-kind-select{margin:0 .4rem;font-size:10px;font-family:ui-monospace,SFMono-Regular,monospace;color:var(--muted);background:#f7f7f9;border:1px solid var(--border);border-radius:3px;padding:1px 2px;cursor:pointer;vertical-align:middle}.ch-kind-select.overridden{color:#b8421b;background:#fff5ee;border-color:#f5c8a8;font-weight:600}.ch-kind-select:focus{outline:1px solid var(--accent)}.detail-channels{display:grid;grid-template-columns:1fr 1fr;gap:1rem}.calc-channels-row{grid-column:1 / -1}.channel-group{background:var(--panel);border:1px solid var(--border);border-radius:4px;padding:.5rem .75rem}.channel-group h3{margin:0 0 .5rem;font-size:12px;font-weight:600;color:var(--muted);text-transform:uppercase;letter-spacing:.05em}.channel-list{list-style:none;margin:0;padding:0;max-height:360px;overflow-y:auto;font-family:ui-monospace,SFMono-Regular,monospace;font-size:12px}.channel-list li{padding:.15rem 0;display:flex;align-items:center}.channel-list label{display:flex;align-items:center;gap:.5rem;cursor:pointer;width:100%}.channel-list .ch-name{flex:0 0 80px;font-weight:500}.channel-list .ch-meta{color:var(--muted);font-size:11px;flex:1}.channel-list .kind-current .ch-name{color:var(--kind-current)}.channel-list .kind-voltage .ch-name{color:var(--kind-voltage)}.channel-list .kind-frequency .ch-name{color:var(--kind-frequency)}.channel-list .kind-power .ch-name{color:var(--kind-power)}.empty{padding:2rem;text-align:center;color:var(--muted);font-style:italic}.error{padding:.5rem;background:var(--error-bg);color:var(--error-fg);border-radius:3px;font-family:ui-monospace,SFMono-Regular,monospace;font-size:12px}.loading{padding:1rem;color:var(--muted)}.app-loading{display:flex;align-items:center;justify-content:center;height:100vh;color:var(--muted);font-size:15px}.login-screen{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:24px;background:var(--bg)}.login-card{width:100%;max-width:380px;background:var(--panel);border:1px solid var(--border);border-radius:10px;padding:28px 26px 22px;display:flex;flex-direction:column;gap:14px;box-shadow:0 6px 24px #0000000f}.login-title{margin:0;font-size:20px;font-weight:600;color:var(--text)}.login-subtitle{margin:0;color:var(--muted);font-size:14px}.login-label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--text)}.login-label input{font:inherit;padding:8px 10px;border:1px solid var(--border);border-radius:6px;background:var(--bg);color:var(--text)}.login-label input:focus{outline:2px solid var(--accent);outline-offset:-2px;border-color:var(--accent)}.login-card button[type=submit]{margin-top:4px;padding:9px 14px;border:none;border-radius:6px;background:var(--accent);color:#fff;font:inherit;font-weight:500;cursor:pointer;transition:background-color .12s ease}.login-card button[type=submit]:hover:not(:disabled){filter:brightness(1.05)}.login-card button[type=submit]:disabled{opacity:.6;cursor:not-allowed}.login-error{background:var(--error-bg);color:var(--error-fg);border-radius:6px;padding:8px 10px;font-size:13px}.login-note{margin:0;color:var(--muted);font-size:12px;line-height:1.5}.app-user{display:flex;align-items:center;gap:10px;margin-inline-start:auto;padding-inline-start:12px;font-size:13px;color:var(--muted)}.app-user-email{max-width:220px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.app-user-logout{font:inherit;font-size:12px;padding:4px 10px;border:1px solid var(--border);border-radius:5px;background:var(--panel);color:var(--text);cursor:pointer}.app-user-logout:hover{background:var(--bg)}.events-panel{padding:18px 22px;display:flex;flex-direction:column;gap:14px}.events-panel-head{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:14px}.events-panel-head h2{margin:0;font-size:22px;font-weight:600;color:var(--text)}.events-datasource-switcher{display:flex;flex-wrap:wrap;gap:6px}.ds-picker-shell{display:flex;align-items:center;justify-content:center;min-height:60vh;padding:24px}.ds-picker{background:var(--panel);border:1px solid var(--border);border-radius:12px;padding:28px 32px;max-width:520px;width:100%;display:flex;flex-direction:column;gap:16px}.ds-picker h2{margin:0;font-size:20px;font-weight:600;color:var(--text)}.ds-picker-help{margin:0;color:var(--text-muted, #888);font-size:14px}.ds-picker-list{display:flex;flex-direction:column;gap:8px}.ds-picker-card{display:flex;align-items:center;gap:12px;padding:12px 14px;border:1px solid var(--border);border-radius:8px;cursor:pointer;transition:background-color .12s ease,border-color .12s ease}.ds-picker-card:hover{background:var(--accent-bg)}.ds-picker-card.is-selected{background:var(--accent-bg);border-color:var(--accent)}.ds-picker-label{flex:1;font-weight:500;color:var(--text)}.ds-picker-kind{font-family:ui-monospace,SFMono-Regular,Menlo,monospace;font-size:12px;color:var(--text-muted, #888);text-transform:uppercase}.ds-picker-submit{align-self:flex-end;font:inherit;padding:8px 18px;background:var(--accent);color:#fff;border:none;border-radius:6px;cursor:pointer;font-weight:500}.ds-picker-submit:disabled{opacity:.6;cursor:not-allowed}.events-time-row{display:flex;flex-wrap:wrap;align-items:center;gap:12px}.events-time-presets{display:flex;flex-wrap:wrap;gap:6px}.events-time-chip{font:inherit;padding:6px 12px;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:999px;cursor:pointer;transition:background-color .12s ease,border-color .12s ease,color .12s ease}.events-time-chip:hover{background:var(--accent-bg)}.events-time-chip.is-active{background:var(--accent);color:#fff;border-color:var(--accent)}.events-time-custom{display:flex;align-items:center;gap:14px;flex-wrap:wrap}.events-time-custom label{display:inline-flex;align-items:center;font-size:12px;gap:8px}.events-time-custom label>span{color:var(--muted);letter-spacing:.04em;text-transform:uppercase;font-weight:500}.events-time-custom input{font:inherit;padding:5px 8px;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text)}.events-time-apply{font:inherit;padding:6px 12px;background:var(--accent);color:#fff;border:none;border-radius:4px;cursor:pointer}.events-advanced summary{cursor:pointer;font-size:13px;color:var(--muted);padding:4px 0;-webkit-user-select:none;user-select:none}.events-advanced[open] summary{margin-bottom:8px}.events-advanced-row{display:flex;flex-wrap:wrap;gap:14px;padding:4px 0 8px}.events-advanced-row label{display:flex;flex-direction:column;font-size:12px;gap:4px}.events-advanced-row select{font:inherit;padding:5px 8px;border:1px solid var(--border);border-radius:4px;background:var(--bg);color:var(--text)}.events-results-shell{display:flex;flex-direction:column;gap:10px}.events-loading{font-size:13px;color:var(--muted)}.events-results-meta{font-size:12px;color:var(--muted)}.events-results-empty{margin:12px 0;color:var(--muted);font-size:14px}.events-table-scroll{overflow-x:auto;border:1px solid var(--border);border-radius:6px;background:var(--panel)}.events-table{width:100%;border-collapse:collapse;font-size:13px}.events-table th,.events-table td{padding:8px 12px;text-align:left;border-bottom:1px solid var(--border);white-space:nowrap}.events-table th{background:var(--bg);font-weight:600;font-size:12px;color:var(--muted);text-transform:uppercase;letter-spacing:.04em}.events-table tbody tr:last-child td{border-bottom:none}.events-table tbody tr:hover{background:var(--accent-bg)}.events-cell-id a{color:var(--accent);text-decoration:none;font-family:ui-monospace,SFMono-Regular,monospace;font-size:12.5px}.events-cell-id a:hover{text-decoration:underline}.events-cell-ts{font-family:ui-monospace,SFMono-Regular,monospace;font-size:12.5px;color:var(--text)}.events-pager{display:flex;align-items:center;gap:12px;justify-content:flex-end;padding-top:4px}.events-pager button{font:inherit;padding:5px 10px;background:var(--panel);color:var(--text);border:1px solid var(--border);border-radius:4px;cursor:pointer}.events-pager button:disabled{opacity:.5;cursor:not-allowed}.events-pager-label{font-size:12px;color:var(--muted)}.event-detail-shell{display:flex;flex-direction:column;height:100%}.event-detail-toolbar{padding:10px 22px;border-bottom:1px solid var(--border);background:var(--bg)}.btn-back{font:inherit;padding:4px 10px;background:transparent;color:var(--accent);border:none;cursor:pointer;font-size:14px}.btn-back:hover{text-decoration:underline}.calc-panel{display:flex;flex-direction:column;gap:.5rem}.calc-empty{font-size:13px;color:var(--muted);padding:.5rem 0}.calc-empty code{background:var(--code-bg);padding:1px 5px;border-radius:3px;font-size:12px}.calc-list{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:.35rem}.calc-item{border:1px solid var(--border);border-radius:6px;background:var(--panel)}.calc-item.disabled{opacity:.55}.calc-row{display:flex;align-items:flex-start;gap:.6rem;padding:.45rem .6rem}.calc-enable{display:flex;align-items:center;padding-top:2px}.calc-summary{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;gap:2px}.calc-name-row{display:flex;align-items:baseline;gap:.4rem;flex-wrap:wrap}.calc-name{font-weight:600;font-size:13px;color:var(--text)}.calc-name.kind-voltage{color:var(--kind-voltage)}.calc-name.kind-current{color:var(--kind-current)}.calc-name.kind-power{color:var(--kind-power)}.calc-name.kind-frequency{color:var(--kind-frequency)}.calc-name.kind-digital{color:var(--accent)}.calc-kind-badge,.calc-unit-badge{font-size:10px;text-transform:uppercase;letter-spacing:.04em;padding:1px 5px;border-radius:3px;background:var(--code-bg);color:var(--muted)}.calc-expr{font-family:ui-monospace,SFMono-Regular,monospace;font-size:12px;background:var(--code-bg);padding:2px 6px;border-radius:3px;color:var(--text);align-self:flex-start;max-width:100%;overflow-x:auto;white-space:pre}.calc-error{font-size:11px;color:var(--error-fg);background:var(--error-bg);padding:2px 6px;border-radius:3px;align-self:flex-start}.calc-actions{display:flex;gap:.3rem;flex:0 0 auto}.calc-edit-btn,.calc-remove-btn,.calc-add-btn,.calc-save-btn,.calc-cancel-btn{font-family:inherit;font-size:12px;padding:3px 9px;border:1px solid var(--border);border-radius:4px;background:var(--panel);color:var(--text);cursor:pointer}.calc-edit-btn:hover,.calc-remove-btn:hover,.calc-add-btn:hover,.calc-cancel-btn:hover{background:var(--hover)}.calc-remove-btn{font-weight:700;line-height:1;padding:3px 7px}.calc-save-btn{background:var(--accent-bg);color:var(--accent-2);border-color:var(--accent)}.calc-save-btn:hover:not(:disabled){background:var(--accent);color:#fff}.calc-save-btn:disabled{opacity:.5;cursor:not-allowed}.calc-toolbar{display:flex;align-items:center;gap:.6rem;flex-wrap:wrap;margin-top:.2rem}.calc-add{border:1px dashed var(--border);border-radius:6px;padding:.5rem;background:var(--panel)}.calc-editor{display:flex;flex-direction:column;gap:.5rem}.calc-field-row{display:flex;gap:.6rem;flex-wrap:wrap}.calc-field{display:flex;flex-direction:column;gap:2px;font-size:11px;color:var(--muted);flex:1 1 140px;min-width:100px}.calc-field span{font-weight:600;letter-spacing:.02em}.calc-field input,.calc-field select,.calc-field textarea{font-family:inherit;font-size:13px;padding:4px 6px;border:1px solid var(--border);border-radius:4px;background:var(--panel);color:var(--text)}.calc-field textarea{font-family:ui-monospace,SFMono-Regular,monospace;resize:vertical}.calc-field input.invalid,.calc-field textarea.invalid{border-color:var(--error-fg)}.calc-field-kind,.calc-field-unit{flex:0 0 110px}.calc-field-expr{flex:1 1 100%}.calc-field-err{color:var(--error-fg);font-weight:400}.calc-channel-pick{display:flex;flex-wrap:wrap;align-items:center;gap:4px;font-size:11px;color:var(--muted)}.calc-pick-label{margin-right:2px}.calc-pick-chip{font-family:ui-monospace,SFMono-Regular,monospace;font-size:11px;padding:1px 6px;border:1px solid var(--border);border-radius:10px;background:var(--code-bg);color:var(--text);cursor:pointer}.calc-pick-chip:hover{background:var(--hover);border-color:var(--accent)}.calc-pick-chip-digital{border-color:var(--accent);color:var(--accent-2)}.calc-pick-chip-digital:hover{background:var(--accent-bg)}.calc-channel-pick-empty{font-style:italic}.calc-pick-hint{color:var(--muted);font-size:11px}.calc-pick-hint code{font-family:ui-monospace,SFMono-Regular,monospace;font-style:normal;background:var(--code-bg);padding:0 4px;border-radius:3px;color:var(--text)}.calc-editor-actions{display:flex;gap:.4rem;justify-content:flex-end}.calc-help{position:relative;font-size:12px;color:var(--muted)}.calc-help-icon{font-family:ui-serif,Georgia,serif;font-weight:700;font-size:13px;line-height:1;width:22px;height:22px;padding:0;border-radius:50%;border:1px solid var(--border);background:var(--panel);color:var(--muted);cursor:help;display:inline-flex;align-items:center;justify-content:center}.calc-help-icon:hover,.calc-help-icon[aria-expanded=true]{background:var(--accent-bg);border-color:var(--accent);color:var(--accent-2)}.calc-help-body{margin-top:.5rem;width:100%;display:flex;flex-direction:column;gap:.6rem;padding:.75rem .9rem;border:1px solid var(--border);border-radius:6px;background:var(--panel);box-shadow:0 2px 8px #0000000a;font-size:12.5px;color:var(--text)}.calc-help-title{display:flex;align-items:center;justify-content:space-between;font-weight:600;font-size:13px;color:var(--text);padding-bottom:.35rem;border-bottom:1px solid var(--border-soft)}.calc-help-close{font-family:inherit;font-size:16px;line-height:1;padding:0 6px;border:none;background:transparent;color:var(--muted);cursor:pointer;border-radius:3px}.calc-help-close:hover{background:var(--hover);color:var(--text)}.calc-help-section{display:flex;flex-direction:column;gap:.25rem}.calc-help-section h4{margin:0;font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;color:var(--muted)}.calc-help-section p{margin:0;line-height:1.4}.calc-help-section code{font-family:ui-monospace,SFMono-Regular,monospace;font-size:11.5px;background:var(--code-bg);padding:1px 5px;border-radius:3px;color:var(--text)}.calc-help-table{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:2px;line-height:1.4}.calc-help-table li{display:block}.calc-help-examples{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:max-content 1fr;column-gap:.7rem;row-gap:3px;line-height:1.45}.calc-help-examples li{display:contents}.calc-help-examples li code{display:inline-block;white-space:nowrap}.calc-help-examples li span{color:var(--muted);font-size:12px;align-self:center}.calc-help-tips{list-style:disc;padding-left:1.1rem;margin:0;display:flex;flex-direction:column;gap:3px;line-height:1.4;color:var(--text)}.calc-help-tips em{font-style:italic;color:var(--muted)}.events-quick-filters{display:flex;flex-wrap:wrap;gap:28px;align-items:end;padding-block:4px}.events-quick-filters label{display:flex;flex-direction:column;gap:10px;font-size:12px;font-weight:500;position:relative;min-width:240px}.events-quick-filters label>span{color:var(--muted);letter-spacing:.04em;text-transform:uppercase}.events-quick-filters input{font:inherit;font-weight:400;padding:8px 32px 8px 12px;border:1px solid var(--border);border-radius:5px;background:var(--bg);color:var(--text);width:100%}.events-quick-filters input::placeholder{color:var(--muted)}.events-quick-filters input:focus{outline:2px solid var(--accent);outline-offset:-2px;border-color:var(--accent)}.events-filter-clear{position:absolute;right:6px;bottom:6px;width:24px;height:24px;border:none;background:transparent;color:var(--muted);font-size:16px;line-height:1;cursor:pointer;border-radius:4px}.events-filter-clear:hover{background:var(--tertiary);color:var(--text)}.sessions-panel{display:flex;flex-direction:column;gap:.5rem}.sessions-empty{font-size:12px;color:var(--muted);line-height:1.45}.sessions-empty em{font-style:normal;color:var(--text)}.sessions-list{list-style:none;margin:0;padding:0;display:flex;flex-direction:column;gap:.25rem}.sessions-item{display:flex;align-items:center;gap:.5rem;padding:.4rem .55rem;border:1px solid var(--border);border-radius:4px;background:var(--panel)}.sessions-info{flex:1 1 auto;min-width:0}.sessions-name{font-size:13px;font-weight:600;color:var(--text);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.sessions-meta{font-size:11px;color:var(--muted)}.sessions-actions{display:flex;gap:.3rem;flex:0 0 auto}.sessions-load-btn,.sessions-remove-btn,.sessions-new-btn,.sessions-save-btn,.sessions-cancel-btn{font-family:inherit;font-size:12px;padding:3px 9px;border:1px solid var(--border);border-radius:4px;background:var(--panel);color:var(--text);cursor:pointer}.sessions-load-btn:hover,.sessions-new-btn:hover,.sessions-cancel-btn:hover,.sessions-remove-btn:hover{background:var(--hover)}.sessions-remove-btn{font-weight:700;line-height:1;padding:3px 7px}.sessions-load-btn{background:var(--accent-bg);color:var(--accent-2);border-color:var(--accent)}.sessions-load-btn:hover{background:var(--accent);color:#fff}.sessions-save-btn{background:var(--accent-bg);color:var(--accent-2);border-color:var(--accent)}.sessions-save-btn:hover:not(:disabled){background:var(--accent);color:#fff}.sessions-save-btn:disabled{opacity:.5;cursor:not-allowed}.sessions-toolbar{display:flex;align-items:center;gap:.5rem;margin-top:.2rem}.sessions-save-form{display:flex;align-items:center;gap:.4rem;padding:.4rem;border:1px dashed var(--border);border-radius:4px;background:var(--panel)}.sessions-name-input{flex:1 1 auto;min-width:0;font-family:inherit;font-size:13px;padding:4px 6px;border:1px solid var(--border);border-radius:4px;background:var(--panel);color:var(--text)}
