:root{--bg:#f4f7f8;--surface:#fff;--surface-2:#f7fafb;--line:#d9e2e5;--line-strong:#b9c9ce;--text:#1c2b32;--muted:#5a6e76;--accent:#0b7d88;--accent-soft:#e6f3f4;--green:#17845a;--amber:#9a6410;--red:#b8343e;color:var(--text);background:var(--bg);font:15px/1.6 Inter,system-ui,-apple-system,Segoe UI,PingFang SC,Microsoft YaHei,sans-serif}*{box-sizing:border-box}body{flex-direction:column;min-height:100vh;margin:0;display:flex}[hidden]{display:none!important}h1,h2,h3,p{margin:0}h1{letter-spacing:-.02em;font-size:26px;line-height:1.3}h2{font-size:17px}h3{margin-bottom:10px;font-size:15px}code,pre,.mono{font-family:ui-monospace,SFMono-Regular,Consolas,Liberation Mono,monospace}.mono{overflow-wrap:anywhere;font-size:12px}.muted{color:var(--muted);font-size:13px}.visually-hidden{clip-path:inset(50%);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}button,.button{font:inherit;border:1px solid var(--line-strong);background:var(--surface);min-height:38px;color:var(--text);cursor:pointer;white-space:nowrap;border-radius:8px;justify-content:center;align-items:center;gap:6px;padding:0 16px;font-size:14px;display:inline-flex}button:hover:not(:disabled),.button:hover{border-color:var(--accent)}button:focus-visible,.button:focus-within,input:focus-visible,select:focus-visible{outline-offset:2px;outline:2px solid #5fb4bc}button:disabled,.button.disabled{opacity:.45;cursor:not-allowed}.primary{background:var(--accent);border-color:var(--accent);color:#fff}.primary:hover:not(:disabled){background:#096b75}.secondary{color:var(--accent)}.ghost{color:var(--muted);background:0 0;border-color:#0000}.danger{color:var(--red);border-color:#e2b4b8}.small{min-height:32px;padding:0 12px;font-size:13px}.large{min-height:46px;padding:0 26px;font-size:16px}.link{min-height:0;color:var(--accent);background:0 0;border:0;padding:0;font-weight:600}input,select{font:inherit;border:1px solid var(--line-strong);background:var(--surface);min-height:38px;color:var(--text);border-radius:8px;min-width:0;padding:0 10px;font-size:14px}.actions{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.actions.end{justify-content:flex-end}.topbar{background:var(--surface);border-bottom:1px solid var(--line);z-index:20;justify-content:space-between;align-items:center;gap:16px;padding:12px max(20px,50vw - 550px);display:flex;position:sticky;top:0}.brand{letter-spacing:.02em;align-items:center;gap:10px;font-weight:700;display:flex}.brand-mark{border:1.5px solid var(--accent);width:32px;height:32px;color:var(--accent);border-radius:6px;place-items:center;font:800 12px/1 ui-monospace,monospace;display:grid}.topbar-actions{align-items:center;gap:8px;display:flex}.pill{background:var(--surface-2);border:1px solid var(--line);color:var(--muted);border-radius:999px;align-items:center;gap:7px;padding:4px 12px;font-size:13px;display:inline-flex}.pill:before{content:"";background:var(--line-strong);border-radius:50%;width:8px;height:8px}.pill.online{color:var(--green);background:#eef8f2;border-color:#b5dcc8}.pill.online:before{background:var(--green)}.pill.offline{color:var(--amber);background:#fff8e8;border-color:#e5cf9f}.pill.offline:before{background:var(--amber)}main{flex-direction:column;flex:1;gap:18px;width:100%;max-width:1100px;margin:0 auto;padding:24px 20px 120px;display:flex}.card{background:var(--surface);border:1px solid var(--line);border-radius:14px;padding:24px}.banner{border-radius:10px;padding:12px 16px;font-size:14px}.banner.warn{color:#6f4d12;background:#fff8e8;border:1px solid #e5cf9f}.hero{flex-direction:column;gap:18px;padding:36px;display:flex}.hero h1{font-size:30px}.lead{color:var(--muted);max-width:720px}.steps{counter-reset:step;grid-template-columns:repeat(auto-fit,minmax(260px,1fr));gap:12px;margin:0;padding:0;list-style:none;display:grid}.steps li{counter-increment:step;border:1px solid var(--line);background:var(--surface-2);border-radius:10px;grid-template-columns:32px 1fr;column-gap:12px;padding:16px;display:grid}.steps li:before{content:counter(step);background:var(--accent-soft);width:30px;height:30px;color:var(--accent);border-radius:50%;grid-row:span 2;place-items:center;font-weight:700;display:grid}.steps span,.hint{color:var(--muted);font-size:13px}.device{flex-direction:column;gap:18px;display:flex}.device-heading{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.device-heading p{margin-top:4px}.device-links{flex-wrap:wrap;align-items:center;gap:8px;display:flex}.link-state{border:1px solid var(--line);color:var(--muted);border-radius:999px;align-items:center;gap:7px;padding:4px 12px;font-size:13px;display:inline-flex}.link-state:before{content:"";background:var(--line-strong);border-radius:50%;width:8px;height:8px}.link-state.online{color:var(--green);border-color:#b5dcc8}.link-state.online:before{background:var(--green)}.metrics{border:1px solid var(--line);border-radius:10px;grid-template-columns:repeat(4,1fr);margin:0;display:grid;overflow:hidden}.metrics div{border-right:1px solid var(--line);padding:12px 16px}.metrics div:last-child{border-right:0}.metrics dt{color:var(--muted);font-size:12px}.metrics dd{margin:4px 0 0;font:600 15px/1.3 ui-monospace,monospace}.callout{background:var(--accent-soft);border:1px solid #b8dde0;border-radius:10px;justify-content:space-between;align-items:center;gap:16px;padding:14px 16px;display:flex}.callout div{flex-direction:column;gap:2px;display:flex}.callout span{color:var(--muted);font-size:13px}.callout.subtle{background:var(--surface-2);border-color:var(--line);color:var(--muted);font-size:13px;display:block}.callout.warn{background:#fff8e8;border-color:#e5cf9f}.tabs{border-bottom:1px solid var(--line);gap:4px;margin-bottom:-6px;display:flex;overflow-x:auto}.tabs button{min-height:44px;color:var(--muted);background:0 0;border:0;border-bottom:2px solid #0000;border-radius:0;padding:0 18px}.tabs button[aria-selected=true]{color:var(--text);border-bottom-color:var(--accent);font-weight:650}.panel{flex-direction:column;gap:16px;display:flex}.panel-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:16px;display:flex}.panel-head p{margin-top:4px}.screen-stage{background:#15232a;border-radius:10px;place-items:center;min-height:280px;padding:16px;display:grid;position:relative}#screen{max-width:100%;height:auto;image-rendering:pixelated;border-radius:4px}#screen-placeholder{color:#9fb5bd;font-size:14px;position:absolute}.screen-stage:has(#screen-placeholder:not([hidden])) #screen{visibility:hidden}#logs{color:#d6efe4;white-space:pre-wrap;overflow-wrap:anywhere;background:#15232a;border-radius:10px;height:360px;margin:0;padding:14px;font-size:12.5px;line-height:1.55;overflow:auto}.command{gap:10px;display:flex}.command input{flex:1;font-family:ui-monospace,monospace}.inline-field{color:var(--muted);align-items:center;gap:8px;font-size:13px;display:inline-flex}.breadcrumb{border:1px solid var(--line);background:var(--surface-2);border-radius:8px;flex-wrap:wrap;align-items:center;gap:2px;padding:8px 12px;font-family:ui-monospace,monospace;font-size:13px;display:flex}.breadcrumb button{min-height:26px;color:var(--accent);font:inherit;background:0 0;border:0;padding:0 6px}.breadcrumb span{color:var(--muted)}.table-wrap{overflow-x:auto}table{border-collapse:collapse;width:100%;font-size:14px}th{text-align:left;color:var(--muted);border-bottom:1px solid var(--line);padding:8px 12px;font-size:12px;font-weight:600}td{vertical-align:middle;border-bottom:1px solid #edf2f4;padding:8px 12px}td.right,th.right{text-align:right}td.right button{margin-left:6px}.kind{width:42px;color:var(--muted);margin-right:10px;font:600 10px/1 ui-monospace,monospace;display:inline-block}.kind.directory{color:var(--accent)}.empty{text-align:center;color:var(--muted);padding:28px;font-size:14px}.firmware-pick{grid-template-columns:2fr 1fr;gap:12px;display:grid}.dropzone{border:1.5px dashed var(--line-strong);background:var(--surface-2);cursor:pointer;border-radius:10px;flex-direction:column;gap:4px;padding:20px;display:flex}.dropzone:hover,.dropzone:focus-within{border-color:var(--accent);background:var(--accent-soft)}.dropzone span{color:var(--muted);overflow-wrap:anywhere;font-size:13px}.secondary-zone strong{font-weight:600}#clear-key{align-self:flex-end;margin-top:-8px}.summary{background:#f3faf6;border:1px solid #b5dcc8;border-radius:10px;padding:18px}.summary h3{color:var(--green)}.summary.failed{background:#fdf3f4;border-color:#e2b4b8}.summary.failed h3{color:var(--red)}.summary dl{grid-template-columns:1fr 1fr;gap:8px 24px;margin:0 0 12px;display:grid}.summary dt{color:var(--muted);font-size:12px}.summary dd{overflow-wrap:anywhere;margin:0;font-size:14px}.summary table{background:var(--surface);border-radius:8px}.summary details{margin-top:10px}.summary pre{max-height:300px;font-size:12px;overflow:auto}.methods{border:0;grid-template-columns:1fr 1fr;gap:12px;margin:0;padding:0;display:grid}.methods legend{margin-bottom:8px;font-weight:600}.method{border:1px solid var(--line);cursor:pointer;border-radius:10px;gap:10px;padding:14px;display:flex}.method:has(input:checked){border-color:var(--accent);background:var(--accent-soft)}.method:has(input:disabled){cursor:not-allowed;opacity:.6}.method input{accent-color:var(--accent);min-height:0;margin-top:4px}.method span{flex-direction:column;gap:2px;display:flex}.method small{color:var(--muted);font-size:13px}.rpc{grid-template-columns:1fr 1fr 2fr auto;align-items:end;gap:12px;display:grid}.rpc label{color:var(--muted);flex-direction:column;gap:4px;font-size:13px;display:flex}.result{border:1px solid var(--line);background:var(--surface-2);white-space:pre-wrap;overflow-wrap:anywhere;border-radius:10px;max-height:320px;margin:0;padding:14px;font-size:12px;overflow:auto}.spaced{margin-top:8px}.activity{z-index:30;background:var(--surface);border:1px solid var(--line-strong);border-radius:12px;align-items:center;gap:12px;width:min(720px,100vw - 32px);padding:12px 16px;display:flex;position:fixed;bottom:20px;left:50%;transform:translate(-50%);box-shadow:0 10px 30px #1c2b3226}.activity-body{flex-direction:column;flex:1;gap:6px;min-width:0;font-size:14px;display:flex}.activity progress{width:100%;height:6px;accent-color:var(--accent)}.activity.busy{border-color:#8cc8ce}.activity.busy #operation:before{content:"";border:2px solid var(--accent);vertical-align:-1px;border-right-color:#0000;border-radius:50%;width:10px;height:10px;margin-right:8px;animation:.8s linear infinite spin;display:inline-block}.activity.info{border-color:#b5dcc8}.activity.warn{background:#fffaf0;border-color:#e5cf9f}.activity.error{color:#8b2730;background:#fdf3f4;border-color:#e2b4b8}@keyframes spin{to{transform:rotate(360deg)}}.dialog-backdrop{z-index:40;background:#1c2b3266;place-items:center;padding:16px;display:grid;position:fixed;inset:0}.dialog{background:var(--surface);border-radius:14px;flex-direction:column;gap:14px;width:min(520px,100%);padding:24px;display:flex;box-shadow:0 20px 50px #1c2b3240}footer{text-align:center;color:var(--muted);border-top:1px solid var(--line);background:var(--surface);padding:16px;font-size:12px}@media (width<=760px){.hero{padding:24px}.hero h1{font-size:24px}.metrics{grid-template-columns:1fr 1fr}.metrics div:nth-child(2){border-right:0}.metrics div:nth-child(-n+2){border-bottom:1px solid var(--line)}.callout{flex-direction:column;align-items:stretch}.firmware-pick,.methods,.summary dl{grid-template-columns:1fr}.rpc{grid-template-columns:1fr 1fr}.rpc .wide,.rpc button{grid-column:span 2}}
