:root{--bg: #111;--surface: #1a1a1a;--border: #2e2e2e;--text: #d4d4d4;--muted: #888;--accent: #e8a020;--green: #4caf6e;--red: #cf4f4f;--blue: #4a8fcc;--mono: "JetBrains Mono", "Fira Code", "Cascadia Code", monospace}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--mono);font-size:13px;display:flex;flex-direction:column;height:100dvh;min-height:560px;overflow:auto}header{display:flex;align-items:center;justify-content:space-between;padding:10px 20px;border-bottom:1px solid var(--border);flex-shrink:0}.header-left{display:flex;align-items:center;gap:10px}.logo{font-size:16px;font-weight:700;letter-spacing:2px;color:var(--green)}.subtitle{color:var(--muted);font-size:11px;letter-spacing:1px;text-transform:uppercase}.header-right{display:flex;align-items:center;gap:10px}.dot{width:8px;height:8px;border-radius:50%;display:inline-block;transition:background .3s}.dot.connected{background:var(--green);box-shadow:0 0 6px var(--green)}.dot.disconnected{background:var(--muted)}#status-text{color:var(--muted);font-size:11px}button{font-family:var(--mono);font-size:12px;padding:5px 12px;border:1px solid var(--border);border-radius:3px;cursor:pointer;background:var(--surface);color:var(--text);transition:background .15s,border-color .15s}button:hover:not(:disabled){background:#252525;border-color:#444}button:disabled{opacity:.35;cursor:not-allowed}#connect-btn{border-color:var(--green);color:var(--green)}#connect-btn:hover:not(:disabled){background:#4caf6e1a}.btn-primary{border-color:var(--green);color:var(--green)}.btn-primary:hover:not(:disabled){background:#4caf6e1a}.btn-accent{border-color:var(--accent);color:var(--accent)}.btn-accent:hover:not(:disabled){background:#e8a0201a}.btn-secondary{border-color:var(--blue);color:var(--blue)}.btn-secondary:hover:not(:disabled){background:#4a8fcc1a}.btn-ghost{border-color:transparent;color:var(--muted);background:transparent}.btn-ghost:hover:not(:disabled){color:var(--text)}.send-btn{font-size:11px;padding:3px 8px;min-width:36px}.send-btn-dirty{border-color:var(--accent);color:var(--accent)}.send-btn-dirty:hover:not(:disabled){background:#e8a0201a}.banner{padding:10px 20px;font-size:12px;flex-shrink:0}.banner.error{background:#cf4f4f26;border-bottom:1px solid var(--red);color:var(--red)}.banner.update{background:#e8a0201f;border-bottom:1px solid var(--amber,#e8a020);color:var(--amber,#e8a020)}.banner.update a{color:inherit;font-weight:600}main{display:flex;flex:1;overflow:hidden;gap:0}.controls{width:320px;flex-shrink:0;border-right:1px solid var(--border);display:flex;flex-direction:column;overflow-y:auto;padding:16px;gap:20px}.actions{display:flex;flex-wrap:wrap;gap:6px}.param-groups{display:flex;flex-direction:column;gap:20px}.param-group h3{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-bottom:10px;border-bottom:1px solid var(--border);padding-bottom:4px}.param-row{display:grid;grid-template-columns:90px 1fr auto;align-items:center;gap:8px;margin-bottom:8px}.param-row label{color:var(--muted);font-size:12px;white-space:nowrap}.param-row input[type=number]{font-family:var(--mono);font-size:13px;background:var(--bg);border:1px solid var(--border);border-radius:3px;color:var(--text);padding:4px 8px;width:100%;text-align:right}.param-row input[type=number]:focus{outline:none;border-color:var(--green)}.param-row input[type=number]:disabled{opacity:.4}input[type=number]::-webkit-inner-spin-button,input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.log-panel{flex:1;min-height:0;display:grid;grid-template-rows:auto 1fr auto;overflow:hidden}.log-header{display:flex;align-items:center;justify-content:space-between;padding:8px 16px;border-bottom:1px solid var(--border);color:var(--muted);font-size:11px;letter-spacing:1px;text-transform:uppercase}.log{min-height:0;overflow-y:auto;padding:10px 16px;font-size:12px;line-height:1.6;display:flex;flex-direction:column;gap:1px;max-height:calc(100dvh - 170px)}.log-line{white-space:pre;display:flex;gap:8px}.log-line.sent{color:#888}.log-line.sent .arrow{color:var(--muted)}.log-line.recv{color:var(--text)}.log-line.recv .arrow{color:var(--green)}.log-line.info{color:var(--blue);font-style:italic}.log-line.err{color:var(--red)}.log-line .ts{color:#444;flex-shrink:0;-webkit-user-select:none;user-select:none;font-size:10px;align-self:center}.log-input{border-top:1px solid var(--border);padding:8px 16px;display:flex;align-items:center;gap:8px}.prompt{color:var(--accent);-webkit-user-select:none;user-select:none}#manual-input{flex:1;font-family:var(--mono);font-size:13px;background:transparent;border:none;color:var(--text);outline:none}#manual-input::placeholder{color:#444}#manual-input:disabled{opacity:.4}::-webkit-scrollbar{width:4px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border);border-radius:2px}.device-info{font-size:10px;color:var(--muted);letter-spacing:1px;padding:0 8px;border-left:1px solid var(--border);border-right:1px solid var(--border)}.logo-svg{height:16px;width:auto}.tab-bar{display:flex;gap:2px;margin-right:8px}.tab-bar button{font-size:11px;padding:4px 10px;letter-spacing:1px;text-transform:uppercase}.tab-bar button.active{border-color:var(--green);color:var(--green)}.btn-bootloader{border-color:var(--red);color:var(--red)}.btn-bootloader:hover:not(:disabled){background:#cf4f4f1a}.wizard{display:flex;flex-direction:column;flex:1;overflow:hidden}.step-indicator{display:flex;border-bottom:1px solid var(--border);flex-shrink:0}.step-dot{display:flex;flex-direction:column;align-items:center;padding:10px 24px;gap:3px;color:var(--muted);font-size:11px;border-right:1px solid var(--border);cursor:default;transition:color .2s}.step-dot.active{color:var(--green);border-bottom:2px solid var(--green)}.step-dot.done{color:var(--green)}.step-num{font-size:18px;font-weight:700;line-height:1}.step-label{text-transform:uppercase;letter-spacing:1px}.connect-prompt{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:20px}.connect-prompt-label{color:var(--muted);font-size:12px;letter-spacing:1px;margin-top:40px}.btn-connect-large{font-size:13px;padding:10px 32px;border-color:var(--green);color:var(--green);letter-spacing:2px;text-transform:uppercase}.btn-connect-large:hover:not(:disabled){background:#4caf6e1a}.connect-hint{font-size:11px;color:var(--muted);text-align:center;max-width:300px;line-height:1.5;margin:0}.firmware-section{display:flex;flex-direction:column;align-items:center;gap:14px;margin-top:12px;border-top:1px solid var(--border);padding-top:24px;width:100%;max-width:420px}.btn-fw-download{font-size:12px;text-decoration:none;display:inline-block}.firmware-instructions{width:100%;background:var(--surface);border:1px solid var(--border);border-radius:6px;padding:14px 18px;font-size:12px;color:var(--muted);line-height:1.7}.fw-instruction-heading{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin:0 0 8px}.firmware-instructions ol{margin:0;padding-left:18px}.firmware-instructions li{margin-bottom:4px}.firmware-instructions strong{color:var(--text)}.firmware-instructions code{font-family:var(--mono);color:var(--green)}.step-body{flex:1;min-height:0;display:flex;flex-direction:column;gap:20px;padding:24px 28px;overflow-y:auto;max-width:800px}.instructions{background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:16px 20px}.instructions h2{font-size:11px;color:var(--accent);margin-bottom:12px;letter-spacing:2px;text-transform:uppercase}.instructions ol{padding-left:18px;color:var(--muted);line-height:2.2;font-size:12px}.step-actions{display:flex;gap:8px}.progress-wrap{display:flex;flex-direction:column;gap:6px}.progress-label{font-size:11px;color:var(--muted);letter-spacing:1px;text-transform:uppercase}.progress-bar{height:4px;background:var(--border);border-radius:2px;overflow:hidden}.progress-fill{height:100%;background:var(--accent);border-radius:2px;transition:width .3s ease}.result{display:flex;flex-direction:column;gap:14px}.result-info{font-size:11px;color:var(--muted)}.fail-hint{font-size:12px;color:var(--red);background:#cf4f4f14;border:1px solid rgba(207,79,79,.3);border-radius:3px;padding:8px 12px;line-height:1.6}.badge{display:inline-block;font-size:12px;font-weight:700;letter-spacing:3px;padding:5px 14px;border-radius:3px;text-transform:uppercase}.badge.pass{background:#4caf6e1f;color:var(--green);border:1px solid var(--green)}.badge.fail{background:#cf4f4f1f;color:var(--red);border:1px solid var(--red)}.panel-guide{height:240px;background:#0d0d0d;border:1px solid var(--border);border-radius:4px;overflow:hidden;-webkit-user-select:none;user-select:none;flex-shrink:0}@keyframes ring-pulse{0%,to{opacity:.8}50%{opacity:1}}.knob-ring{animation:ring-pulse 2s ease-in-out infinite}.chart-wrap{background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:14px}.value-readout{background:var(--surface);border:1px solid var(--border);border-radius:4px;padding:14px 16px;display:flex;flex-direction:column;gap:8px}.readout-row{display:flex;justify-content:space-between;font-size:12px}.readout-label{color:var(--muted)}.readout-val{color:var(--text);font-weight:600}.step-nav{display:flex;gap:8px;margin-top:4px}.manual-tune{border-top:1px solid var(--border);padding-top:12px}.manual-tune h3{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin:0 0 8px}.tune-params{display:flex;flex-wrap:wrap;gap:8px}.tune-param{display:flex;flex-direction:column;gap:4px;flex:1;min-width:90px}.tune-param label{font-size:11px;color:var(--muted);white-space:nowrap}.tune-input{display:flex;gap:4px}.tune-input input[type=number]{font-family:var(--mono);font-size:12px;background:var(--bg);border:1px solid var(--border);border-radius:3px;color:var(--text);padding:3px 6px;width:100%;min-width:0;text-align:right}.tune-input input[type=number]:focus{outline:none;border-color:var(--green)}.report-headline{font-size:11px;letter-spacing:3px;text-transform:uppercase;color:var(--green);font-weight:700}.report-device-info{display:flex;gap:24px;padding:10px 14px;background:var(--surface);border:1px solid var(--border);border-radius:3px;flex-wrap:wrap}.report-device-field{display:flex;gap:8px;align-items:baseline}.report-device-label{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted)}.report-device-val{font-size:12px;color:var(--text);letter-spacing:1px}.report-rows{display:flex;flex-direction:column;gap:10px}.report-row{display:grid;grid-template-columns:44px auto 1fr;align-items:center;gap:12px}.report-step{color:var(--muted);font-size:11px;letter-spacing:2px;text-transform:uppercase}.report-detail{color:var(--muted);font-size:11px}.report-overall{margin-top:4px}.badge-lg{font-size:13px;letter-spacing:4px;padding:6px 16px}.device-meta{display:flex;flex-direction:column;gap:4px;padding:10px 12px;background:var(--bg);border:1px solid var(--border);border-radius:3px;font-size:11px}.device-meta-row{display:flex;justify-content:space-between;gap:8px}.device-meta-label{color:var(--muted);letter-spacing:1px;text-transform:uppercase}.device-meta-val{color:var(--text);font-size:11px;text-align:right;word-break:break-all}.cal-dialog-backdrop{position:fixed;top:0;right:0;bottom:0;left:0;background:#000000b8;display:flex;align-items:center;justify-content:center;z-index:100}.cal-dialog{background:var(--bg);border:1px solid var(--border);border-radius:4px;width:min(680px,96vw);max-height:88vh;display:flex;flex-direction:column;overflow:hidden}.cal-dialog-header{display:flex;align-items:center;justify-content:space-between;padding:10px 16px;border-bottom:1px solid var(--border);flex-shrink:0}.cal-dialog-title{font-size:11px;letter-spacing:2px;text-transform:uppercase;color:var(--accent)}.cal-dialog-close{font-size:14px;padding:2px 6px}.cal-dialog-body{overflow-y:auto;flex:1}.quick-cal-row{display:flex;flex-wrap:wrap;gap:6px}.params-group{margin-bottom:1rem}.params-group:last-child{margin-bottom:0}.params-group-label{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--accent);margin-bottom:4px}.params-row{display:flex;justify-content:space-between;padding:3px 0;border-bottom:1px solid var(--border);font-size:12px}.params-row:last-child{border-bottom:none}.params-key{color:var(--muted)}.params-val{font-variant-numeric:tabular-nums}.auto-measure-dialog{max-width:320px}.auto-measure-body{display:flex;flex-direction:column;gap:10px;padding:1.25rem 1.5rem}.auto-measure-hint{font-size:11px;color:var(--muted)}.login-dialog{max-width:340px}.login-form{display:flex;flex-direction:column;gap:1rem;padding:1.25rem 1.5rem}.login-field{display:flex;flex-direction:column;gap:5px}.login-label{font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--muted)}.login-input{font-family:var(--mono);font-size:13px;background:var(--bg);border:1px solid var(--border);border-radius:3px;color:var(--text);padding:6px 10px;width:100%}.login-input:focus{outline:none;border-color:var(--green)}.login-input:disabled{opacity:.4}.login-input:-webkit-autofill,.login-input:-webkit-autofill:hover,.login-input:-webkit-autofill:focus{-webkit-box-shadow:0 0 0px 1000px var(--bg) inset;-webkit-text-fill-color:var(--text);caret-color:var(--text)}.login-actions{display:flex;justify-content:flex-end;gap:6px;padding-top:4px}.devices-section-label{font-size:10px;letter-spacing:2px;text-transform:uppercase;color:var(--muted);margin-bottom:.5rem}.devices-table{width:100%;border-collapse:collapse;font-size:12px}.devices-table th{text-align:left;padding:6px 10px;font-size:10px;letter-spacing:1px;text-transform:uppercase;color:var(--muted);border-bottom:1px solid var(--border);white-space:nowrap}.devices-table td{padding:8px 10px;border-bottom:1px solid var(--border);vertical-align:middle}.devices-table tbody tr:hover{background:#ffffff06}.uid-cell{font-size:11px;color:var(--muted);letter-spacing:1px}.val-cell{font-variant-numeric:tabular-nums}.val-pass{color:var(--green)}.val-fail{color:var(--red)}.clickable{cursor:pointer;text-decoration:underline dotted;text-underline-offset:3px}.row-active{background:#4caf6e0f}.active-flag-cell{width:24px;text-align:center;padding:8px 4px}.active-flag{color:var(--green);font-size:14px;line-height:1}.active-flag-btn{color:#444;font-size:14px;padding:0 2px;line-height:1;background:none;border:none;cursor:pointer}.active-flag-btn:hover{color:var(--green)}.save-confirm{margin-top:12px;font-size:12px;color:var(--green);background:#4caf6e14;border:1px solid var(--green);border-radius:4px;padding:10px 14px}@keyframes knob-pulse-65459d72{0%{transform:scale(1);opacity:.8}to{transform:scale(2.2);opacity:0}}.knob-pulse[data-v-65459d72]{transform-box:fill-box;transform-origin:center;animation:knob-pulse-65459d72 1.8s ease-out infinite}.auto-root[data-v-b8bd5830]{flex:1;min-height:0;overflow-y:auto;display:flex;flex-direction:column;gap:20px;padding:24px 28px}.auto-phase-container[data-v-b8bd5830]{max-width:760px;width:100%;align-self:center;display:flex;flex-direction:column;gap:20px}.auto-guide-wrap[data-v-b8bd5830]{height:460px;width:100%;flex-shrink:0}.auto-guide-wrap.auto-guide-sm[data-v-b8bd5830]{height:320px}.auto-guide-wrap[data-v-b8bd5830] .panel-guide{height:100%}.auto-instructions h2[data-v-b8bd5830]{font-size:11px;color:var(--accent);margin-bottom:12px;letter-spacing:2px;text-transform:uppercase}.auto-instr-group[data-v-b8bd5830]{margin-bottom:.75rem}.auto-instr-group[data-v-b8bd5830]:last-child{margin-bottom:0}.auto-instr-group h3[data-v-b8bd5830]{font-size:10px;font-weight:700;letter-spacing:.1em;text-transform:uppercase;color:var(--muted);margin:0 0 4px}.auto-instr-group ol[data-v-b8bd5830]{margin:0;padding-left:18px;font-size:12px;color:var(--muted);line-height:2}.auto-checklist[data-v-b8bd5830]{display:flex;flex-direction:column;gap:6px}.auto-check-row[data-v-b8bd5830]{display:grid;grid-template-columns:1.6rem 4rem 1fr;align-items:center;gap:10px;padding:.5rem .75rem;border-radius:5px;background:var(--surface);border:1px solid var(--border);font-size:.88rem}.auto-check-row.running[data-v-b8bd5830]{border-color:#e8a02055}.auto-check-row.pass[data-v-b8bd5830]{border-color:#4caf6e59}.auto-check-row.fail[data-v-b8bd5830]{border-color:#cf4f4f59}.check-icon[data-v-b8bd5830]{text-align:center;font-weight:700;line-height:1}.ci-pass[data-v-b8bd5830]{color:var(--green)}.ci-fail[data-v-b8bd5830]{color:var(--red)}.ci-spin[data-v-b8bd5830]{color:var(--accent);display:inline-block;animation:spin-b8bd5830 .9s linear infinite}.ci-pending[data-v-b8bd5830]{color:#444}@keyframes spin-b8bd5830{to{transform:rotate(360deg)}}.check-label[data-v-b8bd5830]{font-weight:700;letter-spacing:.08em;text-transform:uppercase;color:var(--text);font-size:.8rem}.check-status[data-v-b8bd5830]{display:flex;align-items:center;gap:.6rem;min-width:0}.running-label[data-v-b8bd5830]{font-size:.78rem;color:var(--accent);white-space:nowrap}.ci-pending-label[data-v-b8bd5830]{font-size:.78rem;color:#555}.check-detail[data-v-b8bd5830]{font-size:.78rem;color:var(--muted)}.check-bar[data-v-b8bd5830]{flex:1;min-width:60px;max-width:200px;margin:0}.auto-step-cards[data-v-b8bd5830]{display:flex;flex-direction:column;gap:10px}.auto-step-card[data-v-b8bd5830]{background:var(--surface);border:1px solid var(--border);border-radius:5px;overflow:hidden}.auto-step-card-head[data-v-b8bd5830]{display:flex;align-items:center;gap:10px;padding:.6rem 1rem;border-bottom:1px solid var(--border);flex-wrap:wrap}.auto-step-actions[data-v-b8bd5830]{margin-left:auto;display:flex;gap:.35rem}.btn-sm[data-v-b8bd5830]{font-size:.72rem;padding:.2rem .55rem}.auto-step-params[data-v-b8bd5830]{display:flex;flex-wrap:wrap;gap:8px;padding:.75rem 1rem}.auto-step-params .tune-param[data-v-b8bd5830]{flex:1;min-width:110px;max-width:200px}.report-container[data-v-b8bd5830]{max-width:760px;width:100%;display:flex;flex-direction:column;gap:20px}.auto-step-chart[data-v-b8bd5830]{padding:.5rem 1rem 0}.save-error[data-v-b8bd5830]{color:var(--red);font-size:.85rem;font-weight:600;padding:.5rem .75rem;border:1px solid var(--red);border-radius:4px;background:#cf4f4f14}.step-slide-forward-enter-active[data-v-32692f9c],.step-slide-forward-leave-active[data-v-32692f9c],.step-slide-back-enter-active[data-v-32692f9c],.step-slide-back-leave-active[data-v-32692f9c]{transition:transform .18s ease,opacity .18s ease}.step-slide-forward-enter-from[data-v-32692f9c]{transform:translate(32px);opacity:0}.step-slide-forward-leave-to[data-v-32692f9c],.step-slide-back-enter-from[data-v-32692f9c]{transform:translate(-32px);opacity:0}.step-slide-back-leave-to[data-v-32692f9c]{transform:translate(32px);opacity:0}.mode-picker[data-v-32692f9c]{display:flex;flex-direction:column;align-items:center;gap:1.5rem;padding:2.5rem 1rem}.mode-picker-title[data-v-32692f9c]{font-size:1.1rem;font-weight:600;color:#ddd;margin:0}.mode-cards[data-v-32692f9c]{display:flex;gap:1.25rem;flex-wrap:wrap;justify-content:center}.mode-card[data-v-32692f9c]{display:flex;flex-direction:column;align-items:center;gap:.5rem;width:200px;padding:1.5rem 1.25rem;background:#1a1a1a;border:1.5px solid #333;border-radius:10px;cursor:pointer;transition:border-color .15s,background .15s;text-align:center}.mode-card[data-v-32692f9c]:hover{border-color:#e8a020;background:#1e1a0e}.mode-card-icon[data-v-32692f9c]{font-size:1.8rem;color:#e8a020;line-height:1}.mode-card-label[data-v-32692f9c]{font-size:.95rem;font-weight:700;color:#eee}.mode-card-desc[data-v-32692f9c]{font-size:.78rem;color:#888;line-height:1.4}.manual-layout[data-v-6fb2a00e]{display:flex;flex:1;overflow:hidden}.param-hint[data-v-6fb2a00e]{font-size:.75rem;opacity:.55;margin-top:2px;padding-left:2px}.devices-page[data-v-3341249f]{flex:1;padding:1.5rem;overflow:auto}.devices-header[data-v-3341249f]{display:flex;align-items:center;gap:1rem;margin-bottom:1.5rem}.devices-header h2[data-v-3341249f]{margin:0}.table-footnote[data-v-3341249f]{margin:.5rem 0 1.5rem;font-size:.8rem;color:#888}.banner-bootloader-btn[data-v-e089a908]{margin-left:.6rem;font-size:11px;padding:2px 8px}
