:root{
  --bg:#070910; --bg2:#0d1120; --panel:#121729; --line:#232a44;
  --txt:#e8ecf8; --dim:#8d97b8; --acc:#6ea8ff; --warn:#ffb86b; --ok:#7ee787;
  --mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
body{
  margin:0; background:
    radial-gradient(1200px 700px at 70% -10%,#17203c 0%,transparent 60%),var(--bg);
  color:var(--txt); font:15px/1.55 system-ui,-apple-system,"Segoe UI",sans-serif;
  min-height:100vh;
}

/* ---------- splash ---------- */
.splash{
  position:fixed;inset:0;z-index:99;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:18px;
  background:#070910;color:var(--dim);font-size:14px;
  transition:opacity .35s;
}
.splash.gone{opacity:0;pointer-events:none}
.spinner{
  width:38px;height:38px;border-radius:50%;
  border:3px solid #232a44;border-top-color:var(--acc);
  animation:spin .8s linear infinite;
}
@keyframes spin{to{transform:rotate(360deg)}}

/* ---------- layout ---------- */
.topbar{padding:22px 28px 14px;border-bottom:1px solid var(--line)}
.topbar h1{margin:0;font-size:22px;letter-spacing:.5px}
.topbar .sub{color:var(--dim);font-size:13px}
.catinfo{
  float:right; color:var(--ok); font-size:12.5px;
  font-family:var(--mono); margin-top:6px;
}
@media(max-width:700px){.catinfo{float:none;display:block;margin-top:8px}}

main{max-width:1180px;margin:0 auto;padding:22px 20px 60px}
.panel{
  background:var(--panel);border:1px solid var(--line);border-radius:14px;
  padding:18px 20px;margin-bottom:18px;
}
.panel h2{margin:0 0 12px;font-size:15px;letter-spacing:.8px;text-transform:uppercase;color:var(--acc)}
.hidden{display:none!important}
.hint,.note{color:var(--dim);font-size:13px}
.note{margin:12px 0 0;border-top:1px solid var(--line);padding-top:10px}
code{font-family:var(--mono);background:#0a0e1a;padding:1px 6px;border-radius:5px;font-size:12.5px}

/* ---------- buttons / loader ---------- */
.btn{
  border:1px solid var(--line);background:#1a2138;color:var(--txt);
  padding:9px 18px;border-radius:9px;cursor:pointer;font-size:14px;
}
.btn:hover{background:#222b48}
.btn.primary{background:var(--acc);color:#071022;border-color:transparent;font-weight:600}
.btn.primary:disabled{opacity:.35;cursor:not-allowed}
.btn.ghost{display:inline-block}
.loadrow{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin:14px 0}
.or{color:var(--dim);font-size:13px}
.dropzone{
  border:1.5px dashed var(--line);border-radius:12px;padding:22px;text-align:center;
  color:var(--dim);font-size:13px;transition:.15s;
}
.dropzone.hot{border-color:var(--acc);background:#16203a;color:var(--acc)}
.status{margin-top:12px;font-family:var(--mono);font-size:13px;color:var(--warn)}

/* ---------- combo + suggest ---------- */
.searchrow{display:flex;gap:12px;align-items:flex-start}
.combo{position:relative;flex:1}
#q{
  width:100%;padding:12px 14px;border-radius:10px;border:1px solid var(--line);
  background:#0a0e1a;color:var(--txt);font-size:15px;outline:none;
}
#q:focus{border-color:var(--acc)}
.suggest{
  position:absolute;z-index:40;left:0;right:0;top:calc(100% + 6px);margin:0;padding:6px;
  list-style:none;background:#0c1222;border:1px solid var(--line);border-radius:10px;
  max-height:360px;overflow:auto;box-shadow:0 18px 40px rgba(0,0,0,.6);
}
.suggest li{padding:9px 12px;border-radius:7px;cursor:pointer;display:flex;
  justify-content:space-between;gap:12px;align-items:baseline}
.suggest li.active,.suggest li:hover{background:#1b2440}
.suggest .nm{font-weight:600}
.suggest .meta{color:var(--dim);font-size:12.5px;font-family:var(--mono);white-space:nowrap}
.suggest .grp{padding:7px 12px 3px;color:var(--acc);font-size:11px;
  letter-spacing:1px;text-transform:uppercase;cursor:default}
.suggest .grp:hover{background:transparent}
.picked{margin-top:12px;color:var(--dim);font-size:13.5px}

/* ---------- results ---------- */
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:900px){.grid2{grid-template-columns:1fr}}

.startitle{margin:0 0 12px;font-size:19px}
.startitle small{color:var(--dim);font-weight:400;font-size:13px;display:block;margin-top:3px}
.props{width:100%;border-collapse:collapse;font-size:14px}
.props th{
  text-align:left;color:var(--dim);font-weight:500;padding:9px 10px 9px 0;
  vertical-align:top;width:44%;border-bottom:1px solid var(--line);
}
.props td{padding:9px 0;border-bottom:1px solid var(--line);font-family:var(--mono);font-size:13.5px}
.props td small{display:block;color:var(--dim);font-family:inherit}
.tag{font-size:10px;padding:1px 6px;border-radius:5px;margin-left:6px;
  background:#2a3356;color:var(--acc);letter-spacing:.5px;font-family:system-ui}
.tag.warn{background:#4a3417;color:var(--warn)}

.svgwrap{display:flex;justify-content:center;align-items:center;min-height:330px}
.vizstats{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.card{background:#0a0e1a;border:1px solid var(--line);border-radius:10px;padding:11px 13px}
.card .k{color:var(--dim);font-size:11px;letter-spacing:.9px;text-transform:uppercase}
.card .v{font-family:var(--mono);font-size:15px;margin-top:4px}
.card .v small{display:block;color:var(--dim);font-size:12px}

.harvard{display:flex;gap:8px;flex-wrap:wrap}
.hc{flex:1;min-width:92px;border-radius:10px;padding:10px;border:1px solid var(--line);
  background:#0a0e1a;text-align:center;opacity:.42;transition:.2s}
.hc.on{opacity:1;border-color:var(--acc);box-shadow:0 0 0 1px var(--acc) inset}
.hc .dot{width:24px;height:24px;border-radius:50%;margin:0 auto 7px}
.hc .l{font-weight:700;font-size:17px}
.hc .t{color:var(--dim);font-size:11px;font-family:var(--mono);margin-top:3px}

footer{border-top:1px solid var(--line);padding:18px 28px;color:var(--dim);font-size:12.5px}
footer a{color:var(--acc)}