/* ═══════════════════════════════════════════════════════════════
   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}

/* ── IOC Intelligence (shared) ────────────────────── */
.ioc-settings-btn{background:none;border:1px solid var(--border);color:var(--text3);width:22px;height:22px;border-radius:4px;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;margin-left:8px;vertical-align:middle;transition:all .12s}
.ioc-settings-btn:hover{color:var(--blue);border-color:var(--blue)}
.ioc-controls{display:flex;gap:8px;align-items:center;margin:8px 0 10px;flex-wrap:wrap}
.ioc-select{background:var(--bg3);color:var(--text1);border:1px solid var(--border);border-radius:4px;padding:6px 8px;font-family:var(--mono);font-size:11px;min-width:180px;flex:1;max-width:280px}
.ioc-select:focus{outline:none;border-color:var(--blue)}
.ioc-fetch-btn{background:var(--blue);color:#fff;border:none;border-radius:4px;padding:6px 12px;font-family:var(--mono);font-size:11px;font-weight:600;cursor:pointer;transition:opacity .12s;white-space:nowrap}
.ioc-fetch-btn:hover{opacity:.85}
.ioc-fetch-btn:disabled{opacity:.5;cursor:not-allowed}
.ioc-ext-link{font-family:var(--mono);font-size:10px;color:var(--text3);text-decoration:none;padding:6px 8px;border:1px solid var(--border);border-radius:4px}
.ioc-ext-link:hover{color:var(--blue);border-color:var(--blue)}
.ioc-results{margin-top:8px;min-height:40px}
.ioc-hint{font-size:11px;color:var(--text3);line-height:1.7;padding:10px 12px;background:var(--bg3);border-radius:4px;border-left:2px solid var(--blue)}
.ioc-hint a{color:var(--blue);text-decoration:none}
.ioc-hint a:hover{text-decoration:underline}
.ioc-loading{display:flex;align-items:center;gap:10px;padding:14px;color:var(--text3);font-size:11px;font-family:var(--mono)}
.ioc-error{padding:10px 12px;background:rgba(224,96,96,.08);border-left:2px solid var(--red);color:var(--text2);font-size:11px;border-radius:4px}
.ioc-error a{color:var(--blue);text-decoration:none;margin-left:8px}
.ioc-summary{font-size:11px;color:var(--text2);padding:6px 0 10px;font-family:var(--mono)}
.ioc-group{margin-bottom:12px;background:var(--bg3);border-radius:4px;overflow:hidden}
.ioc-group-hdr{display:flex;justify-content:space-between;align-items:center;padding:7px 10px;background:rgba(255,255,255,.02);border-bottom:1px solid var(--border)}
.ioc-group-label{font-family:var(--mono);font-size:10px;font-weight:700;text-transform:uppercase;letter-spacing:.5px}
.ioc-copy-btn{background:none;border:1px solid var(--border);color:var(--text3);padding:3px 8px;border-radius:3px;font-family:var(--mono);font-size:9px;cursor:pointer;transition:all .12s}
.ioc-copy-btn:hover{color:var(--blue);border-color:var(--blue)}
.ioc-group-items{padding:4px 0;max-height:280px;overflow-y:auto}
.ioc-row{display:flex;align-items:center;padding:4px 10px;gap:8px;border-bottom:1px solid rgba(255,255,255,.02);font-family:var(--mono);font-size:10px}
.ioc-row:last-child{border-bottom:none}
.ioc-row:hover{background:rgba(77,166,232,.04)}
.ioc-val{color:var(--text1);text-decoration:none;word-break:break-all;flex:1;min-width:0}
.ioc-val:hover{color:var(--blue);text-decoration:underline}
.ioc-mal{color:var(--text3);font-size:9px;opacity:.7;white-space:nowrap}
.ioc-date{color:var(--text3);font-size:9px;flex-shrink:0;white-space:nowrap}
.ioc-more{padding:6px 10px;font-size:10px;color:var(--text3);font-style:italic;border-top:1px solid var(--border)}
.ioc-key-panel{margin-top:10px;padding:12px;background:var(--bg3);border-radius:4px;border:1px solid var(--border)}
.ioc-key-label{font-family:var(--mono);font-size:10px;color:var(--text2);margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}
.ioc-key-row{display:flex;gap:6px;align-items:center}
.ioc-key-input{flex:1;background:var(--bg1);color:var(--text1);border:1px solid var(--border);border-radius:3px;padding:6px 8px;font-family:var(--mono);font-size:11px;min-width:0}
.ioc-key-input:focus{outline:none;border-color:var(--blue)}
.ioc-key-save{background:var(--blue);color:#fff;border:none;border-radius:3px;padding:6px 10px;font-family:var(--mono);font-size:10px;font-weight:600;cursor:pointer}
.ioc-key-clear{background:var(--bg1);color:var(--text3);border:1px solid var(--border);border-radius:3px;padding:6px 10px;font-family:var(--mono);font-size:10px;cursor:pointer}
.ioc-key-clear:hover{color:var(--red);border-color:var(--red)}
.ioc-key-note{font-size:10px;color:var(--text3);margin-top:8px;line-height:1.6}
.ioc-key-note a{color:var(--blue);text-decoration:none}

/* ── IOC Search Top-Level View ────────────────────── */
.iocs-wrap{padding:18px 24px;max-width:1100px;margin:0 auto}
.iocs-hdr{margin-bottom:16px}
.iocs-hdr h2{font-family:var(--sans);font-size:18px;font-weight:700;margin:0 0 4px;color:var(--text1)}
.iocs-hdr p{font-size:12px;color:var(--text3);margin:0;line-height:1.5}
.iocs-search-box{background:var(--bg2);border:1px solid var(--border);border-radius:6px;padding:12px;margin-bottom:12px}
.iocs-input-row{display:flex;gap:8px;align-items:center}
.iocs-input{flex:1;background:var(--bg1);color:var(--text1);border:1px solid var(--border);border-radius:4px;padding:9px 12px;font-family:var(--mono);font-size:12px;min-width:0}
.iocs-input:focus{outline:none;border-color:var(--blue)}
.iocs-search-btn{background:var(--blue);color:#fff;border:none;border-radius:4px;padding:9px 16px;font-family:var(--mono);font-size:11px;font-weight:600;cursor:pointer}
.iocs-search-btn:hover{opacity:.85}
.iocs-search-btn:disabled{opacity:.5;cursor:not-allowed}
.iocs-settings-btn{background:none;border:1px solid var(--border);color:var(--text3);width:32px;height:32px;border-radius:4px;cursor:pointer;display:flex;align-items:center;justify-content:center}
.iocs-settings-btn:hover{color:var(--blue);border-color:var(--blue)}
.iocs-syntax{margin-top:10px;font-size:10px;color:var(--text3);display:flex;gap:8px;align-items:center;flex-wrap:wrap;font-family:var(--mono)}
.iocs-syntax code{background:var(--bg3);color:var(--blue);padding:3px 6px;border-radius:3px;cursor:pointer;transition:background .12s}
.iocs-syntax code:hover{background:rgba(77,166,232,.15)}
.iocs-key-panel{background:rgba(77,166,232,.06);border:1px solid rgba(77,166,232,.25);border-radius:6px;padding:14px;margin-bottom:12px}
.iocs-key-title{font-family:var(--mono);font-size:11px;font-weight:700;color:var(--blue);margin-bottom:6px;text-transform:uppercase;letter-spacing:.5px}
.iocs-key-desc{font-size:11px;color:var(--text2);margin-bottom:10px;line-height:1.6}
.iocs-key-desc a{color:var(--blue);text-decoration:none}
.iocs-key-desc a:hover{text-decoration:underline}
.iocs-key-row{display:flex;gap:6px;align-items:center}
.iocs-key-input{flex:1;background:var(--bg1);color:var(--text1);border:1px solid var(--border);border-radius:3px;padding:7px 10px;font-family:var(--mono);font-size:11px;min-width:0}
.iocs-key-input:focus{outline:none;border-color:var(--blue)}
.iocs-key-save{background:var(--blue);color:#fff;border:none;border-radius:3px;padding:7px 12px;font-family:var(--mono);font-size:10px;font-weight:600;cursor:pointer}
.iocs-key-clear{background:var(--bg1);color:var(--text3);border:1px solid var(--border);border-radius:3px;padding:7px 12px;font-family:var(--mono);font-size:10px;cursor:pointer}
.iocs-key-clear:hover{color:var(--red);border-color:var(--red)}
.iocs-results{background:var(--bg2);border:1px solid var(--border);border-radius:6px;padding:14px;min-height:200px}
.iocs-empty{text-align:center;padding:40px 20px;color:var(--text3)}
.iocs-empty-icon{font-size:32px;margin-bottom:12px;opacity:.5}
.iocs-empty-title{font-family:var(--mono);font-size:13px;color:var(--text2);margin-bottom:16px}
.iocs-empty-hints{font-size:11px;display:flex;gap:6px;justify-content:center;flex-wrap:wrap;margin-bottom:18px;font-family:var(--mono)}
.iocs-empty-hints code{background:var(--bg3);color:var(--blue);padding:4px 8px;border-radius:3px;cursor:pointer;transition:background .12s}
.iocs-empty-hints code:hover{background:rgba(77,166,232,.15)}
.iocs-empty-footer{font-size:10px;color:var(--text3);opacity:.7;font-family:var(--mono);padding-top:16px;border-top:1px solid var(--border);margin-top:16px}
.iocs-empty-footer a{color:var(--blue);text-decoration:none}
.iocs-error{padding:12px 14px;background:rgba(224,96,96,.08);border-left:3px solid var(--red);color:var(--text2);font-size:12px;border-radius:4px;margin-bottom:12px}
.iocs-error a{color:var(--blue);text-decoration:none}
.iocs-linkbtn{background:none;border:none;color:var(--blue);text-decoration:underline;cursor:pointer;font:inherit;padding:0}

@media(max-width:700px){
  .ioc-controls{flex-direction:column;align-items:stretch}
  .ioc-select{max-width:none}
  .iocs-wrap{padding:14px}
  .iocs-input-row{flex-wrap:wrap}
  .iocs-syntax{font-size:9px}
}

/* ── MalwareBazaar toggle + sample rows ──────────── */
.iocs-toggle{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:10px;color:var(--text2);cursor:pointer;padding:6px 10px;background:var(--bg3);border:1px solid var(--border);border-radius:4px;white-space:nowrap}
.iocs-toggle:hover{border-color:var(--blue);color:var(--text1)}
.iocs-toggle input{margin:0;cursor:pointer;accent-color:var(--blue)}
.iocs-toggle input:checked + span{color:var(--blue)}
.ioc-mb-row{flex-direction:row;align-items:flex-start}
.ioc-mb-fname{font-size:9px;color:var(--text3);margin-top:2px;word-break:break-all;opacity:.75}
.iocs-note{margin-top:10px;padding:6px 10px;font-size:10px;color:var(--text3);font-family:var(--mono);background:rgba(255,255,255,.02);border-radius:3px}

/* ── Day/Night Mode Toggle (top-right of topbar) ── */
.theme-toggle{display:inline-flex;align-items:center;gap:4px;background:var(--bg3);border:1px solid var(--border);border-radius:4px;padding:3px;flex-shrink:0;margin-left:4px}
.theme-toggle button{background:none;border:none;color:var(--text3);padding:3px 6px;border-radius:3px;cursor:pointer;font-family:var(--mono);font-size:9px;font-weight:600;transition:all .12s;display:inline-flex;align-items:center;gap:3px}
.theme-toggle button:hover{color:var(--text2)}
.theme-toggle button.on{background:var(--bg4);color:var(--blue)}
.theme-toggle svg{width:10px;height:10px;flex-shrink:0}
@media(max-width:1280px){.theme-toggle button span{display:none}}

/* ── LIGHT MODE ─────────────────────────────────── */
body.light-mode {
  --bg: #f4f7fb;
  --bg2: #ffffff;
  --bg3: #edf2f8;
  --bg4: #dde7f2;
  --border: rgba(30,80,140,.12);
  --border2: rgba(30,80,140,.22);
  --text: #1a2838;
  --text2: #42607d;
  --text3: #7090b0;
  --blue: #2672c2;
  --red: #c83838;
  --orange: #cc6a15;
  --green: #1f9b5a;
  --purple: #7050c5;
  --gold: #a87616;
}
body.light-mode ::selection{background:rgba(38,114,194,.25)}
body.light-mode ::-webkit-scrollbar-thumb{background:rgba(30,80,140,.22)}

/* Inputs/search fields in light mode — ensure readable */
body.light-mode .tb-search{background:#fff;border-color:rgba(30,80,140,.18)}
body.light-mode .tb-search input{color:var(--text)}
body.light-mode .mob-search-bar{background:#fff;border-bottom-color:var(--border)}
body.light-mode .ioc-key-input,
body.light-mode .iocs-key-input,
body.light-mode .iocs-input,
body.light-mode .ioc-select{background:#fff;color:var(--text);border-color:rgba(30,80,140,.2)}

/* Chips and badges — slightly darker tints in light mode */
body.light-mode .chip{background:rgba(30,80,140,.06);color:var(--text2);border-color:rgba(30,80,140,.15)}
body.light-mode .chip:hover{background:rgba(30,80,140,.1)}
body.light-mode .sec-badge{background:rgba(30,80,140,.06);color:var(--text2)}

/* Globe loading / detail panel backgrounds */
body.light-mode .globe-wrap{background:#eef3f8}
body.light-mode #globe-loading{background:#eef3f8}
body.light-mode .detail{background:#ffffff;border-left-color:rgba(30,80,140,.12)}
body.light-mode .sidebar{background:var(--bg2);border-right-color:var(--border)}
body.light-mode .topbar{background:#ffffff;border-bottom-color:rgba(30,80,140,.1);box-shadow:0 1px 2px rgba(30,80,140,.05)}

/* Globe itself — stars and sphere colors are set in three.js, but the background needs override */
body.light-mode .globe-wrap canvas{background:#eef3f8 !important}

/* Ensure code/mono text stays readable in light mode */
body.light-mode .iocs-syntax code,
body.light-mode .iocs-empty-hints code{background:rgba(30,80,140,.08);color:var(--blue)}
body.light-mode .iocs-syntax code:hover,
body.light-mode .iocs-empty-hints code:hover{background:rgba(38,114,194,.15)}

/* Feed cards */
body.light-mode .feed-item{background:#fff;border-color:rgba(30,80,140,.08)}
body.light-mode .feed-link-card{background:#fff;border-color:rgba(30,80,140,.1)}
body.light-mode .feed-link-card:hover{background:#f8fbff}

/* Tables in light mode */
body.light-mode .cvt thead th,
body.light-mode .mem-tbl thead th{background:#edf2f8;color:var(--text2)}

/* ── ENHANCED GLOBE TOOLTIP ─────────────────────── */
#g-tooltip {
  position: absolute; pointer-events: none; z-index: 50;
  background: rgba(10, 22, 40, 0.96); backdrop-filter: blur(8px);
  border: 1px solid var(--border); border-radius: 6px;
  padding: 0; min-width: 220px; max-width: 280px;
  box-shadow: 0 6px 24px rgba(0, 0, 0, 0.5);
  font-family: var(--sans);
  display: none;
}
body.light-mode #g-tooltip { background: rgba(255, 255, 255, 0.97); border-color: rgba(30,80,140,.15); box-shadow: 0 6px 24px rgba(30,80,140,.15); }
.gtip-hdr { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border-bottom: 1px solid; }
.gtip-flag { width: 12px; height: 12px; border-radius: 2px; flex-shrink: 0; }
.gtip-title { flex: 1; min-width: 0; }
.gtip-nation { font-family: var(--mono); font-size: 12px; font-weight: 700; letter-spacing: 0.4px; }
.gtip-count { font-size: 10px; color: var(--text3); margin-top: 1px; }
.gtip-stats { display: flex; flex-wrap: wrap; gap: 4px 10px; padding: 8px 12px; border-bottom: 1px solid var(--border); }
.gtip-stat { font-family: var(--mono); font-size: 9px; font-weight: 600; }
.gtip-groups { padding: 8px 12px; }
.gtip-group { display: flex; align-items: center; gap: 6px; padding: 3px 0; font-size: 11px; }
.gtip-gname { flex: 1; min-width: 0; color: var(--text); font-weight: 500; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.gtip-gyear { font-family: var(--mono); font-size: 9px; color: var(--text3); }
.gtip-fresh, .gtip-recent { font-family: var(--mono); font-size: 8px; font-weight: 700; padding: 1px 4px; border-radius: 2px; letter-spacing: 0.3px; }
.gtip-fresh { background: rgba(76, 199, 138, 0.15); color: #4cc78a; }
.gtip-recent { background: rgba(212, 160, 64, 0.15); color: #d4a040; }
.gtip-more { font-size: 10px; color: var(--text3); padding: 4px 0 0; font-style: italic; }
.gtip-targets { padding: 6px 12px; font-size: 10px; color: var(--text2); border-top: 1px solid var(--border); font-family: var(--mono); }
.gtip-cta { padding: 6px 12px; font-size: 10px; color: var(--blue); background: rgba(77, 166, 232, 0.05); border-top: 1px solid var(--border); text-align: center; font-family: var(--mono); }

/* ── GLOBE PICKER (multi-group nation click) ─────── */
.g-picker {
  position: absolute; inset: 0; z-index: 60;
  background: rgba(6, 13, 24, 0.85); backdrop-filter: blur(4px);
  display: flex; align-items: center; justify-content: center; padding: 20px;
}
body.light-mode .g-picker { background: rgba(244, 247, 251, 0.85); }
.g-picker-card { background: var(--bg2); border: 1px solid var(--border2); border-radius: 8px; max-width: 480px; width: 100%; max-height: 80vh; overflow: hidden; display: flex; flex-direction: column; box-shadow: 0 12px 48px rgba(0, 0, 0, 0.6); }
.g-picker-hdr { display: flex; align-items: center; gap: 10px; padding: 14px 16px; border-bottom: 2px solid; flex-shrink: 0; }
.g-picker-title { font-family: var(--mono); font-size: 14px; font-weight: 700; }
.g-picker-sub { font-size: 11px; color: var(--text3); margin-top: 2px; }
.g-picker-close { background: none; border: 1px solid var(--border); color: var(--text3); width: 28px; height: 28px; border-radius: 4px; cursor: pointer; font-size: 18px; line-height: 1; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.g-picker-close:hover { color: var(--red); border-color: var(--red); }
.g-picker-list { overflow-y: auto; padding: 8px; }
.g-picker-row { display: grid; grid-template-columns: 1fr auto auto auto; gap: 8px; align-items: center; padding: 8px 10px; background: transparent; border: 1px solid transparent; border-radius: 4px; color: var(--text); font-family: var(--sans); cursor: pointer; text-align: left; width: 100%; transition: all 0.12s; }
.g-picker-row:hover { background: var(--bg3); border-color: var(--border); }
.g-pl-name { font-weight: 600; font-size: 12px; }
.g-pl-apt { font-family: var(--mono); font-size: 9px; color: var(--text3); padding: 1px 5px; background: var(--bg3); border-radius: 2px; }
.g-pl-mot { font-family: var(--mono); font-size: 9px; font-weight: 600; }
.g-pl-fresh { font-family: var(--mono); font-size: 9px; font-weight: 700; }

/* ── LIVE CAMPAIGNS (in Campaigns view) ─────────── */
.live-camp-section { margin: 14px 24px 20px; background: var(--bg2); border: 1px solid var(--border); border-radius: 6px; overflow: hidden; }
.live-camp-loading { display: flex; align-items: center; gap: 10px; padding: 16px; color: var(--text3); font-size: 11px; font-family: var(--mono); }
.live-camp-empty { padding: 14px; color: var(--text3); font-size: 11px; font-family: var(--mono); text-align: center; }
.live-camp-hdr { padding: 10px 14px; border-bottom: 1px solid var(--border); display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }
.live-camp-title { display: flex; align-items: center; gap: 6px; font-family: var(--mono); font-size: 12px; font-weight: 700; color: var(--text); }
.live-camp-count { font-size: 10px; color: var(--green); margin-left: 4px; padding: 1px 5px; background: rgba(76,199,138,.1); border-radius: 2px; font-weight: 600; }
.live-camp-sub { font-size: 10px; color: var(--text3); font-family: var(--mono); }
.live-camp-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 8px; padding: 12px; }
.live-camp-card { background: var(--bg3); border: 1px solid var(--border); border-radius: 4px; padding: 9px 11px; transition: all 0.12s; }
.live-camp-card:hover { border-color: var(--border2); }
.live-camp-card-hdr { display: flex; align-items: center; justify-content: space-between; gap: 8px; margin-bottom: 4px; flex-wrap: wrap; }
.live-camp-actor { font-family: var(--mono); font-size: 11px; font-weight: 700; }
.live-camp-src { font-family: var(--mono); font-size: 9px; color: var(--text3); }
.live-camp-link { display: block; font-size: 11px; line-height: 1.4; color: var(--text2); text-decoration: none; }
.live-camp-link:hover { color: var(--blue); text-decoration: none; }

/* ── HUNT VIEW ──────────────────────────────────── */
.hunt-loading { display: flex; align-items: center; gap: 12px; padding: 60px 24px; color: var(--text3); font-size: 12px; font-family: var(--mono); justify-content: center; }
.hunt-error { padding: 30px 24px; color: var(--text2); text-align: center; font-size: 12px; }
.hunt-error a { color: var(--blue); }
.hunt-wrap { padding: 18px 24px; max-width: 1200px; margin: 0 auto; }
.hunt-hdr { display: flex; gap: 20px; margin-bottom: 16px; flex-wrap: wrap; align-items: flex-start; }
.hunt-hdr-main { flex: 1; min-width: 280px; }
.hunt-hdr-main h2 { font-family: var(--sans); font-size: 18px; font-weight: 700; margin: 0 0 4px; color: var(--text); }
.hunt-hdr-main p { font-size: 12px; color: var(--text3); margin: 0; line-height: 1.5; }
.hunt-hdr-main p a { color: var(--blue); text-decoration: none; }
.hunt-hdr-main p a:hover { text-decoration: underline; }
.hunt-repo-card { display: flex; flex-direction: column; gap: 8px; flex-shrink: 0; }
.hunt-repo-stats { display: flex; gap: 10px; align-items: center; }
.hunt-repo-stat { display: inline-flex; align-items: center; gap: 4px; font-family: var(--mono); font-size: 11px; color: var(--text2); padding: 4px 8px; background: var(--bg3); border: 1px solid var(--border); border-radius: 4px; text-decoration: none; transition: all 0.12s; }
.hunt-repo-stat:hover { color: var(--blue); border-color: var(--blue); }
.hunt-repo-updated { font-family: var(--mono); font-size: 10px; color: var(--text3); }
.hunt-repo-link { background: var(--blue); color: #fff; border: none; border-radius: 4px; padding: 6px 12px; font-family: var(--mono); font-size: 11px; font-weight: 600; cursor: pointer; text-align: center; text-decoration: none; }
.hunt-repo-link:hover { opacity: 0.85; text-decoration: none; }
.hunt-controls { display: flex; gap: 10px; margin-bottom: 14px; align-items: stretch; flex-wrap: wrap; }
.hunt-platform-tabs { display: flex; gap: 4px; background: var(--bg3); border: 1px solid var(--border); border-radius: 4px; padding: 3px; }
.hunt-platform-tab { background: none; border: none; color: var(--text3); padding: 5px 12px; border-radius: 3px; cursor: pointer; font-family: var(--sans); transition: all 0.12s; text-align: left; }
.hunt-platform-tab:hover { color: var(--text2); }
.hunt-platform-tab.on { background: var(--bg2); color: var(--tabcol, var(--blue)); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.2); }
.hunt-pt-label { display: block; font-size: 11px; font-weight: 700; }
.hunt-pt-sub { display: block; font-size: 9px; color: var(--text3); margin-top: 1px; }
.hunt-platform-tab.on .hunt-pt-sub { color: var(--text2); opacity: 0.7; }
.hunt-filter { flex: 1; min-width: 200px; background: var(--bg3); color: var(--text); border: 1px solid var(--border); border-radius: 4px; padding: 8px 10px; font-family: var(--mono); font-size: 11px; }
.hunt-filter:focus { outline: none; border-color: var(--blue); }
body.light-mode .hunt-filter { background: #fff; }
.hunt-summary { font-family: var(--mono); font-size: 11px; color: var(--text3); margin-bottom: 10px; }
.hunt-empty { padding: 40px; text-align: center; color: var(--text3); font-size: 12px; font-family: var(--mono); }
.hunt-cat { margin-bottom: 18px; }
.hunt-cat-hdr { font-family: var(--mono); font-size: 11px; font-weight: 700; color: var(--blue); text-transform: uppercase; letter-spacing: 0.5px; padding: 6px 0; border-bottom: 1px solid var(--border2); margin-bottom: 6px; }
.hunt-cat-count { color: var(--text3); font-weight: 400; margin-left: 4px; }
.hunt-cat-items { display: flex; flex-direction: column; gap: 4px; }
.hunt-q { background: var(--bg2); border: 1px solid var(--border); border-radius: 4px; overflow: hidden; transition: border-color 0.12s; }
.hunt-q:hover { border-color: var(--border2); }
.hunt-q-row { display: flex; align-items: center; gap: 10px; padding: 8px 12px; cursor: pointer; }
.hunt-q-info { flex: 1; min-width: 0; }
.hunt-q-name { font-size: 12px; color: var(--text); font-weight: 500; line-height: 1.3; }
.hunt-q-apts { display: flex; gap: 4px; flex-wrap: wrap; margin-top: 3px; }
.hunt-q-apt { font-family: var(--mono); font-size: 9px; color: var(--gold); background: rgba(212, 160, 64, 0.1); padding: 1px 5px; border-radius: 2px; font-weight: 600; }
.hunt-q-actions { display: flex; gap: 4px; flex-shrink: 0; }
.hunt-q-toggle { background: var(--bg3); color: var(--text2); border: 1px solid var(--border); border-radius: 3px; padding: 3px 10px; font-family: var(--mono); font-size: 10px; cursor: pointer; transition: all 0.12s; }
.hunt-q-toggle:hover { color: var(--blue); border-color: var(--blue); }
.hunt-q-gh { background: var(--bg3); color: var(--text3); border: 1px solid var(--border); border-radius: 3px; padding: 3px 8px; font-family: var(--mono); font-size: 12px; line-height: 1; text-decoration: none; transition: all 0.12s; }
.hunt-q-gh:hover { color: var(--blue); border-color: var(--blue); text-decoration: none; }
.hunt-q-body { border-top: 1px solid var(--border); }
.hunt-q-loading { padding: 16px; display: flex; align-items: center; gap: 8px; color: var(--text3); font-size: 11px; font-family: var(--mono); }
.hunt-q-error { padding: 12px; color: var(--text2); font-size: 11px; }
.hunt-q-error a { color: var(--blue); margin-left: 6px; }
.hunt-q-code { background: var(--bg); margin: 0; padding: 12px 14px; overflow-x: auto; font-family: var(--mono); font-size: 11px; line-height: 1.55; color: var(--text); white-space: pre; }
body.light-mode .hunt-q-code { background: #f0f4f9; }
.hq-comment { color: var(--text3); font-style: italic; }
.hq-str { color: var(--green); }
.hq-pipe { color: var(--orange); font-weight: 700; }
.hq-kw { color: var(--blue); font-weight: 600; }
.hunt-q-foot { display: flex; justify-content: space-between; align-items: center; padding: 8px 12px; background: var(--bg3); border-top: 1px solid var(--border); }
.hunt-q-copy { background: var(--blue); color: #fff; border: none; border-radius: 3px; padding: 5px 12px; font-family: var(--mono); font-size: 10px; font-weight: 600; cursor: pointer; }
.hunt-q-copy:hover { opacity: 0.85; }
.hunt-q-foot-link { font-family: var(--mono); font-size: 10px; color: var(--text3); text-decoration: none; }
.hunt-q-foot-link:hover { color: var(--blue); }

@media (max-width: 700px) {
  .hunt-wrap { padding: 14px; }
  .hunt-hdr { flex-direction: column; }
  .hunt-repo-card { width: 100%; }
  .live-camp-grid { grid-template-columns: 1fr; }
}

/* ── IOC Quick-Links (per-group dossier section) ─ */
.ioc-section-sub { font-family: var(--mono); font-size: 9px; color: var(--text3); font-weight: 400; margin-left: 6px; opacity: 0.7; }
.ioc-quick-list { display: flex; flex-direction: column; gap: 6px; }
.ioc-quick-row { display: flex; align-items: center; gap: 10px; padding: 8px 10px; background: var(--bg3); border: 1px solid var(--border); border-radius: 4px; flex-wrap: wrap; }
.ioc-quick-label { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 2px; }
.ioc-quick-name { font-family: var(--mono); font-size: 11px; font-weight: 600; color: var(--text); word-break: break-word; }
.ioc-quick-hint { font-size: 9px; color: var(--text3); font-family: var(--mono); }
.ioc-quick-links { display: flex; gap: 4px; flex-wrap: wrap; flex-shrink: 0; }
.ioc-ql { font-family: var(--mono); font-size: 9px; font-weight: 600; padding: 4px 8px; border: 1px solid var(--border); border-radius: 3px; text-decoration: none; transition: all 0.12s; white-space: nowrap; }
.ioc-ql:hover { text-decoration: none; transform: translateY(-1px); }
.ioc-ql.tf  { color: #4da6e8; border-color: rgba(77,166,232,.35); background: rgba(77,166,232,.08); }
.ioc-ql.tf:hover { background: rgba(77,166,232,.18); border-color: #4da6e8; }
.ioc-ql.mb  { color: #9d7ee8; border-color: rgba(157,126,232,.35); background: rgba(157,126,232,.08); }
.ioc-ql.mb:hover { background: rgba(157,126,232,.18); border-color: #9d7ee8; }
.ioc-ql.uh  { color: #e8924a; border-color: rgba(232,146,74,.35); background: rgba(232,146,74,.08); }
.ioc-ql.uh:hover { background: rgba(232,146,74,.18); border-color: #e8924a; }
.ioc-ql.otx { color: #e060a0; border-color: rgba(224,96,160,.35); background: rgba(224,96,160,.08); }
.ioc-ql.otx:hover { background: rgba(224,96,160,.18); border-color: #e060a0; }

/* ── IOC Search View — Frictionless redirect cards ── */
.iocs-result-hdr { padding: 12px 14px; background: var(--bg2); border: 1px solid var(--border); border-radius: 6px; margin-bottom: 10px; }
.iocs-rh-q { font-family: var(--mono); font-size: 13px; color: var(--text); }
.iocs-rh-q strong { color: var(--blue); font-weight: 700; }
.iocs-rh-sub { font-size: 11px; color: var(--text3); margin-top: 4px; }
.iocs-auto-note { padding: 8px 12px; background: rgba(212,160,64,.08); border-left: 2px solid var(--gold, #d4a040); border-radius: 4px; font-size: 11px; color: var(--text2); margin-bottom: 10px; }
.iocs-auto-note code { background: var(--bg3); padding: 1px 5px; border-radius: 2px; font-size: 10px; color: var(--blue); }
.iocs-dest-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(220px, 1fr)); gap: 10px; }
.iocs-dest-card { display: flex; flex-direction: column; gap: 4px; padding: 12px 14px; background: var(--bg2); border: 1px solid var(--border); border-left: 3px solid var(--dcol); border-radius: 4px; text-decoration: none; transition: all 0.15s; }
.iocs-dest-card:hover { background: var(--bg3); border-color: var(--dcol); transform: translateY(-1px); text-decoration: none; box-shadow: 0 4px 12px rgba(0,0,0,.2); }
body.light-mode .iocs-dest-card:hover { box-shadow: 0 4px 12px rgba(30,80,140,.1); }
.iocs-dest-hdr { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
.iocs-dest-name { font-family: var(--mono); font-size: 13px; font-weight: 700; color: var(--dcol); }
.iocs-dest-primary { font-family: var(--mono); font-size: 8px; font-weight: 700; color: #4cc78a; background: rgba(76,199,138,.12); padding: 2px 6px; border-radius: 2px; letter-spacing: 0.4px; }
.iocs-dest-sub { font-size: 11px; color: var(--text3); margin-top: 1px; }
.iocs-dest-cta { font-family: var(--mono); font-size: 10px; color: var(--text2); margin-top: 4px; opacity: 0.7; }
.iocs-dest-card:hover .iocs-dest-cta { opacity: 1; color: var(--dcol); }
.iocs-tips { margin-top: 14px; padding: 10px 14px; background: var(--bg2); border: 1px solid var(--border); border-radius: 4px; font-size: 11px; color: var(--text3); line-height: 1.7; }
.iocs-tips strong { color: var(--text2); margin-right: 6px; font-family: var(--mono); }
.iocs-tips code { background: var(--bg3); padding: 1px 5px; border-radius: 2px; font-size: 10px; color: var(--blue); font-family: var(--mono); }
.iocs-syntax-note { margin-left: 6px; opacity: 0.7; font-style: italic; }

/* ── New Feed View v3 — Two-pane layout ──────────────────────── */
#feed-view .feed-scroll { padding: 0; height: 100%; }
.lf-shell {
  display: grid;
  grid-template-columns: 240px 1fr 0;
  height: 100%;
  position: relative;
}
.lf-shell:has(.lf-detail.on) { grid-template-columns: 240px 1fr 480px; }

.lf-rail {
  background: var(--bg2);
  border-right: 1px solid var(--border);
  overflow-y: auto;
  padding: 14px 8px;
  display: flex;
  flex-direction: column;
  gap: 8px;
}
.lf-loading-rail, .lf-rail-err { padding: 20px; color: var(--text3); font-size: 12px; font-family: var(--mono); }
.lf-rail-err strong { color: var(--text); display: block; margin-bottom: 6px; }
.lf-rail-err p { margin: 4px 0; line-height: 1.5; }
.lf-rail-err-detail { font-family: var(--mono); font-size: 10px; opacity: 0.7; }

.lf-rail-stats { display: flex; gap: 8px; padding: 8px 4px 12px; border-bottom: 1px solid var(--border); margin-bottom: 4px; }
.lf-stat { flex: 1; min-width: 0; }
.lf-stat-val { display: block; font-family: var(--mono); font-size: 14px; font-weight: 700; color: var(--text); line-height: 1.2; }
.lf-stat-lbl { display: block; font-size: 9px; color: var(--text3); text-transform: uppercase; letter-spacing: 0.4px; margin-top: 2px; }

.lf-source {
  width: 100%; display: flex; align-items: center; justify-content: space-between;
  background: transparent; border: 1px solid transparent; border-radius: 4px;
  padding: 6px 10px; font-family: var(--sans); font-size: 12px;
  color: var(--text2); cursor: pointer; transition: all 0.12s; text-align: left;
}
.lf-source:hover { background: var(--bg3); color: var(--text); }
.lf-source.on { background: rgba(90, 168, 238, 0.12); color: var(--blue); border-color: rgba(90, 168, 238, 0.3); }
.lf-src-name { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.lf-src-count { font-family: var(--mono); font-size: 10px; color: var(--text3); margin-left: 6px; }
.lf-source.on .lf-src-count { color: var(--blue); }
.lf-src-stale { opacity: 0.55; }

.lf-cat { margin-top: 8px; }
.lf-cat-hdr {
  width: 100%; display: flex; align-items: center; gap: 6px;
  background: transparent; border: none; padding: 8px 10px 4px;
  font-family: var(--mono); font-size: 10px; font-weight: 700;
  color: var(--text2); text-transform: uppercase; letter-spacing: 0.5px;
  cursor: pointer;
}
.lf-cat-hdr.on { color: var(--cat-col); }
.lf-cat-dot { width: 7px; height: 7px; border-radius: 50%; background: var(--cat-col); }
.lf-cat-count { margin-left: auto; color: var(--text3); font-weight: 400; }
.lf-cat-sources { display: flex; flex-direction: column; gap: 2px; }

.lf-main { display: flex; flex-direction: column; overflow: hidden; }
.lf-toolbar {
  border-bottom: 1px solid var(--border); padding: 12px 18px;
  background: var(--bg); flex-shrink: 0;
}
.lf-tb-row { display: flex; align-items: center; gap: 10px; }
.lf-tb-row + .lf-tb-row { margin-top: 8px; }
.lf-active-label { font-family: var(--sans); font-size: 14px; font-weight: 600; color: var(--text); flex-shrink: 0; }
.lf-search {
  flex: 1; min-width: 0; max-width: 360px; margin-left: auto;
  background: var(--bg2); color: var(--text); border: 1px solid var(--border);
  border-radius: 4px; padding: 6px 10px; font-family: var(--mono); font-size: 12px;
}
.lf-search:focus { outline: none; border-color: var(--blue); }

.lf-chips { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; }
.lf-chip-label { font-family: var(--mono); font-size: 10px; color: var(--text3); text-transform: uppercase; letter-spacing: 0.4px; }
.lf-chip {
  font-family: var(--mono); font-size: 10px; font-weight: 600; text-transform: uppercase;
  background: transparent; border: 1px solid var(--border); border-radius: 3px;
  padding: 3px 8px; cursor: pointer; color: var(--text3);
  transition: all 0.12s;
}
.lf-chip:hover { color: var(--chip-col); border-color: var(--chip-col); }
.lf-chip.on { background: var(--chip-col); color: #fff; border-color: var(--chip-col); }
.lf-chip-clear {
  background: none; border: none; color: var(--text3); cursor: pointer;
  font-size: 14px; padding: 0 4px;
}

.lf-stream {
  flex: 1; overflow-y: auto; padding: 14px 18px; min-height: 0;
}
.lf-loading {
  display: flex; align-items: center; justify-content: center;
  height: 200px; color: var(--text3); font-size: 12px; font-family: var(--mono);
}

.lf-cards { display: flex; flex-direction: column; gap: 8px; }

.lf-card {
  background: var(--bg2); border: 1px solid var(--border); border-radius: 6px;
  padding: 12px 14px; cursor: pointer; transition: all 0.12s;
}
.lf-card:hover {
  border-color: var(--border2);
  transform: translateY(-1px);
  background: var(--bg3);
}
.lf-card-meta { display: flex; align-items: center; gap: 6px; flex-wrap: wrap; margin-bottom: 6px; }
.lf-sev {
  font-family: var(--mono); font-size: 9px; font-weight: 700; color: #fff;
  padding: 2px 7px; border-radius: 2px; text-transform: uppercase; letter-spacing: 0.5px;
}
.lf-tag {
  font-family: var(--mono); font-size: 10px; font-weight: 600;
  color: var(--tag-col); background: rgba(255,255,255,0.04);
  border: 1px solid rgba(255,255,255,0.06);
  padding: 1px 6px; border-radius: 2px;
}
.lf-cve-chip {
  font-family: var(--mono); font-size: 10px; font-weight: 600;
  color: #ff5252; background: rgba(255, 82, 82, 0.08);
  border: 1px solid rgba(255, 82, 82, 0.25);
  padding: 1px 6px; border-radius: 2px;
}
a.lf-cve-chip { text-decoration: none; }
a.lf-cve-chip:hover { background: rgba(255, 82, 82, 0.18); text-decoration: none; }

.lf-card-title {
  font-family: var(--sans); font-size: 14px; font-weight: 600; line-height: 1.4;
  color: var(--text); margin: 0 0 4px;
}
.lf-card-preview {
  font-size: 12px; line-height: 1.5; color: var(--text2);
  margin: 4px 0; display: -webkit-box; -webkit-line-clamp: 2; line-clamp: 2;
  -webkit-box-orient: vertical; overflow: hidden;
}
.lf-card-foot {
  display: flex; align-items: center; gap: 6px; flex-wrap: wrap;
  margin-top: 6px; font-family: var(--mono); font-size: 10px; color: var(--text3);
}
.lf-card-src { color: var(--text2); font-weight: 600; }
.lf-card-sep { opacity: 0.5; }

.lf-actor-chips { display: inline-flex; gap: 4px; margin-left: auto; flex-wrap: wrap; }
.lf-actor-chip {
  font-family: var(--mono); font-size: 9px; font-weight: 600;
  color: var(--gold, #d4a040); background: rgba(212, 160, 64, 0.1);
  border: 1px solid rgba(212, 160, 64, 0.3); padding: 1px 5px; border-radius: 2px;
}

.lf-load-more {
  display: block; margin: 16px auto 24px;
  background: var(--bg2); border: 1px solid var(--border); color: var(--text2);
  font-family: var(--mono); font-size: 11px; font-weight: 600;
  padding: 8px 18px; border-radius: 4px; cursor: pointer;
}
.lf-load-more:hover { color: var(--blue); border-color: var(--blue); }

.lf-empty {
  text-align: center; padding: 60px 20px; color: var(--text3);
}
.lf-empty-icon { font-size: 32px; margin-bottom: 12px; opacity: 0.5; }
.lf-empty-title { font-family: var(--mono); font-size: 13px; color: var(--text2); }
.lf-empty-sub { font-size: 11px; margin-top: 6px; }

/* ── Detail Panel ──────────────────────────────────────────────── */
.lf-detail {
  background: var(--bg2); border-left: 1px solid var(--border);
  overflow-y: auto; transform: translateX(100%);
  transition: transform 0.25s cubic-bezier(0.32, 0.72, 0, 1);
  width: 0;
}
.lf-detail.on { transform: translateX(0); width: 480px; }
.lf-detail-inner { padding: 18px 22px; position: relative; }
.lf-detail-loading, .lf-detail-err {
  padding: 40px 24px; color: var(--text3); font-size: 12px;
  display: flex; align-items: center; gap: 10px; font-family: var(--mono);
}
.lf-detail-err { flex-direction: column; align-items: flex-start; }
.lf-detail-err strong { color: var(--text); }

.lf-detail-close {
  position: absolute; top: 14px; right: 14px;
  background: var(--bg3); border: 1px solid var(--border); color: var(--text2);
  width: 28px; height: 28px; border-radius: 4px; cursor: pointer;
  font-size: 18px; line-height: 1;
}
.lf-detail-close:hover { color: var(--red, #ff5252); border-color: var(--red, #ff5252); }

.lf-d-meta { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin: 0 36px 10px 0; }
.lf-d-src { font-family: var(--mono); font-size: 11px; font-weight: 700; color: var(--blue); }
.lf-d-date { font-family: var(--mono); font-size: 11px; color: var(--text3); }
.lf-d-title { font-family: var(--sans); font-size: 18px; font-weight: 700; line-height: 1.3; margin: 0 0 12px; color: var(--text); }
.lf-d-tags { display: flex; gap: 4px; flex-wrap: wrap; margin-bottom: 16px; }

.lf-d-section { margin: 16px 0; }
.lf-d-section h4 {
  font-family: var(--mono); font-size: 11px; font-weight: 700;
  color: var(--blue); text-transform: uppercase; letter-spacing: 0.6px;
  margin: 0 0 8px; padding-bottom: 6px; border-bottom: 1px solid var(--border);
}
.lf-d-section p { font-size: 13px; line-height: 1.65; color: var(--text); margin: 0; }
.lf-d-orig { color: var(--text2); font-style: italic; }
.lf-d-list { margin: 0; padding-left: 20px; }
.lf-d-list li { font-size: 13px; line-height: 1.6; color: var(--text); margin: 4px 0; }

.lf-d-iocs { display: flex; flex-direction: column; gap: 4px; }
.lf-d-ioc { display: flex; align-items: center; gap: 8px; font-family: var(--mono); font-size: 11px; padding: 6px 8px; background: var(--bg3); border-radius: 3px; }
.lf-d-ioc-type { font-size: 9px; font-weight: 700; color: var(--blue); text-transform: uppercase; min-width: 50px; }
.lf-d-ioc code { color: var(--text); word-break: break-all; }

.lf-d-cves, .lf-d-actors { display: flex; gap: 4px; flex-wrap: wrap; }

.lf-d-foot {
  margin-top: 24px; padding-top: 14px; border-top: 1px solid var(--border);
  display: flex; align-items: center; justify-content: space-between; gap: 10px;
}
.lf-d-original {
  font-family: var(--mono); font-size: 11px; font-weight: 600;
  color: var(--blue); text-decoration: none;
  background: rgba(90, 168, 238, 0.1);
  padding: 6px 12px; border-radius: 4px;
  border: 1px solid rgba(90, 168, 238, 0.3);
}
.lf-d-original:hover { background: rgba(90, 168, 238, 0.2); text-decoration: none; }
.lf-d-conf { font-family: var(--mono); font-size: 9px; color: var(--text3); }

@media (max-width: 1100px) {
  .lf-shell { grid-template-columns: 200px 1fr 0; }
  .lf-shell:has(.lf-detail.on) { grid-template-columns: 200px 1fr 400px; }
}
@media (max-width: 800px) {
  .lf-shell { grid-template-columns: 1fr; }
  .lf-rail { display: none; }
  .lf-shell:has(.lf-detail.on) { grid-template-columns: 1fr; }
  .lf-shell:has(.lf-detail.on) .lf-main { display: none; }
  .lf-detail.on { width: 100%; position: absolute; inset: 0; }
}
