*,*::before,*::after{box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,'Segoe UI',Roboto,sans-serif;margin:0;background:#f4f6f8;color:#0D2A3E}
a{color:#00A86B;text-decoration:none}
a:hover{text-decoration:underline}
.muted{color:#6b7785}
.small{font-size:13px}
.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace}
.error{background:#fee;color:#a00;padding:10px 14px;border-radius:6px;margin-bottom:16px;font-size:14px}

/* Auth page */
body.auth{display:flex;align-items:center;justify-content:center;min-height:100vh;padding:20px}
.card{background:#fff;border-radius:10px;padding:32px;box-shadow:0 4px 20px rgba(0,0,0,0.08);width:100%;max-width:400px}
.card h1{margin:0 0 4px;color:#0D2A3E}
.card form{margin-top:24px;display:flex;flex-direction:column;gap:14px}
.card label{display:flex;flex-direction:column;gap:6px;font-size:14px;font-weight:500}
.card input{padding:10px 12px;border:1px solid #d4dae0;border-radius:6px;font-size:15px}
.card input:focus{outline:none;border-color:#00A86B}
.card button{padding:12px;background:#00A86B;color:#fff;border:none;border-radius:6px;font-size:15px;font-weight:600;cursor:pointer;margin-top:8px}
.card button:hover{background:#008a58}

/* App layout */
.topbar{display:flex;justify-content:space-between;align-items:center;background:#0D2A3E;color:#fff;padding:14px 24px;flex-wrap:wrap;gap:12px}
.topbar .brand{font-weight:600}
.topbar .brand a{color:#fff;text-decoration:none}
.topbar nav{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.topbar nav a{color:#fff;font-size:14px}
.topbar .muted{color:#a8b4c0}

.container{max-width:1100px;margin:0 auto;padding:32px 24px}
.container h1{margin:0 0 24px}
.page-head{display:flex;justify-content:space-between;align-items:flex-start;flex-wrap:wrap;gap:16px;margin-bottom:24px}
.page-head h1{margin:0 0 4px}

/* Stats grid */
.grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(200px,1fr));gap:16px;margin-bottom:32px}
.stat{background:#fff;padding:20px;border-radius:8px;box-shadow:0 2px 6px rgba(0,0,0,0.04)}
.stat-num{font-size:32px;font-weight:700;color:#00A86B}
.stat-label{font-size:13px;color:#6b7785;margin-top:4px}

/* Generic blocks */
.empty-state,.card-block{background:#fff;padding:24px;border-radius:8px;box-shadow:0 2px 6px rgba(0,0,0,0.04);margin-bottom:20px}
.empty-state{text-align:center;padding:32px}
.empty-state h2,.card-block h3{margin:0 0 8px;color:#0D2A3E}
.card-block p{margin:0 0 16px;color:#4a5663;line-height:1.5}

/* Buttons */
.btn{display:inline-block;padding:10px 18px;background:#00A86B;color:#fff;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;text-decoration:none;margin-right:8px}
.btn:hover{background:#008a58;color:#fff;text-decoration:none}
.btn:disabled{background:#a3b1be;cursor:not-allowed}
.btn-secondary{background:#0D2A3E}
.btn-secondary:hover{background:#1a3d56}

/* Info grid */
.info-grid{background:#fff;border-radius:8px;padding:8px 0;margin-bottom:24px;box-shadow:0 2px 6px rgba(0,0,0,0.04)}
.info-row{display:flex;justify-content:space-between;align-items:center;padding:12px 20px;border-bottom:1px solid #eef1f4;gap:16px;flex-wrap:wrap}
.info-row:last-child{border-bottom:none}
.info-label{font-weight:600;font-size:13px;color:#6b7785;text-transform:uppercase;letter-spacing:0.04em}
.info-value{text-align:right;word-break:break-all}

/* Badges */
.badge{display:inline-block;padding:2px 10px;border-radius:12px;font-size:12px;font-weight:600}
.badge-ok{background:#d1f4e0;color:#0a6b3e}
.badge-warn{background:#fef3c7;color:#92400e}

/* Tables */
.table-wrap{background:#fff;border-radius:8px;overflow-x:auto;box-shadow:0 2px 6px rgba(0,0,0,0.04)}
.data-table{width:100%;border-collapse:collapse}
.data-table th,.data-table td{text-align:left;padding:12px 16px;border-bottom:1px solid #eef1f4;vertical-align:top}
.data-table th{background:#f7f9fb;font-size:12px;font-weight:700;color:#6b7785;text-transform:uppercase;letter-spacing:0.04em}
.data-table tr:last-child td{border-bottom:none}
.data-table tr:hover td{background:#fafbfc}

/* Pagination */
.pagination{display:flex;gap:6px;justify-content:center;margin-top:20px;flex-wrap:wrap}
.pagination a{padding:6px 12px;border:1px solid #d4dae0;border-radius:6px;background:#fff;color:#0D2A3E;font-size:14px}
.pagination a.active{background:#00A86B;color:#fff;border-color:#00A86B}
.pagination a:hover{text-decoration:none;border-color:#00A86B}

/* Scan output */
.scan-output{background:#0D2A3E;color:#d4e2ee;border-radius:8px;padding:16px;margin-top:20px}
.scan-header{display:flex;justify-content:space-between;align-items:center;padding-bottom:12px;border-bottom:1px solid #1f4360;margin-bottom:12px;color:#fff;font-weight:600}
.scan-output pre{margin:0;white-space:pre-wrap;word-break:break-word;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:13px;line-height:1.5;max-height:400px;overflow-y:auto;color:#9bb5cd}
