:root{--radius: 12px;--control-radius: 8px;--duration: .16s}:root,:root[data-theme=clarity-light]{color-scheme:light;--surface-page: #f3f6fa;--surface-1: #fff;--surface-2: #f7f9fc;--surface-3: #e8edf4;--surface-overlay: #fff;--text: #182337;--muted: #5f6f84;--dim: #748399;--line: #d8e0ea;--line2: #e6ecf3;--accent: #315fda;--accent-hover: #254eb8;--accent-soft: #eaf0ff;--on-accent: #fff;--brand: #183b78;--focus: #8a4b00;--success: #087f5b;--success-bg: #e7f7f0;--info: #2856b8;--info-bg: #edf3ff;--warning: #8a4b00;--warning-bg: #fff4dc;--error: #b42318;--error-bg: #fff0ee;--shadow: 0 8px 24px rgb(24 35 55 / 6%);--overlay: rgb(15 23 42 / 42%);--sky: #2f9fc4;--teal: #12b8a6;--on-teal: #000;--bg: var(--surface-page);--bg2: var(--surface-2);--card: var(--surface-1);--pale: var(--accent-soft);--pale2: var(--surface-2);--blue: var(--accent);--blue2: var(--accent-hover);--green: var(--success);--amber: var(--warning);--red: var(--error)}:root[data-theme=graphite-dark]{color-scheme:dark;--surface-page: #10161f;--surface-1: #18212d;--surface-2: #202b38;--surface-3: #344252;--surface-overlay: #202b38;--text: #edf3fa;--muted: #b0bdcc;--dim: #96a5b6;--line: #3a4757;--line2: #2b3745;--accent: #8ab1ff;--accent-hover: #aac6ff;--accent-soft: #223651;--on-accent: #0d1b30;--brand: #b7ceff;--focus: #f6c453;--success: #6ee0b3;--success-bg: #183b34;--info: #a8c4ff;--info-bg: #20334e;--warning: #f3c777;--warning-bg: #3c301d;--error: #ffaaa3;--error-bg: #452525;--shadow: 0 10px 28px rgb(0 0 0 / 24%);--overlay: rgb(0 0 0 / 62%);--sky: #7dd3fc;--teal: #5eead4;--on-teal: #000;--bg: var(--surface-page);--bg2: var(--surface-2);--card: var(--surface-1);--pale: var(--accent-soft);--pale2: var(--surface-2);--blue: var(--accent);--blue2: var(--accent-hover);--green: var(--success);--amber: var(--warning);--red: var(--error)}:root[data-theme=warm-neutral]{color-scheme:light;--surface-page: #f5f1e9;--surface-1: #fffdf8;--surface-2: #f9f6ef;--surface-3: #e8e1d5;--surface-overlay: #fffdf8;--text: #30352f;--muted: #686c63;--dim: #77786e;--line: #d9d2c5;--line2: #e8e2d8;--accent: #357363;--accent-hover: #285d50;--accent-soft: #e3eee8;--on-accent: #fff;--brand: #345c50;--focus: #875000;--success: #276b52;--success-bg: #e4f0e8;--info: #3b6380;--info-bg: #e8f0f3;--warning: #875000;--warning-bg: #f8ecd4;--error: #a43b2f;--error-bg: #f9eae4;--shadow: 0 8px 24px rgb(64 55 40 / 7%);--overlay: rgb(48 53 47 / 40%);--sky: #4f8896;--teal: #4c8a72;--on-teal: #000;--bg: var(--surface-page);--bg2: var(--surface-2);--card: var(--surface-1);--pale: var(--accent-soft);--pale2: var(--surface-2);--blue: var(--accent);--blue2: var(--accent-hover);--green: var(--success);--amber: var(--warning);--red: var(--error)}:root[data-theme=high-contrast]{color-scheme:light;--surface-page: #fff;--surface-1: #fff;--surface-2: #f4f4f4;--surface-3: #ddd;--surface-overlay: #fff;--text: #000;--muted: #292929;--dim: #3f3f3f;--line: #343434;--line2: #666;--accent: #0047c2;--accent-hover: #00358f;--accent-soft: #e5edff;--on-accent: #fff;--brand: #000;--focus: #7a4300;--success: #005b36;--success-bg: #e2f5e9;--info: #003e91;--info-bg: #e5edff;--warning: #6b3d00;--warning-bg: #fff0c2;--error: #9f1108;--error-bg: #ffe9e6;--shadow: none;--overlay: rgb(0 0 0 / 68%);--sky: #005a78;--teal: #006b4f;--on-teal: #fff;--bg: var(--surface-page);--bg2: var(--surface-2);--card: var(--surface-1);--pale: var(--accent-soft);--pale2: var(--surface-2);--blue: var(--accent);--blue2: var(--accent-hover);--green: var(--success);--amber: var(--warning);--red: var(--error)}*{box-sizing:border-box}[hidden]{display:none!important}html,body{margin:0;min-height:100%}html{background:var(--surface-page)}body{min-height:100vh;background:var(--surface-page);color:var(--text);font:14px/1.55 Segoe UI,Microsoft YaHei,system-ui,sans-serif}button,input,select,textarea{font:inherit;color:inherit}button{touch-action:manipulation}button,summary,select,input[type=checkbox],input[type=radio]{cursor:pointer}button:disabled,input:disabled,select:disabled{cursor:not-allowed}:where(button,summary,select,input,textarea,a,[tabindex]):focus-visible{outline:3px solid var(--focus);outline-offset:2px}::selection{background:var(--accent);color:var(--on-accent)}.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}.dim{color:var(--dim)}.mono{font-family:ui-monospace,Consolas,monospace;font-variant-numeric:tabular-nums}.icon{width:18px;height:18px;flex:none;display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}@media (prefers-reduced-motion: reduce){html{scroll-behavior:auto}*,*:before,*:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}.app{max-width:1420px;margin:0 auto;padding:20px 24px 34px}.topbar{display:flex;align-items:center;justify-content:space-between;gap:18px;padding:13px 18px;border:1px solid var(--line);border-radius:18px;background:#ffffffeb;box-shadow:var(--shadow)}.brand{display:flex;align-items:center;gap:13px;min-width:0}.logo{width:46px;height:46px;display:block;object-fit:contain;filter:drop-shadow(0 6px 12px rgba(19,0,124,.18))}.brand h1{font-size:18px;line-height:1.15;margin:0;color:var(--brand);letter-spacing:.2px}.brand p{margin:2px 0 0;color:var(--muted);font-size:12px}.top-right{display:flex;align-items:center;gap:9px;flex-wrap:wrap;justify-content:flex-end}.batch-toggle{min-width:88px;justify-content:center}.badge{display:inline-flex;align-items:center;gap:7px;padding:6px 10px;border-radius:999px;font-size:12px;white-space:nowrap}.badge .dot{width:7px;height:7px}.footer{display:flex;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-top:16px;color:var(--muted);font-size:12px;padding:0 3px}.card-head{display:flex;align-items:flex-start;justify-content:space-between}.eyebrow{display:block;letter-spacing:.14em;text-transform:uppercase;margin-bottom:3px}h2{font-size:18px;margin:0;letter-spacing:.1px}h3{font-size:17px;margin:0}.sub{font-size:12px;margin-top:3px}.btn{font-size:12px;line-height:1.4;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;gap:6px;white-space:nowrap}.btn.small{font-size:12px}.btn:disabled{cursor:not-allowed}.pill{display:inline-flex;align-items:center;gap:5px;border-radius:999px;padding:4px 9px;font-size:12px;line-height:1.35;white-space:nowrap}.pill.gray{color:var(--muted);background:var(--surface-2);border-color:var(--line)}.badge,.pill{font-variant-numeric:tabular-nums}.notice{margin-top:10px;padding:9px 11px;font-size:12px;line-height:1.55;display:flex;gap:8px;align-items:flex-start}.notice-icon{flex:0 0 auto;font-weight:800;color:var(--amber);line-height:1.4}.notice.info .notice-icon{color:var(--blue)}.notice.error .notice-icon{color:var(--red)}.notice strong{color:inherit}.issue-list{margin:4px 0 0;padding-left:18px}.issue-list li{margin:2px 0;font-size:12px;line-height:1.5;overflow-wrap:anywhere}.package{padding:15px 18px;margin-bottom:14px}.pkg-row{display:flex;align-items:center;gap:14px;min-width:0}.file-icon{width:44px;height:44px;border-radius:12px;background:var(--pale);border:1px solid #d6e6fb;display:grid;place-items:center;color:var(--blue);font-size:18px;flex:0 0 auto}.pkg-main{min-width:0;flex:1}.pkg-name{font-size:15px;font-weight:700;letter-spacing:.1px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.pkg-sub{color:var(--muted);font-size:12px;margin-top:2px}.pkg-chips{display:flex;gap:6px;flex-wrap:wrap;justify-content:flex-end}.pkg-actions{display:flex;align-items:center;gap:8px;flex:0 0 auto}.pkg-local-badge{white-space:nowrap}.chip{font-size:12px;border-radius:7px;padding:4px 8px;white-space:nowrap}.chip b{color:var(--text);font-weight:650}.pkg-empty{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;text-align:center;padding:28px 14px;border:1px dashed #bcd4f2;border-radius:12px;background:#f7fbff}.pkg-empty-icon{font-size:26px;color:var(--blue2)}.pkg-empty-title{font-size:16px;font-weight:700}.pkg-empty-sub{font-size:12px;color:var(--muted);max-width:46ch}.pkg-empty .btn{margin-top:6px}.pkg-notices:empty{display:none}.image-selection{margin-top:12px;padding-top:10px;border-top:1px solid var(--line2)}.image-row{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.image-row .label{color:var(--muted);font-size:12px;font-weight:650;margin-right:2px}.image-chips{display:flex;gap:6px;flex-wrap:wrap;min-width:0}.img-chip{display:inline-flex;align-items:center;gap:5px;border:1px solid #cfe0f5;background:#f2f7ff;color:#33547a;border-radius:7px;padding:5px 8px;font-size:12px;line-height:1.3;cursor:pointer;min-height:30px}.img-chip[aria-pressed=true]{border-color:#9cc3f5;background:#eaf3ff;color:#1f4d8a}.img-chip[aria-pressed=false]{background:#fff;color:#7386a0;border-color:#dce8f7}.img-chip:hover:not(:disabled){border-color:#9cc3f5}.img-chip:disabled{opacity:.58;cursor:not-allowed}.img-check{width:14px;height:14px;border-radius:3px;background:var(--blue2);color:#fff;display:inline-grid;place-items:center;font-size:10px;font-weight:800;flex:0 0 auto}.img-chip[aria-pressed=false] .img-check{background:#e8f0f9;border:1px solid #cfe0f5}.img-chip em{font-style:normal;color:var(--dim);font-size:12px;font-variant-numeric:tabular-nums}.image-count{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums;white-space:nowrap;margin-left:auto}.image-count.all-selected{color:#0b7a55;font-weight:650}.params-help{margin-top:8px}.params-help>summary{width:fit-content;color:var(--muted);font-size:12px;font-weight:600;cursor:pointer}.params-help>.params-note{margin-top:6px}.params-note{margin-top:8px;color:var(--muted);font-size:12px;line-height:1.6}.flash{padding:15px 18px 14px;margin-bottom:14px}.cap{text-align:right;flex:0 0 auto}.cap .cap-label{display:block;color:var(--dim);font-size:12px;margin-bottom:1px}.cap strong{display:block;font-size:20px;color:var(--brand);font-variant-numeric:tabular-nums;letter-spacing:.2px}.cap span{display:block;color:var(--dim);font-size:12px;font-variant-numeric:tabular-nums;margin-top:1px;font-family:ui-monospace,Consolas,monospace}.card-title-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.layout-collapse,.settings-collapse{white-space:nowrap}.bar-wrap{margin-top:12px}.bar{position:relative;height:48px;border-radius:9px;background:var(--surface-3);border:1px solid var(--line2);overflow:hidden}.seg{position:absolute;top:0;bottom:0;border-right:1px solid var(--surface-1);display:flex;align-items:center;justify-content:center;overflow:hidden;white-space:nowrap;background:var(--surface-3);cursor:default}.seg-fill{position:absolute;left:0;top:0;bottom:0}.seg-label{position:relative;z-index:1;font-size:12px;font-weight:700;letter-spacing:.2px;color:var(--on-accent);padding:0 4px;overflow:hidden;text-overflow:ellipsis}.seg.missing .seg-label,.seg.gap .seg-label{color:var(--muted)}.seg.tiny .seg-label{display:none}.seg.active,.zseg.active{outline:2px solid var(--brand);outline-offset:-2px;z-index:5}.scale{display:flex;justify-content:space-between;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums;margin-top:5px;font-family:ui-monospace,Consolas,monospace}.zoom-wrap{margin-top:9px}.zoom-head{display:flex;justify-content:space-between;align-items:center;gap:10px;flex-wrap:wrap;color:var(--muted);font-size:12px}.zoom-head b{color:var(--text);font-weight:650}.zoom-clock{font-variant-numeric:tabular-nums}.zoom-bar{display:flex;gap:2px;height:30px;margin-top:5px;border-radius:6px;overflow:hidden;background:var(--surface-3)}.zseg{position:relative;flex:1 1 0;min-width:0;display:flex;align-items:center;justify-content:center;overflow:hidden;white-space:nowrap;font-size:12px;font-weight:650;color:var(--muted);border-right:1px solid var(--line2);background:var(--surface-2);cursor:default}.zseg-fill{position:absolute;left:0;top:0;bottom:0}.zseg-label{position:relative;z-index:1;padding:0 3px;overflow:hidden;text-overflow:ellipsis}.bar-tip{position:fixed;z-index:80;min-width:220px;max-width:300px;background:#fff;border:1px solid #dbe8f7;border-radius:10px;box-shadow:0 14px 34px #13007c29;padding:9px 11px;pointer-events:none}.tip-title{font-size:12px;font-weight:750;color:var(--text);margin-bottom:5px;display:flex;justify-content:space-between;gap:8px}.tip-row{display:flex;justify-content:space-between;gap:12px;font-size:12px;line-height:1.65;color:var(--muted)}.tip-row b{color:var(--text);font-weight:600;font-variant-numeric:tabular-nums}.tip-status{font-size:12px;padding:1px 6px;border-radius:99px;background:var(--success-bg);color:var(--success);font-weight:600;white-space:nowrap}.tip-status.gray{background:var(--surface-2);color:var(--muted)}.legend{display:flex;gap:14px;flex-wrap:wrap;margin-top:9px;color:var(--muted);font-size:12px;align-items:center}.legend span{display:inline-flex;gap:5px;align-items:center}.sw{width:10px;height:10px;border-radius:3px;display:inline-block}.sw.used{background:var(--blue2)}.sw.free{background:#edf3fb;border:1px solid #dbe8f7}.sw.missing{background:repeating-linear-gradient(135deg,#edf3fb 0 3px,#dfe9f5 3px 6px);border:1px solid #cfdeee}.sw.gap{background:#f5f8fc;border:1px solid #dbe8f7}.sw.bad{background:var(--red)}.layout-capacity{margin-top:10px;padding:8px 11px;border-radius:9px;border:1px solid var(--line2);background:var(--pale2);color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}.layout-capacity.ok{color:#0b7a55;border-color:#0e9f6e3d;background:#effaf5}.layout-capacity.bad{color:#a52a3a;border-color:#f3c9cf;background:#fff5f6}.metrics{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:8px;margin-top:10px}.metric{border:1px solid var(--line2);background:var(--pale2);border-radius:9px;padding:7px 9px;min-width:0}.metric .k{color:var(--dim);font-size:12px}.metric .v{font-size:14px;font-weight:700;margin-top:2px;color:var(--text);font-variant-numeric:tabular-nums;white-space:nowrap}.flash-summary{display:flex;justify-content:space-between;align-items:center;gap:12px;flex-wrap:wrap;margin-top:10px;padding-top:10px;border-top:1px solid var(--line2);color:var(--muted);font-size:12px}.flash-summary b{color:var(--text)}.layout-errors{margin-top:8px}.layout-errors .notice{margin-top:0}.layout-detail{margin-top:10px;border:1px solid var(--line);border-radius:10px;overflow:auto;max-height:620px;background:var(--surface-1)}.partition-table{width:100%;border-collapse:collapse;font-size:12px;font-variant-numeric:tabular-nums}.partition-table th{position:sticky;top:0;z-index:1;text-align:left;padding:8px 9px;border-bottom:1px solid var(--line);background:#f7faff;color:var(--dim);font-weight:600;white-space:nowrap}.partition-table th.num{text-align:right}.partition-table td{padding:6px 9px;border-bottom:1px solid #f0f5fb;vertical-align:top;overflow-wrap:anywhere}.partition-table td.num{text-align:right;white-space:nowrap}.partition-table td.mono{color:var(--muted);font-size:12px;white-space:nowrap}.partition-table tbody tr:hover td,.partition-table tbody tr.active td{background:var(--accent-soft)}.partition-table tbody tr.row-bad td{background:var(--error-bg)}.partition-table .dim{color:var(--dim)}.partition-table .pill{padding:2px 8px}.params{padding:14px 18px;margin-bottom:14px}.params-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:10px}.param-controls{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.checkline{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:var(--muted);white-space:nowrap;cursor:pointer}.checkline input{accent-color:var(--blue);width:16px;height:16px;margin:0}.baud-field{color:var(--muted)}.select{appearance:none;padding:6px 28px 6px 10px;font-size:12px;cursor:pointer;min-width:132px;min-height:34px}.select:disabled{cursor:not-allowed}.param-divider{width:1px;height:20px;background:var(--line);margin:0 1px;flex:0 0 auto}.bt-field{display:inline-flex;align-items:center;gap:6px;color:var(--muted);font-size:12px;white-space:nowrap}.bt-input{border:1px solid #cfe0f5;background:#fff;border-radius:8px;padding:6px 9px;font-size:12px;color:#2d4664;width:200px;min-height:34px;outline:none}.bt-input:focus{border-color:var(--blue2)}.bt-input:disabled{background:var(--surface-2);color:var(--dim)}.settings-image-slot{border-top:1px solid var(--line2);padding-top:10px}.settings-image-slot:empty{display:none}.image-selection{margin-top:0;border-top:0;padding-top:0}.settings-view.locked .params-note{opacity:.75}.devices-head{display:flex;flex-direction:column;align-items:stretch;gap:4px;margin:2px 2px 10px}.devices-title-row{display:flex;align-items:center;flex-wrap:wrap;gap:12px}.devices-head h2{font-size:18px}.devices-actions{display:flex;gap:7px;align-items:center;flex-wrap:wrap}.device-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;align-items:start}.device{overflow:hidden;min-width:0}.device[data-state=running]{border-color:#bcd7fb;box-shadow:0 10px 30px #2f80ed1f}.device[data-state=error]{border-color:#f1cdd2}.dev-head{display:flex;align-items:flex-start;justify-content:space-between;gap:10px;padding:13px 14px 0}.dev-title{display:flex;align-items:center;gap:8px;font-weight:700;font-size:14px;min-width:0}.dev-title .dev-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.dot{width:8px;height:8px;border-radius:50%;background:var(--green);flex:0 0 auto}.dot.ok{box-shadow:0 0 0 3px #0e9f6e1f}.dot.active{box-shadow:0 0 0 3px #2f80ed24}.dot.warn{box-shadow:0 0 0 3px #d977061f}.dot.bad{box-shadow:0 0 0 3px #dc26261f}.dot.gray{box-shadow:none}.dev-port{display:flex;align-items:center;gap:8px;margin:10px 14px 0;padding:8px 9px;border:1px solid var(--line2);border-radius:9px;background:var(--pale2);min-width:0}.port-info{min-width:0}.port-name{font-size:12px;font-weight:650;color:#2e4867;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.port-meta{font-size:12px;color:var(--dim);margin-top:1px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.spacer{flex:1;min-width:0}.port-select{min-width:150px;max-width:190px;font-size:12px}.dev-params{display:grid;grid-template-columns:1.3fr 1.3fr .55fr .85fr;gap:7px;padding:10px 14px 0}.kv{border:1px solid var(--line2);border-radius:8px;background:#fff;padding:5px 8px;min-width:0;min-height:56px;display:flex;flex-direction:column;justify-content:center}.kv .k{color:var(--dim);font-size:12px;white-space:nowrap;display:flex;align-items:center;gap:4px}.kv .auto{font-size:12px;color:var(--blue);background:#f2f7ff;border:1px solid #cfe0f5;border-radius:4px;padding:0 4px;line-height:1.3;font-weight:600}.kv .inp{width:100%;border:0;background:transparent;font:13px/1.45 ui-monospace,Consolas,monospace;color:#2d4664;padding:2px 0 0;outline:none;min-width:0}.kv .inp:focus-visible{outline:2px solid var(--focus);outline-offset:2px;border-radius:3px}.kv .inp:disabled{color:#a3b1c4;cursor:not-allowed}.kv.off{background:#f6f9fd;border-color:#e8f0f9}.kv.has-error{border-color:#f3c4ca;background:#fff8f9}.field-error{color:var(--error);font-size:12px;line-height:1.4;margin-top:2px}.ear-seg{display:flex;gap:2px;background:var(--surface-2);border:1px solid var(--line);border-radius:6px;padding:2px;margin-top:3px;height:30px;align-items:stretch;width:100%}.ear-option{position:relative;flex:1;display:flex;align-items:center;justify-content:center;padding:0 4px;border-radius:4px;font-size:12px;color:var(--muted);white-space:nowrap;cursor:pointer;line-height:1.25}.ear-option input{position:absolute;opacity:0;width:1px;height:1px;pointer-events:none}.ear-option.on{background:var(--surface-1);color:var(--accent);border:1px solid var(--line);font-weight:650;box-shadow:0 1px 3px #2f80ed14}.ear-option:focus-within{outline:2px solid var(--focus);outline-offset:1px}.ear-option.disabled{cursor:not-allowed;opacity:.6}.dev-actions{display:flex;gap:7px;padding:10px 14px 0;align-items:center;flex-wrap:wrap}.dev-start-hint{flex:0 1 260px;color:var(--muted);font-size:11.5px;line-height:1.4}.dev-progress{padding:10px 14px 0}.prog-top{display:flex;justify-content:space-between;align-items:flex-end;gap:10px}.prog-phase{font-size:12px;color:var(--muted);min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.prog-phase b{color:var(--text);font-weight:650}.prog-pct{font-size:17px;font-weight:750;color:var(--blue);font-variant-numeric:tabular-nums;flex:0 0 auto}.prog-pct.dim{color:var(--dim)}.progress{height:8px;border-radius:99px;background:#edf3fb;border:1px solid #e2ecf8;margin-top:6px;overflow:hidden}.progress>i{display:block;height:100%;border-radius:99px;transition:width .12s linear}.time-row{display:flex;justify-content:space-between;gap:10px;flex-wrap:wrap;color:var(--dim);font-size:12px;margin-top:5px;font-variant-numeric:tabular-nums}.device-alerts{padding:0 14px}.device-alerts:empty{display:none}.device-alerts .notice{margin-top:10px}.dev-log-wrap{margin:9px 14px 13px}.dev-log-head{display:flex;justify-content:space-between;gap:8px;margin-bottom:5px}.dev-log-head .btn{color:var(--muted)}.dev-log{border:1px solid var(--line2);border-radius:9px;background:#f8fbff;padding:8px 10px;height:96px;overflow:auto;font:12px/1.6 ui-monospace,Consolas,monospace;color:#5f7390;overflow-wrap:anywhere}.log-line{white-space:pre-wrap}.log-time{color:var(--dim)}.log-level{font-weight:700}.log-info{color:var(--info)}.log-warn{color:var(--warning)}.log-error{color:var(--error)}.log-success{color:var(--success)}.ready-note{height:96px;display:flex;align-items:center;justify-content:center;text-align:center;color:var(--muted);font-size:12px;background:var(--surface-2);border:1px dashed var(--line2);border-radius:9px}.add-device{border:1px dashed #bcd4f2;background:#f7fbff;color:var(--blue);border-radius:12px;display:flex;align-items:center;justify-content:center;gap:8px;font-size:12px;min-height:260px}.modal-backdrop{position:fixed;inset:0;backdrop-filter:blur(4px);display:none;align-items:center;justify-content:center;z-index:100;padding:20px}.modal-backdrop.show{display:flex}.modal{width:min(560px,100%);overflow:auto}.modal-head{display:flex;gap:12px;padding:19px 19px 0}.warn-icon{width:42px;height:42px;border-radius:12px;border:1px solid;display:grid;place-items:center;font-size:20px;font-weight:800;flex:0 0 auto}.warn-icon.info{background:var(--info-bg);border-color:var(--info);color:var(--info)}.modal h3{font-size:17px;margin:0;color:var(--text)}.modal .sub{color:var(--muted);font-size:12px;margin-top:3px}.compare{display:grid;grid-template-columns:1fr auto 1fr;gap:9px;align-items:center;padding:16px 19px 0}.compare .box{border:1px solid var(--line);border-radius:10px;background:var(--pale2);padding:9px 10px;min-width:0}.compare .k{color:var(--dim);font-size:12px}.compare .v{font-size:14px;font-weight:750;margin-top:2px;color:var(--text);overflow-wrap:anywhere}.compare .v.blue{color:var(--blue)}.compare .v.amber{color:#a16207}.compare .vs{color:var(--red);font-weight:800;font-size:13px}.risk{margin:14px 19px 0;padding:10px 11px;border:1px solid;border-radius:9px;font-size:12px;line-height:1.6}.modal-note{margin:9px 19px 0;color:var(--dim);font-size:12px;line-height:1.55}.modal-actions{display:flex;justify-content:flex-end;gap:8px;flex-wrap:wrap;padding:16px 19px 18px}.preflight-package{margin:14px 19px 0;padding:10px 11px;border:1px solid var(--line);border-radius:9px;background:var(--pale2);font-size:12px;line-height:1.6;color:var(--muted);overflow-wrap:anywhere}.preflight-package strong{color:var(--text)}.preflight-summary{display:flex;gap:8px;flex-wrap:wrap;margin:12px 19px 0}.preflight-devices{display:grid;grid-template-columns:1fr;gap:9px;margin:12px 19px 0}.preflight-device{border:1px solid var(--line);border-radius:10px;background:var(--surface-1);padding:10px 11px}.preflight-device.ready{border-color:var(--success);background:var(--success-bg)}.preflight-device-head{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.preflight-device-head .preflight-port{color:var(--muted);font-size:12px}.preflight-device-head .pill{margin-left:auto}.preflight-lines{margin-top:6px;color:var(--muted);font-size:12px;line-height:1.6;overflow-wrap:anywhere}.preflight-issue-title{margin-top:6px;font-size:12px;font-weight:700}.preflight-risk[hidden]{display:none!important}.warn-list{color:var(--warning)}.app-notice-host{margin-bottom:14px}.app-notice-host:empty{display:none}.app-notice-host .notice{margin-top:0}.package-view.drag-over{border-color:var(--blue2);background:var(--accent-soft);box-shadow:0 0 0 3px #2f80ed1a,var(--shadow)}.devices-section{margin-top:2px}.footer-help{flex-basis:100%;margin-top:4px;color:var(--muted);font-size:12px}.footer-help summary{cursor:pointer;color:var(--blue);width:fit-content}.footer-help ul{margin:6px 0 0;padding-left:18px;line-height:1.65}@media (max-width: 1000px){.app{padding:14px}.device-grid{grid-template-columns:1fr}.metrics{grid-template-columns:repeat(3,minmax(0,1fr))}.topbar{flex-wrap:wrap}.top-right{justify-content:flex-start}}@media (max-width: 720px){.pkg-row{flex-wrap:wrap}.pkg-chips{justify-content:flex-start}.dev-params,.metrics{grid-template-columns:repeat(2,minmax(0,1fr))}.image-count{margin-left:0}.cap{text-align:left}.card-head{flex-wrap:wrap}.modal-backdrop{padding:10px}.compare{grid-template-columns:1fr}.compare .vs{text-align:center}.dev-port{flex-wrap:wrap}.port-select{max-width:none;flex:1 1 150px}}.port-picker-guide{position:fixed;top:78px;left:20px;z-index:80;display:flex;align-items:flex-start;gap:10px;max-width:380px;padding:12px 14px 13px;border:1px solid;border-radius:12px}.port-picker-guide[hidden]{display:none}.port-picker-arrow{flex:0 0 auto;margin-top:-8px;color:var(--blue);font-size:38px;font-weight:800;line-height:1;animation:port-picker-nudge .9s ease-in-out infinite alternate}.port-picker-copy{font-size:12.5px;line-height:1.65}@keyframes port-picker-nudge{0%{transform:translate(0)}to{transform:translate(-5px,-6px)}}.tour-layer{position:fixed;inset:0;z-index:90;pointer-events:none}.tour-layer[hidden]{display:none}.tour-panel{position:fixed;z-index:90;background:#12254273;pointer-events:auto}.tour-highlight{position:fixed;z-index:91;border:3px solid;border-radius:13px;box-shadow:0 0 0 1px #ffffffd9 inset,0 0 0 6px #2f80ed29;pointer-events:none;transition:left .16s ease,top .16s ease,width .16s ease,height .16s ease}.tour-tooltip{position:fixed;z-index:92;max-height:calc(100vh - 24px);overflow:auto;padding:15px 16px 14px;border:1px solid;border-radius:14px;pointer-events:auto}.tour-tooltip:before{position:absolute;width:0;height:0;border:9px solid transparent;content:""}.tour-tooltip[data-placement=below]:before{top:-18px;left:calc(var(--arrow-x, 24px) - 9px);border-bottom-color:var(--surface-overlay);filter:drop-shadow(0 -1px 0 var(--line))}.tour-tooltip[data-placement=above]:before{bottom:-18px;left:calc(var(--arrow-x, 24px) - 9px);border-top-color:var(--surface-overlay);filter:drop-shadow(0 1px 0 var(--line))}.tour-head{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}.tour-meta{display:flex;align-items:center;gap:8px;min-width:0}.tour-step-count{flex:0 0 auto;padding:3px 6px;border-radius:5px;background:var(--accent-soft);color:var(--accent);font-size:10px;font-weight:800;letter-spacing:.04em}.tour-eyebrow{overflow:hidden;color:var(--accent);font-size:9.5px;font-weight:800;letter-spacing:.1em;text-overflow:ellipsis;white-space:nowrap}.tour-close{flex:0 0 auto;width:26px;height:26px;border:1px solid var(--line);border-radius:7px;background:var(--surface-2);color:var(--muted);font-size:17px;line-height:1;cursor:pointer}.tour-close:hover{border-color:var(--accent);background:var(--surface-3);color:var(--text)}.tour-close:focus-visible{border-color:var(--focus)}.tour-title{margin:9px 0 0;font-size:17px;line-height:1.35}.tour-body{margin:7px 0 0;color:var(--muted);font-size:12.5px;line-height:1.65}.tour-bullets{margin:9px 0 0;padding-left:17px;color:var(--muted);font-size:12px;line-height:1.65}.tour-bullets li+li{margin-top:3px}.tour-hint{margin-top:10px;padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:var(--surface-2);color:var(--muted);font-size:11.5px;line-height:1.55}.tour-hint[hidden]{display:none}.tour-footer{display:flex;align-items:center;gap:7px;margin-top:13px}.tour-footer-spacer{flex:1}.tour-next:disabled{opacity:.5;cursor:not-allowed}.tour-skip{padding-left:0;color:var(--muted)}.onboarding-backdrop{position:fixed;inset:0;z-index:90;display:grid;place-items:center;padding:24px;background:#12254257;backdrop-filter:blur(5px)}.onboarding-backdrop[hidden]{display:none}.onboarding-modal{width:min(780px,100%);max-height:min(760px,calc(100vh - 48px));overflow:auto;border:1px solid #d5e4f7;border-radius:20px;background:#fff;box-shadow:0 32px 100px #12254247;color:var(--text)}.onboarding-head{display:flex;align-items:flex-start;justify-content:space-between;gap:16px;padding:22px 24px 16px;border-bottom:1px solid #eaf1fa}.onboarding-kicker{display:block;color:var(--blue);font-size:10px;font-weight:800;letter-spacing:.16em}.onboarding-title{margin:4px 0 0;font-size:22px;line-height:1.25}.onboarding-close{width:32px;height:32px;border:1px solid #dbe8f7;border-radius:9px;background:#f7fbff;color:var(--muted);font-size:20px;line-height:1;cursor:pointer}.onboarding-layout{display:grid;grid-template-columns:190px minmax(0,1fr);min-height:390px}.onboarding-steps{display:flex;flex-direction:column;gap:4px;padding:18px 14px;border-right:1px solid #eaf1fa;background:#f8fbff}.onboarding-step{display:flex;align-items:center;gap:9px;padding:10px 9px;border:1px solid transparent;border-radius:9px;background:transparent;color:var(--muted);text-align:left;cursor:pointer}.onboarding-step:hover{background:#eef6ff}.onboarding-step.active{border-color:#cfe0f5;background:#fff;color:var(--blue);box-shadow:0 4px 14px #2f80ed14}.onboarding-step-index{flex:0 0 auto;font-size:10px;font-weight:800;letter-spacing:.06em;opacity:.8}.onboarding-step-label{font-size:12px;font-weight:650;line-height:1.35}.onboarding-main{display:grid;grid-template-columns:minmax(0,1fr) 220px;gap:20px;padding:24px;align-items:start}.onboarding-eyebrow{color:var(--blue);font-size:10px;font-weight:800;letter-spacing:.12em}.onboarding-heading{margin:5px 0 0;font-size:19px}.onboarding-body{margin:9px 0 0;color:#4f6684;font-size:13px;line-height:1.7}.onboarding-bullets{margin:12px 0 0;padding-left:18px;color:#506784;font-size:12.5px;line-height:1.7}.onboarding-bullets li+li{margin-top:4px}.onboarding-action{margin-top:14px}.onboarding-action-button:disabled{opacity:.55;cursor:not-allowed}.onboarding-illustration{min-width:0}.onboarding-illo{border:1px solid #dbe8f7;border-radius:13px;background:#f8fbff;padding:12px}.onboarding-illo-file{display:grid;gap:10px}.illo-file{display:flex;align-items:center;gap:8px;padding:10px;border:1px solid #d6e6f8;border-radius:9px;background:#fff}.illo-file-icon{color:var(--blue);font-size:21px}.illo-file-name{font:11.5px/1.4 ui-monospace,Consolas,monospace;color:#33547a}.illo-lines,.illo-start-rows{display:grid;gap:4px}.illo-line{color:#5c7390;font-size:11px;line-height:1.45}.onboarding-illo-flash{display:grid;gap:8px}.illo-flash-bar{display:flex;height:34px;overflow:hidden;border-radius:7px;background:#dbe8f7}.illo-flash-seg{display:grid;place-items:center;min-width:0;border-right:1px solid rgba(255,255,255,.7);color:#fff;font-size:8px;font-weight:700;background:linear-gradient(135deg,#5a9df0,#2f80ed)}.illo-flash-seg:nth-child(2n){background:linear-gradient(135deg,#7bb8f5,#5a9df0)}.illo-caption{color:var(--dim);font-size:10px;line-height:1.45}.illo-flash-zoom{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:3px}.illo-flash-cell{padding:5px 2px;border:1px solid #cfe0f5;border-radius:4px;background:#fff;color:#55708e;font-size:8.5px;text-align:center}.onboarding-illo-params{display:grid;gap:10px}.illo-chip-row{display:flex;flex-wrap:wrap;gap:5px}.illo-chip{padding:4px 6px;border:1px solid #cfe0f5;border-radius:999px;background:#fff;color:#3b5f88;font-size:9.5px}.illo-param-row{display:grid;gap:5px}.illo-param{display:flex;justify-content:space-between;gap:8px;padding:5px 7px;border:1px solid #dbe8f7;border-radius:6px;background:#fff;font-size:10px}.illo-param-key{color:var(--dim)}.illo-param-value{color:#345577}.onboarding-illo-port{display:grid;gap:8px}.illo-device{display:grid;gap:6px;padding:9px;border:1px solid #d6e6f8;border-radius:9px;background:#fff}.illo-device-title{color:#33547a;font-size:11px;font-weight:700}.illo-device-port{color:var(--dim);font-size:9.5px}.illo-device-button,.illo-start-button{justify-self:start;padding:5px 8px;border-radius:6px;background:#2f80ed;color:#fff;font-size:10px;font-weight:650}.illo-arrow{justify-self:end;color:var(--blue);font-size:28px;font-weight:800;line-height:1}.illo-progress{height:8px;overflow:hidden;border-radius:99px;background:#e7f0fa}.illo-progress i{display:block;width:68%;height:100%;background:linear-gradient(90deg,#2f80ed,#6cb6ff)}.onboarding-illo-start{display:grid;gap:9px}.onboarding-footer{display:flex;align-items:center;gap:9px;padding:14px 24px 18px;border-top:1px solid #eaf1fa}.onboarding-footer-spacer{flex:1}.onboarding-skip{color:var(--muted)}.onboarding-highlight{outline:3px solid #65a9ff;outline-offset:5px;border-radius:12px;transition:outline-color .2s ease}@media (max-width: 760px){.onboarding-layout{grid-template-columns:1fr}.onboarding-steps{flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid #eaf1fa}.onboarding-step{flex:0 0 auto}.onboarding-main{grid-template-columns:1fr}.onboarding-illustration{order:-1}}.tabbar{display:flex;align-items:center;justify-content:center;gap:4px;padding:4px;border:1px solid var(--line);border-radius:999px;background:var(--pale2)}.tab-button{display:inline-flex;align-items:center;gap:7px;padding:8px 18px;border:1px solid transparent;border-radius:999px;background:transparent;color:var(--muted);font:inherit;font-size:13px;font-weight:650;line-height:1.2;cursor:pointer;transition:background .14s ease,color .14s ease,border-color .14s ease}.tab-button:hover{color:var(--blue);background:#1f5bd80f}.tab-button.active{border-color:#cfe0f5;background:#fff;color:var(--blue);box-shadow:0 1px 3px #2f80ed14;box-shadow:0 1px 3px color-mix(in srgb,var(--accent) 14%,transparent)}.tab-badge{display:inline-flex;align-items:center;min-height:17px;padding:2px 6px;border:1px solid rgba(47,128,237,.22);border-radius:999px;background:#f2f7ff;color:var(--blue);font-size:10px;font-weight:700;line-height:1}.tab-panels{display:block}.tab-panels>[role=tabpanel][hidden]{display:none}.tab-shell{position:relative;margin-top:12px}.tab-coach{position:absolute;top:52px;left:calc(50% + 8px);z-index:30;display:flex;align-items:flex-start;gap:8px;max-width:340px;padding:10px 12px;border:1px solid #cfe0f5;border-radius:12px;background:#fff;box-shadow:0 12px 28px #13007c24;font-size:12px;line-height:1.5;color:#36506f}.tab-shell.coach-open .tab-panels{padding-top:56px}.tab-coach-arrow{position:absolute;top:-10px;left:18px;color:var(--blue);font-size:14px;line-height:1}.tab-coach-copy{flex:1 1 auto}.tab-coach-dismiss{flex:0 0 auto;width:22px;height:22px;display:grid;place-items:center;padding:0;border:1px solid transparent;border-radius:6px;background:transparent;color:var(--muted);font-size:15px;line-height:1;cursor:pointer}.tab-coach-dismiss:hover{border-color:var(--line);background:var(--pale2);color:var(--text)}.log-panel{padding-top:6px}.log-app{display:flex;flex-direction:column;gap:12px}.log-toolbar{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border:1px solid var(--line);border-radius:12px;background:#ffffffeb;box-shadow:var(--shadow)}.log-toolbar-group{display:flex;flex-wrap:wrap;align-items:center;gap:8px}.log-toolbar-actions{margin-left:auto}.log-dictionary-status{color:var(--muted);font-size:12px}.log-dictionary-status.error{color:var(--red)}.log-notice{padding:8px 11px;border:1px solid var(--line);border-radius:9px;background:var(--pale2);color:var(--muted);font-size:12px}.log-notice.warn{border-color:#d977064d;background:#fff8eb;color:#92400e}.log-notice.error{border-color:#dc26264d;background:#fef2f2;color:#b91c1c}.log-columns{display:grid;grid-auto-flow:column;grid-auto-columns:max(560px,calc((100% - 14px)/2));align-items:start;gap:14px;overflow-x:auto;padding-bottom:8px}.log-device{min-width:0;display:flex;flex-direction:column;border:1px solid var(--line);border-radius:14px;background:var(--card);box-shadow:var(--shadow);overflow:hidden}.log-device-header{display:flex;align-items:center;justify-content:space-between;gap:10px;padding:10px 12px;border-bottom:1px solid var(--line2);background:#fff}.log-device-heading{display:flex;flex-wrap:wrap;align-items:baseline;gap:8px;min-width:0}.log-device-name{font-weight:700;color:var(--text)}.log-device-status{color:var(--muted);font-size:12px}.log-open-toggle{flex:0 0 auto}.log-open-toggle.close{border-color:#f3c4ca;background:#fff3f4;color:#b91c1c}.log-device-toolbar{display:flex;flex-wrap:wrap;align-items:center;gap:7px;padding:9px 12px;border-bottom:1px solid var(--line2)}.log-port-control{display:flex;align-items:center;gap:6px;min-width:0}.log-port-select{border:1px dashed #bcd4f2;border-radius:8px;background:#f7fbff;color:var(--blue);padding:5px 10px;font-size:12px;cursor:pointer}.log-port-control .port-selected{font-family:ui-monospace,Consolas,monospace;font-size:12px;color:var(--text)}.log-port-control .change-port{border:0;background:transparent;color:var(--blue);font-size:12px;cursor:pointer;padding:3px 4px}.log-baud-wrap,.log-signal{display:inline-flex;align-items:center;gap:5px;color:var(--muted);font-size:12px}.log-baud{min-height:28px;padding:3px 7px;border:1px solid var(--line);border-radius:8px;background:#fff;color:var(--text);font-size:12px}.log-stats{padding:6px 12px;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}.log-filter-wrap{display:flex;flex-direction:column;gap:4px;padding:0 12px 9px}.log-filter{width:100%;min-height:46px;resize:vertical;padding:7px 9px;border:1px solid var(--line);border-radius:8px;background:#fbfdff;color:var(--text);font:12px/1.5 ui-monospace,Consolas,monospace}.log-filter-meta{display:flex;justify-content:space-between;gap:8px;color:var(--muted);font-size:11px}.log-filter-count{flex:0 0 auto;font-variant-numeric:tabular-nums}.log-filter-error{color:var(--red);font-size:12px}.log-filter-error:empty{display:none}.log-lines-wrap{display:flex;flex-direction:column;gap:4px;padding:0 12px 12px}.log-auto-scroll{align-self:flex-end;color:var(--muted);font-size:11px}.log-lines{height:340px;overflow:auto;border:1px solid var(--line2);border-radius:9px;background:#f8fbff;padding:6px 8px;font:12px/1.6 ui-monospace,Consolas,monospace;color:#5f7390;white-space:pre}.log-empty{color:var(--muted);font-size:12px}.log-lines .log-line{white-space:pre}.cli-dock{border-top:1px solid var(--line2);padding:8px 12px 12px}.cli-dock>summary{cursor:pointer;color:var(--blue);font-size:12px;font-weight:650}.cli-panel{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:8px;margin-top:8px}.cli-status{grid-column:1 / -1;min-height:20px;padding:5px 8px;border:1px solid var(--line2);border-radius:8px;background:var(--pale2);color:var(--muted);font-size:12px}.cli-status:empty{display:none}.cli-card{min-width:0;padding:8px 9px;border:1px solid var(--line);border-radius:10px;background:#fbfdff}.cli-card-title{margin:0 0 5px;color:var(--text);font-size:12px;font-weight:700}.card-row,.cli-card-row{display:flex;flex-wrap:wrap;align-items:center;gap:6px;margin-top:6px}.cli-card input,.cli-card select{min-width:0;max-width:100%;padding:4px 6px;border:1px solid var(--line);border-radius:7px;background:#fff;font-size:12px}.preset-buttons{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}.preset-btn{border:1px solid var(--line);border-radius:8px;background:#fff;color:#36506f;padding:5px 8px;font-size:12px;line-height:1.4;cursor:pointer}.preset-btn:hover:not(:disabled){border-color:#bcd4f2;background:#f8fbff}.preset-btn:disabled{opacity:.52;cursor:not-allowed}.preset-btn.danger{border-color:#f3c4ca;background:#fff3f4;color:#b91c1c}.cli-settings-row{display:flex;align-items:center;flex-wrap:wrap;gap:6px;margin-top:8px;padding-top:8px;border-top:1px dashed var(--line2);color:var(--muted);font-size:11px}.cli-settings-row input{width:76px;height:26px}.cli-settings-label{color:var(--text)}.cli-settings-unit{color:var(--muted)}.cli-settings-hint{color:var(--muted);font-size:10.5px}.preset-results{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:6px;margin-top:8px}.preset-result{display:flex;align-items:baseline;gap:8px;min-width:0;padding:6px 8px;border:1px solid var(--line2);border-radius:8px;background:#f8fbff}.preset-result-label{flex:0 0 auto;color:var(--muted);font-size:11px}.preset-result-value{min-width:0;color:var(--text);font-size:12px;font-weight:600;overflow-wrap:anywhere}.event-list{display:flex;flex-direction:column;gap:4px;max-height:140px;overflow:auto;margin-top:6px}.event-option{display:flex;align-items:center;gap:6px;font-size:12px;color:var(--text)}.event-name{flex:1 1 auto;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.event-value{flex:0 0 auto;color:var(--dim);font-family:ui-monospace,Consolas,monospace;font-size:11px}.event-empty{color:var(--muted);font-size:12px}.inline-error{color:var(--red);font-size:12px}.inline-error:empty{display:none}.cli-history{display:flex;flex-direction:column;gap:3px;max-height:170px;overflow:auto;margin-top:6px;font:11px/1.5 ui-monospace,Consolas,monospace}.cli-history-empty{color:var(--muted);font-size:12px}.cli-history-row{display:grid;grid-template-columns:74px 34px 58px 38px 44px minmax(0,1fr) minmax(0,1fr);gap:4px;padding:2px 0;border-bottom:1px solid var(--line2);overflow-wrap:anywhere;white-space:nowrap}.cli-history-row>span{min-width:0;overflow:hidden;text-overflow:ellipsis}.history-time,.history-seq{color:var(--muted);font-variant-numeric:tabular-nums}.history-dir{font-weight:700;color:var(--blue)}.history-mm{color:var(--muted)}.history-payload{color:var(--text)}.history-result{color:var(--muted);font-variant-numeric:tabular-nums}.history-error{color:var(--red)}@media (max-width: 900px){.log-columns{grid-auto-flow:row;grid-auto-columns:auto;grid-template-columns:1fr;overflow-x:visible}.tab-coach{right:8px;left:8px;max-width:none}}.flash-panel,.layout-panel,.log-panel{display:flex;flex-direction:column;gap:14px}.layout-stack{display:flex;flex-direction:column;gap:10px}.log-panel{padding-top:0}.log-toolbar{border:0;border-radius:0;background:transparent;box-shadow:none;padding:0 2px;gap:12px}.log-toolbar-session{gap:12px}.log-save-hint{color:var(--muted);font-size:11px}.log-columns{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-flow:row;align-items:start;gap:14px;overflow-x:visible;padding-bottom:0}.log-columns.single{grid-template-columns:minmax(0,1fr)}.log-device{min-width:0}.log-device-header{align-items:flex-start;padding:11px 14px 8px}.log-device-heading{align-items:center;gap:8px;padding-top:3px}.log-recording{display:inline-flex;align-items:center;gap:5px;color:var(--red);font-size:11px}.log-recording i{width:7px;height:7px;border-radius:50%;background:var(--red);box-shadow:0 0 0 3px #dc26261f;box-shadow:0 0 0 3px color-mix(in srgb,var(--error) 16%,transparent)}.log-device-right{margin-left:auto;display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end}.log-port-info{color:var(--muted);font:11px/1.4 ui-monospace,Consolas,monospace;white-space:nowrap}.log-port-select{border:1px dashed #b9d2f2;background:#f8fbff;color:var(--blue);padding:5px 10px;font-size:11.5px;border-radius:8px}.log-port-select:disabled{opacity:.52;cursor:not-allowed}.log-device-meta{display:flex;align-items:center;flex-wrap:wrap;gap:9px;padding:0 14px 8px}.log-device-meta .log-stats{margin-left:auto;color:var(--muted);font-size:10.5px;white-space:nowrap}.log-device-meta .log-baud-wrap,.log-device-meta .log-signal{font-size:11.5px}.log-device-meta .log-baud{padding:3px 6px;border:1px solid var(--line);border-radius:7px;background:var(--surface-1);color:var(--text);font-size:11.5px}.log-filter-wrap{padding:0 14px}.log-filter{width:100%;min-height:46px;resize:vertical;border:1px solid var(--line);border-radius:8px;background:#fff;padding:5px 9px;font:11.5px/1.55 ui-monospace,Consolas,monospace}.log-lines-wrap{padding:0 14px 8px}.log-lines{height:260px}.log-device-actions{display:flex;align-items:center;gap:4px;padding:0 14px 10px}.log-device-actions .btn.ghost{color:var(--muted)}.log-device-actions .log-cli{color:var(--blue)}.log-stats{color:var(--dim);font-size:10.5px}.log-notice{margin:0}.cli-dock{border:1px solid var(--line);border-radius:14px;background:var(--card);box-shadow:var(--shadow);overflow:hidden}.cli-dock-head{display:flex;align-items:center;gap:10px;padding:9px 14px;border-bottom:1px solid var(--line2);background:#fbfdff}.cli-dock-title{color:var(--blue);font-size:12.5px;font-weight:700}.cli-device-tabs{display:inline-flex;min-width:0;max-width:100%;border:1px solid var(--line);border-radius:8px;overflow:hidden;overflow-x:auto}.cli-device-tab{border:0;border-radius:0;background:#fff;color:var(--muted);padding:4px 10px;min-height:26px;font-size:11.5px;flex:0 0 auto;white-space:nowrap}.cli-device-tab+.cli-device-tab{border-left:1px solid var(--line)}.cli-device-tab.active{background:#e7f0ff;color:var(--blue);font-weight:650}.cli-dock-status{color:var(--muted);font-size:11px}.cli-dock-toggle{margin-left:auto;flex:0 0 auto}.cli-dock-body{padding:12px 14px 14px}.cli-panel{display:flex;flex-direction:column;gap:10px;margin:0}.cli-main{display:grid;grid-template-columns:132px minmax(0,1fr);gap:12px;align-items:start}.cli-nav{display:flex;flex-direction:column;gap:2px;border-right:1px solid var(--line2);padding-right:8px}.cli-nav-item{border:0;background:transparent;color:var(--muted);text-align:left;padding:7px 9px;border-radius:7px;font-size:11.5px;cursor:pointer}.cli-nav-item:hover{background:var(--pale);color:var(--text)}.cli-nav-item.active{background:#e7f0ff;color:var(--blue);font-weight:650}.cli-content{min-width:0}.cli-content .cli-card{border:0;background:transparent;padding:0}.cli-content .cli-card-title{display:none}.cli-history{max-height:190px}.history-card{border:0;border-top:1px solid var(--line2);border-radius:0;background:transparent;padding:8px 0 0;box-shadow:none}.cli-status{margin-top:0}@media (max-width: 1100px){.log-columns{grid-template-columns:minmax(0,1fr)}}.package-view{padding:16px 18px}.package-view .pkg-empty{display:flex;flex-direction:row;align-items:center;justify-content:flex-start;gap:15px;padding:16px 18px;border:1px dashed var(--line);border-radius:12px;background:var(--surface-2);text-align:left}.package-view .pkg-empty-icon{display:grid;place-items:center;width:42px;height:42px;flex:0 0 42px;border:1px solid var(--line2);border-radius:12px;background:var(--accent-soft);color:var(--accent);font-size:21px}.package-view .pkg-empty-copy{flex:1;min-width:0}.package-view .pkg-empty-title{color:var(--text);font-size:14px;font-weight:700}.package-view .pkg-empty-sub{max-width:none;margin-top:3px;color:var(--muted);font-size:12px;line-height:1.55}.package-view .pkg-empty .btn{flex:0 0 auto;margin:0 0 0 auto}.settings-view .settings-body{display:flex;flex-direction:column;gap:12px}.settings-fields{display:flex;align-items:flex-end;flex-wrap:wrap;gap:10px 18px}.settings-fields .baud-field,.settings-fields .bt-field{display:flex;flex-direction:column;align-items:stretch;gap:4px;font-size:11px;color:var(--muted)}.settings-fields .baud-field{width:200px}.settings-fields .bt-field{width:min(320px,100%)}.settings-fields .bt-input{width:100%}.settings-options{display:flex;align-items:center;flex-wrap:wrap;gap:10px 14px;border-top:1px solid var(--line2);padding-top:10px}.settings-options-label{color:var(--dim);font-size:10px;letter-spacing:.12em}.device .dev-head{align-items:flex-start;flex-wrap:wrap}.device .dev-head .dev-port{margin-left:auto;display:flex;align-items:center;gap:7px;flex-wrap:wrap;justify-content:flex-end;padding:0;border:0}.device .dev-port .port-info{text-align:right}.device .dev-port .port-name{font:11px/1.4 ui-monospace,Consolas,monospace;color:var(--muted)}.device .dev-port .port-meta{display:none}.device .dev-port .port-select{max-width:150px}.package-view .pkg-row{display:grid;grid-template-columns:auto minmax(0,1fr) auto;grid-template-areas:"icon main actions" "icon chips actions";gap:3px 14px;align-items:center}.package-view .file-icon{grid-area:icon;align-self:start}.package-view .pkg-main{grid-area:main}.package-view .pkg-chips{grid-area:chips;justify-content:flex-start}.package-view .pkg-actions{grid-area:actions;align-self:start}.package-view .pkg-name{font-size:14px}.cli-dock.locked .cli-nav,.cli-dock.locked .cli-content{opacity:.5}.cli-dock.locked .cli-dock-status{color:var(--amber)}.app-page.config-panel{display:grid;grid-template-columns:210px minmax(0,1fr);grid-template-rows:auto minmax(0,1fr);gap:0;flex:1;min-height:0;border:1px solid var(--line);border-radius:12px;background:var(--card);box-shadow:var(--shadow);overflow:hidden}.app-page.config-panel.config-empty{grid-template-columns:minmax(0,1fr)}.config-empty .config-content{grid-column:1 / -1}.config-empty .config-state{width:100%}.app-content.config-active{overflow-y:hidden}.config-toolbar{grid-column:1 / -1;display:flex;justify-content:space-between;align-items:center;gap:12px;min-height:50px;padding:7px 12px;border-bottom:1px solid var(--line);background:var(--pale2)}.config-toolbar-left{display:flex;gap:6px;align-items:center;flex-wrap:wrap}.config-toolbar-right{display:flex;gap:8px;align-items:center;flex-wrap:wrap}.config-export-wrap{position:relative}.config-export-menu{position:absolute;right:0;top:calc(100% + 4px);display:flex;flex-direction:column;gap:2px;min-width:150px;padding:6px;background:var(--card);border:1px solid var(--line);border-radius:8px;box-shadow:var(--shadow);z-index:10}.config-export-menu[hidden]{display:none}.config-nav{display:flex;flex-direction:column;gap:3px;overflow:auto;padding:10px 8px;border-right:1px solid var(--line);background:var(--card)}.config-nav-item{display:flex;align-items:center;height:36px;padding:0 12px;border:0;border-radius:8px;background:transparent;color:var(--muted);text-align:left;font:inherit;font-size:13px;cursor:pointer;white-space:nowrap}.config-nav-item:hover:not(:disabled){background:var(--pale);color:var(--text)}.config-nav-item.active{background:#e7f0ff;color:var(--blue);font-weight:650}.config-nav-item:disabled{color:var(--dim);cursor:not-allowed}.config-scopes,.config-keys{display:flex;gap:4px;align-items:center;flex-wrap:wrap}.config-scope-label,.config-key-label{margin-right:4px;color:var(--muted);font-size:12px;white-space:nowrap}.config-scope{min-width:62px;height:32px;padding:0 14px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--muted);font:inherit;font-size:12px;font-weight:600;cursor:pointer}.config-scope:hover{border-color:#b8d2f4;color:var(--blue)}.config-scope.active{border-color:var(--blue);background:var(--blue);color:#fff}.config-content{display:flex;flex-direction:column;min-width:0;min-height:0;padding:10px 14px 12px;overflow:hidden}.config-keys{flex:0 0 auto;gap:6px;margin-bottom:8px}.config-key{min-width:96px;height:36px;padding:0 16px;border:1px solid #cddff7;border-radius:6px;background:#eaf2ff;color:#2a4f86;font:inherit;font-size:13px;font-weight:650;cursor:pointer}.config-key:hover{border-color:#9fc3ef;background:#dceaff}.config-key.active{border-color:var(--blue);background:var(--blue);color:#fff}.config-view{display:flex;flex-direction:column;min-height:0;flex:1}.config-view-head{flex:0 0 auto;display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:0 2px 8px}.config-view-title{display:flex;align-items:baseline;gap:10px;min-width:0}.config-view-head h2{margin:0;font-size:16px;letter-spacing:.1px}.config-view-path{color:var(--muted);font-size:11px}.config-form-body{flex:1;min-height:0;overflow:auto;border:1px solid var(--line);border-radius:8px;background:#fff}.config-section{margin:0}.config-section h3{margin:0;padding:8px 12px;border-bottom:1px solid var(--line);background:var(--pale2);color:var(--muted);font-size:12px;font-weight:650}.config-fields{display:flex;flex-direction:column}.config-variant-tabs{display:flex;gap:6px;flex-wrap:wrap;padding:8px 12px 6px;border-bottom:1px solid var(--line2)}.config-variant-tab{min-width:72px;height:30px;padding:0 14px;border:1px solid var(--line);border-radius:6px;background:#fff;color:var(--muted);font:inherit;font-size:12px;font-weight:600;cursor:pointer}.config-variant-tab:hover{border-color:#b8d2f4;color:var(--blue)}.config-variant-tab.active{border-color:var(--blue);background:var(--blue);color:#fff}.config-variant-body{border-bottom:0}.config-field{display:grid;grid-template-columns:200px 210px minmax(240px,1fr);align-items:center;min-height:34px;padding:3px 12px;border-bottom:1px solid var(--line2)}.config-field:last-child{border-bottom:0}.config-field:hover{background:#fafcff}.config-field.invalid{background:#fff6f6;box-shadow:inset 3px 0 0 var(--red)}.config-label{min-width:0;padding:4px 0;color:#405877;font-size:12.5px;overflow-wrap:anywhere}.config-input{min-width:0;padding:2px 0}.config-input input[type=text],.config-input select{width:200px;max-width:100%;height:28px;padding:2px 8px;border:1px solid #cfdcee;border-radius:5px;background:#fff;font-size:12.5px}.config-input input[type=text]:focus,.config-input select:focus{border-color:var(--blue2);outline:2px solid var(--focus);outline-offset:0}.config-input input:disabled,.config-input select:disabled{background:var(--surface-2);color:var(--dim)}.config-desc{min-width:0;padding-left:12px;color:var(--muted);font-size:11.5px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.config-readonly{display:inline-block;padding:3px 8px;border-radius:4px;background:var(--pale);font-size:12.5px}.config-check{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;white-space:nowrap}.config-error{grid-column:2 / -1;padding:2px 0 6px;color:var(--red);font-size:11.5px}.config-input-wide{grid-column:2 / -1;min-width:0}.config-bit-grid{grid-template-rows:auto auto;padding-top:8px;padding-bottom:8px}.config-bit-grid>.config-label{align-self:start;padding-top:8px}.config-bit-grid>.config-desc{grid-column:2 / -1;padding:4px 0 0}.config-bit-matrix{display:grid;grid-template-columns:repeat(var(--bit-columns, 1),minmax(130px,1fr));gap:4px 14px;padding:4px 0;min-width:0;overflow-x:auto}.config-array{display:block;padding:9px 12px 12px;border-bottom:1px solid var(--line2)}.config-array:last-child{border-bottom:0}.config-array-head{display:flex;align-items:baseline;gap:12px;padding-bottom:6px}.config-array-head .config-label{color:var(--text);font-weight:650}.config-array-head .config-desc{padding-left:0;flex:1}.config-array-body{min-width:0;overflow-x:auto}.config-array table{width:100%;border-collapse:collapse;font-size:12px}.config-array th,.config-array td{border:1px solid var(--line);padding:3px 8px;text-align:left}.config-array th{position:sticky;top:0;background:var(--pale2);color:var(--muted);font-weight:650;white-space:nowrap}.config-array td input[type=text],.config-array td select{width:100%;min-width:72px;height:26px;padding:1px 6px;border:1px solid #d7e3f2;border-radius:4px;background:#fff;font-size:12px}.config-array .config-index{width:46px;color:var(--dim);text-align:right;font-variant-numeric:tabular-nums}.config-array .config-row-actions{width:68px;white-space:nowrap}.config-add-row{margin-top:8px}.config-cells{display:block;padding:9px 12px 12px;border-bottom:1px solid var(--line2)}.config-cells:last-child{border-bottom:0}.config-cell-grid{display:grid;grid-template-columns:repeat(var(--cell-columns, 1),minmax(96px,150px));gap:6px 12px}.config-cell{display:flex;align-items:center;gap:6px;min-width:0}.config-cell-label{flex:0 0 auto;min-width:34px;color:var(--muted);font-size:11px;text-align:right;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.config-cell input[type=text],.config-cell select{flex:1;min-width:48px;height:26px;padding:1px 6px;border:1px solid #d7e3f2;border-radius:4px;background:#fff;font-size:12px}.config-cell .config-check{flex:0 0 auto}.config-state{max-width:640px;margin:24px auto;text-align:center}@media (max-width: 1100px){.config-field{grid-template-columns:170px 180px minmax(180px,1fr)}.config-input input[type=text],.config-input select{width:180px}}@media (max-width: 900px){.app-page.config-panel{height:auto;min-height:0}.config-nav{flex-direction:row;flex-wrap:wrap;border-right:0;border-bottom:1px solid var(--line);padding:8px}.config-nav-item{height:32px;padding:0 12px}.config-field{grid-template-columns:minmax(120px,160px) minmax(0,1fr)}.config-desc{display:none}}.port-picker-backdrop{position:fixed;inset:0;z-index:80;display:grid;place-items:center;background:color-mix(in srgb,#000 45%,transparent)}.port-picker{width:min(520px,calc(100vw - 32px));max-height:min(640px,calc(100vh - 48px));overflow:auto;border-radius:14px;background:var(--surface-overlay);border:1px solid var(--line, #d8dde6);padding:18px;box-shadow:0 24px 60px #00000040}.port-picker-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:12px}.port-picker-head h2{margin:0;font-size:16px}.port-picker-list{display:grid;gap:8px}.port-picker-item{display:grid;gap:4px;text-align:left;padding:10px 12px;border:1px solid var(--line, #d8dde6);border-radius:10px;background:transparent;cursor:pointer}.port-picker-item:disabled{cursor:not-allowed;opacity:.6}.port-picker-label{font-weight:600}.port-picker-owner{font-size:12px;color:var(--muted, #667085)}.port-picker-empty{margin:8px 0;color:var(--muted, #667085)}.port-picker-actions{display:flex;justify-content:flex-end;margin-top:14px}.mcp-card{display:grid;gap:12px;padding:14px 18px}.mcp-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}.mcp-row-label{min-width:56px;color:var(--muted, #667085);font-size:12px}.mcp-row-value{overflow-wrap:anywhere}.mcp-web-notice{display:grid;gap:6px;justify-items:start}.mcp-activity,.mcp-jobs{display:grid;gap:6px;border-top:1px solid var(--line, #d8dde6);padding-top:10px}.mcp-activity h3,.mcp-jobs h3{margin:0;font-size:13px}.mcp-activity-row,.mcp-job-row{display:flex;justify-content:space-between;gap:12px;font-size:12px}.mcp-activity-meta,.mcp-job-state{color:var(--muted, #667085)}.package-view{margin:0;padding:16px 18px;background:var(--surface-1)}.package-view .pkg-row{grid-template-columns:auto minmax(0,1fr) auto;gap:4px 14px}.pkg-name{color:var(--text);overflow-wrap:anywhere}.pkg-sub,.pkg-chips,.params-note{color:var(--muted)}.file-icon{background:var(--accent-soft);color:var(--accent);border-color:var(--line2)}.pkg-empty{background:var(--surface-2);border-color:var(--line)}.pkg-empty-title{color:var(--text)}.img-chip{background:var(--surface-1);color:var(--muted);border-color:var(--line)}.img-chip[aria-pressed=true]{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.img-chip[aria-pressed=false]{background:var(--surface-1);color:var(--dim)}.img-check{background:var(--accent);color:var(--on-accent)}.devices-head{gap:6px;margin:0}.devices-title-row{justify-content:space-between}.devices-title-row h2{font-size:18px}.device-grid{grid-template-columns:repeat(auto-fit,minmax(min(100%,360px),1fr));gap:16px}.device{background:var(--surface-1);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow)}.device[data-state=running]{border-color:var(--accent);box-shadow:0 0 0 1px var(--accent)}.device[data-state=error]{border-color:var(--error)}.dev-head{padding:15px 15px 0}.dev-port{background:var(--surface-2);border-color:var(--line2)}.port-name,.kv .inp{color:var(--text)}.dev-params{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;padding:12px 15px 0}.kv{background:var(--surface-1);border-color:var(--line)}.kv.off{background:var(--surface-2);border-color:var(--line2)}.kv.has-error{background:var(--error-bg);border-color:var(--error)}.kv .auto{background:var(--accent-soft);color:var(--accent);border-color:var(--line2)}.progress,.progress-track{background:var(--surface-3)}.progress>span,.progress>i,.progress-fill{background:var(--accent)}.log-box,.device-log,.dev-log{background:var(--surface-2);color:var(--muted);border-color:var(--line2)}.settings-view{background:var(--surface-1)}.settings-fields,.settings-options{color:var(--muted)}.layout-view{background:var(--surface-1)}.layout-view .bar,.layout-view .zoom-bar{background:var(--surface-3)}.layout-view .metric{background:var(--surface-2);border-color:var(--line2)}.partition-table{color:var(--text)}.partition-table th{background:var(--surface-2);color:var(--muted)}.partition-table td,.partition-table th{border-color:var(--line2)}.layout-detail{max-width:100%;overflow:auto}.layout-errors,.history-error{color:var(--error)}.bar-tip{background:var(--surface-overlay);color:var(--text);border-color:var(--line);box-shadow:var(--shadow)}.layout-view .seg.used{background:var(--accent-soft)}.layout-view .seg.preview{background:var(--accent)}.layout-view .seg.used.alt{background:var(--accent-soft)}.layout-view .seg.preview.alt{background:var(--teal)}.layout-view .seg.missing{background:var(--surface-3)}.layout-view .seg.bad{background:var(--error)}.layout-view .seg.gap{background:var(--line)}.layout-view .seg-fill{background:var(--accent)}.layout-view .seg.used.alt .seg-fill{background:var(--teal)}.layout-view .seg.used .seg-label,.layout-view .seg.used.alt .seg-label{background:var(--surface-overlay);color:var(--text);padding:1px 5px;border-radius:4px}.layout-view .seg.preview .seg-label{color:var(--on-accent)}.layout-view .seg.preview.alt .seg-label{color:var(--on-teal)}.layout-view .zseg.used{background:var(--accent-soft)}.layout-view .zseg.preview{background:var(--accent);color:var(--on-accent)}.layout-view .zseg.preview.alt{background:var(--teal);color:var(--on-teal)}.layout-view .zseg.missing{background:var(--surface-3);color:var(--muted)}.layout-view .zseg.bad{background:var(--error);color:var(--on-accent)}.layout-view .zseg-fill{background:var(--accent)}.layout-view .zseg.used.alt .zseg-fill{background:var(--teal)}.layout-view .zseg.used .zseg-label,.layout-view .zseg.used.alt .zseg-label{background:var(--surface-overlay);color:var(--text);padding:1px 4px;border-radius:4px}.layout-view .sw.used{background:var(--accent)}.layout-view .sw.free{background:var(--accent-soft)}.layout-view .sw.missing{background:var(--surface-3)}.layout-view .sw.gap{background:var(--line)}.layout-view .sw.bad{background:var(--error)}.log-panel{flex:1;min-height:0}.log-toolbar,.log-toolbar-session{color:var(--muted)}.log-columns{min-width:0;gap:12px}.log-device,.cli-dock{background:var(--surface-1);border-color:var(--line)}.log-device-header{background:var(--surface-1)}.log-device-toolbar,.log-device-meta{color:var(--muted)}.log-baud,.log-filter,.log-port-select{background:var(--surface-1);color:var(--text);border-color:var(--line)}.log-notice{background:var(--surface-2);color:var(--muted);border-color:var(--line2)}.log-notice.warn{background:var(--warning-bg);color:var(--warning);border-color:var(--warning)}.log-notice.error,.log-open-toggle.close{background:var(--error-bg);color:var(--error);border-color:var(--error)}.log-lines,.cli-history{background:var(--surface-2);color:var(--text);border-color:var(--line);scrollbar-color:var(--dim) var(--surface-2)}.log-lines{border:1px solid var(--line)}.log-line[data-level=D],.log-line[data-level=I],.log-line[data-level=R]{color:var(--info)}.log-line[data-level=W]{color:var(--warning)}.log-line[data-level=E],.log-line[data-level=A]{color:var(--error)}.cli-dock-head{background:var(--surface-2);border-color:var(--line2)}.cli-device-tabs{border-color:var(--line2)}.cli-device-tab{background:var(--surface-1);color:var(--muted)}.cli-device-tab+.cli-device-tab{border-color:var(--line2)}.btn.cli-device-tab.active{background:var(--accent-soft);color:var(--accent)}.cli-status{background:var(--surface-2);color:var(--info);border-color:var(--line2)}.cli-status.error,.inline-error{color:var(--error)}.cli-dock.locked .cli-dock-status{color:var(--warning)}.cli-nav{background:var(--surface-2);border-color:var(--line2);border-radius:8px;padding:8px}.cli-nav-item.active{background:var(--accent-soft);color:var(--accent)}.cli-card{background:var(--surface-1)}.cli-content .cli-card{background:transparent}.cli-card input,.cli-card select{background:var(--surface-1);color:var(--text);border-color:var(--line)}.cli-history{padding:6px 8px;border:1px solid var(--line);border-radius:8px}.preset-btn{background:var(--surface-1);color:var(--text);border-color:var(--line)}.preset-btn:hover:not(:disabled){background:var(--surface-2);border-color:var(--accent)}.preset-btn.danger{background:var(--error-bg);color:var(--error);border-color:var(--error)}.preset-result{background:var(--surface-2)}.app-page.config-panel{background:var(--surface-1);border-color:var(--line)}.config-toolbar{background:var(--surface-2);border-color:var(--line2)}.config-export-menu{background:var(--surface-overlay);border-color:var(--line)}.config-nav,.config-scopes,.config-keys{background:var(--surface-2);border-color:var(--line2)}.config-scopes{padding:4px;border:1px solid var(--line2);border-radius:8px}.config-nav-item.active,.config-scope.active,.config-key.active,.config-variant-tab.active{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.config-scope,.config-key,.config-variant-tab{background:var(--surface-1);color:var(--muted);border-color:var(--line)}.config-scope:hover,.config-key:hover,.config-variant-tab:hover{background:var(--surface-2);color:var(--accent);border-color:var(--accent)}.config-content,.config-view,.config-form-body,.config-array,.config-cells{color:var(--text)}.config-form-body{background:var(--surface-1);border-color:var(--line)}.config-section h3,.config-array th{background:var(--surface-2);color:var(--muted);border-color:var(--line2)}.config-field{background:var(--surface-1);border-color:var(--line2)}.config-field:hover{background:var(--surface-2)}.config-field.invalid{background:var(--error-bg);color:var(--error);border-color:var(--error)}.config-label{color:var(--text)}.config-error{color:var(--error)}.config-readonly{padding:3px 8px;border:1px solid var(--warning);border-color:var(--warning);background:var(--warning-bg);color:var(--warning)}.config-input input[type=text],.config-input select,.config-array td input[type=text],.config-array td select,.config-cell input[type=text],.config-cell select{background:var(--surface-1);color:var(--text);border-color:var(--line)}.config-input input[type=text]:disabled,.config-input select:disabled,.config-array td input[type=text]:disabled,.config-array td select:disabled,.config-cell input[type=text]:disabled,.config-cell select:disabled{background:var(--surface-2);color:var(--dim)}.config-array td,.config-cell{background:var(--surface-1);border-color:var(--line)}.mcp-page{max-width:1200px;width:100%;margin:0 auto}.mcp-card{padding:18px}.mcp-row{padding:8px 0;border-bottom:1px solid var(--line2)}.mcp-row-value{min-width:0;color:var(--text);overflow-wrap:anywhere}.mcp-activity,.mcp-jobs{border-color:var(--line2)}.mcp-activity-row,.mcp-job-row{padding:8px;border:1px solid var(--line2);border-color:var(--line2);border-radius:8px;background:var(--surface-2)}.page-head h1{color:var(--text)}.ota-workspace{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));align-items:start;gap:16px}.ota-panel{background:var(--surface-1);border-color:var(--line)}.ota-hint,.ota-filter-group,.ota-status,.ota-preflight,.ota-timing{background:var(--surface-2);color:var(--muted);border-color:var(--line)}.ota-preflight{border:1px solid var(--line)}.ota-error{padding:8px 10px;border:1px solid var(--error);border-radius:8px;background:var(--error-bg);color:var(--error)}.tour-panel,.onboarding-backdrop,.port-picker-backdrop{background:var(--overlay)}.tour-highlight{box-shadow:0 0 0 1px var(--surface-overlay) inset,0 0 0 6px var(--accent-soft)}.tour-tooltip,.tab-coach{background:var(--surface-overlay);color:var(--text);border-color:var(--line);box-shadow:var(--shadow)}.onboarding-modal{max-height:min(760px,calc(100vh - 48px));max-height:min(760px,calc(100dvh - 48px));background:var(--surface-overlay);color:var(--text);border-color:var(--line);box-shadow:var(--shadow)}.onboarding-head,.onboarding-steps,.onboarding-footer{border-color:var(--line2)}.onboarding-steps{background:var(--surface-2)}.onboarding-close{background:var(--surface-2);color:var(--muted);border-color:var(--line)}.onboarding-step:hover{background:var(--surface-3)}.onboarding-step.active{background:var(--accent-soft);color:var(--accent);border-color:var(--accent);box-shadow:none}.onboarding-body,.onboarding-bullets{color:var(--muted)}.onboarding-illo{background:var(--surface-2);border-color:var(--line)}.illo-file,.illo-device{background:var(--surface-1);border-color:var(--line)}.illo-file-name,.illo-device-title{color:var(--text)}.illo-line,.illo-param-value{color:var(--muted)}.illo-flash-bar,.illo-progress{background:var(--surface-3)}.illo-flash-seg{background:var(--accent);color:var(--on-accent);border-color:var(--surface-overlay)}.illo-flash-seg:nth-child(2n){background:var(--accent-hover)}.illo-flash-cell,.illo-chip,.illo-param{background:var(--surface-1);color:var(--text);border-color:var(--line)}.illo-device-button,.illo-start-button{background:var(--accent);color:var(--on-accent)}.illo-progress i{background:var(--accent)}.onboarding-highlight{outline-color:var(--focus)}.tab-button:hover{background:var(--accent-soft);color:var(--accent)}.tab-button.active,.tab-badge{background:var(--accent-soft);color:var(--accent);border-color:var(--accent)}.compare .v.amber{color:var(--warning)}.port-picker{background:var(--surface-overlay);color:var(--text);border-color:var(--line);box-shadow:var(--shadow)}.port-picker-item{background:var(--surface-1);color:var(--text);border-color:var(--line)}.port-picker-item:hover:not(:disabled){background:var(--surface-2);border-color:var(--accent)}.port-picker-owner,.port-picker-empty{color:var(--muted)}.settings-view,.layout-view,.log-device,.cli-dock{border-color:var(--line2);border-radius:14px;box-shadow:var(--shadow)}.config-state{padding:32px;border-color:var(--line2);border-radius:14px;box-shadow:var(--shadow)}.config-state h3{margin-bottom:8px;font-size:18px}.config-state .btn{margin-top:12px}.device{transition:border-color var(--duration),box-shadow var(--duration)}.device:hover{border-color:var(--accent)}.appearance-settings{border-color:var(--line2)}.log-toolbar{padding:12px 14px;border-color:var(--line2);border-radius:14px;background:var(--surface-1);box-shadow:var(--shadow)}.log-shared-baud{margin-left:2px;padding-left:12px;border-left:1px solid var(--line2)}.log-shared-baud .log-baud{min-height:32px;padding:5px 9px;border-color:var(--line);background:var(--surface-1);color:var(--text)}.log-layout-control{display:inline-flex;align-items:center;gap:3px;padding:3px;border:1px solid var(--line2);border-radius:10px;background:var(--surface-2)}.log-toolbar-layout{margin-right:auto}.log-toolbar-actions,.log-toolbar-session{justify-content:flex-end}.log-layout-label{padding:0 5px;color:var(--muted);font-size:11px}.log-layout-control .btn{min-height:28px;padding:4px 9px;border-color:transparent;background:transparent;color:var(--muted)}.log-layout-control .btn[aria-pressed=true]{border-color:var(--line2);background:var(--surface-1);color:var(--accent);box-shadow:var(--shadow)}.log-columns.stacked{grid-template-columns:minmax(0,1fr)}.log-columns.stacked .log-lines{height:360px}.log-device-footer{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:8px 12px;padding:0 14px 12px}.log-device-footer .log-device-actions{padding:0}.log-device-footer .log-stats{margin-left:auto;color:var(--muted);font-size:10.5px;font-variant-numeric:tabular-nums;text-align:right;white-space:nowrap}.log-signal-controls{display:inline-flex;align-items:center;gap:8px;padding-left:3px}.log-signal-controls .log-signal{color:var(--muted);font-size:11px}.log-filter{min-height:38px;padding:8px 10px;resize:none;line-height:1.5}.log-filter-meta{align-items:flex-start;line-height:1.55}.log-filter-hint{min-width:0;overflow-wrap:anywhere}.app-inline-notice{position:fixed;top:84px;right:24px;z-index:65;width:min(440px,calc(100vw - 32px));pointer-events:auto}.app-inline-notice:empty{display:none}.app-inline-notice .notice{box-shadow:var(--shadow)}.app-inline-notice .notice-message{flex:1;min-width:0}.notice-close{flex:0 0 28px;width:28px;height:28px;margin:-5px -5px 0 0;padding:0;border:0;border-radius:6px;background:transparent;color:inherit;font:600 18px/28px sans-serif;cursor:pointer}.notice-close:hover{background:var(--surface-2)}@media (max-width: 767px){.app-inline-notice{top:auto;right:12px;bottom:12px;width:calc(100vw - 24px)}}@media (max-width: 640px){.package-view .pkg-empty{align-items:flex-start;flex-wrap:wrap;padding:14px}.package-view .pkg-empty-copy{flex:1 1 calc(100% - 58px)}.package-view .pkg-empty .btn{width:100%;margin:2px 0 0}.config-state{padding:24px 18px}}.appearance-menu{position:relative}.appearance-summary{display:flex;align-items:center;gap:7px;min-height:34px;padding:6px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface-1);color:var(--muted);list-style:none;user-select:none}.appearance-summary::-webkit-details-marker{display:none}.appearance-options{display:grid;gap:6px}.appearance-menu .appearance-options{position:absolute;top:calc(100% + 8px);right:0;z-index:70;width:250px;padding:8px;border:1px solid var(--line);border-radius:12px;background:var(--surface-overlay);box-shadow:var(--shadow)}.appearance-option{display:grid;grid-template-columns:auto 38px 1fr;align-items:center;gap:10px;min-height:52px;padding:9px 11px;border:1px solid var(--line2);border-radius:10px;background:var(--surface-1);transition:border-color var(--duration),background var(--duration),box-shadow var(--duration)}.appearance-option:hover{border-color:var(--accent);background:var(--surface-2)}.appearance-option:has(input:checked){border-color:var(--accent);background:var(--accent-soft);box-shadow:0 0 0 1px var(--accent) inset}.appearance-option input{margin:0;accent-color:var(--accent)}.appearance-option-copy strong{font-size:12px;font-weight:600}.appearance-preview{display:flex;width:38px;height:28px;overflow:hidden;border:1px solid var(--line);border-radius:6px;box-shadow:0 1px 2px #00000014}.appearance-preview i{flex:1}.theme-system .appearance-preview i:nth-child(1),.theme-clarity-light .appearance-preview i:nth-child(1){background:#f3f6fa}.theme-system .appearance-preview i:nth-child(2),.theme-clarity-light .appearance-preview i:nth-child(2){background:#315fda}.theme-system .appearance-preview i:nth-child(3),.theme-clarity-light .appearance-preview i:nth-child(3){background:#18212d}.theme-graphite-dark .appearance-preview i:nth-child(1){background:#10161f}.theme-graphite-dark .appearance-preview i:nth-child(2){background:#8ab1ff}.theme-graphite-dark .appearance-preview i:nth-child(3){background:#edf3fa}.theme-warm-neutral .appearance-preview i:nth-child(1){background:#f5f1e9}.theme-warm-neutral .appearance-preview i:nth-child(2){background:#357363}.theme-warm-neutral .appearance-preview i:nth-child(3){background:#fffdf8}.theme-high-contrast .appearance-preview i:nth-child(1){background:#fff}.theme-high-contrast .appearance-preview i:nth-child(2){background:#0047c2}.theme-high-contrast .appearance-preview i:nth-child(3){background:#000}.appearance-settings{padding:18px}.appearance-settings .card-head{flex-direction:column;align-items:flex-start;gap:6px;margin-bottom:14px;text-align:left}.appearance-settings .appearance-options{grid-template-columns:repeat(auto-fit,minmax(170px,1fr))}@media (max-width: 767px){.appearance-menu .appearance-options{position:fixed;inset:auto 12px 12px;width:auto;max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);overflow-y:auto}}.mcp-card{background:var(--surface-1);border-color:var(--line);box-shadow:var(--shadow)}.card{background:var(--surface-1);border:1px solid var(--line2);border-radius:14px;box-shadow:var(--shadow)}.card-head{gap:14px}.eyebrow{color:var(--muted);font-size:11px;font-weight:700}.sub{color:var(--muted)}.btn{min-height:36px;padding:8px 14px;border:1px solid var(--line);border-radius:9px;background:var(--surface-1);color:var(--text);box-shadow:none;font-weight:600;transition:background var(--duration),border-color var(--duration),color var(--duration),transform var(--duration),box-shadow var(--duration)}.btn:hover:not(:disabled){background:var(--surface-2);border-color:var(--accent);color:var(--accent)}.btn:active:not(:disabled){transform:translateY(1px)}.btn.primary{background:var(--accent);border-color:var(--accent);color:var(--on-accent)}.btn.primary:hover:not(:disabled){background:var(--accent-hover);color:var(--on-accent);box-shadow:var(--shadow);transform:translateY(-1px)}.btn.primary:active:not(:disabled){transform:translateY(0)}.btn.danger{background:var(--error-bg);border-color:var(--error);color:var(--error)}.btn.danger:hover:not(:disabled){background:var(--error-bg);border-color:var(--error);color:var(--error)}.btn.ghost{background:transparent;color:var(--muted)}.btn.small{min-height:32px;padding:6px 11px}.btn:disabled{border-color:var(--line2);background:var(--surface-2);color:var(--dim);box-shadow:none;opacity:.75}.btn.primary:disabled{border-color:var(--line2);background:var(--surface-3);color:var(--dim);opacity:1}.pill,.badge,.chip{border:1px solid var(--line);background:var(--surface-2);color:var(--muted)}.pill.ok,.badge.ok{color:var(--success);background:var(--success-bg);border-color:var(--success)}.pill.active,.badge.blue{color:var(--accent);background:var(--accent-soft);border-color:var(--accent)}.pill.warn,.chip.warn{color:var(--warning);background:var(--warning-bg);border-color:var(--warning)}.pill.bad,.chip.bad{color:var(--error);background:var(--error-bg);border-color:var(--error)}.notice{border:1px solid var(--info);border-radius:9px;background:var(--info-bg);color:var(--info)}.notice.warn{border-color:var(--warning);background:var(--warning-bg);color:var(--warning)}.notice.error{border-color:var(--error);background:var(--error-bg);color:var(--error)}.notice.info{border-color:var(--info);background:var(--info-bg);color:var(--info)}:is(input[type=text],input[type=number],input:not([type]),select,textarea,.select){border:1px solid var(--line);border-radius:var(--control-radius);background-color:var(--surface-1);color:var(--text);transition:border-color var(--duration),box-shadow var(--duration)}:is(input[type=text],input[type=number],input:not([type]),select,textarea,.select):hover:not(:disabled){border-color:var(--accent)}:is(input,select,textarea):disabled{background-color:var(--surface-2);color:var(--dim);opacity:.75}.select{background-image:linear-gradient(45deg,transparent 50%,var(--muted) 50%),linear-gradient(135deg,var(--muted) 50%,transparent 50%);background-position:calc(100% - 14px) 50%,calc(100% - 9px) 50%;background-size:5px 5px,5px 5px;background-repeat:no-repeat}input[type=checkbox],input[type=radio]{accent-color:var(--accent)}.modal-backdrop{background:var(--overlay)}.modal{max-height:calc(100vh - 32px);max-height:calc(100dvh - 32px);background:var(--surface-overlay);border:1px solid var(--line);border-radius:14px;box-shadow:var(--shadow)}.risk,.preflight-issue-title{color:var(--error)}.risk,.preflight-device.blocked{background:var(--error-bg);border-color:var(--error)}.warn-icon,.preflight-risk{color:var(--warning);background:var(--warning-bg);border-color:var(--warning)}.tour-tooltip,.port-picker-guide{background:var(--surface-overlay);color:var(--text);border-color:var(--line);box-shadow:var(--shadow)}.tour-highlight{border-color:var(--focus)}.dot.ok{background:var(--success)}.dot.active{background:var(--accent)}.dot.warn{background:var(--warning)}.dot.bad{background:var(--error)}.dot.gray{background:var(--dim)}@media (max-width: 767px){.btn.small,.checkline,.log-signal,.ota-filter-check{min-height:40px}}.app-shell{display:flex;width:100%;height:100vh;height:100dvh;overflow:hidden;background:var(--surface-page)}.app-sidebar{width:240px;flex:0 0 240px;height:100%;display:flex;flex-direction:column;padding:18px 12px 14px;border-right:1px solid var(--line);background:var(--surface-1);overflow-x:hidden;overflow-y:auto;transition:width var(--duration),flex-basis var(--duration),transform var(--duration);z-index:30}.app-shell.collapsed .app-sidebar{width:76px;flex-basis:76px;padding-inline:10px}.app-brand{display:flex;align-items:center;gap:10px;min-height:44px;padding:0 8px 18px;white-space:nowrap}.app-brand-logo{width:36px;height:36px;flex:0 0 36px}.app-brand-text strong{display:block;font-size:15px;color:var(--brand)}.app-brand-text span{display:block;color:var(--dim);font-size:11px}.app-nav{display:flex;flex-direction:column;gap:4px}.app-nav-label{padding:12px 10px 4px;color:var(--dim);font-size:10px;letter-spacing:.12em}.app-nav-item{position:relative;display:flex;align-items:center;gap:11px;width:100%;min-height:42px;padding:9px 11px;border:1px solid transparent;border-radius:10px;background:transparent;color:var(--muted);text-align:left;white-space:nowrap;transition:background var(--duration),color var(--duration),border-color var(--duration)}.app-nav-item:hover{background:var(--surface-2);color:var(--text)}.app-nav-item.active{background:var(--accent-soft);color:var(--accent);border-color:var(--line2);font-weight:650;box-shadow:inset 3px 0 0 var(--accent)}.app-nav-icon{width:20px;flex:0 0 20px;display:grid;place-items:center}.app-nav-badge{margin-left:auto;padding:1px 7px;border-radius:999px;background:var(--accent);color:var(--on-accent);font-size:10px}.app-side-foot{margin-top:auto;display:flex;flex-direction:column;gap:8px}.app-side-meta{display:flex;flex-wrap:wrap;gap:3px 8px;padding:0 10px}.app-version,.app-version-switch{color:var(--dim);font-size:10px}.app-version-switch{border:0;background:transparent;padding:0}.app-collapse{display:flex;align-items:center;gap:10px;width:100%;min-height:36px;padding:7px 10px;border:1px solid var(--line);border-radius:9px;background:var(--surface-1);color:var(--muted)}.app-shell.collapsed :is(.app-brand-text,.app-nav-text,.app-nav-badge,.app-side-meta,.app-collapse-text){display:none}.app-shell.collapsed :is(.app-nav-item,.app-collapse){justify-content:center;padding-inline:0}.app-shell.collapsed .app-nav-label{visibility:hidden;height:10px;padding:0}.app-main{flex:1;min-width:0;height:100%;display:flex;flex-direction:column}.app-header{min-height:72px;flex:0 0 auto;display:flex;align-items:center;gap:13px;padding:11px 26px;background:var(--surface-1);border-bottom:1px solid var(--line2);z-index:20}.app-page-heading{min-width:0}.app-page-heading h1{margin:0;font-size:20px;font-weight:700;line-height:1.3;letter-spacing:-.02em}.app-page-heading p{margin:2px 0 0;color:var(--muted);font-size:12px}.app-page-icon{width:36px;height:36px;flex:0 0 36px;border-radius:10px;background:var(--accent-soft);color:var(--accent);display:grid;place-items:center}.app-header-actions{margin-left:auto;display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}.analytics-status{display:inline-flex;align-items:center;gap:6px}.analytics-dot{width:8px;height:8px;flex:0 0 8px;border-radius:50%;background:var(--dim)}.analytics-status[data-status=loading] .analytics-dot{background:var(--info)}.analytics-status[data-status=ready] .analytics-dot{background:var(--success)}.analytics-status[data-status=blocked] .analytics-dot{background:var(--warning)}.analytics-status[data-status=disabled] .analytics-dot{background:var(--dim)}.app-content{flex:1;min-height:0;overflow:auto;padding:22px clamp(18px,2vw,30px) 32px;display:flex;flex-direction:column;gap:18px;background:radial-gradient(circle at 100% 0,var(--accent-soft),transparent 32%),var(--surface-page)}.app-page{display:flex;flex-direction:column;gap:18px;min-width:0}.app-page[hidden]{display:none!important}.app-nav-toggle,.app-nav-backdrop{display:none}.app-placeholder-card{padding:30px;color:var(--muted);background:var(--surface-1)}.app-placeholder-card h2{color:var(--text)}.app-placeholder-icon{color:var(--accent)}@media (max-width: 1279px) and (min-width: 768px){.app-sidebar{width:76px;flex-basis:76px;padding-inline:10px}:is(.app-brand-text,.app-nav-text,.app-nav-badge,.app-side-meta,.app-collapse-text){display:none}:is(.app-nav-item,.app-collapse){justify-content:center;padding-inline:0}.app-nav-label{visibility:hidden;height:10px;padding:0}.app-collapse{display:none}}@media (max-width: 767px){.app-nav-toggle{display:inline-grid;place-items:center;width:38px;height:38px;flex:0 0 38px;border:1px solid var(--line);border-radius:9px;background:var(--surface-1)}.app-sidebar{position:fixed;inset:0 auto 0 0;width:min(320px,86vw);flex-basis:auto;transform:translate(-105%);box-shadow:var(--shadow)}.app-shell.nav-open .app-sidebar{transform:translate(0)}.app-shell.collapsed .app-sidebar{width:min(320px,86vw);padding:18px 12px 14px}.app-shell.collapsed :is(.app-brand-text,.app-nav-text,.app-nav-badge){display:block}.app-shell.collapsed .app-side-meta{display:flex;flex-wrap:wrap;gap:3px 8px}.app-shell.collapsed .app-nav-item{justify-content:flex-start;padding-inline:11px}.app-shell.collapsed .app-nav-label{visibility:visible;height:auto;padding:12px 10px 4px}.app-collapse{display:none}.app-nav-backdrop{position:fixed;inset:0;z-index:25;border:0;background:var(--overlay)}.app-nav-backdrop:not([hidden]){display:block}.app-header{flex-wrap:wrap;padding:10px 14px;gap:9px}.app-page-icon,.app-page-heading p{display:none}.app-page-heading{flex:1}.app-page-heading h1{font-size:17px;white-space:nowrap}.app-header-actions{flex:1 1 100%;justify-content:flex-start;flex-wrap:nowrap;gap:7px;margin-left:0;padding:1px 1px 3px;overflow-x:auto;scrollbar-width:thin}.app-header-actions>*{flex:0 0 auto}.app-header-actions .analytics-label,.appearance-summary-text{display:none}.app-side-meta{display:flex}.app-content{padding:14px 12px 24px}}@media (max-width: 1100px){.ota-workspace{grid-template-columns:minmax(0,1fr)}.log-columns{grid-template-columns:minmax(0,1fr);grid-auto-columns:auto;grid-auto-flow:row;overflow-x:visible}}@media (max-width: 900px){.package-view .pkg-row{grid-template-columns:auto minmax(0,1fr);grid-template-areas:"icon main" "icon chips" "actions actions"}.package-view .pkg-actions{grid-area:actions;justify-content:flex-start;flex-wrap:wrap}.devices-title-row{align-items:flex-start}.layout-view .card-head{flex-wrap:wrap}.app-page.config-panel{grid-template-columns:minmax(150px,34vw) minmax(0,1fr)}.config-nav{flex-direction:column;flex-wrap:nowrap;padding:10px 8px;border-right:1px solid var(--line2);border-bottom:0}.cli-main{grid-template-columns:132px minmax(0,1fr)}}@media (max-width: 767px){.app-content.config-active{overflow-y:auto}.app-page.config-panel{display:flex;flex-direction:column;overflow:visible}.config-content,.config-form-body{overflow:visible}.config-nav{flex-direction:row;flex-wrap:nowrap;max-width:100%;overflow-x:auto;padding:8px;border-right:0;border-bottom:1px solid var(--line2)}.config-nav-item{flex:0 0 auto}.config-scopes,.config-keys{max-width:100%;flex-wrap:nowrap;overflow-x:auto}.config-toolbar{align-items:flex-start;flex-wrap:wrap}.cli-main{grid-template-columns:minmax(0,1fr)}.cli-nav{flex-direction:row;overflow-x:auto;padding:0 0 8px;border-right:0;border-bottom:1px solid var(--line2);border-radius:0}.cli-nav-item{flex:0 0 auto}.mcp-card{padding:14px}.mcp-row,.mcp-activity-row,.mcp-job-row{flex-wrap:wrap}.modal-backdrop,.onboarding-backdrop{padding:12px}.modal,.port-picker{max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px)}.onboarding-modal{max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px);overflow:auto}.onboarding-layout,.onboarding-main{grid-template-columns:minmax(0,1fr)}.onboarding-steps{flex-direction:row;overflow-x:auto;border-right:0;border-bottom:1px solid var(--line2)}.onboarding-step{flex:0 0 auto}.onboarding-main{padding:16px}.onboarding-illustration{order:-1}.onboarding-head,.onboarding-footer{padding:14px 16px;flex-wrap:wrap}.tour-tooltip{max-width:calc(100vw - 24px);max-height:calc(100vh - 24px);max-height:calc(100dvh - 24px)}}@media (max-width: 640px){.dev-params{grid-template-columns:1fr}.device .dev-head .dev-port{width:100%;margin-left:0;justify-content:flex-start}.device .dev-port .port-info{text-align:left;min-width:0}.device .dev-port .port-select{max-width:none;flex:1 1 160px}.devices-actions{width:100%}.devices-actions .btn{flex:1 1 auto}.compare{grid-template-columns:1fr}.modal-backdrop{padding:10px}.modal{max-height:calc(100vh - 20px);max-height:calc(100dvh - 20px)}}.ota-workspace{display:grid;grid-template-columns:minmax(340px,.82fr) minmax(0,1.18fr);gap:20px;align-items:start}.ota-column{min-width:0}.ota-panel{position:relative;display:flex;flex-direction:column;gap:16px;min-width:0;padding:24px;overflow:hidden;border:1px solid var(--line2);border-color:var(--line2);border-radius:16px;box-shadow:var(--shadow)}.ota-panel:before{content:"";position:absolute;inset:0 0 auto;height:3px;background:linear-gradient(90deg,var(--accent),var(--teal));opacity:.8}.ota-panel>*{min-width:0}.ota-panel>h2{display:flex;align-items:center;gap:11px;margin:0;padding-bottom:15px;border-bottom:1px solid var(--line2);color:var(--text);font-size:17px;font-weight:700;letter-spacing:-.01em}.ota-panel>h2:before{content:"";width:8px;height:8px;flex:0 0 8px;border-radius:3px;background:var(--accent);box-shadow:0 0 0 5px var(--accent-soft)}.ota-panel [hidden]{display:none!important}.ota-summary{padding:12px 14px;border:1px solid var(--line2);border-radius:10px;background:var(--surface-2);color:var(--muted);line-height:1.65}.ota-fields{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px}.ota-field-row{display:grid;grid-template-columns:120px minmax(0,1fr);gap:8px;align-items:center}.ota-fields .ota-field-row{grid-template-columns:minmax(0,1fr);gap:6px}.ota-field-row>label{color:var(--muted);font-size:12px;font-weight:600}.ota-field-row input[type=text]{width:100%;min-height:38px;padding:8px 11px;border:1px solid var(--line);border-radius:9px;background:var(--surface-1);color:var(--text);font-family:ui-monospace,Consolas,monospace;font-size:12px;transition:border-color var(--duration),box-shadow var(--duration)}.ota-field-row input[type=text]:hover:not(:disabled){border-color:var(--accent)}.ota-field-row input[type=text]:focus{border-color:var(--accent);outline:2px solid var(--focus);outline-offset:1px}.ota-panel>.ota-field-row{display:flex;justify-content:flex-start;gap:9px;padding:11px 13px;border:1px solid var(--line2);border-radius:10px;background:var(--surface-2)}.ota-panel>.ota-field-row input[type=checkbox]{width:16px;height:16px;margin:0}.ota-image-list{display:flex;flex-direction:column;gap:8px;max-height:280px;padding-right:2px;overflow:auto}.ota-image-row{display:grid;grid-template-columns:20px minmax(0,1fr) auto;gap:10px;align-items:center;padding:11px 12px;border:1px solid var(--line2);border-radius:10px;background:var(--surface-1);cursor:pointer;transition:border-color var(--duration),background var(--duration)}.ota-image-row:hover{border-color:var(--accent)}.ota-image-row:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.ota-image-row input{width:15px;height:15px;margin:0}.ota-image-name{min-width:0;overflow-wrap:anywhere;font-weight:600}.ota-image-meta{color:var(--muted);font-size:11px;text-align:right}.ota-actions{display:flex;gap:10px;flex-wrap:wrap}.ota-actions>button,.ota-connect,.ota-trace-download{min-height:38px;padding:8px 14px;border:1px solid var(--line);border-radius:9px;background:var(--surface-1);color:var(--text);font-size:12px;font-weight:650;cursor:pointer;transition:background var(--duration),border-color var(--duration),color var(--duration),transform var(--duration)}.ota-actions>button:hover:not(:disabled),.ota-connect:hover:not(:disabled),.ota-trace-download:hover:not(:disabled){border-color:var(--accent);background:var(--surface-2);color:var(--accent)}.ota-actions>button:active:not(:disabled),.ota-connect:active:not(:disabled){transform:translateY(1px)}.ota-actions>button[data-role=ota-generate],.ota-actions>button[data-role=ota-start]{border-color:var(--accent);background:var(--accent);color:var(--on-accent)}.ota-actions>button[data-role=ota-generate]:hover:not(:disabled),.ota-actions>button[data-role=ota-start]:hover:not(:disabled){border-color:var(--accent-hover);background:var(--accent-hover);color:var(--on-accent)}.ota-actions>button:disabled,.ota-connect:disabled,.ota-trace-download:disabled{border-color:var(--line2);background:var(--surface-2);color:var(--dim);cursor:not-allowed;opacity:.75}.ota-transport{display:flex;gap:12px;align-items:center;flex-wrap:wrap}.ota-transport-choice{display:inline-flex;gap:3px;padding:4px;border:1px solid var(--line2);border-radius:11px;background:var(--surface-2)}.ota-transport-option{display:flex;gap:7px;align-items:center;min-height:34px;padding:6px 14px;border-radius:8px;color:var(--muted);font-size:12px;font-weight:600;cursor:pointer}.ota-transport-option input{margin:0}.ota-transport-option:has(input:checked){background:var(--surface-1);color:var(--accent);box-shadow:0 1px 3px #0000001f;box-shadow:0 1px 3px color-mix(in srgb,var(--text) 14%,transparent)}.ota-transport-option:has(input:disabled){cursor:not-allowed;opacity:.6}.ota-connect{border-color:var(--accent);background:var(--accent-soft);color:var(--accent)}.ota-connect[data-state=connected]{border-color:var(--success);background:var(--success-bg);color:var(--success)}.ota-connect[data-state=busy]{opacity:.75}.ota-filters{display:grid;grid-template-columns:minmax(0,1fr);gap:12px;align-items:start}.ota-filter-group{display:flex;flex-direction:column;gap:0;padding:0;overflow:hidden;border:1px solid var(--line2);border-radius:12px;background:var(--surface-1)}.ota-filter-group>*{margin:0;padding:16px}.ota-filter-group>*+*{border-top:1px solid var(--line2)}.ota-filter-group .ota-filter-group{gap:12px;padding:16px;border:0;border-top:1px dashed var(--line);border-radius:0;background:var(--surface-2)}.ota-hint{padding:12px;border:1px solid var(--line2);border-radius:8px;background:var(--surface-2);color:var(--muted);font-size:12px;line-height:1.65}.ota-filter-group>.ota-hint{padding:12px 16px;border:0;border-top:1px solid var(--line2);background:transparent}.ota-filter-check{display:flex;gap:8px;align-items:center;color:var(--text);font-size:12px;font-weight:600}.ota-filter-check input{width:16px;height:16px;margin:0}.ota-filter-fields{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.ota-filter-field{display:flex;min-width:0;flex:0 0 auto;flex-direction:column;gap:8px;color:var(--muted);font-size:12px}.ota-filter-mode-field{border:0}.ota-filter-group>.ota-filter-mode-field{border-top:1px solid var(--line2)}.ota-filter-mode-field legend{padding:0}.ota-filter-mode-choice{display:inline-flex;align-self:flex-start;flex-wrap:wrap;max-width:100%;gap:4px;padding:4px;border-radius:12px;background:var(--surface-2)}.ota-filter-mode-option{display:flex;align-items:center;gap:8px;padding:0 4px;color:var(--muted);cursor:pointer}.ota-filter-mode-option input{width:16px;height:16px;margin:0}.ota-filter-mode-option span{display:flex;align-items:center;min-height:40px;padding:8px 12px;border-radius:8px;font-weight:600;white-space:nowrap}.ota-filter-mode-option input:checked+span{background:var(--surface-1);color:var(--accent);box-shadow:var(--shadow)}.ota-filter-mode-option:has(input:disabled){cursor:not-allowed;opacity:.6}.ota-filter-group input[type=text],.ota-filter-group select{width:100%;min-height:40px;padding:8px 12px;border:1px solid var(--line);border-radius:8px;background:var(--surface-1);color:var(--text);font-family:ui-monospace,Consolas,monospace;font-size:12px;box-sizing:border-box}.ota-filter-group input[type=text]:focus{outline:2px solid var(--focus);outline-offset:1px}.ota-filter-group input[type=text]:disabled{background:var(--surface-2);color:var(--dim)}.ota-status{display:flex;align-items:center;gap:9px;padding:11px 13px;border:1px solid var(--line2);border-radius:10px;background:var(--surface-2);font-size:12px;font-weight:600}.ota-status:before{content:"";width:7px;height:7px;flex:0 0 7px;border-radius:50%;background:var(--dim)}.ota-status[data-state=busy],.ota-status[data-state=running]{border-color:var(--focus)}.ota-status[data-state=busy]:before,.ota-status[data-state=running]:before{background:var(--accent)}.ota-status[data-state=connected],.ota-status[data-state=success]{border-color:var(--success);background:var(--success-bg);color:var(--success)}.ota-status[data-state=connected]:before,.ota-status[data-state=success]:before{background:var(--success)}.ota-status[data-state=error]{border-color:var(--error);background:var(--error-bg);color:var(--error)}.ota-status[data-state=error]:before{background:var(--error)}.ota-status[data-state=cancelled]{color:var(--muted)}.ota-device-info{display:grid;grid-template-columns:repeat(auto-fit,minmax(240px,1fr));gap:6px 18px;font-size:12px}.ota-info-line{min-width:0;overflow-wrap:anywhere}.ota-preflight{padding:11px 13px;border:1px solid var(--line2);border-radius:10px;background:var(--surface-2);color:var(--muted);font-size:12px}.ota-preflight[data-state=pass]{color:var(--success)}.ota-preflight[data-state=blocked]{color:var(--warning)}.ota-phase-row{display:flex;justify-content:space-between;gap:12px;margin-bottom:-7px;color:var(--muted);font-size:12px}.ota-phase-row>span:last-child{color:var(--text);font-weight:600}.ota-progress{height:10px;border-radius:999px;background:var(--surface-3);overflow:hidden}.ota-progress>span{display:block;width:0;height:100%;border-radius:inherit;background:linear-gradient(90deg,var(--accent),var(--teal));transition:width var(--duration)}.ota-progress-stats{display:flex;flex-wrap:wrap;justify-content:space-between;gap:8px;margin-top:-7px;color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums}.ota-timing{padding:13px 14px;border:1px solid var(--line2);border-radius:11px;background:var(--surface-2)}.ota-timing h3{margin:0 0 8px;font-size:13px}.ota-timing[data-state=failed]{border-color:var(--error)}.ota-timing-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:5px 18px}.ota-timing-row{display:flex;justify-content:space-between;gap:12px;font-size:12px}.ota-timing-row.total{grid-column:1 / -1;padding-bottom:7px;margin-bottom:3px;border-bottom:1px solid var(--line);font-weight:600}.ota-timing-label{color:var(--muted)}.ota-timing-value{font-variant-numeric:tabular-nums;text-align:right}.ota-log-section{display:flex;flex-direction:column;gap:10px;margin-top:2px;padding-top:16px;border-top:1px solid var(--line2)}.ota-log-header{display:flex;gap:12px;align-items:center;justify-content:space-between}.ota-log-header h3{margin:0;font-size:13px}.ota-trace-download{min-height:32px;padding:5px 11px;font-size:11px}.ota-log{min-height:54px;max-height:240px;overflow:auto;padding:11px 12px;border:1px solid var(--line2);border-radius:10px;background:var(--surface-page);color:var(--text);font-family:ui-monospace,Consolas,monospace;font-size:11.5px;line-height:1.6;scrollbar-color:var(--dim) var(--surface-page)}.ota-log-line.error{color:var(--error)}.ota-log-line.warn{color:var(--warning)}.ota-log-line.success{color:var(--success)}.ota-error{padding:10px 12px;border:1px solid var(--error);border-radius:9px;background:var(--error-bg);color:var(--error)}.ota-device-info,.ota-timing-value,.ota-progress-stats,.ota-field-row input{font-variant-numeric:tabular-nums}@media (max-width: 1100px){.ota-workspace{grid-template-columns:minmax(0,1fr)}}@media (max-width: 767px){.ota-panel{gap:14px;padding:18px;border-radius:13px}.ota-fields,.ota-filters,.ota-filter-fields,.ota-device-info,.ota-timing-grid,.ota-field-row{grid-template-columns:minmax(0,1fr)}.ota-image-row{grid-template-columns:20px minmax(0,1fr)}.ota-image-meta{grid-column:2;text-align:left}.ota-transport{align-items:stretch}.ota-connect{flex:1 1 130px}.ota-log{max-height:220px}}@media (max-width: 480px){.ota-panel{padding:16px}.ota-actions>button{flex:1 1 auto}}
