/* ============================================================
   AI 雷达 · 全站样式（首页 + 二级页共用基底）
   主题系统：颜色全部走 CSS 变量，不写死。
   新增主题 = 加一组 [data-theme="x"] 变量 + theme.js 的 THEMES 加一项。
   ============================================================ */

/* ---------- 主题 1 · 纸感（默认） ---------- */
:root,
[data-theme="paper"] {
  --paper: #faf6ec;
  --card: #ffffff;
  --ink: #1b2126;
  --sub: #5a6672;
  --faint: #98a2ac;
  --line: #e9e1cd;
  --green: #0e9f6e;
  --amber: #b45309;
  --blue: #2b7db8;
  --edge: #2b2620;      /* 粗描边色（whenreset 式卡片） */
  --shadow: #e4dcc6;    /* 实体偏移阴影色 */
  --highlight: #ffe27a; /* 实心高亮格（whenreset 式亮黄） */
  --cal-empty: #f0e3c2; /* 日历空格暖底（whenreset 同值） */
  --reset: #f88252;     /* 重置日（whenreset 同值） */
  --banked: #ffb380;    /* 补偿/调价日（whenreset 同值） */
  --yellow: #ffdf53;    /* 高亮条（whenreset 同值） */
}

/* ---------- 主题 2 · 墨灰（暗色） ---------- */
[data-theme="ink"] {
  --paper: #101318;
  --card: #181c24;
  --ink: #e8ecf2;
  --sub: #9aa6b4;
  --faint: #6b7684;
  --line: #262d38;
  --green: #34d399;
  --amber: #f5b14c;
  --blue: #5ec8f8;
  --edge: #e8ecf2;
  --shadow: #07090c;
  --highlight: #ffdf53;
  --cal-empty: #514637;
  --reset: #f88252;
  --banked: #c4703f;
  --yellow: #ffdf53;
}

/* ---------- 主题 3 · 奶油（whenreset 学习款） ---------- */
[data-theme="cream"] {
  --paper: #fff8e8;
  --card: #fffdf6;
  --ink: #2c261f;
  --sub: #786e60;
  --faint: #a89c8a;
  --line: #eee3cc;
  --green: #1f9d55;
  --amber: #b45309;
  --blue: #c2660c;
  --edge: #2c261f;
  --shadow: #e6d9ba;
  --highlight: #ffdf53;
  --cal-empty: #f0e3c2;
  --reset: #f88252;
  --banked: #ffb380;
  --yellow: #ffdf53;
}

/* ---------- 主题 4 · 终端（极客） ---------- */
[data-theme="term"] {
  --paper: #0b0f0b;
  --card: #111811;
  --ink: #d6f5d6;
  --sub: #8fbf8f;
  --faint: #5f8a5f;
  --line: #1d2b1d;
  --green: #4ade80;
  --amber: #facc15;
  --blue: #67e8f9;
  --edge: #4ade80;
  --shadow: #020402;
  --highlight: #fde047;
  --cal-empty: #152015;
  --reset: #4ade80;
  --banked: #166534;
  --yellow: #fde047;
}

/* ---------- 派生色（跟随主题自动变化，勿写死） ---------- */
:root {
  --green-bg: color-mix(in srgb, var(--green) 9%, transparent);
  --green-line: color-mix(in srgb, var(--green) 32%, transparent);
  --amber-bg: color-mix(in srgb, var(--amber) 12%, transparent);
  --amber-line: color-mix(in srgb, var(--amber) 38%, transparent);
  --radius: 12px;
}

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

body {
  background: var(--paper);
  color: var(--ink);
  font-family: -apple-system, "PingFang SC", "Microsoft YaHei", "Segoe UI", sans-serif;
  font-size: 14px;
  line-height: 1.7;
  -webkit-font-smoothing: antialiased;
  transition: background 0.2s, color 0.2s;
}

.wrap { max-width: 1160px; margin: 0 auto; padding: 0 24px; }
a { color: var(--blue); text-decoration: none; }
a:hover { text-decoration: underline; }

/* ---------- 主题切换器 ---------- */
.themes { display: flex; gap: 8px; align-items: center; }
.themes button {
  width: 24px; height: 24px; border-radius: 50%;
  border: 2px solid var(--line); background: var(--card);
  cursor: pointer; padding: 0; display: flex; align-items: center; justify-content: center;
  transition: transform 0.12s, border-color 0.12s;
}
.themes button span { display: block; width: 13px; height: 13px; border-radius: 50%; }
.themes button:hover { transform: scale(1.12); }
.themes button.on { border-color: var(--green); box-shadow: 0 0 0 2px var(--green-bg); }

/* ---------- 页头 ---------- */
header { padding: 34px 0 8px; }
.head-row { display: flex; align-items: baseline; justify-content: space-between; gap: 16px; flex-wrap: wrap; }
.brand { font-size: 22px; font-weight: 800; letter-spacing: 1px; }
.brand span { color: var(--green); }
.slogan { color: var(--sub); font-size: 13px; margin-top: 2px; }
.today-line { color: var(--faint); font-size: 12.5px; font-variant-numeric: tabular-nums; }

/* 旧版文字导航样式已整体删除（09-25）：导航自第 37 次起 = Bootstrap navbar（样式在 brand-bs.css）；
   残留的 nav a:hover 绿色下边框曾让 logo 悬停时露出一条绿线（用户裁决去掉） */

/* ---------- 区块通用 ---------- */
section { margin-top: 44px; }
.sec-head { display: flex; align-items: center; gap: 10px; margin-bottom: 16px; flex-wrap: wrap; }
.sec-head h2 { font-size: 16px; font-weight: 800; letter-spacing: 0.5px; margin: 0; } /* margin:0 压掉 Bootstrap Reboot 的 h2 下边距 8px——flex 居中会把它算进去，标题比说明行高 4px */
.cap {
  font-size: 11px; color: var(--green); background: var(--green-bg);
  border: 1px solid var(--green-line); border-radius: 999px; padding: 1px 9px;
  white-space: nowrap; font-weight: 600;
}
.cap.warm { color: var(--amber); background: var(--amber-bg); border-color: var(--amber-line); }
.sec-note { margin-left: auto; font-size: 11.5px; color: var(--faint); }

/* ---------- 今日 5 条 ---------- */
.news { list-style: none; }
.news li { padding: 16px 0 14px; border-bottom: 1px solid var(--line); display: flex; gap: 14px; }
.news .num {
  flex: none; font-size: 22px; font-weight: 800; color: var(--green);
  font-variant-numeric: tabular-nums; line-height: 1.2; width: 26px;
}
.news h3 { font-size: 16px; font-weight: 700; line-height: 1.5; }
.so-what {
  margin-top: 7px; font-size: 13.5px; color: var(--ink);
  background: var(--green-bg); border-left: 3px solid var(--green);
  padding: 6px 10px; border-radius: 0 8px 8px 0; line-height: 1.65;
}
.so-what b { color: var(--green); margin-right: 6px; }
.n-meta { margin-top: 7px; display: flex; gap: 8px; align-items: center; font-size: 11.5px; color: var(--faint); }
.tag {
  font-size: 11px; color: var(--sub); border: 1px solid var(--line);
  background: var(--card); border-radius: 999px; padding: 0 8px;
}
.empty-note { margin-top: 16px; text-align: center; font-size: 13px; color: var(--faint); }
.empty-note b { color: var(--green); font-weight: 700; }

/* ---------- 大佬说：五列两行语录网格（无横滚） ---------- */
.voices {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 12px;
}
.qcard {
  display: flex; flex-direction: column; gap: 10px;
  background: var(--card); border: 1.5px solid var(--edge);
  box-shadow: 3px 3px 0 var(--shadow); border-radius: 12px;
  padding: 12px 14px; min-height: 132px;
  transition: transform 0.12s, border-color 0.12s;
}
.qcard:hover { transform: translateY(-2px); border-color: var(--green); }
.q-text {
  font-size: 13px; font-weight: 600; color: var(--ink); line-height: 1.7;
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4;
  overflow: hidden; flex: 1;
}
.q-text::before { content: "「"; color: var(--green); font-weight: 800; }
.q-text::after { content: "」"; color: var(--green); font-weight: 800; }
.q-foot2 {
  display: flex; align-items: center; gap: 8px;
  border-top: 1px solid var(--line); padding-top: 8px;
}
.q-foot2 .avatar {
  flex: none; width: 26px; height: 26px; font-size: 11px;
}
.q-foot2 .who b { display: block; font-size: 12px; line-height: 1.3; }
.q-foot2 .who i { font-style: normal; font-size: 10.5px; color: var(--faint); }
.q-foot2 .demo-chip { margin-left: auto; }
.demo-chip {
  font-size: 10px; color: var(--amber); background: var(--amber-bg);
  border: 1px solid var(--amber-line); border-radius: 999px; padding: 0 7px;
}

@media (max-width: 640px) {
  .voices { grid-template-columns: repeat(2, 1fr); }
  .news-grid { grid-template-columns: 1fr; }
}

/* ---------- 大佬说 · 个人发言流 ---------- */
.voices .qcard { text-decoration: none; color: var(--ink); }
.avatar-lg { width: 52px; height: 52px; font-size: 18px; border-radius: 14px; }
.v-role { font-size: 13px; color: var(--faint); margin-top: 2px; }
.feed-list { display: grid; gap: 14px; margin-top: 16px; }
.feed-card { padding: 16px 20px; display: flex; flex-direction: column; gap: 10px; }
.feed-top { display: flex; justify-content: space-between; align-items: center; }
.feed-text { font-size: 15.5px; font-weight: 600; line-height: 1.85; color: var(--ink); }
.feed-text::before { content: "「"; color: var(--green); font-weight: 800; }
.feed-text::after { content: "」"; color: var(--green); font-weight: 800; }
.feed-foot { display: flex; justify-content: space-between; align-items: center; font-size: 11.5px; }
.feed-nav { display: flex; justify-content: space-between; gap: 12px; margin-top: 18px; flex-wrap: wrap; font-size: 13.5px; }
.feed-nav a { color: var(--green); font-weight: 700; text-decoration: none; }
.feed-nav a:hover { text-decoration: underline; }

/* ---------- 本周好东西 ---------- */
/* 本周好项目（2026-09-24 改版：一行两个 × 最多 6 个，卡片式 = ncard 同款 2px 描边+实体阴影） */
.prods { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.prod {
  display: flex; align-items: baseline; justify-content: space-between; gap: 14px;
  background: var(--card); border: 2px solid var(--edge);
  box-shadow: 4px 4px 0 var(--shadow); border-radius: 14px; padding: 15px 18px;
}
.prod .l b { font-size: 14.5px; }
.prod .l span { display: block; font-size: 12.5px; color: var(--sub); margin-top: 4px; }
.prod .signal { flex: none; }
.signal { flex: none; font-size: 12px; color: var(--green); font-weight: 700; font-variant-numeric: tabular-nums; }

/* ---------- 项目雷达 ---------- */
.opps { display: grid; grid-template-columns: repeat(auto-fit, minmax(440px, 1fr)); gap: 14px; }
.opp { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 18px 20px; }
.opp h3 { font-size: 15.5px; font-weight: 700; }
.opp .evi { margin-top: 7px; font-size: 13px; color: var(--sub); }
.opp .evi b { color: var(--ink); font-variant-numeric: tabular-nums; }
.opp .row { margin-top: 5px; font-size: 13px; color: var(--ink); }
.opp .row .k { color: var(--faint); font-weight: 600; margin-right: 8px; }
.opp-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; }
.tonight {
  margin-top: 12px; background: var(--green-bg); border-left: 3px solid var(--green);
  border-radius: 0 8px 8px 0; padding: 8px 12px; font-size: 13.5px; line-height: 1.65;
}
.tonight b { color: var(--green); margin-right: 8px; }
.opp.avoid { background: var(--amber-bg); border-color: var(--amber-line); }
.opp.avoid h3 { color: var(--amber); }
.opp.avoid .tonight { background: transparent; border-left-color: var(--amber); }
.opp.avoid .tonight b { color: var(--amber); }

/* ---------- 行情角 / 行情速报 ---------- */
.market { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; }
.panel { background: var(--card); border: 1px solid var(--line); border-radius: 12px; padding: 16px 18px; }
.panel h3 { font-size: 13px; font-weight: 700; margin-bottom: 10px; }
.pc-row { padding: 8px 0; border-bottom: 1px solid var(--line); display: flex; justify-content: space-between; align-items: baseline; gap: 10px; }
.pc-row:last-child { border-bottom: none; }
.pc-row .what { font-size: 13px; }
.pc-row .what i { font-style: normal; display: block; font-size: 11.5px; color: var(--faint); }
.checked { flex: none; font-size: 10.5px; color: var(--faint); font-variant-numeric: tabular-nums; }
.cd { padding: 10px 0; border-bottom: 1px solid var(--line); }
.cd:last-child { border-bottom: none; }
.cd .l1 { display: flex; justify-content: space-between; align-items: baseline; font-size: 13px; }
.cd .l1 b { font-weight: 700; }
.cd .l1 .d { color: var(--green); font-weight: 800; font-variant-numeric: tabular-nums; }
.cd .rule { font-size: 11.5px; color: var(--faint); }
.bar { height: 5px; background: var(--line); border-radius: 999px; margin: 7px 0 6px; overflow: hidden; }
.bar i { display: block; height: 100%; background: var(--green); border-radius: 999px; }
.cd .foot { display: flex; justify-content: space-between; align-items: center; }
.remind {
  font-size: 11px; color: var(--sub); background: var(--paper);
  border: 1px solid var(--line); border-radius: 999px; padding: 2px 10px; cursor: pointer;
}
.remind.on { color: var(--green); border-color: var(--green-line); background: var(--green-bg); }

/* ---------- 页脚 ---------- */
footer { margin-top: 52px; border-top: 1px solid var(--line); padding: 20px 0 44px; font-size: 12px; color: var(--faint); line-height: 1.9; }
footer b { color: var(--sub); }
footer a { color: var(--blue); }

@media (max-width: 640px) {
  .market { grid-template-columns: 1fr; }
  .prods { grid-template-columns: 1fr; }
  .today-line { width: 100%; }
}

/* ---------- AI快讯：两列卡片（速查表大卡同款） ---------- */
.news-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(420px, 1fr));
  gap: 16px;
}
.ncard {
  display: flex; flex-direction: column; gap: 8px;
  background: var(--card); border: 2px solid var(--edge);
  box-shadow: 4px 4px 0 var(--shadow); border-radius: 14px;
  padding: 16px 18px; text-decoration: none; color: var(--ink);
  transition: transform 0.12s, border-color 0.12s;
  min-height: 168px;
}
.ncard:hover { transform: translateY(-2px); border-color: var(--green); text-decoration: none; }
.nc-top { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.tag2 {
  font-size: 11px; font-weight: 700; color: var(--green);
  background: var(--green-bg); border: 1px solid var(--green-line);
  border-radius: 999px; padding: 1px 10px;
}
.corr-tag {   /* 互证角标（09-27）：Horizon 同事件合并出「另有 N 家信源报道」， amber 区分版块绿标 */
  font-size: 11px; font-weight: 700; color: #B45309;
  background: #FEF3C7; border: 1px solid #FCD34D;
  border-radius: 999px; padding: 1px 10px;
}
.news-flex .corr-tag { font-size: 10px; padding: 1px 8px; }

/* ═══ 站点数值标准（09-27 定稿）：捕获量 + 增强/衰减（增益） ═══
   图标用本站 Bootstrap Icons（bi-graph-up-arrow / bi-graph-down-arrow），不用手势emoji；
   增强=绿 var(--green)、衰减=红 #DC2626，已投态实底反白。
   09-27 二稿：不单独起行，整组内联进详情页 meta 行（.n-meta / .s-top 尾部）。 */
.metrics-line {
  display: inline-flex; align-items: center; gap: 8px; flex-wrap: wrap;
  margin-left: auto; font-size: 11.5px; font-weight: 700; color: var(--faint);
}
/* 两功能各占一块色区（09-27 用户定稿）：投票=琥珀块，捕获=绿色块收尾在右 */
.metrics-line .mx-vote-chip {
  display: inline-flex; align-items: center; gap: 7px;
  background: #FEF3C7; border: 1px solid #FCD34D;
  border-radius: 999px; padding: 2px 9px 2px 3px;
}
.metrics-line .mx-cap {
  display: inline-flex; align-items: center; gap: 4px;
  background: var(--green-bg, #e8f5ee); border: 1px solid var(--green-line, #bfe3d0);
  border-radius: 999px; padding: 2px 10px; color: var(--green, #17864e); font-weight: 800;
  font-variant-numeric: tabular-nums; white-space: nowrap;
}
.metrics-line .mx-cap i { color: var(--green, #17864e); }
.mx-btn {
  display: inline-flex; align-items: center; gap: 4px;
  border: 1.5px solid var(--line, #e9e1cd); background: var(--card, #fff);
  border-radius: 999px; padding: 1px 9px; font-size: 11px; font-weight: 800;
  font-family: inherit; cursor: pointer; color: var(--sub, #5a6672);
  transition: transform .15s, border-color .15s, background .15s;
  font-variant-numeric: tabular-nums; line-height: 1.6;
}
.mx-btn:hover { transform: translateY(-1px); }
.mx-btn:disabled { opacity: .6; cursor: wait; }
.mx-btn.mx-up i { color: var(--green, #17864e); }
.mx-btn.mx-down i { color: #DC2626; }
.mx-btn.mx-up:hover { border-color: var(--green, #17864e); }
.mx-btn.mx-down:hover { border-color: #DC2626; }
.mx-btn.mx-up.mine { background: var(--green, #17864e); border-color: var(--green, #17864e); color: #fff; }
.mx-btn.mx-up.mine i { color: #fff; }
.mx-btn.mx-down.mine { background: #DC2626; border-color: #DC2626; color: #fff; }
.mx-btn.mx-down.mine i { color: #fff; }
.metrics-line .mx-gain { display: inline-flex; align-items: center; gap: 4px; }
.metrics-line .mx-gain b { font-variant-numeric: tabular-nums; }
.metrics-line .mx-gain b.pos { color: var(--green, #17864e); }
.metrics-line .mx-gain b.neg { color: #DC2626; }
/* 列表卡小指标（捕获数） */
.mx-mini {
  display: inline-flex; align-items: center; gap: 4px;
  font-size: 11px; color: var(--faint, #8a837b); font-variant-numeric: tabular-nums;
}
.mx-mini i { font-size: 11px; color: var(--green, #17864e); }
.nc-date { font-size: 11px; color: var(--faint); font-variant-numeric: tabular-nums; }
.nc-title {
  font-size: 15.5px; font-weight: 800; line-height: 1.45;
  white-space: nowrap; overflow: hidden; text-overflow: ellipsis;   /* 09-26 用户定稿：标题固定一行，超出省略号 */
}
.nc-body {
  font-size: 13.5px; color: var(--sub); line-height: 1.7;
  height: 3.4em;   /* 固定两行（2 × 1.7 行高） */
  margin-bottom: 6px;  /* 6 + flex gap 4 = 内容到横线 10px（覆盖 Reboot 继承的 16px） */
  display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2;
  overflow: hidden;
}
.nc-foot {
  display: flex; justify-content: space-between; align-items: center;
  margin-top: 0; padding-top: 6px; border-top: 1px solid var(--line);
  font-size: 12px;
}
.nc-src { color: var(--faint); }
.nc-more { color: var(--green); font-weight: 800; }

/* 新闻详情页 */
.art-paper { padding: 22px 26px 26px; }
.art-so {
  background: var(--green-bg); border-left: 3px solid var(--green);
  padding: 10px 14px; border-radius: 0 8px 8px 0;
  font-size: 14.5px; font-weight: 600; line-height: 1.75; margin-bottom: 18px;
}
.art-so b { color: var(--green); margin-right: 8px; }
.art-p { font-size: 15px; line-height: 1.95; color: var(--ink); margin-bottom: 14px; }
/* 详情页（news.html）：meta 行与正文卡留出呼吸空间；回首页=标题最右侧绿色 */
.news-detail .paper.art-paper { margin-top: 18px; }
.news-detail .page-head .back { margin-left: auto; color: var(--green); font-weight: 700; }
.art-nav { display: flex; justify-content: space-between; margin-top: 18px; font-size: 13.5px; }
.art-nav a { color: var(--green); font-weight: 700; }
.nslogan {
  margin-top: 20px; padding: 11px 16px; font-size: 14px; font-weight: 800; color: var(--ink);
  border-left: 3px solid var(--green); border-radius: 0 10px 10px 0;
  background: color-mix(in srgb, var(--green) 8%, var(--card));
}

@media (max-width: 640px) {
  .news-grid { grid-template-columns: 1fr; }
}

/* ---------- AI快讯：左 1/3 圆形地球雷达 + 右 2/3 新闻（09-24 用户定稿；同日二稿：整块高度缩 1/3） ---------- */
.news-flex { display: flex; flex-direction: column; gap: 14px; }   /* 09-26 用户定稿：雷达居中在上，快讯两行三列在下 */
.news-flex .news-grid { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; align-items: start; }
@media (max-width: 920px) { .news-flex .news-grid { grid-template-columns: repeat(2, 1fr); } }
@media (max-width: 600px) { .news-flex .news-grid { grid-template-columns: 1fr; } }
/* 紧凑卡规格 = 首页 AI快讯 与 档案页共用（09-26 用户定稿：两边卡片必须一模一样大） */
.news-flex .ncard, .day-grid .ncard { min-height: 0; padding: 8px 12px; gap: 4px; }
.news-flex .nc-title, .day-grid .nc-title { font-size: 12.5px; }
.news-flex .nc-body, .day-grid .nc-body { font-size: 11.5px; line-height: 1.5; height: 3em; -webkit-line-clamp: 2; }
.news-flex .nc-foot, .day-grid .nc-foot { padding-top: 6px; font-size: 11px; border-top-width: 1px; }
.news-flex .tag2, .day-grid .tag2 { font-size: 10px; padding: 1px 8px; }
/* 卡片左上角数字角标 = 地图定点序号（一一对应） */
.nc-num {
  flex: none; width: 15px; height: 15px; border-radius: 50%; margin-right: -2px;
  background: var(--green); color: #fff; font-size: 9px; font-weight: 800;
  display: inline-flex; align-items: center; justify-content: center;
}
.rc-stage { position: relative; aspect-ratio: 1; width: 113px; margin: 44px auto 8px; }   /* 170 的 2/3，09-26 用户定稿 */   /* 上边距=下距（44px），与导航拉开一致距离 */   /* 09-26 用户定稿：独立居中 170px（原 340 的一半），后续承载更多含义 */
.rc-globe {
  position: absolute; inset: 0; border-radius: 50%; overflow: hidden;
  border: 2px solid var(--edge); box-shadow: 0 5px 0 var(--shadow); background: var(--card);
}
.rc-globe svg.map { position: absolute; inset: 0; width: 100%; height: 100%; }
.rc-globe path.land {
  fill: color-mix(in srgb, var(--green) 14%, transparent);
  stroke: color-mix(in srgb, var(--green) 55%, transparent);
  stroke-width: .4;
}
.rc-sweep {
  position: absolute; inset: 0;
  background: conic-gradient(from 0deg, color-mix(in srgb, var(--green) 26%, transparent), transparent 60deg, transparent 360deg);
  animation: rc-spin var(--spd, 60s) linear infinite;
}
@keyframes rc-spin { to { transform: rotate(360deg); } }
.rc-grat {
  position: absolute; inset: 0; border-radius: 50%; pointer-events: none;
  background:
    repeating-radial-gradient(circle at center, transparent 0 12%, rgba(44,38,31,.08) 12% calc(12% + 1px)),
    linear-gradient(rgba(44,38,31,.07), rgba(44,38,31,.07)) 50% 50%/100% 1px no-repeat,
    linear-gradient(rgba(44,38,31,.07), rgba(44,38,31,.07)) 50% 50%/1px 100% no-repeat;
}
.rc-pin {
  position: absolute; transform: translate(-50%, -50%);
  width: 12px; height: 12px; border-radius: 50%;
  background: var(--green); color: #fff; font-size: 8px; font-weight: 800; line-height: 1;
  display: flex; align-items: center; justify-content: center; text-decoration: none;
  animation: rc-blink var(--spd, 60s) linear infinite;
}
.rc-pin i { position: absolute; inset: -4px; border-radius: 50%; border: 1px solid var(--green); opacity: .4; }
.rc-pin:hover { opacity: 1; }
@keyframes rc-blink { 0% { opacity: .25 } 1.2% { opacity: 1; box-shadow: 0 0 10px var(--green) } 9% { opacity: .5 } 100% { opacity: .25 } }
/* 「你在这里」红点：6px（新闻徽章的一半），心跳式闪动；时区推测，无授权无上传 */
.rc-me {
  position: absolute; width: 6px; height: 6px; border-radius: 50%;
  background: #e05252; box-shadow: 0 0 0 1.5px color-mix(in srgb, #e05252 30%, transparent);
  transform: translate(-50%, -50%);
  animation: rc-heart 3.6s ease-in-out infinite;
}
.rc-me.near { margin: 9px 0 0 13px; }   /* 与新闻定点同区时让开，避免叠住 */
@keyframes rc-heart {
  0%, 60%, 100% { transform: translate(-50%, -50%) scale(1); opacity: .8 }
  10% { transform: translate(-50%, -50%) scale(1.8); opacity: 1 }
  22% { transform: translate(-50%, -50%) scale(1.15) }
  32% { transform: translate(-50%, -50%) scale(1.5); opacity: .95 }
}
@media (prefers-reduced-motion: reduce) { .rc-sweep, .rc-pin, .rc-me { animation: none } }
@media (max-width: 900px) {
  .news-flex { grid-template-columns: 1fr; }
  .rc-stage { width: 280px; margin: 0 auto; }
}
@media (max-width: 640px) {
  .rc-stage { display: none; }   /* 手机端隐藏装饰雷达（不占空间） */
  .news-flex .news-grid { grid-template-columns: 1fr; }
}

/* ═══ 雷达区世界地图（09-27 用户定稿，面板方案当日退役）：宽幅点阵地图铺底 + 雷达居中 + 天空动画 ═══
   地图 = assets/world-dots.svg（Natural Earth 同源点阵，绿色 currentColor）；
   动画 = sky.js（飞机航线 + 海上轮船，纯装饰零数据）；高度纪律：地图高 ~230px 不推挤布局。 */
.rc-world {
  display: flex; align-items: center; gap: 18px;
  max-width: 1120px; margin: 12px auto 4px; padding: 0 16px;
}
.rc-world .rc-radar { flex: none; width: 132px; margin-left: 103px; }   /* 雷达中心对齐 AI快讯第一列中部（09-27 用户定稿，量产 103px）*/
.rc-world .rc-stage { width: 100%; margin: 0; }   /* 雷达填满左列（原独立居中样式在此覆盖）*/
.rc-world .rc-mapbox {
  position: relative; flex: 1; min-width: 0;
  height: 132px;                    /* 与雷达等高（09-27 四版用户定稿：左置雷达+右铺地图，横带 7.6:1 定制投影零浪费）*/
  border-radius: 10px; overflow: hidden;
}
.rc-mapbox .rc-map {
  width: 100%; height: 100%; display: block; object-fit: cover;
  color: var(--green);              /* 纯品牌绿（09-27 用户定稿）*/
  opacity: .58; user-select: none; pointer-events: none;
}
.rc-mapbox .rc-sky { position: absolute; inset: 0; width: 100%; height: 100%; }
.rc-world + section { margin-top: 2px; }   /* 09-27 用户定稿：地图下边距与上边距对称——只压紧邻 section，其余 section 节奏不动 */
main.home section { margin-top: 12px; }   /* 09-30 用户定稿：首页所有栏目「最下方内容→下一栏标题」统一 36px（16 内边距 + 12 段距 + 8 标题距）——先单点 12 批准后推广全页；非首页页面 44px 节奏不动 */
main.home .rc-world + section { margin-top: 2px; }   /* 雷达→首栏 2px（09-27 用户定稿）——提权盖过上面的 12px 统一规则 */
.rc-plane path { fill: var(--green); }
.rc-trail { stroke: color-mix(in srgb, var(--green) 40%, transparent); stroke-width: 1; stroke-linecap: round; opacity: .6; }
.rc-arc { fill: none; stroke: color-mix(in srgb, var(--green) 40%, transparent); stroke-width: 1; stroke-dasharray: 4 5; opacity: 0; }
.rc-ship .rc-hull { fill: color-mix(in srgb, var(--green) 72%, #1b2126); }
.rc-ship .rc-cabin { fill: color-mix(in srgb, var(--green) 45%, #fff); }
.rc-ship .rc-funnel { fill: #B45309; }
.rc-ship .rc-mast { stroke: color-mix(in srgb, var(--green) 60%, #fff); stroke-width: .8; }
.rc-sealine { fill: none; stroke: color-mix(in srgb, var(--green) 30%, transparent); stroke-width: 1; stroke-dasharray: 2 6; opacity: .5; }
.rc-wake { stroke: color-mix(in srgb, var(--green) 38%, transparent); stroke-width: .9; stroke-linecap: round; }
.rc-wake2 { opacity: .5; stroke-width: .7; }   /* 第二道更淡更短——尾流扇形感 */
@media (max-width: 640px) { .rc-world .rc-radar { width: 96px; } .rc-world .rc-mapbox { height: 96px; } }

/* ============================================================
   重置日历（首页 · vendor.html 双月日历同款格式）
   行首 logo 条 + 双月格子，重置日格内放 logo，同日多家均分
   （.paper/.dual-cal/.mon-* 复用 reset.css，变量在 :root）
   ============================================================ */
.rcal { margin-top: 0; }   /* 09-26 用户报：4px 旧边距让左卡上缘低于右榜，两卡顶边应平齐 */
/* 重置区两栏（09-26 用户定稿）：左 2/3 双月日历（格子正方形+四角 logo 最多 4 个）· 右 1/3 重置次数榜 */
.reset-flex { display: grid; grid-template-columns: 2fr 1fr; gap: 14px; align-items: stretch; }
.reset-flex > #resetCal { display: flex; flex-direction: column; }
.reset-flex .rcal { flex: 1; }
@media (max-width: 980px) { .reset-flex { grid-template-columns: 1fr; } }
.reset-rank { padding: 14px 0 6px; display: flex; flex-direction: column; }   /* 左右内边距交给单元格，横线才能顶到卡边（09-26 用户报） */
/* 09-28 用户定稿：9 行后卡片仍有多余高度时，行高均匀摊满整卡，消除底部空档 */
.reset-rank .rr-head { flex-shrink: 0; }
.reset-rank .rr-table { flex: 1; height: 100%; }
/* 排行榜配色 = whenreset 风格：表头 2px 米色实线 · 行 1px 低透明细线 · 暖色名次徽章 + 次数比例条 */
.rr-head { display: flex; align-items: baseline; gap: 8px; margin-bottom: 4px; padding: 0 14px; }
.rr-head b { font-size: 14px; }
.rr-head span { font-size: 11.5px; color: var(--faint); }
.rr-table { width: 100%; border-collapse: collapse; }
.rr-table td { border-top: 1px solid color-mix(in srgb, var(--ink) 16%, var(--card)); padding: 7px 4px; vertical-align: middle; }
.rr-table td:first-child { padding-left: 14px; }
.rr-table td:last-child { padding-right: 14px; }
.rr-table tr:first-child td { border-top: none; }
.rr-n { width: 26px; }
.rr-n span { display: inline-flex; width: 20px; height: 20px; align-items: center; justify-content: center;
  border-radius: 6px; font-size: 11px; font-weight: 800; border: 1px solid var(--line); color: var(--sub); }
.rr-n .rr-b1 { background: #F88252; border-color: #F88252; color: #fff; }
.rr-n .rr-b2 { background: #E4B566; border-color: #E4B566; color: #2c261f; }
.rr-n .rr-b3 { background: color-mix(in srgb, #E4B566 40%, var(--card)); border-color: #E4B566; color: #2c261f; }
.rr-v { vertical-align: middle; }   /* td 恢复 table-cell：inline-flex 会丢垂直居中语义（09-26 实测偏差 8px 根因） */
.rr-v img, .rr-v span { vertical-align: middle; }
.rr-v img { margin-right: 8px; }   /* td 非 flex，gap 不生效，用 margin 撑开 logo 与名称 */
.rr-table td { vertical-align: middle; }
.rr-v img { height: 16px; width: auto; }
.rr-v .rfb { min-width: 18px !important; height: 16px !important; font-size: 10px; }
.rr-c { text-align: right; white-space: nowrap; min-width: 72px; position: relative; padding-bottom: 10px; }
.rr-c b { font-size: 13px; font-variant-numeric: tabular-nums; }
.rr-c small { color: var(--faint); margin-left: 2px; }
.rr-bar { position: absolute; left: 18px; right: 22px; bottom: 5px; height: 4px; border-radius: 2px;
  background: color-mix(in srgb, var(--ink) 10%, var(--card)); overflow: hidden; }
.rr-bar::after { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: var(--w, 0%);
  background: linear-gradient(90deg, #E4B566, #F88252); border-radius: 2px; }
.rcal-strip {
  display: flex; flex-wrap: nowrap; gap: 4px; overflow: hidden;
  padding: 10px 12px; border-bottom: 1px solid var(--line);
}
.rcal-chip {
  display: flex; flex-direction: column; align-items: center; gap: 3px;
  border: 1px solid var(--line); border-radius: 6px;   /* 09-26 用户报：胶囊弧度太大，改小圆角 */
  padding: 5px 4px 4px; background: var(--card);
  font-size: 11px; font-weight: 700; color: var(--ink); text-decoration: none;
  flex: 1 1 0; min-width: 0; text-align: center; line-height: 1.2;
}
.rcal-chip:hover { border-color: var(--reset); }
.rcal-chip img { width: 15px; height: 15px; border-radius: 4px; object-fit: contain; }
.rcal-chip .rfb {
  width: 20px; height: 20px; border-radius: 5px;
  display: inline-flex; align-items: center; justify-content: center;
  color: #fff; font-size: 11px; font-weight: 800;
}
.rcal-dual { padding: 18px 16px 20px; }
/* 09-28 用户定稿：左卡高度跟随右榜（右 9 行为高度基准）——格子改弹性高度填满剩余空间，仅桌面端 */
@media (min-width: 981px) {
  .reset-flex .rcal { display: flex; flex-direction: column; min-height: 0; }
  .reset-flex .rcal-strip { flex-shrink: 0; }
  .reset-flex .rcal-dual { flex: 1; min-height: 0; align-items: stretch; }
  .rcal-dual > div { display: flex; flex-direction: column; min-height: 0; }
  .rcal-dual .mon-title { flex-shrink: 0; }
  .rcal-dual .mon-grid { flex: 1; grid-auto-rows: 1fr; min-height: 0; }
  .rcal-dual .mon-day { aspect-ratio: auto; }
}

/* 区块说明行的颜色图例 */
.rcal-legend i { display: inline-block; width: 10px; height: 10px; border-radius: 3px; margin: 0 3px 0 1px; vertical-align: -1px; border: 1px solid var(--line); }
.rcal-legend .sw-done { background: var(--yellow); }
.rcal-legend .sw-soon { background: color-mix(in srgb, var(--green) 22%, var(--card)); }
/* 分享按钮（09-28 用户定稿）：说明行内绿色文字按钮，点击截图重置区生成分享图 */
.share-btn { background: none; border: none; color: var(--green); font-weight: 700; cursor: pointer; font-size: inherit; padding: 0; display: inline-flex; align-items: center; gap: 4px; }
.share-btn:hover { text-decoration: underline; }
.share-btn:disabled { opacity: .55; cursor: wait; }
.share-btn i.bi { width: auto; height: auto; border: none; border-radius: 0; margin: 0; vertical-align: -0.125em; }   /* 图例区 .rcal-legend i 会把所有 i 变 10px 色块——分享图标必须豁免（09-28 用户报变形） */

/* 格子分色：已重置=黄（与详情页表头 elapsed-stat 同一实心黄，用户定稿统一） · 预告未到=绿 */
.mon-day.done { background: var(--yellow); border-color: color-mix(in srgb, var(--yellow) 62%, var(--ink)); }
.mon-day.soon { background: color-mix(in srgb, var(--green) 14%, var(--card)); border-color: color-mix(in srgb, var(--green) 42%, var(--card)); }
.mon-day.done .dnum { color: #2c261f; }
.mon-day.soon .dnum { color: color-mix(in srgb, var(--green) 55%, var(--ink)); }

/* 方形格子（09-26 用户定稿：不再长方矩形）+ 事件 logo 2×2 四角布局（最多 4 家，图标缩小） */
.rcal-dual .mon-day { aspect-ratio: 1 / 1; min-height: 0; padding: 0; position: relative; display: block; }
.rcal-dual .mon-day .dnum { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; }
.rcal-dual .rlogos { position: absolute; inset: 2px; display: grid; grid-template-columns: 1fr 1fr; grid-template-rows: 1fr 1fr; }
.rcal-dual .rlogos > span { display: flex; }   /* 消除行内基线空隙：否则上下贴边距离比左右大（09-26 用户报） */
.rcal-dual .rlogos > span:nth-child(1) { justify-self: start; align-self: start; }
.rcal-dual .rlogos > span:nth-child(2) { justify-self: end; align-self: start; }
.rcal-dual .rlogos > span:nth-child(3) { justify-self: start; align-self: end; }
.rcal-dual .rlogos > span:nth-child(4) { justify-self: end; align-self: end; }
.rcal-dual .rlogos img { height: 13px; width: auto; max-width: 100%; object-fit: contain; border-radius: 3px; }
.rcal-dual .rlogos .rfb { height: 13px; min-width: 13px; border-radius: 3px; padding: 0 1px; font-size: 8px; }
@media (max-width: 640px) {
  .rcal-dual .rlogos img, .rcal-dual .rlogos .rfb { height: 11px; }
}

/* 格子内通用：日期数字（logo 布局已上移至 .rcal-dual 四角 2×2 规格） */
.mon-day .dnum { font-size: 11px; line-height: 1; color: var(--sub); font-variant-numeric: tabular-nums; }

/* ---------- AI快讯 · 管理员就地编辑（09-25 用户定稿） ---------- */
.nc-btn {
  border: 1px solid var(--line); background: var(--card); color: var(--sub);
  border-radius: 6px; padding: 1px 7px; font-size: 12px; cursor: pointer; line-height: 1.5;
}
.nc-btn:hover { color: var(--ink); border-color: var(--green); }
.nc-tools { display: inline-flex; gap: 6px; min-width: 0; }   /* 10-13：允许收缩,长仓库名截断不撑高卡片 */
.gh-key { font-family: ui-monospace, Menlo, Consolas, monospace; font-size: 12px; color: var(--faint, #8a837b); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 100px; flex: 0 0 auto; }   /* 10-13 二修(用户令:再短三个字母):100px硬上限≈13字符,与捕获徽标留出间距 */   /* 10-13 修：GitHub卡仓库名超长自动换行撑高卡片——改单行省略号,悬停 title 看全名 */
.nc-tools .mx-mini { flex: none; }
.ncard-add {
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 6px;
  border-style: dashed; color: var(--faint); min-height: 0;
}
.ncard-add:hover { border-color: var(--green); color: var(--green); }
.news-modal-mask {
  position: fixed; inset: 0; background: rgba(44, 38, 31, .45); z-index: 90;
  display: none; align-items: center; justify-content: center;
}
.news-modal-mask.open { display: flex; }
.news-modal {
  width: 44.4vw; min-width: 430px; background: var(--card); border: 2px solid var(--ink);
  border-radius: 12px; box-shadow: 6px 6px 0 var(--shadow); overflow: hidden;
}
.nm-head {
  display: flex; justify-content: space-between; align-items: center;
  padding: 12px 18px; border-bottom: 1px solid var(--line); font-size: 15px;
}
.nm-body { padding: 14px 18px; display: flex; flex-direction: column; gap: 12px; overflow: auto; }
.nm-body label { display: flex; flex-direction: column; gap: 5px; font-size: 12.5px; color: var(--sub); }
.nm-body input, .nm-body textarea, .nm-body select {
  border: 1px solid var(--line); border-radius: 8px; padding: 8px 10px;
  font: inherit; font-size: 13.5px; color: var(--ink); background: var(--bg, transparent); width: 100%;
}
.nm-body textarea { resize: vertical; line-height: 1.6; }
.nm-row { display: flex; gap: 14px; }
.nm-row > label { flex: 1; }
.nm-add { display: flex; gap: 6px; align-items: center; }
.nm-slogan { font-size: 11.5px; color: var(--faint); text-align: center; margin: 2px 0 0; }
.nm-foot { display: flex; gap: 10px; padding: 12px 18px; border-top: 1px solid var(--line); align-items: center; }
.nm-save { background: var(--green); border-color: var(--green); color: #fff; font-weight: 700; }
.nm-danger { background: var(--card); border-color: #d64545; color: #d64545; font-weight: 700; }   /* 危险操作（通用确认框，09-28） */
.nm-danger:hover { background: #d64545; border-color: #d64545; color: #fff; }
.nm-err { color: var(--amber); font-size: 12.5px; }
/* 锁定按钮两态（09-28 用户定稿：emoji 锁难看且状态不清——改 Bootstrap Icons 双图标 + 琥珀锁定态） */
.nc-lock.on { background: #fff3d6; border-color: #e8d9a8; color: #9a6700; }
.nc-lock.on:hover { border-color: #9a6700; color: #9a6700; }

/* 重置日历 · 管理员可点格子 */
.mon-day.admin-can { cursor: pointer; }
.mon-day.admin-can:hover { border-color: var(--green); }
.mon-day.admin-can:hover .dnum { color: var(--green); }

/* 坐标表 · 官方套餐列 */
.plan-link { color: var(--green); font-weight: 700; font-size: 12.5px; text-decoration: none; }
.plan-link:hover { text-decoration: underline; }

/* 生财精选 · 入口卡片网格（与新闻卡 ncard 同款：白卡 + 2px 描边 + 实体阴影） */
.sgrid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; }
@media (max-width: 760px) { .sgrid { grid-template-columns: 1fr; } }
.s-top { display: flex; justify-content: space-between; align-items: center; gap: 8px; flex-wrap: wrap; }
/* 详情页 s-top 左组（09-27 用户定稿）：类别 → 用户名 → 日期 依次相邻，数值色块整组推右 */
.s-top .s-left { display: inline-flex; align-items: center; gap: 8px; min-width: 0; }
.s-top .s-left .s-date { flex: 0 1 auto; }
.s-tag { flex: 0 0 auto; font-size: 11px; font-weight: 700; color: var(--green); background: var(--green-bg); border: 1px solid var(--green-line); border-radius: 999px; padding: 1px 10px; }
.s-date { font-size: 11px; color: var(--faint); font-variant-numeric: tabular-nums; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.dcard2 { display: flex; flex-direction: column; gap: 8px; background: var(--card); border: 2px solid var(--edge); box-shadow: 4px 4px 0 var(--shadow); border-radius: 14px; padding: 16px 18px; text-decoration: none; color: var(--ink); transition: transform .12s, border-color .12s; min-height: 160px; }
.dcard2:hover { transform: translateY(-2px); border-color: var(--green); text-decoration: none; color: var(--ink); }
.dt2 { margin: 0; font-size: 12.5px; line-height: 1.45; font-weight: 800; color: var(--ink); display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; }   /* 09-30 用户定稿：与首页快讯卡 .news-flex 实渲染字号一致（12.5px）；卡片尺寸不动 */
.dex2 { margin: 0; font-size: 11.5px; line-height: 1.5; color: var(--sub); display: -webkit-box; -webkit-line-clamp: 3; -webkit-box-orient: vertical; overflow: hidden; }   /* 09-30 用户定稿：与首页快讯卡实渲染字号一致（11.5px/1.5），3 行上限保留 */
.s-score { font-size: 11px; font-weight: 700; color: var(--green); background: var(--green-bg); border: 1px solid var(--green-line); border-radius: 8px; padding: 3px 9px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.drow2 { margin-top: auto; display: flex; justify-content: space-between; align-items: center; gap: 10px; }
.drow2 .s-score { min-width: 0; }
.dgo { flex: 0 0 auto; font-size: 11px; font-weight: 700; color: var(--green); }   /* 09-30 与 nc-foot 11px 对齐 */
.more-cell { flex-direction: row; align-items: center; justify-content: space-between; min-height: 0; grid-column: 1 / -1; }

/* 二级页 · 统一页头（所有导航页同一格式：h1 标题 + mchip 说明胶囊） */
.page-head { display: flex; flex-wrap: wrap; align-items: center; gap: 8px 12px; margin: 20px 0 10px; }
.page-head h1 { margin: 0; font-size: 24px; line-height: 1.25; font-weight: 800; color: var(--ink); letter-spacing: .5px; }
.mchip { display: inline-flex; align-items: center; font-size: 12.5px; font-weight: 600; color: var(--sub); background: var(--card); border: 1px solid var(--line); border-radius: 999px; padding: 4px 12px; }
.mchip.warn { color: var(--amber); background: var(--amber-bg); border-color: var(--amber-line); }

/* ---------- 全站页脚（footer.js 注入；09-29 用户定稿：只留「关于我们」，标题右对齐、正文从版心 2/3 起） ---------- */
.ft { margin-top: 30px; border-top: 2px dashed var(--line); padding: 22px 0 26px; color: var(--sub); }
.ft-about { text-align: right; }   /* 全块右对齐：标题+两段文字齐右，行有多长就多长 */
.ft-about .ft-title { display: block; font-size: 13.5px; color: var(--sub); margin-bottom: 2px; font-weight: 400; }
.ft p { margin: 8px 0 0; font-size: 12.5px; line-height: 1.8; color: var(--sub); }
.ft-slogan { color: var(--green); font-weight: 700; }
.ft-base { margin-top: 18px; padding-top: 12px; border-top: 1px dashed var(--line); font-size: 11.5px; color: var(--faint); text-align: center; }


/* ---------- 首页板块交错底色带（09-26 用户定稿：块与块用底色区分） ---------- */
main.home > section { padding: 8px 0 16px; }
main.home > section.band { background: color-mix(in srgb, var(--card) 62%, transparent); }

/* 导航登录入口（09-28 放回：主题下拉后的 authChip） */
.nav-auth-chip { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; padding-left: 4px; }
.nav-auth-in { color: var(--green); font-weight: 700; text-decoration: none; border: 1.5px solid var(--green); border-radius: 9px; padding: 3px 12px; }
.nav-auth-in:hover { background: var(--green); color: #fff; }
.nav-auth-name { color: var(--ink); font-weight: 700; max-width: 9em; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.nav-auth-menu .dropdown-item { font-size: 13px; }
.nav-auth-menu .dropdown-item i { margin-right: 6px; }
/* 菜单底色固定纯白不透明（09-28 用户裁决「干脆默认都是白色」：暗色主题下透明底看不清字） */
#authChip .dropdown-menu { background: #fff !important; border: 1.5px solid #d8cfba; box-shadow: 4px 4px 0 rgba(0,0,0,.08); }
#authChip .dropdown-item { color: #1b2126; }
#authChip .dropdown-item:hover { background: #f2f0e9; color: #17864e; }
#authChip .dropdown-divider { border-color: #e9e1cd; opacity: 1; }
.nav-auth-menu .dropdown-header { font-size: 11.5px; max-width: 16em; overflow: hidden; text-overflow: ellipsis; }
@media (max-width: 768px) { .nav-auth-chip { padding: 6px 0 2px; } }

/* 用户名二级菜单（09-28：退出/管理员后台收进下拉；为后续登录功能预留扩展位） */
.nav-auth-menu .dropdown-item i { margin-right: 6px; }
.nav-auth-name { max-width: 9em; overflow: hidden; text-overflow: ellipsis; }

/* 锁定卡片标识（09-28 用户定稿）：人工锁定=常驻精选，左上角数字+分类染雷达红（#e05252 同「你在这里」心跳点）——手工干预一眼可见 */
.ncard.is-locked .nc-num { background: #e05252; color: #fff; border-color: #e05252; }
.ncard.is-locked .tag2 { color: #e05252; border-color: color-mix(in srgb, #e05252 55%, transparent); background: color-mix(in srgb, #e05252 8%, var(--card)); }

/* 地图新闻信号点（09-28 用户定稿「地图呼应雷达」）：与圆形雷达定点同款绿圆白数字，进场三连闪后常亮微光 */
.rc-newspins { position: absolute; inset: 0; pointer-events: none; }
.rc-newspins .npin { pointer-events: auto; cursor: pointer; animation: npin-in 2.6s ease-out both; }
.rc-newspins .npin-dot { fill: var(--green); }
.rc-newspins .npin-ring { fill: none; stroke: var(--green); stroke-width: 1; opacity: .35; }
.rc-newspins .npin-num { fill: #fff; font-size: 6.5px; font-weight: 800; text-anchor: middle; }
.rc-newspins .npin:hover .npin-dot { fill: #e05252; }
.rc-newspins .npin:hover .npin-ring { stroke: #e05252; }
@keyframes npin-in {
  0% { opacity: 0; } 8% { opacity: 1; } 22% { opacity: .3; } 36% { opacity: 1; }
  50% { opacity: .3; } 64% { opacity: 1; } 100% { opacity: 1; }
}
/* 档案卡「首页N位」徽章（09-28 座位表：人工指派的首页座位） */
.pos-tag { font-size: 11px; font-weight: 800; color: var(--green); background: var(--green-bg, #e8f5ee); border: 1px solid var(--green-line, #bfe3d0); border-radius: 7px; padding: 1px 8px; }
