:root{--bg:#fff;--text:#111;--muted:#6b7280;--border:#e5e7eb;--pill:#f3f4f6}
*{box-sizing:border-box}
html,body{height:100%}
body{margin:0;font-family:ui-sans-serif,system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,"Apple Color Emoji","Segoe UI Emoji";color:var(--text);background:var(--bg)}
.hdr{position:sticky;top:0;z-index:10;backdrop-filter:blur(8px);background:rgba(255,255,255,.85);border-bottom:1px solid var(--border)}
.container{max-width:1200px;margin:0 auto;padding:12px;display:flex;align-items:center;justify-content:space-between;gap:12px}
.brand{font-weight:700;font-size:18px}
.hdr-actions{display:flex;align-items:center;gap:8px}
.btn{border:0;background:#111;color:#fff;padding:8px 14px;border-radius:16px;cursor:pointer;font-weight:600}
.btn:disabled{opacity:.5;cursor:not-allowed}
.input{padding:8px 10px;border:1px solid var(--border);border-radius:10px;margin-right:8px;outline:none}
.layout{height:calc(100vh - 57px);display:grid;grid-template-columns:18rem 1fr}
aside{border-right:1px solid var(--border);overflow:auto}
main{overflow:auto}
.section-title{font-weight:600;padding:8px 12px;font-size:12px;text-transform:uppercase;color:var(--muted);letter-spacing:.08em}
.switch-item{width:100%;text-align:left;border:0;background:transparent;padding:10px 12px;border-radius:12px;cursor:pointer}
.switch-item:hover{background:#f9fafb}
.switch-item.active{background:#111;color:#fff}
.subtle{color:var(--muted);font-size:12px}
.muted{color:var(--muted)}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-size:12px}
.flex{display:flex;align-items:center;gap:8px}
.grid{display:grid;gap:16px}
.grid-cols-2{grid-template-columns:1fr 1fr}
.pad{padding:12px}
.card{border:1px solid var(--border);border-radius:16px;overflow:hidden;margin:16px}
.card-head{background:#f9fafb;padding:10px 12px;font-weight:600}
table{width:100%;border-collapse:collapse;font-size:14px}
thead{background:#f9fafb}
th,td{padding:8px 10px;text-align:left;border-top:1px solid var(--border)}
mark{background:#fde68a;padding:0 .1em;border-radius:3px}
@media (max-width:900px){.layout{grid-template-columns:1fr}aside{height:220px}}
/* Подсветка найденного порта при переходе */
tr.hi { background:#fff7cc; transition: background 1.5s ease; }