:root{--ground:#0a0c11;--panel:#12161f;--panel-2:#191f2b;--line:#232b3a;--line-soft:#1a2130;--ink:#dee4ef;--ink-dim:#8c96a8;--ink-faint:#5a6476;--accent:#4fd8c4;--accent-deep:#1e6f67;--amber:#ffb454;--alert:#d2453b;--radius:3px}*{box-sizing:border-box}html{-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent}html,body{height:100%}body{background:var(--ground);color:var(--ink);-webkit-font-smoothing:antialiased;margin:0;font-family:Barlow,Helvetica Neue,Arial,PingFang TC,Noto Sans TC,sans-serif;font-size:14px;overflow:hidden}.app{background:var(--ground);flex-direction:column;height:100dvh;display:flex}.topbar{background:var(--panel);border-bottom:1px solid var(--line);flex:none;align-items:center;gap:18px;height:50px;padding:0 14px;display:flex}.brand{flex:none;align-items:center;gap:9px;display:flex}.brand .mark{background:linear-gradient(#fff7dc 0%,#f5c13b 14%,#e0562a 32%,#8a1e6e 55%,#2a1454 78%,#0a0c11 100%);border:1px solid #2e3648;border-radius:1px;width:14px;height:18px}.brand h1{letter-spacing:.06em;text-transform:uppercase;margin:0;font-family:Barlow Condensed,sans-serif;font-size:19px;font-weight:700}.meta{min-width:0;color:var(--ink-dim);white-space:nowrap;text-overflow:ellipsis;flex:auto;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11.5px;overflow:hidden}.meta b{color:var(--ink);font-weight:500}.meta .sep{color:var(--ink-faint);padding:0 7px}.transport{flex:none;align-items:center;gap:8px;display:flex}.clock{font-variant-numeric:tabular-nums;color:var(--ink-dim);letter-spacing:-.01em;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:12px}.clock b{color:var(--accent);font-weight:500}.btn{letter-spacing:.07em;text-transform:uppercase;color:var(--ink);background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;padding:6px 12px;font-family:Barlow Condensed,sans-serif;font-size:14px;font-weight:600;transition:background .12s,border-color .12s,color .12s}.btn:hover{background:#222937;border-color:#313b4e}.btn:active{background:#1a2029}.btn:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.btn[disabled]{opacity:.35;cursor:default}.btn.icon{place-items:center;width:30px;height:28px;padding:0;display:grid}.btn.icon svg{width:12px;height:12px;fill:var(--ink)}.btn.primary{border-color:var(--accent-deep);color:var(--accent)}.btn.ghost{background:0 0}#freqFitBtn:not([disabled]){background:var(--alert);border-color:var(--alert);color:#fff}#freqFitBtn:not([disabled]):hover{background:#e15a50;border-color:#e15a50}#freqFitBtn:not([disabled]):active{background:#b93a31;border-color:#b93a31}.rail{border-bottom:1px solid var(--line);background:linear-gradient(#10141c,#0d1119);flex-wrap:wrap;flex:none;align-items:flex-end;gap:16px;padding:9px 14px 10px;display:flex}.ctl{flex-direction:column;gap:4px;display:flex}.ctl>label{letter-spacing:.13em;text-transform:uppercase;color:var(--ink-faint);align-items:baseline;gap:6px;font-family:Barlow Condensed,sans-serif;font-size:11px;font-weight:600;display:flex}.ctl>label b{letter-spacing:0;color:var(--accent);text-transform:none;font-variant-numeric:tabular-nums;font-family:IBM Plex Mono,monospace;font-size:10.5px;font-weight:400}select{color:var(--ink);background:var(--panel-2);border:1px solid var(--line);border-radius:var(--radius);cursor:pointer;min-width:96px;padding:5px 7px;font-family:IBM Plex Mono,monospace;font-size:12px}select:focus-visible{outline:2px solid var(--accent);outline-offset:1px}.seg{border:1px solid var(--line);border-radius:var(--radius);display:flex;overflow:hidden}.seg button{letter-spacing:.08em;text-transform:uppercase;background:var(--panel-2);color:var(--ink-dim);border:0;border-right:1px solid var(--line);cursor:pointer;padding:6px 11px;font-family:Barlow Condensed,sans-serif;font-size:12.5px;font-weight:600}.seg button:last-child{border-right:0}.seg button.on{background:var(--accent-deep);color:#eafffb}.seg button:focus-visible{outline:2px solid var(--accent);outline-offset:-2px}input[type=range]{appearance:none;cursor:pointer;background:0 0;width:132px;height:18px;margin:0}input[type=range]::-webkit-slider-runnable-track{background:var(--line);border-radius:2px;height:3px}input[type=range]::-webkit-slider-thumb{appearance:none;background:var(--accent);border:0;border-radius:50%;width:12px;height:12px;margin-top:-4.5px}input[type=range]::-moz-range-track{background:var(--line);border-radius:2px;height:3px}input[type=range]::-moz-range-thumb{background:var(--accent);border:0;border-radius:50%;width:12px;height:12px}input[type=range]:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.rail .spacer{flex:auto}.stage{background:var(--ground);flex-direction:column;flex:auto;min-height:0;display:flex;position:relative}#overview{border-bottom:1px solid var(--line);cursor:crosshair;flex:0 0 74px;width:100%;height:74px;display:block}.plotwrap{flex:auto;min-height:0;position:relative}#main{cursor:crosshair;width:100%;height:100%;display:block}#main.panning{cursor:grabbing}.dropzone{-webkit-backdrop-filter:blur(2px);backdrop-filter:blur(2px);z-index:5;background:#0a0c11f0;place-items:center;transition:opacity .18s;display:grid;position:absolute;inset:0}.dropzone.hide{opacity:0;pointer-events:none}.dz-inner{text-align:center;border:1px dashed var(--line);border-radius:6px;padding:44px 60px;transition:border-color .15s,background .15s}.dropzone.over .dz-inner{border-color:var(--accent);background:#4fd8c40d}.dz-inner h2{letter-spacing:.05em;text-transform:uppercase;color:var(--ink);margin:0 0 8px;font-family:Barlow Condensed,sans-serif;font-size:26px;font-weight:600}.dz-inner p{color:var(--ink-dim);margin:0;font-size:13.5px;line-height:1.7}.dz-inner code{color:var(--accent);background:#4fd8c414;border-radius:2px;padding:1px 5px;font-family:IBM Plex Mono,monospace;font-size:11.5px}.dz-err{color:var(--amber)!important}.dz-open{margin-top:22px;padding:8px 20px;font-size:15px}.progress{z-index:6;display:none;position:absolute;top:0;left:0;right:0}.progress.on{display:block}.progress .bar{background:var(--accent);width:0%;height:2px;transition:width .1s linear}.progress .txt{color:var(--accent);font-family:IBM Plex Mono,monospace;font-size:11px;position:absolute;top:10px;left:14px}.statusbar{background:var(--panel);border-top:1px solid var(--line);height:28px;color:var(--ink-dim);white-space:nowrap;flex:none;align-items:center;gap:0;padding:0 14px;font-family:IBM Plex Mono,ui-monospace,monospace;font-size:11px;display:flex;overflow:hidden}.stat{align-items:baseline;gap:6px;padding-right:18px;display:flex}.stat span{color:var(--ink-faint);letter-spacing:.1em;text-transform:uppercase;font-family:Barlow Condensed,sans-serif;font-size:10px;font-weight:600}.stat b{color:var(--ink);font-variant-numeric:tabular-nums;min-width:0;font-weight:400}.statusbar .hint{color:var(--ink-faint);margin-left:auto;padding-left:18px}@media (width<=900px){.meta,.statusbar .hint{display:none}}@media (prefers-reduced-motion:reduce){*{transition:none!important}}
