:root {
  --bg: #0f1117; --panel: #1a1d27; --line: #2a2e3a;
  --text: #e6e8ee; --muted: #8b90a0; --accent: #ff4d4f; --good: #36cfc9; --warn: #ffc53d;
}
* { box-sizing: border-box; }
body {
  margin: 0; background: var(--bg); color: var(--text);
  font-family: -apple-system, "Segoe UI", "PingFang SC", "Microsoft YaHei", sans-serif;
}
header {
  display: flex; justify-content: space-between; align-items: center;
  padding: 18px 28px; border-bottom: 1px solid var(--line); background: var(--panel);
  position: sticky; top: 0; z-index: 10;
}
h1 { font-size: 20px; margin: 0; }
h2 { font-size: 16px; margin: 0 0 14px; }
.muted { color: var(--muted); font-size: 13px; }
button {
  background: var(--accent); color: #fff; border: none; padding: 8px 16px;
  border-radius: 8px; cursor: pointer; font-size: 14px;
}
button:hover { opacity: .9; }
button:disabled { opacity: .5; cursor: not-allowed; }

.stats { display: flex; gap: 16px; padding: 18px 28px; flex-wrap: wrap; }
.stat-card {
  background: var(--panel); border: 1px solid var(--line); border-radius: 12px;
  padding: 14px 20px; min-width: 130px;
}
.stat-card .n { font-size: 24px; font-weight: 700; }
.stat-card .l { color: var(--muted); font-size: 12px; margin-top: 4px; }

.controls { display: flex; gap: 18px; align-items: center; padding: 0 28px 14px; flex-wrap: wrap; }
select, input { background: var(--panel); color: var(--text); border: 1px solid var(--line);
  border-radius: 8px; padding: 6px 10px; }
label { font-size: 13px; color: var(--muted); display: flex; gap: 6px; align-items: center; }

main { padding: 0 28px 40px; }
.panel { background: var(--panel); border: 1px solid var(--line); border-radius: 14px; padding: 20px; }

table { width: 100%; border-collapse: collapse; font-size: 13px; }
th, td { text-align: left; padding: 10px 8px; border-bottom: 1px solid var(--line); }
th { color: var(--muted); font-weight: 600; white-space: nowrap; }
tbody tr { cursor: pointer; }
tbody tr:hover { background: #20242f; }
.vid-title { font-weight: 600; max-width: 320px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.vid-ch { color: var(--muted); font-size: 12px; }
.tag { padding: 2px 8px; border-radius: 6px; font-size: 12px; background: #2a2e3a; }
.score { font-weight: 700; color: var(--warn); }
.hot { color: var(--accent); font-weight: 700; }
.repl { color: var(--good); }
.rev { color: var(--good); font-weight: 600; }

.modal { position: fixed; inset: 0; background: rgba(0,0,0,.6); display: flex;
  align-items: center; justify-content: center; z-index: 50; }
.modal.hidden { display: none; }
.modal-box { background: var(--panel); border: 1px solid var(--line); border-radius: 16px;
  padding: 26px; width: min(720px, 92vw); max-height: 88vh; overflow: auto; position: relative; }
.close { position: absolute; top: 14px; right: 14px; background: transparent; color: var(--muted); font-size: 18px; }
.kv { display: flex; gap: 24px; flex-wrap: wrap; margin: 14px 0; }
.kv div span { display: block; }
.kv .k { color: var(--muted); font-size: 12px; }
.kv .v { font-size: 18px; font-weight: 700; }
footer { text-align: center; padding: 20px; }
a { color: var(--good); }

/* ===== 标签页 / 洞察页 ===== */
.hidden { display: none !important; }
.tabs { display: flex; gap: 8px; margin-right: 12px; }
.tab { background: var(--panel); border: 1px solid var(--line); color: var(--muted); }
.tab.active { background: var(--accent); color: #fff; border-color: var(--accent); }
.insight-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.card { background: #20242f; border: 1px solid var(--line); border-radius: 12px; padding: 16px; }
.card h3 { font-size: 14px; margin: 0 0 12px; }
.topic-row { display: grid; grid-template-columns: 130px 1fr 80px; gap: 10px; align-items: center; padding: 6px 0; border-bottom: 1px solid var(--line); font-size: 12px; }
.topic-term { font-weight: 700; color: var(--good); }
.topic-meta { color: var(--muted); }
.topic-bar { background: #2a2e3a; border-radius: 4px; height: 8px; overflow: hidden; }
.topic-bar i { display: block; height: 100%; background: var(--warn); }
table.mini { width: 100%; font-size: 12px; border-collapse: collapse; }
table.mini th, table.mini td { padding: 5px 6px; border-bottom: 1px solid var(--line); text-align: left; }
.good { color: var(--good); font-weight: 600; }
.pw { margin-top: 12px; display: flex; flex-wrap: wrap; gap: 6px; }
.best { font-size: 13px; line-height: 1.8; color: var(--good); }
@media (max-width: 820px) { .insight-grid { grid-template-columns: 1fr; } }

/* ===== 今日推荐卡片 ===== */
.lead { color: var(--muted); margin: 4px 0 16px; font-size: 14px; }
.reco-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(380px, 1fr)); gap: 18px; }
.reco-card { position: relative; background: var(--panel); border: 1px solid var(--line); border-radius: 14px; padding: 18px; display: flex; flex-direction: column; gap: 10px; }
.reco-head { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.decision { font-weight: 700; font-size: 13px; }
.conf { color: var(--muted); font-size: 12px; }
.reco-topic { font-size: 17px; font-weight: 700; line-height: 1.3; }
.reco-why { font-size: 13px; color: #cfd3dd; background: #20242f; border-radius: 8px; padding: 8px 10px; }
.reco-money { font-size: 14px; }
.reco-money b { color: var(--good); font-size: 16px; }
.reco-how { font-size: 13px; border-top: 1px dashed var(--line); padding-top: 10px; display: flex; flex-direction: column; gap: 8px; }
.how-row b { color: var(--warn); }
.how-row ul { margin: 4px 0 0; padding-left: 18px; color: #cfd3dd; }
.how-row ul li { margin: 2px 0; }
.bm { display: flex; flex-direction: column; gap: 3px; margin-top: 4px; }
.bm a { font-size: 12px; }
.reco-foot { display: flex; align-items: center; gap: 12px; margin-top: 6px; }
.save-btn { background: var(--warn); color: #1a1d27; font-weight: 700; }
.save-btn.on { background: var(--good); color: #fff; }
.link { color: var(--good); font-size: 13px; }
.del { background: transparent; color: var(--muted); border: 1px solid var(--line); }
.status { background: #20242f; color: var(--text); border: 1px solid var(--line); border-radius: 6px; padding: 3px 6px; margin-left: auto; }
@media (max-width: 760px) { .reco-grid { grid-template-columns: 1fr; } }

.trend-badge { background: #ff7a45; color: #fff; padding: 2px 8px; border-radius: 6px; font-size: 12px; font-weight: 700; }

.newbie-badge { background: #52c41a; color: #fff; padding: 2px 8px; border-radius: 6px; font-size: 12px; font-weight: 700; }

.confirm-badge{background:#2f54eb;color:#fff;padding:2px 8px;border-radius:6px;font-size:12px;font-weight:700}
.proof-badge{background:#13c2c2;color:#fff;padding:2px 8px;border-radius:6px;font-size:12px;font-weight:700}

.force{display:flex;align-items:center;gap:8px;margin-bottom:6px}
.fbars{display:inline-flex;gap:3px}
.fbars i{width:9px;height:16px;border-radius:2px;background:#2a2e3a}
.st-strong .fbars i.on{background:#52c41a}.st-strong b{color:#52c41a}
.st-go .fbars i.on{background:#36cfc9}.st-go b{color:#36cfc9}
.st-warn .fbars i.on{background:#ffc53d}.st-warn b{color:#ffc53d}
.st-mute .fbars i.on{background:#8b90a0}.st-mute b{color:#8b90a0}
.datatrust{font-size:12px;color:#8b90a0;display:flex;align-items:center;gap:6px;margin:4px 0}
.datatrust .fdot{width:8px;height:8px;border-radius:50%;background:#52c41a}
.result-row{display:flex;align-items:center;gap:8px;font-size:13px;border-top:1px dashed #2a2e3a;padding-top:8px;margin-top:6px;flex-wrap:wrap}
.result-row .res{background:#20242f;border:1px solid #2a2e3a;color:#e6e8ee;border-radius:6px;padding:3px 8px;cursor:pointer}
.result-row .res.on{background:#52c41a;color:#fff;border-color:#52c41a}

/* ===== 趋势雷达 / 准确率 / 情报卡 / 信号(新增) ===== */
.radar-legend{color:#8b90a0;font-size:13px;margin:6px 0 10px}
.radar-wrap{background:#161a23;border:1px solid #262b36;border-radius:10px;padding:14px;margin-bottom:14px}
.card-wide{grid-column:1/-1}
table.mini2{width:100%;border-collapse:collapse;font-size:13px}
table.mini2 th,table.mini2 td{padding:7px 9px;border-bottom:1px solid #262b36;text-align:left}
table.mini2 th{color:#8b90a0;font-weight:500}
.big-metric{font-size:34px;font-weight:700;color:#36cfc9;line-height:1.1}
.big-metric span{display:block;font-size:12px;color:#8b90a0;font-weight:400}
.intel-card{background:#161a23;border:1px solid #262b36;border-left:3px solid #36cfc9;border-radius:8px;padding:11px 13px;margin-bottom:10px}
.intel-h{font-weight:600;margin-bottom:5px;display:flex;gap:7px;align-items:center;flex-wrap:wrap}
.intel-v{color:#e8eaf0;margin:4px 0;font-size:14px}
.intel-b{color:#aab0bd;font-size:13px;margin:3px 0}
.intel-b b{color:#7c9cff}
.intel-titles{margin-top:7px;display:flex;flex-direction:column;gap:3px}
.intel-titles span{background:#1d2230;border-radius:5px;padding:4px 8px;font-size:12.5px;color:#d4d8e0}
.sig-block{margin-bottom:12px}
.sig-block b{color:#7c9cff;font-size:13px}
.chips{display:flex;flex-wrap:wrap;gap:6px;margin-top:6px}
.chip{background:#1d2230;border:1px solid #2a3142;border-radius:14px;padding:3px 10px;font-size:12.5px;color:#d4d8e0}

/* ===== 批2 诚实徽章 / 冷启动(新增) ===== */
.badge-rising{background:#0f3a36;color:#36cfc9;border:1px solid #1c6b63;border-radius:5px;padding:2px 7px;font-size:12px;font-weight:600}
.badge-fresh{background:#13321f;color:#5fd98a;border:1px solid #1f5e38;border-radius:5px;padding:2px 7px;font-size:12px}
.badge-fresh.stale{background:#3a2a13;color:#ffb84d;border-color:#6b4d1c}
.badge-small{background:#13243a;color:#7cc4ff;border:1px solid #1c4a6b;border-radius:5px;padding:2px 7px;font-size:12px}
.badge-big{background:#2a2f3a;color:#8b90a0;border:1px solid #3a3f4a;border-radius:5px;padding:2px 7px;font-size:12px}
.reco-card.low-conf{opacity:.6;border-color:#3a3f4a}
.reco-card.low-conf::after{content:"🔬 低置信·冷启动估计";position:absolute;top:8px;right:10px;font-size:11px;color:#8b90a0}
.radar-coldstart{background:#2a2413;border:1px solid #5a4a1c;color:#ffb84d;border-radius:8px;padding:8px 12px;margin-bottom:10px;font-size:13px}

/* ===== 批B/C 语言标签 + 切换提示(新增) ===== */
.lang-tag{display:inline-block;background:#1d2a3a;color:#7cc4ff;border:1px solid #2a4a6b;border-radius:4px;padding:1px 6px;font-size:11px;font-weight:600;vertical-align:middle}
.promote{background:#0f3a1f;color:#5fd98a;border:1px solid #1f6b38;border-radius:6px;padding:6px 10px;margin-top:6px;font-size:13px}
table.mini tr.good td{color:#36cfc9;font-weight:600}

/* ===== 批3 前端组(新增) ===== */
/* B5 错误态 + 重试 */
.err-state{display:flex;align-items:center;gap:12px;flex-wrap:wrap;background:#2a1a1a;border:1px solid #5a2a2a;color:#ff9b9b;border-radius:8px;padding:12px 14px;font-size:13px;margin:6px 0}
.retry-btn{background:#3a2020;color:#ffb3b3;border:1px solid #6b3030;border-radius:6px;padding:4px 12px;font-size:13px;cursor:pointer}
.retry-btn:hover{background:#4a2828;opacity:1}

/* F14-②/③ 视频详情:开场钩子 + 富化属性 */
.hook-block{background:#161a23;border:1px solid #262b36;border-radius:8px;padding:12px 14px;margin:10px 0}
.hook-block h4{margin:0 0 8px;font-size:13px;color:#e6e8ee}
.kv-inline{display:flex;flex-wrap:wrap;gap:14px;font-size:13px;color:#cfd3dd}
.kv-inline b{color:#7c9cff;font-weight:600;margin-right:4px}
.cap-tag{display:inline-block;background:#1d2a3a;color:#7cc4ff;border:1px solid #2a4a6b;border-radius:4px;padding:1px 6px;font-size:11px;font-weight:600}

/* F14-① 评论需求挖掘卡 */
.cd-block{background:#161a23;border:1px solid #262b36;border-left:3px solid #ffb84d;border-radius:8px;padding:11px 13px;margin-bottom:10px}
.cd-h{font-weight:600;display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:5px}
.cd-note{color:#aab0bd;font-size:13px;margin:4px 0 8px}
.cd-cols{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.cd-col{background:#1d2230;border-radius:6px;padding:8px 10px}
.cd-col b{color:#ffb84d;font-size:12.5px}
.cd-col ul{margin:5px 0 0;padding-left:18px;color:#d4d8e0;font-size:12.5px}
.cd-col ul li{margin:2px 0}
@media (max-width:820px){.cd-cols{grid-template-columns:1fr}}

/* P0P1 全局冷启动提示条 */
.coldstart-banner{background:#2a2413;border-bottom:1px solid #5a4a1c;color:#ffd98a;padding:9px 28px;font-size:13px;line-height:1.5;text-align:center}

/* F12 实验角标 */
.exp-badge{display:inline-block;background:#2a2e3a;color:#a8aebd;border:1px solid #3a3f4a;border-radius:5px;padding:1px 7px;font-size:11px;font-weight:600;vertical-align:middle}
.exp-row td{opacity:.78}
