/* ═══════════════════════════════════════════════════════════════
   ThreatNexus v2 — Complete Stylesheet
   DM Sans (body) + JetBrains Mono (data)
   ═══════════════════════════════════════════════════════════════ */
:root {
  --bg: #060d18; --bg2: #0a1628; --bg3: #0f1c2e; --bg4: #152540;
  --border: rgba(77,166,232,.08); --border2: rgba(77,166,232,.14);
  --text: #c8daea; --text2: #9db8d2; --text3: #5a7a96;
  --blue: #4da6e8; --red: #e06060; --orange: #e8924a; --green: #4cc78a; --purple: #9d7ee8; --gold: #d4a040;
  --mono: 'JetBrains Mono', monospace; --sans: 'DM Sans', -apple-system, sans-serif;
  --topbar-h: 46px; --sidebar-w: 200px; --detail-w: 400px;
}
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html,body{height:100%;overflow:hidden}
body{font-family:var(--sans);background:var(--bg);color:var(--text);font-size:13px;line-height:1.5;-webkit-font-smoothing:antialiased}
a{color:var(--blue);text-decoration:none}a:hover{text-decoration:underline}
::selection{background:rgba(77,166,232,.3)}
::-webkit-scrollbar{width:5px;height:5px}::-webkit-scrollbar-track{background:transparent}::-webkit-scrollbar-thumb{background:var(--border2);border-radius:3px}

/* ── TOPBAR ──────────────────────────────────────── */
.topbar{height:var(--topbar-h);display:flex;align-items:center;gap:8px;padding:0 12px;background:var(--bg2);border-bottom:1px solid var(--border);position:relative;z-index:100;flex-shrink:0}
.mob-menu-btn{display:none;background:none;border:none;color:var(--text3);cursor:pointer;padding:5px}
.tb-brand{display:flex;align-items:center;gap:7px;flex-shrink:0}
.tb-logo{width:26px;height:26px}
.tb-name{font-family:var(--mono);font-weight:700;font-size:13px;color:var(--text);letter-spacing:.5px}
.tb-desc{font-size:9px;color:var(--text3);letter-spacing:.3px}
.tb-div{width:1px;height:22px;background:var(--border);flex-shrink:0}

.tabs{display:flex;gap:1px;flex-shrink:0}
.tab{display:flex;align-items:center;gap:4px;padding:5px 8px;border:none;border-radius:4px;background:transparent;color:var(--text3);font-family:var(--sans);font-size:11px;font-weight:500;cursor:pointer;transition:all .12s;white-space:nowrap}
.tab:hover{color:var(--text2);background:var(--bg3)}
.tab.on{color:var(--blue);background:rgba(77,166,232,.08)}
.tab svg{flex-shrink:0}

.tb-search{display:flex;align-items:center;gap:5px;background:var(--bg3);border:1px solid var(--border);border-radius:4px;padding:0 7px;flex:1;max-width:240px}
.tb-search-ico{color:var(--text3);flex-shrink:0}
.tb-search input{flex:1;border:none;background:none;font-family:var(--mono);font-size:10px;color:var(--text);padding:5px 0;outline:none}
.tb-search input::placeholder{color:var(--text3)}

.filter-count{font-family:var(--mono);font-size:9px;color:var(--orange);background:rgba(232,146,74,.1);border:1px solid rgba(232,146,74,.2);border-radius:3px;padding:1px 5px}

.chips{display:flex;gap:3px;flex-shrink:0}
.chip{font-family:var(--mono);font-size:9px;padding:2px 7px;border-radius:3px;cursor:pointer;background:var(--bg3);color:var(--text3);border:1px solid var(--border);transition:all .12s}
.chip:hover{border-color:var(--border2);color:var(--text2)}
.chip.on-esp{color:var(--blue);border-color:var(--blue);background:rgba(77,166,232,.1)}
.chip.on-fin{color:var(--orange);border-color:var(--orange);background:rgba(232,146,74,.1)}
.chip.on-des{color:var(--red);border-color:var(--red);background:rgba(224,96,96,.1)}
.chip.on-mix{color:var(--purple);border-color:var(--purple);background:rgba(157,126,232,.1)}

.tb-stats{display:flex;gap:10px;margin-left:auto;flex-shrink:0}
.tb-stat{display:flex;flex-direction:column;align-items:center}
.tb-stat-val{font-family:var(--mono);font-weight:700;font-size:13px;color:var(--text);line-height:1.1}
.tb-stat-lbl{font-size:8px;color:var(--text3);text-transform:uppercase;letter-spacing:.5px}

/* ── BODY ────────────────────────────────────────── */
.body{display:flex;height:calc(100vh - var(--topbar-h))}
.sidebar{width:var(--sidebar-w);flex-shrink:0;background:var(--bg2);border-right:1px solid var(--border);overflow-y:auto;overflow-x:hidden}
.sb-scroll{padding:12px 10px;display:flex;flex-direction:column;min-height:100%}
.sb-sec{margin-bottom:14px}
.sb-sec-title{font-family:var(--mono);font-size:9px;text-transform:uppercase;letter-spacing:.7px;color:var(--text3);margin-bottom:6px}
.sb-overlay{display:none}
.c-list{display:flex;flex-direction:column;gap:1px}
.c-row{display:flex;align-items:center;gap:6px;padding:3px 5px;border-radius:3px;cursor:pointer;transition:background .1s}
.c-row:hover{background:var(--bg3)}.c-row.on{background:var(--bg4)}
.c-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.c-name{font-size:11px;color:var(--text2);flex:1}.c-cnt{font-family:var(--mono);font-size:9px;color:var(--text3)}
.edge-key{display:flex;flex-direction:column;gap:4px}
.ek-row{display:flex;align-items:center;gap:7px;font-size:10px;color:var(--text2)}
.ek-line{width:14px;height:2px;border-radius:1px;flex-shrink:0}
.archive-btn{width:100%;padding:5px 8px;font-family:var(--mono);font-size:9px;color:var(--text3);background:var(--bg3);border:1px solid var(--border);border-radius:3px;cursor:pointer;transition:all .12s}
.archive-btn:hover{border-color:var(--border2);color:var(--text2)}
.archive-btn.on{color:var(--blue);border-color:var(--blue);background:rgba(77,166,232,.08)}

/* ── VIEWS ───────────────────────────────────────── */
.main{flex:1;position:relative;overflow:hidden}
.view-panel{position:absolute;inset:0;display:none;overflow:hidden}
.view-panel.on{display:flex}

/* Globe */
.globe-wrap{width:100%;height:100%;position:relative;background:var(--bg)}
#globe-canvas{width:100%;height:100%;display:block;cursor:grab}#globe-canvas:active{cursor:grabbing}
#globe-loading{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;background:var(--bg);z-index:5}
.spin{width:24px;height:24px;border:2px solid var(--border2);border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite;margin:0 auto 10px}
@keyframes spin{to{transform:rotate(360deg)}}
.load-txt{font-family:var(--mono);font-size:10px;color:var(--text3)}
#g-tooltip{display:none;position:absolute;pointer-events:none;z-index:50;background:var(--bg2);border:1px solid var(--border2);border-radius:5px;padding:8px 12px;box-shadow:0 6px 24px rgba(0,0,0,.5);max-width:260px}

/* Cluster */
#cluster-svg{width:100%;height:100%;background:var(--bg)}
#c-tip{position:fixed;pointer-events:none;z-index:200;opacity:0;transition:opacity .1s;background:var(--bg2);border:1px solid var(--border2);border-radius:5px;padding:8px 12px;box-shadow:0 6px 24px rgba(0,0,0,.5);max-width:280px}
#c-tip.on{opacity:1}

/* Diamond */
.dv-scroll{width:100%;height:100%;overflow-y:auto;padding:16px}
.dv-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:12px}
.dv-card{background:var(--bg2);border:1px solid var(--border);border-radius:6px;padding:14px;transition:border-color .12s,transform .12s;cursor:pointer}
.dv-card:hover{border-color:var(--border2);transform:translateY(-1px)}
.dv-header{border-left:3px solid;padding-left:9px;margin-bottom:12px}
.dv-name{font-weight:700;font-size:13px}.dv-badges{display:flex;gap:7px;font-family:var(--mono);font-size:9px;margin-top:3px}
.dv-diamond{display:flex;flex-direction:column;align-items:center;gap:6px;margin:6px 0}
.dv-mid{display:flex;align-items:center;gap:10px;width:100%}
.dv-facet{flex:1}.dv-fl{font-family:var(--mono);font-size:8px;text-transform:uppercase;color:var(--text3);letter-spacing:.4px}
.dv-fv{font-size:10px;color:var(--text2);line-height:1.4;margin-top:1px;overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.dv-center{width:40px;height:40px;border-radius:5px;border:1px solid;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.dv-tools{font-size:10px;color:var(--text3);margin-top:8px;border-top:1px solid var(--border);padding-top:6px}
.dv-tl{font-family:var(--mono);font-size:9px;color:var(--text3)}

/* Matrix */
.matrix-wrap{width:100%;height:100%;overflow:auto;padding:16px}
.matrix-hdr{margin-bottom:12px}.matrix-hdr h2{font-size:16px;font-weight:700}.matrix-hdr p{font-size:11px;color:var(--text3);margin-top:3px}
.mx-wrap{overflow-x:auto}.mx-tbl{border-collapse:collapse;font-size:10px}
.mx-corner{font-family:var(--mono);font-size:9px;color:var(--text3);text-align:left;padding:3px 6px;position:sticky;left:0;background:var(--bg);z-index:2}
.mx-gh{font-family:var(--mono);font-size:8px;writing-mode:vertical-rl;text-orientation:mixed;padding:4px 2px;max-width:24px;white-space:nowrap;overflow:hidden}
.mx-tech{padding:2px 6px;white-space:nowrap;position:sticky;left:0;background:var(--bg2);z-index:1;border-right:1px solid var(--border);display:flex;align-items:center;gap:5px;cursor:pointer}
.mx-tech:hover{background:var(--bg3)}
.mx-tid{font-family:var(--mono);font-size:9px;font-weight:600}.mx-tname{color:var(--text2);font-size:9px}
.mx-cnt{font-family:var(--mono);font-size:8px;color:var(--text3);margin-left:auto}
.mx-cell{width:24px;height:18px;min-width:24px;border:1px solid rgba(0,0,0,.12);transition:all .08s}
.mx-cell.mx-on{cursor:pointer}.mx-cell.mx-on:hover{opacity:.7}
.mx-reverse{margin-top:12px;padding:12px;background:var(--bg2);border:1px solid var(--border);border-radius:5px}
.mx-rev-title{font-family:var(--mono);font-weight:700;font-size:12px;color:var(--blue)}
.mx-rev-sub{font-size:10px;color:var(--text3);margin:3px 0 6px}.mx-rev-list{display:flex;flex-wrap:wrap;gap:5px}
.mx-rev-grp{font-family:var(--mono);font-size:10px;font-weight:600;padding:2px 6px;background:var(--bg3);border-radius:3px;cursor:pointer}
.mx-rev-grp:hover{text-decoration:underline}

/* Sector */
.sv-scroll{width:100%;height:100%;overflow-y:auto;padding:16px}
.sv-hdr{margin-bottom:12px}.sv-hdr h2{font-size:16px;font-weight:700}.sv-hdr p{font-size:11px;color:var(--text3);margin-top:3px}
.sector-chips{display:flex;flex-wrap:wrap;gap:5px;margin-bottom:12px}
.sc-chip{font-family:var(--mono);font-size:9px;padding:3px 8px;border-radius:3px;border:1px solid var(--border);background:var(--bg2);color:var(--text3);cursor:pointer;transition:all .1s}
.sc-chip:hover{border-color:var(--border2);color:var(--text2)}
.sc-chip.on{color:var(--blue);border-color:var(--blue);background:rgba(77,166,232,.08)}
.sv-empty{color:var(--text3);font-size:12px;padding:16px;text-align:center}
.sv-card{display:flex;align-items:center;justify-content:space-between;padding:8px 12px;border-radius:5px;background:var(--bg2);border:1px solid var(--border);margin-bottom:4px;cursor:pointer;transition:border-color .1s}
.sv-card:hover{border-color:var(--border2)}
.sv-card-left{display:flex;align-items:center;gap:8px}
.sv-dot{width:8px;height:8px;border-radius:50%;flex-shrink:0}
.sv-name{font-weight:600;font-size:12px}.sv-sub{font-size:10px;color:var(--text3);margin-top:1px}
.sv-live{font-family:var(--mono);font-size:8px;color:var(--red);margin-top:2px;animation:pulse-text 2s infinite}
@keyframes pulse-text{0%,100%{opacity:1}50%{opacity:.4}}
.sv-score{font-family:var(--mono);font-weight:700;font-size:16px}

/* ── CAMPAIGNS (was Timeline) ────────────────────── */
.tl-scroll{width:100%;height:100%;overflow-y:auto;padding:16px}
.tl-hdr{margin-bottom:12px}.tl-hdr h2{font-size:16px;font-weight:700}.tl-hdr p{font-size:11px;color:var(--text3);margin-top:3px}
.tl-year-chips{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:14px}
.tl-yc{font-family:var(--mono);font-size:9px;padding:3px 8px;border-radius:3px;border:1px solid var(--border);background:var(--bg2);color:var(--text3);cursor:pointer;transition:all .1s}
.tl-yc:hover{border-color:var(--border2);color:var(--text2)}
.tl-yc.on{color:var(--blue);border-color:var(--blue);background:rgba(77,166,232,.08)}
.tl-rows{display:flex;flex-direction:column;gap:2px}
.tl-row{display:flex;align-items:center;gap:10px;padding:4px 6px;border-radius:3px;cursor:pointer}
.tl-row:hover{background:var(--bg2)}
.tl-label{width:160px;flex-shrink:0;overflow:hidden}
.tl-label-name{font-weight:600;font-size:10px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tl-label-camp{font-size:9px;color:var(--text3);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tl-track{flex:1;height:16px;position:relative;background:var(--bg3);border-radius:2px}
.tl-bar{position:absolute;top:2px;height:12px;border-radius:2px;min-width:4px;transition:opacity .12s}
.tl-bar:hover{opacity:.8}
.tl-live{animation:tl-pulse 2s infinite}
@keyframes tl-pulse{0%,100%{opacity:.9}50%{opacity:.45}}
.tl-pulse-dot{position:absolute;right:-3px;top:2px;width:7px;height:7px;border-radius:50%;background:#fff;opacity:.7;animation:tl-pulse 1.5s infinite}
.tl-status{width:60px;flex-shrink:0;text-align:right}
.tl-live-badge{font-family:var(--mono);font-size:8px;color:var(--red);font-weight:700;animation:pulse-text 2s infinite}
.tl-ended-badge{font-family:var(--mono);font-size:8px;color:var(--text3)}

/* ── EXECUTIVE BRIEF ─────────────────────────────── */
.exec-scroll{width:100%;height:100%;overflow-y:auto;padding:14px 16px}
.ex-conflict-banner{background:linear-gradient(135deg,rgba(224,96,96,.1),rgba(224,96,96,.03));border:1px solid rgba(224,96,96,.2);border-radius:6px;padding:8px 12px;margin-bottom:10px;display:flex;align-items:center}
.ex-cb-left{display:flex;align-items:center;gap:8px}
.ex-cb-dot{width:8px;height:8px;border-radius:50%;background:var(--red);animation:pulse-text 1.5s infinite;flex-shrink:0}
.ex-cb-level{font-family:var(--mono);font-weight:700;font-size:11px;color:var(--red)}
.ex-cb-detail{font-size:10px;color:var(--text3)}
.ex-header{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px}
.ex-t1{font-size:17px;font-weight:700}.ex-t2{font-size:10px;color:var(--text3);margin-top:1px}
.ex-toggle-btn{font-family:var(--mono);font-size:9px;padding:4px 8px;border-radius:3px;border:1px solid var(--border);background:var(--bg3);color:var(--text3);cursor:pointer;display:flex;align-items:center;gap:4px;transition:all .12s}
.ex-toggle-btn.on{color:var(--gold);border-color:var(--gold);background:rgba(212,160,64,.08)}

.ex-kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-bottom:12px}
.ex-kpi{background:var(--bg2);border:1px solid var(--border);border-radius:6px;padding:10px 8px;text-align:center}
.ex-kv{font-family:var(--mono);font-weight:700;font-size:22px;line-height:1}
.ex-kl{font-size:10px;color:var(--text2);margin-top:4px}

.ex-cols{display:grid;grid-template-columns:1fr 1fr;gap:12px;margin-bottom:12px}
.ex-col{background:var(--bg2);border:1px solid var(--border);border-radius:6px;padding:10px 12px}
.ex-col-title{font-family:var(--mono);font-size:10px;font-weight:600;color:var(--text2);margin-bottom:6px;display:flex;align-items:center;gap:5px}
.ex-threat{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:4px;cursor:pointer;transition:background .1s}
.ex-threat:hover{background:var(--bg3)}
.ex-threat-rank{font-family:var(--mono);font-size:10px;color:var(--text3);width:16px;text-align:center}
.ex-threat-rank.top{color:var(--red);font-weight:700}
.ex-threat-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.ex-threat-info{flex:1;min-width:0}
.ex-threat-name{font-weight:600;font-size:11px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ex-threat-sub{font-size:9px;color:var(--text3)}
.ex-threat-score{font-family:var(--mono);font-weight:700;font-size:13px;text-align:right}

.ex-camp{display:flex;align-items:center;gap:6px;padding:4px 6px;border-radius:4px;cursor:pointer;transition:background .1s}
.ex-camp:hover{background:var(--bg3)}
.ex-camp-dot{width:7px;height:7px;border-radius:50%;flex-shrink:0}
.ex-camp-info{flex:1;min-width:0}
.ex-camp-name{font-weight:600;font-size:11px}
.ex-camp-by{font-size:9px;color:var(--text3)}
.ex-camp-live{font-family:var(--mono);font-size:8px;color:var(--red);font-weight:700;animation:pulse-text 2s infinite}

.ex-cve{display:flex;align-items:center;gap:6px;padding:3px 0;font-size:10px}
.ex-cve-id{font-family:var(--mono);font-size:10px;color:var(--blue);font-weight:600}
.ex-cve-prod{color:var(--text3);flex:1;font-size:9px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ex-cve-grp{font-family:var(--mono);font-size:9px;font-weight:600}

.ex-sector-section{background:var(--bg2);border:1px solid var(--border);border-radius:6px;padding:10px 12px;margin-bottom:10px}
.ex-sectors{display:flex;flex-direction:column;gap:3px}
.ex-sec-row{display:flex;align-items:center;gap:8px}
.ex-sec-name{font-size:10px;color:var(--text2);width:120px;flex-shrink:0}
.ex-sec-bar-wrap{flex:1;height:12px;background:var(--bg3);border-radius:2px;overflow:hidden}
.ex-sec-bar{height:100%;border-radius:2px;transition:width .3s ease}
.ex-sec-cnt{font-family:var(--mono);font-size:10px;font-weight:700;width:22px;text-align:right}
.ex-footer{display:flex;flex-direction:column;gap:3px;padding:10px 0;border-top:1px solid var(--border)}
.ex-footer span{font-size:9px;color:var(--text3)}

/* ── CVSS pills ──────────────────────────────────── */
.cpill{font-family:var(--mono);font-size:9px;font-weight:700;padding:1px 4px;border-radius:2px}
.cpill-c{color:#fff;background:var(--red)}.cpill-h{color:#fff;background:var(--orange)}.cpill-m{color:var(--gold);background:rgba(212,160,64,.15)}

/* ── DETAIL PANEL ────────────────────────────────── */
.detail{width:0;flex-shrink:0;background:var(--bg2);border-left:1px solid var(--border);overflow-y:auto;transition:width .2s ease}
.detail.on{width:var(--detail-w)}
.dp-head{display:flex;justify-content:space-between;align-items:flex-start;padding:12px 14px 10px;border-bottom:1px solid var(--border);position:sticky;top:0;background:var(--bg2);z-index:5}
.dp-name{font-size:16px;font-weight:700}.dp-sub{font-family:var(--mono);font-size:10px;color:var(--text3);margin-top:2px}
.dp-close{background:none;border:none;color:var(--text3);cursor:pointer;padding:4px;border-radius:3px;flex-shrink:0}
.dp-close:hover{color:var(--text);background:var(--bg3)}
.dp-body{padding:0 14px 16px}
.ds{padding:10px 0;border-bottom:1px solid var(--border)}
.ds-title{font-family:var(--mono);font-size:10px;font-weight:600;text-transform:uppercase;letter-spacing:.4px;color:var(--text3);margin-bottom:6px;display:flex;align-items:center;justify-content:space-between}
.dp-badges{display:flex;flex-wrap:wrap;gap:4px;margin-bottom:6px}
.dpbadge{font-family:var(--mono);font-size:9px;padding:1px 6px;border:1px solid;border-radius:3px;display:inline-flex;align-items:center;gap:3px}
.dot{width:5px;height:5px;border-radius:50%}
.dp-aka{font-size:10px;color:var(--text3);margin-bottom:6px}
.meta-grid{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin:8px 0}
.meta-cell{background:var(--bg3);border-radius:4px;padding:6px 8px}
.mk{font-family:var(--mono);font-size:8px;text-transform:uppercase;color:var(--text3);letter-spacing:.4px}
.mv{font-size:11px;color:var(--text);margin-top:2px}
.dp-desc{font-size:11px;color:var(--text2);line-height:1.65;margin-top:8px}

/* GCC note */
.gcc-note{padding:8px 10px;border-radius:4px;border:1px solid var(--border)}
.gcc-note-high{border-color:rgba(212,160,64,.25);background:rgba(212,160,64,.04)}
.gcc-note-medium{border-color:rgba(77,166,232,.15);background:rgba(77,166,232,.03)}
.gcc-note-pill{font-family:var(--mono);font-size:8px;font-weight:700;margin-bottom:3px}
.gcc-note-text{font-size:11px;color:var(--text2);line-height:1.55}

/* Campaigns in detail */
.camp-card{background:var(--bg3);border:1px solid var(--border);border-radius:4px;padding:8px;margin-bottom:5px}
.camp-head{display:flex;justify-content:space-between;align-items:center}
.camp-name{font-weight:600;font-size:11px}
.camp-live{font-family:var(--mono);font-size:8px;color:var(--red);font-weight:700;animation:pulse-text 2s infinite}
.camp-closed{font-family:var(--mono);font-size:8px;color:var(--text3)}
.camp-meta{font-size:9px;color:var(--text3);display:flex;gap:6px;margin-top:3px}
.camp-targets,.camp-cves{font-size:9px;color:var(--text3);margin-top:2px}
.camp-src{font-size:8px;color:var(--text3);margin-top:3px;opacity:.6}

/* Infra */
.infra-list{display:flex;flex-direction:column;gap:3px}
.infra-item{font-size:11px;color:var(--text2);display:flex;gap:5px;line-height:1.45}
.infra-bullet{color:var(--blue);flex-shrink:0}

/* Sectors */
.tag-row{display:flex;flex-wrap:wrap;gap:3px}
.sec-badge{font-size:9px;padding:1px 6px;background:var(--bg3);border:1px solid var(--border);border-radius:2px;color:var(--text2)}

/* TTPs + Sigma link */
.ttp-list{display:flex;flex-direction:column;gap:2px}
.ttp{display:flex;align-items:center;gap:5px;padding:3px 0 3px 7px;border-left:2px solid}
.ttp-id{font-family:var(--mono);font-size:9px;font-weight:600;flex-shrink:0}
.ttp-name{font-size:10px;color:var(--text2);flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ttp-tac{font-family:var(--mono);font-size:8px;padding:1px 4px;border-radius:2px;flex-shrink:0}
.ttp-sigma{font-family:var(--mono);font-size:10px;font-weight:700;color:var(--purple);text-decoration:none;padding:0 3px;flex-shrink:0;opacity:.6;transition:opacity .1s}
.ttp-sigma:hover{opacity:1;text-decoration:none}
.nav-export-btn{font-family:var(--mono);font-size:8px;padding:2px 6px;border-radius:2px;border:1px solid var(--border);background:var(--bg3);color:var(--text3);cursor:pointer;display:inline-flex;align-items:center;gap:3px;transition:all .1s}
.nav-export-btn:hover{color:var(--blue);border-color:var(--blue)}

/* Malware */
.mal-list{display:flex;flex-direction:column;gap:2px}
.mal{display:flex;align-items:center;gap:6px;padding:2px 0}
.mal-name{font-family:var(--mono);font-size:10px;font-weight:600;color:var(--text);flex:1}
.mal-type{font-size:9px;color:var(--text3)}.mal-plat{font-family:var(--mono);font-size:8px;color:var(--text3)}

/* CVE table */
.cvt{width:100%;border-collapse:collapse;font-size:10px}
.cvt th{font-family:var(--mono);font-size:9px;text-align:left;color:var(--text3);padding:3px 5px;border-bottom:1px solid var(--border)}
.cvt td{padding:3px 5px;border-bottom:1px solid var(--border)}
.cve-id{font-family:var(--mono);font-size:10px;color:var(--blue);font-weight:600}

/* Advisories */
.det-list{display:flex;flex-direction:column;gap:4px}
.det{display:flex;align-items:flex-start;gap:6px}
.det-src{font-family:var(--mono);font-size:8px;color:var(--text3);background:var(--bg3);padding:1px 4px;border-radius:2px;flex-shrink:0}
.det-link{font-size:10px}

/* Members */
.mem-tbl{width:100%;border-collapse:collapse;font-size:11px}
.mem-tbl th{font-family:var(--mono);font-size:9px;text-align:left;color:var(--text3);padding:3px 5px;border-bottom:1px solid var(--border)}
.mem-tbl td{padding:4px 5px;border-bottom:1px solid var(--border)}
.mbadge{font-family:var(--mono);font-size:8px;padding:1px 4px;border-radius:2px}
.mbadge-i{color:var(--red);background:rgba(224,96,96,.1)}.mbadge-s{color:var(--orange);background:rgba(232,146,74,.1)}.mbadge-d{color:var(--text3);background:var(--bg3)}

/* ── LIVE FEED ───────────────────────────────────── */
.feed-scroll{width:100%;height:100%;overflow-y:auto;padding:16px}
.feed-layout{display:grid;grid-template-columns:1fr 1fr 1fr;gap:12px}
.feed-col{background:var(--bg2);border:1px solid var(--border);border-radius:6px;padding:12px;overflow:hidden}
.feed-col-hdr{margin-bottom:10px;padding-bottom:8px;border-bottom:1px solid var(--border)}
.feed-col-title{font-family:var(--mono);font-size:11px;font-weight:600;color:var(--text);display:flex;align-items:center;gap:6px}
.feed-col-sub{font-size:9px;color:var(--text3);margin-top:3px}
.feed-live-dot{width:6px;height:6px;border-radius:50%;background:var(--green);animation:pulse-text 2s infinite;flex-shrink:0}
.feed-items{display:flex;flex-direction:column;gap:6px;max-height:calc(100vh - 220px);overflow-y:auto}
.feed-item{padding:6px 8px;background:var(--bg3);border-radius:4px;border:1px solid var(--border)}
.feed-item-head{display:flex;justify-content:space-between;align-items:center;margin-bottom:3px}
.feed-cve-id{font-family:var(--mono);font-size:10px;color:var(--blue);font-weight:600}
.feed-age{font-family:var(--mono);font-size:9px;color:var(--text3)}
.feed-fresh{color:var(--green)}
.feed-vendor{font-size:9px;color:var(--text3);margin-bottom:2px}
.feed-vuln-name{font-size:10px;color:var(--text2);line-height:1.4}
.feed-due{font-size:9px;color:var(--text3);margin-top:2px}
.feed-src-badge{font-family:var(--mono);font-size:8px;color:var(--blue);background:rgba(77,166,232,.08);padding:1px 5px;border-radius:2px}
.feed-rss-title{font-size:10px;color:var(--text);display:block;margin-top:3px;line-height:1.4}
.feed-rss-title:hover{color:var(--blue)}
.feed-ransom-group{font-family:var(--mono);font-size:10px;font-weight:700}
.feed-ransom-victim{font-size:10px;color:var(--text2);margin-top:2px}
.feed-error{padding:16px;text-align:center;color:var(--text3)}
.feed-error-title{font-weight:600;font-size:12px;margin-bottom:4px}
.feed-error-detail{font-size:10px}
.feed-footer{display:flex;justify-content:space-between;align-items:center;padding:10px 0;margin-top:12px;border-top:1px solid var(--border)}
.feed-footer span{font-size:9px;color:var(--text3)}
.feed-refresh-btn{font-family:var(--mono);font-size:9px;padding:4px 10px;border-radius:3px;border:1px solid var(--border);background:var(--bg3);color:var(--text3);cursor:pointer;display:flex;align-items:center;gap:4px;transition:all .1s}
.feed-refresh-btn:hover{color:var(--blue);border-color:var(--blue)}
.feed-loading{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:40px}
.feed-loading-spinner{width:24px;height:24px;border:2px solid var(--border2);border-top-color:var(--blue);border-radius:50%;animation:spin .8s linear infinite;margin-bottom:10px}
.feed-loading-text{font-family:var(--mono);font-size:10px;color:var(--text3)}

/* ── MOBILE ──────────────────────────────────────── */
.mob-search-bar{display:none}.mob-tabs{display:none}

@media(max-width:900px){
  .tb-div,.tb-search,.tb-chips-hide,.tb-stat-hide,.tb-div-hide{display:none!important}
  .tabs{display:none}
  .mob-menu-btn{display:flex}
  .sidebar{position:fixed;left:-250px;top:var(--topbar-h);width:240px;height:calc(100vh - var(--topbar-h));z-index:200;transition:left .2s ease}
  .sidebar.mob-open{left:0}
  .sb-overlay{position:fixed;inset:0;top:var(--topbar-h);background:rgba(0,0,0,.5);z-index:199;display:none}
  .sb-overlay.on{display:block}
  .mob-search-bar{display:flex;align-items:center;gap:6px;padding:5px 12px;background:var(--bg2);border-bottom:1px solid var(--border)}
  .mob-search-bar input{flex:1;border:none;background:none;font-family:var(--mono);font-size:10px;color:var(--text);padding:3px 0;outline:none}
  .mob-tabs{display:flex;justify-content:space-around;padding:5px 0;background:var(--bg2);border-top:1px solid var(--border);position:fixed;bottom:0;left:0;right:0;z-index:100}
  .mob-tab{display:flex;flex-direction:column;align-items:center;gap:1px;font-size:8px;color:var(--text3);background:none;border:none;cursor:pointer;padding:3px 6px}
  .mob-tab.on{color:var(--blue)}
  .body{height:calc(100vh - var(--topbar-h) - 34px - 50px)}
  .detail.on{width:100%;position:fixed;top:var(--topbar-h);left:0;right:0;bottom:50px;z-index:150}
  .ex-kpis{grid-template-columns:repeat(2,1fr)}
  .ex-cols{grid-template-columns:1fr}
  .feed-layout{grid-template-columns:1fr}
}

@media(max-width:1280px){
  .ex-kpis{gap:6px}.ex-kpi{padding:8px 6px}.ex-kv{font-size:18px}
  .ex-cols{gap:8px}.ex-col{padding:8px 10px}
}

/* ── FEED LINKS / ADDITIONAL SOURCES ──────────────── */
.feed-links-row{margin-top:14px;padding:14px;background:var(--bg2);border:1px solid var(--border);border-radius:6px}
.feed-links-title{font-family:var(--mono);font-size:10px;font-weight:600;color:var(--text2);margin-bottom:10px;text-transform:uppercase;letter-spacing:.5px}
.feed-links-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(150px,1fr));gap:6px}
.feed-link-card{display:block;padding:8px 10px;background:var(--bg3);border:1px solid var(--border);border-radius:4px;transition:all .12s;text-decoration:none}
.feed-link-card:hover{border-color:var(--border2);transform:translateY(-1px);text-decoration:none}
.feed-link-name{font-family:var(--mono);font-size:10px;font-weight:600;color:var(--blue)}
.feed-link-desc{font-size:9px;color:var(--text3);margin-top:2px}

/* ── MATRIX DETECTION REPOS ──────────────────────── */
.mx-rev-repos{margin:6px 0 8px;display:flex;align-items:center;gap:8px;font-size:10px;color:var(--text3)}
.mx-repo-link{font-family:var(--mono);font-size:10px;font-weight:600;padding:2px 6px;background:var(--bg3);border-radius:3px;text-decoration:none;transition:opacity .1s}
.mx-repo-link:hover{opacity:.7;text-decoration:none}

/* ── FEED AV TAG ─────────────────────────────────── */
.feed-av-tag{font-family:var(--mono);font-size:8px;color:var(--red);background:rgba(224,96,96,.1);padding:1px 4px;border-radius:2px}

/* ── RESPONSIVE FEED ─────────────────────────────── */
@media(max-width:900px){
  .feed-layout{grid-template-columns:1fr!important}
  .feed-links-grid{grid-template-columns:repeat(2,1fr)}
}
@media(max-width:1280px){
  .feed-links-grid{grid-template-columns:repeat(3,1fr)}
}

/* ── Feed cache note ─────────────────────────────── */
.feed-cache-note{font-family:var(--mono);font-size:8px;color:var(--text3);padding:6px 8px;opacity:.6;text-align:right}

/* ── Matrix detection repos ──────────────────────── */
.mx-rev-repos{margin:6px 0 8px;display:flex;align-items:center;gap:8px;font-size:10px;color:var(--text3)}
.mx-repo-link{font-family:var(--mono);font-size:10px;font-weight:600;padding:2px 6px;background:var(--bg3);border-radius:3px;text-decoration:none;transition:opacity .1s}
.mx-repo-link:hover{opacity:.7;text-decoration:none}

/* ── Sidebar Author Section ──────────────────────── */
.sb-author{margin-top:auto;padding-top:14px;border-top:1px solid var(--border)}
.sb-author-links{display:flex;flex-direction:column;gap:4px;margin-top:6px}
.sb-author-links a{display:flex;align-items:center;gap:7px;padding:5px 8px;border-radius:4px;color:var(--text2);text-decoration:none;font-size:11px;transition:background .12s,color .12s}
.sb-author-links a:hover{background:var(--bg3);color:var(--blue);text-decoration:none}
.sb-author-links svg{flex-shrink:0;opacity:.6}
.sb-author-links a:hover svg{opacity:1}
.sb-author-copy{font-family:var(--mono);font-size:8px;color:var(--text3);margin-top:8px;opacity:.5}
