:root{color-scheme:dark;--bg: #14161a;--panel: #1c1f26;--panel-border: #2a2e37;--text: #d7dae0;--text-dim: #8b919c;--accent: #3b82f6;--accent-hover: #2f6fe0;--danger: #ef4444;--danger-hover: #dc2626;--success: #22c55e;--warning: #eab308;--terminal-bg: #0f1115;--mono: "SFMono-Regular", Consolas, "Liberation Mono", Menlo, monospace}*{box-sizing:border-box}html,body{margin:0;height:100%}body{background:var(--bg);color:var(--text);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,PingFang SC,Microsoft YaHei,sans-serif;display:flex;flex-direction:column}.app-header{display:flex;align-items:center;justify-content:space-between;padding:14px 20px;background:var(--panel);border-bottom:1px solid var(--panel-border)}.app-title{display:flex;align-items:center;gap:10px}.app-title h1{margin:0;font-size:20px;letter-spacing:.5px;display:flex;align-items:center;gap:6px}.app-title .app-logo{width:24px;height:24px;display:block}.app-subtitle{color:var(--text-dim);font-size:13px}.app-header-right{display:flex;align-items:center;gap:14px}.header-links{display:flex;align-items:center;gap:4px}.header-link{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border-radius:6px;transition:background-color .15s ease}.header-link img{width:20px;height:20px;display:block}.header-link:hover{background:var(--panel-border)}.header-link:hover img{filter:brightness(1.35)}.app-status{display:flex;align-items:center;gap:10px}.chip-badge{padding:4px 12px;border-radius:999px;font-size:12px;background:#2a2e37;color:var(--text-dim);white-space:nowrap}.chip-badge[data-state=connected]{background:#22c55e26;color:var(--success)}.chip-badge[data-state=detecting]{background:#eab30826;color:var(--warning)}.app-version{color:var(--text-dim);font-size:12px}.app-body{flex:1;display:grid;grid-template-columns:340px 1fr;gap:16px;padding:16px 20px;min-height:0}.control-panel{display:flex;flex-direction:column;gap:16px;min-height:0;overflow-y:auto}.panel-group{background:var(--panel);border:1px solid var(--panel-border);border-radius:10px;padding:14px 16px}.panel-group h2{margin:0 0 12px;font-size:13px;color:var(--text-dim);font-weight:600}.field-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}.field-row label{flex:0 0 64px;color:var(--text-dim);font-size:13px}select,input[type=text]{flex:1;padding:8px 10px;border-radius:6px;border:1px solid var(--panel-border);background:var(--terminal-bg);color:var(--text);font-size:14px;font-family:var(--mono)}select{appearance:none;padding-right:28px;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%238b919c' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 10px center}input.invalid{border-color:var(--danger)}input[type=file]{width:100%;padding:8px;border:1px dashed var(--panel-border);border-radius:6px;color:var(--text-dim);font-size:13px}input[type=file]::file-selector-button{margin-right:10px;padding:6px 12px;border:none;border-radius:6px;background:var(--accent);color:#fff;cursor:pointer;font-size:13px}.file-input-hidden{display:none}.device-info,.file-info{margin:8px 0 0;font-size:12px;color:var(--text-dim);min-height:16px}.file-info.selected{color:var(--success);font-weight:600}.btn{padding:10px 16px;border:none;border-radius:8px;font-size:14px;font-weight:600;cursor:pointer;transition:background .15s ease,opacity .15s ease}.btn:disabled{opacity:.4;cursor:not-allowed}.btn-primary{width:100%;background:var(--accent);color:#fff}.btn-primary:not(:disabled):hover{background:var(--accent-hover)}.btn-danger{width:100%;background:var(--danger);color:#fff}.btn-danger:not(:disabled):hover{background:var(--danger-hover)}.btn-ghost{background:transparent;border:1px solid var(--panel-border);color:var(--text-dim)}.btn-ghost:not(:disabled):hover{color:var(--text);border-color:var(--text-dim)}.btn-row{display:flex;gap:8px;margin-top:8px}.btn-row .btn{flex:1}.btn-tiny{padding:4px 10px;font-size:12px;background:transparent;border:1px solid var(--panel-border);color:var(--text-dim);border-radius:6px}.btn-tiny:hover{color:var(--text)}.progress-wrap{display:flex;align-items:center;gap:10px}.progress-wrap[hidden]{display:none}.progress-wrap progress{flex:1;height:10px;accent-color:var(--accent)}.progress-label{flex:0 0 48px;text-align:right;font-size:12px;color:var(--text-dim);font-family:var(--mono)}.compat-warning{padding:10px 12px;border-radius:8px;background:#eab3081f;border:1px solid rgba(234,179,8,.4);color:var(--warning);font-size:13px}.compat-warning[hidden]{display:none}.terminal-panel{display:flex;flex-direction:column;flex:1;min-height:0;background:var(--panel);border:1px solid var(--panel-border);border-radius:10px;overflow:hidden;position:relative}.terminal-header{display:flex;align-items:center;justify-content:space-between;padding:10px 14px;border-bottom:1px solid var(--panel-border);font-size:13px;color:var(--text-dim);gap:8px}.header-actions{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.ai-dropdown{position:relative}.ai-menu{position:absolute;top:calc(100% + 4px);right:0;z-index:20;display:flex;flex-direction:column;min-width:120px;background:var(--panel);border:1px solid var(--panel-border);border-radius:8px;padding:4px;box-shadow:0 8px 24px #00000059}.ai-menu[hidden]{display:none}.ai-menu button{padding:8px 12px;border:none;border-radius:6px;background:transparent;color:var(--text);font-size:13px;text-align:left;cursor:pointer}.ai-menu button:hover{background:#3b82f626;color:#fff}.selection-toolbar{position:fixed;z-index:30;padding:4px;background:var(--accent);border-radius:8px;box-shadow:0 8px 24px #00000073}.selection-toolbar[hidden]{display:none}.selection-toolbar .btn-tiny{color:#fff;border-color:transparent}.selection-toolbar .btn-tiny:hover{background:#ffffff2e;color:#fff}.log-view{flex:1;margin:0;padding:12px 14px;overflow-y:auto;background:var(--terminal-bg);font-family:var(--mono);font-size:12.5px;line-height:1.6;color:var(--text);white-space:pre-wrap;word-break:break-all}.log-virtual{position:relative;width:100%}.log-row{position:absolute;left:0;right:0}.scroll-bottom-btn{position:absolute;right:14px;bottom:14px;z-index:25;background:var(--panel);border-radius:999px;padding:6px 12px;box-shadow:0 4px 12px #00000059}.scroll-bottom-btn:hover{border-color:var(--text-dim);color:var(--text)}.scroll-bottom-btn[hidden]{display:none}.console-baud-label{font-size:12px;color:var(--text-dim)}.console-baud{width:auto;min-width:88px;padding:4px 26px 4px 8px;font-size:12px;background-color:var(--terminal-bg);border:1px solid var(--panel-border);border-radius:6px;color:var(--text);appearance:none;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='8' viewBox='0 0 12 8'%3E%3Cpath d='M1 1l5 5 5-5' fill='none' stroke='%238b919c' stroke-width='1.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");background-repeat:no-repeat;background-position:right 8px center}.log-line{min-height:1.6em}.log-line.log-info{color:var(--text)}.log-line.log-system{color:var(--accent)}.log-line.log-success{color:var(--success)}.log-line.log-flash,.log-line.log-device{color:var(--text)}.log-line.log-warn{color:var(--warning)}.log-line.log-error{color:var(--danger)}.log-line.log-debug{color:var(--text-dim)}.builtin-modal{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#0000008c;z-index:100;opacity:0;visibility:hidden;transition:opacity .18s ease-out,visibility .18s}.builtin-modal.open{opacity:1;visibility:visible}.builtin-modal-box{width:min(440px,92vw);max-height:80vh;overflow-y:auto;padding:16px;border:1px solid var(--panel-border);border-radius:12px;background:var(--panel);color:var(--text);opacity:0;transform:translateY(-8px) scale(.96);transition:opacity .2s ease-out,transform .2s ease-out}.builtin-modal.open .builtin-modal-box{opacity:1;transform:translateY(0) scale(1)}@media(prefers-reduced-motion:reduce){.builtin-modal,.builtin-modal-box{transition:none}}.builtin-modal-header{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;font-size:14px;font-weight:600}.builtin-list{margin:0;padding:0;list-style:none;display:flex;flex-direction:column;gap:8px}.builtin-item{display:flex;align-items:center;gap:12px;padding:10px 12px;border:1px solid var(--panel-border);border-radius:8px;background:var(--terminal-bg);cursor:pointer;user-select:none;transition:border-color .15s ease,background-color .15s ease}.builtin-item:hover{border-color:var(--accent);background-color:#3b82f614}.builtin-meta{display:flex;flex-direction:column;gap:2px;min-width:0}.builtin-name{font-size:13px;color:var(--text)}.builtin-desc{font-size:12px;color:var(--text-dim)}@media(max-width:760px){.app-body{grid-template-columns:1fr;grid-template-rows:auto 1fr}.terminal-panel{min-height:60vh}}
