.uplot,.uplot *,.uplot :before,.uplot :after{box-sizing:border-box}.uplot{width:min-content;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}.u-title{text-align:center;font-size:18px;font-weight:700}.u-wrap{-webkit-user-select:none;user-select:none;position:relative}.u-over,.u-under{position:absolute}.u-under{overflow:hidden}.uplot canvas{width:100%;height:100%;display:block;position:relative}.u-axis{position:absolute}.u-legend{text-align:center;margin:auto;font-size:14px}.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{pointer-events:none;background:#00000012;position:absolute}.u-cursor-x,.u-cursor-y{pointer-events:none;will-change:transform;position:absolute;top:0;left:0}.u-hz .u-cursor-x,.u-vt .u-cursor-y{border-right:1px dashed #607d8b;height:100%}.u-hz .u-cursor-y,.u-vt .u-cursor-x{border-bottom:1px dashed #607d8b;width:100%}.u-cursor-pt{pointer-events:none;will-change:transform;border:0 solid;border-radius:50%;position:absolute;top:0;left:0;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{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark only;--bg:#070b10;--surface:#0d131b;--surface-2:#121a24;--surface-3:#182230;--border:#1f2a37;--border-strong:#2b394a;--text:#e6edf3;--text-muted:#8b9bb0;--text-dim:#5d6b7c;--accent:#22d3ee;--accent-2:#a3e635;--danger:#fb7185;--warning:#fbbf24;--ok:#34d399;--axis-x:#22d3ee;--axis-y:#fbbf24;--axis-z:#e879f9;--dmd-good:#34d399;--dmd-elevated:#fbbf24;--dmd-high:#fb923c;--dmd-bad:#fb7185;--grid:#ffffff0f;--grid-strong:#ffffff1f;--fill:#22d3ee1a;--glow:#22d3ee40;--glow-strong:#22d3ee59;--radius-sm:8px;--radius:12px;--radius-lg:16px;--shadow:0 10px 30px #00000059;--font-ui:system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;--font-mono:ui-monospace, SFMono-Regular, "Cascadia Code", monospace;--motion:.15s ease-out}:root[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light only;--bg:#f4f6f9;--surface:#fff;--surface-2:#eaeef4;--surface-3:#dfe6ee;--border:#ccd5e0;--border-strong:#b0bccb;--text:#16202b;--text-muted:#52637a;--text-dim:#7a8899;--accent:#0e7490;--accent-2:#4d7c0f;--danger:#e11d48;--warning:#b45309;--ok:#047857;--axis-x:#0e7490;--axis-y:#b45309;--axis-z:#a21caf;--dmd-good:#047857;--dmd-elevated:#b45309;--dmd-high:#c2410c;--dmd-bad:#be123c;--grid:#16202b1a;--grid-strong:#16202b2e;--fill:#0e74901f;--glow:#0e749029;--glow-strong:#0e749038;--shadow:0 10px 30px #0f172a24}@media (prefers-reduced-motion:reduce){:root{--motion:0s}}*,:before,:after{box-sizing:border-box}html,body{height:100%;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-ui);-webkit-font-smoothing:antialiased;font-size:14px;line-height:1.45}#app{height:100%}h1,h2,h3,p{margin:0}button{font:inherit;color:inherit}a{color:var(--accent);text-decoration:none}.tabular{font-variant-numeric:tabular-nums;font-family:var(--font-mono)}:focus-visible{outline:2px solid var(--accent);outline-offset:2px;border-radius:4px}.sr-only{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.linklike{color:var(--text-muted);cursor:pointer;text-decoration:underline;-webkit-text-decoration-color:var(--border-strong);text-decoration-color:var(--border-strong);background:0 0;border:0;padding:0}.linklike:hover{color:var(--accent)}.app-shell{flex-direction:column;height:100%;display:flex}.app-header{z-index:30;background:color-mix(in srgb, var(--surface) 88%, transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);border-bottom:1px solid var(--border);align-items:center;gap:12px;padding:10px 16px;display:flex;position:sticky;top:0}.brand{color:var(--accent);align-items:center;gap:8px;display:inline-flex}.brand-word{letter-spacing:.18em;font-size:15px;font-weight:700}.source-badge{letter-spacing:.08em;border:1px solid var(--border);color:var(--text-muted);border-radius:999px;align-items:center;gap:6px;padding:3px 8px;font-size:11px;font-weight:700;display:inline-flex}.source-badge-demo{border-color:var(--warning);color:var(--warning)}.dot{border-radius:50%;width:8px;height:8px;display:inline-block}.dot-ok{background:var(--ok);box-shadow:0 0 6px var(--ok)}.dot-warn{background:var(--warning)}.dot-danger{background:var(--danger);box-shadow:0 0 6px var(--danger)}.dot-idle{background:var(--text-dim)}.header-device{color:var(--text-muted);text-overflow:ellipsis;white-space:nowrap;max-width:22ch;font-size:12px;overflow:hidden}.header-chip{border:1px solid var(--border);color:var(--text-muted);border-radius:999px;padding:2px 8px;font-size:11px}.header-chip-danger{border-color:var(--danger);color:var(--danger)}.header-spacer{flex:1}.app-main{flex:1;overflow:auto}.dashboard{grid-template-columns:minmax(0,1fr) 340px;align-items:start;gap:16px;padding:16px;display:grid}.dashboard-main{flex-direction:column;gap:12px;min-width:0;display:flex}.chart-grid-wrap{flex-direction:column;gap:8px;display:flex}.chart-grid-bar{align-items:center;gap:8px;min-height:28px;display:flex}.fft-trace-controls{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.chart-grid{grid-template-rows:repeat(3,minmax(220px,1fr));grid-template-columns:minmax(0,1fr) minmax(0,1fr);grid-auto-flow:column;gap:12px;height:calc(100vh - 320px);min-height:660px;display:grid}.chart-grid-compact{grid-template-rows:none;grid-template-columns:minmax(0,1fr);grid-auto-flow:row;height:auto;min-height:0}.landing{flex-direction:column;gap:24px;max-width:1500px;margin:0 auto;padding:32px 24px 48px;display:flex}.landing-hero{text-align:center;flex-direction:column;align-items:center;gap:12px;padding-top:24px;display:flex}.landing-title{letter-spacing:.3em;color:var(--accent);text-shadow:0 0 24px var(--glow-strong);font-size:44px;font-weight:800}.landing-subtitle{color:var(--text-muted);font-size:17px}.landing-actions{flex-wrap:wrap;justify-content:center;gap:12px;margin-top:8px;display:flex}.landing-note{color:var(--text-dim);font-size:13px}.landing-demo{flex-direction:column;gap:12px;display:flex}.demo-badge-row{justify-content:center;display:flex}.landing-footer{color:var(--text-dim);justify-content:center;gap:8px;font-size:13px;display:flex}.status-strip{border-top:1px solid var(--border);background:var(--surface);color:var(--text-muted);flex-shrink:0;align-items:center;gap:18px;padding:6px 16px;font-size:12px;display:flex}.status-strip b{color:var(--text);font-weight:600}.status-spacer{flex:1}.status-dim{color:var(--text-dim)}.status-danger{color:var(--danger)}.status-warning{color:var(--warning)}@media (max-width:1439px){.dashboard{grid-template-columns:minmax(0,1fr)}.settings-drawer{z-index:40;height:100%;transition:transform var(--motion);box-shadow:var(--shadow);border-radius:0;width:min(380px,92vw);position:fixed;top:0;right:0;transform:translate(100%)}.settings-drawer.settings-drawer-open{transform:translate(0)}}@media (max-width:1099px){.chart-grid:not(.chart-grid-compact){flex-direction:column;height:auto;min-height:0;display:flex}.chart-grid:not(.chart-grid-compact) .chart-time:first-child{order:1}.chart-grid:not(.chart-grid-compact) .chart-fft:nth-child(4){order:2}.chart-grid:not(.chart-grid-compact) .chart-time:nth-child(2){order:3}.chart-grid:not(.chart-grid-compact) .chart-fft:nth-child(5){order:4}.chart-grid:not(.chart-grid-compact) .chart-time:nth-child(3){order:5}.chart-grid:not(.chart-grid-compact) .chart-fft:nth-child(6){order:6}.chart-grid:not(.chart-grid-compact) .chart-panel{height:300px}.header-device{display:none}}@media (max-width:759px){.app-header{gap:8px;padding:8px 10px}.header-chip,.brand-word{display:none}.dashboard{gap:10px;padding:10px}.landing{padding:16px 12px 40px}.landing-title{font-size:32px}.chart-grid-compact .chart-panel{height:280px}.status-strip{white-space:nowrap;gap:10px;overflow-x:auto}}.btn{border-radius:var(--radius-sm);border:1px solid var(--border-strong);background:var(--surface-2);color:var(--text);cursor:pointer;transition:background var(--motion), border-color var(--motion);white-space:nowrap;justify-content:center;align-items:center;gap:6px;padding:7px 14px;font-size:13px;display:inline-flex}.btn:hover:not(:disabled){background:var(--surface-3);border-color:var(--text-dim)}.btn:disabled{opacity:.45;cursor:not-allowed}.btn-accent{background:color-mix(in srgb, var(--accent) 16%, var(--surface-2));border-color:var(--accent);color:var(--accent)}.btn-accent:hover:not(:disabled){background:color-mix(in srgb, var(--accent) 26%, var(--surface-2))}.btn-danger{background:color-mix(in srgb, var(--danger) 14%, var(--surface-2));border-color:var(--danger);color:var(--danger)}.btn-small{padding:4px 10px;font-size:12px}.btn-icon{padding:6px 8px}.input{background:var(--surface-2);border:1px solid var(--border-strong);color:var(--text);border-radius:var(--radius-sm);font-size:13px;font-family:var(--font-mono);width:110px;padding:6px 10px}.input:focus{outline:2px solid var(--accent);outline-offset:1px}.field-row{color:var(--text-muted);justify-content:space-between;align-items:center;gap:10px;font-size:13px;display:flex}.checkbox-row{color:var(--text-muted);cursor:pointer;align-items:center;gap:8px;font-size:13px;display:flex}.checkbox-row input{accent-color:var(--accent)}.section-label{letter-spacing:.1em;text-transform:uppercase;color:var(--text-dim);margin-bottom:8px;font-size:11px;font-weight:700}.badge{letter-spacing:.06em;text-transform:uppercase;border-radius:999px;padding:2px 7px;font-size:10px;font-weight:700}.badge-warn{border:1px solid var(--warning);color:var(--warning)}.badge-demo{border:1px solid var(--warning);color:var(--warning);padding:4px 12px;font-size:11px}.stat-hero{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-wrap:wrap;align-items:center;gap:24px;padding:12px 16px;display:flex}.stat-primary{align-items:baseline;gap:8px;display:flex}.stat-rpm{color:var(--accent);opacity:.8;margin-right:4px;font-size:20px;font-weight:700}.stat-rpm-unit{color:var(--text-muted);margin-left:3px;font-size:12px;font-weight:400}.stat-value{color:var(--accent);text-shadow:0 0 18px var(--glow);font-size:34px;font-weight:700}.stat-unit{color:var(--text-muted)}.stat-caption{color:var(--text-dim);margin-left:6px;font-size:12px}.stat-spark{flex-shrink:0;width:160px;height:32px}.stat-secondary{color:var(--text-muted);gap:16px;font-size:13px;display:flex}.stat-secondary b{color:var(--text)}.peak-cards{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-areas:"peaks vib trace";gap:12px;display:grid}.peak-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);grid-area:peaks;min-width:0;padding:10px 14px;overflow:hidden}.peak-title{letter-spacing:.08em;color:var(--text-dim);text-transform:uppercase;margin-bottom:6px;font-size:11px;font-weight:700}.peak-rows{--peak-freq-w:4ch;--peak-amp-w:5ch;grid-template-columns:max-content var(--peak-freq-w) max-content var(--peak-amp-w) max-content max-content var(--peak-freq-w) max-content var(--peak-amp-w) max-content var(--peak-freq-w) max-content var(--peak-amp-w);align-items:baseline;gap:3px 4px;font-size:13px;display:grid}.peak-axis{width:14px;font-weight:700}.peak-axis-x{color:var(--axis-x)}.peak-axis-y{color:var(--axis-y)}.peak-axis-z{color:var(--axis-z)}.peak-freq,.peak-amp{color:var(--text);text-align:right;white-space:nowrap}.peak-unit{color:var(--text-muted);white-space:nowrap}.peak-sep{color:var(--text-dim);margin:0 2px}.fft-trace-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;grid-area:trace;justify-content:center;gap:8px;min-width:0;padding:10px 14px;display:flex;overflow:hidden}.fft-trace-card .fft-trace-controls{flex-wrap:wrap;align-items:center;gap:6px;display:flex}.vibration-card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);grid-area:vib;min-width:0;padding:8px 12px;overflow:hidden}.vib-rows{flex-direction:column;gap:4px;display:flex}.vib-row{grid-template-columns:max-content minmax(0,1fr) auto auto;align-items:baseline;column-gap:8px;font-size:12px;display:grid}.vib-label{letter-spacing:.06em;color:var(--text-dim);text-transform:uppercase;white-space:nowrap;font-size:11px;font-weight:700}.vib-freq{color:var(--text-muted);white-space:nowrap;text-overflow:ellipsis;font-size:12px;overflow:hidden}.vib-value{color:var(--text);text-align:right;white-space:nowrap;font-size:16px;font-weight:700;line-height:1.15}.vib-unit{color:var(--text-muted);white-space:nowrap;font-size:11px}.vib-hint{color:var(--text-dim);margin-top:4px;font-size:11px;line-height:1.25}.vib-link{margin-left:4px;font-size:11px}@media (max-width:1439px){.peak-cards{grid-template-columns:repeat(3,minmax(0,1fr));grid-template-areas:"peaks peaks vib""trace trace vib"}}@media (max-width:1099px){.peak-cards{grid-template-columns:minmax(0,1fr);grid-template-areas:"peaks""vib""trace"}}@media (min-width:1440px) and (max-width:1599px){.peak-card{padding:10px 12px}.peak-rows{column-gap:2px;font-size:12px}.peak-axis{width:12px}.peak-sep{margin:0 1px}}.chart-panel{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;min-height:200px;display:flex;position:relative;overflow:hidden}.chart-header{border-bottom:1px solid var(--border);align-items:center;gap:8px;padding:8px 12px;font-size:12px;display:flex}.chart-dot{border-radius:50%;width:8px;height:8px}.chart-dot-x{background:var(--axis-x)}.chart-dot-y{background:var(--axis-y)}.chart-dot-z{background:var(--axis-z)}.chart-title{font-weight:600}.chart-caption{color:var(--text-muted);margin-left:auto;font-size:13px}.chart-host{cursor:zoom-in;flex:1;min-height:150px}.chart-expand{color:var(--text-muted);padding:2px 7px;font-size:15px;line-height:1}.chart-expand:hover:not(:disabled){color:var(--accent)}.chart-modal-backdrop{z-index:70}.floating-window.chart-modal{flex-direction:column;width:min(1400px,96vw);max-width:min(1400px,96vw);height:min(90vh,960px);max-height:min(90vh,960px);display:flex;overflow:hidden}.chart-modal .chart-header{gap:10px;padding:10px 14px}.chart-modal-range{color:var(--text-muted);white-space:nowrap;font-size:11px}.chart-modal-controls{align-items:center;gap:6px;display:flex}.chart-modal-body{flex-direction:column;flex:1;gap:8px;min-height:0;padding:8px 10px 10px;display:flex;position:relative}.chart-modal-chart{flex:50%;min-height:0;position:relative}.chart-modal-body .chart-host{cursor:crosshair;height:100%;min-height:0}.chart-modal-body .chart-empty{inset:0}.chart-waterfall{background:var(--surface);border-radius:var(--radius-sm);flex:50%;min-height:90px;position:relative;overflow:hidden}.chart-waterfall-canvas{width:100%;height:100%;display:block}.chart-waterfall-cursor{background:color-mix(in srgb, var(--accent) 60%, transparent);pointer-events:none;width:1px;display:none;position:absolute;top:0;bottom:0}.chart-waterfall-empty{color:var(--text-dim);pointer-events:none;justify-content:center;align-items:center;font-size:12px;display:flex;position:absolute;inset:0}.chart-waterfall-note{background:color-mix(in srgb, var(--surface-2) 85%, transparent);color:var(--text-dim);pointer-events:none;border-radius:999px;padding:1px 6px;font-size:10px;position:absolute;bottom:4px;right:8px}.chart-modal-scale{min-width:36px}@media (max-width:760px){.chart-modal .chart-header{flex-wrap:wrap;row-gap:6px}.chart-modal-range{display:none}.chart-modal-controls{margin-left:auto}}.chart-empty{color:var(--text-dim);background:color-mix(in srgb, var(--surface) 70%, transparent);pointer-events:none;justify-content:center;align-items:center;font-size:13px;display:flex;position:absolute;inset:37px 0 0}.axis-tabs{border:1px solid var(--border-strong);border-radius:var(--radius-sm);display:inline-flex;overflow:hidden}.axis-tab{background:var(--surface-2);cursor:pointer;border:0;padding:4px 14px;font-size:12px}.axis-tab-active{background:color-mix(in srgb, var(--accent) 20%, var(--surface-2));color:var(--accent)}.settings-drawer{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);flex-direction:column;gap:16px;max-height:calc(100vh - 118px);padding:12px 16px 20px;display:flex;position:sticky;top:0;overflow-y:auto}.drawer-head{letter-spacing:.06em;text-transform:uppercase;color:var(--text-muted);justify-content:space-between;align-items:center;font-size:12px;font-weight:700;display:flex}.settings-drawer .drawer-head{display:none}@media (max-width:1439px){.settings-drawer .drawer-head{display:flex}}.drawer-section{border-bottom:1px solid var(--border);flex-direction:column;gap:8px;padding-bottom:14px;display:flex}.drawer-section:last-child{border-bottom:0}.drawer-buttons{flex-wrap:wrap;gap:8px;display:flex}.source-mode-row{gap:6px;display:inline-flex}.source-status{color:var(--text-muted);font-size:12px}.demo-note{color:var(--warning)}.setting-warning{color:var(--warning);border:1px solid color-mix(in srgb, var(--warning) 40%, transparent);border-radius:var(--radius-sm);padding:6px 8px;font-size:12px}.file-drop{border:1.5px dashed var(--border-strong);border-radius:var(--radius);cursor:pointer;text-align:center;transition:border-color var(--motion), background var(--motion);flex-direction:column;align-items:center;gap:4px;padding:18px;display:flex}.file-drop:hover,.file-drop-active{border-color:var(--accent);background:color-mix(in srgb, var(--accent) 6%, transparent)}.file-drop-compact{padding:10px}.file-drop-title{font-size:13px;font-weight:600}.file-drop-hint,.file-drop-busy{color:var(--text-muted);font-size:12px}.burst-select .input{width:100%}.burst-meta{color:var(--text-muted);font-size:11.5px;font-family:var(--font-mono);flex-direction:column;gap:2px;margin-top:6px;display:flex}.export-panel{flex-direction:column;gap:8px;display:flex}.export-preview{color:var(--text-muted);overflow-wrap:anywhere;font-size:11px}.export-auto{color:var(--text);font-family:var(--font-mono);font-size:12px}.export-buttons{flex-wrap:wrap;gap:8px;display:flex}.export-status{font-size:12px}.export-status-ok{color:var(--ok)}.export-status-error{color:var(--danger)}.esc-panel{flex-direction:column;gap:8px;display:flex}.esc-label{align-items:center;gap:8px;display:flex}.esc-status{color:var(--text-muted);font-size:13px}.esc-running{color:var(--danger);font-weight:700}.esc-rpm{font-size:13px}.esc-dim{color:var(--text-dim)}.esc-power-buttons{flex-wrap:wrap;gap:6px;display:flex}.esc-actions{gap:8px;display:flex}.esc-stop{letter-spacing:.1em;flex:1;padding:10px 14px;font-weight:800}.esc-diagnostic{font-family:var(--font-mono);color:var(--text-dim);overflow-wrap:anywhere;max-height:64px;font-size:10.5px;overflow-y:auto}.esc-mode-switch{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface-1);gap:6px;padding:3px;display:flex}.esc-mode-switch .btn{border-color:#0000;flex:1}.esc-mode-switch .btn-accent{border-color:var(--accent)}.fettec-steps{color:var(--text-dim);flex-wrap:wrap;align-items:center;gap:4px;margin:0;padding:0;font-size:10px;list-style:none;display:flex}.fettec-step{border:1px solid var(--border);white-space:nowrap;border-radius:999px;align-items:center;gap:4px;padding:2px 6px;display:inline-flex}.fettec-step-index{background:var(--surface-3);border-radius:50%;justify-content:center;align-items:center;width:13px;height:13px;font-size:9px;font-weight:700;display:inline-flex}.fettec-step-active{color:var(--accent);border-color:var(--accent)}.fettec-step-active .fettec-step-index{background:var(--accent);color:var(--surface-1)}.fettec-step-done{color:var(--ok);border-color:color-mix(in srgb, var(--ok) 55%, var(--border))}.fettec-step-done .fettec-step-index{background:color-mix(in srgb, var(--ok) 30%, var(--surface-3));color:var(--ok)}.fettec-paused{border:1px solid var(--warning);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--warning) 10%, var(--surface-1));color:var(--warning);flex-wrap:wrap;align-items:center;gap:8px;padding:8px 10px;font-size:12px;display:flex}.fettec-table-wrap{border:1px solid var(--border);border-radius:var(--radius-sm);overflow-x:auto}.fettec-table{border-collapse:collapse;width:100%;font-size:10.5px;font-family:var(--font-mono);white-space:nowrap}.fettec-table th,.fettec-table td{text-align:right;border-bottom:1px solid var(--border);padding:4px 6px}.fettec-table th{color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;font-size:9.5px;font-weight:600}.fettec-table th:nth-child(-n+4),.fettec-table td:nth-child(-n+4){text-align:left}.fettec-table tbody tr:last-child td{border-bottom:0}.fettec-row-stale td{color:var(--text-dim)}.fettec-serial{text-overflow:ellipsis;max-width:92px;overflow:hidden}.fettec-missing{color:var(--danger);font-weight:700}.fettec-row-problem td{color:var(--warning)}.fettec-problem{color:var(--warning);font-weight:700}.fettec-echo-fallbacks{color:var(--warning)}.fettec-rx-debug{color:var(--text-dim);text-overflow:ellipsis;white-space:nowrap;margin-top:4px;font-size:11px;overflow:hidden}.fettec-verdict{letter-spacing:.04em;border:1px solid;border-radius:999px;margin-left:3px;padding:0 4px;font-size:9px;font-weight:700;display:inline-block}.fettec-verdict-onewire{color:var(--ok)}.fettec-verdict-fc-pin{color:var(--warning)}.fettec-verdict-no-onewire{color:var(--danger)}.fettec-verdict-unknown{color:var(--text-dim)}.fettec-motors{flex-direction:column;gap:4px;display:flex}.fettec-motor{align-items:center;gap:6px;display:flex}.fettec-motor-label{width:20px;color:var(--text-muted);font-size:11px;font-weight:700}.fettec-slider{min-width:40px;accent-color:var(--accent);flex:1}.fettec-motor-input{width:58px;padding:3px 6px;font-size:11px}.fettec-motor-rpm{text-align:right;width:64px;color:var(--text-dim);font-size:10px}.fettec-apply{align-items:center;gap:8px;display:flex}.fettec-apply .field-row{flex:1}.fettec-apply .input{width:64px}.fettec-crosscheck{border-top:1px solid var(--border);flex-direction:column;gap:5px;padding-top:4px;display:flex}.fettec-summary{font-size:12px;font-weight:600}.fettec-summary-ok{color:var(--ok)}.fettec-summary-warn{color:var(--warning)}.fettec-verdicts{flex-direction:column;gap:2px;margin:0;padding:0;font-size:11px;list-style:none;display:flex}.fettec-msp-check{color:var(--text-muted);overflow-wrap:anywhere;font-size:10.5px}.fettec-stats{color:var(--text-dim);flex-wrap:wrap;gap:4px 10px;font-size:10px;display:flex}.fettec-settings-note{font-size:10.5px;line-height:1.35}.fettec-cli-input{width:100%;max-width:190px;font-size:10.5px}.fettec-scale-details{color:var(--text-muted);font-size:12px}.fettec-scale-details summary{cursor:pointer;color:var(--text-dim);margin:4px 0}.fettec-scale-details .field-row{margin:4px 0}.modal-backdrop{z-index:60;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);background:#02060c66;justify-content:center;align-items:center;padding:16px;display:flex;position:fixed;inset:0}.modal{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow);width:100%;max-width:560px;max-height:88vh;overflow:auto}.modal-title{padding:16px 20px 0;font-size:16px;font-weight:700}.modal-title-danger{color:var(--danger)}.modal-body{flex-direction:column;gap:12px;padding:14px 20px 20px;display:flex}.modal-note{color:var(--text-muted);font-size:12.5px}.modal-warning{color:var(--warning);font-size:13px}.modal-error{color:var(--danger);border:1px solid color-mix(in srgb, var(--danger) 40%, transparent);border-radius:var(--radius-sm);padding:8px 10px;font-size:13px}.modal-actions{flex-wrap:wrap;gap:10px;margin-top:4px;display:flex}.modal-settings{max-width:780px}.settings-title{justify-content:space-between;align-items:center;gap:12px;display:flex}.settings-grid{grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:20px;display:grid}.settings-column{flex-direction:column;gap:8px;display:flex}.settings-field-wide{align-items:flex-start}.settings-scale-grid{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:8px 20px;display:grid}.modal-settings .fettec-settings-note{font-size:12px}.modal-settings .fettec-cli-input{width:100%;max-width:420px;font-size:12px}.connect-ports{flex-direction:column;gap:6px;display:flex}.connect-port-row{background:var(--surface-3);border:1px solid var(--border);border-radius:var(--radius-sm);cursor:pointer;color:var(--text);justify-content:space-between;align-items:center;gap:10px;padding:8px 12px;display:flex}.connect-port-row:hover:not(:disabled){border-color:var(--accent)}.connect-port-action{color:var(--accent);font-size:12px}.about-list{grid-template-columns:110px 1fr;gap:6px 12px;margin:0;font-size:13px;display:grid}.about-list dt{color:var(--text-dim)}.about-list dd{margin:0}.toast-stack{z-index:70;flex-direction:column;gap:8px;max-width:380px;display:flex;position:fixed;bottom:44px;right:16px}.toast{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-sm);box-shadow:var(--shadow);border-left-width:3px;align-items:flex-start;gap:10px;padding:10px 12px;animation:.16s ease-out toast-in;display:flex}@keyframes toast-in{0%{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}.toast-info{border-left-color:var(--accent)}.toast-success{border-left-color:var(--ok)}.toast-warn{border-left-color:var(--warning)}.toast-error{border-left-color:var(--danger)}.toast-title{font-size:13px;font-weight:600}.toast-message{color:var(--text-muted);margin-top:2px;font-size:12px}.toast-actions{gap:4px;margin-left:auto;display:flex}.update-prompt{z-index:65;background:var(--surface-2);border:1px solid var(--accent);box-shadow:var(--shadow);border-radius:999px;align-items:center;gap:10px;padding:6px 14px;font-size:13px;display:flex;position:fixed;top:58px;left:50%;transform:translate(-50%)}.floating-window{background:var(--surface-2);border:1px solid var(--border-strong);border-radius:var(--radius-lg);box-shadow:var(--shadow);flex-direction:column;min-width:0;display:flex;position:fixed;overflow:hidden}.floating-titlebar{background:var(--surface-3);border-bottom:1px solid var(--border);cursor:move;-webkit-user-select:none;user-select:none;touch-action:none;align-items:center;gap:8px;padding:9px 12px;display:flex}.floating-title{white-space:nowrap;text-overflow:ellipsis;flex:1;min-width:0;font-size:15px;font-weight:700;overflow:hidden}.floating-actions{flex-shrink:0;align-items:center;gap:4px;display:flex}.floating-body{flex-direction:column;flex:1;min-height:0;display:flex;overflow:auto}.floating-body>.modal-body{flex:1}.floating-resize{cursor:nwse-resize;touch-action:none;background:linear-gradient(135deg, transparent 45%, var(--border-strong) 45%, var(--border-strong) 60%, transparent 60%);opacity:.8;width:18px;height:18px;position:absolute;bottom:0;right:0}.floating-titlebar .chart-header{background:0 0;border-bottom:0;flex:1;min-width:0;padding:0}.uplot{font-family:var(--font-mono)}.uplot .u-cursor-x,.uplot .u-cursor-y{border-color:var(--border-strong)}.modal-sweep{max-width:620px}.sweep-config{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:8px 20px;display:grid}.sweep-summary{color:var(--text-dim);font-size:12px}.sweep-progress{flex-direction:column;gap:6px;display:flex}.sweep-progress-bar{background:var(--surface-3);border:1px solid var(--border);border-radius:999px;height:6px;overflow:hidden}.sweep-progress-bar span{background:var(--accent);height:100%;transition:width .12s linear;display:block}.sweep-status{color:var(--text-muted);font-size:12px}.sweep-table-wrap{border:1px solid var(--border);border-radius:var(--radius-sm);max-height:260px;overflow:auto}.sweep-table{border-collapse:collapse;width:100%;font-size:12px;font-family:var(--font-mono);white-space:nowrap}.sweep-table caption{caption-side:top;text-align:left;color:var(--text-dim);font-size:11px;font-family:var(--font-sans,inherit);padding:6px 8px}.sweep-table th,.sweep-table td{text-align:left;border-bottom:1px solid var(--border);padding:4px 8px}.sweep-table th{background:var(--surface-2);color:var(--text-dim);text-transform:uppercase;letter-spacing:.05em;font-size:9.5px;font-weight:600;position:sticky;top:0}.sweep-sort-btn{color:inherit;font:inherit;text-transform:inherit;letter-spacing:inherit;cursor:pointer;background:0 0;border:0;align-items:center;gap:4px;padding:0;display:inline-flex}.sweep-sort-btn:hover{color:var(--text)}.sweep-table th[aria-sort=ascending],.sweep-table th[aria-sort=descending]{color:var(--accent)}.sweep-sort-arrow{opacity:.7;font-size:8px}.sweep-table tbody tr:last-child td{border-bottom:0}.sweep-row-best td{background:color-mix(in srgb, var(--accent) 12%, transparent)}.sweep-bar-cell{align-items:center;gap:8px;width:45%;display:flex}.sweep-bar{background:color-mix(in srgb, var(--accent) 65%, transparent);border-radius:999px;min-width:2px;height:6px;display:block}.sweep-best-tag{color:var(--accent);text-transform:uppercase;letter-spacing:.06em;font-size:10px}.sweep-winner{border:1px solid color-mix(in srgb, var(--accent) 45%, transparent);border-radius:var(--radius-sm);background:color-mix(in srgb, var(--accent) 8%, var(--surface-1));flex-direction:column;gap:4px;padding:10px 12px;font-size:13px;display:flex}.sweep-running-note{color:var(--text-muted);font-size:12px}.dmd-header-dot{background:var(--accent);width:6px;height:6px;box-shadow:0 0 6px var(--glow-strong);border-radius:50%;margin-left:2px}.dmd-window .floating-body,.dmd-body{gap:12px;padding:12px 16px 16px}.dmd-demo-banner{border:1px solid var(--warning);border-radius:var(--radius-sm);color:var(--warning);background:color-mix(in srgb, var(--warning) 9%, transparent);padding:8px 10px;font-size:12px}.dmd-runline{flex-wrap:wrap;align-items:center;gap:12px;display:flex}.dmd-uav .input{width:170px}.dmd-run-date{color:var(--text-muted);font-size:12px}.dmd-map-wrap{flex-direction:column;gap:6px;display:flex}.dmd-map{aspect-ratio:1;background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);width:min(100%,360px);margin:0 auto;position:relative;overflow:hidden}.dmd-map-svg{width:100%;height:100%;position:absolute;inset:0}.dmd-map-arm{stroke:var(--border-strong);stroke-width:1.5px}.dmd-map-body{fill:var(--surface-3);stroke:var(--border-strong);stroke-width:1.2px}.dmd-map-front{fill:var(--accent)}.dmd-map-front-label{fill:var(--text-dim);font-size:4px;font-family:var(--font-ui);letter-spacing:.15em}.dmd-map-note{color:var(--text-dim);text-align:center;font-size:11px}.dmd-chip{z-index:1;border:1px solid var(--border-strong);background:var(--surface-2);width:88px;color:var(--text);cursor:pointer;font-family:var(--font-mono);transition:border-color var(--motion), background var(--motion);border-radius:8px;flex-direction:column;align-items:center;gap:1px;padding:3px 6px;line-height:1.15;display:flex;position:absolute;transform:translate(-50%,-50%)}.dmd-chip:hover:not(:disabled){border-color:var(--accent);background:var(--surface-3)}.dmd-chip:disabled{opacity:.45;cursor:not-allowed}.dmd-chip-id{font-size:12px;font-weight:700}.dmd-chip-pos{letter-spacing:.08em;text-transform:uppercase;color:var(--text-dim);margin-left:4px;font-size:8px;font-weight:400}.dmd-chip-status{color:var(--text-muted);white-space:nowrap;font-size:9px}.dmd-chip-done{border-width:2px}.dmd-chip-active{outline:2px solid var(--accent);outline-offset:1px}.dmd-chip-offbus{border-style:dashed}.dmd-band-good{--band:var(--dmd-good)}.dmd-band-elevated{--band:var(--dmd-elevated)}.dmd-band-high{--band:var(--dmd-high)}.dmd-band-bad{--band:var(--dmd-bad)}.dmd-band-none{--band:var(--text-dim)}.dmd-chip[class*=dmd-band-]{border-color:var(--band);background:color-mix(in srgb, var(--band) 8%, var(--surface-2))}.dmd-chip[class*=dmd-band-] .dmd-chip-status{color:var(--band)}.dmd-band-chip{border:1px solid var(--band,var(--border));color:var(--band,var(--text-muted));background:color-mix(in srgb, var(--band,transparent) 12%, transparent);font-size:11px;font-family:var(--font-mono);white-space:nowrap;border-radius:999px;padding:2px 8px;display:inline-block}.dmd-running-panel{border:1px solid color-mix(in srgb, var(--accent) 50%, transparent);border-radius:var(--radius);background:color-mix(in srgb, var(--accent) 7%, var(--surface));flex-wrap:wrap;align-items:center;gap:10px;padding:10px 12px;font-size:13px;display:flex}.dmd-save-panel{border:1px solid color-mix(in srgb, var(--accent) 50%, transparent);border-radius:var(--radius);background:color-mix(in srgb, var(--accent) 7%, var(--surface));flex-direction:column;gap:10px;padding:12px;display:flex}.dmd-save-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;font-size:13px;display:flex}.dmd-trim{align-items:center;gap:6px;display:flex}.dmd-trim-slider{min-width:110px;accent-color:var(--accent);flex:1}.dmd-trim-value{text-align:right;width:66px;color:var(--text);font-size:13px}.dmd-trim-presets{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.dmd-save-hint{color:var(--text-muted);font-size:11.5px}.dmd-summary{flex-direction:column;gap:6px;display:flex}.dmd-table-wrap{border:1px solid var(--border);border-radius:var(--radius-sm);max-height:230px;overflow:auto}.dmd-table{border-collapse:collapse;width:100%;font-size:12px;font-family:var(--font-mono);white-space:nowrap}.dmd-table th,.dmd-table td{text-align:left;border-bottom:1px solid var(--border);padding:5px 8px}.dmd-table th{background:var(--surface-2);color:var(--text-dim);letter-spacing:.05em;text-transform:uppercase;font-size:9.5px;font-weight:600;position:sticky;top:0}.dmd-table tbody tr:last-child td{border-bottom:0}.dmd-row-done td{background:color-mix(in srgb, var(--accent) 5%, transparent)}.dmd-footer{border-top:1px solid var(--border);flex-wrap:wrap;align-items:center;gap:12px;padding-top:4px;display:flex}.dmd-progress{color:var(--text-muted);font-size:12px}.dmd-export-status{color:var(--text-muted);font-size:11.5px}.dmd-export-error{color:var(--danger)}.dmd-viewer-body{padding:10px 14px 14px}.dmd-viewer{flex-direction:column;gap:10px;min-height:0;display:flex}.dmd-viewer-head{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:10px;font-size:13px;display:flex}.dmd-viewer-image{border:1px solid var(--border);border-radius:var(--radius-sm);background:var(--surface);width:100%;height:auto}.dmd-viewer-table .sweep-table-wrap{max-height:190px}@media (max-width:720px){.dmd-trim{flex-wrap:wrap}.dmd-trim-slider{flex-basis:100%}}
