@import"https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700;800&family=JetBrains+Mono:wght@400;500;600;700&display=swap";:root{--primary-color: #6366f1;--primary-hover: #4f46e5;--secondary-color: #8b5cf6;--accent-color: #ec4899;--success-color: #10b981;--warning-color: #f59e0b;--danger-color: #ef4444;--bg-color: #f8fafc;--bg-secondary: #f1f5f9;--card-bg: #ffffff;--text-color: #1e293b;--text-secondary: #334155;--text-muted: #64748b;--border-color: #e2e8f0;--shadow-color: rgba(0, 0, 0, .05);--shadow-lg: rgba(0, 0, 0, .1);font-family:Inter,-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Oxygen,Ubuntu,Cantarell,sans-serif;line-height:1.6;font-weight:400;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;color-scheme:light}*,*:before,*:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth}body{min-height:100vh;color:var(--text-color);background:var(--bg-color)}a{font-weight:500;color:var(--primary-color);text-decoration:none;transition:color .2s ease}a:hover{color:var(--primary-hover)}h1,h2,h3,h4,h5,h6{line-height:1.2;font-weight:700;color:var(--text-color)}img{max-width:100%;height:auto;display:block}button{font-family:inherit}code{font-family:JetBrains Mono,Fira Code,monospace}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-track{background:var(--bg-secondary)}::-webkit-scrollbar-thumb{background:#cbd5e1;border-radius:3px}::-webkit-scrollbar-thumb:hover{background:#94a3b8}::selection{background:#6366f133;color:var(--text-color)}:focus-visible{outline:2px solid var(--primary-color);outline-offset:2px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}#app{width:100%;min-height:100vh;padding:1.5rem}.device-card[data-v-b0eb789d]{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:.5rem;padding:1rem}.device-header[data-v-b0eb789d]{margin-bottom:.75rem}.device-name[data-v-b0eb789d]{font-weight:600;font-size:.9rem;color:var(--primary-color)}.device-specs[data-v-b0eb789d]{display:grid;grid-template-columns:repeat(2,1fr);gap:.5rem}.spec-item[data-v-b0eb789d]{display:flex;justify-content:space-between;align-items:center}.spec-label[data-v-b0eb789d]{font-size:.75rem;color:var(--text-muted)}.spec-value[data-v-b0eb789d]{font-size:.75rem;background:#6366f11a;color:var(--primary-color);padding:.125rem .375rem;border-radius:.25rem}.sync-panel[data-v-deb5b49f]{padding:1.5rem}.panel-header[data-v-deb5b49f]{margin-bottom:1.5rem}.panel-title[data-v-deb5b49f]{font-size:1.125rem;font-weight:600;margin:0 0 .25rem}.panel-desc[data-v-deb5b49f]{font-size:.875rem;color:var(--text-muted);margin:0}.section[data-v-deb5b49f]{margin-bottom:1.5rem}.section[data-v-deb5b49f]:last-child{margin-bottom:0}.section-title[data-v-deb5b49f]{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin:0 0 .75rem}.devices-grid[data-v-deb5b49f]{display:grid;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:.75rem}.status-grid[data-v-deb5b49f]{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.75rem}.status-card[data-v-deb5b49f]{display:flex;align-items:center;gap:.75rem;padding:1rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:.5rem}.status-icon[data-v-deb5b49f]{font-size:1.25rem}.status-content[data-v-deb5b49f]{display:flex;flex-direction:column;gap:.125rem}.status-label[data-v-deb5b49f]{font-size:.7rem;text-transform:uppercase;letter-spacing:.03em;color:var(--text-muted)}.status-value[data-v-deb5b49f]{font-size:.95rem;font-weight:600}.text-success[data-v-deb5b49f]{color:var(--success-color)}.text-warning[data-v-deb5b49f]{color:var(--warning-color)}.text-primary[data-v-deb5b49f]{color:var(--primary-color)}.btn[data-v-deb5b49f]{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1.25rem;border:none;border-radius:.375rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.btn[data-v-deb5b49f]:disabled{opacity:.5;cursor:not-allowed}.btn-primary[data-v-deb5b49f]{background:var(--primary-color);color:#fff}.btn-primary[data-v-deb5b49f]:hover:not(:disabled){background:var(--primary-hover)}.hint-text[data-v-deb5b49f]{margin-top:.5rem;font-size:.8rem;color:var(--text-muted)}@media(max-width:640px){.sync-panel[data-v-deb5b49f]{padding:1rem}.devices-grid[data-v-deb5b49f],.status-grid[data-v-deb5b49f]{grid-template-columns:1fr}}.performance-panel[data-v-6491a5a4]{padding:1.5rem}.panel-header[data-v-6491a5a4]{margin-bottom:1.5rem}.panel-title[data-v-6491a5a4]{font-size:1.125rem;font-weight:600;margin:0 0 .25rem}.panel-desc[data-v-6491a5a4]{font-size:.875rem;color:var(--text-muted);margin:0}.section[data-v-6491a5a4]{margin-bottom:1.5rem}.section[data-v-6491a5a4]:last-child{margin-bottom:0}.section-header[data-v-6491a5a4]{display:flex;justify-content:space-between;align-items:center;margin-bottom:1rem}.section-title[data-v-6491a5a4]{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin:0}.section-actions[data-v-6491a5a4]{display:flex;gap:.5rem}.key-selector[data-v-6491a5a4]{background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:.5rem;padding:1rem}.key-grid[data-v-6491a5a4]{display:flex;flex-direction:column;gap:.25rem;margin-bottom:.75rem}.key-row[data-v-6491a5a4]{display:flex;gap:.25rem}.key-btn[data-v-6491a5a4]{min-width:2.5rem;height:2rem;padding:0 .5rem;background:var(--card-bg);border:1px solid var(--border-color);border-radius:.25rem;font-size:.7rem;font-weight:500;color:var(--text-secondary);cursor:pointer;transition:all .15s}.key-btn[data-v-6491a5a4]:hover{background:var(--primary-color);border-color:var(--primary-color);color:#fff}.key-btn.active[data-v-6491a5a4]{background:var(--primary-color);border-color:var(--primary-color);color:#fff;box-shadow:0 0 0 2px #6366f14d}.key-btn.wide[data-v-6491a5a4]{min-width:4rem}.selected-key-info[data-v-6491a5a4]{display:flex;align-items:center;gap:.5rem;padding-top:.75rem;border-top:1px solid var(--border-color);font-size:.8rem}.key-label[data-v-6491a5a4]{color:var(--text-muted)}.key-value[data-v-6491a5a4]{font-weight:600;color:var(--primary-color)}.key-pos[data-v-6491a5a4]{color:var(--text-muted);font-family:JetBrains Mono,monospace;font-size:.7rem}.params-grid[data-v-6491a5a4]{display:flex;flex-direction:column;gap:1rem}.param-item[data-v-6491a5a4]{display:grid;grid-template-columns:140px 1fr;gap:1rem;align-items:center}.param-label[data-v-6491a5a4]{display:flex;flex-direction:column;gap:.125rem}.label-text[data-v-6491a5a4]{font-size:.875rem;font-weight:500;color:var(--text-color)}.label-hint[data-v-6491a5a4]{font-size:.7rem;color:var(--text-muted)}.param-input[data-v-6491a5a4]{display:flex;align-items:center;gap:.75rem}.slider[data-v-6491a5a4]{flex:1;height:4px;background:var(--border-color);border-radius:2px;appearance:none;cursor:pointer}.slider[data-v-6491a5a4]::-webkit-slider-thumb{appearance:none;width:14px;height:14px;background:var(--primary-color);border-radius:50%;cursor:pointer;transition:transform .15s}.slider[data-v-6491a5a4]::-webkit-slider-thumb:hover{transform:scale(1.2)}.number-input[data-v-6491a5a4]{width:70px;padding:.375rem .5rem;background:var(--card-bg);border:1px solid var(--border-color);border-radius:.25rem;font-size:.8rem;font-family:JetBrains Mono,monospace;text-align:right;color:var(--text-color)}.number-input[data-v-6491a5a4]:focus{outline:none;border-color:var(--primary-color)}.unit[data-v-6491a5a4]{font-size:.75rem;color:var(--text-muted);min-width:24px}.switch[data-v-6491a5a4]{position:relative;display:inline-block;width:40px;height:22px}.switch input[data-v-6491a5a4]{opacity:0;width:0;height:0}.switch-slider[data-v-6491a5a4]{position:absolute;cursor:pointer;inset:0;background:var(--border-color);border-radius:22px;transition:.2s}.switch-slider[data-v-6491a5a4]:before{position:absolute;content:"";height:16px;width:16px;left:3px;bottom:3px;background:#fff;border-radius:50%;transition:.2s}.switch input:checked+.switch-slider[data-v-6491a5a4]{background:var(--primary-color)}.switch input:checked+.switch-slider[data-v-6491a5a4]:before{transform:translate(18px)}.switch-label[data-v-6491a5a4]{font-size:.8rem;color:var(--text-muted)}.param-divider[data-v-6491a5a4]{font-size:.7rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);padding:.5rem 0;margin-top:.5rem;border-top:1px solid var(--border-color)}.btn[data-v-6491a5a4]{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1rem;border:none;border-radius:.375rem;font-size:.8125rem;font-weight:500;cursor:pointer;transition:all .2s}.btn[data-v-6491a5a4]:disabled{opacity:.5;cursor:not-allowed}.btn-sm[data-v-6491a5a4]{padding:.375rem .75rem;font-size:.75rem}.btn-primary[data-v-6491a5a4]{background:var(--primary-color);color:#fff}.btn-primary[data-v-6491a5a4]:hover:not(:disabled){background:var(--primary-hover)}.btn-outline[data-v-6491a5a4]{background:transparent;border:1px solid var(--border-color);color:var(--text-secondary)}.btn-outline[data-v-6491a5a4]:hover:not(:disabled){background:var(--bg-secondary)}.hint-text[data-v-6491a5a4]{margin-top:1rem;font-size:.8rem;color:var(--text-muted);text-align:center}@media(max-width:640px){.performance-panel[data-v-6491a5a4]{padding:1rem}.param-item[data-v-6491a5a4]{grid-template-columns:1fr;gap:.5rem}.key-btn[data-v-6491a5a4]{min-width:1.8rem;font-size:.6rem}.key-btn.wide[data-v-6491a5a4]{min-width:2.5rem}}.firmware-panel[data-v-04566685]{padding:1.5rem}.panel-header[data-v-04566685]{margin-bottom:1.5rem}.panel-title[data-v-04566685]{font-size:1.125rem;font-weight:600;margin:0 0 .25rem}.panel-desc[data-v-04566685]{font-size:.875rem;color:var(--text-muted);margin:0}.section[data-v-04566685]{margin-bottom:1.5rem}.section[data-v-04566685]:last-child{margin-bottom:0}.section-title[data-v-04566685]{font-size:.75rem;font-weight:600;text-transform:uppercase;letter-spacing:.05em;color:var(--text-muted);margin:0 0 .75rem}.version-card[data-v-04566685]{display:flex;justify-content:space-between;align-items:center;padding:1rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:.5rem}.version-info[data-v-04566685]{display:flex;flex-direction:column;gap:.125rem}.version-label[data-v-04566685]{font-size:.75rem;color:var(--text-muted)}.version-number[data-v-04566685]{font-size:1.25rem;font-weight:700;font-family:JetBrains Mono,monospace;color:var(--primary-color)}.mode-badge[data-v-04566685]{padding:.375rem .75rem;border-radius:1rem;font-size:.75rem;font-weight:600}.mode-boot[data-v-04566685]{background:#f59e0b1a;color:var(--warning-color)}.mode-app[data-v-04566685]{background:#10b9811a;color:var(--success-color)}.file-selector[data-v-04566685]{position:relative}.file-input[data-v-04566685]{display:none}.file-dropzone[data-v-04566685]{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:2rem;background:var(--bg-secondary);border:2px dashed var(--border-color);border-radius:.5rem;cursor:pointer;transition:all .2s}.file-dropzone[data-v-04566685]:hover{border-color:var(--primary-color);background:#6366f10d}.dropzone-icon[data-v-04566685]{font-size:2.5rem;margin-bottom:.5rem}.dropzone-text[data-v-04566685]{font-size:.95rem;font-weight:500;color:var(--text-color);margin:0 0 .25rem}.dropzone-hint[data-v-04566685]{font-size:.8rem;color:var(--text-muted);margin:0}.file-info[data-v-04566685]{display:flex;align-items:center;justify-content:space-between;padding:1rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:.5rem}.file-details[data-v-04566685]{display:flex;align-items:center;gap:.75rem}.file-icon[data-v-04566685]{font-size:1.5rem}.file-meta[data-v-04566685]{display:flex;flex-direction:column;gap:.125rem}.file-name[data-v-04566685]{font-size:.9rem;font-weight:500;color:var(--text-color)}.file-size[data-v-04566685]{font-size:.75rem;color:var(--text-muted);font-family:JetBrains Mono,monospace}.btn-remove[data-v-04566685]{width:28px;height:28px;display:flex;align-items:center;justify-content:center;background:transparent;border:1px solid var(--border-color);border-radius:.25rem;color:var(--text-muted);cursor:pointer;transition:all .2s}.btn-remove[data-v-04566685]:hover:not(:disabled){background:#ef44441a;border-color:var(--danger-color);color:var(--danger-color)}.btn-remove[data-v-04566685]:disabled{opacity:.5;cursor:not-allowed}.progress-card[data-v-04566685]{padding:1rem;background:var(--bg-secondary);border:1px solid var(--border-color);border-radius:.5rem}.progress-card.status-progress[data-v-04566685]{border-color:var(--primary-color)}.progress-card.status-success[data-v-04566685]{border-color:var(--success-color);background:#10b9810d}.progress-card.status-error[data-v-04566685]{border-color:var(--danger-color);background:#ef44440d}.progress-header[data-v-04566685]{display:flex;justify-content:space-between;align-items:center;margin-bottom:.75rem}.progress-message[data-v-04566685]{font-size:.875rem;font-weight:500;color:var(--text-color)}.progress-percent[data-v-04566685]{font-size:.875rem;font-weight:600;font-family:JetBrains Mono,monospace;color:var(--primary-color)}.status-success .progress-percent[data-v-04566685]{color:var(--success-color)}.status-error .progress-percent[data-v-04566685]{color:var(--danger-color)}.progress-bar[data-v-04566685]{height:6px;background:var(--border-color);border-radius:3px;overflow:hidden}.progress-fill[data-v-04566685]{height:100%;background:var(--primary-color);border-radius:3px;transition:width .3s ease}.status-success .progress-fill[data-v-04566685]{background:var(--success-color)}.status-error .progress-fill[data-v-04566685]{background:var(--danger-color)}.progress-detail[data-v-04566685]{margin-top:.5rem;font-size:.75rem;color:var(--text-muted);font-family:JetBrains Mono,monospace}.btn[data-v-04566685]{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.625rem 1.25rem;border:none;border-radius:.375rem;font-size:.875rem;font-weight:500;cursor:pointer;transition:all .2s}.btn[data-v-04566685]:disabled{opacity:.5;cursor:not-allowed}.btn-lg[data-v-04566685]{padding:.75rem 1.5rem;font-size:.95rem}.btn-primary[data-v-04566685]{background:var(--primary-color);color:#fff}.btn-primary[data-v-04566685]:hover:not(:disabled){background:var(--primary-hover)}.spinner[data-v-04566685]{width:16px;height:16px;border:2px solid rgba(255,255,255,.3);border-top-color:#fff;border-radius:50%;animation:spin-04566685 .8s linear infinite}@keyframes spin-04566685{to{transform:rotate(360deg)}}.hint-text[data-v-04566685]{margin-top:.5rem;font-size:.8rem;color:var(--text-muted)}.warning-box[data-v-04566685]{display:flex;gap:.75rem;padding:1rem;background:#f59e0b0d;border:1px solid rgba(245,158,11,.2);border-radius:.5rem}.warning-icon[data-v-04566685]{font-size:1.25rem;flex-shrink:0}.warning-content[data-v-04566685]{flex:1}.warning-title[data-v-04566685]{font-size:.875rem;font-weight:600;margin:0 0 .5rem;color:var(--warning-color)}.warning-list[data-v-04566685]{margin:0;padding-left:1.25rem;font-size:.8rem;color:var(--text-secondary)}.warning-list li[data-v-04566685]{margin-bottom:.25rem}.warning-list li[data-v-04566685]:last-child{margin-bottom:0}@media(max-width:640px){.firmware-panel[data-v-04566685]{padding:1rem}.version-card[data-v-04566685]{flex-direction:column;gap:.75rem;text-align:center}}.log-panel[data-v-0b1c6df9]{background:var(--card-bg);border:1px solid var(--border-color);border-radius:.5rem;overflow:hidden}.log-header[data-v-0b1c6df9]{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.log-title[data-v-0b1c6df9]{display:flex;align-items:center;gap:.5rem}.title-text[data-v-0b1c6df9]{font-weight:600;font-size:.875rem;color:var(--text-color)}.log-count[data-v-0b1c6df9]{background:var(--primary-color);color:#fff;padding:.125rem .5rem;border-radius:1rem;font-size:.7rem;font-weight:500}.btn-clear[data-v-0b1c6df9]{padding:.375rem .75rem;background:transparent;border:1px solid var(--border-color);border-radius:.375rem;font-size:.8rem;color:var(--text-muted);cursor:pointer;transition:all .2s}.btn-clear[data-v-0b1c6df9]:hover{background:var(--bg-secondary);color:var(--text-color)}.log-content[data-v-0b1c6df9]{height:240px;overflow-y:auto;padding:.5rem}.log-entry[data-v-0b1c6df9]{padding:.5rem .75rem;margin-bottom:.375rem;border-radius:.375rem;border-left:3px solid}.log-send[data-v-0b1c6df9]{background:#3b82f60d;border-left-color:#3b82f6}.log-receive[data-v-0b1c6df9]{background:#10b9810d;border-left-color:#10b981}.log-info[data-v-0b1c6df9]{background:#6b72800d;border-left-color:#6b7280}.log-error[data-v-0b1c6df9]{background:#ef44440d;border-left-color:#ef4444}.log-meta[data-v-0b1c6df9]{display:flex;align-items:center;gap:.5rem;margin-bottom:.25rem}.log-time[data-v-0b1c6df9]{font-family:JetBrains Mono,monospace;font-size:.7rem;color:var(--text-muted)}.log-badge[data-v-0b1c6df9]{font-size:.65rem;font-weight:600;padding:.1rem .35rem;border-radius:.2rem;text-transform:uppercase}.badge-send[data-v-0b1c6df9]{background:#3b82f61a;color:#3b82f6}.badge-receive[data-v-0b1c6df9]{background:#10b9811a;color:#10b981}.badge-info[data-v-0b1c6df9]{background:#6b72801a;color:#6b7280}.badge-error[data-v-0b1c6df9]{background:#ef44441a;color:#ef4444}.log-message[data-v-0b1c6df9]{font-size:.8rem;color:var(--text-secondary)}.log-data[data-v-0b1c6df9]{margin:.25rem 0 0;padding:.5rem;background:var(--bg-secondary);border-radius:.25rem;font-family:JetBrains Mono,monospace;font-size:.65rem;line-height:1.4;overflow-x:auto;color:var(--text-secondary)}.log-empty[data-v-0b1c6df9]{display:flex;align-items:center;justify-content:center;height:100%;color:var(--text-muted);font-size:.875rem}.keyboard-tool[data-v-70e20c79]{max-width:900px;margin:0 auto;display:flex;flex-direction:column;gap:1rem}.app-header[data-v-70e20c79]{text-align:center;padding:.5rem 0 1rem}.app-title[data-v-70e20c79]{font-size:1.5rem;font-weight:700;margin:0 0 .25rem;color:var(--text-color)}.app-subtitle[data-v-70e20c79]{font-size:.875rem;color:var(--text-muted);margin:0}.connection-bar[data-v-70e20c79]{display:flex;justify-content:space-between;align-items:center;padding:.75rem 1rem;background:var(--card-bg);border:1px solid var(--border-color);border-radius:.5rem;box-shadow:0 1px 3px var(--shadow-color)}.connection-status[data-v-70e20c79]{display:flex;align-items:center;gap:.5rem;font-size:.875rem}.status-dot[data-v-70e20c79]{width:8px;height:8px;border-radius:50%}.status-dot.connected[data-v-70e20c79]{background:var(--success-color);box-shadow:0 0 6px #10b98180}.status-dot.disconnected[data-v-70e20c79]{background:#cbd5e1}.status-text[data-v-70e20c79]{font-weight:600;color:var(--text-color)}.status-divider[data-v-70e20c79],.status-info[data-v-70e20c79]{color:var(--text-muted)}.btn[data-v-70e20c79]{display:inline-flex;align-items:center;justify-content:center;padding:.5rem 1rem;border:none;border-radius:.375rem;font-size:.8125rem;font-weight:500;cursor:pointer;transition:all .2s}.btn-primary[data-v-70e20c79]{background:var(--primary-color);color:#fff}.btn-primary[data-v-70e20c79]:hover{background:var(--primary-hover)}.btn-outline[data-v-70e20c79]{background:transparent;border:1px solid var(--border-color);color:var(--text-secondary)}.btn-outline[data-v-70e20c79]:hover{background:var(--bg-secondary);border-color:#cbd5e1}.main-content[data-v-70e20c79]{background:var(--card-bg);border:1px solid var(--border-color);border-radius:.5rem;box-shadow:0 1px 3px var(--shadow-color);overflow:hidden}.tab-nav[data-v-70e20c79]{display:flex;background:var(--bg-secondary);border-bottom:1px solid var(--border-color)}.tab-item[data-v-70e20c79]{flex:1;display:flex;align-items:center;justify-content:center;gap:.375rem;padding:.75rem 1rem;background:transparent;border:none;border-bottom:2px solid transparent;font-size:.875rem;font-weight:500;color:var(--text-muted);cursor:pointer;transition:all .2s}.tab-item[data-v-70e20c79]:hover{color:var(--text-secondary);background:#00000005}.tab-item.active[data-v-70e20c79]{color:var(--primary-color);border-bottom-color:var(--primary-color);background:var(--card-bg)}.tab-icon[data-v-70e20c79]{font-size:1rem}.tab-content[data-v-70e20c79]{min-height:300px}@media(max-width:640px){.keyboard-tool[data-v-70e20c79]{gap:.75rem}.app-title[data-v-70e20c79]{font-size:1.25rem}.connection-bar[data-v-70e20c79]{flex-direction:column;gap:.75rem;text-align:center}.connection-status[data-v-70e20c79]{justify-content:center}.btn[data-v-70e20c79]{width:100%}.tab-name[data-v-70e20c79]{display:none}.tab-icon[data-v-70e20c79]{font-size:1.25rem}}
