:root{
  --ink:#14263E;
  --deep:#0C1828;
  --paper:#F5F7F9;
  --white:#FFFFFF;
  --steel:#5A6B80;
  --copper:#B07C3A;
  --copper-dark:#8F6228;
  --line:#D8DEE6;
  --serif:"Noto Serif SC","Songti SC","STSong","SimSun",serif;
  --sans:"PingFang SC","Hiragino Sans GB","Microsoft YaHei","Source Han Sans SC",sans-serif;
  /* 阅读版心:780px @16px ≈ 48 字/行,对齐公众号栏宽节奏 */
  --measure:780px;
  /* 数据表与正文同宽,左右边缘对齐 */
  --wide-table:var(--measure);
  /* CTA / 底部导航等整块区域 */
  --block-w:940px;
  /* 统一图框:所有配图渲染成同一尺寸,不裁切、不拉伸,四周补白。
     宽度 = 正文版心,配图左右边缘与正文对齐。 */
  --fig-w:var(--measure);
  /* 图框比例仍按 940×400(2.35:1)。源图文件继续出 940×400,
     渲染到 780 宽时是缩小,高分屏反而更清楚,不必重新出图。 */
  --fig-ar:940 / 400;
  /* 补白色 = 配图自身背景色,接缝不可见 */
  --fig-bg:#FCFCFB;
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{font-family:var(--sans);color:var(--ink);background:var(--paper);line-height:1.75;font-size:16px}
img{max-width:100%}
a{color:inherit;text-decoration:none}
a:focus-visible,button:focus-visible{outline:2px solid var(--copper);outline-offset:3px}

header{position:fixed;top:0;left:0;right:0;z-index:100;background:rgba(245,247,249,.92);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.nav{max-width:1200px;margin:0 auto;padding:0 24px;height:64px;display:flex;align-items:center;justify-content:space-between}
.logo{display:flex;align-items:center;gap:12px}
.logo .mark{width:34px;height:34px;display:inline-flex;align-items:center;justify-content:center;font-family:var(--serif);font-size:13px;font-weight:700;letter-spacing:.08em;color:#fff;background:var(--deep);border:1px solid var(--copper);flex-shrink:0}
.logo .wordmark{display:flex;align-items:baseline;gap:10px}
.logo .zh{font-family:var(--serif);font-size:22px;font-weight:700;letter-spacing:.12em}
.logo .en{font-size:11px;color:var(--steel);letter-spacing:.18em;text-transform:uppercase}
.nav ul{display:flex;list-style:none;gap:28px}
.nav ul a{font-size:14px;color:var(--steel);letter-spacing:.05em;transition:color .2s}
.nav ul a:hover{color:var(--copper)}
.nav ul a.active{color:var(--copper)}
.nav .cta{border:1px solid var(--ink);padding:7px 18px;font-size:13px;letter-spacing:.1em;color:var(--ink);transition:all .2s}
.nav .cta:hover{background:var(--ink);color:#fff}
.menu-btn{display:none;background:none;border:none;font-size:22px;cursor:pointer;color:var(--ink)}

.insights-hero{padding:140px 24px 60px;background:var(--white);border-bottom:1px solid var(--line);position:relative;overflow:hidden}
.insights-hero .wrap{max-width:1200px;margin:0 auto;position:relative;z-index:2}
.insights-hero .tag{font-size:12px;letter-spacing:.35em;color:var(--copper);display:block;margin-bottom:14px}
.insights-hero h1{font-family:var(--serif);font-size:clamp(32px,4.2vw,48px);font-weight:700;letter-spacing:.06em;margin-bottom:18px;line-height:1.35}
.insights-hero p{color:var(--steel);max-width:640px;font-size:17px;line-height:1.8}
.insights-hero::after{content:"";position:absolute;right:-80px;top:80px;width:280px;height:280px;border:1px solid var(--line);border-radius:50%;opacity:.7}
.insights-hero::before{content:"";position:absolute;right:60px;top:180px;width:120px;height:120px;border:1px solid var(--copper);border-radius:50%;opacity:.25}

.insights-list{padding:80px 24px 40px}
.insights-list .wrap{max-width:1200px;margin:0 auto}
.category-bar{display:flex;gap:12px;flex-wrap:wrap;margin-bottom:40px;padding-bottom:20px;border-bottom:1px solid var(--line)}
.category-bar a{font-size:13px;padding:6px 16px;border:1px solid var(--line);color:var(--steel);letter-spacing:.08em;transition:all .2s;background:var(--white)}
.category-bar a:hover,.category-bar a.on{border-color:var(--copper);color:var(--copper);background:#FDFBF7}
.card-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}
.article-card{background:var(--white);border:1px solid var(--line);padding:32px 28px;transition:transform .25s,box-shadow .25s;display:flex;flex-direction:column;text-decoration:none;color:inherit;position:relative}
.article-card:hover{transform:translateY(-2px);box-shadow:0 12px 30px -14px rgba(20,38,62,.28);border-color:#C7CFDA}
.article-card .cat{font-family:var(--serif);font-size:11px;color:var(--copper);letter-spacing:.28em;text-transform:uppercase}
.article-card h3{font-family:var(--serif);font-size:20px;font-weight:700;letter-spacing:.06em;margin:14px 0 12px;line-height:1.55}
.article-card p{font-size:14.5px;color:var(--steel);line-height:1.75;flex-grow:1}
.article-card .meta{margin-top:22px;padding-top:16px;border-top:1px solid var(--line);display:flex;justify-content:space-between;align-items:center;font-size:12px;color:var(--steel);letter-spacing:.05em}
.article-card .read{color:var(--ink);transition:color .2s;letter-spacing:.08em}
.article-card .read::after{content:" →";color:var(--copper);margin-left:2px}
.article-card:hover .read{color:var(--copper)}
.empty-tip{padding:60px 40px;text-align:center;background:var(--white);border:1px dashed var(--line);color:var(--steel);grid-column:1/-1}
.empty-tip .k{font-family:var(--serif);font-size:18px;color:var(--ink);margin-bottom:8px;letter-spacing:.05em}

/* 注意:上面的 header{position:fixed} 是元素选择器,会命中 <header class="article-header">。
   文章标题块必须显式改回文档流,否则它会脱流并盖住开头几段正文。 */
.article-header{position:static;padding:84px 40px 18px;background:var(--white);border-bottom:1px solid var(--line)}
.article-header .wrap{max-width:var(--measure);margin:0 auto}
.article-header .cat{font-family:var(--serif);font-size:11px;color:var(--copper);letter-spacing:.32em;text-transform:uppercase;display:block;margin-bottom:8px}
.article-header h1{font-family:var(--serif);font-size:clamp(24px,2.6vw,31px);font-weight:700;line-height:1.45;letter-spacing:.03em}
.article-header .meta{margin-top:12px;font-size:12.5px;color:var(--steel);letter-spacing:.12em;display:flex;gap:18px;flex-wrap:wrap}

.article-body{padding:28px 40px 40px}
.article-body .wrap{max-width:var(--measure);margin:0 auto;font-size:16px;line-height:1.95;color:#25344A}
.article-body h2{font-family:var(--serif);font-size:22px;font-weight:700;letter-spacing:.05em;margin:52px 0 16px;padding-top:14px;position:relative;color:var(--ink);line-height:1.5}
.article-body h2::before{content:"";position:absolute;top:0;left:0;width:32px;height:2px;background:var(--copper)}
.article-body h3{font-family:var(--serif);font-size:17.5px;margin:32px 0 10px;letter-spacing:.05em;color:var(--ink);line-height:1.6}
.article-body p{margin-bottom:20px}
.article-body ul,.article-body ol{margin:18px 0 24px 24px}
.article-body li{margin-bottom:10px}
/* 统一图框:每张配图占据完全相同的宽高,内容等比缩放居中(contain,不裁不拉),
   余量用 --fig-bg 补白。源图比例不必一致,由此处兜底。 */
.article-body img{display:block;width:min(var(--fig-w),calc(100vw - 48px));max-width:none;aspect-ratio:var(--fig-ar);object-fit:contain;background:var(--fig-bg);margin:32px 0 10px;margin-left:50%;transform:translateX(-50%);box-shadow:0 4px 24px rgba(20,38,62,.12);border:1px solid var(--line)}
.article-body blockquote{margin:32px 0;padding:20px 26px;background:var(--white);border-left:3px solid var(--copper);color:var(--ink);font-family:var(--serif);font-size:16px;line-height:1.85}
.article-body a{color:var(--copper);text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px}
.article-body a:hover{color:var(--copper-dark)}
.article-body strong{color:var(--ink);font-weight:600}
.article-body hr{border:none;border-top:1px solid var(--line);margin:40px 0}
/* 数据表同样越出正文列,给列宽留出呼吸 */
.article-body table{width:min(var(--wide-table),calc(100vw - 48px));border-collapse:collapse;margin:32px 0;margin-left:50%;transform:translateX(-50%);font-size:14.5px;line-height:1.75;background:var(--white)}
.article-body th,.article-body td{padding:13px 18px;border-bottom:1px solid var(--line);text-align:left;vertical-align:top}
.article-body th{background:var(--paper);font-family:var(--serif);letter-spacing:.05em;color:var(--ink);white-space:nowrap}
.article-body .fig-cap{margin:0 0 34px;text-align:center;font-size:13px;color:var(--steel);letter-spacing:.05em}
.article-body .note{margin:44px 0 0;padding:18px 22px;background:var(--white);border:1px solid var(--line);font-size:13.5px;color:var(--steel);line-height:1.9}

.article-cta{margin:72px auto 0;max-width:var(--block-w);padding:40px;background:var(--deep);color:#E8EDF3;text-align:center}
.article-cta .tag{font-size:11px;letter-spacing:.32em;color:#D19654;display:block;margin-bottom:14px}
.article-cta h3{font-family:var(--serif);font-size:22px;color:#fff;margin-bottom:12px;letter-spacing:.05em}
.article-cta p{color:#9FB0C3;font-size:14.5px;margin-bottom:22px;line-height:1.7}
.article-cta .btn{display:inline-block;padding:12px 32px;background:linear-gradient(135deg,#D19654 0%,#B07C3A 100%);color:#0C1828;font-weight:600;font-size:14px;letter-spacing:.12em;transition:all .25s;border:none;cursor:pointer;font-family:inherit}
.article-cta .btn:hover{background:linear-gradient(135deg,#E8B450 0%,#D19654 100%);transform:translateY(-1px);box-shadow:0 8px 24px -4px rgba(232,180,80,.5)}

.article-nav{max-width:var(--block-w);margin:50px auto 40px;padding:0 24px;display:flex;justify-content:space-between;font-size:14px;color:var(--steel);letter-spacing:.1em}
.article-nav a{color:var(--copper);transition:color .2s}
.article-nav a:hover{color:var(--copper-dark)}

footer{background:var(--deep);color:#8FA0B4;padding:36px 24px;font-size:13px;margin-top:80px}
footer .wrap{max-width:1200px;margin:0 auto;display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap}
footer a{color:#8FA0B4}
footer a:hover{color:#fff}

@media (max-width:900px){
  .card-grid{grid-template-columns:1fr 1fr}
}
@media (max-width:720px){
  .nav ul{display:none}
  .nav ul.open{display:flex;position:absolute;top:64px;left:0;right:0;background:var(--paper);flex-direction:column;gap:0;border-bottom:1px solid var(--line)}
  .nav ul.open li{border-top:1px solid var(--line)}
  .nav ul.open a{display:block;padding:16px 24px}
  .menu-btn{display:block}
  .card-grid{grid-template-columns:1fr}
  .insights-hero{padding:120px 20px 40px}
  .insights-hero::after,.insights-hero::before{display:none}
  .insights-list{padding:50px 20px 20px}
  .article-body{padding:20px 20px 20px}
  .article-body .wrap{font-size:16.5px;line-height:1.9}
  .article-body h2{font-size:20px;margin:40px 0 14px}
  .article-body h3{font-size:17px;margin:26px 0 10px}
  .article-body table{font-size:13.5px}
  .article-body th,.article-body td{padding:10px 12px}
  .article-header{padding:80px 20px 14px}
  .article-cta{padding:30px 24px}
}

/* ── PPT 来源配图:点击看大图 ──────────────────────────────
   PPT 导出图为 16:9,contain 进 2.35:1 图框后内容只占框宽 76~83%,
   密集图表在 780 版心下偏小。缩略图保持 940×400 统一图框不动(版式不能破),
   另存一份未加框的高分辨率原图,点击以浮层打开。
   全部选择器都挂在 .article-body a.zoom / .sj-lightbox 下,
   不写元素选择器,不影响任何既有文章。 */
.article-body a.zoom{display:block;width:min(var(--fig-w),calc(100vw - 48px));margin:32px 0 10px;margin-left:50%;transform:translateX(-50%);position:relative;line-height:0;text-decoration:none;cursor:zoom-in}
/* 覆盖 .article-body img 的居中 hack:居中改由外层 a 承担 */
.article-body a.zoom img{width:100%;margin:0;transform:none}
.article-body a.zoom::after{content:"⤢ 点击看大图";position:absolute;right:12px;bottom:12px;padding:5px 11px;background:rgba(12,24,40,.82);color:#F2F5F8;font-family:var(--sans);font-size:11.5px;letter-spacing:.08em;line-height:1.6;opacity:0;transition:opacity .18s ease;pointer-events:none}
.article-body a.zoom:hover::after,.article-body a.zoom:focus-visible::after{opacity:1}
.article-body a.zoom:focus-visible{outline:2px solid var(--copper);outline-offset:3px}

.sj-lightbox{position:fixed;inset:0;z-index:200;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:16px;padding:40px 24px;background:rgba(8,16,28,.93);opacity:0;transition:opacity .2s ease;cursor:zoom-out}
.sj-lightbox.on{opacity:1}
.sj-lightbox img{max-width:96vw;max-height:84vh;width:auto;height:auto;background:#FFF;box-shadow:0 18px 60px rgba(0,0,0,.5);cursor:default}
.sj-lightbox figcaption{max-width:min(96vw,940px);text-align:center;color:#C9D3DF;font-size:13px;letter-spacing:.05em;line-height:1.7}
.sj-lightbox .close{position:absolute;top:18px;right:22px;width:38px;height:38px;border:1px solid rgba(255,255,255,.28);background:transparent;color:#E8EDF3;font-family:var(--sans);font-size:20px;line-height:1;cursor:pointer}
.sj-lightbox .close:hover{background:rgba(255,255,255,.12)}
body.sj-lb-open{overflow:hidden}

@media (max-width:720px){
  /* 触屏没有 hover,提示常驻 */
  .article-body a.zoom::after{opacity:1;font-size:11px;padding:4px 9px}
  .sj-lightbox{padding:56px 12px 24px}
  .sj-lightbox img{max-width:98vw;max-height:78vh}
}
@media (prefers-reduced-motion:reduce){
  .sj-lightbox,.article-body a.zoom::after{transition:none}
}
