*,:before,:after{box-sizing:border-box;margin:0;padding:0}:root{--bg:#0b0c0e;--surface:#131518;--surface2:#1a1c20;--border:#272a2f;--border2:#323640;--text:#dde1e8;--text-muted:#5a5f6b;--text-dim:#8a909e;--accent:#e8ecf2;--success:#4ecb72;--danger:#e05252;--warn:#e0a352;--brand:#3fae59;--brand-dim:#2f9c4c;--radius:6px;--font:"SF Mono", "Fira Code", "Fira Mono", "Cascadia Code", "Consolas", monospace}@media (prefers-color-scheme:light){:root:not([data-theme=dark]){--bg:#f0f1f3;--surface:#fafbfc;--surface2:#f0f1f3;--border:#d4d8e0;--border2:#c0c5cf;--text:#1a1d24;--text-muted:#8a909e;--text-dim:#5a5f6b;--accent:#1a1d24;--success:#2da855;--danger:#c83a3a;--warn:#c47d1a}}:root[data-theme=light]{--bg:#f0f1f3;--surface:#fafbfc;--surface2:#f0f1f3;--border:#d4d8e0;--border2:#c0c5cf;--text:#1a1d24;--text-muted:#8a909e;--text-dim:#5a5f6b;--accent:#1a1d24;--success:#2da855;--danger:#c83a3a;--warn:#c47d1a}body{background:var(--bg);color:var(--text);font-family:var(--font);min-height:100vh;font-size:13px;line-height:1.6}#app{max-width:820px;margin:0 auto;padding:32px 16px 80px}.site-header{background:#0a0a0b;border-bottom:1px solid #000;box-shadow:inset 0 1px #ffffff0a}.site-header-inner{align-items:center;gap:16px;max-width:820px;margin:0 auto;padding:14px 16px;display:flex}.brand-mark{opacity:.94;align-items:center;line-height:0;transition:opacity .15s;display:flex}.brand-mark:hover{opacity:1}.brand-logo{width:auto;height:18px;display:block}.header-divider{background:#ffffff29;flex-shrink:0;width:1px;height:20px}.logo-mark{align-items:center;gap:10px;display:flex}.logo-text{letter-spacing:-.1px;color:#f2f4f7;font-size:13px;font-weight:600}.logo-chip{letter-spacing:1.2px;text-transform:uppercase;color:var(--brand);background:#3fae5914;border:1px solid #3fae5966;border-radius:3px;padding:2px 7px;font-size:10px}.warning-banner{background:color-mix(in srgb, #e0b84a 10%, var(--surface));border:1px solid color-mix(in srgb, #e0b84a 30%, var(--border));border-radius:var(--radius);flex-direction:column;gap:8px;margin-bottom:8px;padding:10px 14px;display:flex}.warning-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.warning-row+.warning-row{border-top:1px dashed color-mix(in srgb, #e0b84a 25%, var(--border));padding-top:8px}.warning-badge{letter-spacing:.5px;color:#6b4f19;background:#f3d98a;border-radius:999px;flex-shrink:0;padding:3px 10px;font-size:10px;font-weight:600}.warning-text{color:var(--text-dim);font-size:12px;line-height:1.5}.warning-text code{font-family:var(--font);color:var(--text);background:color-mix(in srgb, #e0b84a 14%, var(--surface2));border-radius:3px;padding:1px 5px;font-size:11px}.card{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius);margin-bottom:8px;overflow:hidden}.card-header{border-bottom:1px solid var(--border);background:var(--surface2);align-items:center;gap:10px;padding:9px 14px;display:flex}.section-title{letter-spacing:.6px;text-transform:uppercase;color:var(--text-dim);flex:1;font-size:11px}.dot{border-radius:50%;flex-shrink:0;width:7px;height:7px}.dot.disconnected{background:var(--border2)}.dot.connecting{background:var(--warn);animation:1.2s ease-in-out infinite pulse}.dot.connected{background:var(--success);box-shadow:0 0 6px color-mix(in srgb, var(--success) 40%, transparent)}.dot.error{background:var(--danger)}@keyframes pulse{0%,to{opacity:1}50%{opacity:.3}}.card-body{padding:14px}.mode-bar{border-bottom:1px solid var(--border);display:flex}.mode-btn{letter-spacing:.8px;text-transform:uppercase;color:var(--text-muted);cursor:pointer;background:0 0;border:none;border-radius:0;flex:1;padding:8px 0;font-size:11px;font-weight:400;transition:color .15s,background .15s}.mode-btn:hover:not(:disabled){color:var(--text-dim);background:color-mix(in srgb, var(--text) 3%, transparent)}.mode-btn.active{color:var(--text);box-shadow:inset 0 -2px 0 var(--brand);font-weight:600}.mode-btn:disabled{opacity:.35;cursor:not-allowed}.connect-row{flex-wrap:wrap;align-items:flex-end;gap:10px;display:flex}.port-select-wrap{align-items:center;gap:4px;display:flex}.btn-icon{border:1px solid var(--border2);color:var(--text-muted);border-radius:var(--radius);cursor:pointer;background:0 0;justify-content:center;align-items:center;padding:6px 8px;transition:border-color .12s,color .12s;display:flex}.btn-icon:hover{border-color:var(--text-muted);color:var(--text)}.field{flex-direction:column;gap:5px;display:flex}.field-label{letter-spacing:.8px;text-transform:uppercase;color:var(--text-muted);font-size:10px}select,input[type=text]{background:var(--bg);border:1px solid var(--border2);border-radius:var(--radius);color:var(--text);font-family:var(--font);appearance:none;outline:none;padding:6px 10px;font-size:12px}select:disabled,input[type=text]:disabled{background:var(--surface2);color:var(--text-muted);cursor:not-allowed}select{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6' viewBox='0 0 10 6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%235a5f6b' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");background-position:right 8px center;background-repeat:no-repeat;padding-right:24px}input[type=text]{width:130px}.chip-banner{background:color-mix(in srgb, var(--success) 8%, transparent);border:1px solid color-mix(in srgb, var(--success) 22%, transparent);color:var(--success);border-radius:4px;align-items:center;gap:8px;margin-top:10px;padding:8px 12px;font-size:11px;display:flex}button{font-family:var(--font);border-radius:var(--radius);cursor:pointer;white-space:nowrap;border:none;padding:7px 16px;font-size:12px;font-weight:500;transition:opacity .12s,filter .12s}button:disabled{opacity:.3;cursor:not-allowed}.btn-primary{background:var(--accent);color:var(--bg)}.btn-primary:hover:not(:disabled){filter:brightness(.9)}.btn-ghost{border:1px solid var(--border2);color:var(--text-dim);background:0 0}.btn-ghost:hover:not(:disabled){border-color:var(--text-muted);color:var(--text)}.btn-ghost.danger{border-color:color-mix(in srgb, var(--danger) 35%, var(--border));color:var(--danger)}.btn-sm{letter-spacing:.3px;padding:4px 10px;font-size:10px}.toggle-label{cursor:pointer;-webkit-user-select:none;user-select:none;align-items:center;gap:7px;display:flex}.toggle-label input[type=checkbox]{display:none}.toggle-track{background:var(--border2);border-radius:8px;flex-shrink:0;width:28px;height:16px;transition:background .18s;position:relative}.toggle-thumb{background:var(--text-muted);border-radius:50%;width:12px;height:12px;transition:left .18s,background .18s;position:absolute;top:2px;left:2px}.toggle-label input:checked+.toggle-track{background:color-mix(in srgb, var(--success) 30%, var(--border))}.toggle-label input:checked+.toggle-track .toggle-thumb{background:var(--success);left:14px}.toggle-text{letter-spacing:.5px;text-transform:uppercase;color:var(--text-muted);font-size:10px}.combined-row{flex-wrap:wrap;align-items:flex-start;gap:12px;display:flex}.combined-file-field{flex:1;min-width:0}.combined-row .file-size{align-self:flex-end;padding-bottom:7px}.file-pick-row{align-items:center;gap:8px;min-width:0;min-height:33px;display:flex}.file-source-tabs{gap:2px;margin-bottom:6px;display:flex}.src-tab{border:1px solid var(--border);color:var(--text-muted);letter-spacing:.4px;cursor:pointer;background:0 0;border-radius:4px;padding:3px 10px;font-size:10px}.src-tab:first-child{border-top-right-radius:0;border-bottom-right-radius:0}.src-tab:last-child{border-top-left-radius:0;border-bottom-left-radius:0;margin-left:-1px}.src-tab.active{color:var(--bg);background:var(--text);border-color:var(--text)}#remote-file-picker select{flex:1;min-width:0}.partition-table{border-collapse:collapse;width:100%}.partition-table thead th{letter-spacing:.8px;text-transform:uppercase;color:var(--text-muted);text-align:left;border-bottom:1px solid var(--border);padding:6px 10px;font-size:10px;font-weight:400}.partition-table tbody tr{border-bottom:1px solid var(--border)}.partition-table tbody tr:last-child{border-bottom:none}.partition-table tbody td{vertical-align:middle;padding:7px 10px}.offset-chip{color:var(--success);letter-spacing:.3px;font-variant-numeric:tabular-nums;font-size:11px}.file-name{color:var(--text);text-overflow:ellipsis;white-space:nowrap;max-width:260px;font-size:11px;overflow:hidden}.file-name.empty{color:var(--text-muted);font-style:italic}.file-size{color:var(--text-muted);font-variant-numeric:tabular-nums;font-size:10px}.td-actions{align-items:center;gap:6px;display:flex}.btn-pick{border:1px solid var(--border);color:var(--text-muted);cursor:pointer;font-size:10px;font-family:var(--font);letter-spacing:.3px;background:0 0;border-radius:4px;padding:3px 8px}.btn-pick:hover{border-color:var(--border2);color:var(--text)}.btn-remove{color:var(--border2);cursor:pointer;font-size:14px;line-height:1;font-family:var(--font);background:0 0;border:none;border-radius:3px;padding:2px 4px}.btn-remove:hover{color:var(--danger)}.partition-footer{border-top:1px dashed var(--border);justify-content:space-between;align-items:center;padding:8px 10px 6px;display:flex}.drop-hint{color:var(--text-muted);letter-spacing:.3px;align-items:center;gap:5px;font-size:10px;display:flex}#drop-zone{cursor:pointer;border-radius:0 0 var(--radius) var(--radius);transition:background .12s}#drop-zone.drag-over{background:var(--surface2)}.progress-track{background:var(--border);border-radius:2px;height:3px;margin-bottom:12px;overflow:hidden}.progress-fill{background:var(--brand);border-radius:2px;width:0%;height:100%;transition:width .12s linear}.flash-meta{justify-content:space-between;align-items:center;margin-bottom:8px;font-size:11px;display:flex}.flash-status{color:var(--warn);align-items:center;gap:6px;display:flex}.flash-pct{color:var(--text-muted);font-variant-numeric:tabular-nums}.flash-btn-row{justify-content:flex-start;gap:8px;display:flex}.firmware-actions{border-top:1px solid var(--border);padding-top:14px}.log-pre{font-family:var(--font);color:var(--text-muted);white-space:pre-wrap;word-break:break-all;max-height:220px;padding:12px 14px;font-size:11px;line-height:1.75;overflow-y:auto}.log-pre .l-ok{color:var(--success)}.log-pre .l-warn{color:var(--warn)}.log-pre .l-error{color:var(--danger)}.log-pre .l-dim{color:var(--text-muted)}.log-pre::-webkit-scrollbar{width:3px}.log-pre::-webkit-scrollbar-track{background:0 0}.log-pre::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}.monitor-toolbar{flex-wrap:wrap;align-items:flex-end;gap:12px;display:flex}.monitor-hint{color:var(--text-muted);letter-spacing:.3px;flex:1;align-self:flex-end;padding-bottom:2px;font-size:10px}.monitor-btns{align-items:center;gap:8px;display:flex}.monitor-output{font-family:var(--font);color:var(--success);background:color-mix(in srgb, var(--success) 3%, var(--bg));white-space:pre-wrap;word-break:break-all;border-top:1px solid var(--border);max-height:320px;padding:12px 14px;font-size:11px;line-height:1.7;overflow-y:auto}.monitor-output::-webkit-scrollbar{width:3px}.monitor-output::-webkit-scrollbar-track{background:0 0}.monitor-output::-webkit-scrollbar-thumb{background:var(--border2);border-radius:2px}.ctrl-body{flex-direction:column;gap:10px;display:flex}.ctrl-row{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.ctrl-label{letter-spacing:.8px;text-transform:uppercase;color:var(--text-muted);min-width:32px;font-size:10px}.ctrl-wifi-row input[type=text],.ctrl-wifi-row input[type=password]{width:140px}.ctrl-version-info{color:var(--success);letter-spacing:.3px;background:color-mix(in srgb, var(--success) 6%, transparent);border:1px solid color-mix(in srgb, var(--success) 18%, transparent);border-radius:4px;padding:6px 10px;font-size:11px}.hidden{display:none!important}
