/* threats.datarecovery.com -- dark operations theme */
:root{
  --bg:#070b12; --bg2:#0b111c; --panel:#111a28; --panel2:#0e1621;
  --border:#1c2838; --border2:#27384d;
  --ink:#e6edf6; --muted:#8aa0ba; --faint:#5e748f;
  --cyan:#22d3ee; --cyan-dim:#0e7490;
  --green:#34d399; --amber:#fbbf24; --red:#f87171; --violet:#a78bfa;
  --pink:#f472b6; --blue:#60a5fa;
  --glow:0 0 0 1px rgba(34,211,238,.15), 0 8px 30px rgba(0,0,0,.45);
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{
  background:
    radial-gradient(1200px 500px at 80% -10%, rgba(34,211,238,.06), transparent 60%),
    radial-gradient(900px 500px at 0% 0%, rgba(167,139,250,.05), transparent 55%),
    var(--bg);
  color:var(--ink); font-family:var(--sans); font-size:14px; line-height:1.5;
  min-height:100vh;
}
a{color:var(--cyan); text-decoration:none}
a:hover{text-decoration:underline}
code,.mono{font-family:var(--mono)}

/* header + nav */
header.top{
  position:sticky; top:0; z-index:40;
  display:flex; align-items:center; gap:18px;
  padding:0 20px; height:54px;
  background:linear-gradient(180deg, rgba(11,17,28,.96), rgba(11,17,28,.88));
  border-bottom:1px solid var(--border); backdrop-filter:blur(8px);
}
.brand{display:flex; align-items:center; gap:10px; font-weight:700; letter-spacing:.3px}
.brand .dot{width:10px;height:10px;border-radius:50%;background:var(--cyan);
  box-shadow:0 0 12px var(--cyan); animation:pulse 2.4s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.brand b{color:#fff}
.brand .sub{color:var(--muted); font-weight:500; font-size:12px}
nav.main{display:flex; gap:4px; margin-left:8px; flex-wrap:wrap}
nav.main a{
  color:var(--muted); padding:7px 12px; border-radius:8px; font-weight:500;
  font-size:13px; text-decoration:none; transition:.12s;
}
nav.main a:hover{color:var(--ink); background:var(--panel)}
nav.main a.on{color:var(--cyan); background:rgba(34,211,238,.08);
  box-shadow:inset 0 0 0 1px rgba(34,211,238,.18)}
.spacer{flex:1}
.who{display:flex; align-items:center; gap:12px; color:var(--muted); font-size:13px}
.who .u{color:var(--ink)}
.who a.out{color:var(--muted)}
.pill{display:inline-block; padding:2px 9px; border-radius:999px; font-size:11px;
  font-weight:600; letter-spacing:.4px; text-transform:uppercase}
.pill.live{background:rgba(52,211,153,.12); color:var(--green)}
.pill.off{background:rgba(148,163,184,.12); color:var(--muted)}

/* refresh bar */
#verbar{display:none; position:sticky; top:54px; z-index:39;
  background:linear-gradient(90deg,#78350f,#92400e); color:#fde68a;
  padding:7px 20px; font-size:13px; border-bottom:1px solid #b45309}
#verbar a{color:#fff; font-weight:700; margin-left:10px; cursor:pointer}

main{padding:20px; max-width:1500px; margin:0 auto}
h1.page{font-size:20px; margin:4px 0 2px; font-weight:700}
.lead{color:var(--muted); margin:0 0 16px; font-size:13px}

/* layout */
.grid{display:grid; gap:14px}
.cols-4{grid-template-columns:repeat(4,1fr)}
.cols-3{grid-template-columns:repeat(3,1fr)}
.cols-2{grid-template-columns:repeat(2,1fr)}
.span-2{grid-column:span 2}
@media(max-width:1100px){.cols-4{grid-template-columns:repeat(2,1fr)}
  .cols-3{grid-template-columns:1fr 1fr} .span-2{grid-column:span 2}}
@media(max-width:720px){.cols-4,.cols-3,.cols-2{grid-template-columns:1fr}
  .span-2{grid-column:auto} nav.main{display:none}}

/* panels */
.panel{background:linear-gradient(180deg,var(--panel),var(--panel2));
  border:1px solid var(--border); border-radius:14px; padding:16px;
  box-shadow:0 1px 0 rgba(255,255,255,.02), 0 10px 24px rgba(0,0,0,.25)}
.panel h2{font-size:13px; font-weight:600; color:var(--muted); margin:0 0 12px;
  text-transform:uppercase; letter-spacing:.6px; display:flex; align-items:center; gap:8px}
.panel h2 .n{color:var(--faint); font-weight:500; text-transform:none; letter-spacing:0}
.panel h2 .right{margin-left:auto; font-size:11px}

/* KPI tiles */
.kpi{display:flex; flex-direction:column; gap:3px; padding:16px 16px 14px}
.kpi .v{font-size:30px; font-weight:800; letter-spacing:-.5px; line-height:1;
  font-family:var(--mono)}
.kpi .l{color:var(--muted); font-size:12px; text-transform:uppercase; letter-spacing:.5px}
.kpi .d{font-size:12px; color:var(--faint)}
.kpi .d b{color:var(--green)}
.kpi.accent{box-shadow:inset 0 0 0 1px rgba(34,211,238,.12)}
.kpi .v.cy{color:var(--cyan)} .kpi .v.gr{color:var(--green)}
.kpi .v.am{color:var(--amber)} .kpi .v.vi{color:var(--violet)}
.kpi .v.pk{color:var(--pink)} .kpi .v.bl{color:var(--blue)}

/* charts */
.chart{width:100%; height:300px}
.chart.tall{height:420px}
.chart.map{height:460px}

/* tables */
table.tbl{width:100%; border-collapse:collapse; font-size:13px}
table.tbl th{text-align:left; color:var(--muted); font-weight:600; font-size:11px;
  text-transform:uppercase; letter-spacing:.5px; padding:8px 10px;
  border-bottom:1px solid var(--border2); position:sticky; top:0; background:var(--panel)}
table.tbl td{padding:8px 10px; border-bottom:1px solid var(--border); vertical-align:top}
table.tbl tr:hover td{background:rgba(34,211,238,.03)}
table.tbl td.mono{font-family:var(--mono); font-size:12.5px; word-break:break-all}
.scroll{max-height:460px; overflow:auto}
.scroll::-webkit-scrollbar{width:9px;height:9px}
.scroll::-webkit-scrollbar-thumb{background:var(--border2); border-radius:6px}

/* type / source chips */
.chip{display:inline-block; padding:1px 7px; border-radius:6px; font-size:11px;
  font-weight:600; font-family:var(--mono); border:1px solid transparent}
.t-ip{background:rgba(96,165,250,.12); color:var(--blue)}
.t-domain{background:rgba(52,211,153,.12); color:var(--green)}
.t-url{background:rgba(251,191,36,.12); color:var(--amber)}
.t-hash{background:rgba(167,139,250,.12); color:var(--violet)}
.t-cve{background:rgba(248,113,113,.12); color:var(--red)}
.t-port{background:rgba(244,114,182,.12); color:var(--pink)}
.t-asn,.t-email{background:rgba(148,163,184,.12); color:var(--muted)}
.src{color:var(--muted); font-size:12px}
.conf{display:inline-flex; align-items:center; gap:6px}
.conf .bar{width:42px; height:5px; border-radius:3px; background:var(--border2); overflow:hidden}
.conf .bar i{display:block; height:100%;
  background:linear-gradient(90deg,var(--amber),var(--cyan))}
.tag{color:var(--faint); font-size:11.5px}
.flag{font-size:13px}

/* inputs */
input,select,button{font-family:var(--sans); font-size:13px}
input[type=text],input[type=search],input[type=tel],input[type=email],select{
  background:var(--bg2); border:1px solid var(--border2); color:var(--ink);
  border-radius:8px; padding:8px 10px; outline:none}
input:focus,select:focus{border-color:var(--cyan-dim);
  box-shadow:0 0 0 2px rgba(34,211,238,.12)}
.btn{background:var(--cyan); color:#042027; border:none; border-radius:8px;
  padding:9px 16px; font-weight:700; cursor:pointer}
.btn:hover{filter:brightness(1.08)}
.btn.ghost{background:transparent; color:var(--ink); border:1px solid var(--border2)}
.btn.sm{padding:5px 10px; font-size:12px}
.btn.danger{background:transparent;color:var(--red);border:1px solid rgba(248,113,113,.4)}
.toolbar{display:flex; gap:8px; flex-wrap:wrap; align-items:center; margin-bottom:14px}
.toolbar .grow{flex:1; min-width:180px}

/* source health rows */
.srcrow{display:flex; align-items:center; gap:12px; padding:11px 4px;
  border-bottom:1px solid var(--border)}
.srcrow:last-child{border-bottom:none}
.stat{width:9px;height:9px;border-radius:50%; flex:none}
.stat.ok{background:var(--green); box-shadow:0 0 8px rgba(52,211,153,.6)}
.stat.bad{background:var(--red); box-shadow:0 0 8px rgba(248,113,113,.6)}
.stat.idle{background:var(--muted)}
.srcrow .nm{font-weight:600}
.srcrow .meta{color:var(--faint); font-size:12px}
.srcrow .ct{margin-left:auto; text-align:right; font-family:var(--mono)}
.kindtag{font-size:10px; color:var(--faint); text-transform:uppercase; letter-spacing:.5px}

/* login */
.authwrap{min-height:100vh; display:flex; align-items:center; justify-content:center; padding:20px}
.authcard{width:100%; max-width:380px; background:linear-gradient(180deg,var(--panel),var(--panel2));
  border:1px solid var(--border); border-radius:16px; padding:28px; box-shadow:var(--glow)}
.authcard .brand{justify-content:center; margin-bottom:6px; font-size:17px}
.authcard p.sub{color:var(--muted); text-align:center; margin:0 0 20px; font-size:13px}
.authcard label{display:block; color:var(--muted); font-size:12px; margin:12px 0 5px}
.authcard input{width:100%}
.authcard .btn{width:100%; margin-top:18px}
.err{background:rgba(248,113,113,.1); border:1px solid rgba(248,113,113,.3);
  color:#fecaca; padding:9px 12px; border-radius:9px; font-size:13px; margin-bottom:6px}
.msg{background:rgba(34,211,238,.08); border:1px solid rgba(34,211,238,.25);
  color:#a5f3fc; padding:9px 12px; border-radius:9px; font-size:13px; margin-bottom:14px}
.or{display:flex; align-items:center; gap:10px; color:var(--faint); font-size:12px; margin:18px 0}
.or:before,.or:after{content:""; height:1px; background:var(--border2); flex:1}
.ck{display:flex; align-items:center; gap:8px; color:var(--muted); font-size:13px; margin-top:12px}
.ck input{width:auto}

.note{color:var(--faint); font-size:12px}
.empty{color:var(--muted); text-align:center; padding:28px; font-size:13px}
.right{text-align:right}
.center{text-align:center}
.mt{margin-top:14px}
hr.sep{border:none; border-top:1px solid var(--border); margin:16px 0}
