*, *::before, *::after { margin:0; padding:0; box-sizing:border-box; }

:root {
  --bg: #1a1b2e;
  --bg2: #222436;
  --bg3: #2a2c42;
  --border: #2f3146;
  --text: #c8cad8;
  --muted: #6b6f8a;
  --accent: #7c3aed;
  --accent2: #a78bfa;
  --accent3: #60a5fa;
  --nav-h: 52px;
}

html, body { height:100%; min-height:100%; font-family:'Inter',sans-serif; background:var(--bg); color:var(--text); overflow:hidden; }
a { color:var(--accent2); text-decoration:none; }
a:hover { text-decoration:underline; }

/* ── Nav ───────────────────────────────────────────── */
.site-nav {
  position:fixed; top:0; left:0; right:0; height:var(--nav-h); z-index:100;
  background:#151625; border-bottom:1px solid var(--border);
  display:flex; align-items:center; padding:0 20px; gap:16px;
}
.nav-logo { font-size:1.05rem; font-weight:600; color:#fff; white-space:nowrap; flex-shrink:0; }
.nav-logo span { color:var(--accent2); }
.nav-tabs { display:flex; gap:4px; }
.nav-tab { padding:6px 14px; border-radius:8px; border:1px solid transparent;
  background:transparent; color:var(--muted); font-size:.82rem; font-family:inherit;
  cursor:pointer; transition:all .2s; }
.nav-tab:hover { color:var(--text); }
.nav-tab.active { background:var(--accent); color:#fff; border-color:var(--accent); }
.nav-stats { font-size:.78rem; color:var(--muted); margin-left:auto; flex-shrink:0; }
.breadcrumb { display:flex; align-items:center; gap:6px; font-size:.82rem; }

/* ── Tab content ──────────────────────────────────── */
.tab-content { display:none; height:100vh; overflow:hidden; }
.tab-content.active { display:block; }

/* ── Visual 3D container ─────────────────────────── */
.visual3d-container { position:fixed; top:var(--nav-h); left:0; right:0; bottom:0; }
/* Hide 3D overlays when non-visual tab is active */
body:has(#tabAnalytics.active) .visual3d-container,
body:has(#tabAnalytics.active) .ctrl-panel,
body:has(#tabAnalytics.active) .three-controls,
body:has(#tabAnalytics.active) .three-info,
body:has(#tabInsights.active) .visual3d-container,
body:has(#tabInsights.active) .ctrl-panel,
body:has(#tabInsights.active) .three-controls,
body:has(#tabInsights.active) .three-info { display:none !important; }
.bc-item { color:var(--muted); cursor:pointer; transition:color .2s; }
.bc-item:hover { color:var(--accent2); }
.bc-active { color:var(--text); font-weight:500; cursor:default; }
.bc-sep { color:var(--muted); font-size:.7rem; }

/* ── Loading ───────────────────────────────────────── */
#loadingOverlay {
  position:fixed; inset:0; z-index:200; background:var(--bg);
  display:none; flex-direction:column; align-items:center; justify-content:center; gap:16px;
}
#loadingOverlay.active { display:flex; }
.spinner { width:36px; height:36px; border:3px solid var(--border); border-top-color:var(--accent2);
  border-radius:50%; animation:spin .8s linear infinite; }
@keyframes spin { to { transform:rotate(360deg); } }
#loadingText { font-size:.85rem; color:var(--muted); }

/* ── Views ─────────────────────────────────────────── */
.view { display:none; padding-top:var(--nav-h); min-height:100vh; }
.view.active { display:block; }

/* ── Level 0: Overview ─────────────────────────────── */
.overview-grid { max-width:1300px; margin:0 auto; padding:24px 20px; }
.overview-header { margin-bottom:20px; }
.overview-header h2 { font-size:1.4rem; font-weight:700; color:#fff; }
.overview-subtitle { font-size:.85rem; color:var(--muted); margin-top:4px; }

.overview-clusters { display:grid; grid-template-columns:repeat(auto-fill, minmax(280px, 1fr)); gap:14px; margin-bottom:20px; }

/* Cluster card */
.cluster-card {
  background:var(--bg2); border:1px solid var(--border); border-radius:12px;
  padding:18px; cursor:pointer; transition:all .25s;
  position:relative; overflow:hidden;
}
.cluster-card:hover { border-color:var(--accent2); transform:translateY(-2px);
  box-shadow: 0 8px 30px rgba(0,0,0,.3); }
.cluster-card::before {
  content:''; position:absolute; top:0; left:0; right:0; height:3px;
}
.cc-header { display:flex; align-items:center; gap:10px; margin-bottom:12px; }
.cc-dot { width:14px; height:14px; border-radius:50%; flex-shrink:0; }
.cc-name { font-size:1rem; font-weight:600; color:#fff; }
.cc-count { font-size:.78rem; color:var(--muted); margin-left:auto; }
.cc-stats { display:grid; grid-template-columns:1fr 1fr; gap:6px 12px; margin-bottom:12px; }
.cc-stat-label { font-size:.68rem; color:var(--muted); text-transform:uppercase; letter-spacing:.05em; }
.cc-stat-val { font-size:.9rem; font-weight:500; color:var(--text); }
.cc-subtopics { display:flex; flex-wrap:wrap; gap:4px; margin-bottom:10px; }
.cc-st-pill { font-size:.65rem; padding:2px 7px; border-radius:10px; background:rgba(255,255,255,.06);
  color:var(--muted); }
.cc-top { font-size:.72rem; color:var(--muted); line-height:1.4; }
.cc-top strong { color:var(--text); font-weight:500; }
.cc-sparkline { margin:8px 0; height:44px; }

/* Overview bottom charts */
.overview-bottom { display:grid; grid-template-columns:1fr 1fr; gap:14px; }
.card { background:var(--bg2); border:1px solid var(--border); border-radius:12px; padding:16px; }
.card-title { font-size:.78rem; font-weight:600; color:var(--accent2); text-transform:uppercase;
  letter-spacing:.05em; margin-bottom:12px; }
.card-count { font-weight:400; color:var(--muted); text-transform:none; letter-spacing:0; }

/* ── Level 1: Cluster view ─────────────────────────── */
.cluster-view { max-width:1400px; margin:0 auto; padding:20px; }
.cluster-header {
  background:var(--bg2); border:1px solid var(--border); border-radius:12px;
  padding:20px; margin-bottom:16px; display:flex; align-items:center; gap:16px;
}
.ch-dot { width:20px; height:20px; border-radius:50%; flex-shrink:0; }
.ch-info h2 { font-size:1.25rem; font-weight:700; color:#fff; }
.ch-info p { font-size:.82rem; color:var(--muted); margin-top:2px; }
.ch-stats { display:flex; gap:20px; margin-left:auto; }
.ch-stat { text-align:center; }
.ch-stat-val { font-size:1.3rem; font-weight:600; color:#fff; }
.ch-stat-label { font-size:.68rem; color:var(--muted); text-transform:uppercase; letter-spacing:.05em; }

.cluster-body { display:grid; grid-template-columns:300px 1fr; gap:16px; }

/* Subtopics list */
.st-item {
  padding:10px 12px; border-radius:8px; cursor:pointer;
  border:1px solid transparent; transition:all .2s; margin-bottom:6px;
}
.st-item:hover { background:rgba(124,58,237,.08); border-color:rgba(124,58,237,.2); }
.st-item.st-active { background:rgba(124,58,237,.15); border-color:rgba(124,58,237,.4); }
.st-name { font-size:.85rem; font-weight:500; color:#fff; }
.st-meta { font-size:.72rem; color:var(--muted); margin-top:2px; }
.st-bar { height:4px; border-radius:2px; margin-top:6px; background:rgba(255,255,255,.05); overflow:hidden; }
.st-bar-fill { height:100%; border-radius:2px; transition:width .4s; }

/* Top authors */
.author-item { display:flex; justify-content:space-between; padding:4px 0;
  font-size:.78rem; border-bottom:1px solid rgba(47,49,70,.4); }
.author-name { color:var(--text); }
.author-count { color:var(--muted); }

/* Article table */
.table-controls { display:flex; gap:10px; margin-bottom:10px; }
.table-search { flex:1; padding:7px 10px; background:rgba(47,49,70,.5); border:1px solid var(--border);
  border-radius:8px; color:var(--text); font-size:.82rem; font-family:inherit; outline:none; }
.table-search:focus { border-color:var(--accent2); }
.table-search::placeholder { color:var(--muted); }
.table-sort { padding:7px 10px; background:var(--bg3); border:1px solid var(--border);
  border-radius:8px; color:var(--text); font-size:.78rem; font-family:inherit; cursor:pointer; }

.article-table { max-height:600px; overflow-y:auto; }
.at-row {
  padding:10px 12px; border-bottom:1px solid rgba(47,49,70,.3);
  cursor:pointer; transition:background .15s;
}
.at-row:hover { background:rgba(124,58,237,.06); }
.at-title { font-size:.82rem; color:#fff; line-height:1.35; }
.at-meta { font-size:.72rem; color:var(--muted); margin-top:3px; display:flex; gap:8px; flex-wrap:wrap; }
.at-cited { color:var(--accent2); font-weight:500; }

.table-pagination { display:flex; align-items:center; justify-content:center; gap:8px; padding:12px 0; }
.pg-btn { padding:5px 10px; border-radius:6px; border:1px solid var(--border);
  background:var(--bg3); color:var(--text); font-size:.78rem; cursor:pointer; }
.pg-btn:hover { border-color:var(--accent2); }
.pg-btn.active { background:var(--accent); border-color:var(--accent); color:#fff; }
.pg-info { font-size:.75rem; color:var(--muted); }

/* ── Level 2: 3D view ──────────────────────────────── */
.three-container { position:fixed; top:var(--nav-h); left:0; right:0; bottom:0; }

.tooltip3d {
  position:fixed; z-index:90; pointer-events:none;
  background:rgba(34,36,54,.92); backdrop-filter:blur(12px);
  border:1px solid var(--border); border-radius:10px;
  padding:12px 16px; max-width:350px; opacity:0; transition:opacity .15s;
  box-shadow: 0 8px 32px rgba(0,0,0,.4);
}
.tooltip3d.visible { opacity:1; }
.tt-type { font-size:.7rem; text-transform:uppercase; letter-spacing:.08em; margin-bottom:3px; font-weight:600; }
.tt-title { font-size:.85rem; font-weight:500; line-height:1.35; margin-bottom:3px; color:#fff; }
.tt-meta { font-size:.73rem; color:var(--muted); }
.tt-cited { font-size:.73rem; color:var(--accent2); margin-top:2px; }

.panel3d-right {
  position:fixed; top:var(--nav-h); right:0; bottom:0; width:560px; z-index:88;
  background:rgba(26,27,46,.96); backdrop-filter:blur(16px);
  border-left:1px solid var(--border); overflow-y:auto;
  transform:translateX(100%); transition:transform .3s ease; padding:28px;
}
.panel3d-right.open { transform:translateX(0); }
.panel-close { position:absolute; top:14px; right:16px; background:none; border:none;
  color:var(--muted); font-size:1.6rem; cursor:pointer; width:40px; height:40px;
  display:grid; place-items:center; border-radius:8px; transition:all .2s; }
.panel-close:hover { color:#fff; background:rgba(124,58,237,.15); }

.detail-title { font-size:1.15rem; font-weight:600; color:#fff; line-height:1.4; margin-bottom:14px; padding-right:48px; }
.detail-row { display:flex; gap:10px; font-size:.88rem; padding:6px 0; border-bottom:1px solid rgba(47,49,70,.4); }
.detail-key { color:var(--muted); min-width:70px; flex-shrink:0; font-weight:500; }
.detail-val { color:var(--text); }
.detail-val a { color:var(--accent2); }
.detail-abstract { font-size:.85rem; color:var(--muted); line-height:1.6; margin-top:14px;
  padding:14px; background:rgba(47,49,70,.3); border-radius:10px; }

@media (min-width:3000px) {
  .panel3d-right { width:700px; padding:36px; }
  .detail-title { font-size:22px; }
  .detail-row { font-size:18px; padding:8px 0; }
  .detail-key { min-width:90px; }
  .detail-abstract { font-size:17px; padding:18px; }
  .panel-close { font-size:2rem; width:52px; height:52px; }
}

.three-controls { position:fixed; bottom:16px; right:16px; z-index:80;
  display:flex; flex-direction:column; gap:5px; }
.ctrl-btn { width:34px; height:34px; border-radius:8px; border:1px solid var(--border);
  background:rgba(34,36,54,.85); backdrop-filter:blur(8px);
  color:var(--text); font-size:1rem; cursor:pointer; display:grid; place-items:center; }
.ctrl-btn:hover { background:rgba(124,58,237,.25); border-color:var(--accent2); }

.three-info {
  position:fixed; bottom:16px; left:16px; z-index:80;
  background:rgba(34,36,54,.85); backdrop-filter:blur(12px);
  border:1px solid var(--border); border-radius:10px; padding:12px 16px;
  font-size:.78rem; color:var(--muted); line-height:1.5;
}

/* Node labels in 3D */
.node-label-3d {
  position:absolute; pointer-events:none; font-family:'Inter',sans-serif;
  font-size:9px; color:var(--text); text-align:center; white-space:nowrap;
  text-shadow: 0 0 4px rgba(0,0,0,.9), 0 0 8px rgba(0,0,0,.6);
  transform:translate(-50%, 8px); max-width:160px; overflow:hidden; text-overflow:ellipsis;
}

/* ── Nav back button ──────────────────────────────── */
.nav-back {
  display:grid; place-items:center; width:30px; height:30px;
  border-radius:7px; border:1px solid var(--border);
  background:rgba(34,36,54,.85); color:var(--muted);
  font-size:1rem; text-decoration:none; flex-shrink:0;
  transition:all .2s;
}
.nav-back:hover { color:var(--accent2); border-color:var(--accent2); text-decoration:none; }

/* ── Edge popover ─────────────────────────────────── */
.edge-popover {
  position:fixed; z-index:95; display:none;
  background:rgba(34,36,54,.95); backdrop-filter:blur(14px);
  border:1px solid var(--accent); border-radius:12px;
  padding:14px 18px; max-width:400px; min-width:260px;
  box-shadow: 0 12px 40px rgba(0,0,0,.5);
}
.edge-popover.visible { display:block; }
.edge-popover-close {
  position:absolute; top:6px; right:8px; background:none; border:none;
  color:var(--muted); font-size:1.1rem; cursor:pointer;
}
.edge-popover-close:hover { color:#fff; }
.ep-title { font-size:.82rem; font-weight:600; color:var(--accent2); margin-bottom:8px; }
.ep-row { font-size:.78rem; color:var(--text); padding:4px 0; border-bottom:1px solid rgba(47,49,70,.3); line-height:1.4; }
.ep-row a { color:var(--accent2); }
.ep-arrow { color:var(--muted); font-size:.7rem; margin:0 4px; }

/* ── Cross-cluster toggle (active state) ─────────── */
.ctrl-btn.active { background:rgba(124,58,237,.4); border-color:var(--accent2); color:#fff; }

/* ── Settings panel ──────────────────────────────── */
.settings-panel {
  position:fixed; top:var(--nav-h); right:0; bottom:0; width:280px; z-index:85;
  background:rgba(26,27,46,.95); backdrop-filter:blur(16px);
  border-left:1px solid var(--border); overflow-y:auto;
  transform:translateX(100%); transition:transform .3s ease;
  padding:0;
}
.settings-panel.open { transform:translateX(0); }
.sp-header {
  display:flex; align-items:center; justify-content:space-between;
  padding:12px 14px; border-bottom:1px solid var(--border);
}
.sp-title { font-size:.82rem; font-weight:600; color:#fff; }
.sp-close { background:none; border:none; color:var(--muted); font-size:1.2rem; cursor:pointer; }
.sp-close:hover { color:#fff; }
.sp-section {
  font-size:.65rem; font-weight:600; color:var(--accent2); text-transform:uppercase;
  letter-spacing:.08em; padding:10px 14px 4px; border-top:1px solid rgba(47,49,70,.5);
}
.sp-section:first-of-type { border-top:none; }
.sp-row {
  display:grid; grid-template-columns:90px 1fr 36px; align-items:center;
  padding:3px 14px; gap:6px;
}
.sp-row label { font-size:.68rem; color:var(--muted); }
.sp-row input[type=range] {
  width:100%; height:3px; -webkit-appearance:none; appearance:none;
  background:var(--border); border-radius:2px; outline:none; cursor:pointer;
}
.sp-row input[type=range]::-webkit-slider-thumb {
  -webkit-appearance:none; width:12px; height:12px; border-radius:50%;
  background:var(--accent2); border:1px solid var(--bg); cursor:pointer;
}
.sp-row input[type=range]::-moz-range-thumb {
  width:12px; height:12px; border-radius:50%;
  background:var(--accent2); border:1px solid var(--bg); cursor:pointer;
}
.sp-val { font-size:.62rem; color:var(--muted); text-align:right; font-variant-numeric:tabular-nums; }
.sp-footer {
  padding:10px 14px; border-top:1px solid rgba(47,49,70,.5);
  display:flex; gap:8px;
}
.sp-btn {
  flex:1; padding:6px 8px; border-radius:6px; border:1px solid var(--border);
  background:var(--bg3); color:var(--text); font-size:.7rem; font-family:inherit; cursor:pointer;
}
.sp-btn:hover { border-color:var(--accent2); color:#fff; }
/* Changed setting row highlight */
.sp-row.sp-changed label { color:#e2b340; }
.sp-row.sp-changed .sp-val { color:#e2b340; }
/* Badge on S button */
.settings-badge {
  position:absolute; top:-4px; right:-4px; min-width:14px; height:14px;
  background:#e2b340; color:#1a1b2e; font-size:9px; font-weight:700;
  border-radius:7px; display:flex; align-items:center; justify-content:center;
  padding:0 3px; line-height:1;
}

/* ── Spread slider ───────────────────────────────── */
.spread-slider {
  position:fixed; bottom:16px; right:60px; z-index:80;
  display:flex; align-items:center; gap:8px;
  background:rgba(34,36,54,.85); backdrop-filter:blur(12px);
  border:1px solid var(--border); border-radius:10px;
  padding:6px 12px;
}
.spread-label { font-size:.7rem; color:var(--muted); font-weight:500; white-space:nowrap; }
.spread-val { font-size:.7rem; color:var(--accent2); font-weight:600; min-width:28px; }
#spreadRange {
  width:100px; height:4px; -webkit-appearance:none; appearance:none;
  background:var(--border); border-radius:2px; outline:none; cursor:pointer;
}
#spreadRange::-webkit-slider-thumb {
  -webkit-appearance:none; width:14px; height:14px; border-radius:50%;
  background:var(--accent2); border:2px solid var(--bg); cursor:pointer;
}
#spreadRange::-moz-range-thumb {
  width:14px; height:14px; border-radius:50%;
  background:var(--accent2); border:2px solid var(--bg); cursor:pointer;
}

/* ── Controller side panels (overlay on 3D) ────────── */
.ctrl-panel {
  position:fixed; top:var(--nav-h); bottom:0; width:520px;
  overflow-y:auto; overflow-x:hidden;
  background:rgba(21,22,37,0.97);
  padding:24px 20px; z-index:75;
  -webkit-overflow-scrolling:touch;
  font-size:15px; line-height:1.55;
}
.ctrl-panel-left { left:0; border-right:1px solid var(--border); }
.ctrl-panel-right { right:0; border-left:1px solid var(--border); }
.ctrl-panel::-webkit-scrollbar { width:5px; }
.ctrl-panel::-webkit-scrollbar-thumb { background:#3f4166; border-radius:3px; }

/* ── cp- card-based design (mirrors Analytics cluster cards) ── */
.cp-title { font-size:20px; font-weight:700; color:#fff; margin-bottom:6px; display:flex; align-items:center; gap:8px; }
.cp-subtitle { font-size:14px; color:var(--muted); margin-bottom:16px; }
.cp-stats-row { display:flex; gap:20px; margin-bottom:20px; flex-wrap:wrap; }
.cp-stat-block { }
.cp-stat { font-size:24px; font-weight:600; color:#fff; }
.cp-stat-label { font-size:11px; color:var(--muted); text-transform:uppercase; letter-spacing:.08em; margin-top:2px; }
.cp-section { font-size:11px; font-weight:600; color:var(--accent); text-transform:uppercase; letter-spacing:.1em;
  margin:20px 0 10px; border-bottom:1px solid var(--border); padding-bottom:5px; }

/* Cluster/subtopic cards (like .cluster-card in analytics) */
.cp-card {
  background:var(--bg2); border:1px solid var(--border); border-radius:12px;
  padding:16px; margin-bottom:10px; cursor:pointer; transition:all .25s;
  position:relative; overflow:hidden;
}
.cp-card:hover { border-color:var(--accent2); transform:translateY(-1px); box-shadow:0 6px 24px rgba(0,0,0,.3); }
.cp-card:active { transform:translateY(0); }
.cp-card-header { display:flex; align-items:center; gap:10px; margin-bottom:8px; }
.cp-dot { width:12px; height:12px; border-radius:50%; display:inline-block; flex-shrink:0; }
.cp-card-name { font-size:15px; font-weight:600; color:#fff; flex:1; }
.cp-card-count { font-size:13px; color:var(--muted); }
.cp-card-stats { display:flex; gap:16px; font-size:12px; color:var(--muted); margin-bottom:6px; }
.cp-card-stats span { color:var(--text); font-weight:500; }
.cp-bar { height:3px; border-radius:2px; background:rgba(255,255,255,.05); overflow:hidden; }
.cp-bar-fill { height:100%; border-radius:2px; transition:width .4s; }
.cp-card-pills { display:flex; flex-wrap:wrap; gap:4px; margin-top:8px; }
.cp-pill { font-size:11px; padding:2px 7px; border-radius:10px; background:rgba(255,255,255,.06); color:var(--muted); }
.cp-card-top { font-size:12px; color:var(--muted); line-height:1.4; margin-top:8px; }
.cp-card-top strong { color:var(--text); font-weight:500; }
.cp-sparkline { margin:6px 0; height:36px; }

/* Article cards (right panel) */
.cp-article {
  background:var(--bg2); border:1px solid var(--border); border-radius:10px;
  padding:14px; margin-bottom:8px; transition:border-color .2s;
}
.cp-article:hover { border-color:rgba(167,139,250,.3); }
.cp-article-title { font-weight:500; font-size:14px; line-height:1.4; color:#fff; margin-bottom:4px; }
.cp-article-meta { font-size:11px; color:var(--muted); display:flex; gap:6px; flex-wrap:wrap; }
.cp-article-meta span::after { content:"\00b7"; margin-left:6px; color:var(--border); }
.cp-article-meta span:last-child::after { content:""; margin:0; }
.cp-article-cited { font-size:12px; color:var(--accent2); font-weight:600; margin-top:3px; }
.cp-article-badge { display:inline-block; font-size:10px; padding:1px 6px; border-radius:8px; margin-top:4px; }

/* Info cards (L2 journals/authors) */
.cp-info-card {
  background:var(--bg2); border:1px solid var(--border); border-radius:10px;
  padding:14px; margin-bottom:10px;
}
.cp-info-card .cp-section:first-child { margin-top:0; }
.cp-author-link { cursor:pointer; border-radius:6px; padding:7px 10px !important; margin:0 -10px; transition:background .15s; }
.cp-author-link:hover { background:rgba(124,58,237,.08); }
.cp-author-link:active { background:rgba(124,58,237,.15); }
.cp-author-active { background:rgba(124,58,237,.2) !important; border-color:var(--accent) !important; }
.cp-journal-link { cursor:pointer; border-radius:6px; padding:7px 10px !important; margin:0 -10px; transition:background .15s; }
.cp-journal-link:hover { background:rgba(96,165,250,.10); }
.cp-journal-link:active { background:rgba(96,165,250,.18); }
.cp-journal-active { background:rgba(96,165,250,.22) !important; border-color:var(--accent3) !important; }

/* Help/legend modal */
.help-modal { position:fixed; inset:0; z-index:9998; display:flex; align-items:center; justify-content:center; }
.help-modal-backdrop { position:absolute; inset:0; background:rgba(0,0,0,.7); backdrop-filter:blur(8px); }
.help-modal-body { position:relative; z-index:1; width:min(680px, 92vw); max-height:88vh;
  background:rgba(26,27,46,.98); border:1px solid var(--border); border-radius:16px;
  padding:32px 36px; overflow-y:auto; box-shadow:0 24px 80px rgba(0,0,0,.6); }
.help-modal-close { position:absolute; top:14px; right:16px; background:none; border:none;
  color:var(--muted); font-size:1.6rem; cursor:pointer; width:40px; height:40px;
  display:grid; place-items:center; border-radius:8px; transition:all .2s; }
.help-modal-close:hover { color:#fff; background:rgba(124,58,237,.15); }
.help-title { font-size:1.2rem; font-weight:600; color:#fff; margin-bottom:6px; padding-right:50px; }
.help-level { font-size:.78rem; color:var(--accent2); text-transform:uppercase; letter-spacing:.08em; margin-bottom:18px; }
.help-section { margin-bottom:18px; }
.help-section-title { font-size:.82rem; font-weight:600; color:var(--accent2); text-transform:uppercase; letter-spacing:.06em; margin-bottom:8px; }
.help-list { list-style:none; padding:0; margin:0; }
.help-list li { font-size:.9rem; color:var(--text); line-height:1.55; padding:5px 0; padding-left:20px; position:relative; }
.help-list li::before { content:"•"; position:absolute; left:6px; color:var(--accent2); }
.help-list li.help-no::before { content:"×"; color:#ef4444; font-weight:600; }
.help-list li.help-yes::before { content:"✓"; color:#34d399; font-weight:600; }
.help-list li b { color:#fff; font-weight:600; }
.help-btn { background:none; border:1px solid var(--border); color:var(--muted);
  padding:4px 10px; border-radius:6px; cursor:pointer; font-size:14px; font-family:Inter,sans-serif;
  margin-left:8px; width:28px; height:28px; display:inline-flex; align-items:center; justify-content:center;
  transition:all .15s; }
.help-btn:hover { color:#fff; border-color:var(--accent2); background:rgba(124,58,237,.12); }
.cp-filter-badge { display:inline-block; font-size:12px; padding:4px 10px; border-radius:8px;
  background:rgba(124,58,237,.15); color:var(--accent2); cursor:pointer; margin-bottom:10px; transition:background .15s; }
.cp-filter-badge:hover { background:rgba(124,58,237,.3); }
.cp-cluster-note { font-size:13px; color:var(--muted); margin:-6px 0 12px; padding:0 2px; }

/* ── Article detail overlay (center, over 3D) ─────────── */
.cp-detail-overlay {
  position:fixed; top:var(--nav-h); left:0; right:0; bottom:0; z-index:86;
  display:flex; align-items:center; justify-content:center;
  background:rgba(0,0,0,.35); opacity:0; pointer-events:none; transition:opacity .25s;
}
.cp-detail-overlay.visible { opacity:1; pointer-events:auto; }
.cp-detail-card {
  background:rgba(26,27,46,.97); backdrop-filter:blur(16px);
  border:1px solid var(--border); border-radius:16px;
  padding:32px; max-width:640px; width:90%; max-height:80vh; overflow-y:auto;
  position:relative; box-shadow:0 20px 60px rgba(0,0,0,.5);
  transform:translateY(20px); transition:transform .25s;
}
.cp-detail-overlay.visible .cp-detail-card { transform:translateY(0); }
.cp-detail-close {
  position:absolute; top:12px; right:12px; background:none; border:none;
  color:var(--muted); font-size:1.6rem; cursor:pointer; width:44px; height:44px;
  display:grid; place-items:center; border-radius:8px; transition:all .2s;
}
.cp-detail-close:hover { color:#fff; background:rgba(124,58,237,.15); }
.cp-detail-title { font-size:1.1rem; font-weight:600; color:#fff; line-height:1.45; margin-bottom:16px; padding-right:48px; }
.cp-detail-row { display:flex; gap:12px; font-size:.88rem; padding:7px 0; border-bottom:1px solid rgba(47,49,70,.4); }
.cp-detail-key { color:var(--muted); min-width:80px; flex-shrink:0; font-weight:500; }
.cp-detail-val { color:var(--text); }
.cp-detail-val a { color:var(--accent2); }
.cp-detail-abstract { font-size:.85rem; color:var(--muted); line-height:1.6; margin-top:14px;
  padding:14px; background:rgba(47,49,70,.3); border-radius:10px; }

@media (min-width:3000px) {
  .cp-detail-card { max-width:800px; padding:40px; }
  .cp-detail-title { font-size:22px; }
  .cp-detail-row { font-size:18px; padding:10px 0; }
  .cp-detail-key { min-width:100px; }
  .cp-detail-abstract { font-size:17px; }
  .cp-detail-close { width:56px; height:56px; font-size:2rem; }
}
.cp-item { padding:7px 0; border-bottom:1px solid rgba(47,49,70,0.3); }
.cp-item:last-child { border-bottom:none; }
.cp-item-main { display:flex; justify-content:space-between; align-items:center; min-height:28px; }
.cp-item-name { font-weight:500; font-size:13px; color:var(--text); }
.cp-item-count { color:var(--muted); font-size:12px; flex-shrink:0; }

/* 4K controller panel scaling */
@media (min-width:3000px) {
  .ctrl-panel { width:720px; padding:36px 28px; font-size:18px; }
  .cp-title { font-size:26px; }
  .cp-stat { font-size:32px; }
  .cp-stat-label { font-size:14px; }
  .cp-section { font-size:13px; }
  .cp-card { padding:20px; margin-bottom:12px; }
  .cp-card-name { font-size:18px; }
  .cp-card-count { font-size:15px; }
  .cp-card-stats { font-size:14px; }
  .cp-dot { width:14px; height:14px; }
  .cp-bar { height:4px; }
  .cp-pill { font-size:13px; padding:3px 9px; }
  .cp-article { padding:18px; margin-bottom:10px; }
  .cp-article-title { font-size:18px; }
  .cp-article-meta { font-size:14px; }
  .cp-article-cited { font-size:14px; }
  .cp-item-name { font-size:16px; }
  .cp-item-count { font-size:14px; }
  .cp-item-main { min-height:40px; }
  .ctrl-panel::-webkit-scrollbar { width:7px; }
}

/* Shift controls when controller panels present */
body:has(.ctrl-panel) .three-controls { right:536px; }
body:has(.ctrl-panel) .spread-slider { right:536px; }
body:has(.ctrl-panel) .three-info { left:536px; }
body:has(.ctrl-panel) .panel3d-right { right:0; }
/* Settings panel: hidden by default, .open overrides */
body:has(.ctrl-panel) .settings-panel:not(.open) { transform:translateX(100%); }

/* 4K: wider ctrl-panels need wider offsets for controls */
@media (min-width:3000px) {
  body:has(.ctrl-panel) .three-controls { right:736px; }
  body:has(.ctrl-panel) .spread-slider { right:736px; }
  body:has(.ctrl-panel) .three-info { left:736px; }
}

/* ── Responsive ────────────────────────────────────── */
@media (max-width:900px) {
  .overview-bottom { grid-template-columns:1fr; }
  .cluster-body { grid-template-columns:1fr; }
  .ch-stats { flex-wrap:wrap; gap:10px; }
  .panel3d-right { width:100%; }
}
@media (max-width:600px) {
  .site-nav { padding:0 12px; height:46px; }
  :root { --nav-h:46px; }
  .overview-clusters { grid-template-columns:1fr; }
  .nav-stats { display:none; }
}

/* ═══════════════════════════════════════════════════ */
/* INSIGHTS TAB                                       */
/* ═══════════════════════════════════════════════════ */
.insights-container { max-width:none; margin:0 auto; padding:calc(var(--nav-h) + 16px) 24px 16px; height:100vh; display:flex; flex-direction:column; box-sizing:border-box; overflow:hidden; }
.insights-container .ins-section-wrap, .insights-container > div:last-child { flex:1 1 auto; min-height:0; display:flex; flex-direction:column; }
.ins-section { min-height:0; }
.ins-section.active.drill-open { flex:1 1 auto; display:flex; flex-direction:column; min-height:0; }
.ins-section.active.drill-open .ins-card.ins-active { flex:1 1 auto; min-height:0; display:flex; flex-direction:column; }
.ins-section.active.drill-open .ins-card.ins-active .ins-card-body { flex:1 1 auto; min-height:0; height:auto !important; }
.insights-header { margin-bottom:16px; }
.insights-header h2 { font-size:1.4rem; font-weight:700; color:#fff; }

/* ── Navigation pills ────────────────────────────── */
.insights-nav { display:flex; gap:6px; margin-bottom:20px; flex-wrap:wrap; }
.ins-pill {
  padding:6px 16px; border-radius:20px; border:1px solid var(--border);
  background:transparent; color:var(--muted); font-size:.78rem; font-family:inherit;
  cursor:pointer; transition:all .2s;
}
.ins-pill:hover { color:var(--text); border-color:var(--accent2); }
.ins-pill.active { background:var(--accent); color:#fff; border-color:var(--accent); }

/* ── Sections ────────────────────────────────────── */
.ins-section { display:none; }
.ins-section.active { display:block; }
/* In drill-down mode: hide all cards except the active one */
.ins-section.drill-open .ins-card { display:none; }
.ins-section.drill-open .ins-card.ins-active { display:block; }
.ins-section.drill-open .ins-row { display:contents; }
/* Fullscreen card in L2 */
.ins-card.ins-active .ins-card-body { height:calc(100vh - var(--nav-h) - 180px); overflow-y:auto; }
.ins-card.ins-active .ins-card-body canvas { display:block; width:100%; height:100%; }

/* ── Cards ───────────────────────────────────────── */
.ins-card {
  background:var(--bg2); border:1px solid var(--border); border-radius:12px;
  margin-bottom:16px; overflow:hidden;
}
.ins-full { width:100%; }
.ins-row { display:grid; grid-template-columns:1fr 1fr; gap:16px; margin-bottom:0; }
.ins-half { }

.ins-card-header {
  padding:14px 18px 10px; display:flex; align-items:baseline; gap:12px; flex-wrap:wrap;
  border-bottom:1px solid rgba(47,49,70,.4);
}
.ins-card-header h3 { font-size:.95rem; font-weight:600; color:#fff; margin:0; }
.ins-desc { font-size:.75rem; color:var(--muted); }
.ins-controls { margin-left:auto; }
.ins-select {
  padding:4px 8px; border-radius:6px; border:1px solid var(--border);
  background:var(--bg3); color:var(--text); font-size:.75rem; font-family:inherit; cursor:pointer;
}

.ins-explainer {
  margin:10px 18px 0; padding:10px 14px; border-radius:8px;
  background:rgba(96,165,250,.06); border-left:3px solid var(--accent, #60a5fa);
  font-size:.78rem; color:#c8cad8; line-height:1.5;
}
.ins-explainer.coauth { background:rgba(52,211,153,.07); border-left-color:#34d399; }
.ins-explainer.cite   { background:rgba(167,139,250,.07); border-left-color:#a78bfa; }
.ins-explainer b { color:#fff; }
.ins-explainer .ins-ex-row { margin-top:4px; }
.ins-explainer .ins-ex-tag {
  display:inline-block; padding:1px 7px; border-radius:10px;
  font-size:.68rem; font-weight:600; margin-right:6px; vertical-align:middle;
}
.ins-explainer .ins-ex-tag.coauth { background:#34d399; color:#0b1018; }
.ins-explainer .ins-ex-tag.cite   { background:#a78bfa; color:#0b1018; }
.ins-howto {
  display:flex; flex-wrap:wrap; gap:14px; margin-top:10px;
  padding-top:8px; border-top:1px dashed rgba(255,255,255,.06);
  font-size:.74rem; color:#c8cad8;
}
.ins-howto-step b { color:#fff; margin-right:4px; }

/* ── Toggle (segmented button) ─────────────────────── */
.ins-toggle {
  display:inline-flex; border:1px solid var(--border); border-radius:6px;
  overflow:hidden; background:var(--bg3);
}
.ins-toggle button {
  padding:4px 10px; background:transparent; border:none; color:var(--muted);
  font-size:.72rem; font-family:inherit; cursor:pointer; transition:all .15s;
}
.ins-toggle button.active { background:var(--accent); color:#fff; }
.ins-toggle button:hover:not(.active) { background:rgba(255,255,255,.04); color:var(--text); }

/* ── Co-authorship layout: graph + side panel ──────── */
/* Active card body becomes flex column so visualization fills remaining space */
.ins-card.ins-active .ins-card-body { display:flex; flex-direction:column; }
.ins-card.ins-active .ins-card-body > .coauth-layout { flex:1 1 auto; min-height:0; }

.coauth-layout {
  display:grid; grid-template-columns: 1fr 360px; gap:14px;
  min-height:500px;
}
.coauth-graph-wrap { position:relative; min-width:0; min-height:0; height:100%; }
.coauth-graph-wrap canvas { display:block; width:100%; height:100%; cursor:pointer; }
.coauth-graph-wrap > div { height:100%; }
.coauth-detail {
  background:rgba(15,17,30,.5); border:1px solid var(--border);
  border-radius:8px; padding:14px; overflow-y:auto; max-height:none; height:100%;
  font-size:.8rem; color:#c8cad8;
}
.coauth-detail-empty {
  color:var(--muted); font-size:.8rem; text-align:center;
  padding:40px 12px; line-height:1.5;
}
.coauth-detail h4 {
  margin:0 0 6px; color:#fff; font-size:1rem; font-weight:600;
  display:flex; align-items:center; gap:8px; flex-wrap:wrap;
}
.coauth-detail .cd-cluster-tag {
  display:inline-block; padding:2px 8px; border-radius:10px;
  font-size:.65rem; font-weight:600; color:#0b1018;
}
.coauth-detail .cd-orcid {
  font-size:.6rem; padding:1px 6px; border-radius:4px;
  background:#a6ce39; color:#0b1018; font-family:ui-monospace,SFMono-Regular,monospace;
  font-weight:600; letter-spacing:.02em;
}
.coauth-detail .cd-ror-id {
  font-family:ui-monospace,SFMono-Regular,monospace;
  font-size:.7rem; color:#60a5fa;
}
.coauth-detail .cd-stats {
  display:grid; grid-template-columns:1fr 1fr; gap:6px;
  margin:10px 0; padding:8px; background:rgba(255,255,255,.03);
  border-radius:6px;
}
.coauth-detail .cd-stat-label { font-size:.65rem; color:var(--muted); text-transform:uppercase; letter-spacing:.04em; }
.coauth-detail .cd-stat-val { font-size:.95rem; font-weight:600; color:#e2e4f0; }
.coauth-detail .cd-section {
  font-size:.65rem; text-transform:uppercase; letter-spacing:.05em;
  color:var(--muted); margin:14px 0 6px; font-weight:600;
}
.coauth-detail .cd-cluster-bar {
  display:flex; height:8px; border-radius:4px; overflow:hidden;
  background:rgba(255,255,255,.03);
}
.coauth-detail .cd-cluster-legend {
  display:flex; flex-wrap:wrap; gap:6px; margin-top:4px; font-size:.7rem;
}
.coauth-detail .cd-cluster-legend span { color:var(--muted); }
.coauth-detail .cd-collab-row {
  display:flex; justify-content:space-between; align-items:center;
  padding:4px 6px; border-radius:4px; cursor:pointer; font-size:.78rem;
  transition: background .15s;
}
.coauth-detail .cd-collab-row:hover { background:rgba(52,211,153,.1); }
.coauth-detail .cd-collab-row .cd-collab-w {
  font-size:.7rem; color:#34d399; font-weight:600;
}
.coauth-detail .cd-drill-btn {
  display:block; width:100%; margin-top:14px; padding:10px 14px;
  background:var(--accent); color:#fff; border:none; border-radius:6px;
  font-size:.85rem; font-weight:600; font-family:inherit; cursor:pointer;
  transition:background .15s;
}
.coauth-detail .cd-drill-btn:hover { background:#9333ea; }
.coauth-detail .cd-inst-list {
  font-size:.7rem; color:var(--muted); line-height:1.5;
}
.coauth-detail .cd-inst-list a { color:#60a5fa; text-decoration:none; }

@media (max-width: 1100px) {
  .coauth-layout { grid-template-columns: 1fr; }
  .coauth-detail { max-height:none; }
}

.ins-card-body { padding:14px 18px; overflow-x:auto; }
.ins-card-body canvas { display:block; width:100%; }

/* ── Tables ──────────────────────────────────────── */
.ins-table { width:100%; }
.ins-table-head {
  display:grid; grid-template-columns:2fr 1fr 1fr 1fr;
  gap:8px; padding:6px 0; font-size:.7rem; color:var(--muted);
  text-transform:uppercase; letter-spacing:.05em; border-bottom:1px solid var(--border);
  font-weight:600;
}
.ins-table-head.ins-table-5 { grid-template-columns:3fr 0.5fr 1.5fr 0.8fr 0.8fr; }
.ins-table-head.ins-table-6 { grid-template-columns:2fr 0.8fr 1.2fr 0.8fr 0.8fr 0.8fr; }

.ins-table-row {
  display:grid; grid-template-columns:2fr 1fr 1fr 1fr;
  gap:8px; padding:8px 0; font-size:.78rem; border-bottom:1px solid rgba(47,49,70,.3);
  align-items:center;
}
.ins-table-row.ins-table-5 { grid-template-columns:3fr 0.5fr 1.5fr 0.8fr 0.8fr; }
.ins-table-row.ins-table-6 { grid-template-columns:2fr 0.8fr 1.2fr 0.8fr 0.8fr 0.8fr; }

.ins-dot { display:inline-block; width:8px; height:8px; border-radius:50%; margin-right:6px; vertical-align:middle; }
.ins-muted { color:var(--muted); font-size:.7rem; }

/* ── Inline bar ──────────────────────────────────── */
.ins-bar {
  display:inline-block; height:14px; border-radius:3px; margin-right:6px; vertical-align:middle;
  opacity:0.5;
}

/* ── Paper rows ──────────────────────────────────── */
.ins-paper-row {
  padding:10px 0; border-bottom:1px solid rgba(47,49,70,.3);
}
.ins-paper-title { font-size:.82rem; line-height:1.4; }
.ins-paper-title a { color:#fff; }
.ins-paper-title a:hover { color:var(--accent2); text-decoration:underline; }
.ins-paper-meta { font-size:.72rem; color:var(--muted); margin-top:3px; display:flex; gap:6px; flex-wrap:wrap; align-items:center; }

.ins-cluster-tag {
  display:inline-block; font-size:.6rem; padding:1px 6px; border-radius:8px;
  color:#fff; font-weight:500;
}

/* ── Mini bar (bridge papers) ────────────────────── */
.ins-minibar {
  display:flex; height:6px; border-radius:3px; overflow:hidden; margin-top:6px;
}
.ins-minibar > div { min-width:2px; }

/* ── Pulse patterns ──────────────────────────────── */
.pulse-pattern {
  display:inline-block; font-size:.6rem; padding:1px 6px; border-radius:8px;
  font-weight:500; text-transform:capitalize;
}
.pulse-classic { background:rgba(52,211,153,.2); color:#34d399; }
.pulse-hype { background:rgba(248,113,113,.2); color:#f87171; }
.pulse-sleeping_beauty { background:rgba(167,139,250,.2); color:#a78bfa; }
.pulse-method { background:rgba(96,165,250,.2); color:#60a5fa; }
.pulse-new { background:rgba(148,163,184,.2); color:#94a3b8; }

.pulse-list { max-height:400px; overflow-y:auto; margin-top:12px; }

/* ── Time Machine slider ─────────────────────────── */
.tm-slider-wrap { display:flex; align-items:center; gap:12px; padding:10px 0; }
.tm-slider {
  flex:1; height:4px; -webkit-appearance:none; appearance:none;
  background:var(--border); border-radius:2px; outline:none; cursor:pointer;
}
.tm-slider::-webkit-slider-thumb {
  -webkit-appearance:none; width:16px; height:16px; border-radius:50%;
  background:var(--accent2); border:2px solid var(--bg); cursor:pointer;
}
.tm-year { font-size:1.1rem; font-weight:600; color:var(--accent2); min-width:50px; text-align:center; }

/* ── School Detector ─────────────────────────────── */
.ins-school-cluster { margin-bottom:20px; }
.ins-school-cluster h4 { font-size:.88rem; font-weight:600; color:#fff; margin-bottom:10px; display:flex; align-items:center; gap:8px; }
.ins-school-group {
  background:rgba(47,49,70,.2); border:1px solid rgba(47,49,70,.4);
  border-radius:8px; padding:10px; margin-bottom:8px;
}
.ins-school-members { display:flex; flex-wrap:wrap; gap:4px; margin-bottom:6px; }
.ins-author-tag {
  font-size:.7rem; padding:2px 8px; border-radius:10px;
  background:rgba(255,255,255,.06); color:var(--text);
}
.ins-school-stats { font-size:.7rem; color:var(--muted); }

/* ── What-If & Recommender ───────────────────────── */
.ins-select { width:100%; padding:0.5rem 0.75rem; background:var(--bg-dark, #1a1b2e); color:#c8cad8;
  border:1px solid rgba(255,255,255,0.1); border-radius:6px; font-size:.85rem; }
.ins-label { display:block; font-size:.75rem; color:var(--muted); margin-bottom:.4rem; text-transform:uppercase; letter-spacing:.04em; }
.ins-impact-bar { display:flex; height:22px; border-radius:4px; overflow:hidden; margin:4px 0; }
.ins-impact-bar > div { display:flex; align-items:center; justify-content:center; font-size:.65rem; color:#fff; min-width:2px; }
.ins-metric-grid { display:grid; grid-template-columns:repeat(auto-fit, minmax(120px,1fr)); gap:.75rem; margin:1rem 0; }
.ins-metric { background:rgba(255,255,255,0.03); padding:.75rem; border-radius:8px; text-align:center; }
.ins-metric-value { font-size:1.4rem; font-weight:700; color:#e2e4f0; }
.ins-metric-label { font-size:.7rem; color:var(--muted); margin-top:.25rem; }
.ins-sim-card { background:rgba(255,255,255,0.03); padding:.75rem 1rem; border-radius:8px; margin-bottom:.5rem;
  display:flex; align-items:center; gap:1rem; }
.ins-sim-score { font-size:1.1rem; font-weight:700; color:#34d399; min-width:50px; text-align:center; }
.ins-sim-info { flex:1; }
.ins-sim-info a { color:#60a5fa; text-decoration:none; font-size:.85rem; }
.ins-sim-info a:hover { text-decoration:underline; }
.ins-sim-meta { font-size:.7rem; color:var(--muted); margin-top:2px; }
.ins-profile-bar { display:flex; height:16px; border-radius:3px; overflow:hidden; margin:6px 0 2px; }
.ins-profile-bar > div { min-width:1px; }
.ins-profile-legend { font-size:.65rem; color:var(--muted); }

/* ── Breadcrumbs ─────────────────────────────────── */
.ins-breadcrumbs {
  display:flex; align-items:center; gap:8px; padding:8px 0; margin-bottom:8px;
  font-size:.82rem; color:var(--muted); min-height:32px;
}
.ins-bc-item { cursor:pointer; transition:color .15s; }
.ins-bc-item:hover { color:#e2e4f0; }
.ins-bc-item.ins-bc-active { color:#e2e4f0; cursor:default; font-weight:600; }
.ins-bc-sep { color:rgba(255,255,255,.15); font-size:1rem; }
.ins-bc-tool-sep, .ins-bc-tool { display:none; }
.ins-breadcrumbs.level-2 .ins-bc-tool-sep,
.ins-breadcrumbs.level-2 .ins-bc-tool { display:inline; }
.ins-bc-arrows { margin-left:auto; display:flex; gap:4px; }
.ins-bc-arrow {
  width:32px; height:32px; border-radius:6px; border:1px solid rgba(255,255,255,.1);
  background:transparent; color:#c8cad8; font-size:1rem; cursor:pointer;
  display:flex; align-items:center; justify-content:center; transition:all .15s;
}
.ins-bc-arrow:hover { background:rgba(255,255,255,.08); color:#fff; }

/* ── Tile grid (L1) ──────────────────────────────── */
.ins-grid {
  display:none;
  grid-template-columns:repeat(auto-fill, minmax(380px, 1fr));
  gap:24px; padding:12px 0;
}
.ins-grid.visible {
  display:grid;
  height:calc(100vh - var(--nav-h) - 170px);
  align-content:center;
}
.ins-tile {
  background:rgba(30,31,50,.7); border:1px solid rgba(255,255,255,.06);
  border-radius:14px; padding:28px; cursor:pointer;
  display:flex; flex-direction:column; gap:14px;
  transition:all .2s ease; position:relative; overflow:hidden;
}
.ins-tile:hover {
  border-color:var(--accent); background:rgba(40,41,65,.8);
  transform:translateY(-2px); box-shadow:0 8px 24px rgba(0,0,0,.3);
}
.ins-tile-icon {
  width:48px; height:48px; border-radius:10px; display:flex;
  align-items:center; justify-content:center; font-size:1.5rem;
  background:rgba(255,255,255,.04);
}
.ins-tile-title { font-size:1.15rem; font-weight:600; color:#e2e4f0; }
.ins-tile-desc { font-size:.82rem; color:var(--muted); line-height:1.4; }
.ins-tile-preview {
  height:140px; border-radius:8px; overflow:hidden;
  background:rgba(0,0,0,.15); position:relative;
}
.ins-tile-preview canvas { display:block; width:100%; height:100%; }
.ins-tile-metric {
  display:flex; align-items:baseline; gap:8px; padding:12px 0;
}
.ins-tile-metric-val { font-size:2.4rem; font-weight:700; color:#e2e4f0; }
.ins-tile-metric-label { font-size:.85rem; color:var(--muted); }

/* ── Search-select (paper picker) ───────────────── */
.ins-search-select { position:relative; }
.ins-search-input {
  width:100%; box-sizing:border-box; padding:10px 14px;
  background:rgba(255,255,255,.06); border:1px solid rgba(255,255,255,.12);
  border-radius:8px; color:#e2e4f0; font-size:.85rem; font-family:Inter,sans-serif;
  outline:none; transition:border-color .2s;
}
.ins-search-input:focus { border-color:var(--accent); }
.ins-search-input::placeholder { color:#6b6f8a; }
.ins-search-list {
  position:absolute; top:100%; left:0; right:0; z-index:100;
  max-height:320px; overflow-y:auto; display:none;
  background:rgba(22,23,40,.97); border:1px solid rgba(255,255,255,.1);
  border-radius:0 0 8px 8px; backdrop-filter:blur(12px);
  box-shadow:0 8px 32px rgba(0,0,0,.5);
}
.ins-search-select.open .ins-search-list { display:block; }
.ins-search-item {
  padding:8px 14px; cursor:pointer; font-size:.8rem; color:#c8cad8;
  border-bottom:1px solid rgba(255,255,255,.04); transition:background .1s;
}
.ins-search-item:hover, .ins-search-item.selected { background:rgba(139,92,246,.15); color:#fff; }
.ins-search-item .ins-si-cit { color:var(--muted); font-size:.7rem; margin-left:6px; }
.ins-search-item .ins-cluster-tag { font-size:.6rem; padding:1px 6px; margin-left:4px; vertical-align:middle; }

/* ── Tooltip ─────────────────────────────────────── */
.ins-tooltip {
  position:fixed; z-index:9999; pointer-events:none;
  background:rgba(20,21,35,.95); border:1px solid rgba(255,255,255,.15);
  border-radius:8px; padding:8px 12px; font-size:.78rem; color:#c8cad8;
  max-width:320px; line-height:1.5; backdrop-filter:blur(8px);
  box-shadow:0 4px 16px rgba(0,0,0,.4);
  transition:opacity .12s ease;
  opacity:0;
}
.ins-tooltip.visible { opacity:1; }
.ins-tooltip b { color:#e2e4f0; }
.ins-tooltip .tt-color { display:inline-block; width:8px; height:8px; border-radius:2px; margin-right:4px; vertical-align:middle; }
.ins-tooltip .tt-row { display:flex; justify-content:space-between; gap:12px; }
.ins-tooltip .tt-val { font-weight:600; color:#e2e4f0; }
.ins-tooltip hr { border:none; border-top:1px solid rgba(255,255,255,.08); margin:4px 0; }

/* ── Canvas interactivity ────────────────────────── */
canvas.ins-interactive { cursor:crosshair; }
canvas.ins-interactive:hover { cursor:crosshair; }

/* ── Vertical crosshair on timeline ──────────────── */
.ins-crosshair { position:absolute; top:0; bottom:0; width:1px; background:rgba(255,255,255,.2); pointer-events:none; display:none; }

/* ── Sortable table headers ──────────────────────── */
.ins-table-head span[data-sort] { cursor:pointer; user-select:none; }
.ins-table-head span[data-sort]:hover { color:#e2e4f0; }
.ins-table-head span[data-sort]::after { content:" \u2195"; opacity:.3; font-size:.7em; }
.ins-table-head span[data-sort].sort-asc::after { content:" \u25B2"; opacity:.7; }
.ins-table-head span[data-sort].sort-desc::after { content:" \u25BC"; opacity:.7; }

/* ── Sparkline canvas ────────────────────────────── */
.ins-sparkline { display:inline-block; vertical-align:middle; margin-left:8px; }

/* ── Responsive insights ─────────────────────────── */
@media (max-width:900px) {
  .ins-row { grid-template-columns:1fr; }
}

/* ═══════════════════════════════════════════════════ */
/* ARTICLE MODAL (museum / kiosk mode)                */
/* ═══════════════════════════════════════════════════ */
.article-modal {
  position:fixed; inset:0; z-index:9999;
  display:flex; align-items:center; justify-content:center;
}
.article-modal-backdrop {
  position:absolute; inset:0;
  background:rgba(0,0,0,.7); backdrop-filter:blur(8px);
}
.article-modal-body {
  position:relative; z-index:1;
  width:min(820px, 92vw); max-height:88vh;
  background:rgba(26,27,46,.98); border:1px solid var(--border);
  border-radius:16px; padding:36px 40px 32px;
  overflow-y:auto; box-shadow:0 24px 80px rgba(0,0,0,.6);
}
.article-modal-close {
  position:absolute; top:14px; right:16px; background:none; border:none;
  color:var(--muted); font-size:1.8rem; cursor:pointer; width:44px; height:44px;
  display:grid; place-items:center; border-radius:8px; transition:all .2s;
}
.article-modal-close:hover { color:#fff; background:rgba(124,58,237,.15); }

.am-loading, .am-error { text-align:center; padding:60px 20px; color:var(--muted); font-size:1rem; }
.am-error { color:#ef4444; }

.am-title {
  font-size:1.25rem; font-weight:600; color:#fff; line-height:1.45;
  margin-bottom:20px; padding-right:50px;
}
.am-meta-grid { margin-bottom:20px; }
.am-row {
  display:flex; gap:12px; font-size:.88rem; padding:7px 0;
  border-bottom:1px solid rgba(47,49,70,.4);
}
.am-key { color:var(--muted); min-width:80px; flex-shrink:0; font-weight:500; }
.am-val { color:var(--text); line-height:1.5; }

.am-section-label {
  font-size:.78rem; font-weight:600; text-transform:uppercase; letter-spacing:.08em;
  color:var(--accent2); margin:20px 0 10px;
}
.am-abstract {
  font-size:.9rem; color:var(--muted); line-height:1.7;
  padding:16px; background:rgba(47,49,70,.3); border-radius:10px;
}
.am-abstract p { margin:0 0 .8em; }
.am-abstract p:last-child { margin-bottom:0; }

.am-affiliations { font-size:.8rem; color:var(--muted); line-height:1.5; }
.am-aff-item { padding:4px 0; border-bottom:1px solid rgba(47,49,70,.25); }
.am-aff-item:last-child { border-bottom:none; }

@media (min-width:3000px) {
  .article-modal-body { width:min(1100px, 90vw); padding:48px 56px 40px; }
  .am-title { font-size:24px; }
  .am-row { font-size:18px; padding:10px 0; }
  .am-key { min-width:110px; }
  .am-abstract { font-size:18px; padding:24px; }
  .am-section-label { font-size:16px; }
  .article-modal-close { font-size:2.2rem; width:56px; height:56px; }
}
