:root {
  --green: #5b7a3a;
  --green-d: #47612c;
  --green-l: #eef2e6;
  --green-line: #d5dfc4;
  --ink: #2c3324;
  --muted: #7c8570;
  --bg: #f4f6f0;
  --card: #ffffff;
  --danger: #c0492f;
  --warn: #c9922e;
  --ok: #5b7a3a;
  --radius: 12px;
  --shadow: 0 1px 3px rgba(60,70,40,.08), 0 4px 16px rgba(60,70,40,.04);
}
* { box-sizing: border-box; margin: 0; padding: 0; }
body {
  font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
  color: var(--ink);
  background: var(--bg);
  font-size: 14px;
  line-height: 1.6;
  transition: background 1.6s ease;
}
/* 整页背景随北京时间的时段变化 */
body[data-tod="dawn"]      { background: linear-gradient(135deg, #fde8d8 0%, #f3f1e4 55%, #eef2e6 100%); }
body[data-tod="morning"]   { background: linear-gradient(135deg, #e8f2ec 0%, #f4f6f0 60%, #f4f6f0 100%); }
body[data-tod="noon"]      { background: linear-gradient(135deg, #fbf8ea 0%, #f4f6ee 55%, #eef2e6 100%); }
body[data-tod="afternoon"] { background: linear-gradient(135deg, #f5f1e2 0%, #eef2e6 60%, #e9efdf 100%); }
body[data-tod="dusk"]      { background: linear-gradient(135deg, #fbe2d2 0%, #f0e3e6 55%, #e7e6ee 100%); }
body[data-tod="evening"]   { background: linear-gradient(135deg, #e3e7f1 0%, #e8ebec 55%, #eceee6 100%); }
body[data-tod="night"]     { background: linear-gradient(135deg, #dbe0ea 0%, #e3e6ec 55%, #e6e9e2 100%); }
.app { display: flex; height: 100vh; overflow: hidden; }

/* ===== Sidebar ===== */
.sidebar {
  width: 244px; flex-shrink: 0;
  background: rgba(251, 252, 249, .78);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
  border-right: 1px solid var(--green-line);
  display: flex; flex-direction: column;
  padding: 16px 12px;
}
.brand { display: flex; align-items: center; gap: 10px; padding: 8px 8px 16px; }
.brand-logo {
  width: 38px; height: 38px; border-radius: 10px;
  background: var(--green); color: #fff;
  display: flex; align-items: center; justify-content: center;
  font-weight: 700; font-size: 18px;
}
.brand-title { font-weight: 700; font-size: 15px; }
.brand-sub { font-size: 10px; color: var(--muted); letter-spacing: .5px; }

/* ===== 实时北京时钟 ===== */
.brand-clock {
  margin: 0 8px 12px; padding: 10px 12px;
  background: linear-gradient(135deg, var(--green) 0%, var(--green-d) 100%);
  color: #fff; border-radius: 10px; box-shadow: var(--shadow);
}
.clock-row { display: flex; align-items: baseline; gap: 8px; }
.clock-emoji { font-size: 16px; }
.clock-time { font-size: 22px; font-weight: 800; letter-spacing: 1px; font-variant-numeric: tabular-nums; }
.clock-date { font-size: 10.5px; opacity: .85; margin-top: 3px; letter-spacing: .3px; }

.nav { flex: 1; overflow-y: auto; }
.nav-group {
  font-size: 11px; color: var(--muted); font-weight: 600;
  padding: 14px 10px 6px; letter-spacing: .5px;
}
.nav-item {
  display: flex; align-items: center; gap: 9px;
  padding: 9px 10px; border-radius: 9px;
  cursor: pointer; color: var(--ink); font-size: 13.5px;
  user-select: none; position: relative;
}
.nav-item:hover { background: var(--green-l); }
.nav-item.active { background: var(--green); color: #fff; font-weight: 600; }
.ni-ico { font-size: 15px; }
.badge {
  margin-left: auto; background: var(--green-line); color: var(--green-d);
  font-size: 11px; padding: 0 7px; border-radius: 10px; min-width: 18px; text-align: center;
}
.nav-item.active .badge { background: rgba(255,255,255,.25); color: #fff; }

.sidebar-foot {
  border-top: 1px solid var(--green-line);
  padding: 12px 10px 4px; font-size: 12px; color: var(--muted);
}
.foot-title { font-weight: 600; margin-bottom: 6px; color: var(--ink); }
.foot-line { padding: 2px 0; }
.foot-owner { margin-top: 8px; font-size: 11px; opacity: .8; }
.foot-ver { margin-top: 4px; font-size: 11px; color: var(--green-d); font-weight: 600; }

/* ===== 版本记录 ===== */
.ver-item {
  background: #fff; border: 1px solid var(--green-line); border-left: 4px solid var(--green);
  border-radius: var(--radius); padding: 16px 20px; margin-bottom: 14px; box-shadow: var(--shadow);
}
.ver-item.current { border-left-color: var(--warn); background: #fffdf6; }
.ver-head { display: flex; align-items: center; gap: 10px; margin-bottom: 6px; flex-wrap: wrap; }
.ver-num { font-size: 17px; font-weight: 800; color: var(--green-d); }
.ver-date { font-size: 12px; color: var(--muted); }
.ver-title { font-weight: 700; font-size: 14px; margin-bottom: 8px; }
.ver-summary { color: #4a5340; font-size: 13.5px; margin-bottom: 10px; }
.ver-changes { margin-left: 18px; font-size: 13px; color: #4a5340; }
.ver-changes li { margin: 3px 0; }
.ver-scheme { background: var(--green-l); border-radius: 10px; padding: 10px 16px; font-size: 12.5px; color: var(--green-d); margin-bottom: 18px; }

/* ===== Main ===== */
.main { flex: 1; display: flex; flex-direction: column; overflow: hidden; }
.topbar {
  height: 60px; flex-shrink: 0;
  display: flex; align-items: center; justify-content: space-between;
  padding: 0 28px; border-bottom: 1px solid var(--green-line);
  background: rgba(255, 255, 255, .72);
  backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);
}
.topbar-title { font-size: 17px; font-weight: 700; }
.search {
  width: 320px; padding: 9px 14px; border: 1px solid var(--green-line);
  border-radius: 20px; font-size: 13px; outline: none; background: var(--bg);
}
.search:focus { border-color: var(--green); background: #fff; }

.content { flex: 1; overflow-y: auto; padding: 24px 28px 60px; }
.loading { color: var(--muted); padding: 40px; text-align: center; }

/* ===== Cards ===== */
.grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(320px, 1fr)); gap: 16px; }
.card {
  background: var(--card); border: 1px solid var(--green-line);
  border-radius: var(--radius); padding: 16px 18px; box-shadow: var(--shadow);
  border-left: 4px solid var(--green);
}
.card.warn { border-left-color: var(--warn); }
.card.danger { border-left-color: var(--danger); }
.card.ok { border-left-color: var(--ok); }
.card-tags { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 10px; }
.tag {
  font-size: 11px; padding: 2px 9px; border-radius: 6px;
  background: var(--green-l); color: var(--green-d); font-weight: 500;
}
.tag.core { background: #fbe9dc; color: var(--danger); }
.tag.p0 { background: #fbe0da; color: var(--danger); }
.tag.p1 { background: #fdf1d8; color: var(--warn); }
.card-title { font-weight: 700; font-size: 15px; margin-bottom: 8px; }
.card-body { color: #4a5340; font-size: 13.5px; }
.card-meta {
  margin-top: 12px; padding-top: 10px; border-top: 1px dashed var(--green-line);
  font-size: 12px; color: var(--muted); display: flex; justify-content: space-between; gap: 8px;
}
.cr-vis-img { margin: -16px -18px 10px; border-radius: var(--radius) var(--radius) 0 0; overflow: hidden; }
.cr-vis-img img { width: 100%; display: block; }
.cr-vis-takeaway { margin-top: 8px; font-size: 13px; color: var(--green-d); background: var(--green-l); padding: 6px 10px; border-radius: 6px; }
.cr-subhead { font-weight: 600; font-size: 13.5px; color: var(--green-d); margin: 4px 0 10px; }
.cr-vis-card { position: relative; }
.cr-vis-fav {
  position: absolute; top: 10px; right: 10px; z-index: 2;
  width: 28px; height: 28px; border-radius: 50%; border: 1px solid var(--green-line);
  background: rgba(255,255,255,0.9); color: var(--muted); font-size: 15px; cursor: pointer;
  display: flex; align-items: center; justify-content: center; transition: transform .15s;
}
.cr-vis-fav:hover { transform: scale(1.1); }
.cr-vis-fav.active { color: #d99a1c; border-color: #d99a1c; background: #fff8e6; }
.cr-vis-cnt { font-size: 11px; color: var(--muted); background: var(--green-l); padding: 1px 7px; border-radius: 8px; margin-left: 4px; }
.cr-vis-jumpbar { display: flex; flex-wrap: wrap; gap: 6px; margin-bottom: 12px; }
.cr-vis-jump {
  font-size: 12px; color: var(--green-d); background: var(--green-l); border: 1px solid var(--green-line);
  padding: 3px 10px; border-radius: 12px; cursor: pointer; user-select: none;
}
.cr-vis-jump:hover { background: var(--green); color: #fff; border-color: var(--green); }

/* ===== 解决问题模块 ===== */
.is-card { margin-bottom: 16px; border: 1px solid var(--green-line); border-left: 3px solid var(--green); background: #fff; border-radius: 8px; overflow: hidden; }
.is-card.is-open { border-left-color: var(--warn); }
.is-card.is-progress { border-left-color: #3b82f6; }
.is-card.is-resolved { border-left-color: var(--ok); }
.is-card.is-blocked { border-left-color: var(--danger); }
.is-card > summary { list-style: none; }
.is-card > summary::-webkit-details-marker { display: none; }
.is-card > summary::before { content: '▸'; color: var(--green-d); font-size: 13px; margin-right: 6px; transition: transform .15s; display: inline-block; }
.is-card[open] > summary::before { transform: rotate(90deg); }
.is-head { display: flex; align-items: baseline; gap: 10px; flex-wrap: wrap; padding: 10px 14px; cursor: pointer; background: var(--green-l); border-bottom: 1px solid transparent; }
.is-card[open] .is-head { border-bottom-color: var(--green-line); }
.is-status { font-size: 11px; font-weight: 700; padding: 2px 9px; border-radius: 8px; background: #fff; color: var(--ink); }
.is-status.is-open { color: var(--warn); }
.is-status.is-progress { color: #3b82f6; }
.is-status.is-resolved { color: var(--ok); }
.is-status.is-blocked { color: var(--danger); }
.is-status-sub { font-size: 12px; color: var(--muted); }
.is-title { font-weight: 700; font-size: 16px; flex: 1 1 100%; }
.is-head-links { margin-left: 10px; display: inline-flex; gap: 8px; align-items: baseline; flex-wrap: wrap; vertical-align: 2px; }
.is-head-links .is-src { font-size: 12px; font-weight: 600; padding: 2px 8px; border-radius: 4px; background: #fff; color: var(--green-d); }
.is-meta { font-size: 12px; color: var(--muted); margin-left: auto; }
.is-src { color: var(--green-d); text-decoration: none; }
.is-src:hover { text-decoration: underline; }
.is-card-body { padding: 12px 14px; }
.is-opt-cap { font-size: 12px; font-weight: 700; color: var(--green-d); margin-bottom: 5px; letter-spacing: .3px; }
.is-opt-text { font-size: 13.5px; color: #4a5340; line-height: 1.7; }
.is-opt-sec { margin: 8px 0; }
.is-opt-sec.is-opt-ret .is-opt-text { font-weight: 500; }
.is-opt-fu { margin: 6px 0 0 18px; font-size: 13px; color: #4a5340; }
.is-opt-fu li { margin: 3px 0; }
.is-fu-owner { color: var(--green-d); font-size: 12px; }
.is-empty { font-size: 12.5px; color: var(--muted); font-style: italic; padding: 4px 0; }
.is-appendix { font-size: 12.5px; color: var(--muted); margin-top: 10px; padding: 8px 10px; background: var(--green-l); border-radius: 6px; }

/* 四段式：①明确问题 ②我的路径 ③Joe关心点 ④会后to do */
.is-sec { margin: 12px 0 0; padding-top: 10px; border-top: 1px dashed var(--green-line); }
.is-sec:first-child { border-top: none; padding-top: 0; }
.is-sec-h { display: flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 800; color: var(--green-d); margin-bottom: 8px; }
.is-sec-num {
  flex-shrink: 0; width: 20px; height: 20px; border-radius: 50%; background: var(--green-d);
  color: #fff; font-size: 11.5px; font-weight: 800; display: flex; align-items: center; justify-content: center;
}
.is-doc-link { margin-bottom: 8px; font-size: 12.5px; }

.is-path {
  border: 1px solid var(--green-line); border-left: 3px solid var(--green-d); border-radius: 6px; margin: 8px 0;
  background: #fff; overflow: hidden;
}
.is-path.is-path-rec-on { border-left-color: var(--green-d); }
.is-path-rec { font-size: 10.5px; font-weight: 700; padding: 2px 8px; border-radius: 4px; background: var(--green-d); color: #fff; flex-shrink: 0; margin-left: auto; letter-spacing: .3px; }
.is-path-sum { display: flex; align-items: center; gap: 8px; padding: 9px 12px; cursor: pointer; font-size: 13.5px; }
.is-path-sum::-webkit-details-marker { margin-right: 4px; }
.is-path-tag { font-size: 10.5px; padding: 2px 8px; border-radius: 4px; background: var(--green-l); color: var(--green-d); font-weight: 600; flex-shrink: 0; }
.is-path-name { font-weight: 600; color: var(--ink); }
.is-path-body { padding: 4px 14px 12px; }
.is-path-dir { font-size: 11.5px; color: var(--muted); margin-bottom: 6px; font-style: italic; }
.is-path-gist { font-size: 13.5px; color: #4a5340; line-height: 1.7; margin-bottom: 4px; }

.is-meeting-line { font-size: 12px; color: var(--muted); margin-bottom: 8px; }
.is-concern { border-left: 3px solid var(--green-line); padding: 8px 12px; margin: 6px 0; background: #fff; border-radius: 4px; }
.is-concern.is-cov-yes { border-left-color: var(--ok); }
.is-concern.is-cov-partial { border-left-color: var(--warn); }
.is-concern.is-cov-no { border-left-color: var(--danger); }
.is-concern-h { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.is-cov-badge { font-size: 11px; font-weight: 700; padding: 1px 8px; border-radius: 4px; background: var(--green-l); color: var(--green-d); flex-shrink: 0; }
.is-concern-point { font-size: 13.5px; font-weight: 600; color: var(--ink); }
.is-concern-note { font-size: 12.5px; color: #4a5340; margin-top: 4px; line-height: 1.6; }

.is-todo-selected { font-size: 13.5px; font-weight: 700; background: var(--green-l); color: var(--green-d); padding: 6px 10px; border-radius: 4px; margin-bottom: 6px; display: inline-block; }

/* 解决问题两栏布局 + 左侧目录 */
.is-layout { display: grid; grid-template-columns: 220px 1fr; gap: 20px; align-items: start; }
.is-layout-toc { min-width: 0; }
.is-layout-main { min-width: 0; }
.is-toc { position: sticky; top: 12px; background: #fff; border: 1px solid var(--green-line); border-left: 3px solid var(--green-d); border-radius: 8px; padding: 12px 10px; max-height: calc(100vh - 24px); overflow-y: auto; }
.is-toc-h { font-size: 11.5px; font-weight: 800; color: var(--green-d); letter-spacing: .3px; margin-bottom: 8px; padding: 0 4px 6px; border-bottom: 1px dashed var(--green-line); }
.is-toc-list { display: flex; flex-direction: column; gap: 2px; }
.is-toc-item { display: flex; gap: 6px; align-items: baseline; padding: 6px 8px; border-radius: 4px; text-decoration: none; color: var(--ink); font-size: 12.5px; line-height: 1.45; transition: background .12s; }
.is-toc-item:hover { background: var(--green-l); }
.is-toc-item.active { background: var(--green-l); border-left: 3px solid var(--green-d); padding-left: 5px; }
.is-toc-num { font-size: 10.5px; font-weight: 800; color: var(--green-d); flex-shrink: 0; padding: 1px 5px; background: var(--green-l); border-radius: 3px; }
.is-toc-item.active .is-toc-num { background: var(--green-d); color: #fff; }
.is-toc-title { flex: 1 1 auto; min-width: 0; }
@media (max-width: 1000px) { .is-layout { grid-template-columns: 1fr; } .is-toc { position: static; max-height: none; } }

/* 问题排序序号 */
.is-order { display: inline-block; font-size: 11.5px; font-weight: 800; color: #fff; background: var(--green-d); padding: 1px 7px; border-radius: 4px; margin-right: 8px; vertical-align: 2px; letter-spacing: .3px; }

/* to do 行动项（统一底色，去花哨） */
.is-todo-actions { list-style: none; margin: 6px 0 0; padding: 0; }
.is-todo-action { display: flex; gap: 10px; padding: 8px 10px; border-radius: 4px; background: #fff; border: 1px solid var(--green-line); margin: 6px 0; align-items: flex-start; }
.is-todo-idx { flex-shrink: 0; width: 20px; height: 20px; border-radius: 50%; background: var(--green-d); color: #fff; font-size: 11px; font-weight: 800; display: flex; align-items: center; justify-content: center; margin-top: 1px; }
.is-todo-body { flex: 1; }
.is-todo-text { font-size: 13.5px; color: #4a5340; line-height: 1.65; }
.is-todo-owner { font-size: 11.5px; color: var(--green-d); font-weight: 600; margin-top: 3px; }

/* 主推路径徽章 */
.is-path.is-path-rec-on { border-color: var(--green); border-width: 2px; background: #f4f8ef; }
.is-path-rec { font-size: 10.5px; font-weight: 800; padding: 2px 8px; border-radius: 5px; background: var(--green); color: #fff; flex-shrink: 0; margin-left: auto; letter-spacing: .3px; }

/* ===== 解决问题 · 底表同步徽章 ===== */
.is-sync { display: inline-block; margin-top: 6px; font-size: 12px; color: var(--green-d); background: var(--green-l); padding: 3px 10px; border-radius: 6px; }

/* ===== 工作教训（wl-*） ===== */
.wl-card { border: 1px solid var(--green-line); border-left: 3px solid var(--green); background: #fff; border-radius: 8px; margin-bottom: 10px; overflow: hidden; }
.wl-head { display: flex; align-items: baseline; gap: 10px; padding: 11px 14px; cursor: pointer; list-style: none; background: var(--green-l); }
.wl-card > summary::-webkit-details-marker { display: none; }
.wl-card > summary::before { content: '▸'; color: var(--green-d); font-size: 12px; flex-shrink: 0; transition: transform .15s; }
.wl-card[open] > summary::before { transform: rotate(90deg); }
.wl-date { flex-shrink: 0; font-size: 11.5px; font-weight: 800; color: #fff; background: var(--green-d); padding: 2px 8px; border-radius: 4px; letter-spacing: .3px; }
.wl-problem { font-weight: 700; color: var(--ink); font-size: 14px; line-height: 1.5; }
.wl-points { margin: 0; padding: 12px 16px 14px 34px; display: flex; flex-direction: column; gap: 8px; }
.wl-points li { font-size: 13.5px; color: #4a5340; line-height: 1.7; }
/* Joe 语录（解决问题·置顶） */
.jq-box { border: 1px solid var(--green-line); border-left: 4px solid var(--green-d); background: linear-gradient(180deg, var(--green-l), #fff); border-radius: 10px; padding: 12px 16px; margin-bottom: 14px; }
.jq-h { font-size: 12.5px; font-weight: 800; color: var(--green-d); letter-spacing: .3px; margin-bottom: 8px; }
.jq-item { display: flex; flex-direction: column; gap: 3px; padding: 4px 0; }
.jq-item + .jq-item { border-top: 1px dashed var(--green-line); margin-top: 6px; padding-top: 10px; }
.jq-quote { font-size: 15px; font-weight: 700; color: var(--ink); line-height: 1.6; }
.jq-quote::before { content: '“'; color: var(--green); font-weight: 800; margin-right: 2px; }
.jq-quote::after { content: '”'; color: var(--green); font-weight: 800; margin-left: 2px; }
.jq-ctx { font-size: 11.5px; color: var(--muted); }
/* 工作教训·专项分组 */
.wl-group { margin-bottom: 18px; }
.wl-group-h { display: flex; align-items: center; gap: 8px; font-size: 13.5px; font-weight: 800; color: var(--green-d); margin: 0 0 10px; padding-left: 10px; border-left: 4px solid var(--green); }
.wl-group-n { font-size: 11px; font-weight: 800; color: #fff; background: var(--green); padding: 1px 7px; border-radius: 999px; }

/* ===== 其他思考（ot-*） ===== */
.ot-summary { font-size: 13.5px; color: var(--green-d); background: var(--green-l); padding: 8px 12px; border-radius: 6px; margin-bottom: 12px; display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.ot-total { font-size: 12px; font-weight: 800; color: #fff; background: var(--green-d); padding: 2px 8px; border-radius: 4px; }
.ot-cats { display: flex; flex-direction: column; gap: 10px; }
.ot-card { border: 1px solid var(--green-line); border-left: 3px solid var(--green); background: #fff; border-radius: 8px; overflow: hidden; }
.ot-head { display: flex; align-items: center; gap: 10px; padding: 11px 14px; cursor: pointer; list-style: none; background: var(--green-l); }
.ot-card > summary::-webkit-details-marker { display: none; }
.ot-card > summary::after { content: '▸'; margin-left: auto; color: var(--green-d); font-size: 13px; transition: transform .15s; }
.ot-card[open] > summary::after { transform: rotate(90deg); }
.ot-icon { flex-shrink: 0; font-size: 16px; }
.ot-name { font-weight: 800; color: var(--green-d); font-size: 14.5px; }
.ot-count { flex-shrink: 0; font-size: 11.5px; font-weight: 800; color: #fff; background: var(--green); padding: 1px 8px; border-radius: 10px; }
.ot-gist { font-size: 12.5px; color: var(--muted); line-height: 1.65; padding: 10px 16px 4px; }
.ot-entries { padding: 4px 16px 14px; display: flex; flex-direction: column; gap: 4px; }
.ot-entry { display: flex; gap: 10px; padding: 9px 0; border-top: 1px dashed var(--green-line); align-items: flex-start; }
.ot-entry:first-child { border-top: none; }
.ot-entry-date { flex-shrink: 0; font-size: 11px; font-weight: 800; color: var(--green-d); background: var(--green-l); padding: 2px 7px; border-radius: 4px; margin-top: 2px; }
.ot-entry-body { flex: 1; min-width: 0; }
.ot-entry-title { font-size: 13.5px; font-weight: 700; color: var(--ink); line-height: 1.5; margin-bottom: 3px; }
.ot-entry-core { font-size: 12.5px; color: #4a5340; line-height: 1.7; }

/* to do 结构化行动项 */
.is-todo-actions { list-style: none; margin: 6px 0 0; padding: 0; }
.is-todo-action { display: flex; gap: 10px; padding: 8px 10px; border-radius: 8px; background: var(--green-l); margin: 6px 0; align-items: flex-start; }
.is-todo-idx { flex-shrink: 0; width: 20px; height: 20px; border-radius: 50%; background: var(--green-d); color: #fff; font-size: 11px; font-weight: 800; display: flex; align-items: center; justify-content: center; margin-top: 1px; }
.is-todo-body { flex: 1; }
.is-todo-text { font-size: 13.5px; color: #4a5340; line-height: 1.65; }
.is-todo-owner { font-size: 11.5px; color: var(--green-d); font-weight: 600; margin-top: 3px; }

/* metric rows */
.metric-row { display: flex; justify-content: space-between; padding: 5px 0; border-bottom: 1px dotted var(--green-line); }
.metric-row:last-child { border-bottom: none; }
.metric-label { color: var(--muted); }
.metric-val { font-weight: 600; }
.metric-note { font-size: 11px; color: var(--muted); }

.list-note { margin: 4px 0 0 16px; font-size: 13px; color: #4a5340; }
.list-note li { margin: 3px 0; }

/* ===== Overview ===== */
.hero {
  background: linear-gradient(135deg, var(--green) 0%, var(--green-d) 100%);
  color: #fff; border-radius: 16px; padding: 24px 28px; margin-bottom: 20px;
}
.hero-sub { font-size: 12px; opacity: .8; letter-spacing: 1px; }
.hero-title { font-size: 24px; font-weight: 800; margin: 4px 0 14px; }
.kpi-row { display: flex; gap: 14px; flex-wrap: wrap; }
.kpi {
  background: rgba(255,255,255,.13); border-radius: 12px; padding: 12px 16px; min-width: 150px;
}
.kpi-label { font-size: 12px; opacity: .85; }
.kpi-val { font-size: 22px; font-weight: 800; margin: 2px 0; }
.kpi-hint { font-size: 11px; opacity: .75; }
.section-title { font-size: 15px; font-weight: 700; margin: 22px 0 12px; display: flex; align-items: center; gap: 8px; }
.focus-list { background: #fff; border: 1px solid var(--green-line); border-radius: var(--radius); padding: 8px 4px; box-shadow: var(--shadow); }
.focus-item { display: flex; gap: 10px; padding: 11px 16px; border-bottom: 1px solid var(--green-line); font-size: 13.5px; }
.focus-item:last-child { border-bottom: none; }
.focus-dot { color: var(--green); font-weight: 700; flex-shrink: 0; }

/* ===== 本周 / 本月聚焦 ===== */
.now-tag {
  margin-left: 10px; font-size: 11px; font-weight: 500; color: var(--muted);
  background: var(--green-l); padding: 2px 10px; border-radius: 10px; letter-spacing: .3px;
}
.focus-panel {
  background: #fff; border: 1px solid var(--green-line); border-left: 4px solid var(--green);
  border-radius: var(--radius); padding: 6px 4px; box-shadow: var(--shadow);
}
.focus-head {
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 10px 16px 8px; border-bottom: 1px solid var(--green-line); margin-bottom: 4px;
}
.focus-badge {
  font-size: 12.5px; font-weight: 700; color: #fff; background: var(--green);
  padding: 3px 12px; border-radius: 8px;
}
.focus-badge.month { background: var(--warn); }
.focus-range { font-size: 12px; color: var(--muted); }
.focus-text { display: flex; flex-direction: column; gap: 2px; }
.focus-meta { font-size: 11.5px; color: var(--muted); }
.focus-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; align-items: start; }
.focus-col { min-width: 0; }
.focus-col-title { font-size: 13px; font-weight: 700; color: var(--green-d); margin-bottom: 8px; padding-left: 2px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.sync-tag { font-size: 11px; font-weight: 500; color: var(--muted); background: var(--green-l); padding: 2px 9px; border-radius: 10px; text-decoration: none; }
.sync-tag:hover { background: var(--green-line); color: var(--green-d); }
.focus-doclink { font-size: 11px; font-weight: 500; color: var(--green-d); background: var(--green-l); padding: 2px 9px; border-radius: 10px; text-decoration: none; }
.focus-doclink:hover { background: var(--green-line); }
@media (max-width: 820px) { .focus-cols { grid-template-columns: 1fr; } }

.redline-box {
  background: #fbe9dc; border: 1px solid #edc9b3; border-radius: var(--radius);
  padding: 14px 18px; margin-bottom: 18px; color: #8a3a22;
}
.redline-box .rt { font-weight: 700; margin-bottom: 6px; }
.redline-box ul { margin-left: 18px; }

/* ===== 创意营销 · 定调 / 主物料 ===== */
.cr-refresh { margin-left: 8px; font-size: 11px; font-weight: 500; color: var(--muted); }
.cr-baseline { background: var(--green-l); border: 1px solid var(--green-line); border-radius: var(--radius); padding: 12px 16px; font-weight: 600; color: var(--green-d); margin-bottom: 12px; }
.cr-points { margin-left: 18px; display: flex; flex-direction: column; gap: 7px; }
.cr-points li { line-height: 1.6; }
.cr-concept { background: #fff8ea; border: 1px solid #f0dcae; border-radius: var(--radius); padding: 12px 16px; color: #8a6a1f; font-weight: 600; margin-bottom: 14px; }
.cr-asset { background: #fff; border: 1px solid var(--green-line); border-radius: var(--radius); padding: 14px 16px; margin-bottom: 12px; }
.cr-asset-h { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; margin-bottom: 8px; }
.cr-asset-title { font-weight: 700; font-size: 15px; color: var(--ink); }
.cr-owner { font-size: 12px; color: var(--green-d); background: var(--green-l); padding: 2px 9px; border-radius: 10px; }
.cr-date { font-size: 11.5px; color: var(--muted); }
.cr-prio { font-size: 12.5px; color: var(--warn); font-weight: 600; margin-bottom: 6px; }
.cr-fixed { font-size: 12.5px; color: var(--muted); margin-bottom: 8px; }
.cr-dirs { margin-left: 18px; display: flex; flex-direction: column; gap: 8px; }
.cr-dirs li { line-height: 1.65; }

.empty { color: var(--muted); padding: 30px; text-align: center; background: #fff; border: 1px dashed var(--green-line); border-radius: var(--radius); }

/* ===== 个人工作计划 · 可折叠竖版大纲 ===== */
.wp-note { font-size: 12.5px; color: var(--muted); margin: -4px 0 14px; }
.wp-outline { display: flex; flex-direction: column; gap: 14px; }

.wp-lv { border-radius: var(--radius); overflow: hidden; }
.wp-sum {
  list-style: none; cursor: pointer; user-select: none;
  display: flex; align-items: center; gap: 10px; flex-wrap: wrap;
  padding: 10px 16px; position: relative;
}
.wp-sum::-webkit-details-marker { display: none; }
/* 折叠三角 */
.wp-sum::before {
  content: '▸'; font-size: 12px; transition: transform .18s ease; flex-shrink: 0; opacity: .7;
}
details[open] > .wp-sum::before { transform: rotate(90deg); }
.wp-sum-t { font-weight: 700; }
.wp-sum-meta { font-size: 11.5px; color: var(--muted); font-weight: 400; }

/* 一级：年 */
.wp-year { border: 1px solid var(--green-line); box-shadow: var(--shadow); background: #fff; }
.wp-year > .lv-year {
  background: linear-gradient(135deg, var(--green) 0%, var(--green-d) 100%); color: #fff;
}
.wp-year > .lv-year .wp-sum-t { font-size: 17px; }
.wp-year > .lv-year .wp-sum-meta { color: rgba(255,255,255,.82); }

/* 二级：半年 */
.wp-half { margin: 4px 12px 12px; border: 1px solid var(--green-line); border-left: 4px solid var(--green); background: #fff; }
.wp-half > .lv-half { background: var(--green-l); }
.wp-half > .lv-half .wp-sum-t { font-size: 14.5px; color: var(--green-d); }

/* 三级：季度 */
.wp-quarter { margin: 4px 12px 10px; border: 1px solid var(--green-line); border-left: 4px solid var(--warn); background: #fff; }
.wp-quarter > .lv-quarter { background: #fffdf6; }
.wp-quarter > .lv-quarter .wp-sum-t { font-size: 13.5px; }

/* 成长高亮条（年/半年标题下） */
.wp-growth-bar {
  display: flex; align-items: flex-start; gap: 8px;
  margin: 0 16px 12px; padding: 10px 14px;
  background: #fdf6e6; border: 1px solid #f0dca8; border-left: 4px solid var(--warn);
  border-radius: 10px; font-size: 13px; color: #7a5a17; line-height: 1.55;
}
.wp-growth-tag {
  flex-shrink: 0; font-weight: 700; color: #fff; background: var(--warn);
  border-radius: 6px; padding: 1px 8px; font-size: 11px; line-height: 1.7;
}

/* 半年成长：纯文字打底，无框，与季度高亮框区分 */
.wp-growth-plain {
  margin: 0 16px 12px; padding: 0 2px;
  font-size: 12.5px; color: #7a5a17; line-height: 1.6;
}
.wp-growth-lite {
  font-weight: 700; color: var(--warn); margin-right: 8px;
}

/* 季度内两列：工作内容 | 成长 */
.wp-qbody { display: grid; grid-template-columns: 1.7fr 1fr; gap: 14px; padding: 12px 16px 16px; }
.wp-col-h { font-size: 12px; font-weight: 700; color: var(--muted); margin-bottom: 8px; letter-spacing: .3px; }
.wp-month { margin-bottom: 10px; }
.wp-month:last-child { margin-bottom: 0; }
.wp-month-t { font-weight: 700; font-size: 13px; color: var(--green-d); margin-bottom: 3px; }
.wp-col-work ul { margin: 0 0 0 18px; font-size: 13px; color: #4a5340; }
.wp-col-work li { margin: 3px 0; line-height: 1.55; }
.wp-col-growth { border-left: 1px dashed var(--green-line); padding-left: 14px; }
.wp-growth-hl {
  background: #fdf6e6; border: 1px solid #f0dca8; border-radius: 10px;
  padding: 10px 12px; font-size: 13px; color: #7a5a17; line-height: 1.6;
}
.wp-empty-col { color: var(--muted); font-size: 12.5px; }
@media (max-width: 820px) {
  .wp-qbody { grid-template-columns: 1fr; }
  .wp-col-growth { border-left: none; padding-left: 0; border-top: 1px dashed var(--green-line); padding-top: 12px; }
}

/* ===== Wency信息库 · 资料目录 ===== */
.il-src { color: var(--green-d); text-decoration: none; border-bottom: 1px dashed var(--green-line); }
.il-src:hover { color: var(--green); }
.il-wrap { display: flex; flex-direction: column; gap: 14px; }

.il-sec {
  background: #fff; border: 1px solid var(--green-line); border-left: 4px solid var(--green);
  border-radius: var(--radius); overflow: hidden; box-shadow: var(--shadow);
}
.il-sec-h {
  list-style: none; cursor: pointer; user-select: none;
  display: flex; align-items: center; gap: 10px;
  padding: 12px 16px; background: var(--green-l);
}
.il-sec-h::-webkit-details-marker { display: none; }
.il-sec-h::before {
  content: '▸'; font-size: 12px; transition: transform .18s ease; opacity: .6; flex-shrink: 0;
}
details[open] > .il-sec-h::before { transform: rotate(90deg); }
.il-sec-ico { font-size: 16px; }
.il-sec-t { font-weight: 700; font-size: 14.5px; color: var(--green-d); }
.il-sec-n { margin-left: auto; font-size: 11.5px; color: var(--muted); background: #fff; border: 1px solid var(--green-line); border-radius: 10px; padding: 1px 9px; }
.il-sec-body { padding: 12px 16px 16px; display: flex; flex-direction: column; gap: 14px; }

.il-group-h {
  font-size: 12.5px; font-weight: 700; color: var(--muted);
  margin-bottom: 8px; letter-spacing: .3px; display: flex; align-items: center; gap: 8px;
}
.il-count { font-size: 11px; font-weight: 500; color: var(--green-d); background: var(--green-l); border-radius: 8px; padding: 0 7px; }
.il-links { display: grid; grid-template-columns: 1fr 1fr; gap: 6px; }
@media (max-width: 820px) { .il-links { grid-template-columns: 1fr; } }

.il-link {
  display: flex; align-items: center; gap: 9px;
  padding: 8px 11px; border: 1px solid var(--green-line); border-radius: 9px;
  text-decoration: none; color: var(--ink); background: #fff; font-size: 13px; min-width: 0;
  transition: border-color .15s ease, background .15s ease;
}
.il-link:hover { border-color: var(--green); background: var(--green-l); }
.il-type { flex-shrink: 0; font-size: 10.5px; font-weight: 600; padding: 1px 7px; border-radius: 6px; }
.il-t-wiki { background: #e8f0dd; color: var(--green-d); }
.il-t-docx { background: #e3ecf7; color: #2f5a8a; }
.il-t-sheets { background: #e6f3ea; color: #2f7a4a; }
.il-t-link { background: var(--green-l); color: var(--muted); }
.il-title { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.il-open { flex-shrink: 0; color: var(--muted); font-size: 12px; }
.il-link:hover .il-open { color: var(--green); }

/* 拖动排序（普通文档清单板块，v1.34.0）：可拖列表改单列纵向，每行=手柄+链接 */
.il-drag-list { display: flex; flex-direction: column; gap: 6px; min-height: 8px; }
.il-row { display: flex; align-items: center; gap: 6px; border-radius: 9px; }
.il-row .il-link { flex: 1; min-width: 0; }
.il-handle {
  flex-shrink: 0; cursor: grab; color: var(--muted); font-size: 14px; line-height: 1;
  padding: 0 4px; user-select: none; letter-spacing: -1px; transition: color .15s ease;
}
.il-handle:hover { color: var(--green); }
.il-row:hover .il-handle { color: var(--green-d); }
.il-row.il-dragging { opacity: .5; }
.il-row.il-dragging .il-link { border-color: var(--green); border-style: dashed; background: var(--green-l); }

/* 顺序保存轻提示 */
.il-toast {
  position: fixed; left: 50%; bottom: 26px; transform: translateX(-50%) translateY(14px);
  background: var(--green-d); color: #fff; font-size: 13px; font-weight: 600;
  padding: 9px 16px; border-radius: 10px; box-shadow: 0 6px 20px rgba(0,0,0,.18);
  opacity: 0; pointer-events: none; transition: opacity .2s ease, transform .2s ease; z-index: 999;
}
.il-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); }
.il-toast.err { background: #b23b3b; }

/* 方向会文档：原文档 | 会议纪要 两列 */
.il-dm { display: flex; flex-direction: column; gap: 14px; }
.il-dm-caps { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.il-dm-cap { font-size: 12px; font-weight: 700; color: #fff; background: var(--green); border-radius: 8px; padding: 5px 12px; text-align: center; }
.il-dm-cap:last-child { background: #2f5a8a; }
.il-dm-group { border: 1px solid var(--green-line); border-radius: 10px; padding: 10px 12px; background: #fcfdfa; }
.il-dm-gname { font-size: 12.5px; font-weight: 700; color: var(--green-d); margin-bottom: 8px; letter-spacing: .3px; }
.il-dm-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; align-items: start; }
.il-dm-col { display: flex; flex-direction: column; gap: 6px; }
.il-col-empty { font-size: 12px; color: var(--muted); padding: 8px 11px; border: 1px dashed var(--green-line); border-radius: 9px; text-align: center; }

/* 全球节点：斋月相关 | 其他节点 两列 */
.il-ns { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; align-items: start; }
.il-ns-col { display: flex; flex-direction: column; gap: 12px; }
.il-ns-cap { font-size: 12.5px; font-weight: 700; color: #fff; border-radius: 8px; padding: 6px 12px; }
.il-ns-col:first-child .il-ns-cap { background: #a8792a; }
.il-ns-col:last-child .il-ns-cap { background: var(--green); }
.il-ns .il-links { grid-template-columns: 1fr; }

@media (max-width: 900px) {
  .il-dm-cols { grid-template-columns: 1fr; }
  .il-dm-caps { grid-template-columns: 1fr; }
  .il-ns { grid-template-columns: 1fr; }
}

/* ===== 思维训练 · 三人分列 · 四级折叠 ===== */
.mt-cols { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; align-items: start; }
@media (max-width: 1100px) { .mt-cols { grid-template-columns: 1fr; } }
.mt-col { min-width: 0; }

/* L1 人物 */
.mt-person {
  background: #fff; border: 1px solid var(--green-line); border-radius: var(--radius);
  overflow: hidden; box-shadow: var(--shadow);
}
.mt-person-sum {
  list-style: none; cursor: pointer; user-select: none;
  display: flex; align-items: center; gap: 8px;
  padding: 12px 14px; background: linear-gradient(135deg, var(--green) 0%, var(--green-d) 100%); color: #fff;
}
.mt-person-sum::-webkit-details-marker { display: none; }
.mt-person-sum::before { content: '▸'; font-size: 12px; transition: transform .18s ease; opacity: .8; }
details[open] > .mt-person-sum::before { transform: rotate(90deg); }
.mt-person-name { font-weight: 800; font-size: 15px; }
.mt-person-n { margin-left: auto; font-size: 11px; background: rgba(255,255,255,.22); border-radius: 10px; padding: 1px 9px; }

/* L2/顶层子块（总结 / 问题类型） */
.mt-sub { margin: 10px 10px 0; border: 1px solid var(--green-line); border-radius: 10px; overflow: hidden; }
.mt-sub:last-child { margin-bottom: 12px; }
.mt-sub-sum {
  list-style: none; cursor: pointer; user-select: none;
  padding: 8px 12px; background: var(--green-l); font-weight: 700; font-size: 12.5px; color: var(--green-d);
  display: flex; align-items: center; gap: 8px;
}
.mt-sub-sum::-webkit-details-marker { display: none; }
.mt-sub-sum::before { content: '▸'; font-size: 11px; transition: transform .18s ease; opacity: .6; }
details[open] > .mt-sub-sum::before { transform: rotate(90deg); }

.mt-summary-body { padding: 10px 12px; }
.mt-summary-text { font-size: 12.5px; color: #4a5340; line-height: 1.65; }
.mt-tags { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 8px; }
.mt-tag { font-size: 10.5px; background: #fdf6e6; color: #7a5a17; border: 1px solid #f0dca8; border-radius: 6px; padding: 1px 7px; }

.mt-types-body { padding: 8px 10px 10px; display: flex; flex-direction: column; gap: 8px; }

/* L3 问题类型 */
.mt-cat { border: 1px solid var(--green-line); border-left: 3px solid var(--warn); border-radius: 8px; overflow: hidden; }
.mt-cat-sum {
  list-style: none; cursor: pointer; user-select: none;
  padding: 7px 10px; background: #fffdf6; display: flex; align-items: center; gap: 8px;
}
.mt-cat-sum::-webkit-details-marker { display: none; }
.mt-cat-sum::before { content: '▸'; font-size: 11px; transition: transform .18s ease; opacity: .55; }
details[open] > .mt-cat-sum::before { transform: rotate(90deg); }
.mt-cat-t { font-weight: 700; font-size: 12.5px; color: var(--ink); }
.mt-cat-n { margin-left: auto; font-size: 10.5px; color: var(--warn); background: #fdf1d8; border-radius: 8px; padding: 0 7px; font-weight: 600; }
.mt-cat-desc { font-size: 11px; color: var(--muted); padding: 4px 10px 0; }
.mt-qs { padding: 6px 8px 8px; display: flex; flex-direction: column; gap: 5px; }

/* L4 问题 */
.mt-q { border: 1px solid var(--green-line); border-radius: 7px; background: #fff; }
.mt-q-sum {
  list-style: none; cursor: pointer; user-select: none;
  padding: 7px 9px; display: flex; flex-direction: column; gap: 2px;
}
.mt-q-sum::-webkit-details-marker { display: none; }
.mt-q-t { font-size: 12.5px; color: var(--ink); line-height: 1.5; }
.mt-q-meta { font-size: 10.5px; color: var(--muted); }
.mt-q-body { padding: 0 10px 10px; border-top: 1px dashed var(--green-line); margin-top: 2px; padding-top: 8px; }
.mt-quote { font-size: 11px; color: #7a5a17; background: #fdf6e6; border-radius: 6px; padding: 5px 8px; margin-bottom: 8px; }
.mt-ans-h { font-size: 11px; font-weight: 700; color: var(--muted); margin-bottom: 5px; }
.mt-ans { font-size: 12px; color: #4a5340; padding: 4px 0; border-bottom: 1px dotted var(--green-line); line-height: 1.5; }
.mt-ans:last-child { border-bottom: none; }
.mt-ans-by { font-weight: 700; color: var(--green-d); margin-right: 6px; }
.mt-noans { font-size: 11.5px; color: var(--muted); font-style: italic; }

/* 思维训练 · 整行区块（对比 / 汇报关心点 / 提问预演） */
.mt-wide { margin-top: 18px; display: flex; flex-direction: column; gap: 14px; }
.mt-wide .mt-sub { background: #fff; border: 1px solid var(--green-line); border-radius: var(--radius); box-shadow: var(--shadow); }
.mt-cmp-note { font-size: 12.5px; color: var(--green-d); background: var(--green-l); border-radius: 8px; padding: 8px 12px; margin: 10px 14px 4px; }

.mt-cmp-body { padding: 4px 14px 14px; overflow-x: auto; }
.mt-cmp-tbl { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.mt-cmp-tbl th, .mt-cmp-tbl td { border: 1px solid var(--green-line); padding: 8px 10px; vertical-align: top; text-align: left; line-height: 1.55; }
.mt-cmp-tbl thead th { background: var(--green); color: #fff; font-weight: 700; font-size: 12px; }
.mt-cmp-tbl thead th.mt-c-roger { background: #5b7a3a; }
.mt-cmp-tbl thead th.mt-c-cherry { background: #3f7d6e; }
.mt-cmp-tbl thead th.mt-c-joe { background: #a8792a; }
.mt-cmp-dim { background: var(--green-l); color: var(--ink); font-weight: 700; white-space: nowrap; width: 92px; }
.mt-cmp-tbl tbody tr:nth-child(even) td { background: #fafbf7; }
.mt-cmp-c { color: #3d4433; }

.mt-rf-body { padding: 4px 14px 14px; }
.mt-rf-cards { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-top: 8px; }
.mt-rf-card { border: 1px solid var(--green-line); border-radius: 10px; padding: 12px 14px; background: #fff; }
.mt-rf-card.mt-rf-roger { border-left: 4px solid #5b7a3a; background: #f6f9ef; }
.mt-rf-card.mt-rf-joe { border-left: 4px solid #a8792a; background: #fdf9ef; }
.mt-rf-name { font-weight: 800; color: var(--ink); font-size: 14px; margin-bottom: 8px; }
.mt-rf-list { margin: 0; padding-left: 18px; }
.mt-rf-list li { font-size: 12.5px; color: #3d4433; line-height: 1.7; }

.mt-predict-body { padding: 4px 14px 14px; }
.mt-draft-ta { width: 100%; min-height: 150px; margin-top: 10px; box-sizing: border-box; resize: vertical;
  border: 1px solid var(--green-line); border-radius: 10px; padding: 12px 14px; font-size: 13px; line-height: 1.6;
  color: var(--ink); font-family: inherit; background: #fcfdfa; }
.mt-draft-ta:focus { outline: none; border-color: var(--green); background: #fff; }
.mt-draft-bar { display: flex; align-items: center; gap: 12px; margin-top: 10px; flex-wrap: wrap; }
.mt-draft-btn { background: var(--green); color: #fff; border: none; border-radius: 8px; padding: 9px 20px;
  font-size: 13px; font-weight: 600; cursor: pointer; }
.mt-draft-btn:hover { background: var(--green-d); }
.mt-draft-btn:disabled { opacity: .6; cursor: default; }
.mt-draft-saved { font-size: 12px; color: var(--green-d); font-weight: 600; }
.mt-draft-saved.mt-draft-empty { color: var(--muted); font-weight: 400; }
.mt-draft-status { font-size: 12px; color: var(--muted); }
.mt-draft-status.ok { color: var(--green-d); font-weight: 600; }
.mt-draft-status.err { color: #b3401f; font-weight: 600; }
.mt-draft-hint { font-size: 11.5px; color: var(--muted); margin-top: 8px; }

@media (max-width: 820px) { .mt-rf-cards { grid-template-columns: 1fr; } }

/* ===== 竞品雷达 双板块整行 (cr-) ===== */
.cr-top { display: flex; flex-direction: column; gap: 6px; margin-bottom: 16px; }
.cr-src { align-self: flex-start; font-size: 12.5px; font-weight: 600; color: var(--green-d);
  background: var(--green-l); border: 1px solid var(--green-line); border-radius: 8px; padding: 6px 12px; text-decoration: none; }
.cr-src:hover { background: #fff; border-color: var(--green); }
.cr-note { font-size: 12px; color: var(--muted); line-height: 1.6; }

.cr-block { margin-bottom: 22px; }
.cr-block-title { font-size: 16px; font-weight: 800; color: var(--ink); padding: 8px 0 4px;
  border-bottom: 2px solid var(--green); margin-bottom: 4px; }
.cr-block-note { font-size: 12px; color: var(--muted); line-height: 1.6; margin-bottom: 12px; }

.cr-row { border: 1px solid var(--green-line); border-radius: 12px; background: #fff;
  box-shadow: var(--shadow); margin-bottom: 14px; overflow: hidden; }
.cr-row-head { background: var(--green); color: #fff; font-weight: 800; font-size: 14px; padding: 10px 16px;
  cursor: pointer; user-select: none; list-style: none; display: flex; align-items: center; gap: 8px; }
.cr-row-head::-webkit-details-marker { display: none; }
.cr-row-head::before { content: '▸'; font-size: 11px; transition: transform .15s ease; }
.cr-row[open] > .cr-row-head::before { transform: rotate(90deg); }
.cr-cols { display: grid; grid-template-columns: 1fr 1fr; gap: 0; }
.cr-col { padding: 12px 16px; }
.cr-col:first-child { border-right: 1px solid var(--green-line); }
.cr-cap { font-size: 13px; font-weight: 700; margin-bottom: 8px; }
.cr-cap-g { color: var(--green-d); }
.cr-cap-i { color: #a8792a; }
.cr-cap-p { color: var(--green-d); padding: 0 16px; }
.cr-ul { margin: 0; padding-left: 18px; }
.cr-ul li { font-size: 12.5px; color: #3d4433; line-height: 1.7; margin-bottom: 5px; }
.cr-empty { font-size: 12px; color: var(--muted); font-style: italic; padding: 2px 0; }

.cr-prods { border-top: 1px solid var(--green-line); padding: 12px 0; background: #fafbf7; }
.cr-prod-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; padding: 4px 16px 0; }
.cr-prod { border: 1px solid var(--green-line); border-radius: 8px; background: #fff; padding: 8px 12px; }
.cr-prod-h { display: flex; align-items: center; gap: 8px; margin-bottom: 4px; }
.cr-prod-name { font-weight: 700; font-size: 12.5px; color: var(--ink); }
.cr-prod-trend { font-size: 11px; font-weight: 600; color: var(--green-d); background: var(--green-l);
  border-radius: 6px; padding: 2px 8px; }
.cr-prod-note { font-size: 12px; color: #3d4433; line-height: 1.6; }

.cr-rf { padding: 12px 16px; }
.cr-rf.cr-ff { border-right: 1px solid var(--green-line); }
.cr-rf-head { font-size: 13.5px; font-weight: 800; margin-bottom: 10px; }
.cr-ff .cr-rf-head { color: #b3401f; }
.cr-rb .cr-rf-head { color: #2f5a8a; }
.cr-rf-part { margin-bottom: 10px; }
.cr-rf-lbl { display: inline-block; font-size: 11px; font-weight: 700; color: #fff;
  background: var(--muted); border-radius: 6px; padding: 2px 8px; margin-bottom: 4px; }
.cr-ff .cr-rf-lbl { background: #c06a4a; }
.cr-rb .cr-rf-lbl { background: #5a83ad; }

@media (max-width: 900px) {
  .cr-cols { grid-template-columns: 1fr; }
  .cr-col:first-child { border-right: none; border-bottom: 1px solid var(--green-line); }
  .cr-prod-grid { grid-template-columns: 1fr; }
  .cr-rf.cr-ff { border-right: none; border-bottom: 1px solid var(--green-line); }
}

/* ===== 所有信息源 (src-) ===== */
.nav-sources { margin-top: 4px; }
.src-note { font-size: 12.5px; color: var(--muted); line-height: 1.6; margin-bottom: 16px; }
.src-group { margin-bottom: 20px; }
.src-group-t { font-size: 14px; font-weight: 800; color: var(--ink); padding: 6px 0 8px;
  border-bottom: 2px solid var(--green); margin-bottom: 10px; }
.src-card { border: 1px solid var(--green-line); border-radius: 10px; background: #fff;
  box-shadow: var(--shadow); padding: 12px 16px; margin-bottom: 10px; }
.src-card-h { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; }
.src-type { font-size: 11px; font-weight: 700; color: #fff; background: var(--green);
  border-radius: 6px; padding: 2px 9px; white-space: nowrap; }
.src-name { font-size: 13.5px; font-weight: 700; color: var(--green-d); text-decoration: none; }
.src-name:hover { text-decoration: underline; }
.src-nolink { color: var(--ink); cursor: default; }
.src-feeds { font-size: 12px; color: var(--muted); line-height: 1.6; margin-top: 6px; }

/* ===== 当前业务聚焦 (bf-) ===== */
.bf-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 14px; margin-bottom: 6px; }
.bf-card { border: 1px solid var(--green-line); border-radius: 12px; background: #fff;
  box-shadow: var(--shadow); padding: 14px 16px; }
.bf-card-t { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 800;
  color: var(--green-d); padding-bottom: 10px; margin-bottom: 10px;
  border-bottom: 2px solid var(--green-line); }
.bf-ico { font-size: 16px; }
.bf-item { display: flex; gap: 8px; align-items: flex-start; font-size: 12.8px;
  color: var(--ink); line-height: 1.65; padding: 5px 0; }
.bf-dot { color: var(--green); font-weight: 800; flex-shrink: 0; }
.bf-link { color: var(--ink); text-decoration: none; border-bottom: 1px dashed var(--green-line); }
.bf-link:hover { color: var(--green-d); border-bottom-color: var(--green); }
.bf-src { font-size: 11px; color: var(--green); font-weight: 700; margin-left: 6px; white-space: nowrap; }
@media (max-width: 900px) {
  .bf-grid { grid-template-columns: 1fr; }
}

/* ===== Joe 的关键信息（v1.29.0） ===== */
.joe-list { display: flex; flex-direction: column; gap: 12px; }
.joe-card { border: 1px solid var(--green-line); border-left: 4px solid var(--warn);
  border-radius: 12px; background: #fff; box-shadow: var(--shadow); padding: 14px 16px; }
.joe-occasion { display: flex; align-items: center; gap: 8px; font-size: 14px; font-weight: 800;
  color: var(--green-d); padding-bottom: 10px; margin-bottom: 8px;
  border-bottom: 2px solid var(--green-line); }
.joe-ico { font-size: 15px; }
.joe-date { font-size: 12px; font-weight: 600; color: var(--muted); margin-left: auto; }
.joe-point { display: flex; gap: 8px; align-items: flex-start; font-size: 13.2px;
  color: var(--ink); line-height: 1.7; padding: 5px 0; }
.joe-dot { color: var(--warn); font-weight: 800; flex-shrink: 0; }

/* ===== 区域战况：左右两栏 + 分月折叠（v1.13.0） ===== */
.regions-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.region-col { background: var(--card); border: 1px solid var(--green-line); border-radius: var(--radius); padding: 16px 18px; box-shadow: var(--shadow); }
.region-head { display: flex; align-items: center; gap: 8px; }
.region-flag { font-size: 22px; }
.region-name { font-size: 17px; font-weight: 800; color: var(--green-d); }
.region-src { font-size: 12px; color: var(--muted); margin: 4px 0 12px; }
.rg-doc { color: var(--green); font-weight: 700; text-decoration: none; }
.rg-doc:hover { color: var(--green-d); text-decoration: underline; }
.rg-month { border: 1px solid var(--green-line); border-radius: 10px; margin-bottom: 10px; overflow: hidden; background: var(--green-l); }
.rg-month[open] { background: #fff; }
.rg-msum { list-style: none; cursor: pointer; padding: 10px 12px; font-weight: 700; color: var(--ink); display: flex; align-items: center; gap: 8px; user-select: none; }
.rg-msum::-webkit-details-marker { display: none; }
.rg-msum::before { content: '▸'; color: var(--green); font-size: 12px; transition: transform .15s; }
.rg-month[open] .rg-msum::before { transform: rotate(90deg); }
.rg-mtag { font-size: 11px; font-weight: 700; color: var(--warn); border: 1px solid var(--warn); border-radius: 6px; padding: 0 6px; }
.rg-mcount { margin-left: auto; font-size: 11px; color: var(--muted); font-weight: 600; }
.rg-list { margin: 0; padding: 4px 14px 12px 30px; }
.rg-item { font-size: 13px; line-height: 1.7; color: var(--ink); margin-bottom: 8px; }
.rg-item.rg-dim { opacity: .32; }
.rg-src { font-size: 11px; color: var(--green); font-weight: 700; text-decoration: none; white-space: nowrap; margin-left: 4px; }
.rg-src:hover { color: var(--green-d); text-decoration: underline; }
/* 经营判断卡（v1.33.0）：状态徽标 + 判断卡 + 归因/改进/洞察 + 来源 */
.rg-status { font-size: 11px; font-weight: 800; border-radius: 6px; padding: 1px 7px; letter-spacing: .5px; }
.rg-status.done { color: #3f6f2a; background: #e6f2dd; border: 1px solid #b8d79c; }
.rg-status.part { color: #a06a12; background: #fbf1dc; border: 1px solid #e6cd94; }
.rg-status.miss { color: #b23b3b; background: #fbe4e4; border: 1px solid #e6a3a3; }
.rg-status.pending { color: #6b7280; background: #eef0ee; border: 1px solid #cdd3cb; }
.rg-verdict { margin: 6px 14px 4px 14px; padding: 10px 12px; border-radius: 8px; background: #f7f9f3;
  border-left: 4px solid var(--green-line); font-size: 12.5px; line-height: 1.65; color: var(--ink); }
.rg-verdict.done { border-left-color: #6f9a48; background: #f1f7ea; }
.rg-verdict.part { border-left-color: var(--warn); background: #fbf6ea; }
.rg-verdict.miss { border-left-color: #c25656; background: #fbf0f0; }
.rg-verdict.pending { border-left-color: #b7bfb2; background: #f4f5f3; }
.rg-metrics { font-variant-numeric: tabular-nums; font-weight: 800; color: var(--green-d);
  font-size: 12.5px; margin-bottom: 5px; letter-spacing: .2px; }
.rg-verdict.miss .rg-metrics { color: #b23b3b; }
.rg-verdict.part .rg-metrics { color: #a06a12; }
.rg-verdict.pending .rg-metrics { color: #6b7280; }
.rg-attr, .rg-improve, .rg-insight { margin-top: 4px; }
.rg-attr b, .rg-improve b { color: var(--ink); }
.rg-insight { color: #4a5340; }
.rg-ai-tag { display: inline-block; font-size: 10px; font-weight: 800; color: #6a5cbf;
  background: #eeeafb; border: 1px solid #cfc6f0; border-radius: 5px; padding: 0 5px; margin-left: 4px; letter-spacing: .3px; }
.rg-sess { margin: 4px 14px 2px 14px; font-size: 11.5px; color: var(--muted); font-weight: 600; }
.rg-sess-lnk { color: var(--green); font-weight: 700; text-decoration: none; margin-right: 8px; white-space: nowrap; }
.rg-sess-lnk:hover { color: var(--green-d); text-decoration: underline; }

/* ── 生意归因 (attribution) ── */
.atr-month { border: 1px solid var(--green-line); border-radius: 10px; background: #fff; margin-bottom: 12px; overflow: hidden; }
.atr-summary { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 10px;
  padding: 12px 16px; background: var(--green-l); border-bottom: 1px solid transparent; user-select: none; }
.atr-summary::-webkit-details-marker { display: none; }
.atr-month[open] .atr-summary { border-bottom-color: var(--green-line); }
.atr-summary::before { content: '▸'; color: var(--green); font-size: 14px; transition: transform .15s; }
.atr-month[open] .atr-summary::before { transform: rotate(90deg); }
.atr-mo { font-size: 17px; font-weight: 800; color: var(--ink); }
.atr-sess { margin-left: auto; font-size: 13px; color: var(--green); font-weight: 700; text-decoration: none; white-space: nowrap; }
.atr-sess:hover { color: var(--green-d); text-decoration: underline; }
.atr-body { padding: 14px 16px; }
.atr-metrics { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; margin-bottom: 12px; }
@media (max-width: 900px) { .atr-metrics { grid-template-columns: 1fr; } }
.atr-metric { border: 1px solid #e6ece0; border-radius: 8px; padding: 10px 12px; background: #fafbf8; min-width: 0; }
.atr-metric-head { display: flex; align-items: baseline; gap: 8px; margin-bottom: 7px; flex-wrap: wrap; }
.atr-mname { font-size: 14.5px; font-weight: 800; color: var(--ink); }
.atr-rate { font-variant-numeric: tabular-nums; font-weight: 800; font-size: 15.5px; letter-spacing: .2px; }
.atr-rate.atr-ok { color: #5f8a3a; }
.atr-rate.atr-miss { color: #c25656; }
.atr-diff { font-size: 12.5px; color: var(--muted); font-weight: 600; }
.atr-line { display: flex; gap: 6px; margin-top: 6px; align-items: flex-start; }
.atr-lbl { flex: 0 0 auto; font-size: 12px; font-weight: 800; padding: 2px 7px; border-radius: 5px; white-space: nowrap; margin-top: 2px; }
.atr-lbl-up { color: #5f8a3a; background: #eef6e6; border: 1px solid #cfe3bc; }
.atr-lbl-down { color: #c25656; background: #fbeded; border: 1px solid #ecc9c9; }
.atr-tags { display: flex; flex-direction: column; gap: 5px; min-width: 0; width: 100%; }
.atr-tag { font-size: 12.5px; font-weight: 700; border-radius: 5px; padding: 3px 8px; line-height: 1.55;
  display: flex; align-items: baseline; gap: 6px; width: 100%; box-sizing: border-box; }
.atr-tag.up { color: #4a6b2c; background: #f1f7ea; border: 1px solid #d5e6c4; }
.atr-tag.down { color: #a83e3e; background: #fbf1f1; border: 1px solid #edd0d0; }
.atr-r { flex: 0 0 auto; white-space: nowrap; font-size: 13px; }
.atr-note { font-size: 11.5px; font-weight: 500; color: var(--muted); flex: 1 1 auto; min-width: 0; white-space: normal; word-break: break-word; line-height: 1.5; }
.atr-tag.up .atr-note { color: #6f8a52; }
.atr-tag.down .atr-note { color: #b57a7a; }
.atr-reason { font-size: 14px; line-height: 1.75; color: var(--ink); background: #f7f9f3;
  border-left: 4px solid var(--green-line); border-radius: 8px; padding: 11px 14px; margin-bottom: 10px; }
.atr-reason-h { display: block; font-weight: 800; color: var(--green-d); font-size: 13.5px; margin-bottom: 4px; }
.atr-insight { font-size: 14px; line-height: 1.75; color: #4a5340; background: #f3f1fb;
  border-left: 4px solid #cfc6f0; border-radius: 8px; padding: 11px 14px; }
.atr-foot-note { border-top: 1px dashed var(--green-line); margin-top: 4px; }

/* ── 历年斋月沉淀 (ramadan) ── */
.rm-intro { background: var(--green-l); border: 1px solid var(--green-line); border-radius: 12px; padding: 14px 16px; margin-bottom: 16px; }
.rm-note { font-size: 12.5px; color: var(--muted); line-height: 1.7; margin-bottom: 12px; }
.rm-legend { display: grid; grid-template-columns: repeat(3, 1fr); gap: 10px; }
.rm-yhead { background: #fff; border: 1px solid var(--green-line); border-left: 4px solid var(--green); border-radius: 9px; padding: 8px 12px; }
.rm-yhead.rm-plan { border-left-color: var(--warn); }
.rm-yhead-t { font-weight: 800; color: var(--ink); font-size: 14px; }
.rm-yhead-p { font-size: 11.5px; color: var(--muted); margin-top: 2px; }
.rm-ystat { display: inline-block; font-size: 10px; font-weight: 800; border-radius: 5px; padding: 0 6px; margin-left: 6px; vertical-align: middle; letter-spacing: .3px; }
.rm-s-done { color: var(--green-d); background: var(--green-l); border: 1px solid var(--green-line); }
.rm-s-plan { color: var(--warn); background: #fbf3e2; border: 1px solid #ecd9b0; }
.rm-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.rm-col { border: 1px solid var(--green-line); border-radius: 10px; padding: 10px 12px; background: #fcfdfb; border-top: 3px solid var(--green); }
.rm-col.rm-plan { border-top-color: var(--warn); background: #fffdf8; }
.rm-col-h { font-weight: 800; color: var(--ink); font-size: 13px; margin-bottom: 8px; padding-bottom: 6px; border-bottom: 1px dashed var(--green-line); }
.rm-pts { margin: 0; padding-left: 16px; }
.rm-pts li { font-size: 12.5px; color: #3a422f; line-height: 1.65; margin-bottom: 7px; }
.rm-empty { color: var(--muted); font-size: 12.5px; font-style: italic; }
.rm-insight { margin-top: 12px; background: #f5f3fb; border: 1px solid #ddd6f2; border-left: 4px solid #8a7ccf; border-radius: 9px; padding: 10px 13px; font-size: 12.5px; color: #4a4560; line-height: 1.7; }
.rm-takes { display: grid; grid-template-columns: 1fr; gap: 12px; }
.rm-take { background: #f5f3fb; border: 1px solid #ddd6f2; border-left: 4px solid #8a7ccf; border-radius: 10px; padding: 12px 15px; }
.rm-take-t { font-weight: 800; color: var(--ink); font-size: 13.5px; margin-bottom: 5px; }
.rm-take-b { font-size: 12.5px; color: #4a4560; line-height: 1.75; }
@media (max-width: 900px) {
  .rm-grid, .rm-legend { grid-template-columns: 1fr; }
}

@media (max-width: 900px) {
  .regions-2col { grid-template-columns: 1fr; }
}

/* 每日New关注：左右两子面板 + MLBB 链接卡片 + 外部资讯（v1.14.0） */
.daily-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }
.daily-panel { border: 1px solid var(--green-line); border-radius: 12px; background: #fff;
  padding: 16px 16px 14px; box-shadow: var(--shadow); }
.daily-head { display: flex; align-items: center; gap: 8px; font-size: 15px; font-weight: 800;
  color: var(--ink); padding-bottom: 12px; margin-bottom: 12px; border-bottom: 1px solid var(--green-line); }
.daily-ico { font-size: 18px; }
.daily-src-tag { margin-left: auto; font-size: 12px; font-weight: 600; display: inline-flex; align-items: center; gap: 8px; }
.dx-source { color: var(--green); text-decoration: none; font-weight: 700; }
.dx-source:hover { color: var(--green-d); text-decoration: underline; }
.dx-source.dx-nolink { color: var(--muted); font-weight: 600; }
.dx-date { color: var(--muted); font-weight: 600; }

/* MLBB 分组（内部数据 / 外部排行榜） */
.dl-group { margin-bottom: 16px; }
.dl-group:last-child { margin-bottom: 0; }
.dl-group-t { display: flex; align-items: center; gap: 6px; font-size: 12.5px; font-weight: 800;
  color: var(--green-d); letter-spacing: .3px; padding: 0 2px 8px; }
.dl-group-ico { font-size: 14px; }

/* 每日New关注：一个看板三个大模块，纵向堆叠 */
.daily-stack { display: flex; flex-direction: column; gap: 18px; }
.daily-panel-wide { max-width: 900px; }

/* 模块底表（宪法引用处） */
.bt-period { color: var(--green-d); }
.bt-list { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; max-width: 1040px; }
.bt-card { display: flex; gap: 10px; text-decoration: none; color: var(--ink);
  background: var(--green-l); border: 1px solid var(--green-line); border-radius: 8px; padding: 12px 14px; transition: .15s; }
.bt-card:hover { background: #fff; border-color: var(--green); box-shadow: var(--shadow); transform: translateY(-1px); }
.bt-no { flex: 0 0 auto; width: 22px; height: 22px; border-radius: 50%; background: var(--green); color: #fff;
  font-size: 12px; font-weight: 700; display: inline-flex; align-items: center; justify-content: center; }
.bt-body { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.bt-name { font-weight: 700; font-size: 14px; display: flex; align-items: center; flex-wrap: wrap; gap: 6px; }
.bt-role { font-size: 11px; font-weight: 600; color: var(--green-d); background: #fff;
  border: 1px solid var(--green-line); border-radius: 4px; padding: 1px 6px; }
.bt-ro-tag { font-size: 10.5px; font-weight: 700; color: #b23b3b; background: #fbe9e9; border-radius: 4px; padding: 1px 6px; }
.bt-go { color: var(--green); font-weight: 700; }
.bt-detail { font-size: 12.5px; color: var(--muted); line-height: 1.5; }
.bt-card.bt-ro { border-left: 3px solid #b23b3b; }
.bt-note { margin-top: 10px; font-size: 12px; color: var(--muted); line-height: 1.6; max-width: 1040px; }
@media (max-width: 900px) { .bt-list { grid-template-columns: 1fr; } }

/* 分月区域完成情况（占位 + 数据态） */
.rg-empty { max-width: 1040px; background: var(--green-l); border: 1px dashed var(--green-line); border-radius: 8px; padding: 18px 20px; }
.rg-empty-badge { display: inline-block; font-size: 12px; font-weight: 700; color: #fff; background: var(--muted); border-radius: 4px; padding: 2px 10px; }
.rg-empty-txt { margin-top: 10px; font-size: 13px; color: var(--ink); line-height: 1.7; }
.rg-empty-src { margin-top: 8px; font-size: 12px; color: var(--muted); }
/* 区域完成·国家×月份热力矩阵（纯 CSS 指标切换） */
.rgm { width: 100%; }
.rgm-radio { position: absolute; opacity: 0; width: 0; height: 0; }
.rgm-tabs { display: flex; gap: 6px; margin-bottom: 12px; flex-wrap: wrap; }
.rgm-tab { cursor: pointer; font-size: 12.5px; font-weight: 600; padding: 5px 14px; border: 1px solid var(--green-line); border-radius: 6px; color: var(--green-d); background: #fff; }
.rgm-tab:hover { background: var(--green-l); }
#rgm-DAU:checked ~ .rgm-tabs label[for="rgm-DAU"],
#rgm-new:checked ~ .rgm-tabs label[for="rgm-new"],
#rgm-reflow:checked ~ .rgm-tabs label[for="rgm-reflow"] { background: var(--green); color: #fff; border-color: var(--green); }
.rgm-matrix { display: none; }
#rgm-DAU:checked ~ .rgm-m-DAU,
#rgm-new:checked ~ .rgm-m-new,
#rgm-reflow:checked ~ .rgm-m-reflow { display: block; }
.rgm-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }
.rgm-table { border-collapse: collapse; width: 100%; font-size: 12.5px; }
.rgm-table th { color: var(--muted); font-weight: 600; padding: 5px 8px; text-align: center; }
.rgm-table th.rgm-cty, .rgm-table td.rgm-cty { text-align: left; white-space: nowrap; position: sticky; left: 0; background: #fff; z-index: 1; }
.rgm-cell { text-align: center; padding: 9px 12px; font-variant-numeric: tabular-nums; border: 1px solid #fff; line-height: 1.35; min-width: 60px; }
.rgm-pct { display: block; font-weight: 700; color: var(--ink); font-size: 13.5px; }
.rgm-abs { display: block; font-size: 11px; color: var(--muted); margin-top: 4px; }
.rgm-yoy { display: inline-block; margin-top: 5px; font-size: 10px; font-weight: 700; border-radius: 3px; padding: 0 5px; line-height: 1.5; }
.rgm-yoy-up { color: #2f6b2f; background: #dceccd; }
.rgm-yoy-dn { color: #b23b3b; background: #fbe0e0; }
.rgm-blank { color: #c9cec0; background: #fafbf8; font-weight: 400; }
.rgm-grp td { font-weight: 700; color: var(--green-d); background: var(--green-l); padding: 4px 8px; font-size: 12px; }
/* 全球行 + 组内小计行 */
.rgm-global-row td { border-top: 2px solid var(--green); border-bottom: 2px solid var(--green-line); }
.rgm-global-row td.rgm-cty { font-weight: 800; color: var(--green-d); }
.rgm-global-row .rgm-pct { font-weight: 800; }
.rgm-sub-row td.rgm-cty { font-weight: 700; color: var(--green-d); font-size: 12px; }
.rgm-sub-row .rgm-pct { font-weight: 800; }
.rgm-sub-row td:not(.rgm-cty):not(.rgm-blank) { box-shadow: inset 0 0 0 1px rgba(91,122,58,.25); }
/* 右侧三指标趋势 sparkline 列 */
.rgm-trend { padding: 3px 6px; text-align: center; vertical-align: middle; white-space: nowrap; }
.rgm-trend-h { color: var(--muted); font-weight: 600; }
.rgm-trend-first { border-left: 2px solid var(--green-line); }
.rgm-spark { width: 104px; height: 32px; display: inline-block; vertical-align: middle; }
.rgm-spark polyline { fill: none; stroke-width: 1.6; vector-effect: non-scaling-stroke; stroke-linejoin: round; stroke-linecap: round; }
.rgm-sp-DAU polyline { stroke: #47612c; } .rgm-sp-DAU circle { fill: #47612c; }
.rgm-sp-new polyline { stroke: #5b7a3a; } .rgm-sp-new circle { fill: #5b7a3a; }
.rgm-sp-reflow polyline { stroke: #c99a3a; } .rgm-sp-reflow circle { fill: #c99a3a; }
.rgm-spark polyline.rgm-sp25 { stroke: #a9b3a0; stroke-width: 1.2; stroke-dasharray: 3 2; opacity: .85; }
.rgm-trend-na { color: #c9cec0; font-size: 12px; }
.rgm-lg-dash { border-bottom: 1.5px dashed #a9b3a0; padding-bottom: 1px; }
.rgm-c1 { background: #fbe9e9; } .rgm-c2 { background: #fdf3e3; } .rgm-c3 { background: #eef2e6; } .rgm-c4 { background: #bcd99a; }
.rgm-legend { margin-top: 10px; font-size: 11.5px; color: var(--muted); display: flex; gap: 6px; align-items: center; flex-wrap: wrap; }
.rgm-legend span { padding: 1px 8px; border-radius: 3px; color: var(--ink); }

/* 各国 DAU×新增×回流 关联诊断 */
.rgd { margin-top: 16px; }
.rgd-list li { display: flex; align-items: flex-start; gap: 8px; flex-wrap: wrap; }
.rgd-tag { flex: 0 0 auto; font-size: 11px; font-weight: 700; color: var(--ink); border-radius: 4px; padding: 1px 8px; white-space: nowrap; }

/* 全年目标合并表：目标盘 + 截止上月进度 */
.tp-cap { font-size: 12px; color: var(--muted); margin-bottom: 8px; }
.tp-cap b { color: var(--green-d); }
.tg-merged th, .tg-merged td { font-size: 12.5px; }
.tg-merged td.biz-abs, .tg-merged td.biz-rate { text-align: right; font-variant-numeric: tabular-nums; }
.tg-merged td.tg-cmp { white-space: nowrap; }

/* 全年目标·归因分析 */
.tg-attrib { margin-top: 14px; max-width: 1040px; background: var(--green-l); border: 1px solid var(--green-line); border-radius: 8px; padding: 12px 16px; }
.tg-attrib-h { font-weight: 700; font-size: 13px; color: var(--green-d); margin-bottom: 8px; }
.tg-attrib-list { margin: 0 0 6px; padding-left: 20px; }
.tg-attrib-list li { font-size: 13px; line-height: 1.75; color: var(--ink); margin-bottom: 4px; }
.tg-attrib-list .biz-ok { font-weight: 700; }
.tg-attrib-list .biz-miss { font-weight: 700; }

/* 对源表校验状态徽章 */
.vbadge { font-size: 11px; font-weight: 700; border-radius: 4px; padding: 2px 8px; margin-right: 8px; white-space: nowrap; }
.vbadge.vb-ok { color: var(--green-d); background: var(--green-l); border: 1px solid var(--green-line); }
.vbadge.vb-warn { color: #b23b3b; background: #fbe9e9; border: 1px solid #f2c9c9; }

/* MLBB数据：整块固定间距/宽度，不随视口变宽而拉伸 */
.dl-fixed { max-width: 1040px; }

/* 26年生意分月达成 */
.biz-group .dl-group-t { align-items: baseline; position: relative; }
.biz-meta-inline { position: absolute; left: 496px; top: 50%; transform: translateY(-50%); white-space: nowrap; }
.biz-meta-inline .tg-docs { margin-left: 0; }
.biz-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; }
.biz-grid-3 { grid-template-columns: repeat(3, 1fr); }
.biz-grid-stack { display: flex; flex-direction: column; gap: 18px; }
.biz-refresh { font-size: 11px; color: var(--muted); font-weight: 600; white-space: nowrap; }
.biz-abs { color: var(--ink); font-variant-numeric: tabular-nums; }
.biz-actual { font-weight: 700; }
.biz-diff, .biz-yoy { font-weight: 700; }
.biz-metric { min-width: 0; }
.biz-metric-t { font-size: 12px; font-weight: 800; color: var(--green-d); padding: 0 2px 6px; }
.biz-metric-row { display: flex; align-items: stretch; gap: 16px; }
.biz-metric-table-wrap { flex: 0 0 480px; max-width: 480px; min-width: 0; overflow-x: auto; }
.biz-metric-chart { flex: 1 1 auto; min-width: 500px; max-width: 820px; display: flex; align-items: stretch; gap: 8px;
  border: 1px solid var(--green-line); border-radius: 8px; background: #fafbf8; padding: 6px 8px; }
.biz-chart-wrap { position: relative; flex: 1 1 0; min-width: 0; overflow: visible; }
.biz-chart-legend-side { flex: 0 0 82px; display: flex; flex-direction: column; justify-content: center;
  gap: 8px; font-size: 10.5px; color: var(--muted); font-weight: 600; border-left: 1px dashed var(--green-line);
  padding-left: 8px; }
@media (max-width: 1000px) {
  .biz-metric-row { flex-direction: column; }
  .biz-metric-table-wrap { flex: 0 0 auto; max-width: 100%; }
  .biz-metric-chart { flex: 0 0 auto; width: 100%; min-width: 0; min-height: 260px; }
}
.biz-table { width: 100%; border-collapse: collapse; font-size: 12px; white-space: nowrap; }
.biz-table th { background: var(--green-l); color: var(--green-d); font-weight: 800; font-size: 11px;
  text-align: right; padding: 5px 8px; border-bottom: 1px solid var(--green-line); }
.biz-table th:first-child { text-align: left; }
.biz-table td { padding: 6px 8px; text-align: right; border-bottom: 1px solid var(--green-line);
  font-variant-numeric: tabular-nums; }
.biz-table tr:last-child td { border-bottom: none; }
.biz-m { text-align: left !important; font-weight: 700; color: var(--ink); }
.biz-actual { font-weight: 700; color: var(--ink); }
.biz-rate { font-weight: 800; }
.biz-rate.biz-ok { color: var(--green); }
.biz-rate.biz-miss { color: var(--warn); }
.biz-rate-link { color: inherit; text-decoration: none; border-bottom: 1px dashed currentColor; cursor: pointer;
  display: inline-flex; align-items: baseline; gap: 2px; }
.biz-rate-link:hover { opacity: .75; }
.biz-goto-ico { font-size: 10px; font-weight: 700; }

/* 生意归因·被跳转定位时的高亮闪烁 */
.atr-jump-flash { animation: atr-flash 1.6s ease-out; }
@keyframes atr-flash {
  0% { background: #fff3cf; box-shadow: 0 0 0 2px #f0c96b; }
  100% { background: transparent; box-shadow: none; }
}
@media (max-width: 1100px) { .biz-grid-3 { grid-template-columns: 1fr; } }
@media (max-width: 720px) { .biz-grid { grid-template-columns: 1fr; } }

/* 分月达成三线曲线图：26年目标 / 26年实际(突出) / 25年实际 */
.bcl-item { display: flex; align-items: center; gap: 5px; }
.bcl-sw { display: inline-block; width: 12px; height: 3px; border-radius: 2px; flex: 0 0 auto; }
.bcl-target { background: repeating-linear-gradient(90deg, var(--muted) 0 4px, transparent 4px 6px); }
.bcl-y26 { background: var(--green); height: 4px; }
.bcl-y25 { background: repeating-linear-gradient(90deg, #9b7fc0 0 4px, transparent 4px 7px); }
.biz-chart-svg { width: 100%; height: 100%; min-height: 220px; display: block; }
.bc-grid { stroke: var(--green-line); stroke-width: 1; opacity: .6; }
.bc-line-target { stroke: var(--muted); stroke-width: 1.4; stroke-dasharray: 4 3; }
.bc-line-y25 { stroke: #9b7fc0; stroke-width: 1.6; stroke-dasharray: 5 3; }
.bc-line-y26 { stroke: var(--green); stroke-width: 2.8; }
.bc-dot-y25 { fill: #9b7fc0; }
.bc-dot-y26 { fill: var(--green-d); stroke: #fff; stroke-width: 1.2; }
.bc-xlabel { font-size: 10px; fill: var(--muted); }
.bc-ylabel { font-size: 11px; fill: var(--muted); font-variant-numeric: tabular-nums; }

/* hover 提示：竖直参考线 + 数值卡片，像飞书表格一样悬浮看数 */
.bc-vline { position: absolute; top: 4px; bottom: 16px; width: 0; border-left: 1px dashed var(--muted);
  opacity: .7; display: none; pointer-events: none; }
.bc-tooltip { position: absolute; top: 4px; display: none; pointer-events: none; z-index: 5;
  background: #fff; border: 1px solid var(--green-line); border-radius: 8px; box-shadow: var(--shadow);
  padding: 7px 10px; font-size: 11px; white-space: nowrap; line-height: 1.7; }
.bc-tt-month { font-weight: 800; color: var(--ink); margin-bottom: 2px; }
.bc-tt-row { display: flex; align-items: center; gap: 6px; color: var(--muted); font-weight: 600; }
.bc-tt-row b { margin-left: auto; color: var(--ink); font-weight: 800; font-variant-numeric: tabular-nums; padding-left: 10px; }
.bc-tt-sw { display: inline-block; width: 8px; height: 8px; border-radius: 50%; flex: 0 0 auto; }
.bc-tt-target { background: var(--muted); }
.bc-tt-y26 { background: var(--green); }
.bc-tt-y25 { background: #9b7fc0; }

/* MLBB 目标速览 */
.tg-group .dl-group-t { align-items: baseline; }
.tg-docs { margin-left: auto; display: inline-flex; gap: 10px; font-weight: 700; }
.tg-doc { font-size: 11px; color: var(--green); text-decoration: none; white-space: nowrap; }
.tg-doc:hover { color: var(--green-d); text-decoration: underline; }
.tg-table { width: 100%; border-collapse: collapse; font-size: 12.5px; }
.tg-table th { background: var(--green-l); color: var(--green-d); font-weight: 800; font-size: 11.5px;
  text-align: right; padding: 6px 10px; border-bottom: 1px solid var(--green-line); }
.tg-table th:first-child { text-align: left; border-top-left-radius: 8px; }
.tg-table th:last-child { border-top-right-radius: 8px; }
.tg-table td { padding: 7px 10px; text-align: right; border-bottom: 1px solid var(--green-line);
  font-variant-numeric: tabular-nums; }
.tg-table tr:last-child td { border-bottom: none; }
.tg-metric { text-align: left !important; font-weight: 700; color: var(--ink); }
.tg-y26 { font-weight: 800; color: var(--ink); }
.tg-yoy { color: var(--green); font-weight: 700; }
.tg-y25 { color: var(--muted); }
.tg-note { font-size: 11px; color: var(--muted); line-height: 1.5; padding: 8px 2px 0; }

/* MLBB 链接卡片 */
.dl-list { display: flex; flex-direction: column; gap: 12px; }
.dl-card { display: flex; align-items: center; gap: 14px; text-decoration: none;
  border: 1px solid var(--green-line); border-radius: 10px; background: var(--green-l);
  padding: 14px 16px; transition: all .15s ease; }
.dl-card:hover { background: #fff; border-color: var(--green); box-shadow: var(--shadow); transform: translateY(-1px); }
.dl-ico { font-size: 26px; line-height: 1; }
.dl-main { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.dl-name { font-size: 15px; font-weight: 800; color: var(--ink); }
.dl-go { font-size: 11px; color: var(--green); font-weight: 700; margin-left: 4px; }
.dl-desc { font-size: 12.5px; color: var(--muted); }
.dl-url { font-size: 11px; color: var(--green-d); opacity: .7; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }

/* 外部资讯 / 语鲸日报 */
.dx-list { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; gap: 10px; }
.dx-item { font-size: 13.5px; line-height: 1.65; color: var(--ink); padding-left: 16px; position: relative; }
.dx-item::before { content: '▸'; position: absolute; left: 0; color: var(--green); }
.dx-src { font-size: 11px; color: var(--green); font-weight: 700; text-decoration: none; white-space: nowrap; margin-left: 4px; }
.dx-src:hover { color: var(--green-d); text-decoration: underline; }
.dx-empty { font-size: 13px; color: var(--muted); background: var(--green-l); border: 1px dashed var(--green-line);
  border-radius: 10px; padding: 22px 16px; text-align: center; }
@media (max-width: 900px) {
  .daily-2col { grid-template-columns: 1fr; }
}

/* ── 一级标题可折叠 section（v1.20.0） ── */
.bsec { border: 1px solid var(--green-line); border-radius: 12px; background: #fff;
  box-shadow: var(--shadow); margin-bottom: 16px; overflow: hidden; }
.bsec-h { display: flex; align-items: center; gap: 8px; padding: 12px 16px; cursor: pointer;
  font-size: 15px; font-weight: 800; color: var(--ink); border-bottom: 1px solid var(--green-line);
  user-select: none; scroll-margin-top: 8px; }
.bsec-h:hover { background: var(--green-l); }
.bsec-caret { font-size: 11px; color: var(--green); transition: transform .15s ease; transform: rotate(90deg); }
.bsec.collapsed .bsec-caret { transform: rotate(0deg); }
.bsec.collapsed .bsec-h { border-bottom: none; }
.bsec-ico { font-size: 16px; }
.bsec-extra { margin-left: auto; font-weight: 600; font-size: 12px; display: inline-flex;
  gap: 8px; align-items: center; flex-wrap: wrap; justify-content: flex-end; }
.bsec-b { padding: 16px; }
.bsec.collapsed .bsec-b { display: none; }
/* 网格/堆叠容器内的 section 不叠加下边距（用容器 gap） */
.regions-2col > .bsec, .daily-stack > .bsec { margin-bottom: 0; }
/* 战情总览：本月交付 | Joe 的关键信息 并排两列 */
.ov-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 16px; align-items: start; margin-bottom: 16px; }
.ov-2col > .bsec { margin-bottom: 0; }
@media (max-width: 900px) { .ov-2col { grid-template-columns: 1fr; } }

/* ── 左侧专属目录列（像飞书文档大纲：预留一列，内容右移） ── */
.board-body { flex: 1; display: flex; min-height: 0; }
.board-nav { flex-shrink: 0; width: 236px; overflow-y: auto; padding: 16px 12px 40px; display: none; }
.board-nav.show { display: block; }
.board-nav .is-toc { position: static; max-height: none; }
.board-nav .is-toc-h:first-child { color: var(--green-d); }
@media (max-width: 1180px) { .board-nav { display: none !important; } }

/* ── Wency信息库·方向会：发行/产品 二级折叠 + 月份三列表（v1.23.0） ── */
.dir-wrap { display: flex; flex-direction: column; gap: 14px; }
.dir-l2 { border: 1px solid var(--green-line); border-radius: 10px; overflow: hidden; background: #fff; }
.dir-l2-h { background: var(--green-l); color: var(--green-d); font-weight: 800; font-size: 13.5px;
  padding: 9px 14px; cursor: pointer; user-select: none; list-style: none; display: flex; align-items: center; gap: 8px; }
.dir-l2-h::-webkit-details-marker { display: none; }
.dir-l2-h::before { content: '▸'; font-size: 11px; color: var(--green); transition: transform .15s ease; }
.dir-l2[open] > .dir-l2-h::before { transform: rotate(90deg); }
.dir-cnt { margin-left: auto; font-size: 11px; color: var(--muted); font-weight: 600; }
.dir-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.dir-table th { text-align: left; font-size: 11.5px; color: var(--muted); font-weight: 700;
  padding: 8px 12px; border-bottom: 1px solid var(--green-line); background: #fbfcf9; }
.dir-table td { padding: 8px 12px; border-bottom: 1px solid var(--green-line); vertical-align: top; }
.dir-table tr:last-child td { border-bottom: none; }
.dir-m { white-space: nowrap; font-weight: 800; color: var(--ink); width: 76px; }
.dir-c .il-link { margin-bottom: 6px; }
.dir-c .il-link:last-child { margin-bottom: 0; }

/* 区域战况·专题分析模块（v1.27.0） */
.rg-subhead { font-size: 13px; font-weight: 800; color: var(--green-d); margin: 14px 0 8px;
  padding-top: 12px; border-top: 1px dashed var(--green-line); }
.region-col .bsec-b .rg-subhead:first-child, .rg-subhead:first-child { border-top: none; padding-top: 0; }
.rg-subnote { font-size: 11.5px; color: var(--muted); margin: -4px 0 10px; line-height: 1.5; }
.rg-analysis .rg-msum { background: #fbfcf9; }
.rg-asrc { font-size: 11.5px; color: var(--muted); padding: 8px 12px 0; }
.rg-asrc .rg-src { margin-left: 4px; }

/* 区域整体洞察 / 当前生意情况（v1.72） */
.rg-insightgrp .rg-msum { background: #f7faf4; }
.rg-biz .rg-msum { background: #f6f9fb; }
.rg-biz-rows { display: flex; flex-direction: column; gap: 8px; padding: 10px 12px 4px; }
.rg-biz-row { display: flex; gap: 10px; align-items: flex-start; }
.rg-biz-row.rg-dim { opacity: .32; }
.rg-biz-name { flex: 0 0 auto; min-width: 52px; font-size: 12px; font-weight: 800; color: #2f6db3;
  background: #eaf2fb; border-radius: 5px; padding: 3px 8px; text-align: center; }
.rg-biz-text { flex: 1; font-size: 12.5px; line-height: 1.6; color: var(--ink); }

/* 所有信息源·紧凑单行列表（v1.28.1，按时间倒序排列） */
.src-rows { display: flex; flex-direction: column; }
.src-row { display: flex; align-items: center; gap: 10px; padding: 8px 10px; text-decoration: none;
  border-bottom: 1px solid var(--green-line); border-radius: 6px; }
.src-row:last-child { border-bottom: none; }
.src-row:hover { background: var(--green-l); }
.src-row .src-type { flex-shrink: 0; }
.src-rowname { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;
  color: var(--ink); font-size: 13px; }
.src-row:hover .src-rowname { color: var(--green-d); }
.src-open { flex-shrink: 0; color: var(--green); font-weight: 700; font-size: 12px; }

/* ── 节点日历 ── */
.nd-intro { font-size: 13px; color: var(--ink); line-height: 1.7; margin: 4px 2px 12px; }
.nd-intro .nd-est { color: var(--warn); }
.nd-intro a { color: var(--green-d); font-weight: 700; }
.nd-legend { display: flex; flex-wrap: wrap; gap: 14px; margin: 0 2px 14px; padding: 10px 12px;
  background: #f7f9f3; border: 1px solid var(--green-line); border-radius: 8px; font-size: 12px; color: var(--muted); }
.nd-lg { display: inline-flex; align-items: center; gap: 5px; }
.nd-sw { width: 14px; height: 14px; border-radius: 4px; display: inline-block; border: 1px solid #0001; }
.nd-sw.rstart { background: #e7c66a; }
.nd-sw.reid { background: #d99a5b; }
.nd-sw.rin { background: #f6ecc9; }
.nd-sw.task { background: #cfe0b4; }
.nd-sw.strat { background: #d9d0f2; }
.nd-sw.ms { background: #ff6b6b; }

.nd-tabs { display: flex; flex-wrap: wrap; gap: 8px; margin: 0 2px 14px; }
.nd-tab { border: 1px solid var(--green-line); background: var(--card); color: var(--ink);
  padding: 7px 16px; border-radius: 999px; font-size: 13px; font-weight: 700; cursor: pointer; transition: .15s; }
.nd-tab:hover { border-color: var(--green); color: var(--green-d); }
.nd-tab.active { background: var(--green); color: #fff; border-color: var(--green); }

.nd-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(210px, 1fr)); gap: 14px; margin: 0 2px 18px; }
.nd-month { background: var(--card); border: 1px solid var(--green-line); border-radius: 10px; padding: 10px 10px 12px; box-shadow: var(--shadow); }
.nd-mtitle { font-weight: 800; color: var(--green-d); font-size: 14px; margin: 0 2px 8px; }
.nd-wk { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; margin-bottom: 4px; }
.nd-wk span { text-align: center; font-size: 10px; color: var(--muted); font-weight: 700; }
.nd-days { display: grid; grid-template-columns: repeat(7, 1fr); gap: 2px; }
.nd-day { position: relative; aspect-ratio: 1 / 1; display: flex; align-items: center; justify-content: center;
  font-size: 11px; color: var(--ink); border-radius: 6px; background: #fafcf6; }
.nd-day b { font-weight: 600; }
.nd-day.nd-blank { background: transparent; }
.nd-day.rin { background: #f6ecc9; }
.nd-day.rstart { background: #e7c66a; color: #5a4406; font-weight: 800; }
.nd-day.reid { background: #d99a5b; color: #4d2c0c; font-weight: 800; }
.nd-day.has-task { box-shadow: inset 0 0 0 1.5px #a9c47f; }
.nd-day.has-strat { outline: 2px solid #b9a8ec; outline-offset: -2px; }
.nd-day.has-milestone { outline: 2.2px solid #e74c3c; outline-offset: -2px; box-shadow: inset 0 0 0 1.2px #ff8a7a; background: #fff3f0; }
.nd-day.has-milestone.rin, .nd-day.has-milestone.rstart, .nd-day.has-milestone.reid { outline-color: #c0392b; }
.nd-day.nd-today { box-shadow: inset 0 0 0 2px var(--green); font-weight: 800; }
.nd-day .nd-cnt { position: absolute; top: 1px; right: 1px; font-size: 8px; font-style: normal; font-weight: 800;
  min-width: 12px; height: 12px; line-height: 12px; text-align: center; background: var(--green); color: #fff; border-radius: 6px; padding: 0 2px; }
.nd-day .nd-rflag { position: absolute; bottom: -1px; left: 1px; font-size: 8px; font-style: normal; }
.nd-day .nd-sflag { position: absolute; bottom: -1px; right: 1px; font-size: 8px; font-style: normal; }
.nd-day .nd-msflag { position: absolute; top: 1px; left: 1px; font-size: 8px; font-style: normal; filter: drop-shadow(0 0 1px #fff); }

/* 可点击日期：光标 + 悬浮微抬 + 波纹 + 点击 pop 动画 + 选中态 */
.nd-day.nd-clickable { cursor: pointer; overflow: hidden; transition: transform .12s ease, box-shadow .12s ease; }
.nd-day.nd-clickable:hover { transform: translateY(-1px); box-shadow: 0 3px 8px rgba(60,90,30,.22); z-index: 2; }
.nd-day.nd-active { box-shadow: 0 0 0 2px var(--green), 0 4px 12px rgba(60,90,30,.3); z-index: 3; }
.nd-ripple { position: absolute; border-radius: 50%; background: rgba(90,140,50,.45);
  transform: scale(0); pointer-events: none; animation: nd-ripple .5s ease-out forwards; }
@keyframes nd-ripple { to { transform: scale(1); opacity: 0; } }
.nd-day.nd-pop-anim { animation: nd-pop .28s ease; }
@keyframes nd-pop { 0% { transform: scale(1); } 40% { transform: scale(.86); } 100% { transform: scale(1); } }

/* 当日工作浮窗 */
.nd-daypop { position: fixed; z-index: 9999; opacity: 0; transform: translateY(-4px);
  transition: opacity .14s ease, transform .14s ease; }
.nd-daypop.show { opacity: 1; transform: translateY(0); }
.nd-pop-card { width: 300px; max-width: calc(100vw - 16px); background: var(--card, #fff);
  border: 1px solid var(--green-line); border-radius: 12px; box-shadow: 0 12px 34px rgba(30,50,15,.28); overflow: hidden; }
.nd-pop-h { display: flex; align-items: center; justify-content: space-between; gap: 8px;
  padding: 10px 12px; font-weight: 800; font-size: 14px; color: #fff; background: var(--green); }
.nd-pop-x { border: none; background: rgba(255,255,255,.2); color: #fff; width: 22px; height: 22px;
  border-radius: 6px; font-size: 16px; line-height: 1; cursor: pointer; }
.nd-pop-x:hover { background: rgba(255,255,255,.38); }
.nd-pop-cnt { padding: 6px 12px 0; font-size: 11.5px; font-weight: 700; color: var(--green-d); }
.nd-pop-body { padding: 10px 12px 12px; max-height: 320px; overflow-y: auto; }
.nd-pop-ram { font-size: 13px; font-weight: 700; color: #5a4406; background: #fbf5e3;
  border: 1px solid #ecdcae; border-radius: 8px; padding: 7px 10px; margin-bottom: 8px; }
.nd-pop-it { font-size: 12.5px; line-height: 1.55; padding: 7px 10px; margin-bottom: 6px;
  border: 1px solid var(--green-line); border-radius: 8px; background: #fafcf6; }
.nd-pop-it.strat { background: #f4f0fe; border-color: #ddd2f6; }
.nd-pop-it.milestone { background: #ffe9e4; border-color: #f5b5a3; border-left: 3px solid #e74c3c; font-weight: 700; }
.nd-pop-it.milestone b { color: #c0392b; }
.nd-pop-src { margin-top: 4px; font-size: 11px; }
.nd-pop-src a { color: var(--green, #4a7a2a); text-decoration: none; font-weight: 700; }
.nd-pop-src a:hover { text-decoration: underline; }
.nd-pop-note { color: var(--muted, #6b7a55); font-size: 11.5px; margin-top: 3px; }
.nd-pop-empty { font-size: 12.5px; color: var(--muted, #8a9a70); text-align: center; padding: 10px 0; }

.nd-agenda, .nd-pending { margin: 0 2px 18px; }
.nd-ag-title { font-weight: 800; color: var(--green-d); font-size: 15px; margin: 6px 0 10px; }
.nd-ag-month { margin-bottom: 14px; }
.nd-ag-h { font-weight: 800; color: var(--ink); font-size: 13px; margin: 0 0 6px; padding: 3px 8px; border-left: 3px solid var(--green);
  cursor: pointer; list-style: none; display: flex; align-items: center; gap: 6px; border-radius: 0 6px 6px 0; user-select: none; }
.nd-ag-h::-webkit-details-marker { display: none; }
.nd-ag-h::before { content: '▸'; color: var(--green); font-size: 11px; transition: transform .15s; display: inline-block; }
.nd-ag-month[open] > .nd-ag-h::before { transform: rotate(90deg); }
.nd-ag-h:hover { background: var(--green-l); }
.nd-ag-cnt { font-weight: 700; font-size: 11px; color: var(--green-d); background: var(--green-l);
  border: 1px solid var(--green-line); border-radius: 9px; padding: 0 7px; line-height: 16px; }
.nd-ag-body { padding-top: 6px; }
.nd-ev { font-size: 12.5px; color: var(--ink); line-height: 1.55; padding: 7px 10px; margin-bottom: 5px;
  background: var(--card); border: 1px solid var(--green-line); border-radius: 8px; }
.nd-ev.ram { background: #fbf5e3; border-color: #ecdcae; }
.nd-ev.strat { background: #f5f2fc; border-color: #ddd4f2; }
.nd-ev.milestone {
  display: flex; align-items: center; gap: 6px;
  padding: 6px 10px; font-size: 12.5px; font-weight: 500;
  background: #ffe9e4; border: 1px solid #f5b5a3; border-left: 3px solid #e74c3c;
  border-radius: 6px; cursor: pointer;
  white-space: nowrap; overflow: hidden;
}
.nd-ev.milestone .nd-ms-title { flex: 1 1 auto; min-width: 0; overflow: hidden;
  text-overflow: ellipsis; white-space: nowrap; color: #c0392b; font-weight: 600; }
.nd-ev.milestone .nd-ms-cb { flex: 0 0 auto; margin: 0 2px 0 0; cursor: pointer; accent-color: #e74c3c; }
.nd-ev.milestone .nd-ms-type { flex: 0 0 auto; }
.nd-ev.milestone .nd-ms-date { flex: 0 0 auto; margin-left: 0; }
.nd-ev.milestone .nd-mtag { flex: 0 0 auto; margin-right: 0; }
.nd-ev.milestone .nd-ms-src { flex: 0 0 auto; margin-left: 4px; font-size: 11px; }
.nd-ev.milestone.done { background: #f7f4f2; border-color: #e8d6cf; border-left-color: #c0a39a; opacity: .65; }
.nd-ev.milestone.done .nd-ms-title { text-decoration: line-through; color: #8a6a5a; }
.nd-ev.milestone.done .nd-ms-type { opacity: .6; }
.nd-ev.milestone:hover { box-shadow: 0 1px 4px rgba(231,76,60,.12); }
.nd-ev.task.na { opacity: .8; }
.nd-ev .nd-est { color: var(--warn); font-size: 11px; margin-left: 4px; }
.nd-ev .nd-evnote { color: var(--muted); font-size: 11.5px; margin-top: 3px; line-height: 1.5; }
.nd-ms-type { display: inline-block; font-size: 10px; font-weight: 700; border-radius: 4px; padding: 1px 6px; }
.nd-ms-type.meet { background: #f5d3cb; color: #c0392b; }
.nd-ms-type.deliv { background: #ffd9b3; color: #b3541a; }
.nd-ms-date { color: var(--muted); font-size: 11.5px; font-weight: 600; }
.nd-ms-stage { display: inline-block; font-size: 10px; font-weight: 600; color: #8a6a5a;
  background: #fbeae5; border-radius: 4px; padding: 1px 6px; margin-left: 5px; }
.nd-ms-src { font-size: 11px; color: var(--green); text-decoration: none; font-weight: 700; }
.nd-ms-src:hover { text-decoration: underline; }
.nd-mtag { display: inline-block; font-size: 10px; font-weight: 800; color: var(--green-d);
  background: var(--green-l); border-radius: 4px; padding: 1px 6px; margin-right: 6px; }
.nd-due { color: var(--muted); font-size: 11.5px; margin-left: 4px; }
.nd-p { display: inline-block; font-size: 10px; font-weight: 800; border-radius: 4px; padding: 1px 6px; margin-right: 6px; }
.nd-p.p0 { background: #fbe0da; color: var(--danger); }
.nd-p.p1 { background: #fdf1d8; color: var(--warn); }
.nd-st { display: inline-block; font-size: 10px; font-weight: 700; border-radius: 4px; padding: 1px 6px; margin-left: 4px; }
.nd-st.done { background: #e3efd4; color: var(--green-d); }
.nd-st.wip { background: #fdf1d8; color: var(--warn); }
.nd-st.todo { background: #eef0ea; color: var(--muted); }
.nd-st.na { background: #f0eef5; color: #8a7fb0; }

/* ===== 竞品玩法评估 (competitorPlay) ===== */
.cp-legend { display: flex; flex-wrap: wrap; gap: 12px; padding: 10px 14px; margin-bottom: 14px;
  background: #fff8ec; border: 1px solid #f1d99c; border-radius: 10px; font-size: 11.5px; color: #6b5a2a; }
.cp-logic { margin-bottom: 12px; padding: 12px 14px; background: #f7fbf3; border: 1px solid var(--green-line); border-radius: 10px; }
.cp-logic-h { font-size: 13px; font-weight: 800; color: var(--green-d); margin-bottom: 8px; }
.cp-logic-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 8px; }
.cp-logic-grid > div { background: #fff; border: 1px solid #e2ecd4; border-radius: 8px; padding: 8px 10px; font-size: 11.5px; line-height: 1.55; color: #4a553d; }
.cp-logic-grid b { display: block; color: var(--ink); margin-bottom: 3px; }
.cp-logic-grid span { display: block; }
.cp-leg-item { display: inline-flex; align-items: center; gap: 6px; }
.cp-leg-dot { width: 10px; height: 10px; border-radius: 50%; display: inline-block; }
.cp-score-high { background: #4caf50; }
.cp-score-mid  { background: #f4b740; }
.cp-score-low  { background: #b0a8a8; }
.cp-body { padding: 12px 16px 16px; }
.cp-summary { font-size: 12.5px; color: #3d4433; line-height: 1.65; margin-bottom: 12px;
  background: #fafbf7; border-left: 3px solid var(--green); padding: 8px 12px; border-radius: 6px; }
.cp-picks { margin-bottom: 14px; }
.cp-cap { font-size: 13px; font-weight: 700; margin-bottom: 8px; }
.cp-cap-pick { color: #b3541a; }
.cp-cap-prod { color: var(--green-d); }
.cp-ul { padding-left: 20px; margin: 0; }
.cp-ul li { font-size: 12px; color: #3d4433; line-height: 1.65; margin-bottom: 4px; }
.cp-prods { border-top: 1px solid var(--green-line); padding-top: 12px; }
.cp-prod-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; }
.cp-prod { border: 1px solid var(--green-line); border-radius: 10px; background: #fff; padding: 12px 14px; }
.cp-prod-h { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; padding-bottom: 8px;
  border-bottom: 1px dashed var(--green-line); }
.cp-prod-name { font-weight: 800; font-size: 13.5px; color: var(--ink); flex: 1; }
.cp-prod-score { font-size: 11px; font-weight: 700; color: #fff; padding: 2px 8px; border-radius: 10px; }
.cp-prod-score.cp-score-high { background: #4caf50; }
.cp-prod-score.cp-score-mid  { background: #f4b740; color: #5a3a00; }
.cp-prod-score.cp-score-low  { background: #b0a8a8; color: #4a3a3a; }
.cp-prod-act { font-size: 12px; color: #2a5a8a; background: #eaf2fa; border-radius: 6px;
  padding: 6px 10px; margin-bottom: 8px; line-height: 1.55; }
.cp-row-x { display: flex; gap: 8px; margin-bottom: 6px; font-size: 12px; line-height: 1.6; align-items: flex-start; }
.cp-lbl { flex: 0 0 80px; font-weight: 700; color: var(--muted); font-size: 11.5px; padding-top: 1px; }
.cp-val { flex: 1; color: #3d4433; }
.cp-score-logic { display: flex; align-items: flex-start; gap: 8px; }
.cp-score-logic .cp-prod-score { flex: 0 0 auto; margin-top: 1px; }
.cp-row-x.cp-pos .cp-lbl { color: var(--green-d); }
.cp-row-x.cp-pos .cp-val { color: #2f5a2a; }
.cp-row-x.cp-neg .cp-lbl { color: #b3401f; }
.cp-row-x.cp-neg .cp-val { color: #7a2f1f; }
.cp-mig { margin-top: 8px; padding: 10px 12px; background: #faf8f0; border: 1px solid #f1e4b3;
  border-radius: 8px; }
.cp-mig-h { font-size: 12.5px; font-weight: 800; color: #b3541a; margin-bottom: 8px; padding-bottom: 6px;
  border-bottom: 1px dashed #e8d6a0; display: flex; justify-content: space-between; flex-wrap: wrap; gap: 6px; }
.cp-mig-u18 { font-size: 11px; font-weight: 600; color: #8a6a5a; background: #fbeae5; padding: 2px 8px; border-radius: 10px; }
@media (max-width: 900px) { .cp-prod-grid { grid-template-columns: 1fr; } .cp-logic-grid { grid-template-columns: 1fr; } }

/* ===== 竞品玩法评估 v2 (按潜力排序 + YTB 嵌入) ===== */
.cp-sort-hint { font-size: 11.5px; color: var(--muted); padding: 6px 12px; margin-bottom: 10px;
  background: #f7f4ee; border-radius: 6px; }
.cp-group-desc { font-size: 12.5px; color: #5a4a2a; padding: 6px 14px 10px; line-height: 1.6; }
.cp-entry > .cr-row-head { display: flex; align-items: center; gap: 8px; padding: 10px 14px; font-size: 13px; }
.cp-entry .cp-idx { font-weight: 800; color: var(--muted); font-size: 11.5px; background: #eef0ea; border-radius: 6px;
  padding: 2px 7px; flex: 0 0 auto; }
.cp-entry .cp-sum-month { font-weight: 700; color: #8a6a5a; font-size: 11.5px; flex: 0 0 auto;
  background: #fbeae5; padding: 2px 8px; border-radius: 10px; }
.cp-entry .cp-sum-prod { font-weight: 800; color: var(--ink); font-size: 13px; flex: 0 0 auto; min-width: 90px; }
.cp-entry .cp-sum-act { color: #3d4433; font-size: 12.5px; flex: 1; overflow: hidden;
  text-overflow: ellipsis; white-space: nowrap; }
.cp-entry .cr-row-head > .cp-prod-score { margin-left: 0; flex: 0 0 auto; }
.cp-section { margin-bottom: 10px; }
.cp-cap { font-size: 12.5px; font-weight: 700; margin-bottom: 5px; color: var(--green-d); }
.cp-cap-vid { color: #b3401f; }
.cp-act-text { font-size: 12.5px; color: #2a5a8a; background: #eaf2fa; border-radius: 6px;
  padding: 8px 12px; line-height: 1.6; }
.cp-perf-text { font-size: 12.5px; color: #3d4433; background: #fafbf7; border-left: 3px solid var(--green);
  border-radius: 6px; padding: 8px 12px; line-height: 1.65; }
.cp-text { font-size: 12.5px; line-height: 1.65; color: #3d4433; }
.cp-2col { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 10px; }
.cp-2col .cp-section.cp-pos .cp-cap { color: var(--green-d); }
.cp-2col .cp-section.cp-neg .cp-cap { color: #b3401f; }
.cp-2col .cp-section.cp-pos .cp-text { color: #2f5a2a; background: #f3f9ed; border-radius: 6px; padding: 8px 12px; }
.cp-2col .cp-section.cp-neg .cp-text { color: #7a2f1f; background: #fdeee8; border-radius: 6px; padding: 8px 12px; }
.cp-vids { margin-top: 12px; padding-top: 12px; border-top: 1px dashed var(--green-line); display: flex; flex-wrap: wrap; gap: 14px; align-items: flex-start; }
.cp-vid { margin: 0; max-width: 300px; flex: 0 0 300px; }
.cp-vid-frame { position: relative; width: 100%; padding-bottom: 56.25%; height: 0; border-radius: 6px;
  overflow: hidden; background: #000; box-shadow: 0 1px 4px rgba(0,0,0,.1); }
.cp-vid-frame iframe { position: absolute; top: 0; left: 0; width: 100%; height: 100%; border: 0; }
.cp-vid-meta { display: flex; align-items: center; gap: 8px; margin-top: 5px; flex-wrap: wrap; }
.cp-vid-link { font-size: 11.5px; font-weight: 700; color: var(--green-d); text-decoration: none; }
.cp-vid-link:hover { text-decoration: underline; }
.cp-vid-channel { font-size: 10.5px; color: var(--muted); background: #eef0ea; padding: 1px 7px; border-radius: 10px; }
.cp-vid-note { font-size: 11px; color: #6b5a2a; margin-top: 3px; font-style: italic; }
.cp-vid-empty { font-size: 12px; color: var(--muted); padding: 8px 12px; background: #f7f4ee;
  border-radius: 6px; text-align: center; flex: 1 1 100%; }
@media (max-width: 900px) { .cp-2col { grid-template-columns: 1fr; } .cp-vid { flex: 1 1 100%; max-width: 100%; } }

/* ===== 月度生意总结 (competitorSummary) ===== */
.cs-body { padding: 12px 16px 16px; display: grid; gap: 14px; }
.cs-section { border: 1px solid var(--green-line); border-radius: 10px; padding: 10px 14px; background: #fff; }
.cs-section.cs-mlbb { background: #faf8f0; border-color: #f1e4b3; }
.cs-section.cs-indo { background: #fdf6e8; border-color: #f0d99c; }
.cs-section.cs-rbff { background: #f7fbf3; }
.cs-cap { font-size: 13px; font-weight: 800; margin-bottom: 8px; padding-bottom: 6px; border-bottom: 1px dashed var(--green-line); }
.cs-cap-g { color: #2f5a8a; }
.cs-cap-m { color: #b3541a; }
.cs-cap-i { color: #b3401f; }
.cs-cap-r { color: var(--green-d); }
.cs-row-x { display: flex; gap: 10px; align-items: center; margin-bottom: 6px; flex-wrap: wrap; }
.cs-dir { font-size: 12px; font-weight: 700; padding: 2px 10px; border-radius: 10px; }
.cs-dir-up { background: #e3efd4; color: #2f5a2a; }
.cs-dir-down { background: #fbe0da; color: #7a2f1f; }
.cs-dir-flat { background: #eef0ea; color: var(--muted); }
.cs-level { font-size: 11.5px; font-weight: 600; color: #5a4a2a; background: #fbeae5; padding: 2px 8px; border-radius: 10px; }
.cs-yoy { font-size: 11.5px; font-weight: 700; color: var(--green-d); background: var(--green-l); padding: 2px 8px; border-radius: 10px; flex: 1; }
.cs-text { font-size: 12.5px; line-height: 1.65; color: #3d4433; margin-bottom: 5px; }
.cs-change { color: #2a5a8a; background: #eaf2fa; padding: 6px 10px; border-radius: 6px; }
.cs-interp { color: #4a5340; }
.cs-rf-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }
.cs-rf-card { border: 1px solid var(--green-line); border-radius: 8px; padding: 8px 12px; background: #fff; }
.cs-rf-card.cs-rb { border-left: 3px solid #2f5a8a; }
.cs-rf-card.cs-ff { border-left: 3px solid #b3401f; }
.cs-rf-h { display: flex; align-items: center; gap: 8px; margin-bottom: 6px; flex-wrap: wrap; }
.cs-rf-name { font-weight: 800; font-size: 13px; color: var(--ink); flex: 0 0 auto; }
@media (max-width: 900px) { .cs-rf-grid { grid-template-columns: 1fr; } }

/* ===== 手机端适配：左侧抽屉式导航 + 全局收窄 ===== */
.menu-toggle {
  display: none; flex-shrink: 0; width: 38px; height: 38px; border-radius: 9px;
  border: none; background: var(--green); color: #fff; font-size: 19px; cursor: pointer;
  align-items: center; justify-content: center;
}
.sidebar-overlay { display: none; position: fixed; inset: 0; background: rgba(20,26,10,.4); z-index: 90; }

@media (max-width: 680px) {
  .menu-toggle { display: flex; }
  .topbar { padding: 0 12px; height: 52px; gap: 10px; justify-content: flex-start; }
  .topbar-title { font-size: 15px; flex: 0 1 auto; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
  .topbar-right { flex: 1 1 auto; min-width: 0; display: flex; }
  .search { width: auto; flex: 1; min-width: 0; }

  .sidebar {
    position: fixed; top: 0; left: 0; height: 100vh; z-index: 100;
    width: 82vw; max-width: 280px;
    transform: translateX(-100%); transition: transform .25s ease;
    box-shadow: 8px 0 24px rgba(0,0,0,.16);
  }
  body.sidebar-open .sidebar { transform: translateX(0); }
  body.sidebar-open .sidebar-overlay { display: block; }

  .content { padding: 14px 12px 40px; }
  .nav-item { padding: 12px 10px; font-size: 14px; }

  /* v1.63.1 的绝对定位是按桌面 480px 表格列宽计算的，手机上表格变窄需退回正常文档流 */
  .biz-meta-inline { position: static; transform: none; display: block; margin-top: 4px; white-space: normal; }

  .cp-vid { flex: 1 1 100%; max-width: 100%; }

  /* 目标速览表 / 所有信息源目录表：手机上没有专属横向滚动容器兜底，补一个 */
  .tg-table, .dir-table { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
}

/* ===== 斋月发行小组 (ramadanSquad) ===== */
.rs-group-desc { font-size: 12.5px; color: var(--muted); padding: 6px 14px 10px; line-height: 1.6; }
.rs-month { border-left: 3px solid var(--warn); }
.rs-week { border-left: 3px solid var(--green); }
.rs-month > .cr-row-head { display: flex; align-items: center; gap: 10px; padding: 11px 14px; }
.rs-month-tag { font-weight: 800; color: #fff; background: var(--warn); padding: 2px 10px; border-radius: 10px; font-size: 12px; flex: 0 0 auto; }
.rs-month-main { font-weight: 700; color: var(--ink); font-size: 13.5px; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rs-week > .cr-row-head { display: flex; align-items: center; gap: 10px; padding: 10px 14px; }
.rs-week-tag { font-weight: 700; color: var(--green-d); background: var(--green-l); padding: 2px 10px; border-radius: 10px; font-size: 11.5px; flex: 0 0 auto; }
.rs-week-goal { font-weight: 700; color: var(--ink); font-size: 13px; flex: 1; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rs-week-body { padding: 10px 14px 14px; }
.rs-week-goal-line { font-size: 13px; color: #3d4433; line-height: 1.65; margin-bottom: 8px; }
.rs-act-list { list-style: none; margin: 0 0 8px; padding: 0; }
.rs-act-list li { font-size: 12.5px; color: #3d4433; line-height: 1.7; padding: 4px 0; border-bottom: 1px dashed var(--green-line); display: flex; align-items: baseline; gap: 4px; flex-wrap: wrap; }
.rs-act-list li:last-child { border-bottom: none; }
.rs-act-owner { font-weight: 700; color: var(--green-d); flex: 0 0 auto; }
.rs-act-sep { color: var(--muted); flex: 0 0 auto; }
.rs-act-deliv { flex: 1 1 auto; min-width: 0; }
.rs-act-due { font-size: 11px; color: var(--muted); background: #f0eef5; padding: 1px 6px; border-radius: 8px; flex: 0 0 auto; white-space: nowrap; }
.rs-week-extra { font-size: 12px; line-height: 1.6; color: #3d4433; padding: 6px 10px; margin-top: 6px; background: #f7fbf3; border-radius: 6px; }
.rs-week-extra.rs-risk { background: #fdeee8; color: #7a2f1f; }
.rs-extra-lbl { font-weight: 700; color: var(--green-d); margin-right: 4px; font-size: 11.5px; }
.rs-week-extra.rs-risk .rs-extra-lbl { color: #b3401f; }
.rs-wk-tbl { width: 100%; border-collapse: collapse; font-size: 12.5px; margin-top: 4px; }
.rs-wk-tbl th { text-align: left; padding: 6px 10px; background: var(--green-l); color: var(--green-d); font-weight: 700; font-size: 11.5px; border-bottom: 1px solid var(--green-line); }
.rs-wk-tbl td { padding: 7px 10px; border-bottom: 1px dashed var(--green-line); vertical-align: top; color: #3d4433; }
.rs-wk-tbl .rs-wk { font-weight: 700; color: var(--green-d); white-space: nowrap; width: 50px; }
.rs-wk-tbl .rs-ws { white-space: nowrap; width: 90px; }
.rs-em-row { display: flex; gap: 8px; padding: 6px 10px; margin-bottom: 4px; border-radius: 6px; font-size: 12.5px; line-height: 1.6; }
.rs-em-lbl { flex: 0 0 110px; font-weight: 700; font-size: 11.5px; }
.rs-em-val { flex: 1; color: #3d4433; }
.rs-em-row.rs-pos { background: #f3f9ed; }
.rs-em-row.rs-pos .rs-em-lbl { color: var(--green-d); }
.rs-em-row.rs-neg { background: #fdeee8; }
.rs-em-row.rs-neg .rs-em-lbl { color: #b3401f; }
.rs-em-row.rs-mid { background: #fff8ec; }
.rs-em-row.rs-mid .rs-em-lbl { color: #b3541a; }
.rs-opt { border: 1px solid var(--green-line); border-left: 3px solid var(--warn); border-radius: 8px; padding: 10px 12px; margin-bottom: 8px; background: #fffdf6; }
.rs-opt-phen { font-weight: 800; color: #b3541a; font-size: 12.5px; margin-bottom: 6px; }
.rs-opt-prob, .rs-opt-sug, .rs-opt-eff { font-size: 12px; line-height: 1.65; color: #3d4433; margin-bottom: 3px; }
.rs-opt-lbl { display: inline-block; min-width: 36px; font-weight: 700; color: var(--muted); margin-right: 6px; font-size: 11.5px; }
@media (max-width: 900px) {
  .rs-wk-tbl { display: block; overflow-x: auto; -webkit-overflow-scrolling: touch; }
}

/* 全球发行能力盘 */
.gp { display: flex; flex-direction: column; gap: 20px; }
.gp-module { border: 1px solid var(--green-line); border-radius: 10px; overflow: hidden; }
.gp-mod-h { display: flex; align-items: center; gap: 10px; padding: 10px 16px; background: var(--green-l); border-bottom: 1px solid var(--green-line); flex-wrap: wrap; }
.gp-mod-ico { font-size: 18px; }
.gp-mod-name { font-weight: 800; font-size: 15px; color: var(--green-d); }
.gp-mod-desc { font-size: 12px; color: var(--muted); }
.gp-caps { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; padding: 16px; }
.gp-nodes { display: grid; grid-template-columns: repeat(2, 1fr); gap: 14px; padding: 16px; }
.gp-cap, .gp-node { border: 1px solid var(--green-line); border-radius: 8px; padding: 12px 14px; background: #fff; scroll-margin-top: 16px; }
.gp-cap-h { display: flex; align-items: center; gap: 8px; margin-bottom: 8px; flex-wrap: wrap; }
.gp-cap-name { font-weight: 700; font-size: 14px; color: var(--ink); }
.gp-verdict { font-size: 11px; font-weight: 700; border-radius: 4px; padding: 1px 8px; }
.gp-ok { color: #2f6b2f; background: #dceccd; }
.gp-warn { color: #9a6a1a; background: #fdf3e3; }
.gp-miss { color: #b23b3b; background: #fbe0e0; }
.gp-tag { font-size: 11px; color: var(--muted); background: var(--green-l); border-radius: 4px; padding: 1px 8px; }
.gp-src { font-size: 11px; color: var(--green-d); text-decoration: none; margin-left: auto; }
.gp-src:hover { text-decoration: underline; }
.gp-src-off { color: #a9b3a0; }
.gp-sub { font-size: 11.5px; font-weight: 700; color: var(--muted); margin: 8px 0 3px; }
.gp-list { margin: 0; padding-left: 18px; }
.gp-list li { font-size: 12.5px; line-height: 1.6; color: #3d4433; margin-bottom: 3px; }
.gp-list.gp-gap li { color: #9a4a3a; }
.gp-list.gp-metric li { color: #2c3324; }
.gp-none { font-size: 12px; color: #a9b3a0; font-style: italic; padding: 2px 0; }
.gp-summary { border: 1px solid var(--green-line); border-left: 3px solid var(--green); border-radius: 8px; padding: 12px 16px; background: var(--green-l); }
.gp-sum-h { font-weight: 700; font-size: 13px; color: var(--green-d); }
.gp-summary p { margin: 6px 0 0; font-size: 13px; line-height: 1.7; color: var(--ink); }
@media (max-width: 900px) {
  .gp-caps, .gp-nodes { grid-template-columns: 1fr; }
}

/* 当周进度 · 甘特图 */
.cp-purpose { font-size: 13px; line-height: 1.7; color: var(--ink); background: var(--green-l); border-left: 3px solid var(--green); border-radius: 6px; padding: 10px 14px; }
.cp-now-banner { margin-top: 12px; margin-bottom: 14px; font-size: 15px; color: #fff; background: linear-gradient(135deg, var(--green) 0%, var(--green-d) 100%); border: none; border-radius: 10px; padding: 12px 18px; display: block; box-shadow: var(--shadow); letter-spacing: .3px; }
.cp-now-banner b { font-size: 17px; color: #fff; }
.cp-sub-h { font-weight: 700; font-size: 13px; color: var(--green-d); margin: 20px 0 8px; }
/* 图例 */
.cp-g-legend { display: flex; flex-wrap: wrap; align-items: center; gap: 14px; margin: 12px 0; font-size: 11.5px; color: var(--muted); }
.cp-g-legend span { display: inline-flex; align-items: center; gap: 5px; }
.cp-lg-dot { width: 11px; height: 11px; border-radius: 3px; display: inline-block; }
.cp-lg-ph { width: 14px; height: 11px; border-radius: 3px; display: inline-block; border: 1px solid rgba(0,0,0,.06); }
.cp-lg-sep { width: 1px; height: 14px; background: var(--green-line); }
/* 表容器（横向滚动） */
.cp-g-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; border: 1px solid var(--green-line); border-radius: 10px; }
.cp-g-tbl { border-collapse: separate; border-spacing: 0; min-width: 100%; font-size: 12px; table-layout: fixed; }
.cp-g-tbl th, .cp-g-tbl td { border-right: 1px solid var(--green-line); border-bottom: 1px solid var(--green-line); vertical-align: top; }
.cp-g-tbl tr:last-child td { border-bottom: none; }
/* 表头 */
.cp-g-corner { position: sticky; background: #f4f7ee; font-weight: 700; color: var(--green-d); padding: 8px 10px; text-align: left; white-space: nowrap; z-index: 5; }
.cp-g-c1 { left: 0; width: 78px; min-width: 78px; }
.cp-g-c2 { left: 78px; width: 190px; min-width: 190px; }
.cp-g-c3 { left: 268px; width: 92px; min-width: 92px; }
.cp-g-mh { padding: 7px 8px; font-weight: 700; font-size: 11.5px; color: var(--ink); text-align: center; white-space: nowrap; }
.cp-g-mh.cp-g-curcol { box-shadow: inset 0 -3px 0 var(--warn); background: rgba(201,146,46,.14); }
.cp-g-sh { width: 120px; min-width: 120px; padding: 4px 6px; font-size: 10px; font-weight: 600; color: var(--muted); text-align: center; white-space: nowrap; background: #fafbf7; }
.cp-g-sh span { display: block; font-size: 9px; font-weight: 400; opacity: .8; }
.cp-g-sh.cp-g-curcol { color: #fff; background: var(--warn); font-weight: 800; }
.cp-g-h0 { border-right: 1px dashed var(--green-line); }
/* 阶段配色 */
.cp-ph0 { background: #eef2e6; } .cp-ph1 { background: #e4f2dc; } .cp-ph2 { background: #fbf3df; } .cp-ph3 { background: #e0ecfa; }
/* 左侧冻结列 */
.cp-g-mod { position: sticky; left: 0; width: auto; min-width: 78px; background: #f4f7ee; font-weight: 700; font-size: 12px; color: var(--green-d); padding: 8px 10px; z-index: 4; line-height: 1.5; white-space: nowrap; }
.cp-g-mod.cp-g-mod-orange { background: #fdf1d8; color: #b3541a; }
.cp-g-mod.cp-g-mod-purple { background: #ede8f5; color: #6a4ca0; }
.cp-g-pipe { position: sticky; left: 78px; width: 190px; min-width: 190px; background: #fff; padding: 8px 10px; z-index: 4; }
.cp-g-stcell { position: sticky; left: 268px; width: 92px; min-width: 92px; background: #fff; padding: 8px 8px; z-index: 4; text-align: center; }
.cp-g-name { font-weight: 700; font-size: 12.5px; color: var(--ink); line-height: 1.4; }
.cp-g-own { font-size: 10.5px; color: var(--muted); margin-top: 0; line-height: 1.4; }
.cp-g-done { font-size: 11px; color: #1c5aa8; margin-top: 4px; line-height: 1.5; }
.cp-g-next { font-size: 11px; color: #2e6b1f; margin-top: 2px; line-height: 1.5; }
.cp-g-note { font-size: 10.5px; color: var(--muted); margin-top: 4px; cursor: help; }
/* 数据格 */
.cp-g-cell { padding: 5px 4px; width: 120px; min-width: 120px; max-width: 120px; }
.cp-g-inspan { background: repeating-linear-gradient(90deg, #f6f8f1, #f6f8f1 6px, #fff 6px, #fff 12px); }
.cp-g-curcol { background: rgba(201,146,46,.12); }
.cp-g-cell.cp-g-inspan.cp-g-curcol { background: rgba(201,146,46,.16); }
.cp-g-cell.cp-g-curcol { box-shadow: inset 3px 0 0 var(--warn), inset -3px 0 0 var(--warn); }
.cp-g-bar { display: block; height: 4px; border-radius: 2px; background: var(--green-line); margin: 8px 2px; }
/* 交付 chip */
.cp-g-chip { display: block; font-size: 11px; line-height: 1.45; border-radius: 5px; padding: 3px 6px; margin: 2px 0; border: 1px solid var(--green-line); background: #fff; color: var(--ink); }
.cp-g-chip b { font-weight: 700; margin-right: 3px; }
.cp-g-date { display: inline-block; font-size: 10px; font-weight: 700; color: var(--green-d); background: var(--green-l); border-radius: 3px; padding: 0 4px; margin-right: 3px; }
.cp-g-past { opacity: .6; }
.cp-g-past b::before { content: '✓'; color: var(--green); margin-right: 2px; }
.cp-g-now { background: var(--green); color: #fff; border-color: var(--green-d); border-width: 2px; box-shadow: 0 2px 6px rgba(71,97,44,.35); font-weight: 700; transform: scale(1.05); }
.cp-g-now b { color: #fff; }
.cp-g-now .cp-g-date { color: rgba(255,255,255,.85); }
i.cp-g-past { opacity: 1; background: #cdd8be; } i.cp-g-now { background: var(--green); } i.cp-g-fut { background: #fff; border: 1px solid var(--green-line); }
/* 状态徽章 */
.cp-st { font-size: 10.5px; font-weight: 700; border-radius: 999px; padding: 2px 8px; white-space: nowrap; display: inline-block; }
.cp-st-ok { color: #2e6b1f; background: #e4f2dc; }
.cp-st-done { color: #1c5aa8; background: #e0ecfa; }
.cp-st-risk { color: #9a6b00; background: #fbeecd; }
.cp-st-delay { color: #b3341f; background: #fbe0da; }
.cp-st-pending { color: var(--muted); background: #eef0ea; }
/* 上升专项 + 元信息 */
.cp-none { font-size: 12.5px; color: var(--muted); padding: 8px 2px; }
.cp-meta { font-size: 11px; color: var(--muted); margin-top: 16px; line-height: 1.6; }
.cp-meta a { color: var(--green-d); }
.cp-esc { display: flex; flex-direction: column; gap: 10px; }
.cp-esc-i { border: 1px solid var(--green-line); border-left: 3px solid #d68a2f; border-radius: 8px; padding: 10px 12px; background: #fffdf8; }
.cp-esc-t { font-weight: 700; font-size: 13px; color: var(--ink); }
.cp-esc-d { font-size: 12px; color: var(--ink); margin-top: 4px; line-height: 1.6; }
.cp-esc-o { font-size: 11.5px; color: var(--muted); margin-top: 4px; }

/* ── 访问记录：设备表 ── */
.al-note { font-size: 12.5px; color: var(--muted); line-height: 1.7; margin-bottom: 12px; padding: 10px 12px; background: var(--green-l); border: 1px solid var(--green-line); border-radius: 8px; }
.al-total { font-size: 12px; color: var(--green-d); font-weight: 700; }
.al-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.al-table th { text-align: left; font-weight: 700; color: var(--green-d); padding: 8px 10px; border-bottom: 2px solid var(--green-line); white-space: nowrap; }
.al-table td { padding: 8px 10px; border-bottom: 1px solid var(--green-line); color: var(--ink); vertical-align: middle; }
.al-table tr:hover td { background: var(--green-l); }
.al-num { text-align: center; font-weight: 700; color: var(--green-d); }
.al-ip { font-family: ui-monospace, Menlo, monospace; font-size: 12px; color: var(--muted); }
.al-label a.al-edit { color: var(--ink); text-decoration: none; font-weight: 600; border-bottom: 1px dashed var(--green-line); }
.al-label a.al-edit:hover { color: var(--green-d); border-bottom-color: var(--green-d); }
.al-pen { color: var(--muted); font-size: 11px; }
.al-unset { color: var(--muted); font-weight: 400; font-style: italic; }

/* ── 区域发行·27节气增长空间：专属独立面板（与区域战况视觉分层）── */
.sg-panel { border: 1px solid var(--green-line); border-radius: 14px; overflow: hidden; box-shadow: 0 6px 20px rgba(44, 51, 36, .08); margin-bottom: 22px; background: #fff; }
.sg-banner { background: linear-gradient(135deg, var(--green-d) 0%, #35491f 100%); color: #fff; padding: 18px 22px; }
.sg-title { font-size: 18px; font-weight: 800; letter-spacing: .3px; }
.sg-sub { font-size: 12.5px; color: rgba(255, 255, 255, .82); line-height: 1.7; margin-top: 8px; }
.sg-src { font-size: 12px; color: rgba(255, 255, 255, .7); margin-top: 10px; display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }
.sg-doc { color: #eaf3d8; text-decoration: none; border-bottom: 1px solid rgba(234, 243, 216, .5); }
.sg-doc:hover { color: #fff; border-bottom-color: #fff; }
.sg-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(360px, 1fr)); gap: 14px; padding: 18px; background: var(--green-l); }
.sg-card { background: #fff; border: 1px solid var(--green-line); border-radius: 10px; overflow: hidden; box-shadow: 0 2px 6px rgba(44, 51, 36, .05); }
.sg-card-wide { grid-column: 1 / -1; }
.sg-card > summary.sg-card-h { list-style: none; cursor: pointer; display: flex; align-items: center; gap: 8px; padding: 12px 14px; font-size: 14px; font-weight: 700; color: var(--green-d); background: #f3f7ea; border-bottom: 1px solid var(--green-line); }
.sg-card > summary.sg-card-h::-webkit-details-marker { display: none; }
.sg-card > summary.sg-card-h::before { content: '▸'; color: var(--green); font-size: 12px; transition: transform .15s; }
.sg-card[open] > summary.sg-card-h::before { transform: rotate(90deg); }
.sg-card-n { margin-left: auto; background: var(--green); color: #fff; font-size: 11px; font-weight: 700; border-radius: 10px; padding: 1px 9px; }
.sg-list { list-style: none; margin: 0; padding: 12px 16px; }
.sg-item { position: relative; padding: 6px 0 6px 16px; font-size: 13px; line-height: 1.75; color: var(--ink); border-bottom: 1px dashed var(--green-line); }
.sg-item:last-child { border-bottom: none; }
.sg-item::before { content: '•'; position: absolute; left: 2px; color: var(--green); }
.rg-section-divider { font-size: 14px; font-weight: 800; color: var(--green-d); margin: 4px 0 14px; padding-left: 10px; border-left: 4px solid var(--green); }
@media (max-width: 680px) {
  .sg-grid { grid-template-columns: 1fr; padding: 12px; }
  .sg-title { font-size: 16px; }
}

/* ── 左侧目录·时间子项(游戏竞品各月份快速定位) ── */
.is-toc-sub { display: block; padding: 4px 10px 4px 30px; font-size: 12px; color: var(--muted); text-decoration: none; border-radius: 6px; cursor: pointer; position: relative; line-height: 1.5; }
.is-toc-sub::before { content: '·'; position: absolute; left: 18px; color: var(--green); }
.is-toc-sub:hover { background: var(--green-l); color: var(--green-d); }

/* ── 竞品视觉·图片加载失败优雅降级(外链失效不再破图) ── */
.cr-vis-img.img-failed { display: flex; align-items: center; justify-content: center; min-height: 92px; padding: 0 14px; text-align: center; border-radius: 8px 8px 0 0; color: var(--muted); font-size: 12.5px; line-height: 1.6; background: repeating-linear-gradient(45deg, #f3f4ee, #f3f4ee 10px, #ecefe3 10px, #ecefe3 20px); }
.cr-vis-img.img-failed::after { content: '🖼️ 素材图暂不可用 · 点下方来源查看原图'; }
