*{box-sizing:border-box}:root{font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,sans-serif;line-height:1.5;font-weight:400;color-scheme:dark;color:#fafafa;background-color:#0a0a0a;font-synthesis:none;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}body{margin:0;min-width:320px;min-height:100vh}#root{height:100vh}h1,h2,h3,h4,h5,h6{margin:0}button,input{font-family:inherit}.permission-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.permission-dialog{background:#2d2d2d;border-radius:12px;padding:32px;max-width:420px;width:90%;text-align:center;box-shadow:0 4px 24px #0006}.permission-icon{color:#4ec9b0;margin-bottom:16px}.permission-title{color:#fff;font-size:1.5rem;margin:0 0 12px;font-weight:600}.permission-description{color:#b0b0b0;font-size:.95rem;line-height:1.5;margin:0 0 20px}.permission-error{color:#f48771;font-size:.9rem;margin:0 0 16px;padding:8px 12px;background:#f487711a;border-radius:6px}.permission-button{background:#4ec9b0;color:#1e1e1e;border:none;padding:12px 32px;font-size:1rem;font-weight:600;border-radius:6px;cursor:pointer;transition:background .2s ease}.permission-button:hover{background:#3db89f}.permission-button:active{background:#2ca78e}.permission-note{color:gray;font-size:.8rem;margin:16px 0 0}.connection-status{display:flex;align-items:center;gap:8px;padding:8px 16px;border-radius:6px;font-size:.9rem;font-weight:500}.status-indicator{width:10px;height:10px;border-radius:50%;flex-shrink:0}.status-text{white-space:nowrap}.status-connected{background:#4ec9b026;color:#4ec9b0}.status-connected .status-indicator{background:#4ec9b0;box-shadow:0 0 8px #4ec9b099}.status-connecting{background:#dcdcaa26;color:#dcdcaa}.status-connecting .status-indicator{background:#dcdcaa;animation:pulse 1s ease-in-out infinite}.status-disconnected{background:#80808026;color:gray}.status-disconnected .status-indicator{background:gray}.status-error{background:#f4877126;color:#f48771}.status-error .status-indicator{background:#f48771}@keyframes pulse{0%,to{opacity:1}50%{opacity:.4}}.mode-selector{display:flex;gap:4px;background:#2d2d2d;padding:4px;border-radius:6px}.mode-button{padding:6px 16px;border:1px solid transparent;background:transparent;color:#71717a;cursor:pointer;border-radius:4px;font-size:14px;transition:all .2s}.mode-button:hover:not(:disabled){background:#3d3d3d;color:#ccc}.mode-button.active{background:#3f3f46;color:#fafafa;border:1px solid #52525b;box-shadow:0 1px 3px #0000004d}.mode-button:disabled{opacity:.5;cursor:not-allowed}.dfu-panel{background:#252525;border-radius:8px;padding:16px;border:1px solid #333}.dfu-panel h3{margin:0 0 12px;font-size:14px;color:#a0a0a0;text-transform:uppercase;letter-spacing:.5px}.dfu-warning{color:#a0a0a0;font-size:13px;padding:12px;background:#1e1e1e;border-radius:6px;border:1px dashed #444;text-align:center}.dfu-version{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#1e1e1e;border-radius:6px;margin-bottom:12px}.dfu-label{color:#a0a0a0;font-size:13px}.dfu-value{color:#4ec9b0;font-size:13px;font-family:monospace}.dfu-file-section{margin-bottom:12px}.dfu-file-label{display:flex;align-items:center;gap:10px;cursor:pointer}.dfu-file-input{display:none}.dfu-file-button{display:inline-block;padding:6px 14px;background:#3a3a3a;color:#e0e0e0;border-radius:4px;font-size:13px;white-space:nowrap;transition:background .15s}.dfu-file-label:hover .dfu-file-button{background:#4a4a4a}.dfu-file-name{color:#a0a0a0;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dfu-caution{color:#f59e0b;font-size:12px;padding:8px 12px;background:#f59e0b1a;border:1px solid rgba(245,158,11,.3);border-radius:6px;margin-bottom:12px;text-align:center}.dfu-progress-section{margin-bottom:12px}.dfu-progress-bar{width:100%;height:8px;background:#1e1e1e;border-radius:4px;overflow:hidden;margin-bottom:6px}.dfu-progress-fill{height:100%;background:#3b82f6;border-radius:4px;transition:width .3s ease}.dfu-progress-fill.complete{background:#4ade80}.dfu-progress-fill.failed{background:#ef4444}.dfu-status{color:#a0a0a0;font-size:12px;text-align:center}.dfu-status.complete{color:#4ade80}.dfu-status.failed{color:#ef4444}.dfu-error{color:#ef4444;font-size:12px;text-align:center;margin-top:4px;padding:6px 10px;background:#ef44441a;border-radius:4px}.dfu-new-version{color:#4ec9b0;font-size:13px;text-align:center;margin-top:6px;font-family:monospace}.dfu-actions{display:flex;gap:8px}.dfu-flash-btn{flex:1;padding:10px 16px;background:#3b82f6;color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:background .15s}.dfu-flash-btn:hover:not(:disabled){background:#2563eb}.dfu-flash-btn:disabled{background:#333;color:#666;cursor:not-allowed}.dfu-reset-btn{flex:1;padding:10px 16px;background:#3a3a3a;color:#e0e0e0;border:none;border-radius:6px;font-size:14px;font-weight:500;cursor:pointer;transition:background .15s}.dfu-reset-btn:hover{background:#4a4a4a}.dfu-flash-btn:focus-visible,.dfu-reset-btn:focus-visible{outline:2px solid #3b82f6;outline-offset:2px}:root{--col-1-width: 12fr;--col-2-width: 3fr;--col-3-width: 5fr;--row-1-height: 2fr;--row-2-height: 2fr;--row-3-height: 1fr;--bg-app: #0a0a0a;--bg-panel: #111111;--bg-card: #161616;--bg-input: #1a1a1a;--bg-hover: #252525;--text-primary: #fafafa;--text-secondary: #a1a1aa;--text-muted: #71717a;--text-accent: #22d3ee;--border-subtle: #1f1f1f;--border-default: #2a2a2a;--border-strong: #3a3a3a;--state-active: #10b981;--state-active-bg: #052e16;--state-active-border: #065f46;--state-inactive: #a1a1aa;--state-inactive-bg: #27272a;--state-inactive-border: #3f3f46;--state-error: #ef4444;--state-error-bg: #450a0a;--state-warning: #f59e0b;--state-info: #3b82f6;--state-pending: #eab308;--temp-cold: #3b82f6;--temp-cool: #06b6d4;--temp-warm: #f59e0b;--temp-hot: #dc2626;--font-display: 115px;--font-xxl: 24px;--font-xl: 20px;--font-lg: 18px;--font-md: 15px;--font-sm: 14px;--font-xs: 12px;--font-xxs: 10px;--font-sans: "Inter", system-ui, -apple-system, sans-serif;--font-mono: "JetBrains Mono", "Consolas", monospace;--panel-padding: 24px;--grid-gap: 16px;--card-padding: 20px;--radius-sm: 6px;--radius-md: 10px;--radius-lg: 14px;--transition-fast: .2s ease;--transition-normal: .3s ease;--transition-slow: .5s ease-out}.hts-user-grid{display:grid;grid-template-columns:var(--col-1-width) var(--col-2-width) var(--col-3-width);grid-template-rows:var(--row-1-height) var(--row-2-height) var(--row-3-height);grid-template-areas:"temp-control temp-bar system-info" "temp-control temp-bar handpiece" "controller-status temp-bar branding";gap:var(--grid-gap);height:100%;min-height:450px;min-width:800px}.hts-user-grid .grid-temp-control{grid-area:temp-control}.hts-user-grid .grid-temp-bar{grid-area:temp-bar}.hts-user-grid .grid-system-info{grid-area:system-info}.hts-user-grid .grid-handpiece{grid-area:handpiece}.hts-user-grid .grid-controller-status{grid-area:controller-status}.hts-user-grid .grid-branding{grid-area:branding}.hts-user-grid>div{background:linear-gradient(145deg,var(--bg-card) 0%,#131313 100%);border:1px solid var(--border-subtle);border-radius:var(--radius-lg);padding:var(--card-padding);box-shadow:0 4px 20px #0006,inset 0 1px #ffffff05;overflow:hidden;min-height:0}.hts-panel{display:flex;flex-direction:column;background:var(--bg-panel);border-radius:var(--radius-lg);overflow:hidden;max-width:600px;margin:0 auto}.hts-panel.user-mode{max-width:1200px;width:100%;margin:0 auto;flex:1;min-height:0}.temperature-control{display:flex;flex-direction:column;height:100%;min-height:0}.temp-control-header{margin-bottom:12px;flex-shrink:0}.section-label{font-size:16px;font-weight:600;color:var(--text-secondary);text-transform:uppercase;letter-spacing:.5px}.temp-control-grid{display:grid;grid-template-columns:1fr 1fr;flex:1;gap:16px;min-height:0;align-items:stretch}.temp-column{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}.temp-column .temp-value-large{position:relative}.temp-column .temp-unit{position:absolute;left:100%;margin-left:4px;bottom:0}.temp-value-large{display:flex;align-items:baseline;justify-content:center;gap:4px}.temp-number{font-family:var(--font-mono);font-size:var(--font-display);font-weight:600;color:var(--text-primary);line-height:1;transition:color var(--transition-normal);text-shadow:0 0 60px rgba(34,211,238,.2);display:flex;align-items:center;justify-content:center;width:190px;height:172px;padding:8px;border:2px solid transparent;border-radius:var(--radius-md);background:transparent;box-sizing:border-box}.temp-unit{font-family:var(--font-mono);font-size:38px;font-weight:400;color:var(--text-secondary)}.temp-input{font-family:var(--font-mono);font-size:var(--font-display);font-weight:600;color:var(--text-primary);background:var(--bg-input);border:2px solid var(--border-default);border-radius:var(--radius-md);width:190px;text-align:center;padding:8px;line-height:1;-moz-appearance:textfield}.temp-input::-webkit-outer-spin-button,.temp-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}.temp-input:focus{outline:none;border-color:var(--text-accent);box-shadow:0 0 0 3px #22d3ee26}.temp-input:focus-visible{border-color:var(--text-accent);box-shadow:0 0 0 4px #22d3ee33}.temp-input.invalid{border-color:var(--state-error);background:#3a2525}.temp-input:disabled{opacity:.5;cursor:not-allowed}.quadrant-label{font-size:var(--font-sm);font-weight:500;text-transform:uppercase;letter-spacing:1px;color:var(--text-secondary);padding:14px 32px;border:1px solid transparent;border-radius:var(--radius-md);background:transparent}.set-value-btn{background:#047857;color:#6ee7b7;border:1px solid #059669;border-radius:var(--radius-md);padding:14px 28px;font-size:var(--font-lg);font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1);box-shadow:0 2px 8px #10b98140}.set-value-btn:hover:not(:disabled){transform:translateY(-1px);background:#059669;box-shadow:0 4px 16px #10b98159}.set-value-btn:active:not(:disabled){transform:translateY(0);background:#065f46;box-shadow:0 1px 4px #10b98133}.set-value-btn:disabled{opacity:.5;cursor:not-allowed}.set-value-btn:focus-visible{outline:none;box-shadow:0 0 0 3px #10b98166}.controller-buttons{display:flex;gap:16px;margin-top:12px;padding-top:12px;border-top:1px solid var(--border-subtle);flex-shrink:0}.start-btn,.stop-btn{flex:1;padding:14px 28px;border-radius:var(--radius-md);font-size:var(--font-lg);font-weight:600;cursor:pointer;transition:all .2s cubic-bezier(.4,0,.2,1)}.start-btn:focus-visible{outline:none;box-shadow:0 0 0 3px #10b98166}.stop-btn:focus-visible{outline:none;box-shadow:0 0 0 3px #ef44444d}.temperature-bar{display:flex;flex-direction:column;height:100%}.temp-bar-header{margin-bottom:12px;text-align:center}.temp-bar-container{flex:1;display:flex;gap:8px;min-height:200px;padding-right:18px}.temp-bar-scale{position:relative;width:30px;flex-shrink:0}.scale-mark{position:absolute;right:0;display:flex;align-items:center;gap:4px;transform:translateY(50%)}.scale-tick{width:8px;height:1px;background:var(--text-muted)}.scale-label{font-family:var(--font-mono);font-size:13px;color:var(--text-muted);width:24px;text-align:right}.temp-bar-graph{flex:1;position:relative}.temp-bar-background{position:relative;height:100%;background:var(--bg-panel);border:1px solid #333333;border-radius:var(--radius-md);overflow:hidden;box-shadow:inset 0 2px 8px #0000004d}.temp-bar-fill{position:absolute;bottom:0;left:0;right:0;transition:height var(--transition-slow),background 1s ease;border-radius:0 0 var(--radius-md) var(--radius-md)}.temp-bar-sv-marker{position:absolute;left:0;right:0;height:3px;background:transparent;border-top:3px dashed rgba(255,255,255,.85);transform:translateY(50%);z-index:1}.sv-marker-label{position:absolute;left:100%;top:50%;transform:translateY(-50%);margin-left:8px;font-family:var(--font-mono);font-size:14px;color:#ffffffe6;font-weight:700;background:#000000b3;padding:1px 4px;border-radius:3px;white-space:nowrap}.system-info{display:flex;flex-direction:column;height:100%}.system-info-header{margin-bottom:12px}.system-info-content{flex:1;display:flex;flex-direction:column;gap:12px}.info-row{display:flex;flex-direction:column;gap:4px}.info-label{font-size:var(--font-xs);font-weight:500;color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.info-value{font-size:var(--font-md);color:var(--text-primary)}.info-value.monospace{font-family:var(--font-mono)}.firmware-value{display:flex;flex-direction:column;gap:2px}.calibration-display{display:flex;align-items:flex-start;justify-content:space-between;gap:8px}.calibration-value{display:flex;flex-direction:column;gap:2px}.cal-date{font-size:var(--font-md);color:var(--text-primary);font-family:var(--font-mono)}.cal-info{font-size:13px;color:var(--text-secondary)}.edit-btn{background:transparent;color:var(--text-secondary);border:1px solid var(--border-default);border-radius:var(--radius-sm);padding:6px 14px;font-size:13px;cursor:pointer;transition:all var(--transition-fast);flex-shrink:0}.edit-btn:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.edit-btn:disabled{opacity:.5;cursor:not-allowed}.edit-btn:focus-visible{outline:none;box-shadow:0 0 0 2px #4ec9b04d}.calibration-edit{display:flex;flex-direction:column;gap:8px}.edit-inputs{display:flex;flex-direction:column;gap:6px}.date-input,.info-input{padding:6px 8px;background:var(--bg-input);border:1px solid #444;border-radius:var(--radius-sm);color:var(--text-primary);font-size:12px}.date-input:focus,.info-input:focus{outline:none;border-color:var(--text-accent)}.date-input:disabled,.info-input:disabled{opacity:.5}.edit-actions{display:flex;gap:6px}.save-btn,.cancel-btn{flex:1;padding:6px 10px;border-radius:var(--radius-sm);font-size:11px;font-weight:500;cursor:pointer;transition:all var(--transition-fast)}.save-btn{background:var(--state-active-bg);color:var(--state-active);border:1px solid var(--state-active-border)}.save-btn:hover:not(:disabled){background:#15803d}.save-btn:focus-visible{outline:none;box-shadow:0 0 0 2px #22c55e66}.cancel-btn{background:var(--bg-input);color:var(--text-secondary);border:1px solid #444}.cancel-btn:hover:not(:disabled){background:var(--bg-hover);color:var(--text-primary)}.cancel-btn:focus-visible{outline:none;box-shadow:0 0 0 2px #4ec9b04d}.handpiece-status{display:flex;flex-direction:column;height:100%}.handpiece-header{margin-bottom:12px}.handpiece-content{flex:1;display:flex;align-items:center;justify-content:center}.handpiece-indicator{display:flex;align-items:center;justify-content:center;padding:12px 20px;border-radius:var(--radius-md);transition:all var(--transition-normal);width:100%}.handpiece-indicator.active{background:var(--state-error-bg);border:1px solid #7f1d1d;box-shadow:0 0 0 1px #7f1d1d4d,0 0 20px #7f1d1d33}.handpiece-indicator.inactive{background:var(--state-active-bg);border:1px solid var(--state-active-border)}.handpiece-text{font-size:22px;font-weight:600;letter-spacing:.5px;transition:color var(--transition-normal)}.handpiece-indicator.active .handpiece-text{color:#f87171}.handpiece-indicator.inactive .handpiece-text{color:var(--state-active)}.controller-status{display:flex;flex-direction:column;height:100%}.controller-header{margin-bottom:12px}.controller-content{flex:1;display:flex;align-items:center;justify-content:center}.controller-indicator{display:flex;align-items:center;justify-content:center;padding:16px 24px;border-radius:var(--radius-md);transition:all var(--transition-normal);width:100%}.controller-indicator.active{background:var(--state-error-bg);border:1px solid #7f1d1d;box-shadow:0 0 0 1px #7f1d1d4d,0 0 20px #7f1d1d33}.controller-indicator.inactive{background:var(--state-active-bg);border:1px solid var(--state-active-border)}.controller-indicator.error{background:#5a2727;border:1px solid #774444}.controller-text{font-size:var(--font-xxl);font-weight:700;letter-spacing:1px;transition:color var(--transition-normal)}.controller-indicator.active .controller-text{color:#f87171}.controller-indicator.inactive .controller-text{color:var(--state-active)}.controller-indicator.error .controller-text{color:var(--state-error)}.branding{display:flex;flex-direction:column;height:100%;justify-content:center;align-items:center}.branding-content{display:flex;flex-direction:column;align-items:center;gap:4px;width:80%}.developed-by{font-size:var(--font-xxs);color:var(--text-muted);text-transform:uppercase;letter-spacing:.5px}.brand-logo{display:flex;align-items:center;justify-content:center;width:100%}.croxel-logo{width:100%;height:auto;opacity:.8}.panel-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:var(--bg-card);border-bottom:1px solid var(--border-subtle)}.panel-content.user-content{flex:1;padding:var(--panel-padding);min-height:0}.read-values h3,.write-controls h3{margin:0 0 12px;font-size:14px;color:#888;text-transform:uppercase;letter-spacing:.5px}.value-row{display:flex;gap:12px;padding:8px 0;border-bottom:1px solid var(--border-subtle);font-family:var(--font-mono);font-size:14px}.value-row .label{color:#888;min-width:100px}.value-row .value{color:#d4d4d4;flex:1}.value-row.developer-only{background:#4f4f4f1a;margin:0 -8px;padding:8px;border-radius:4px}.status{padding:2px 6px;border-radius:3px;font-size:12px}.status-off{background:#444;color:#999}.status-on{background:#2d5a27;color:#7ec87e}.status-input-error,.status-convergence-error,.status-overpower-error,.status-fatal-overtemp{background:#5a2727;color:#ec7e7e}.control-row{display:flex;align-items:center;gap:8px;padding:8px 0}.control-row label{color:#888;min-width:80px;font-size:14px}.control-row input{padding:8px 12px;background:var(--bg-input);border:1px solid var(--border-default);border-radius:var(--radius-sm);color:var(--text-primary);font-size:14px;font-family:var(--font-mono)}.control-row input[type=number]{width:80px}.control-row input[type=text]{flex:1;min-width:100px}.control-row input:focus{outline:none;border-color:var(--text-accent)}.control-row input:disabled{opacity:.5}.control-row button{padding:8px 16px;background:var(--bg-hover);border:1px solid var(--border-strong);border-radius:var(--radius-sm);color:var(--text-primary);cursor:pointer;font-size:14px;transition:all .2s}.control-row button:hover:not(:disabled){background:#303030;border-color:#4a4a4a}.control-row button:disabled{opacity:.5;cursor:not-allowed}.control-row button.status-pending{background:#4a4a27;border-color:#774}.control-row button.status-sending{background:#27404a;border-color:#477}.control-row button.status-success{background:#2d5a27;border-color:#474}.control-row button.status-failed{background:#5a2727;border-color:#744}.control-row.developer-only{background:#4f4f4f1a;margin:0 -8px;padding:8px;border-radius:4px}.queue-status{margin-top:12px;padding:12px;background:var(--bg-card);border-radius:var(--radius-md)}.queue-status h4{margin:0 0 8px;font-size:12px;color:#888}.queue-item{display:flex;gap:8px;padding:4px 0;font-size:12px;font-family:var(--font-mono)}.queue-item .cmd{color:#888;flex:1}.queue-item .status{font-size:11px}.queue-item .status.pending{color:#dcdcaa}.queue-item .status.sending{color:#4ec9b0}.queue-item .status.success{color:#7ec87e}.queue-item .status.failed{color:#f48771}.queue-item .error{color:#f48771;font-size:11px}.status-bar{display:flex;flex-wrap:wrap;gap:12px 16px;padding:12px 20px;background:var(--bg-card);border-top:1px solid var(--border-subtle);font-size:12px}.status-item{display:flex;gap:6px;white-space:nowrap}.status-item .label{color:#666}.status-item .value{color:var(--text-muted);font-family:var(--font-mono);min-width:70px}.status-item .value.has-pending{color:#dcdcaa}.rpc-panel{display:flex;flex-direction:column;background:#1e1e1e;border-radius:8px;overflow:hidden;max-width:1000px;margin:0 auto}.panel-header{display:flex;justify-content:space-between;align-items:center;padding:16px 20px;background:#252525;border-bottom:1px solid #333}.panel-header h2{margin:0;font-size:18px;color:#fff}.panel-content{padding:20px;display:flex;flex-direction:column;gap:24px}.panel-content.two-column{display:grid;grid-template-columns:1fr 1fr;gap:20px}.panel-left{display:flex;flex-direction:column;gap:16px}.panel-right{display:flex;flex-direction:column}.profile-status{min-height:180px}.profile-status h3,.profile-editor h3,.rpc-controls h3{margin:0 0 12px;font-size:14px;color:#888;text-transform:uppercase;letter-spacing:.5px}.status-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;min-height:110px}.status-row{display:flex;justify-content:space-between;align-items:center;padding:10px;gap:4px;background:var(--bg-card, #252525);border-radius:var(--radius-sm, 6px);font-size:var(--font-sm, 14px)}.status-row .label{font-size:12px;font-weight:500;color:var(--text-muted, #71717a);text-transform:uppercase;letter-spacing:.5px;flex-shrink:1;min-width:0}.status-row .value{color:var(--text-primary, #d4d4d4);font-family:var(--font-mono, "Consolas", monospace);white-space:nowrap;text-align:right}.status-row .value.temperature{color:var(--text-accent, #22d3ee);font-weight:600}.status-row .value.running{color:var(--state-active, #10b981);font-weight:600}.status-row .value.stopped{color:var(--text-muted, #71717a)}.status-row.placeholder{visibility:hidden}.status-item{display:flex;justify-content:space-between;align-items:center;padding:8px 12px;background:#252525;border-radius:4px;font-family:Consolas,Monaco,monospace;font-size:14px}.status-item .label{color:#888}.status-item .value{color:#d4d4d4}.status-item .value.running{color:#7ec87e}.status-item .value.stopped{color:#888}.status-item .value.highlight{color:#4ec9b0;font-weight:700}.profile-info{margin-top:12px;padding:12px;background:#2a2d2a;border-radius:4px;border-left:3px solid #7ec87e}.profile-info .info-row{display:flex;justify-content:space-between;padding:4px 0;font-size:13px}.profile-info .info-row .label{color:#888}.profile-info .info-row .value{color:#d4d4d4;font-family:Consolas,Monaco,monospace}.developer-info{margin-top:16px;padding-top:16px;border-top:1px solid var(--border-default, #2a2a2a)}.developer-info h4{margin:0 0 12px;font-size:var(--font-xs, 12px);font-weight:500;color:var(--text-muted, #71717a);text-transform:uppercase;letter-spacing:.5px}.dev-values{display:flex;flex-direction:column;gap:8px}.dev-row{display:flex;justify-content:space-between;align-items:center;padding:10px 14px;background:var(--bg-card, #252525);border-radius:var(--radius-sm, 6px);margin-bottom:8px}.dev-row:last-child{margin-bottom:0}.dev-row .label{font-size:var(--font-xs, 12px);font-weight:500;color:var(--text-muted, #71717a);text-transform:uppercase;letter-spacing:.5px}.dev-row .value{color:var(--text-primary, #d4d4d4);font-family:var(--font-mono, "Consolas", monospace);font-size:var(--font-sm, 14px)}.profile-editor{border:1px solid #333;border-radius:4px;padding:16px;display:flex;flex-direction:column;flex:1}.profile-editor.has-changes{border-color:#dcdcaa}.editor-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:12px}.phase-table-container{flex:1;min-height:150px;overflow-y:auto;border:1px solid var(--border-default, #333);border-radius:var(--radius-sm, 6px);margin-bottom:0}.phase-table-container .phase-table{margin-bottom:0;border:none}.phase-table-container::-webkit-scrollbar{width:6px}.phase-table-container::-webkit-scrollbar-track{background:var(--bg-panel, #1e1e1e)}.phase-table-container::-webkit-scrollbar-thumb{background:var(--border-strong, #3a3a3a);border-radius:3px}.phase-table-container::-webkit-scrollbar-thumb:hover{background:var(--text-muted, #71717a)}.phase-table{width:100%;border-collapse:collapse;margin-bottom:12px}.phase-table th{text-align:left;padding:8px 12px;background:#252525;color:#888;font-size:12px;font-weight:400;text-transform:uppercase}.phase-table td{padding:8px 12px;border-bottom:1px solid #333}.phase-table tr:last-child td{border-bottom:none}.phase-table input{padding:6px 10px;background:#2d2d2d;border:1px solid #444;border-radius:4px;color:#d4d4d4;font-size:14px;font-family:Consolas,Monaco,monospace;width:80px}.phase-table input:focus{outline:none;border-color:#4ec9b0}.phase-table input:disabled{opacity:.5}.phase-table input.invalid{border-color:#f48771;background:#3a2525}.phase-table .remove-btn{padding:4px 8px;background:transparent;border:1px solid #555;border-radius:4px;color:#888;cursor:pointer;font-size:12px;transition:all .2s}.phase-table .remove-btn:hover:not(:disabled){background:#5a2727;border-color:#744;color:#f48771}.phase-table .remove-btn:disabled{opacity:.3;cursor:not-allowed}.editor-actions{display:flex;gap:8px;flex-wrap:wrap;align-items:center}.add-phase-btn{padding:6px 12px;background:#3c3c3c;border:1px solid #555;border-radius:4px;color:#d4d4d4;cursor:pointer;font-size:13px;transition:all .2s}.add-phase-btn:hover:not(:disabled){background:#4a4a4a;border-color:#666}.add-phase-btn:disabled{opacity:.5;cursor:not-allowed}.editor-buttons{display:flex;gap:8px;margin-left:auto}.send-btn,.reset-btn{padding:8px 16px;border-radius:4px;cursor:pointer;font-size:14px;transition:all .2s}.send-btn{background:#27594a;border:1px solid #447766;color:#7ec8aa}.send-btn:hover:not(:disabled){background:#2d6a56;border-color:#5a8}.send-btn:disabled{opacity:.5;cursor:not-allowed}.reset-btn{background:#3c3c3c;border:1px solid #555;color:#d4d4d4}.reset-btn:hover:not(:disabled){background:#4a4a4a;border-color:#666}.reset-btn:disabled{opacity:.5;cursor:not-allowed}.dirty-indicator{color:#dcdcaa;font-size:12px;font-style:italic}.editor-footer{display:flex;justify-content:space-between;align-items:center;margin-top:12px;padding-top:12px;border-top:1px solid var(--border-subtle, #333)}.footer-left{display:flex;align-items:center;gap:16px}.footer-right{display:flex;align-items:center;gap:8px}.total-time{font-size:var(--font-sm, 14px);color:var(--text-secondary, #a1a1aa);font-family:var(--font-mono, "Consolas", monospace)}.add-btn{padding:8px 14px;background:var(--bg-hover, #3c3c3c);border:1px solid var(--border-strong, #555);border-radius:var(--radius-sm, 6px);color:var(--text-primary, #d4d4d4);cursor:pointer;font-size:var(--font-sm, 13px);transition:all .2s}.add-btn:hover:not(:disabled){background:#4a4a4a;border-color:#666}.add-btn:disabled{opacity:.5;cursor:not-allowed}.validation-errors{margin-top:8px;padding:8px 12px;background:#3a2525;border-radius:4px;border-left:3px solid #f48771}.validation-errors p{margin:0;padding:2px 0;color:#f48771;font-size:12px}.rpc-controls{padding:16px;background:#252525;border-radius:4px}.control-buttons{display:flex;gap:12px;flex-wrap:wrap}.start-btn,.stop-btn{padding:14px 28px;border-radius:var(--radius-md, 8px);cursor:pointer;font-size:var(--font-lg, 18px);font-weight:600;transition:all .2s cubic-bezier(.4,0,.2,1)}.start-btn{background:#047857;color:#6ee7b7;border:1px solid #059669;box-shadow:0 2px 8px #10b98140}.start-btn:hover:not(:disabled){transform:translateY(-1px);background:#059669;box-shadow:0 4px 16px #10b98159}.start-btn:active:not(:disabled){transform:translateY(0);background:#065f46;box-shadow:0 1px 4px #10b98133}.start-btn:disabled{opacity:.5;cursor:not-allowed}.start-btn.pending{background:#047857;border-color:#059669;color:#6ee7b7;opacity:.7}.stop-btn{background:#991b1b;color:#fca5a5;border:1px solid #b91c1c;box-shadow:0 2px 8px #ef444440}.stop-btn:hover:not(:disabled){transform:translateY(-1px);background:#b91c1c;box-shadow:0 4px 16px #ef444459}.stop-btn:active:not(:disabled){transform:translateY(0);background:#7f1d1d;box-shadow:0 1px 4px #ef444433}.stop-btn:disabled{opacity:.5;cursor:not-allowed}.stop-btn.pending{background:#991b1b;border-color:#b91c1c;color:#fca5a5;opacity:.7}.running-notice{margin-top:12px;padding:8px 12px;background:#2a2d2a;border-radius:4px;border-left:3px solid #dcdcaa;color:#dcdcaa;font-size:13px}.running-notice.hidden{visibility:hidden}.status-bar{display:flex;flex-wrap:wrap;gap:12px 16px;padding:12px 20px;background:#252525;border-top:1px solid #333;font-size:12px}.status-bar .status-item{display:flex;gap:6px;white-space:nowrap;padding:0;background:transparent}.status-bar .status-item .label{color:#666}.status-bar .status-item .value{color:#888;font-family:Consolas,Monaco,monospace;min-width:70px}.status-bar .status-item .value.running{color:#7ec87e}.status-bar .status-item .value.stopped{color:#888}.status-bar .status-item .value.has-pending{color:#dcdcaa}.status-errors{width:100%;margin-top:8px}.status-errors .error{color:#f48771;font-size:11px;padding:2px 0}.calibration-row{flex-direction:column;align-items:flex-start;gap:8px}.calibration-display{display:flex;align-items:center;gap:12px;width:100%}.calibration-display .value{flex:1}.edit-btn{padding:4px 12px;background:#3c3c3c;border:1px solid #555;border-radius:4px;color:#d4d4d4;cursor:pointer;font-size:12px;transition:all .2s}.edit-btn:hover{background:#4a4a4a;border-color:#666}.calibration-edit{display:flex;flex-direction:column;gap:8px;width:100%}.edit-inputs{display:flex;flex-direction:row;gap:8px;align-items:center;flex-wrap:nowrap}.date-input,.info-input{padding:6px 10px;background:var(--bg-input, #2d2d2d);border:1px solid #444;border-radius:var(--radius-sm, 4px);color:var(--text-primary, #d4d4d4);font-size:13px}.date-input{width:140px;flex-shrink:0}.info-input{flex:1;min-width:120px}.date-input:focus,.info-input:focus{outline:none;border-color:#4ec9b0}.edit-actions{display:flex;gap:8px}.save-btn,.cancel-btn{padding:6px 14px;border-radius:4px;cursor:pointer;font-size:13px;transition:all .2s}.save-btn{background:#27594a;border:1px solid #447766;color:#7ec8aa}.save-btn:hover:not(:disabled){background:#2d6a56;border-color:#5a8}.save-btn:disabled{opacity:.5;cursor:not-allowed}.cancel-btn{background:#3c3c3c;border:1px solid #555;color:#d4d4d4}.cancel-btn:hover:not(:disabled){background:#4a4a4a;border-color:#666}.cancel-btn:disabled{opacity:.5;cursor:not-allowed}.dfu-page{max-width:600px;margin:0 auto;display:flex;flex-direction:column;gap:16px}.dfu-page-header{display:flex;align-items:center;gap:16px}.dfu-page-header h2{margin:0;font-size:20px;color:var(--text-primary, #fafafa)}.dfu-back-btn{padding:6px 12px;background:var(--bg-hover, #252525);color:var(--text-secondary, #a1a1aa);border:1px solid var(--border-default, #2a2a2a);border-radius:6px;cursor:pointer;font-size:14px;transition:background .15s}.dfu-back-btn:hover{background:var(--border-strong, #3a3a3a);color:var(--text-primary, #fafafa)}.dfu-page-content{display:flex;flex-direction:column;gap:16px}.dfu-waiting{text-align:center;padding:40px 20px;background:var(--bg-panel, #111111);border:1px solid var(--border-subtle, #1f1f1f);border-radius:8px}.dfu-waiting p{margin:0 0 8px;color:var(--text-secondary, #a1a1aa)}.dfu-hint{font-size:13px;color:var(--text-muted, #71717a)!important;margin-bottom:16px!important}.dfu-connect-btn{padding:8px 20px;background:var(--state-active, #10b981);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;transition:background .15s}.dfu-connect-btn:hover{background:#059669}.dfu-card{background:var(--bg-panel, #111111);border:1px solid var(--border-subtle, #1f1f1f);border-radius:8px;padding:20px}.dfu-card h3{margin:0 0 16px;font-size:13px;color:var(--text-muted, #71717a);text-transform:uppercase;letter-spacing:.5px}.dfu-info-row{display:flex;justify-content:space-between;align-items:center;padding:8px 0;border-bottom:1px solid var(--border-subtle, #1f1f1f)}.dfu-info-row:last-child{border-bottom:none}.dfu-info-label{color:var(--text-secondary, #a1a1aa);font-size:14px}.dfu-info-value{color:var(--text-primary, #fafafa);font-size:14px}.dfu-mono{font-family:monospace;color:var(--text-accent, #22d3ee)}.dfu-status-text{color:var(--text-secondary, #a1a1aa);font-size:14px;margin:0}.dfu-update-available{display:flex;flex-direction:column;gap:12px}.dfu-update-badge{display:flex;align-items:center;gap:8px;padding:12px;background:var(--state-active-bg, #052e16);border:1px solid var(--state-active-border, #065f46);border-radius:6px;color:var(--state-active, #10b981);font-size:14px}.dfu-version-arrow{display:flex;align-items:center;gap:8px;font-family:monospace;font-size:14px;color:var(--text-secondary, #a1a1aa)}.dfu-version-arrow .current{color:var(--text-muted, #71717a)}.dfu-version-arrow .arrow{color:var(--state-active, #10b981)}.dfu-version-arrow .latest{color:var(--state-active, #10b981);font-weight:600}.dfu-up-to-date{display:flex;align-items:center;gap:8px;color:var(--text-secondary, #a1a1aa);font-size:14px}.dfu-up-to-date .checkmark{color:var(--state-active, #10b981)}.dfu-update-btn{padding:12px 24px;background:var(--state-info, #3b82f6);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:15px;font-weight:500;transition:background .15s;width:100%}.dfu-update-btn:hover{background:#2563eb}.dfu-update-btn:disabled{background:var(--bg-hover, #252525);color:var(--text-muted, #71717a);cursor:not-allowed}.dfu-s3-error{padding:12px;background:#f59e0b1a;border:1px solid rgba(245,158,11,.3);border-radius:6px;color:var(--state-warning, #f59e0b);font-size:13px}.panel-footer{padding:12px 20px;border-top:1px solid var(--border-subtle, #1f1f1f)}.firmware-update-nav-btn{padding:8px 16px;background:var(--bg-hover, #252525);color:var(--text-secondary, #a1a1aa);border:1px solid var(--border-default, #2a2a2a);border-radius:6px;cursor:pointer;font-size:13px;transition:background .15s,color .15s;width:100%}.firmware-update-nav-btn:hover{background:var(--border-strong, #3a3a3a);color:var(--text-primary, #fafafa)}.dfu-loading{color:var(--text-muted, #71717a);font-size:14px}.dfu-dialog-overlay{position:fixed;top:0;left:0;right:0;bottom:0;background:#000000b3;display:flex;align-items:center;justify-content:center;z-index:1000}.dfu-dialog{background:var(--bg-panel, #111111);border:1px solid var(--border-default, #2a2a2a);border-radius:12px;padding:24px;max-width:420px;width:90%}.dfu-dialog h3{margin:0 0 16px;font-size:18px;color:var(--text-primary, #fafafa);text-transform:none;letter-spacing:0}.dfu-dialog p{color:var(--text-secondary, #a1a1aa);font-size:14px;line-height:1.5;margin:0 0 12px}.dfu-dialog strong{color:var(--text-accent, #22d3ee);font-family:monospace}.dfu-dialog-actions{display:flex;gap:10px;margin-top:20px}.dfu-dialog-cancel{flex:1;padding:10px 16px;background:var(--bg-hover, #252525);color:var(--text-secondary, #a1a1aa);border:1px solid var(--border-default, #2a2a2a);border-radius:6px;cursor:pointer;font-size:14px;transition:background .15s}.dfu-dialog-cancel:hover{background:var(--border-strong, #3a3a3a)}.dfu-dialog-confirm{flex:1;padding:10px 16px;background:var(--state-info, #3b82f6);color:#fff;border:none;border-radius:6px;cursor:pointer;font-size:14px;font-weight:500;transition:background .15s}.dfu-dialog-confirm:hover{background:#2563eb}.dfu-update-progress{display:flex;flex-direction:column;gap:10px}.dfu-progress-bar-page{width:100%;height:8px;background:var(--bg-card, #161616);border-radius:4px;overflow:hidden}.dfu-progress-fill-page{height:100%;background:var(--state-info, #3b82f6);border-radius:4px;transition:width .3s ease}.dfu-progress-fill-page.complete{background:var(--state-active, #10b981)}.dfu-progress-fill-page.failed{background:var(--state-error, #ef4444)}.dfu-caution-page{color:var(--state-warning, #f59e0b);font-size:12px;padding:8px 12px;background:#f59e0b1a;border:1px solid rgba(245,158,11,.3);border-radius:6px;text-align:center}.dfu-update-error,.dfu-update-success{display:flex;flex-direction:column;gap:12px}.dfu-success-badge{display:flex;align-items:center;gap:8px;padding:12px;background:var(--state-active-bg, #052e16);border:1px solid var(--state-active-border, #065f46);border-radius:6px;color:var(--state-active, #10b981);font-size:14px;font-weight:500}.app{display:flex;flex-direction:column;height:100vh;background:#0a0a0a;color:#fafafa}.app-header{display:flex;justify-content:space-between;align-items:center;padding:16px 24px;background:#111;border-bottom:1px solid #1f1f1f}.app-title{color:#fff;font-size:1.25rem;font-weight:600;margin:0}.app-header-right{display:flex;align-items:center;gap:12px}.dfu-nav-btn{padding:8px 16px;background:#252525;color:#a1a1aa;border:1px solid #2a2a2a;border-radius:6px;cursor:pointer;font-size:13px;font-weight:500;transition:background .15s,color .15s}.dfu-nav-btn:hover{background:#3a3a3a;color:#fafafa}.app-main{flex:1;display:flex;flex-direction:column;padding:24px;overflow:hidden}.no-device{display:flex;flex-direction:column;align-items:center;justify-content:center;height:100%;text-align:center}.no-device p{margin:0;color:#a1a1aa;font-size:16px}.no-device .hint{margin-top:8px;font-size:14px;color:#71717a}.no-device .hint.secondary{margin-top:12px;font-size:13px;color:#52525b;max-width:300px}.connect-new-device-btn{margin-top:24px;padding:12px 24px;background:#047857;color:#6ee7b7;border:1px solid #059669;border-radius:8px;font-size:16px;font-weight:600;cursor:pointer;transition:all .2s ease}.connect-new-device-btn:hover{background:#059669;transform:translateY(-1px);box-shadow:0 4px 12px #10b9814d}.connect-new-device-btn:active{background:#065f46;transform:translateY(0)}@media (max-width: 600px){.app-header{flex-direction:column;gap:12px;padding:12px 16px}.app-main{padding:16px}}
