/* 世界博弈主线 · 温和理智浅色主题（与 A股结构看板同色系） */
:root{
  --bg:#f6f5f2; --panel:#ffffff; --panel2:#f2f1ec; --line:#e7e4dc;
  --txt:#333a45; --muted:#8b9098; --accent:#4a7fb5;
  --lv3:#c0605a; --lv2:#cf9440; --lv1:#8fa3b8; --red:#c0564f;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--txt);font-size:14px;line-height:1.55;
  font-family:"Microsoft YaHei","PingFang SC","Helvetica Neue",Arial,sans-serif}
a{color:var(--accent);text-decoration:none}

.topbar{display:flex;justify-content:space-between;align-items:center;padding:16px 22px;
  background:var(--panel);border-bottom:1px solid var(--line);flex-wrap:wrap;gap:12px}
.brand{display:flex;align-items:center;gap:14px}
.logo{width:44px;height:44px;border-radius:11px;display:block;object-fit:cover;
  box-shadow:0 1px 3px rgba(40,50,65,.12)}
.topbar h1{margin:0;font-size:19px;letter-spacing:.4px}
.sub{color:var(--muted);font-size:12px;margin-top:2px}
.meta{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.meta-item{display:flex;flex-direction:column;align-items:flex-end}
.meta-item .k{color:var(--muted);font-size:11px}
.meta-item .v{font-weight:700;font-size:15px}
.meta-item .v.small{font-size:12px;font-weight:600;color:#5a6472}
.refresh{background:var(--panel2);border:1px solid var(--line);color:var(--txt);
  padding:7px 14px;border-radius:8px}
.refresh:hover{border-color:var(--accent);color:var(--accent)}

.tabs{display:flex;gap:4px;padding:10px 22px 0;border-bottom:1px solid var(--line);background:var(--panel)}
.tab{background:none;border:none;color:var(--muted);padding:10px 18px;font-size:14px;
  cursor:pointer;border-bottom:2px solid transparent}
.tab:hover{color:var(--txt)}
.tab.active{color:var(--accent);border-bottom-color:var(--accent);font-weight:700}

main{padding:18px 22px 40px;max-width:1400px;margin:0 auto}
.panel{display:none}
.panel.active{display:block}
.card{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:16px 18px;
  margin-bottom:16px;box-shadow:0 1px 2px rgba(40,50,65,.04)}
.card h2{margin:0 0 14px;font-size:15px;font-weight:700}
.hint{color:var(--muted);font-size:12px;font-weight:400;margin-left:8px}

.legend-bar{display:flex;gap:20px;align-items:center;flex-wrap:wrap;color:var(--muted);
  font-size:12px;margin:0 4px 12px}
.legend-bar .lg{display:flex;align-items:center;gap:6px}
.dot{width:9px;height:9px;border-radius:50%;display:inline-block;background:var(--muted)}
.dot.red{background:var(--red)} .dot.lv3{background:var(--lv3)} .dot.lv2{background:var(--lv2)}

/* 模型卡片 */
.model{background:var(--panel);border:1px solid var(--line);border-radius:12px;
  padding:16px 18px;margin-bottom:16px;box-shadow:0 1px 2px rgba(40,50,65,.04)}
.model > .mh{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:4px}
.model > .mh .t{font-size:15px;font-weight:700}
.model > .mh .lay{font-size:11px;color:var(--accent);background:#eef3f9;border-radius:20px;padding:2px 10px}
.model > .mh .tot{color:var(--muted);font-size:12px}
.model > .desc{color:var(--muted);font-size:12px;margin-bottom:12px}

.node{border-top:1px solid #f1efe9;padding:9px 0}
.node .row{display:grid;grid-template-columns:150px 1fr 74px 70px 96px;align-items:center;
  gap:12px;cursor:pointer}
.node .nm{font-weight:700;font-size:13px}
.node .nm .ds{font-weight:400;color:var(--muted);font-size:11px;margin-left:6px}
.node .bar{height:14px;background:var(--panel2);border-radius:5px;overflow:hidden}
.node .bar > i{display:block;height:100%;background:var(--lv1);border-radius:5px}
.node .bar > i.hot{background:var(--accent)}
.node .num{text-align:right;font-size:12px;color:var(--muted);font-variant-numeric:tabular-nums}
.node .num b{color:var(--txt);font-size:13px}
.node .dg{text-align:right;font-size:12px;color:var(--muted)}
.node .dg.up{color:var(--lv3);font-weight:700}
.node .tags{display:flex;gap:5px;justify-content:flex-end;flex-wrap:wrap}
.tag{font-size:11px;padding:1px 7px;border-radius:20px;background:var(--panel2);color:var(--muted)}
.tag.red{background:rgba(192,86,79,.12);color:#a8483f}
.tag.lv3{background:rgba(192,96,90,.14);color:#a34b46}
.tag.lv2{background:rgba(207,148,64,.16);color:#a5762b}
.node .items{display:none;margin:10px 0 4px;padding-left:10px;border-left:2px solid var(--panel2)}
.node.open .items{display:block}

/* 快讯条目 */
.fi{display:grid;grid-template-columns:64px 1fr;gap:12px;padding:9px 0;
  border-bottom:1px solid #f4f2ed}
.fi .tm{color:var(--muted);font-size:12px;font-variant-numeric:tabular-nums;padding-top:1px;
  white-space:nowrap}
.fi .bd .br{font-size:13px}
.fi .bd .ws{margin-top:4px;display:flex;gap:6px;flex-wrap:wrap;align-items:center}
.fi .bd .ws .src{color:var(--muted);font-size:11px;margin-left:4px}
.fi .mark{display:inline-block;width:6px;height:6px;border-radius:50%;margin-right:6px;
  vertical-align:1px}
.mk3{background:var(--lv3)} .mk2{background:var(--lv2)} .mk1{background:var(--lv1)}
.mk0{background:transparent}
.redflag{color:var(--red);font-weight:700;font-size:11px}

.focus-list .fi{grid-template-columns:70px 1fr}
.focus-list .fi .br{font-size:14px;font-weight:600}

/* 实时重点列表：比「本档重点」更平铺，便于快速扫读 */
#live .fi .br{font-size:13px;font-weight:400;color:#2f3844}
#live .fi{padding:7px 0;grid-template-columns:96px 1fr}

/* 实时状态指示（头部小绿点） */
.livedot{width:7px;height:7px;border-radius:50%;background:#3fa06a;display:inline-block;
  margin-right:6px;vertical-align:1px;animation:pulse 1.8s ease-in-out infinite}
.livedot.off{background:var(--muted);animation:none}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.25}}
#m-live{font-size:12px;font-weight:600;color:#5a6472;display:flex;align-items:center;
  white-space:nowrap}
.livebar{margin-top:12px;padding-top:10px;border-top:1px solid var(--line);
  color:var(--muted);font-size:12px}
.livebar b{color:var(--txt);font-size:13px}

.filters{display:flex;gap:8px;align-items:center;flex-wrap:wrap;margin-bottom:12px}
.chip{background:var(--panel2);border:1px solid var(--line);color:var(--muted);
  padding:6px 14px;border-radius:20px;cursor:pointer;font-size:13px;
  display:inline-flex;align-items:center}
.chip:hover{color:var(--txt)}
/* 变量按钮前的色点：与趋势图里那条线同色 */
.chip .cdot{width:9px;height:9px;border-radius:50%;margin-right:7px;flex:0 0 auto}
.chip.active{background:#eef3f9;color:var(--accent);border-color:var(--accent);font-weight:700}
.chip.active.lv3{border-color:var(--lv3);color:#a34b46;background:rgba(192,96,90,.10)}
.chip.active.lv2{border-color:var(--lv2);color:#a5762b;background:rgba(207,148,64,.12)}
.chk{color:var(--muted);font-size:13px;display:flex;align-items:center;gap:6px;cursor:pointer}
.search{background:var(--panel);border:1px solid var(--line);color:var(--txt);
  padding:7px 12px;border-radius:8px;outline:none;width:230px}
.search:focus{border-color:var(--accent)}
.pager{display:flex;gap:12px;align-items:center;justify-content:flex-end;margin-top:12px;color:var(--muted)}
.pager button{background:var(--panel);border:1px solid var(--line);color:var(--txt);
  padding:6px 14px;border-radius:8px;cursor:pointer}
.pager button:hover:not(:disabled){border-color:var(--accent);color:var(--accent)}
.pager button:disabled{opacity:.45;cursor:default}

/* ── 每日纪要 ── */
.report-wrap{display:grid;grid-template-columns:290px 1fr;gap:16px;align-items:start}
.rlist{display:flex;flex-direction:column;gap:8px}
.ritem{background:var(--panel);border:1px solid var(--line);border-radius:10px;
  padding:11px 13px;cursor:pointer;transition:border-color .12s}
.ritem:hover{border-color:var(--accent)}
.ritem.on{border-color:var(--accent);background:#f7fafd}
.ritem .rt{display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.ritem .rd{font-weight:700;font-size:13px;font-variant-numeric:tabular-nums}
.ritem .rl{font-size:12px;color:var(--accent);background:#eef3f9;border-radius:20px;padding:1px 8px}
.ritem .rs{font-size:11px;color:var(--lv3)}
.ritem .rm{color:#5a6472;font-size:12px;margin-top:5px;line-height:1.5;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.ritem .rn{color:var(--muted);font-size:11px;margin-top:5px}

/* 审核模式 */
.rbar{display:flex;justify-content:space-between;align-items:center;gap:8px;
  padding:0 2px 4px;font-size:12px}
.rbar .pend{background:var(--lv3);color:#fff;border-radius:20px;padding:2px 11px;
  font-weight:700;font-size:12px}
.rb{font-size:11px;border-radius:20px;padding:1px 8px;white-space:nowrap}
.rb.pub{background:rgba(63,160,106,.14);color:#2f7d52}
.rb.rej{background:var(--panel2);color:var(--muted)}
.rb.wait{background:rgba(192,96,90,.14);color:#a34b46;font-weight:700}
.ract{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-top:15px}
.rbtn{border:none;border-radius:8px;padding:8px 20px;font-size:13px;cursor:pointer;
  font-weight:700;font-family:inherit}
.rbtn.pub{background:var(--accent);color:#fff}
.rbtn.pub:hover{background:#3d6d9d}
.rbtn.rej{background:var(--panel2);color:var(--muted);border:1px solid var(--line)}
.rbtn.rej:hover{color:#a34b46;border-color:var(--lv3)}
.rbtn:disabled{opacity:.5;cursor:default}
.hint.ok{color:#2f7d52}
.hint.warn{color:#a34b46;font-weight:700}

.rbody{min-height:320px;padding:22px 26px}
.rhead{border-bottom:1px solid var(--line);padding-bottom:14px;margin-bottom:18px}
.rhead h2{margin:0 0 8px;font-size:18px}
.rmeta{display:flex;gap:16px;flex-wrap:wrap;color:var(--muted);font-size:12px}
.rsum{margin-top:12px;padding:11px 14px;background:#f7fafd;border-left:3px solid var(--accent);
  border-radius:0 8px 8px 0;font-size:13.5px;font-weight:600;color:#2f3844}

.rmd{font-size:13.5px;line-height:1.75}
.rmd h3{margin:22px 0 10px;font-size:14px;font-weight:700;color:var(--accent)}
.rmd h3:first-child{margin-top:0}
.rmd p{margin:0 0 9px}
.rmd ul{margin:0 0 10px;padding-left:20px}
.rmd li{margin-bottom:6px}
.rmd b{font-weight:700;color:#2f3844}
.rmd code{background:var(--panel2);padding:1px 5px;border-radius:4px;font-size:12.5px}
/* 一组信号一张卡；四个标签各自一个颜色，扫一眼就能分出层次 */
.rmd .sigbox{background:var(--panel2);border-radius:8px;padding:9px 12px;margin:0 0 10px}
.rmd p.sig{display:flex;align-items:flex-start;margin:0;padding:3px 0}
/* 每张卡的首行（【信号】）当标题，和下面三行佐证分开 */
.rmd p.sig.hd{padding-bottom:5px;margin-bottom:5px;border-bottom:1px dashed #ddd9d0}
.rmd p.sig.hd .lbt{font-weight:700;color:#2f3844}
.rmd .lb{flex:0 0 auto;min-width:58px;margin-right:8px;padding:1px 7px;border-radius:5px;
  font-size:11.5px;font-weight:700;line-height:1.7;text-align:center}
.rmd .lbt{flex:1;min-width:0}
.rmd .lb0{background:#e8e6e0;color:#6b7078}                 /* 未识别的标签 */
.rmd .lb1{background:rgba(192,86,79,.13);color:#b04a43}     /* 信号 */
.rmd .lb2{background:rgba(139,144,152,.16);color:#6b7078}   /* 依据 */
.rmd .lb3{background:rgba(74,127,181,.14);color:#3f6f9e}   /* 模型 */
.rmd .lb4{background:rgba(63,143,106,.14);color:#357a58}   /* 向下传导 */
.rmd .lb5{background:rgba(207,148,64,.16);color:#9c6a1c}   /* 框架冲击：事件/触及/复核 */

.chips{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:12px}
canvas{width:100%;background:var(--panel2);border-radius:10px;display:block}
.axis{display:flex;justify-content:space-between;font-size:11px;color:var(--muted);margin-top:8px}
.empty{text-align:center;color:var(--muted);font-size:13px;padding:50px 0}

footer{display:flex;justify-content:space-between;padding:14px 22px;color:var(--muted);
  font-size:12px;border-top:1px solid var(--line);flex-wrap:wrap;gap:8px;background:var(--panel)}

@media(max-width:820px){
  body{font-size:13px;overflow-x:hidden}
  .topbar{padding:12px 14px;gap:10px;align-items:flex-start}
  .topbar h1{font-size:16px} .logo{width:38px;height:38px} .sub{display:none}
  .meta{width:100%;justify-content:space-between;gap:8px}
  .meta-item{align-items:flex-start}
  .tabs{padding:8px 12px 0;overflow-x:auto;white-space:nowrap}
  .tab{padding:9px 13px;font-size:13px}
  main{padding:12px 12px 30px}
  .model,.card{padding:13px}
  .node .row{grid-template-columns:1fr 70px 78px;grid-template-areas:"nm num tags" "bar bar bar";
    gap:6px 10px}
  .node .nm{grid-area:nm} .node .bar{grid-area:bar} .node .num{grid-area:num}
  .node .tags{grid-area:tags} .node .dg{display:none}
  .fi{grid-template-columns:56px 1fr}
  #live .fi{grid-template-columns:80px 1fr}
  .report-wrap{grid-template-columns:1fr;gap:12px}
  .rlist{flex-direction:row;overflow-x:auto;padding-bottom:6px}
  .ritem{min-width:230px;flex:0 0 auto}
  .rbody{padding:16px 14px}
  .rmd{font-size:13px}
}

/* ── 模型库（Markdown 渲染的阅读页）── */
.mdl-wrap{display:grid;grid-template-columns:212px 1fr;gap:16px;align-items:start}
.mdl-nav{position:sticky;top:12px;max-height:calc(100vh - 96px);overflow:auto;
  background:var(--panel);border:1px solid var(--line);border-radius:10px;padding:8px}
.mdl-nav a{display:block;padding:7px 10px;border-radius:7px;color:var(--muted);
  font-size:13px;line-height:1.4;cursor:pointer}
.mdl-nav a:hover{background:var(--panel2);color:var(--txt)}
.mdl-nav a.on{background:#eef3f9;color:var(--accent);font-weight:700}
.mdl-nav a .n{font-family:Consolas,monospace;font-size:12px;color:#b8b3a8;margin-right:5px}
.mdl-nav a.on .n{color:var(--accent)}
.mdl-nav .nsep{margin:9px 0 3px;padding:0 10px;font-size:11px;color:#b8b3a8;letter-spacing:.08em}
.mdl-body{min-width:0;padding:20px 24px}
.mdl-body h1{font-size:20px;margin:0 0 12px;line-height:1.4}
.mdl-body h2{font-size:16px;margin:24px 0 8px;padding-left:9px;border-left:3px solid var(--accent)}
.mdl-body h3{font-size:14.5px;margin:16px 0 6px}
.mdl-body p{margin:8px 0;line-height:1.85}
.mdl-body ul,.mdl-body ol{margin:8px 0;padding-left:22px}
.mdl-body li{margin:5px 0;line-height:1.8}
.mdl-body ul ul,.mdl-body ul ol,.mdl-body ol ul,.mdl-body ol ol{margin:4px 0}
.mdl-body blockquote{margin:10px 0;padding:9px 14px;background:var(--panel2);
  border-left:3px solid var(--line);border-radius:0 6px 6px 0;color:var(--muted);
  font-size:12.5px;line-height:1.75}
.mdl-body hr{border:0;border-top:1px solid var(--line);margin:18px 0}
.mdl-body pre{margin:10px 0;padding:12px 14px;background:var(--panel2);
  border:1px solid var(--line);border-radius:8px;overflow-x:auto;font-size:12.5px;line-height:1.6}
.mdl-body pre code{font-family:Consolas,Monaco,monospace;white-space:pre;
  background:none;padding:0;font-size:12.5px}
.mdl-body code{background:#f3f4f6;padding:1px 5px;border-radius:4px;font-size:12.5px;
  font-family:Consolas,Monaco,monospace}
.mdl-body table{border-collapse:collapse;width:100%;font-size:13px;margin:10px 0}
.mdl-body th,.mdl-body td{border:1px solid var(--line);padding:7px 9px;
  text-align:left;vertical-align:top}
.mdl-body th{background:var(--panel2);font-weight:600;white-space:nowrap}
.mdl-body .tw{overflow-x:auto}
.mdl-toc{margin:0 0 18px;padding:11px 14px;background:var(--panel2);
  border-radius:8px;font-size:12.5px;line-height:1.9}
.mdl-toc b{display:block;margin-bottom:5px;color:var(--muted);font-weight:600}
.mdl-toc a{color:var(--accent);cursor:pointer;margin-right:14px;
  border-bottom:1px dashed #cbd5e1}
@media(max-width:820px){
  .mdl-wrap{grid-template-columns:1fr;gap:12px}
  .mdl-nav{position:static;max-height:none}
  .mdl-nav a{display:inline-block;margin:0 6px 6px 0;padding:6px 11px;
    border:1px solid var(--line);border-radius:20px}
  .mdl-body{padding:16px 14px}
  .mdl-body table{font-size:12px}
}

/* ── 归位依据（看板上点数字 / 点条目展开）── */
.node .num{cursor:pointer;white-space:nowrap}
.node .num:hover b{color:var(--accent)}
.node .num::after{content:"▾";font-size:9px;color:#c4bfb4;margin-left:3px;vertical-align:1px}
.node.open .num::after{content:"▴"}
.evsum{padding:7px 10px;margin-bottom:6px;background:var(--panel2);
  border-radius:6px;font-size:12px;color:var(--muted)}
.fi.ev{cursor:pointer;border-radius:6px}
.fi.ev:hover{background:#f8f9fb}
.fi.ev[data-open="1"]{background:#f8f9fb}
/* .fi 是 grid（时间 | 正文 两列）。依据盒是它的第三个子项，
   不跨满列的话会被塞进第一列、宽度只剩几十像素，整块被压成竖条 */
.evbox{grid-column:1 / -1;margin:7px 0 4px 76px;padding:10px 13px;background:#fdfcf9;
  border:1px solid var(--line);border-left:3px solid var(--accent);
  border-radius:0 7px 7px 0;font-size:12.5px;line-height:1.75}
.evh{font-weight:700;color:var(--accent);margin-bottom:7px;font-size:13px}
.evr{display:flex;gap:8px;margin:5px 0}
.evl{flex:0 0 56px;color:#b0aa9e;font-size:12px}
.evv{flex:1;min-width:0;word-break:break-word}
.evv b{color:var(--accent)}
.evv em.nw{font-style:normal;color:#b0aa9e;font-size:11.5px;margin-left:5px}
.w{display:inline-block;padding:1px 7px;margin:1px 4px 1px 0;border-radius:4px;
  background:#eceef1;color:#5a5f66;font-size:12px}
.w.s{background:#fdeceb;color:var(--red);font-weight:600}
.nm{color:#b0aa9e}
.evnone{color:#b0aa9e;font-size:12px}
.evf{margin-top:9px;padding-top:8px;border-top:1px dashed var(--line);font-size:12px}
.evf a{color:var(--accent);margin-right:15px;cursor:pointer}
@media(max-width:820px){
  .evbox{margin-left:8px;padding:9px 10px}
  .evr{display:block}
  .evl{display:block;margin-bottom:1px}
}
