/* ============================================================
   viz.css · 数据可视化组件库（aam.bj.cn）
   轻量、无依赖，配合 assets/viz.js 做入场动画。
   配色遵循浅色主题：主蓝 #0E62C7 / 深蓝 #0E2A5C / 青蓝 #3fb3d9
   对比度铁律：组件一律白卡深字，禁止白字落浅底。
   ============================================================ */

/* ---------- 通用容器 ---------- */
.viz-panel{padding:26px;border-radius:16px;background:#FFFFFF;
  border:1px solid rgba(0,40,160,.11);box-shadow:var(--shadow-sm)}
.viz-panel-h{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;
  flex-wrap:wrap;margin-bottom:18px;padding-bottom:14px;border-bottom:1px solid rgba(0,40,160,.09)}
.viz-panel-t{font-size:16.5px;font-weight:700;color:#0E2A5C;margin:0}
.viz-panel-s{font-size:12.5px;color:#5B6B8C;margin:4px 0 0}
.viz-note{font-size:11.5px;color:#8A9BBD;line-height:1.7}

/* ---------- 1. 全球会议分布图 ---------- */
.cmap{position:relative;border-radius:14px;overflow:hidden;background:#F5F9FF;
  border:1px solid rgba(0,40,160,.09)}
.cmap svg{display:block;width:100%;height:auto}
.cmap-land{fill:#DCEAF8;stroke:#FFFFFF;stroke-width:.6}
.cmap-grat{stroke:rgba(0,40,160,.10);stroke-width:.5;fill:none}
.cmap-equator{stroke:rgba(0,40,160,.20);stroke-width:.6;stroke-dasharray:4 4;fill:none}

/* 航线弧 */
.cmap-arc{fill:none;stroke:#0E62C7;stroke-width:.9;opacity:.42}
.cmap-arc.intl{stroke:#3fb3d9}

/* 城市热点 */
.cmap-pt{fill:#0E62C7}
.cmap-pt.intl{fill:#3fb3d9}
.cmap-halo{fill:none;stroke:#0E62C7;stroke-width:.8;opacity:0}
.cmap-halo.intl{stroke:#3fb3d9}
.cmap-g.on .cmap-halo{animation:cmapPulse 2.6s ease-out infinite}
.cmap-g.on .cmap-halo.d2{animation-delay:1.3s}
@keyframes cmapPulse{
  0%{r:3;opacity:.75}
  70%{r:11;opacity:0}
  100%{r:11;opacity:0}
}
.cmap-lb{font-size:11px;font-weight:700;fill:#0E2A5C;paint-order:stroke;
  stroke:#FFFFFF;stroke-width:2.4px;stroke-linejoin:round}
.cmap-lb.sub{font-size:9px;font-weight:600;fill:#5B6B8C}
.cmap-g{opacity:0;transition:opacity .5s ease}
.cmap-g.on{opacity:1}

.cmap-legend{display:flex;flex-wrap:wrap;gap:18px;margin-top:14px;
  padding-top:14px;border-top:1px solid rgba(0,40,160,.09)}
.cmap-lg{display:flex;align-items:center;gap:8px;font-size:12px;color:#4A5D86}
.cmap-lg i{width:10px;height:10px;border-radius:50%;flex:none}
.cmap-lg i.cn{background:#0E62C7}
.cmap-lg i.intl{background:#3fb3d9}
.cmap-lg i.arc{width:18px;height:2px;border-radius:2px;background:#0E62C7;opacity:.5}

/* ---------- 2. 年度时间轴 ---------- */
.ctline{position:relative;padding:6px 0 0}
.ct-track{position:relative;display:grid;grid-template-columns:repeat(auto-fit,minmax(210px,1fr));gap:0}
.ct-track::before{content:"";position:absolute;left:0;right:0;top:23px;height:2px;
  background:linear-gradient(90deg,rgba(0,40,160,.08),rgba(0,40,160,.22),rgba(0,40,160,.08))}
.ct-node{position:relative;padding:0 12px 0 0;text-align:left}
.ct-dot{position:relative;z-index:2;width:14px;height:14px;border-radius:50%;
  background:#FFFFFF;border:2.5px solid #0E62C7;box-shadow:0 0 0 4px rgba(14,98,199,.10)}
.ct-node.is-cn .ct-dot{border-color:#0E62C7}
.ct-node.is-intl .ct-dot{border-color:#3fb3d9}
.ct-node.is-past .ct-dot{border-color:#B9C7DD}
.ct-node.is-next .ct-dot{background:#0E62C7;box-shadow:0 0 0 5px rgba(14,98,199,.18)}
.ct-q{font-family:var(--font-num);font-size:11px;font-weight:700;letter-spacing:.06em;
  color:#0E62C7;margin:10px 0 6px}
.ct-name{font-size:13.5px;font-weight:700;color:#0E2A5C;line-height:1.5;margin-bottom:5px}
.ct-meta{font-size:11.5px;color:#5B6B8C;line-height:1.7}
.ct-flag{display:inline-block;margin-top:7px;padding:2px 8px;border-radius:20px;
  font-size:10px;font-weight:700;letter-spacing:.04em;
  background:rgba(14,98,199,.09);color:#0E62C7}
.ct-flag.intl{background:rgba(63,179,217,.14);color:#0E6A8A}
.ct-flag.past{background:rgba(0,40,160,.05);color:#8A9BBD}
.ct-node.is-next .ct-flag{background:linear-gradient(135deg,#002890,#1168BF);color:#fff}

/* ---------- 3. 数据条形图 ---------- */
.vbars{display:flex;flex-direction:column;gap:14px}
.vbar-row{display:grid;grid-template-columns:112px 1fr 54px;align-items:center;gap:12px}
.vbar-k{font-size:12.5px;font-weight:600;color:#0E2A5C;text-align:right;line-height:1.4}
.vbar-track{height:12px;border-radius:8px;background:#EDF3FA;overflow:hidden}
.vbar-fill{height:100%;border-radius:8px;width:0;
  background:linear-gradient(90deg,#0E62C7,#3fb3d9);
  transition:width 1.1s cubic-bezier(.22,.9,.3,1)}
.vbar-fill.alt{background:linear-gradient(90deg,#002890,#1168BF)}
.vbar-v{font-family:var(--font-num);font-size:13px;font-weight:700;color:#0E62C7}
.vbar-v em{font-style:normal;font-size:10px;color:#8A9BBD;margin-left:2px}

/* ---------- 4. 环形占比（conic-gradient） ---------- */
.vdonuts{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:20px}
.vdonut{display:flex;flex-direction:column;align-items:center;gap:12px}
.vdonut-ring{position:relative;width:118px;height:118px;border-radius:50%;
  background:conic-gradient(#0E62C7 0turn var(--p),#EDF3FA var(--p) 1turn);
  display:flex;align-items:center;justify-content:center}
.vdonut-ring::after{content:"";position:absolute;inset:11px;border-radius:50%;background:#fff}
.vdonut-num{position:relative;z-index:1;font-family:var(--font-num);font-size:22px;font-weight:700;color:#0E2A5C}
.vdonut-num small{font-size:11px;color:#8A9BBD;margin-left:1px}
.vdonut-t{font-size:12.5px;font-weight:600;color:#0E2A5C;text-align:center}
.vdonut-s{font-size:11px;color:#8A9BBD;text-align:center;margin-top:-6px}

/* ---------- 5. 关键数字 ---------- */
.vstats{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px}
.vstat{padding:20px;border-radius:14px;background:linear-gradient(180deg,#FFFFFF,#FAFCFF);
  border:1px solid rgba(0,40,160,.10);text-align:center}
.vstat b{display:block;font-family:var(--font-num);font-size:30px;font-weight:700;line-height:1.1;
  color:#0E62C7;letter-spacing:-.01em}
.vstat b small{font-size:14px;margin-left:2px}
.vstat span{display:block;margin-top:8px;font-size:12.5px;color:#4A5D86;line-height:1.6}
.vstat i{display:block;margin-top:4px;font-style:normal;font-size:10.5px;color:#8A9BBD}

/* ---------- 6. 术语对照表 ---------- */
.vterms{display:grid;grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:16px}
.vterm{padding:18px 20px;border-radius:14px;background:#FFFFFF;
  border:1px solid rgba(0,40,160,.11);transition:border-color .2s,box-shadow .2s}
.vterm:hover{border-color:rgba(0,40,160,.28);box-shadow:var(--shadow-sm)}
.vterm-h{display:flex;align-items:baseline;gap:10px;flex-wrap:wrap;margin-bottom:8px}
.vterm-ab{font-family:var(--font-num);font-size:15px;font-weight:700;color:#0E62C7;letter-spacing:.02em}
.vterm-cn{font-size:14px;font-weight:700;color:#0E2A5C}
.vterm-en{font-size:10.5px;color:#8A9BBD;font-family:var(--font-num);letter-spacing:.02em;
  flex-basis:100%;margin-top:-4px}
.vterm-d{font-size:12.5px;line-height:1.8;color:#4A5D86}

/* ---------- 7. 倒计时条 ---------- */
.vcd-row{display:grid;grid-template-columns:repeat(auto-fit,minmax(268px,1fr));gap:14px}
.vcd{position:relative;overflow:hidden;display:flex;align-items:center;gap:13px;padding:15px 16px;
  border-radius:13px;background:#FFFFFF;border:1px solid rgba(0,40,160,.11);
  transition:box-shadow .25s,border-color .25s,transform .25s}
.vcd:hover{transform:translateY(-2px);box-shadow:0 10px 24px rgba(11,62,150,.12);
  border-color:rgba(14,98,199,.28)}
.vcd-clock{flex:none;display:flex;align-items:center;gap:2px;padding:5px 8px;border-radius:8px;
  background:rgba(14,98,199,.07);border:1px solid rgba(14,98,199,.13)}
.vcd-clock i{font-style:normal;font-family:var(--font-num);font-size:12.5px;font-weight:700;
  color:#0E62C7;font-variant-numeric:tabular-nums;min-width:19px;text-align:center}
.vcd-clock em{font-style:normal;font-size:11px;color:#8A9BBD;opacity:.75}
.vcd[data-state="past"]{opacity:.62}
.vcd[data-state="past"] .vcd-day{background:linear-gradient(135deg,#5B6B8C,#8A9BBD)}
.vcd[data-state="past"] .vcd-clock{display:none}
@media (max-width:520px){.vcd-clock{display:none}}
.vcd-day{flex:none;width:52px;height:52px;border-radius:12px;display:flex;flex-direction:column;
  align-items:center;justify-content:center;
  background:linear-gradient(135deg,#002890,#1168BF);color:#fff}
.vcd-day b{font-family:var(--font-num);font-size:19px;font-weight:700;line-height:1}
.vcd-day span{font-size:9.5px;opacity:.85;margin-top:2px}
.vcd-body{min-width:0}
.vcd-t{font-size:13.5px;font-weight:700;color:#0E2A5C;line-height:1.45;
  overflow:hidden;text-overflow:ellipsis;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.vcd-m{font-size:11.5px;color:#5B6B8C;margin-top:4px}

/* ---------- 8. 里程碑 / 阶段流程 ---------- */
.vmile{position:relative;padding-left:26px;display:flex;flex-direction:column;gap:22px}
.vmile::before{content:"";position:absolute;left:7px;top:6px;bottom:6px;width:2px;
  background:linear-gradient(180deg,#0E62C7,#3fb3d9)}
.vmile-item{position:relative}
.vmile-item::before{content:"";position:absolute;left:-26px;top:5px;width:16px;height:16px;
  border-radius:50%;background:#fff;border:3px solid #0E62C7}
.vmile-item.is-vs::before{border-color:#3fb3d9}
.vmile-d{font-family:var(--font-num);font-size:12px;font-weight:700;color:#0E62C7;letter-spacing:.03em}
.vmile-t{font-size:15px;font-weight:700;color:#0E2A5C;margin:5px 0 6px}
.vmile-p{font-size:12.5px;line-height:1.85;color:#4A5D86}
.vmile-src{margin-top:6px;font-size:11px;color:#8A9BBD}

/* ---------- 9. 图谱（产业链 / 能力矩阵） ---------- */
.vmap-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px}
.vnode{padding:18px;border-radius:14px;background:#FFFFFF;border:1px solid rgba(0,40,160,.11)}
.vnode-k{font-family:var(--font-num);font-size:10px;font-weight:700;letter-spacing:1.2px;
  color:#3fb3d9;margin-bottom:8px}
.vnode-t{font-size:15px;font-weight:700;color:#0E2A5C;margin-bottom:8px}
.vnode ul{list-style:none;padding:0;margin:0;display:flex;flex-direction:column;gap:6px}
.vnode li{position:relative;padding-left:14px;font-size:12.5px;line-height:1.75;color:#4A5D86}
.vnode li::before{content:"";position:absolute;left:0;top:9px;width:5px;height:5px;
  border-radius:50%;background:#0E62C7;opacity:.6}

/* ---------- 10. 价值评级星标 ---------- */
.vstars{display:inline-flex;gap:2px;vertical-align:middle}
.vstars i{width:12px;height:12px;display:inline-block;
  background:linear-gradient(135deg,#FFC83D,#FFA800);
  clip-path:polygon(50% 0,61% 35%,98% 35%,68% 57%,79% 91%,50% 70%,21% 91%,32% 57%,2% 35%,39% 35%)}
.vstars i.off{background:#DDE5F0}

/* ---------- 响应式 ---------- */
@media (max-width:900px){
  .vbar-row{grid-template-columns:92px 1fr 46px}
  .ct-track{grid-template-columns:1fr;gap:18px}
  .ct-track::before{display:none}
  .ct-node{padding-left:22px;border-left:2px solid rgba(0,40,160,.12)}
  .ct-node::before{content:"";position:absolute;left:-7px;top:3px;width:12px;height:12px;
    border-radius:50%;background:#fff;border:2.5px solid #0E62C7}
  .ct-dot{display:none}
  .viz-panel{padding:20px}
}
@media (max-width:640px){
  .vbar-row{grid-template-columns:1fr;gap:6px}
  .vbar-k{text-align:left}
  .vdonut-ring{width:100px;height:100px}
  .cmap-legend{gap:12px}
}

/* ---------- 11. AAM 专题页专属 ---------- */
.vnode-en{font-family:var(--font-num);font-size:10.5px;font-weight:600;letter-spacing:.03em;
  color:#3fb3d9;margin:0 0 8px}
.vnode-p{font-size:12.5px;line-height:1.85;color:#4A5D86;margin:0 0 10px}
.vnode-tag{display:inline-block;padding:4px 10px;border-radius:20px;font-size:11px;font-weight:600;
  background:rgba(14,98,199,.08);color:#0E62C7}
.vnode ul{margin-bottom:4px}
.vnode li::before{background:#3fb3d9}

.aam-rel{max-width:920px;margin:26px auto 0;padding:22px 26px;border-radius:14px;
  background:linear-gradient(135deg,#F0F6FF,#E8F2FC);border:1px solid rgba(0,40,160,.10)}
.aam-rel b{display:block;font-size:15px;font-weight:700;color:#0E2A5C;margin-bottom:8px}
.aam-rel p{font-size:13px;line-height:1.9;color:#4A5D86;margin:0}

.aam-talents{display:grid;grid-template-columns:repeat(2,1fr);gap:16px}
.aam-talent{padding:20px 22px;border-radius:14px;background:#FFFFFF;
  border:1px solid rgba(0,40,160,.11);box-shadow:var(--shadow-sm)}
.aam-talent-h{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:9px}
.aam-talent-h b{font-size:15px;font-weight:700;color:#0E2A5C}
.aam-talent-h span{font-family:var(--font-num);font-size:10.5px;font-weight:600;color:#3fb3d9;
  letter-spacing:.03em;flex:none}
.aam-talent p{font-size:12.5px;line-height:1.85;color:#4A5D86;margin:0}

.aam-table{width:100%;border-collapse:collapse;font-size:13px}
.aam-table th{padding:11px 14px;text-align:left;font-size:12px;font-weight:700;
  color:#0E2A5C;background:rgba(14,98,199,.06);border-bottom:1.5px solid rgba(0,40,160,.14)}
.aam-table td{padding:12px 14px;color:#4A5D86;border-bottom:1px solid rgba(0,40,160,.07);line-height:1.7}
.aam-code{font-family:var(--font-num);font-weight:700;color:#0E62C7}
.aam-major{font-weight:700;color:#0E2A5C}
.aam-more{display:inline-block;margin-top:16px;font-size:13px;font-weight:600;color:#0E62C7}
.aam-all{margin-top:26px;text-align:center}

.aam-sources{list-style:none;padding:0;margin:0;max-width:920px;
  display:grid;grid-template-columns:repeat(2,1fr);gap:10px 26px}
.aam-sources a{display:block;padding:12px 16px;border-radius:11px;font-size:13px;
  color:#0E62C7;background:#FFFFFF;border:1px solid rgba(0,40,160,.10);
  transition:border-color .2s,box-shadow .2s}
.aam-sources a:hover{border-color:rgba(14,98,199,.4);box-shadow:var(--shadow-sm)}
.aam-sources i{font-style:normal;color:#8A9BBD;margin-left:4px}

@media (max-width:900px){
  .aam-talents{grid-template-columns:1fr}
  .aam-sources{grid-template-columns:1fr}
}

/* ---------- 12. 首页会议日历模块 ---------- */
.home-conf{padding:10px 0 26px}
.home-conf .conf-src-link{flex:none;font-size:13px;font-weight:600;color:#0E62C7;white-space:nowrap}
.home-conf .conf-src-link i{font-style:normal;margin-left:2px}
.home-conf-foot{display:flex;flex-wrap:wrap;gap:10px 26px;margin-top:18px;
  padding-top:14px;border-top:1px solid rgba(0,40,160,.09)}
.home-conf-foot a{position:relative;padding-left:14px;font-size:12.5px;font-weight:600;color:#4A5D86;
  transition:color .2s}
.home-conf-foot a::before{content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:5px;height:5px;border-radius:50%;background:#3fb3d9}
.home-conf-foot a:hover{color:#0E62C7}
