*{box-sizing:border-box}body{font-family:Arial,Helvetica,sans-serif;margin:0;padding:0;background:#f5f7fb;color:#222}header{background:#2f6fa0;color:#fff;padding:12px 18px;display:flex;align-items:center;justify-content:space-between}h1{margin:0;font-size:20px}.controls{display:flex;gap:12px;align-items:center}button{padding:8px 10px;border-radius:4px;border:none;background:#4a9bd6;color:#fff;cursor:pointer}button:hover{opacity:.95}table{width:100%;border-collapse:collapse;margin-top:12px;background:#fff}th,td{padding:8px;border:1px solid #e1e6ef;text-align:left;font-size:14px}th{background:#eef6ff}tr.offline td{opacity:.6}

/* Scan status */
.scan-status{background:rgba(255,255,255,0.06);padding:6px 10px;border-radius:4px;font-size:13px}
.scan-status .muted{opacity:.8;color:#e6f1fb}
.scan-status.busy{background:#ffd; color:#333}
.scan-status.error{background:#ffd6d6;color:#900}

/* small spinner */
.spinner{display:inline-block;width:12px;height:12px;border-radius:50%;border:2px solid rgba(255,255,255,0.25);border-top-color:#fff;border-right-color:rgba(255,255,255,0.08);margin-right:6px;vertical-align:middle;opacity:0.95}
.spinner.spinning{animation:spin 1s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}

/* debug panel */
.debug{background:#0b0f14;color:#dbe9ff;padding:8px;border-radius:4px;font-size:12px;max-height:140px;overflow:auto;border:1px solid rgba(255,255,255,0.04)}