:root{--bg-primary: #0f1117;--bg-secondary: #1a1d27;--bg-tertiary: #242836;--text-primary: #e4e6ef;--text-secondary: #9096a8;--accent: #64b4ff;--accent-hover: #8cc8ff;--warning: #ffc83c;--success: #78ff78;--error: #ff6b6b;--border: rgba(255, 255, 255, .08);--radius: 8px;--font-mono: "JetBrains Mono", "Fira Code", "SF Mono", monospace;--font-sans: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html,body{height:100%;background:var(--bg-primary);color:var(--text-primary);font-family:var(--font-sans);font-size:14px;line-height:1.5;-webkit-font-smoothing:antialiased}#app{display:flex;flex-direction:column;height:100vh;max-height:100dvh;overflow:hidden}header{display:flex;align-items:center;justify-content:space-between;padding:12px 20px;background:var(--bg-secondary);border-bottom:1px solid var(--border)}header h1{font-size:18px;font-weight:600;letter-spacing:-.02em}#status{display:flex;align-items:center;gap:12px;font-family:var(--font-mono);font-size:12px;color:var(--text-secondary)}.status-badge{display:inline-flex;align-items:center;padding:2px 10px;border-radius:12px;font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.05em}.status-badge.off{background:#ff6b6b26;color:var(--error)}.status-badge.on{background:#78ff7826;color:var(--success)}main{display:flex;flex:1;overflow:hidden}#chart-container{flex:1;padding:16px;min-width:0;display:flex;align-items:center;justify-content:center}#chart{width:100%;height:100%;max-height:500px}.sound-meter-chart{background:var(--bg-secondary)!important;border-radius:var(--radius);border:1px solid var(--border)}.u-legend{font-family:var(--font-mono)!important;font-size:11px!important;padding:4px 8px!important}.u-legend .u-series{padding:2px 6px!important}#controls{width:280px;min-width:280px;padding:16px;background:var(--bg-secondary);border-left:1px solid var(--border);overflow-y:auto;display:flex;flex-direction:column;gap:16px}.control-group{background:var(--bg-tertiary);padding:14px;border-radius:var(--radius);display:flex;flex-direction:column;gap:10px}.control-group h2{font-size:11px;font-weight:600;text-transform:uppercase;letter-spacing:.08em;color:var(--text-secondary)}.control-group label{display:flex;flex-direction:column;gap:4px;font-size:12px;color:var(--text-secondary)}.control-group label span{font-family:var(--font-mono);font-size:11px;color:var(--text-primary)}.btn{padding:8px 16px;border:1px solid var(--border);border-radius:var(--radius);background:var(--bg-secondary);color:var(--text-primary);font-family:var(--font-sans);font-size:13px;font-weight:500;cursor:pointer;transition:all .15s ease}.btn:hover:not(:disabled){background:var(--bg-tertiary);border-color:var(--accent)}.btn:disabled{opacity:.4;cursor:not-allowed}.btn.primary{background:var(--accent);color:var(--bg-primary);border-color:var(--accent);font-weight:600}.btn.primary:hover:not(:disabled){background:var(--accent-hover);border-color:var(--accent-hover)}.btn.active{background:var(--success);color:var(--bg-primary);border-color:var(--success)}select,input[type=number]{padding:6px 10px;background:var(--bg-primary);border:1px solid var(--border);border-radius:6px;color:var(--text-primary);font-family:var(--font-mono);font-size:12px}select:focus,input:focus{outline:none;border-color:var(--accent)}input[type=range]{-webkit-appearance:none;appearance:none;width:100%;height:4px;background:var(--bg-primary);border-radius:2px;outline:none;margin:4px 0}input[type=range]::-webkit-slider-thumb{-webkit-appearance:none;appearance:none;width:14px;height:14px;border-radius:50%;background:var(--accent);cursor:pointer;border:2px solid var(--bg-primary)}input[type=range]:disabled::-webkit-slider-thumb{opacity:.4}.progress-bar{width:100%;height:4px;background:var(--bg-primary);border-radius:2px;overflow:hidden}.progress-fill{height:100%;background:var(--accent);border-radius:2px;transition:width .1s linear;width:0%}.hidden{display:none!important}.notice{font-size:11px;color:var(--text-secondary);line-height:1.6;padding:8px;background:#ffc83c0f;border-radius:6px;border:1px solid rgba(255,200,60,.12)}.error-toast{position:fixed;bottom:20px;left:50%;transform:translate(-50%) translateY(20px);padding:10px 20px;background:var(--error);color:var(--bg-primary);border-radius:var(--radius);font-size:13px;font-weight:500;opacity:0;transition:all .3s ease;z-index:1000;max-width:90vw;text-align:center}.error-toast.visible{opacity:1;transform:translate(-50%) translateY(0)}@media(max-width:768px){main{flex-direction:column}#controls{width:100%;min-width:100%;border-left:none;border-top:1px solid var(--border);flex-direction:row;flex-wrap:wrap;overflow-y:visible;overflow-x:auto;padding:12px;gap:12px}.control-group{flex:1;min-width:200px}#chart-container{min-height:300px}}.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;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}
