:root{--navy: #232F3E;--orange: #FF9900;--blue: #0073BB;--ink: #16191f;--muted: #687078;--line: #e4e7ea;--bg: #f6f7f8}*{box-sizing:border-box}body{margin:0;font-family:-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;color:var(--ink);background:var(--bg)}a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}.center-screen{min-height:100vh;display:flex;align-items:center;justify-content:center}.spinner{width:34px;height:34px;border:3px solid var(--line);border-top-color:var(--orange);border-radius:50%;animation:spin .8s linear infinite}@keyframes spin{to{transform:rotate(360deg)}}.login-card{background:#fff;padding:40px;border-radius:14px;max-width:420px;text-align:center;box-shadow:0 8px 30px #00000014}.login-badge,.brand-badge{background:var(--navy);color:var(--orange);font-weight:800;padding:4px 10px;border-radius:6px;letter-spacing:1px}.login-card h1{font-size:22px;margin:18px 0 8px}.login-card p{color:var(--muted);font-size:14px;line-height:1.5}.btn-primary{margin-top:20px;background:var(--orange);color:#16191f;border:0;font-weight:700;padding:11px 22px;border-radius:8px;cursor:pointer;font-size:15px}.btn-primary:hover{background:#ec7211}.btn-ghost{background:transparent;border:1px solid var(--line);padding:6px 12px;border-radius:7px;cursor:pointer;color:var(--ink)}.btn-ghost:hover{background:#eef0f2}.topbar{background:var(--navy);color:#fff;display:flex;align-items:center;justify-content:space-between;padding:12px 22px}.brand{font-weight:700;display:flex;align-items:center;gap:10px}.topbar-right{display:flex;align-items:center;gap:14px}.user{font-size:13px;color:#cfd6dd}.topbar-right .btn-ghost{color:#fff;border-color:#45505e}.dash{max-width:1180px;margin:0 auto;padding:22px}.dash-head{display:flex;align-items:flex-end;justify-content:space-between;margin-bottom:16px}.dash-head h2{margin:0 0 2px}.muted{color:var(--muted);font-size:13px}.kpi-row{display:grid;grid-template-columns:repeat(6,1fr);gap:12px;margin-bottom:18px}.kpi-row.kpi-4{grid-template-columns:repeat(4,1fr)}.section-label{font-size:12px;font-weight:700;text-transform:uppercase;letter-spacing:.6px;color:var(--muted);margin:6px 0 10px}.kpi{background:#fff;border:1px solid var(--line);border-radius:12px;padding:16px}.kpi-value{font-size:26px;font-weight:800;color:var(--navy)}.kpi-label{font-size:12px;color:var(--muted);margin-top:2px;text-transform:uppercase;letter-spacing:.4px}.kpi-sub{font-size:12px;color:var(--muted);margin-top:6px}.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:14px;margin-bottom:14px}.card{background:#fff;border:1px solid var(--line);border-radius:12px;padding:18px;margin-bottom:14px}.card h3{margin:0 0 14px;font-size:15px}.riskbar{display:flex;height:26px;border-radius:6px;overflow:hidden}.riskseg{color:#fff;font-size:12px;font-weight:700;display:flex;align-items:center;justify-content:center;min-width:22px}.risk-legend{display:flex;gap:16px;margin-top:10px;font-size:13px;color:var(--muted)}.risk-legend i{display:inline-block;width:10px;height:10px;border-radius:2px;margin-right:5px}.vuln-line{margin-top:14px;font-size:14px;color:var(--ink)}.vuln-line .crit{color:var(--red, #D13212)}.tbl{width:100%;border-collapse:collapse;font-size:13px}.tbl th{text-align:left;color:var(--muted);font-weight:600;padding:8px 10px;border-bottom:2px solid var(--line)}.tbl td{padding:9px 10px;border-bottom:1px solid var(--line)}.zonedot{display:inline-block;width:9px;height:9px;border-radius:50%;margin-right:6px}.src{font-size:11px;font-weight:700;padding:2px 7px;border-radius:5px;text-transform:uppercase}.src-saferai{background:#e6f0fb;color:#0073bb}.src-forge{background:#fff1e0;color:#b45309}.src-kodo{background:#efe6fb;color:#6b21a8}.pill{font-size:11px;font-weight:700;padding:3px 9px;border-radius:20px}.pill-green{background:#e3f5e9;color:#1d8102}.pill-blue{background:#e6f0fb;color:#0073bb}.pill-amber{background:#fdf0d5;color:#b45309}.pill-red{background:#fbe4e0;color:#d13212}.pill-gray{background:#eef0f2;color:#687078}.error-box{max-width:700px;margin:60px auto;background:#fbe4e0;color:#922;padding:20px;border-radius:10px}@media(max-width:900px){.kpi-row{grid-template-columns:repeat(2,1fr)}.grid-2{grid-template-columns:1fr}}
