*{margin:0;padding:0;box-sizing:border-box}
:root{
  --bg:#0b0c10;--surface:#12131a;--surface2:#191b24;--surface3:#1f212c;
  --border:#262838;--border-light:#2f3148;
  --text:#e8eaf2;--dim:#6b6f8a;--dim2:#4e5170;
  --accent:#5e8df7;--accent2:#3d6ce6;--accent-glow:rgba(94,141,247,0.12);
  --green:#3dd68c;--green-dim:rgba(61,214,140,0.1);
  --amber:#f0b429;--amber-dim:rgba(240,180,41,0.1);
  --red:#ef5350;--red-dim:rgba(239,83,80,0.1);
  --purple:#9c7cf4;--purple-dim:rgba(156,124,244,0.1);
  --cyan:#22d3ee;--cyan-dim:rgba(34,211,238,0.1);
  --critical:#ef4444;--high:#f87171;--medium:#fbbf24;--low:#5e8df7;--info:#6b6f8a;
}
html{scrollbar-width:thin;scrollbar-color:var(--border) var(--bg)}
::-webkit-scrollbar{width:7px;height:7px}::-webkit-scrollbar-track{background:var(--bg)}::-webkit-scrollbar-thumb{background:var(--border);border-radius:4px}
body{background:var(--bg);color:var(--text);font-family:'Outfit',system-ui,sans-serif;line-height:1.55;min-height:100vh}
.wrap{max-width:1240px;margin:0 auto;padding:1.5rem 2rem}

/* ─── Header ─── */
.hdr{display:flex;align-items:center;justify-content:space-between;margin-bottom:1.5rem;flex-wrap:wrap;gap:12px}
.hdr-left{display:flex;align-items:center;gap:12px}
.hdr-icon{width:38px;height:38px;border-radius:10px;background:linear-gradient(135deg,var(--accent),var(--cyan));display:flex;align-items:center;justify-content:center;box-shadow:0 4px 20px rgba(94,141,247,0.25)}
.hdr h1{font-size:1.3rem;font-weight:800;letter-spacing:-0.02em;background:linear-gradient(135deg,var(--accent),var(--cyan));-webkit-background-clip:text;-webkit-text-fill-color:transparent}
.hdr .sub{font-size:0.72rem;color:var(--dim);font-weight:500;letter-spacing:0.03em}
.hdr-actions{display:flex;gap:8px;flex-wrap:wrap}

/* ─── Buttons ─── */
.btn{border:none;border-radius:9px;padding:0.5rem 1.1rem;font-size:0.8rem;font-weight:600;cursor:pointer;font-family:inherit;display:inline-flex;align-items:center;gap:6px;transition:all 0.15s}
.btn:hover{transform:translateY(-1px)}.btn:active{transform:scale(0.97)}
.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;box-shadow:0 2px 12px rgba(94,141,247,0.3)}
.btn-ghost{background:var(--surface2);color:var(--dim);border:1px solid var(--border)}
.btn-ghost:hover{color:var(--text);border-color:var(--border-light)}
.btn-sm{padding:0.35rem 0.8rem;font-size:0.74rem;border-radius:7px}

/* ─── Upload ─── */
.upload{border:2px dashed var(--border);border-radius:18px;padding:4rem 2rem;text-align:center;background:var(--surface);cursor:pointer;transition:all 0.25s}
.upload:hover,.upload.over{border-color:var(--accent);background:rgba(94,141,247,0.03)}
.upload input{display:none}
.upload h3{font-size:1rem;font-weight:700;margin:12px 0 4px}
.upload p{color:var(--dim);font-size:0.82rem}

/* ─── Tabs ─── */
.tabs{display:flex;gap:2px;background:var(--surface);border:1px solid var(--border);border-radius:11px;padding:3px;margin-bottom:1.4rem;overflow-x:auto}
.tab{padding:0.5rem 1rem;border-radius:9px;border:none;font-size:0.78rem;font-weight:600;cursor:pointer;font-family:inherit;white-space:nowrap;transition:all 0.15s;background:transparent;color:var(--dim)}
.tab.active{background:var(--accent-glow);color:var(--accent)}
.tab .cnt{margin-left:5px;font-size:0.68rem;background:rgba(255,255,255,0.06);padding:1px 6px;border-radius:7px}
.tab.active .cnt{background:rgba(94,141,247,0.18)}

/* ─── Cards ─── */
.cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(175px,1fr));gap:0.7rem;margin-bottom:1.5rem}
.card{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:0.9rem 1.1rem;position:relative;overflow:hidden}
.card::before{content:'';position:absolute;top:0;left:0;right:0;height:2px;border-radius:12px 12px 0 0}
.card.c-blue::before{background:var(--accent)}.card.c-green::before{background:var(--green)}.card.c-purple::before{background:var(--purple)}.card.c-red::before{background:var(--red)}.card.c-amber::before{background:var(--amber)}.card.c-cyan::before{background:var(--cyan)}
.card .lbl{font-size:0.66rem;text-transform:uppercase;letter-spacing:0.09em;color:var(--dim);font-weight:600;margin-bottom:3px}
.card .val{font-size:1.5rem;font-weight:800;font-family:'JetBrains Mono',monospace;letter-spacing:-0.03em}
.card .sub{font-size:0.7rem;color:var(--dim);margin-top:2px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

/* ─── Section ─── */
.sec{margin-bottom:1.8rem}
.sec h2{font-size:0.95rem;font-weight:700;margin-bottom:0.7rem;display:flex;align-items:center;gap:7px;letter-spacing:-0.01em}
.dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}

/* ─── Tables ─── */
.tw{background:var(--surface);border:1px solid var(--border);border-radius:12px;overflow:hidden}
.tw-scroll{overflow-x:auto;max-height:550px;overflow-y:auto}
table{width:100%;border-collapse:collapse;font-size:0.79rem}
thead th{text-align:left;padding:0.55rem 0.7rem;font-size:0.64rem;text-transform:uppercase;letter-spacing:0.07em;color:var(--dim);font-weight:600;border-bottom:1px solid var(--border);background:var(--surface);position:sticky;top:0;z-index:2}
tbody td{padding:0.48rem 0.7rem;border-bottom:1px solid var(--border);vertical-align:middle}
tbody tr:hover{background:var(--surface2)}

/* ─── Badges ─── */
.badge{display:inline-block;padding:2px 8px;border-radius:6px;font-size:0.67rem;font-weight:600;white-space:nowrap}
.b-mod{background:var(--accent-glow);color:var(--accent)}.b-acc{background:var(--green-dim);color:var(--green)}.b-syn{background:var(--purple-dim);color:var(--purple)}.b-sha{background:var(--amber-dim);color:var(--amber)}.b-dlp{background:var(--red-dim);color:var(--red)}
.sev{display:inline-block;width:7px;height:7px;border-radius:50%;margin-right:4px}
.fe{font-family:'JetBrains Mono',monospace;font-size:0.67rem;padding:2px 6px;border-radius:4px;background:var(--surface3);color:var(--dim)}
.mono{font-family:'JetBrains Mono',monospace}

/* ─── Bars ─── */
.bar-row{display:flex;align-items:center;gap:8px;margin-bottom:5px}
.bar-l{width:60px;text-align:right;font-size:0.74rem;color:var(--dim);font-family:'JetBrains Mono',monospace;flex-shrink:0}
.bar-t{flex:1;height:18px;background:var(--surface3);border-radius:5px;overflow:hidden}
.bar-f{height:100%;border-radius:5px;transition:width 0.6s ease}
.bar-c{width:40px;font-size:0.74rem;font-family:'JetBrains Mono',monospace;color:var(--dim)}

/* ─── Filters ─── */
.filters{display:flex;gap:7px;flex-wrap:wrap;margin-bottom:1rem;align-items:center}
.fsel{background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:0.38rem 0.65rem;color:var(--text);font-size:0.78rem;font-family:inherit;outline:none}
.fsel:focus{border-color:var(--accent)}
.finp{background:var(--surface2);border:1px solid var(--border);border-radius:8px;padding:0.38rem 0.65rem;color:var(--text);font-size:0.78rem;font-family:inherit;outline:none;min-width:170}
.finp:focus{border-color:var(--accent)}
.fcount{font-size:0.74rem;color:var(--dim);margin-left:4px}

/* ─── Alert cards ─── */
.al-card{background:var(--surface);border-left:3px solid;border-radius:0 11px 11px 0;padding:0.85rem 1.2rem;margin-bottom:6px}
.al-card .al-head{display:flex;align-items:center;gap:7px;margin-bottom:4px;flex-wrap:wrap}
.al-card .al-sev{font-size:0.67rem;font-weight:700;text-transform:uppercase;letter-spacing:0.05em}
.al-card .al-name{font-weight:700;font-size:0.88rem}
.al-card .al-desc{color:var(--dim);font-size:0.78rem}
.al-card .al-hit{color:var(--dim);font-size:0.8rem;line-height:1.65;padding-left:14px}

/* ─── Compare ─── */
.cmp-upload{background:var(--surface);border:1px solid var(--border);border-radius:14px;padding:1.5rem;text-align:center;margin-bottom:1.2rem}
.cmp-grid{display:grid;grid-template-columns:1fr 1fr;gap:1rem;margin-bottom:1.3rem}
.cmp-box{background:var(--surface);border:1px solid var(--border);border-radius:12px;padding:1rem 1.2rem}
.cmp-label{font-size:0.68rem;text-transform:uppercase;letter-spacing:0.09em;font-weight:700;margin-bottom:6px}
.cmp-row{font-size:0.8rem;color:var(--dim);margin-bottom:2px}.cmp-row strong{color:var(--text)}

/* ─── Misc ─── */
.empty{text-align:center;padding:3rem;color:var(--dim)}
.empty .icon{font-size:42px;margin-bottom:10px}
.error{background:var(--red-dim);border:1px solid rgba(239,83,80,0.25);border-radius:12px;padding:0.8rem 1.2rem;margin-bottom:1.2rem;font-size:0.83rem;color:var(--red)}
.loader{text-align:center;padding:3rem;color:var(--dim)}
.spin{width:32px;height:32px;border:3px solid var(--border);border-top-color:var(--accent);border-radius:50%;animation:sp 0.7s linear infinite;margin:0 auto 12px}
@keyframes sp{to{transform:rotate(360deg)}}
.hidden{display:none!important}
.diff-pos{color:var(--red)}.diff-neg{color:var(--green)}.diff-zero{color:var(--dim)}

@media(max-width:768px){
  .wrap{padding:1rem}.cmp-grid{grid-template-columns:1fr}
  .cards{grid-template-columns:repeat(2,1fr)}
}