/* ================================================================
 * NewsFlash Hub v1.15.0 — 门户首页 / 标题汇总 / 公司·产品专题
 * 5 套主题用 CSS 变量切换（后台选默认，渲染时写到容器 data-nf-theme）
 * 变量名全部 --nf- 前缀、类名全部 nfh- 前缀，避免与主题/推荐位 .nf-* 冲突
 * 作用域：.nf-hub / .nf-digest / .nf-topic
 * ================================================================ */

/* ---------- 主题变量：基准 = editorial 极简杂志（兜底）---------- */
.nf-hub, .nf-digest, .nf-topic, .nf-stream {
  --nf-bg:#ffffff; --nf-bg2:#f6f5f3; --nf-panel:#ffffff; --nf-panel2:#f8f7f5;
  --nf-line:rgba(0,0,0,.11); --nf-line2:rgba(0,0,0,.2);
  --nf-txt:#121212; --nf-muted:#565656; --nf-muted2:#9b9b9b;
  --nf-a1:#c8102e; --nf-a2:#121212; --nf-hot:#c8102e; --nf-amber:#9a6a00; --nf-green:#1a7f4b;
  --nf-glow1:transparent; --nf-glow2:transparent; --nf-shadow:rgba(0,0,0,.1);
  /* #1 字体统一：所有主题都用默认无衬线，衬线/等宽位一律回落，避免混排 */
  --nf-font:-apple-system,BlinkMacSystemFont,"Segoe UI","Microsoft YaHei","PingFang SC",Roboto,Helvetica,Arial,sans-serif;
  --nf-serif:var(--nf-font);
  --nf-mono:var(--nf-font);
  --nf-radius:14px;
}
/* ---------- 5 套主题覆盖（源码顺序在基准之后 → 同特指性胜出）---------- */
[data-nf-theme="dark"] {            /* 1 暗色科技 */
  --nf-bg:#0a0d15; --nf-bg2:#0e1220; --nf-panel:rgba(255,255,255,.035); --nf-panel2:rgba(255,255,255,.06);
  --nf-line:rgba(255,255,255,.08); --nf-line2:rgba(255,255,255,.14);
  --nf-txt:#eaeef8; --nf-muted:#8b95ad; --nf-muted2:#646b80;
  --nf-a1:#37e0ff; --nf-a2:#8b7dff; --nf-hot:#ff4d7d; --nf-amber:#ffc24d; --nf-green:#3ddc9a;
  --nf-glow1:rgba(139,125,255,.14); --nf-glow2:rgba(55,224,255,.11); --nf-shadow:rgba(0,0,0,.34);
}
[data-nf-theme="paper"] {           /* 2 浅色报纸 */
  --nf-bg:#f4f2ea; --nf-bg2:#eceadf; --nf-panel:#ffffff; --nf-panel2:#faf8f1;
  --nf-line:rgba(0,0,0,.09); --nf-line2:rgba(0,0,0,.17);
  --nf-txt:#1b1b1b; --nf-muted:#5f5f5f; --nf-muted2:#9a958a;
  --nf-a1:#0b7285; --nf-a2:#6741d9; --nf-hot:#c2255c; --nf-amber:#b07a09; --nf-green:#2b8a3e;
  --nf-glow1:rgba(103,65,217,.05); --nf-glow2:rgba(11,114,133,.04); --nf-shadow:rgba(120,110,80,.16);
}
[data-nf-theme="slate"] {           /* 3 暗色低饱和 */
  --nf-bg:#14171d; --nf-bg2:#191d25; --nf-panel:rgba(255,255,255,.03); --nf-panel2:rgba(255,255,255,.055);
  --nf-line:rgba(255,255,255,.07); --nf-line2:rgba(255,255,255,.13);
  --nf-txt:#dfe3ea; --nf-muted:#8a90a0; --nf-muted2:#5c6270;
  --nf-a1:#6fb3c7; --nf-a2:#948dc6; --nf-hot:#c27c92; --nf-amber:#c4a45a; --nf-green:#6fbf9f;
  --nf-glow1:rgba(148,141,198,.06); --nf-glow2:rgba(111,179,199,.045); --nf-shadow:rgba(0,0,0,.4);
}
[data-nf-theme="editorial"] {       /* 4 极简杂志（白底红黑）*/
  --nf-bg:#ffffff; --nf-bg2:#f6f5f3; --nf-panel:#ffffff; --nf-panel2:#f8f7f5;
  --nf-line:rgba(0,0,0,.11); --nf-line2:rgba(0,0,0,.2);
  --nf-txt:#121212; --nf-muted:#565656; --nf-muted2:#9b9b9b;
  --nf-a1:#c8102e; --nf-a2:#121212; --nf-hot:#c8102e; --nf-amber:#9a6a00; --nf-green:#1a7f4b;
  --nf-glow1:transparent; --nf-glow2:transparent; --nf-shadow:rgba(0,0,0,.1);
}
[data-nf-theme="midnight"] {        /* 5 午夜蓝金 */
  --nf-bg:#0a1326; --nf-bg2:#0f1d38; --nf-panel:rgba(255,255,255,.04); --nf-panel2:rgba(255,255,255,.07);
  --nf-line:rgba(255,255,255,.09); --nf-line2:rgba(255,255,255,.17);
  --nf-txt:#eaf0fb; --nf-muted:#9fb0cc; --nf-muted2:#67799a;
  --nf-a1:#f0c674; --nf-a2:#7aa2e3; --nf-hot:#eaa14b; --nf-amber:#f0c674; --nf-green:#6fcf97;
  --nf-glow1:rgba(240,198,116,.08); --nf-glow2:rgba(122,162,227,.09); --nf-shadow:rgba(0,0,0,.45);
}

/* ---------- 容器画布 ---------- */
.nf-hub, .nf-digest, .nf-topic, .nf-stream {
  background:var(--nf-bg); color:var(--nf-txt); font-family:var(--nf-font);
  font-size:15px; line-height:1.6; -webkit-font-smoothing:antialiased;
  background-image:
    radial-gradient(820px 460px at 12% -6%, var(--nf-glow1), transparent 62%),
    radial-gradient(820px 460px at 88% -8%, var(--nf-glow2), transparent 62%);
  padding-bottom:1px;
}
.nf-hub *, .nf-digest *, .nf-topic *, .nf-stream * { box-sizing:border-box }
.nf-hub a, .nf-digest a, .nf-topic a, .nf-stream a { color:inherit; text-decoration:none }
/* #1 门户近全宽更大气；汇总/专题为长文列表，保持窄栏易读 */
.nf-hub .nfh-wrap { max-width:1560px; margin:0 auto; padding:0 clamp(18px,3.2vw,54px) }
.nf-digest .nfh-wrap, .nf-topic .nfh-wrap { max-width:1200px; margin:0 auto; padding:0 22px }

/* ---------- section head（三页共用）---------- */
.nf-hub .nfh-sec, .nf-digest .nfh-sec, .nf-topic .nfh-sec { margin-top:42px }
.nf-hub .nfh-sech, .nf-digest .nfh-sech, .nf-topic .nfh-sech {
  display:flex; align-items:baseline; gap:12px; margin-bottom:16px; border-bottom:2px solid var(--nf-line2); padding-bottom:11px; flex-wrap:wrap }
.nf-hub .nfh-no, .nf-digest .nfh-no, .nf-topic .nfh-no { font-family:var(--nf-serif); font-size:20px; font-weight:800; color:var(--nf-muted2) }
.nf-hub .nfh-sech h2, .nf-digest .nfh-sech h2, .nf-topic .nfh-sech h2 { font-size:22px; font-weight:850; letter-spacing:-.3px }
.nf-hub .nfh-ensub, .nf-digest .nfh-ensub, .nf-topic .nfh-ensub { font-family:var(--nf-mono); font-size:12px; color:var(--nf-muted2); letter-spacing:.05em }
.nf-hub .nfh-note, .nf-digest .nfh-note, .nf-topic .nfh-note { font-size:11.5px; color:var(--nf-muted2); align-self:center }
.nf-hub .nfh-more, .nf-digest .nfh-more, .nf-topic .nfh-more { margin-left:auto; color:var(--nf-muted); font-size:13px; font-weight:600; align-self:center }
.nf-hub .nfh-more:hover, .nf-digest .nfh-more:hover, .nf-topic .nfh-more:hover { color:var(--nf-a1) }

/* ================= 门户首页 ================= */
/* 报头 */
.nf-hub .nfh-mast { padding:36px 0 18px; text-align:center }
.nf-hub .nfh-eyebrow { display:flex; align-items:center; justify-content:center; gap:10px; flex-wrap:wrap; font-family:var(--nf-mono); font-size:12px; letter-spacing:.1em; color:var(--nf-muted); margin-bottom:14px }
.nf-hub .nfh-sep { color:var(--nf-muted2) }
.nf-hub .nfh-eyebrow b { color:var(--nf-a1); font-weight:700 }
.nf-hub .nfh-title { font-size:56px; line-height:1; font-weight:850; letter-spacing:-1.5px }
.nf-hub .nfh-title b { background:linear-gradient(100deg,var(--nf-a1),var(--nf-a2)); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent }
.nf-hub .nfh-sub { color:var(--nf-muted); margin-top:14px; font-size:15.5px }
.nf-hub .nfh-rule { display:flex; align-items:center; justify-content:center; gap:14px; margin:16px 0 4px; color:var(--nf-muted2); font-family:var(--nf-serif); font-size:12.5px; font-style:italic }
.nf-hub .nfh-rule .l { height:1px; width:80px; background:var(--nf-line2) }
.nf-hub .nfh-stats { display:flex; gap:30px; justify-content:center; margin-top:18px; flex-wrap:wrap }
.nf-hub .nfh-stat { text-align:center }
.nf-hub .nfh-stat .n { font-size:26px; font-weight:800; font-variant-numeric:tabular-nums; font-family:var(--nf-serif) }
.nf-hub .nfh-stat .n.c { color:var(--nf-a1) } .nf-hub .nfh-stat .n.p { color:var(--nf-a2) }
.nf-hub .nfh-stat .n.k { color:var(--nf-hot) } .nf-hub .nfh-stat .n.g { color:var(--nf-green) }
.nf-hub .nfh-stat .l { color:var(--nf-muted); font-size:12px; margin-top:1px }

.nf-hub .nfh-breaking { display:flex; align-items:center; gap:14px; margin-top:24px; background:var(--nf-panel); border:1px solid var(--nf-line); border-radius:11px; padding:0 16px; height:44px; overflow:hidden }
.nf-hub .nfh-tag { flex:none; display:flex; align-items:center; gap:6px; font-weight:800; font-size:11px; color:var(--nf-hot); font-family:var(--nf-mono); letter-spacing:.08em }
.nf-hub .nfh-tag i { width:7px; height:7px; border-radius:50%; background:var(--nf-hot); animation:nfh-pulse 1.4s infinite }
.nf-hub .nfh-marq { overflow:hidden; flex:1; white-space:nowrap }
.nf-hub .nfh-marq div { display:inline-block; animation:nfh-scroll 40s linear infinite }
.nf-hub .nfh-marq span { color:var(--nf-muted); font-size:13px; margin:0 24px }
.nf-hub .nfh-marq span b { color:var(--nf-txt); font-weight:600 }
@keyframes nfh-scroll { from { transform:translateX(0) } to { transform:translateX(-50%) } }
@keyframes nfh-pulse { 0%,100% { opacity:1 } 50% { opacity:.4 } }

/* ---------- #8 手机 App 顶栏 + 横向分区 chips（仅窄屏显示，桌面隐藏）---------- */
.nf-hub .nfh-appbar, .nf-hub .nfh-appnav { display:none }
.nf-hub .nfh-appbar { position:sticky; top:0; z-index:50; align-items:center; gap:10px; height:52px; padding:0 14px;
  background:color-mix(in srgb,var(--nf-bg) 86%,transparent); backdrop-filter:saturate(1.4) blur(12px); -webkit-backdrop-filter:saturate(1.4) blur(12px); border-bottom:1px solid var(--nf-line) }
.nf-hub .nfh-appbar .brand { font-size:17px; font-weight:850; letter-spacing:-.5px }
.nf-hub .nfh-appbar .brand b { background:linear-gradient(100deg,var(--nf-a1),var(--nf-a2)); -webkit-background-clip:text; background-clip:text; -webkit-text-fill-color:transparent }
.nf-hub .nfh-appbar .today { margin-left:auto; font-size:11px; font-weight:800; color:var(--nf-a1); background:color-mix(in srgb,var(--nf-a1) 13%,transparent); border-radius:999px; padding:4px 11px; font-variant-numeric:tabular-nums }
.nf-hub .nfh-appnav { position:sticky; top:52px; z-index:49; gap:8px; padding:9px 12px; overflow-x:auto; -webkit-overflow-scrolling:touch; scrollbar-width:none; scroll-snap-type:x proximity;
  background:color-mix(in srgb,var(--nf-bg) 86%,transparent); backdrop-filter:saturate(1.4) blur(12px); -webkit-backdrop-filter:saturate(1.4) blur(12px); border-bottom:1px solid var(--nf-line) }
.nf-hub .nfh-appnav::-webkit-scrollbar { display:none }
.nf-hub .nfh-appnav a { flex:none; font-size:13px; font-weight:700; color:var(--nf-muted); background:var(--nf-panel); border:1px solid var(--nf-line); border-radius:999px; padding:7px 15px; white-space:nowrap; scroll-snap-align:start; transition:.18s }
.nf-hub .nfh-appnav a.on { color:#fff; background:linear-gradient(90deg,var(--nf-a1),var(--nf-a2)); border-color:transparent }

/* 今日看点 */
.nf-hub .nfh-toc { margin-top:32px; display:grid; grid-template-columns:repeat(3,1fr); gap:0; border:1px solid var(--nf-line); border-radius:var(--nf-radius); overflow:hidden; background:var(--nf-panel) }
.nf-hub .nfh-toccol { padding:16px 18px; border-right:1px solid var(--nf-line) }
.nf-hub .nfh-toccol:last-child { border-right:none }
.nf-hub .nfh-tocch { display:flex; align-items:baseline; gap:8px; margin-bottom:10px; padding-bottom:9px; border-bottom:1px dashed var(--nf-line) }
.nf-hub .nfh-tocch .no { font-family:var(--nf-serif); font-size:15px; font-weight:800; color:var(--nf-muted2) }
.nf-hub .nfh-tocch b { font-size:15px; font-weight:850 }
.nf-hub .nfh-tocch .e { font-family:var(--nf-mono); font-size:10px; color:var(--nf-a1) }
.nf-hub .nfh-tocch .m { margin-left:auto; font-size:10.5px; color:var(--nf-muted2); font-family:var(--nf-mono) }
.nf-hub .nfh-tocli { display:flex; gap:8px; font-size:12.5px; line-height:1.5; color:var(--nf-muted); padding:5px 0; transition:.2s }
.nf-hub .nfh-tocli:hover { color:var(--nf-a1) }
.nf-hub .nfh-tocli .d { color:var(--nf-muted2); font-family:var(--nf-mono); font-size:10.5px; flex:none; margin-top:1px }
.nf-hub .nfh-tocli .t { display:-webkit-box; -webkit-line-clamp:1; -webkit-box-orient:vertical; overflow:hidden }

/* 热榜 + 聚焦 */
.nf-hub .nfh-grid { display:grid; grid-template-columns:330px 1fr; gap:26px }
.nf-hub .nfh-hot { background:var(--nf-panel); border:1px solid var(--nf-line); border-radius:var(--nf-radius); padding:18px; position:sticky; top:20px; align-self:start }
.nf-hub .nfh-hh { display:flex; align-items:baseline; gap:8px }
.nf-hub .nfh-hh h3 { font-size:16px; font-weight:850 }
.nf-hub .nfh-fire { font-size:16px }
.nf-hub .nfh-dt { margin-left:auto; font-size:11px; color:var(--nf-muted2); font-family:var(--nf-mono) }
.nf-hub .nfh-rank { display:flex; gap:12px; padding:11px 3px; border-bottom:1px dashed var(--nf-line); align-items:flex-start }
.nf-hub .nfh-rank:first-of-type { padding-top:14px }
.nf-hub .nfh-rank:last-child { border-bottom:none }
.nf-hub .nfh-num { flex:none; width:22px; font-size:18px; font-weight:800; font-variant-numeric:tabular-nums; color:var(--nf-muted2); text-align:center; font-family:var(--nf-serif) }
.nf-hub .nfh-rank.top1 .nfh-num { color:var(--nf-hot) } .nf-hub .nfh-rank.top2 .nfh-num { color:var(--nf-amber) } .nf-hub .nfh-rank.top3 .nfh-num { color:var(--nf-a1) }
.nf-hub .nfh-rc { flex:1; min-width:0 }
.nf-hub .nfh-rt { font-size:13.5px; font-weight:600; line-height:1.45; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden; transition:.2s }
.nf-hub .nfh-rank:hover .nfh-rt { color:var(--nf-a1) }
.nf-hub .nfh-rm { display:flex; align-items:center; gap:8px; margin-top:6px }
.nf-hub .nfh-heat { height:4px; border-radius:3px; flex:1; background:var(--nf-line); overflow:hidden }
.nf-hub .nfh-heat i { display:block; height:100%; background:linear-gradient(90deg,var(--nf-amber),var(--nf-hot)) }
.nf-hub .nfh-v { font-size:11px; color:var(--nf-muted2); font-variant-numeric:tabular-nums; flex:none; font-family:var(--nf-mono) }

.nf-hub .nfh-tabs { display:flex; gap:6px; margin-left:auto; align-self:center }
.nf-hub .nfh-tabs button { background:var(--nf-panel); border:1px solid var(--nf-line); color:var(--nf-muted); border-radius:999px; padding:6px 15px; font-size:13px; font-weight:700; cursor:pointer; transition:.2s; font-family:var(--nf-font) }
.nf-hub .nfh-tabs button.on { color:#fff; background:linear-gradient(90deg,var(--nf-a1),var(--nf-a2)); border-color:transparent }

/* 纯文字卡片 —— #2 分级马赛克：12 列网格，卡片按 --sp（PHP 逐张算，尾行补齐不留缺口）从大到小铺排 */
.nf-hub .nfh-feed { display:grid; grid-template-columns:repeat(12,1fr); gap:15px; align-items:stretch }
.nf-hub .nfh-card { grid-column:span var(--sp,4); display:flex; flex-direction:column; background:var(--nf-panel); border:1px solid var(--nf-line); border-left:3px solid var(--nf-line2); border-radius:10px; padding:14px 16px; cursor:pointer; transition:.2s }
.nf-hub .nfh-card:hover { background:var(--nf-panel2); border-left-color:var(--nf-a1); transform:translateY(-2px); box-shadow:0 10px 26px var(--nf-shadow) }
.nf-hub .nfh-card.c-mdl { border-left-color:var(--nf-a1) } .nf-hub .nfh-card.c-prd { border-left-color:var(--nf-a2) } .nf-hub .nfh-card.c-ind { border-left-color:var(--nf-amber) }
.nf-hub .nfh-ctop { display:flex; align-items:center; gap:8px; margin-bottom:8px }
.nf-hub .nfh-chip { font-size:10.5px; font-weight:700; padding:2px 8px; border-radius:5px; border:1px solid var(--nf-line2) }
.nf-hub .nfh-chip.c-mdl { color:var(--nf-a1); background:color-mix(in srgb,var(--nf-a1) 10%,transparent); border-color:color-mix(in srgb,var(--nf-a1) 30%,transparent) }
.nf-hub .nfh-chip.c-prd { color:var(--nf-a2); background:color-mix(in srgb,var(--nf-a2) 10%,transparent); border-color:color-mix(in srgb,var(--nf-a2) 30%,transparent) }
.nf-hub .nfh-chip.c-ind { color:var(--nf-amber); background:color-mix(in srgb,var(--nf-amber) 10%,transparent); border-color:color-mix(in srgb,var(--nf-amber) 30%,transparent) }
.nf-hub .nfh-imp { font-size:10px; font-weight:800; color:var(--nf-hot); font-family:var(--nf-mono); letter-spacing:.04em }
.nf-hub .nfh-ctime { margin-left:auto; font-size:11.5px; color:var(--nf-muted2); font-variant-numeric:tabular-nums; font-family:var(--nf-mono) }
.nf-hub .nfh-card h4 { font-size:15px; font-weight:750; line-height:1.42; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden }
.nf-hub .nfh-card:hover h4 { color:var(--nf-a1) }
.nf-hub .nfh-csum { font-size:12.5px; color:var(--nf-muted); line-height:1.6; margin-top:8px; display:none; -webkit-box-orient:vertical; overflow:hidden }
.nf-hub .nfh-cco { font-size:11.5px; color:var(--nf-muted2); margin-top:auto; padding-top:9px }
.nf-hub .nfh-cco b { color:var(--nf-muted); font-weight:600 }
/* 分级：跨度越大 → 标题越大、露出摘要（hero 三行 / 大卡两行） */
.nf-hub .nfh-card.nfh-c-xl { padding:20px 22px; border-left-width:4px }
.nf-hub .nfh-card.nfh-c-xl h4 { font-size:23px; -webkit-line-clamp:3; line-height:1.3 }
.nf-hub .nfh-card.nfh-c-xl .nfh-csum { display:-webkit-box; -webkit-line-clamp:3; font-size:13.5px; margin-top:10px }
.nf-hub .nfh-card.nfh-c-lg { padding:16px 18px }
.nf-hub .nfh-card.nfh-c-lg h4 { font-size:17.5px }
.nf-hub .nfh-card.nfh-c-lg .nfh-csum { display:-webkit-box; -webkit-line-clamp:2 }
.nf-hub .nfh-hint { background:color-mix(in srgb,var(--nf-a2) 8%,transparent); border:1px solid var(--nf-line2); border-radius:10px; padding:11px 14px; font-size:12.5px; color:var(--nf-muted); margin-top:14px }
.nf-hub .nfh-hint b { color:var(--nf-a1) }

/* 时间线河流（门户 + 专题共用）*/
.nf-hub .nfh-river, .nf-topic .nfh-river { border:1px solid var(--nf-line); border-radius:var(--nf-radius); background:var(--nf-panel); overflow:hidden }
.nf-hub .nfh-rday, .nf-topic .nfh-rday { background:var(--nf-panel2); padding:9px 18px; font-size:12px; font-weight:800; color:var(--nf-muted); font-family:var(--nf-mono); letter-spacing:.04em; border-bottom:1px solid var(--nf-line) }
.nf-hub .nfh-ritem, .nf-topic .nfh-ritem { display:flex; align-items:baseline; gap:13px; padding:11px 18px; border-bottom:1px solid var(--nf-line); transition:.15s }
.nf-hub .nfh-ritem:hover, .nf-topic .nfh-ritem:hover { background:var(--nf-panel2) }
.nf-hub .nfh-rtime, .nf-topic .nfh-rtime { flex:none; width:42px; font-family:var(--nf-mono); font-size:11.5px; color:var(--nf-muted2); font-variant-numeric:tabular-nums }
.nf-hub .nfh-rcat, .nf-topic .nfh-rcat { flex:none; width:52px; font-size:11px; font-weight:700; text-align:center }
.nf-hub .nfh-rcat.c-mdl { color:var(--nf-a1) } .nf-hub .nfh-rcat.c-prd { color:var(--nf-a2) } .nf-hub .nfh-rcat.c-ind { color:var(--nf-amber) } .nf-hub .nfh-rcat.c-cap { color:var(--nf-green) } .nf-hub .nfh-rcat.c-pow { color:var(--nf-hot) }
.nf-topic .nfh-rcat.c-mdl { color:var(--nf-a1) } .nf-topic .nfh-rcat.c-prd { color:var(--nf-a2) } .nf-topic .nfh-rcat.c-ind { color:var(--nf-amber) } .nf-topic .nfh-rcat.c-cap { color:var(--nf-green) } .nf-topic .nfh-rcat.c-pow { color:var(--nf-hot) }
.nf-hub .nfh-rtitle, .nf-topic .nfh-rtitle { flex:1; font-size:14px; font-weight:600; line-height:1.4; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.nf-hub .nfh-ritem:hover .nfh-rtitle, .nf-topic .nfh-ritem:hover .nfh-rtitle { color:var(--nf-a1) }
.nf-hub .nfh-rsrc, .nf-topic .nfh-rsrc { flex:none; font-size:11.5px; color:var(--nf-muted2) }
.nf-hub .nfh-rmore, .nf-topic .nfh-rmore { display:block; text-align:center; padding:13px; font-size:13px; font-weight:700; color:var(--nf-a1); background:var(--nf-panel2) }

/* 按公司 */
.nf-hub .nfh-cogrid { display:grid; grid-template-columns:repeat(7,1fr); gap:12px }
.nf-hub .nfh-co { background:var(--nf-panel); border:1px solid var(--nf-line); border-radius:12px; padding:16px 10px; text-align:center; transition:.2s; cursor:pointer }
.nf-hub .nfh-co:hover { border-color:var(--nf-line2); background:var(--nf-panel2); transform:translateY(-2px) }
.nf-hub .nfh-logo { width:42px; height:42px; border-radius:11px; margin:0 auto 9px; display:flex; align-items:center; justify-content:center; font-weight:900; font-size:15px; color:#fff; overflow:hidden; background:linear-gradient(135deg,var(--nf-a1),var(--nf-a2)) }
.nf-hub .nfh-logo img { width:100%; height:100%; object-fit:cover; display:block }
.nf-hub .nfh-cn { font-size:12.5px; font-weight:700; overflow:hidden; text-overflow:ellipsis; white-space:nowrap }
.nf-hub .nfh-cc { font-size:11px; color:var(--nf-muted2); margin-top:2px; font-family:var(--nf-mono) }
.nf-hub .nfh-co.nfh-add { border-style:dashed; display:flex; flex-direction:column; align-items:center; justify-content:center; color:var(--nf-muted2) }
.nf-hub .nfh-co.nfh-add .plus { font-size:22px; line-height:1 }
.nf-hub .nfh-co.nfh-add .t { font-size:11px; margin-top:6px }

/* 按分类 */
.nf-hub .nfh-typegrid { display:grid; grid-template-columns:repeat(4,1fr); gap:16px }
.nf-hub .nfh-tcol { background:var(--nf-panel); border:1px solid var(--nf-line); border-radius:12px; padding:16px }
.nf-hub .nfh-th { display:flex; align-items:center; gap:9px; margin-bottom:10px; padding-bottom:11px; border-bottom:1px solid var(--nf-line) }
.nf-hub .nfh-ic { width:30px; height:30px; border-radius:8px; display:flex; align-items:center; justify-content:center; font-size:15px }
.nf-hub .nfh-th b { font-size:13.5px; font-weight:800 }
.nf-hub .nfh-en { color:var(--nf-muted2); font-size:9.5px; font-family:var(--nf-mono) }
.nf-hub .nfh-cnt { margin-left:auto; font-size:11px; color:var(--nf-muted2); background:var(--nf-bg2); padding:2px 8px; border-radius:5px; font-family:var(--nf-mono) }
.nf-hub .nfh-tli { display:block; font-size:13px; line-height:1.5; color:var(--nf-muted); padding:9px 0; border-bottom:1px dashed var(--nf-line); transition:.2s }
.nf-hub .nfh-tli:last-child { border-bottom:none }
.nf-hub .nfh-tli:hover { color:var(--nf-a1) }
.nf-hub .nfh-tli .d { font-size:10.5px; color:var(--nf-muted2); margin-top:3px; font-family:var(--nf-mono) }

/* 专题条 —— #8 更大气：4 列、更高卡、条数徽标 + 关键词 pill */
.nf-hub .nfh-topicgrid { display:grid; grid-template-columns:repeat(4,1fr); gap:18px }
.nf-hub .nfh-topic { border-radius:16px; padding:22px 20px; position:relative; overflow:hidden; cursor:pointer; transition:.22s; min-height:184px; display:flex; flex-direction:column; border:1px solid var(--nf-line); background:var(--nf-panel) }
.nf-hub .nfh-topic::before { content:""; position:absolute; left:0; top:0; bottom:0; width:4px; background:linear-gradient(180deg,var(--nf-a1),var(--nf-a2)); opacity:.85 }
.nf-hub .nfh-topic:hover { transform:translateY(-4px); box-shadow:0 20px 46px var(--nf-shadow); border-color:var(--nf-line2) }
.nf-hub .nfh-tlogo { width:44px; height:44px; border-radius:12px; display:flex; align-items:center; justify-content:center; font-weight:900; color:#fff; font-size:16px; overflow:hidden; background:linear-gradient(135deg,var(--nf-a1),var(--nf-a2)); position:relative; z-index:1; margin-bottom:12px }
.nf-hub .nfh-tlogo img { width:100%; height:100%; object-fit:cover; display:block }
.nf-hub .nfh-tcount { position:absolute; top:18px; right:18px; z-index:1; font-family:var(--nf-mono); font-weight:800; font-size:12px; color:var(--nf-a1); background:color-mix(in srgb,var(--nf-a1) 12%,transparent); border:1px solid color-mix(in srgb,var(--nf-a1) 28%,transparent); border-radius:999px; padding:3px 11px }
.nf-hub .nfh-tcount b { font-size:15px; font-variant-numeric:tabular-nums }
.nf-hub .nfh-topic h4 { font-size:18px; font-weight:850; position:relative; z-index:1; color:var(--nf-txt); padding-right:56px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden }
.nf-hub .nfh-topic p { font-size:12.5px; color:var(--nf-muted); margin-top:6px; position:relative; z-index:1; line-height:1.55; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden }
.nf-hub .nfh-tkws { margin-top:auto; padding-top:12px; position:relative; z-index:1; display:flex; flex-wrap:wrap; gap:6px }
.nf-hub .nfh-tkws span { font-size:10.5px; color:var(--nf-muted); background:var(--nf-bg2); border:1px solid var(--nf-line); border-radius:999px; padding:3px 9px; font-family:var(--nf-mono); white-space:nowrap }
.nf-hub .nfh-tn { font-size:11px; color:var(--nf-a1); font-weight:700; margin-top:auto; padding-top:12px; position:relative; z-index:1 }

/* #7 动态 · THE STREAM 首页入口横幅（主题自适应，不用 color-mix 保兼容） */
.nf-hub .nfh-streamcta { display:flex; align-items:center; gap:16px; margin-top:22px; padding:18px 22px; border:1px solid var(--nf-line); border-radius:var(--nf-radius); background:var(--nf-panel); position:relative; overflow:hidden; transition:.22s }
.nf-hub .nfh-streamcta::before { content:""; position:absolute; inset:0; background:linear-gradient(100deg,var(--nf-a1),transparent 55%); opacity:.1; pointer-events:none }
.nf-hub .nfh-streamcta:hover { border-color:var(--nf-a1); transform:translateY(-2px); box-shadow:0 14px 34px var(--nf-shadow) }
.nf-hub .nfh-streamcta .ic { font-size:27px; flex:none; position:relative; z-index:1 }
.nf-hub .nfh-streamcta .tx { flex:1; min-width:0; position:relative; z-index:1 }
.nf-hub .nfh-streamcta .tx b { display:block; font-size:16px; font-weight:850; color:var(--nf-txt) }
.nf-hub .nfh-streamcta .tx span { display:block; font-size:12.5px; color:var(--nf-muted); margin-top:3px }
.nf-hub .nfh-streamcta .go { flex:none; font-size:13px; font-weight:800; color:var(--nf-a1); position:relative; z-index:1; white-space:nowrap }

/* 页脚 */
.nf-hub .nfh-foot, .nf-digest .nfh-foot, .nf-topic .nfh-foot { margin:52px 0 40px; padding-top:24px; border-top:1px solid var(--nf-line); color:var(--nf-muted2); font-size:13px; text-align:center; line-height:1.9 }
.nf-hub .nfh-foot b, .nf-digest .nfh-foot b, .nf-topic .nfh-foot b { color:var(--nf-muted) }
.nf-hub .nfh-empty, .nf-digest .nfh-empty, .nf-topic .nfh-empty { text-align:center; color:var(--nf-muted2); padding:48px 20px; font-size:14px }

/* ================= 汇总页 / 专题页 ================= */
.nf-digest .nfh-head, .nf-topic .nfh-head { padding:34px 0 6px; text-align:center }
.nf-digest .nfh-head h1, .nf-topic .nfh-head h1 { font-size:38px; font-weight:850; letter-spacing:-.5px; line-height:1.1 }
.nf-digest .nfh-head .sub, .nf-topic .nfh-head .sub { color:var(--nf-muted); margin-top:10px; font-size:14px }
.nf-digest .nfh-head .kw, .nf-topic .nfh-head .kw { margin-top:12px; font-family:var(--nf-mono); font-size:12px; color:var(--nf-muted2); display:flex; gap:8px; justify-content:center; flex-wrap:wrap }
.nf-digest .nfh-head .kw span { border:1px solid var(--nf-line); border-radius:999px; padding:3px 11px }

/* 汇总标题列表 */
.nf-digest .nfh-list { border:1px solid var(--nf-line); border-radius:var(--nf-radius); background:var(--nf-panel); overflow:hidden; margin-top:20px }
.nf-digest .nfh-daygrp { border-bottom:1px solid var(--nf-line) }
.nf-digest .nfh-daygrp:last-child { border-bottom:none }
.nf-digest .nfh-dayhd { background:var(--nf-panel2); padding:10px 18px; font-size:12.5px; font-weight:800; color:var(--nf-muted); font-family:var(--nf-mono); letter-spacing:.04em; border-bottom:1px solid var(--nf-line) }
.nf-digest .nfh-di { display:flex; align-items:baseline; gap:13px; padding:10px 18px; border-bottom:1px dashed var(--nf-line); transition:.15s }
.nf-digest .nfh-di:last-child { border-bottom:none }
.nf-digest .nfh-di:hover { background:var(--nf-panel2) }
.nf-digest .nfh-di .dt { flex:none; width:44px; font-family:var(--nf-mono); font-size:11.5px; color:var(--nf-muted2); font-variant-numeric:tabular-nums }
.nf-digest .nfh-di .tt { flex:1; font-size:14px; font-weight:600; line-height:1.45 }
.nf-digest .nfh-di:hover .tt { color:var(--nf-a1) }
.nf-digest .nfh-di .co { flex:none; font-size:11.5px; color:var(--nf-muted2) }

/* 汇总页月份导航 / 分页 */
.nf-digest .nfh-nav, .nf-topic .nfh-nav { display:flex; gap:10px; justify-content:center; margin-top:24px; flex-wrap:wrap }
.nf-digest .nfh-nav a, .nf-topic .nfh-nav a { border:1px solid var(--nf-line2); border-radius:8px; padding:8px 16px; font-size:13px; font-weight:700; color:var(--nf-muted); transition:.2s }
.nf-digest .nfh-nav a:hover, .nf-topic .nfh-nav a:hover { color:var(--nf-a1); border-color:var(--nf-a1) }
.nf-digest .nfh-nav .cur, .nf-topic .nfh-nav .cur { background:var(--nf-a1); color:#fff; border-color:transparent }

/* 专题正文卡列表 */
.nf-topic .nfh-tfeed { display:grid; grid-template-columns:1fr 1fr; gap:14px; margin-top:20px }
.nf-topic .nfh-tcard { background:var(--nf-panel); border:1px solid var(--nf-line); border-left:3px solid var(--nf-line2); border-radius:10px; padding:16px 18px; transition:.2s }
.nf-topic .nfh-tcard:hover { background:var(--nf-panel2); border-left-color:var(--nf-a1); transform:translateX(2px) }
.nf-topic .nfh-tcard .top { display:flex; align-items:center; gap:8px; margin-bottom:8px; font-size:11.5px; color:var(--nf-muted2); font-family:var(--nf-mono) }
.nf-topic .nfh-tcard h4 { font-size:16px; font-weight:750; line-height:1.4 }
.nf-topic .nfh-tcard:hover h4 { color:var(--nf-a1) }
.nf-topic .nfh-tcard p { font-size:12.5px; color:var(--nf-muted); line-height:1.6; margin-top:8px; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; overflow:hidden }

/* ---------- 响应式 ---------- */
@media (max-width:960px) {
  .nf-hub .nfh-grid { grid-template-columns:1fr } .nf-hub .nfh-hot { position:static }
  .nf-hub .nfh-cogrid { grid-template-columns:repeat(4,1fr) }
  .nf-hub .nfh-typegrid { grid-template-columns:1fr 1fr }
  .nf-hub .nfh-topicgrid { grid-template-columns:1fr 1fr }
  .nf-hub .nfh-toc { grid-template-columns:1fr } .nf-hub .nfh-toccol { border-right:none; border-bottom:1px solid var(--nf-line) }
  .nf-hub .nfh-title { font-size:40px }
  .nf-digest .nfh-head h1, .nf-topic .nfh-head h1 { font-size:30px }
}
@media (max-width:700px) {
  /* #8 手机 App 模式：显示顶栏 + 分区 chips，整体单列卡片流 */
  .nf-hub .nfh-appbar, .nf-hub .nfh-appnav { display:flex }
  .nf-hub .nfh-wrap, .nf-digest .nfh-wrap, .nf-topic .nfh-wrap { padding:0 14px }
  .nf-hub .nfh-mast { padding:18px 0 6px }
  .nf-hub .nfh-title { font-size:33px }
  .nf-hub .nfh-sub { font-size:13.5px; margin-top:9px }
  .nf-hub .nfh-eyebrow { font-size:11px; gap:7px }
  .nf-hub .nfh-stats { gap:16px } .nf-hub .nfh-stat .n { font-size:23px }
  .nf-hub .nfh-sec { margin-top:28px; scroll-margin-top:108px } /* chips 高度补偿锚点跳转 */
  .nf-hub .nfh-feed, .nf-topic .nfh-tfeed { grid-template-columns:1fr }
  .nf-hub .nfh-feed .nfh-card { grid-column:auto } /* 单列下取消 --sp 跨列，否则 span 会撑出隐式列 */
  .nf-hub .nfh-cogrid { grid-template-columns:repeat(3,1fr) }
  .nf-hub .nfh-typegrid, .nf-hub .nfh-topicgrid { grid-template-columns:1fr }
  .nf-hub .nfh-card.nfh-c-xl h4 { font-size:19px }
  .nf-digest .nfh-head h1, .nf-topic .nfh-head h1 { font-size:26px }
}
@media (max-width:440px) {
  .nf-hub .nfh-cogrid { grid-template-columns:repeat(2,1fr) }
  .nf-hub .nfh-ritem .nfh-rsrc, .nf-topic .nfh-ritem .nfh-rsrc { display:none }
  .nf-hub .nfh-title { font-size:29px }
  .nf-hub .nfh-stats { gap:12px } .nf-hub .nfh-stat .n { font-size:21px } .nf-hub .nfh-stat .l { font-size:11px }
  .nf-hub .nfh-rtime, .nf-topic .nfh-rtime { width:38px }
  .nf-hub .nfh-rcat, .nf-topic .nfh-rcat { width:44px }
}

/* ================================================================
 * #7 动态时间流 .nf-stream（独立页；变量/画布/reset 复用上方基准 + [data-nf-theme]）
 * ================================================================ */
.nf-stream .nfh-wrap { max-width:1000px; margin:0 auto; padding:0 22px }
.nf-stream .nfh-head { padding:34px 0 6px; text-align:center }
.nf-stream .nfh-head h1 { font-size:38px; font-weight:850; letter-spacing:-.5px; line-height:1.1 }
.nf-stream .nfh-head .sub { color:var(--nf-muted); margin-top:10px; font-size:14px }
.nf-stream .nfs-kicker { font-family:var(--nf-mono); font-size:12px; letter-spacing:.14em; color:var(--nf-a1); font-weight:800; margin-bottom:8px }
.nf-stream .nfh-empty { text-align:center; color:var(--nf-muted2); padding:48px 20px; font-size:14px }
.nf-stream .nfh-foot { margin:52px 0 40px; padding-top:24px; border-top:1px solid var(--nf-line); color:var(--nf-muted2); font-size:13px; text-align:center; line-height:1.9 }

/* 筛选条 */
.nf-stream .nfs-filters { margin-top:22px; display:flex; flex-direction:column; gap:10px; padding:16px 18px; border:1px solid var(--nf-line); border-radius:var(--nf-radius); background:var(--nf-panel) }
.nf-stream .nfs-frow { display:flex; gap:10px; align-items:flex-start }
.nf-stream .nfs-flabel { flex:none; width:40px; font-size:12.5px; font-weight:800; color:var(--nf-muted); padding-top:6px }
.nf-stream .nfs-chips { flex:1; display:flex; flex-wrap:wrap; gap:7px }
.nf-stream .nfs-chip { display:inline-flex; align-items:center; gap:5px; border:1px solid var(--nf-line2); border-radius:999px; padding:5px 12px; font-size:12.5px; font-weight:700; color:var(--nf-muted); transition:.15s }
.nf-stream .nfs-chip:hover { border-color:var(--nf-a1); color:var(--nf-a1) }
.nf-stream .nfs-chip i { font-style:normal; font-family:var(--nf-mono); font-size:10.5px; color:var(--nf-muted2); font-weight:600 }
.nf-stream .nfs-chip.on { background:var(--nf-a1); border-color:transparent; color:#fff }
.nf-stream .nfs-chip.on i { color:rgba(255,255,255,.82) }

/* 当前筛选提示 */
.nf-stream .nfs-active { margin-top:14px; font-size:13px; color:var(--nf-muted); display:flex; align-items:center; gap:6px; flex-wrap:wrap }
.nf-stream .nfs-active b { color:var(--nf-txt); font-weight:800 }
.nf-stream .nfs-clear { margin-left:6px; color:var(--nf-a1); font-weight:700; font-size:12.5px }

/* 时间轴 */
.nf-stream .nfs-timeline { margin-top:10px }
.nf-stream .nfs-month { margin-top:34px }
.nf-stream .nfs-mhd { display:flex; align-items:baseline; gap:12px; padding-bottom:7px; margin-bottom:8px; border-bottom:2px solid var(--nf-line2) }
.nf-stream .nfs-mn { font-size:22px; font-weight:850; letter-spacing:-.3px }
.nf-stream .nfs-mc { font-size:12px; color:var(--nf-muted2); font-family:var(--nf-mono) }
.nf-stream .nfs-day { margin-top:18px }
.nf-stream .nfs-dhd { display:flex; align-items:baseline; gap:10px; padding:0 2px 8px; border-bottom:1px solid var(--nf-line); margin-bottom:4px }
.nf-stream .nfs-dd { font-size:15px; font-weight:800 }
.nf-stream .nfs-dw { font-size:12px; color:var(--nf-muted2); font-family:var(--nf-mono) }
.nf-stream .nfs-dc { margin-left:auto; font-size:11.5px; color:var(--nf-muted2); font-family:var(--nf-mono) }
.nf-stream .nfs-item { display:flex; align-items:baseline; gap:12px; padding:9px 10px; border-radius:9px; transition:.15s }
.nf-stream .nfs-item:hover { background:var(--nf-panel2) }
.nf-stream .nfs-time { flex:none; width:44px; font-family:var(--nf-mono); font-size:11.5px; color:var(--nf-muted2); font-variant-numeric:tabular-nums; padding-top:2px }
.nf-stream .nfs-dot { flex:none; align-self:center; width:8px; height:8px; border-radius:50%; background:var(--nf-muted2) }
.nf-stream .nfs-dot.c-mdl { background:var(--nf-a1) } .nf-stream .nfs-dot.c-prd { background:var(--nf-a2) }
.nf-stream .nfs-dot.c-ind { background:var(--nf-amber) } .nf-stream .nfs-dot.c-cap { background:var(--nf-green) } .nf-stream .nfs-dot.c-pow { background:var(--nf-hot) }
.nf-stream .nfs-body { flex:1; min-width:0; display:flex; flex-direction:column; gap:4px }
.nf-stream .nfs-tl { font-size:14.5px; font-weight:650; line-height:1.5 }
.nf-stream .nfs-item:hover .nfs-tl { color:var(--nf-a1) }
.nf-stream .nfs-meta { display:flex; gap:10px; align-items:center; flex-wrap:wrap }
.nf-stream .nfs-vt { font-family:var(--nf-mono); font-size:11px; font-weight:700; color:var(--nf-muted2) }
.nf-stream .nfs-vt.c-mdl { color:var(--nf-a1) } .nf-stream .nfs-vt.c-prd { color:var(--nf-a2) }
.nf-stream .nfs-vt.c-ind { color:var(--nf-amber) } .nf-stream .nfs-vt.c-cap { color:var(--nf-green) } .nf-stream .nfs-vt.c-pow { color:var(--nf-hot) }
.nf-stream .nfs-cn { font-size:11.5px; color:var(--nf-muted2) }

/* 分页 */
.nf-stream .nfh-nav { display:flex; gap:10px; justify-content:center; align-items:center; margin-top:30px; flex-wrap:wrap }
.nf-stream .nfh-nav a { border:1px solid var(--nf-line2); border-radius:8px; padding:8px 16px; font-size:13px; font-weight:700; color:var(--nf-muted); transition:.2s }
.nf-stream .nfh-nav a:hover { color:var(--nf-a1); border-color:var(--nf-a1) }
.nf-stream .nfs-pageno { font-family:var(--nf-mono); font-size:12.5px; color:var(--nf-muted2) }
.nf-stream .nfs-disabled { border:1px solid var(--nf-line); border-radius:8px; padding:8px 16px; font-size:13px; font-weight:700; color:var(--nf-muted2); opacity:.45 }

@media (max-width:700px) {
  .nf-stream .nfh-wrap { padding:0 14px }
  .nf-stream .nfh-head h1 { font-size:27px }
  .nf-stream .nfs-filters { padding:12px 13px }
  .nf-stream .nfs-flabel { width:34px; font-size:11.5px }
  .nf-stream .nfs-mn { font-size:19px }
}
@media (max-width:440px) {
  .nf-stream .nfs-frow { flex-direction:column; gap:6px }
  .nf-stream .nfs-flabel { width:auto; padding-top:0 }
  .nf-stream .nfs-time { width:38px }
}
