/* 健康城市实验室门户 · 样式
   设计语言:Media Lab 式模块化网格 + 大字号编辑式排版 + 等宽标签 + 健康绿/热橙双色 */
/* 自托管字体(子集化:仅含站点用到的字形;国内无需访问 Google Fonts) */
@font-face{font-family:'Noto Sans SC';src:url('assets/fonts/notosanssc.woff2') format('woff2');font-weight:100 900;font-style:normal;font-display:swap;}
@font-face{font-family:'Noto Serif SC';src:url('assets/fonts/notoserifsc.woff2') format('woff2');font-weight:200 900;font-style:normal;font-display:swap;}
@font-face{font-family:'Space Grotesk';src:url('assets/fonts/spacegrotesk.woff2') format('woff2');font-weight:300 700;font-style:normal;font-display:swap;}
@font-face{font-family:'Space Mono';src:url('assets/fonts/spacemono-regular.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap;}
@font-face{font-family:'Space Mono';src:url('assets/fonts/spacemono-bold.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap;}

:root{
  /* 健康绿(凉/健康) */
  --green:#1FA85C; --green-deep:#0F5C32; --green-ink:#0B2A1A;
  --green-soft:#EAF7EF;
  /* 热橙(高温/风险)—— 呼应城市热环境主题 */
  --heat:#FF6A3D; --heat-soft:#FFB454; --heat-bg:#FFF1EA;
  /* 中性 */
  --ink:#0E1512; --grey:#5a7a66; --bg:#ffffff; --bg-alt:#F3F8F4;
  --line:#DCEEE3; --night:#0B1F15;
  /* 语义色(暗色模式下被覆盖) */
  --lead:#314338; --card:#ffffff; --head:var(--green-ink);
  --nav-bg:rgba(255,255,255,.82);
  --hero-a:#F1FAF4; --hero-b:#FFFFFF; --hero-c:#FFF6F1;
  --chip:rgba(255,255,255,.7);
  /* 字体 */
  --serif:'Noto Serif SC','SimSun',serif;
  --sans:'Noto Sans SC','Microsoft YaHei',sans-serif;
  --display:'Space Grotesk','Noto Sans SC',sans-serif;
  --mono:'Space Mono','SFMono-Regular',ui-monospace,monospace;
  --max:1680px;                 /* 内容容器(接近满屏) */
  --pad:clamp(1.2rem,5vw,5rem); /* 横向满铺时的两侧留白 */
}
*{box-sizing:border-box;margin:0;padding:0;}
html{scroll-behavior:smooth;}
body{font-family:var(--sans);color:var(--ink);background:var(--bg);line-height:1.7;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;}
h1,h2,h3{font-family:var(--serif);color:var(--head);letter-spacing:.3px;text-wrap:balance;}
a{color:inherit;text-decoration:none;}
strong{color:var(--green-deep);font-weight:700;}
em{color:var(--grey);font-style:normal;}

/* ===== 导航 ===== */
.nav{position:sticky;top:0;z-index:50;background:var(--nav-bg);
  backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);
  border-bottom:1px solid var(--line);}
.nav-inner{max-width:none;margin:0;padding:.7rem var(--pad);
  display:flex;align-items:center;gap:1.4rem;}
.brand{display:flex;align-items:center;gap:.6rem;font-weight:700;margin-right:auto;}
.brand-mark{width:26px;height:26px;border-radius:7px;flex:none;
  background:conic-gradient(from 210deg,var(--green),var(--heat-soft),var(--heat),var(--green));
  box-shadow:0 0 0 4px rgba(31,168,92,.12);}
.brand-text{font-family:var(--serif);color:var(--head);font-size:1.08rem;
  line-height:1.1;display:flex;flex-direction:column;font-weight:700;}
.brand-text small{font-family:var(--mono);color:var(--grey);font-size:.58rem;
  font-weight:400;letter-spacing:.5px;margin-top:.18rem;}
.nav-links{display:flex;gap:1.1rem;font-size:.92rem;color:var(--ink);font-weight:500;}
.nav-links a{display:flex;align-items:baseline;gap:.3rem;padding:.2rem 0;
  position:relative;transition:color .18s;}
.nav-links a .idx{font-family:var(--mono);font-size:.62rem;color:var(--green);opacity:.7;}
.nav-links a::after{content:"";position:absolute;left:0;bottom:-2px;height:2px;width:0;
  background:var(--heat);transition:width .22s;}
.nav-links a:hover{color:var(--green-deep);}
.nav-links a:hover::after{width:100%;}
.nav-cta{font-family:var(--mono);font-size:.78rem;font-weight:700;
  border:1.5px solid var(--green-ink);border-radius:999px;padding:.4rem .9rem;
  transition:.18s;white-space:nowrap;}
.nav-cta:hover{background:var(--green-ink);color:#fff;}

/* ===== Hero ===== */
.hero{position:relative;overflow:hidden;border-bottom:1px solid var(--line);
  background:linear-gradient(165deg,var(--hero-a) 0%,var(--hero-b) 55%,var(--hero-c) 100%);}
.hero-inner{position:relative;z-index:2;max-width:var(--max);margin:0 auto;
  padding:5rem var(--pad) 4.5rem;}
.hero-copy{max-width:960px;margin:0 auto;text-align:center;}

/* 3D 可视化框 */
.hero-viz{min-width:0;}
.viz-frame{position:relative;width:100%;aspect-ratio:4/3.4;border-radius:22px;
  overflow:hidden;border:1px solid var(--line);
  background:radial-gradient(120% 120% at 70% 20%,#0f2a1c 0%,#081610 70%);
  box-shadow:0 24px 60px rgba(11,42,26,.22);}
.viz-3d,.viz-fallback{position:absolute;inset:0;width:100%;height:100%;display:block;}
.viz-3d{z-index:2;touch-action:none;cursor:grab;}
.viz-3d:active{cursor:grabbing;}
.viz-fallback{z-index:1;display:none;}
.viz-tooltip{position:absolute;z-index:5;transform:translate(-50%,-130%);pointer-events:none;
  background:rgba(8,22,16,.92);border:1px solid rgba(255,180,84,.4);border-radius:9px;
  padding:.35rem .6rem;font-family:var(--mono);font-size:.72rem;color:#fff;line-height:1.35;
  white-space:nowrap;display:flex;flex-direction:column;}
.viz-tooltip[hidden]{display:none;}
.viz-tooltip b{color:var(--heat-soft);}
.viz-tooltip span{color:#bcd9c9;font-size:.64rem;}
.viz-legend{position:absolute;left:14px;bottom:14px;z-index:4;display:flex;align-items:center;
  gap:.45rem;font-family:var(--mono);font-size:.62rem;color:#dff2e7;
  background:rgba(8,22,16,.55);padding:.25rem .5rem;border-radius:999px;}
.viz-legend .grad{width:64px;height:7px;border-radius:4px;
  background:linear-gradient(90deg,#1FA85C,#FFB454,#FF6A3D);}
.viz-label{position:absolute;right:14px;top:14px;z-index:4;font-family:var(--mono);
  font-size:.62rem;color:#bcd9c9;background:rgba(8,22,16,.55);padding:.25rem .55rem;
  border-radius:999px;max-width:60%;text-align:right;}
.hero-eyebrow{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--mono);
  color:var(--green-deep);letter-spacing:1px;font-size:.78rem;font-weight:700;
  background:rgba(255,255,255,.7);border:1px solid var(--line);border-radius:999px;
  padding:.35rem .8rem;}
.hero-eyebrow .dot{width:7px;height:7px;border-radius:50%;background:var(--heat);
  box-shadow:0 0 0 4px rgba(255,106,61,.22);animation:pulse 2.4s infinite;}
@keyframes pulse{0%,100%{transform:scale(1);opacity:1}50%{transform:scale(1.5);opacity:.5}}
.hero-title{font-family:var(--serif);font-weight:900;color:var(--head);
  font-size:clamp(2.6rem,7vw,5.4rem);line-height:1.05;margin:1.4rem 0 1.2rem;
  letter-spacing:-.5px;}
.hero-title .hl{position:relative;white-space:nowrap;}
.hero-title .hl::after{content:"";position:absolute;left:-.04em;right:-.04em;bottom:.06em;
  height:.32em;background:var(--green);opacity:.22;z-index:-1;border-radius:3px;}
.hero-title .hl.heat{color:var(--heat);}
.hero-title .hl.heat::after{background:var(--heat);opacity:.18;}
.hero-tag{max-width:640px;margin:0 auto;color:var(--lead);font-size:clamp(1rem,1.5vw,1.1rem);}
.hero-cta{margin-top:2rem;display:flex;gap:.9rem;flex-wrap:wrap;justify-content:center;}
.btn{display:inline-block;padding:.85rem 1.6rem;border-radius:999px;font-weight:700;
  font-size:.95rem;transition:.18s;font-family:var(--sans);}
.btn-primary{background:var(--green-ink);color:#fff;}
.btn-primary:hover{background:var(--green);transform:translateY(-2px);
  box-shadow:0 10px 24px rgba(15,92,50,.25);}
.btn-ghost{border:1.5px solid var(--green-ink);color:var(--green-ink);}
.btn-ghost:hover{background:var(--green-ink);color:#fff;}

/* 跑马灯 */
.marquee{position:relative;z-index:2;border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);background:var(--green-ink);
  overflow:hidden;padding:.55rem 0;}
.marquee-track{display:inline-flex;align-items:center;white-space:nowrap;
  font-family:var(--mono);font-size:.82rem;color:#dff2e7;font-weight:700;
  letter-spacing:.5px;animation:scroll-x 38s linear infinite;}
.marquee-track span{padding:0 .6rem;}
.marquee-track i{color:var(--heat-soft);font-style:normal;}
@keyframes scroll-x{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ===== 通用区块(满铺边缘对齐)===== */
.sec{padding:5rem var(--pad);}
.sec-inner{max-width:none;margin:0;}
/* 满铺辅助:撑满视口宽度 */
.bleed{width:100%;}
.wrap{max-width:none;margin:0;padding:0 var(--pad);}
.sec-head{margin-bottom:2.2rem;}
.kicker{font-family:var(--mono);font-size:.74rem;font-weight:700;letter-spacing:1.5px;
  color:var(--heat);display:flex;align-items:center;gap:.5rem;margin-bottom:.5rem;}
.kicker span{display:inline-flex;align-items:center;justify-content:center;min-width:22px;
  height:22px;padding:0 .35rem;border-radius:6px;background:var(--heat-bg);
  color:var(--heat);font-size:.66rem;}
.sec-title{font-size:clamp(1.7rem,3.4vw,2.6rem);font-weight:900;line-height:1.1;}
.sec-lead{color:var(--lead);max-width:760px;margin-bottom:1.8rem;font-size:1.04rem;}

/* 关于 */
.about-grid{display:grid;grid-template-columns:.7fr 1.3fr;gap:2.5rem;align-items:start;}
.about-grid .sec-head{margin-bottom:0;}

/* ===== Bento 研究网格 ===== */
.bento{display:grid;grid-template-columns:repeat(4,1fr);gap:1rem;}
.tile{--accent:var(--green);position:relative;background:var(--bg-alt);
  border:1px solid var(--line);border-radius:20px;padding:1.7rem;overflow:hidden;
  transition:transform .22s,box-shadow .22s,border-color .22s;outline:none;
  display:flex;flex-direction:column;min-height:210px;}
.tile-lg{grid-column:span 2;grid-row:span 2;}
.tile-wide{grid-column:span 2;}
.tile:not(.tile-lg){grid-column:span 2;}
.t-heat{--accent:var(--heat);}
.t-walk{--accent:var(--green);}
.t-aid{--accent:var(--heat-soft);}
.t-hia{--accent:var(--green-deep);}

/* 左侧强调条 */
.tile::before{content:"";position:absolute;left:0;top:0;bottom:0;width:5px;
  background:var(--accent);transition:width .22s;z-index:3;}
/* 数据图形母题 */
.motif{position:absolute;right:0;bottom:0;width:62%;max-width:340px;height:auto;
  z-index:1;opacity:.5;transition:opacity .3s,transform .3s;pointer-events:none;}
.tile:hover .motif,.tile:focus-visible .motif{opacity:.85;transform:scale(1.06);}

/* 顶部:图标 + 编号 */
.tile-top{position:relative;z-index:2;display:flex;align-items:center;
  justify-content:space-between;}
.tile-ico{width:48px;height:48px;border-radius:13px;display:flex;align-items:center;
  justify-content:center;color:var(--accent);background:var(--card);border:1px solid var(--line);
  box-shadow:0 4px 12px rgba(11,42,26,.06);transition:.22s;}
.tile-ico svg{width:26px;height:26px;}
.tile:hover .tile-ico,.tile:focus-visible .tile-ico{transform:translateY(-2px) rotate(-4deg);
  border-color:var(--accent);}
.tile-no{font-family:var(--mono);font-size:.72rem;font-weight:700;color:var(--grey);
  letter-spacing:1px;}

/* 正文 */
.tile-body{position:relative;z-index:2;margin-top:auto;padding-top:1.4rem;}
.tile h3{font-size:1.2rem;margin-bottom:.5rem;font-weight:700;line-height:1.2;}
.tile-lg h3{font-size:1.9rem;}
.tile p{color:var(--grey);font-size:.94rem;max-width:30ch;}
.tile-lg p{font-size:1rem;max-width:34ch;}

/* 关键词标签 */
.tile-tags{display:flex;flex-wrap:wrap;gap:.4rem;margin-top:1rem;}
.tile-tags span{font-family:var(--mono);font-size:.66rem;font-weight:700;
  letter-spacing:.3px;color:var(--green-deep);background:var(--chip);
  border:1px solid var(--line);border-radius:999px;padding:.2rem .6rem;}

/* hover 箭头 */
.tile-arrow{position:absolute;right:1.4rem;bottom:1.4rem;z-index:3;font-family:var(--mono);
  font-size:1.1rem;font-weight:700;color:var(--accent);opacity:0;transform:translate(-6px,6px);
  transition:.22s;}
.tile:hover .tile-arrow,.tile:focus-visible .tile-arrow{opacity:1;transform:translate(0,0);}

.tile:hover,.tile:focus-visible{transform:translateY(-5px);
  box-shadow:0 18px 40px rgba(15,92,50,.14);border-color:var(--accent);}
.tile:hover::before,.tile:focus-visible::before{width:7px;}

/* 大卡片:暗色发光,强对比 */
.tile-lg.t-heat{background:radial-gradient(120% 120% at 80% 90%,#1a1208 0%,#0B1F15 55%);
  border-color:#23341f;}
.tile-lg.t-heat h3{color:#fff;}
.tile-lg.t-heat p{color:#cfe0d4;}
.tile-lg .tile-ico{background:rgba(255,106,61,.14);border-color:rgba(255,180,84,.35);
  color:var(--heat-soft);box-shadow:0 0 22px rgba(255,106,61,.3);}
.tile-lg .tile-no{color:#8aa897;}
.tile-lg .tile-tags span{color:var(--heat-soft);background:rgba(255,255,255,.05);
  border-color:rgba(255,180,84,.28);}
.tile-lg .motif{opacity:.85;width:78%;}
.tile-lg.t-heat:hover{border-color:var(--heat);box-shadow:0 22px 48px rgba(255,106,61,.22);}
.tile-lg .rings{animation:ringPulse 4.5s ease-in-out infinite;transform-origin:72% 78%;}
@keyframes ringPulse{0%,100%{opacity:.45;transform:scale(1)}50%{opacity:.8;transform:scale(1.04)}}

/* ===== 平台与工具 ===== */
.tools{display:grid;grid-template-columns:repeat(auto-fit,minmax(320px,1fr));gap:1.2rem;
  max-width:1100px;}
.tool{position:relative;background:var(--card);border:1px solid var(--line);border-radius:20px;
  padding:2rem;display:flex;flex-direction:column;transition:.2s;overflow:hidden;}
.tool::after{content:"";position:absolute;inset:0;border-radius:20px;pointer-events:none;
  box-shadow:inset 0 0 0 0 var(--green);transition:.2s;}
.tool:hover{transform:translateY(-4px);box-shadow:0 16px 40px rgba(15,92,50,.16);
  border-color:var(--green);}
.tool-tag{align-self:flex-start;font-family:var(--mono);background:var(--green-ink);
  color:#fff;font-size:.7rem;font-weight:700;padding:.3rem .8rem;border-radius:999px;
  letter-spacing:.5px;}
.tool h3{font-size:1.4rem;margin:1rem 0 .6rem;font-weight:700;}
.tool p{color:var(--grey);font-size:.96rem;flex:1;}
.tool-go{margin-top:1.4rem;font-family:var(--mono);color:var(--green-deep);font-weight:700;
  font-size:.9rem;transition:.2s;}
.tool:hover .tool-go{color:var(--heat);transform:translateX(6px);}

/* ===== 新闻 / 实验室动态 ===== */
.sec-news{background:var(--bg-alt);}
.news-head{display:flex;justify-content:space-between;align-items:flex-end;gap:1rem;flex-wrap:wrap;}
.news-wechat{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--mono);font-size:.82rem;
  font-weight:700;color:var(--green-deep);border:1px solid var(--line);border-radius:999px;
  padding:.5rem .95rem;transition:.2s;background:var(--card);}
.news-wechat:hover{border-color:var(--green);color:var(--heat);transform:translateY(-2px);}
.news-wechat-ic{width:15px;height:15px;border-radius:3px;background:var(--green-ink);position:relative;}
.news-wechat-ic::before{content:"";position:absolute;left:3px;top:4px;width:4px;height:4px;border-radius:50%;background:var(--green);}
.news-wechat-ic::after{content:"";position:absolute;right:3px;bottom:4px;width:4px;height:4px;border-radius:50%;background:var(--heat-soft);}

.news-grid{display:grid;grid-template-columns:1.45fr 1fr;gap:1.4rem;align-items:start;}

/* 头条卡 */
.news-feature{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);
  border-radius:18px;overflow:hidden;transition:.25s;}
.news-feature:hover{transform:translateY(-4px);box-shadow:0 22px 50px rgba(15,92,50,.18);border-color:var(--green);}
.news-cover{position:relative;overflow:hidden;aspect-ratio:16/9;background:var(--green-ink);}
.news-cover img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .55s ease, filter .55s ease;filter:saturate(.55);}
/* 签名:品牌双色调叠层,悬停褪去露出原图真彩 */
.news-cover::after{content:"";position:absolute;inset:0;pointer-events:none;transition:opacity .55s ease;
  background:linear-gradient(145deg,var(--green-ink) 0%,rgba(31,168,92,.30) 60%,rgba(255,106,61,.22) 100%);
  mix-blend-mode:multiply;opacity:.6;}
.news-feature:hover .news-cover img{transform:scale(1.06);filter:saturate(1);}
.news-feature:hover .news-cover::after{opacity:0;}
.news-feat-body{padding:1.5rem 1.6rem 1.7rem;display:flex;flex-direction:column;}
.news-feat-title{font-size:1.4rem;line-height:1.32;font-weight:800;margin:.7rem 0 .6rem;color:var(--head);transition:.2s;}
.news-feature:hover .news-feat-title{color:var(--green-deep);}
.news-excerpt{color:var(--grey);font-size:.95rem;line-height:1.65;}
.news-go{margin-top:1.1rem;font-family:var(--mono);color:var(--green-deep);font-weight:700;font-size:.86rem;transition:.2s;}
.news-feature:hover .news-go{color:var(--heat);transform:translateX(6px);}

/* 列表卡 */
.news-list{display:flex;flex-direction:column;gap:.7rem;}
.news-item{display:grid;grid-template-columns:92px 1fr;gap:1rem;align-items:center;
  background:var(--card);border:1px solid var(--line);border-radius:14px;padding:.7rem;transition:.2s;}
.news-item:hover{border-color:var(--green);transform:translateX(4px);}
.news-thumb{position:relative;overflow:hidden;border-radius:9px;aspect-ratio:1/1;background:var(--green-ink);}
.news-thumb img{width:100%;height:100%;object-fit:cover;display:block;transition:transform .45s, filter .45s;filter:saturate(.55);}
.news-thumb::after{content:"";position:absolute;inset:0;pointer-events:none;transition:opacity .45s;
  background:linear-gradient(145deg,var(--green-ink),rgba(31,168,92,.25));mix-blend-mode:multiply;opacity:.55;}
.news-item:hover .news-thumb img{transform:scale(1.07);filter:saturate(1);}
.news-item:hover .news-thumb::after{opacity:0;}
.news-item-body h4{font-size:1rem;line-height:1.4;font-weight:700;margin-top:.4rem;color:var(--head);transition:.2s;}
.news-item:hover .news-item-body h4{color:var(--green-deep);}

.news-meta{display:flex;align-items:center;gap:.6rem;}
.news-date{font-family:var(--mono);font-size:.78rem;color:var(--grey);font-weight:700;letter-spacing:.5px;}
.news-tag{font-family:var(--mono);font-size:.66rem;font-weight:700;letter-spacing:.5px;
  padding:.18rem .55rem;border-radius:999px;background:var(--green-ink);color:#fff;}
.news-more{align-self:flex-end;margin-top:.3rem;font-family:var(--mono);font-size:.82rem;font-weight:700;
  color:var(--green-deep);transition:.2s;}
.news-more:hover{color:var(--heat);transform:translateX(5px);}

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

/* 新闻文章页 */
.news-article{max-width:820px;margin:0 auto;padding:clamp(2rem,5vw,3.5rem) var(--pad);}
.na-meta{display:flex;align-items:center;gap:.6rem;margin:1.4rem 0 .8rem;}
.na-title{font-family:var(--display);font-size:clamp(1.6rem,3.6vw,2.4rem);font-weight:900;line-height:1.25;color:var(--head);}
.na-source{color:var(--grey);font-size:.85rem;font-family:var(--mono);margin-top:.7rem;}
.na-cover{margin:1.8rem 0;border-radius:16px;overflow:hidden;border:1px solid var(--line);aspect-ratio:16/9;background:var(--green-ink);}
.na-cover img{width:100%;height:100%;object-fit:cover;display:block;}
.na-body{font-size:1.04rem;line-height:1.8;color:var(--ink);}
.na-body h2{font-size:1.3rem;margin:1.8rem 0 .7rem;font-weight:800;color:var(--head);}
.na-body p{margin-bottom:1.1rem;}
.na-body img{display:block;max-width:100%;height:auto;margin:1.4rem auto;border-radius:10px;}
.na-body strong{color:var(--head);}
.na-cta{display:flex;gap:.8rem;flex-wrap:wrap;margin-top:2rem;}

/* ===== 暗色数据带 ===== */
.sec-stats{background:var(--night);color:#dff2e7;
  background-image:radial-gradient(rgba(255,255,255,.04) 1px,transparent 1px);
  background-size:22px 22px;}
.sec-head-light .sec-title{color:#fff;}
.sec-head-light .kicker{color:var(--heat-soft);}
.sec-head-light .kicker span{background:rgba(255,180,84,.16);color:var(--heat-soft);}
.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;
  background:rgba(255,255,255,.1);border:1px solid rgba(255,255,255,.1);
  border-radius:16px;overflow:hidden;}
.stat{background:var(--night);padding:2rem 1.5rem;text-align:left;}
.stat-num{font-family:var(--display);font-size:clamp(1.9rem,3.5vw,2.8rem);font-weight:700;
  color:var(--heat-soft);line-height:1;}
.stat-lab{color:#9fc7b0;font-size:.88rem;margin-top:.6rem;}

/* ===== 人物(卡通头像版) ===== */
.people-director{display:flex;align-items:center;gap:1.6rem;background:var(--bg-alt);
  border:1px solid var(--line);border-radius:20px;padding:1.5rem 1.8rem;margin-bottom:2.6rem;
  max-width:640px;transition:.2s;}
.people-director:hover{border-color:var(--green);transform:translateY(-3px);
  box-shadow:0 16px 40px rgba(15,92,50,.14);}
.pd-avatar{width:104px;height:104px;border-radius:50%;flex:none;overflow:hidden;background:var(--green-ink);}
.pd-avatar img{width:100%;height:100%;display:block;}
.pd-name{font-family:var(--display);font-size:1.55rem;font-weight:800;color:var(--head);line-height:1.1;}
.pd-name small{font-family:var(--mono);font-size:.9rem;font-weight:600;color:var(--grey);margin-left:.5rem;}
.pd-role{color:var(--green-deep);font-weight:700;margin:.45rem 0 .3rem;font-size:.98rem;}
.pd-aff{color:var(--grey);font-size:.9rem;}

.people-group{margin-bottom:1.8rem;}
.people-group-label{font-family:var(--mono);font-size:.74rem;font-weight:700;letter-spacing:1.5px;
  color:var(--grey);margin-bottom:1rem;display:flex;align-items:center;gap:.7rem;}
.people-group-label::after{content:"";flex:1;height:1px;background:var(--line);}

.people{display:grid;grid-template-columns:repeat(auto-fill,minmax(148px,1fr));gap:1rem;}
.person{background:var(--bg-alt);border:1px solid var(--line);border-radius:16px;
  padding:1.3rem 1rem;text-align:center;transition:.2s;}
.person:hover{transform:translateY(-3px);border-color:var(--green);box-shadow:0 12px 28px rgba(15,92,50,.12);}
.avatar{width:74px;height:74px;border-radius:50%;overflow:hidden;margin:0 auto .8rem;
  background:var(--green-ink);}
.avatar img{width:100%;height:100%;display:block;transition:transform .35s cubic-bezier(.2,.7,.2,1);}
.person:hover .avatar img{transform:scale(1.07);}
.p-name{font-weight:700;color:var(--head);font-size:.98rem;}
.p-role{color:var(--grey);font-size:.82rem;margin-top:.25rem;}
.p-tbd{color:var(--grey);font-size:.78rem;margin-top:.2rem;opacity:.65;font-family:var(--mono);}

/* ===== 成果列表 ===== */
.works-list{list-style:none;}
.works-list li{display:flex;align-items:center;gap:1.2rem;padding:1.3rem .4rem;
  border-top:1px solid var(--line);color:#314338;transition:.2s;cursor:default;}
.works-list li:last-child{border-bottom:1px solid var(--line);}
.w-year{font-family:var(--mono);font-weight:700;color:var(--green);min-width:56px;
  font-size:.95rem;}
.w-text{flex:1;}
.w-arrow{font-family:var(--mono);color:var(--grey);opacity:0;transform:translateX(-8px);
  transition:.2s;}
.works-list li:hover{background:var(--green-soft);padding-left:1rem;}
.works-list li:hover .w-arrow{opacity:1;transform:translateX(0);color:var(--heat);}

/* ===== 页脚 ===== */
.footer{background:var(--green-ink);color:#bcd9c9;padding:4rem var(--pad) 2.5rem;}
.footer-inner{max-width:none;margin:0;}
.footer-top{display:flex;justify-content:space-between;align-items:flex-end;gap:1.5rem;
  flex-wrap:wrap;padding-bottom:2.5rem;border-bottom:1px solid rgba(255,255,255,.12);}
.f-brand{font-family:var(--serif);font-size:clamp(2.2rem,6vw,4rem);color:#fff;
  font-weight:900;line-height:1;}
.f-bigcta{font-family:var(--mono);font-size:.9rem;font-weight:700;color:var(--green-ink);
  background:var(--heat-soft);padding:.8rem 1.4rem;border-radius:999px;transition:.2s;}
.f-bigcta:hover{background:#fff;transform:translateY(-2px);}
.footer-bot{display:grid;grid-template-columns:repeat(3,1fr);gap:1.5rem;
  margin-top:2.5rem;font-size:.9rem;}
.f-label{font-family:var(--mono);font-size:.7rem;letter-spacing:1px;color:var(--heat-soft);
  margin-bottom:.5rem;}
.f-col div{line-height:1.6;}
.f-col em{color:#9fc7b0;}
.footer-beian{margin-top:2rem;padding-top:1.3rem;border-top:1px solid rgba(255,255,255,.08);
  display:flex;flex-wrap:wrap;gap:.4rem 1.4rem;align-items:center;
  font-size:.8rem;font-family:var(--mono);}
.footer-beian a{color:#9fc7b0;opacity:.75;transition:.2s;}
.footer-beian a:hover{opacity:1;color:var(--heat-soft);}
.footer-beian .beian-gongan{display:inline-flex;align-items:center;gap:.4rem;}
.footer-beian .beian-gongan img{width:16px;height:16px;}

/* ===== 响应式 ===== */
@media(max-width:960px){
  .about-grid{grid-template-columns:1fr;gap:1.4rem;}
  .bento{grid-template-columns:repeat(2,1fr);}
  .tile-lg,.tile-wide,.tile:not(.tile-lg){grid-column:span 1;}
  .tile-lg{grid-row:span 1;}
  .stats{grid-template-columns:repeat(2,1fr);}
  .footer-bot{grid-template-columns:1fr;}
}
@media(max-width:720px){
  .nav-links,.nav-cta{display:none;}
  .sec{padding:3.4rem 1.2rem;}
  .hero-inner{padding:4rem 1.2rem 3.5rem;}
  .stats{grid-template-columns:1fr;}
  .footer-top{flex-direction:column;align-items:flex-start;}
}
@media(prefers-reduced-motion:reduce){
  .marquee-track{animation:none;}
  .hero-eyebrow .dot{animation:none;}
  .tile-lg .rings{animation:none;}
  .beam,.ecurve{animation:none;}
  *{scroll-behavior:auto;}
}

/* ===== 导航开关(语言 / 暗色)===== */
.nav-tools{display:flex;gap:.4rem;}
.tg{font-family:var(--mono);font-size:.74rem;font-weight:700;color:var(--ink);
  background:transparent;border:1.5px solid var(--line);border-radius:999px;
  min-width:34px;height:32px;padding:0 .5rem;cursor:pointer;transition:.18s;
  display:inline-flex;align-items:center;justify-content:center;line-height:1;}
.tg:hover{border-color:var(--green);color:var(--green-deep);}

/* ===== Scrollytelling ===== */
.scrolly{padding:5rem 0 2rem;background:var(--bg);}
.scrolly-head{padding:0 var(--pad);margin-bottom:1.6rem;}
.scrolly-inner{max-width:none;margin:0;display:grid;
  grid-template-columns:1.12fr .88fr;gap:0;align-items:start;}
.scrolly-graphic{position:sticky;top:84px;height:min(80vh,640px);}
.story-stage{position:relative;width:100%;height:100%;border-radius:0 20px 20px 0;overflow:hidden;
  border:1px solid var(--line);border-left:0;background:var(--bg-alt);
  box-shadow:0 18px 50px rgba(11,42,26,.12);}
#storyMap{position:absolute;inset:0;width:100%;height:100%;}
.leaflet-container{background:var(--bg-alt);font-family:var(--sans);}
.story-stage .leaflet-image-layer{transition:opacity .9s ease;}
/* 暗色:天地图底图瓦片反相成深色(只作用 tilePane;风险叠加层在 overlay-pane,不受影响) */
:root[data-theme="dark"] #storyMap .leaflet-tile-pane{filter:invert(1) hue-rotate(180deg) brightness(.92) contrast(.92);}
.story-stage .leaflet-control-attribution{font-size:.6rem;background:rgba(255,255,255,.7);}
:root[data-theme="dark"] .story-stage .leaflet-control-attribution{background:rgba(8,22,16,.6);color:#9fc7b0;}
.map-legend{position:absolute;right:14px;top:14px;z-index:600;display:flex;align-items:center;
  gap:.45rem;font-family:var(--mono);font-size:.62rem;color:#dff2e7;
  background:rgba(8,22,16,.7);padding:.3rem .55rem;border-radius:999px;pointer-events:none;}
.map-legend .grad{width:64px;height:7px;border-radius:4px;
  background:linear-gradient(90deg,#1FA85C,#7CBF5C,#FFB454,#FF6A3D,#B22222);}
.map-src{position:absolute;left:14px;top:14px;z-index:600;
  font-family:var(--mono);font-size:.58rem;color:#dff2e7;background:rgba(8,22,16,.7);
  padding:.25rem .6rem;border-radius:999px;max-width:58%;line-height:1.3;
  pointer-events:none;}
.map-err{display:flex;align-items:center;justify-content:center;height:100%;color:var(--grey);
  font-size:.9rem;padding:2rem;text-align:center;}
.story-readout{position:absolute;left:18px;bottom:22px;z-index:600;
  background:rgba(8,22,16,.82);border:1px solid rgba(255,180,84,.3);border-radius:14px;
  padding:.7rem 1rem;backdrop-filter:blur(4px);pointer-events:none;}
.ro-num{font-family:var(--display);font-size:clamp(1.8rem,4vw,2.6rem);font-weight:700;
  color:var(--heat-soft);line-height:1;}
.ro-lab{font-family:var(--mono);font-size:.7rem;color:#dff2e7;margin-top:.3rem;}
.scrolly-steps{display:flex;flex-direction:column;
  padding:0 var(--pad) 0 clamp(2rem,4vw,4.5rem);}
.step{min-height:74vh;display:flex;align-items:center;}
.step:last-child{min-height:60vh;}
.step-card{width:100%;background:var(--card);border:1px solid var(--line);border-left:4px solid var(--heat);
  border-radius:16px;padding:1.6rem 1.8rem;transition:.3s;opacity:.45;transform:translateY(8px);
  box-shadow:0 10px 30px rgba(11,42,26,.06);}
.step.is-active .step-card{opacity:1;transform:translateY(0);border-left-color:var(--green);
  box-shadow:0 16px 40px rgba(15,92,50,.14);}
.step-no{font-family:var(--mono);font-size:.72rem;font-weight:700;letter-spacing:1px;
  color:var(--heat);margin-bottom:.5rem;}
.step-card h3{font-size:1.5rem;margin-bottom:.5rem;font-weight:900;}
.step-card p{color:var(--lead);font-size:1rem;}

/* ===== 暗色模式 ===== */
:root[data-theme="dark"]{
  --green:#34C77B; --green-deep:#5fd99a; --green-ink:#0B2A1A; --green-soft:#10271b;
  --heat:#FF7A4E; --heat-soft:#FFC06B; --heat-bg:#241710;
  --ink:#E6F2EA; --grey:#92b3a1; --bg:#07120D; --bg-alt:#0D1C14;
  --line:#1C3326; --night:#060F0A;
  --lead:#b9d2c4; --card:#0E2017; --head:#eaf6ef;
  --nav-bg:rgba(7,18,13,.8);
  --hero-a:#0B1F15; --hero-b:#07120D; --hero-c:#170f0a;
  --chip:rgba(255,255,255,.06);
}
:root[data-theme="dark"] body{color:var(--ink);}
:root[data-theme="dark"] strong{color:var(--green-deep);}
:root[data-theme="dark"] .tile:not(.tile-lg){background:var(--bg-alt);}
:root[data-theme="dark"] .tile-ico{box-shadow:0 4px 12px rgba(0,0,0,.3);}
:root[data-theme="dark"] .tg{color:var(--ink);}
:root[data-theme="dark"] .nav-cta{border-color:var(--green);color:var(--green-deep);}
:root[data-theme="dark"] .nav-cta:hover{background:var(--green);color:#07120D;}
:root[data-theme="dark"] .btn-primary{background:var(--green);color:#07120D;}
:root[data-theme="dark"] .btn-primary:hover{background:var(--green-deep);}
:root[data-theme="dark"] .btn-ghost{border-color:var(--green);color:var(--green-deep);}
:root[data-theme="dark"] .btn-ghost:hover{background:var(--green);color:#07120D;}
:root[data-theme="dark"] .nav-links a{color:var(--ink);}
:root[data-theme="dark"] .hero-eyebrow{background:rgba(255,255,255,.06);}
:root[data-theme="dark"] .hero-tag{background:transparent;}
:root[data-theme="dark"] .stat,
:root[data-theme="dark"] .sec-stats{background:var(--night);}
:root[data-theme="dark"] .footer{background:#040b07;}

/* ===== 响应式(新组件)===== */
@media(max-width:900px){
  .hero-split{grid-template-columns:1fr;gap:1.8rem;}
  .hero-viz{order:-1;}
  .viz-frame{aspect-ratio:16/10;}
  .scrolly-inner{grid-template-columns:1fr;gap:0;}
  .scrolly-graphic{position:sticky;top:64px;height:48vh;margin-bottom:1.2rem;}
  .story-stage{border-radius:0;border-left:0;border-right:0;}
  .scrolly-steps{padding:0 var(--pad);}
  .step{min-height:60vh;}
}
@media(max-width:720px){
  .nav-links{display:none;}
  .nav-tools{margin-left:auto;}
  .nav-cta{display:none;}
}

/* ===== 研究亮点:满铺聚焦块(Pratt 式,批判性改造)===== */
.sec-research{padding-block:5rem;}
.research-head{margin-bottom:2.6rem;}
.spotlights{display:flex;flex-direction:column;border-top:1px solid var(--line);}
.spotlight{--accent:var(--green);position:relative;display:grid;
  grid-template-columns:1.08fr .92fr;min-height:min(82vh,640px);
  border-bottom:1px solid var(--line);background:var(--bg);}
.spot-media{position:relative;overflow:hidden;display:block;background:var(--green-ink);}
.spot-media img{width:100%;height:100%;object-fit:cover;display:block;
  transition:transform .7s cubic-bezier(.2,.7,.2,1);}
.spotlight:hover .spot-media img,.spotlight:focus-within .spot-media img{transform:scale(1.05);}
.spot-no{position:absolute;left:24px;top:20px;z-index:2;font-family:var(--mono);
  font-size:.8rem;font-weight:700;color:#fff;background:rgba(8,22,16,.5);
  padding:.25rem .6rem;border-radius:999px;letter-spacing:1px;}
.spot-body{display:flex;flex-direction:column;justify-content:center;
  padding:clamp(2rem,5vw,5.5rem);max-width:760px;}
.spot-kicker{font-family:var(--mono);font-size:.74rem;font-weight:700;letter-spacing:1.5px;
  color:var(--accent);margin-bottom:.7rem;}
/* 框架对应徽章(呼应梯度三层)*/
.spot-tier{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--mono);
  font-size:.72rem;font-weight:700;color:var(--lead);margin-bottom:1rem;
  border:1px solid var(--line);border-radius:999px;padding:.25rem .7rem;}
.spot-tier .dot{width:9px;height:9px;border-radius:50%;flex:none;}
.spot-tier[data-tier="risk"] .dot{background:#F2664B;}
.spot-tier[data-tier="resource"] .dot{background:#F07A2E;}
.spot-tier[data-tier="behavior"] .dot{background:#2E9E5B;}
.spot-tier[data-tier="cross"] .dot{background:var(--green-deep);}
.spot-title{font-size:clamp(2rem,3.8vw,3.4rem);font-weight:900;line-height:1.08;
  letter-spacing:-.5px;display:inline-block;padding-bottom:.35rem;
  border-bottom:3px solid var(--accent);margin-bottom:1.2rem;}
.spot-cap{color:var(--lead);font-size:1.1rem;line-height:1.7;margin-bottom:1.4rem;max-width:46ch;}
.spot-go{font-family:var(--mono);font-weight:700;font-size:.95rem;color:var(--accent);
  display:inline-flex;align-items:center;gap:.5rem;transition:gap .2s;align-self:flex-start;
  border-bottom:1px solid transparent;}
.spotlight:hover .spot-go,.spotlight:focus-within .spot-go{gap:1rem;border-bottom-color:var(--accent);}
.spotlight .tile-tags{margin-bottom:1.6rem;}
/* 交替:偶数块图片在右 */
.spotlight:nth-child(even) .spot-media{order:2;}
.spotlight:nth-child(even) .spot-body{order:1;margin-left:auto;}
/* 强调色 */
.spotlight[data-accent="heat"]{--accent:var(--heat);}
.spotlight[data-accent="green"]{--accent:var(--green);}
.spotlight[data-accent="amber"]{--accent:var(--heat-soft);}
.spotlight[data-accent="deep"]{--accent:var(--green-deep);}

/* ===== R/01 签名数据动画(阈值散点) ===== */
.spot-anim{position:absolute;inset:0;width:100%;height:100%;display:block;
  transition:transform .7s cubic-bezier(.2,.7,.2,1);}
.spotlight:hover .spot-anim,.spotlight:focus-within .spot-anim{transform:scale(1.04);}
.spot-anim .sa-grid line{stroke:rgba(255,255,255,.05);stroke-width:1;}
.spot-anim .sa-axis{stroke:rgba(255,255,255,.16);stroke-width:1.4;}
.spot-anim .sa-zero{stroke:rgba(255,255,255,.22);stroke-width:1.2;stroke-dasharray:5 7;}
.spot-anim .sa-lo{fill:#5fd99a;}
.spot-anim .sa-hi{fill:#FF9A6B;}
.spot-anim .sa-pt{opacity:0;transform-box:fill-box;transform-origin:center;}
.spot-anim .sa-fit{stroke:#eaf6ef;stroke-width:3;fill:none;stroke-linecap:round;
  stroke-dasharray:1120;stroke-dashoffset:1120;}
.spot-anim .sa-thr{stroke:#FF7A4E;stroke-width:2.6;stroke-dasharray:7 7;opacity:0;}
.spot-anim .sa-thrlab{fill:#FFC06B;font-family:var(--mono);font-weight:700;font-size:26px;opacity:0;}
.spot-anim .sa-zonehi{fill:#FF6A3D;opacity:0;}
.spot-anim .sa-eyebrow{fill:#bfe6cf;font-family:var(--mono);font-size:19px;letter-spacing:3px;opacity:0;}
.spot-anim .sa-axlab{fill:rgba(223,242,231,.5);font-family:var(--mono);font-size:18px;opacity:0;}
.spot-anim .sa-runner{opacity:0;}

@keyframes saPt{0%{opacity:0;transform:translateY(16px) scale(.3);}60%{opacity:1;}100%{opacity:1;transform:translateY(0) scale(1);}}
@keyframes saDraw{to{stroke-dashoffset:0;}}
@keyframes saFade{to{opacity:1;}}
@keyframes saZone{to{opacity:.1;}}
@keyframes saLab{to{opacity:1;}}

@media (prefers-reduced-motion: no-preference){
  .spot-anim .sa-eyebrow{animation:saFade 1s ease .3s forwards;}
  .spot-anim .sa-pt{animation:saPt .85s cubic-bezier(.2,.8,.2,1) forwards;}
  .spot-anim .sa-fit{animation:saDraw 1.7s ease-out 2.6s forwards;}
  .spot-anim .sa-zonehi{animation:saZone 1.1s ease 3.4s forwards;}
  .spot-anim .sa-thr{animation:saFade .8s ease 3.5s forwards;}
  .spot-anim .sa-thrlab{animation:saLab .9s ease 3.8s forwards;}
  .spot-anim .sa-axlab{animation:saFade 1s ease 4s forwards;}
}
/* 系统开启“减少动态”:直接显示终帧,不动 */
@media (prefers-reduced-motion: reduce){
  .spot-anim .sa-pt,.spot-anim .sa-thr,.spot-anim .sa-thrlab,
  .spot-anim .sa-eyebrow,.spot-anim .sa-axlab{opacity:1;}
  .spot-anim .sa-pt{transform:none;}
  .spot-anim .sa-fit{stroke-dashoffset:0;}
  .spot-anim .sa-zonehi{opacity:.1;}
  .spot-anim .sa-runner{display:none;}
}

/* ===== 研究详情页 ===== */
.detail-hero{position:relative;min-height:min(60vh,520px);display:flex;align-items:flex-end;
  overflow:hidden;border-bottom:1px solid var(--line);}
.detail-hero .art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;}
.detail-hero::after{content:"";position:absolute;inset:0;z-index:1;
  background:linear-gradient(0deg,rgba(7,18,13,.82) 0%,rgba(7,18,13,.25) 60%,rgba(7,18,13,.1) 100%);}
.detail-hero-inner{position:relative;z-index:2;max-width:none;margin:0;width:100%;
  padding:clamp(2rem,5vw,4rem) var(--pad);}
.detail-back{font-family:var(--mono);font-size:.78rem;font-weight:700;color:#dff2e7;
  display:inline-flex;gap:.4rem;margin-bottom:1.2rem;transition:gap .2s;}
.detail-back:hover{gap:.8rem;}
.detail-kicker{font-family:var(--mono);font-size:.78rem;font-weight:700;letter-spacing:1.5px;
  color:var(--heat-soft);margin-bottom:.7rem;}
.detail-title{font-size:clamp(2.2rem,5vw,4rem);font-weight:900;color:#fff;line-height:1.05;
  letter-spacing:-.5px;}
.detail-body{max-width:880px;margin:0;padding:clamp(2.5rem,5vw,4.5rem) var(--pad);}
.detail-lead{font-size:1.25rem;line-height:1.8;color:var(--lead);margin-bottom:2.5rem;}
.detail-body h2{font-size:1.5rem;font-weight:900;margin:2.4rem 0 .9rem;padding-left:.8rem;
  border-left:5px solid var(--accent,var(--green));}
.detail-body p{color:var(--lead);font-size:1.05rem;line-height:1.85;margin-bottom:1rem;}
.detail-body ul{color:var(--lead);font-size:1.05rem;line-height:1.85;margin:0 0 1rem 1.2rem;}
.detail-note{background:var(--bg-alt);border:1px solid var(--line);border-radius:14px;
  padding:1rem 1.2rem;font-size:.92rem;color:var(--grey);margin:1.4rem 0;}
.detail-cta{display:flex;gap:.9rem;flex-wrap:wrap;margin-top:2rem;
  padding-top:2rem;border-top:1px solid var(--line);}

@media(max-width:880px){
  .spotlight{grid-template-columns:1fr;min-height:0;}
  .spot-media{min-height:300px;order:-1 !important;}
  .spotlight:nth-child(even) .spot-media{order:-1;}
  .spotlight:nth-child(even) .spot-body{order:0;}
}

/* ===== 理论框架交互图 ===== */
.sec-framework{background:var(--bg);padding-block:5rem;}
.fw{margin-top:1.6rem;}
.fw-stage{width:100%;}
.fw-svg{width:100%;height:auto;display:block;--fa:#1FA85C;}
.fw-svg[data-focus="risk"]{--fa:#F2664B;}
.fw-svg[data-focus="resource"]{--fa:#F07A2E;}
.fw-svg[data-focus="behavior"]{--fa:#2E9E5B;}

/* 规划起点 */
.fw-origin rect{fill:var(--green-ink);}
.fw-origin text{fill:#fff;font:700 17px var(--serif);text-anchor:middle;}

/* 连接线 + 光束 */
.fw-wire path{fill:none;stroke:var(--line);stroke-width:1.5;}
/* 连线默认隐藏,只显示当前高亮梯度层的「要素→层→两个产出」整条链路 */
.beam,.ecurve{fill:none;stroke-width:2.4;stroke-linecap:round;stroke-dasharray:2 12;
  opacity:0;transition:opacity .35s;}
.b-risk,.e-risk{stroke:#F2664B;}
.b-resource,.e-resource{stroke:#F07A2E;}
.b-behavior,.e-behavior{stroke:#2E9E5B;}
.fw-svg[data-focus="risk"] .b-risk,
.fw-svg[data-focus="risk"] .e-risk,
.fw-svg[data-focus="resource"] .b-resource,
.fw-svg[data-focus="resource"] .e-resource,
.fw-svg[data-focus="behavior"] .b-behavior,
.fw-svg[data-focus="behavior"] .e-behavior{opacity:.9;animation:beamFlow 1.1s linear infinite;}
@keyframes beamFlow{to{stroke-dashoffset:-140;}}

/* 空间要素(各带形象图标;悬停自身高亮,不绑定阶梯层)*/
.el{cursor:pointer;transform-box:fill-box;transform-origin:center;transition:transform .25s;}
.el-box{fill:var(--card);stroke:var(--line);stroke-width:1.5;transition:.25s;}
.el-label{fill:var(--head);font:600 16px var(--sans);text-anchor:start;dominant-baseline:middle;}
/* 小图标:仅变色,不再用 transform(避免覆盖 translate 定位的 bug)*/
.el-icon{color:var(--grey);transition:color .25s;}
.el{outline:none;}
.el:hover .el-box,.el:focus-visible .el-box{stroke:var(--green);stroke-width:2.6;}
.el:hover .el-icon,.el:focus-visible .el-icon{color:var(--green);}
.chain:focus,.el:focus,.fw-pop,.tier{outline:none;}

/* 悬停弹出的较大示意卡 */
.fw-pop{opacity:0;pointer-events:none;transition:opacity .2s ease;}
.fw-pop.show{opacity:1;}
.pop-sh{fill:#0b2a1a;opacity:.16;}
.pop-bg{fill:var(--card);stroke:var(--green);stroke-width:1.8;}
.pop-art{color:var(--green);}
.pop-title{fill:var(--head);font:800 18px var(--serif);text-anchor:start;}
.pop-desc{fill:var(--lead);font:500 14px var(--sans);text-anchor:start;}

/* 阶梯三层 + 路径 */
.chain{cursor:pointer;transition:opacity .3s;}
.chain.dim{opacity:.32;}
.tier{transition:.3s;}
.chain.active .tier{filter:url(#fwGlow);}
.tier-label{fill:#fff;font:800 21px var(--serif);text-anchor:middle;dominant-baseline:middle;
  paint-order:stroke;stroke:rgba(60,20,10,.35);stroke-width:3px;stroke-linejoin:round;}
.path-no{font:800 30px var(--mono);text-anchor:middle;dominant-baseline:middle;}
.chain[data-tier="risk"] .path-no{fill:#F2664B;}
.chain[data-tier="resource"] .path-no{fill:#F07A2E;}
.chain[data-tier="behavior"] .path-no{fill:#2E9E5B;}
.path-label{fill:var(--lead);font:600 16px var(--sans);text-anchor:start;dominant-baseline:middle;}
.chain.active .path-label{fill:var(--head);}

/* 健康产出 */
.out-box{fill:var(--card);stroke:var(--line);stroke-width:1.5;transition:.3s;}
.out-label{fill:var(--head);font:800 18px var(--serif);text-anchor:middle;dominant-baseline:middle;}
.out-label.small{font-size:14px;font-weight:700;}
.fw-svg[data-focus="risk"] .out-box,
.fw-svg[data-focus="resource"] .out-box,
.fw-svg[data-focus="behavior"] .out-box{stroke:var(--fa);stroke-width:2.4;}

/* 控制面板 */
.fw-panel{margin-top:1.4rem;display:flex;flex-direction:column;gap:1rem;}
.fw-tabs{display:flex;gap:.6rem;flex-wrap:wrap;}
.fw-tab{display:inline-flex;align-items:center;gap:.5rem;font-family:var(--mono);font-size:.8rem;
  font-weight:700;color:var(--ink);background:transparent;border:1.5px solid var(--line);
  border-radius:999px;padding:.45rem .95rem;cursor:pointer;transition:.2s;}
.fw-tab .dot{width:9px;height:9px;border-radius:50%;}
.fw-tab.t-risk .dot{background:#F2664B;}
.fw-tab.t-resource .dot{background:#F07A2E;}
.fw-tab.t-behavior .dot{background:#2E9E5B;}
.fw-tab:hover{border-color:var(--ink);}
.fw-tab.on{background:var(--bg-alt);border-color:var(--ink);}
.fw-caption{font-size:1.06rem;line-height:1.75;color:var(--lead);max-width:88ch;min-height:3.3em;}
.fw-caption b{color:var(--head);font-weight:700;}
.fw-link{font-family:var(--mono);font-weight:700;color:var(--green-deep);white-space:nowrap;
  border-bottom:1px solid transparent;}
.fw-link:hover{border-bottom-color:currentColor;}
@media(max-width:720px){
  .tier-label{font-size:17px;}.el-label{font-size:14px;}.path-label{font-size:13px;}
  .fw-caption{font-size:.98rem;}
}

/* ===== Hero:满铺左右分栏 ===== */
.hero-grid2{display:grid;grid-template-columns:1.02fr .98fr;align-items:stretch;
  min-height:min(86vh,660px);}
.hero-copy2{position:relative;z-index:2;display:flex;flex-direction:column;justify-content:center;
  padding:clamp(2.5rem,5vw,4rem) clamp(1.4rem,4vw,4rem) clamp(2.5rem,5vw,4rem) var(--pad);}
.hero-copy2 .hero-title{margin:1.2rem 0 1.2rem;font-size:clamp(2.3rem,4.4vw,4.5rem);}
.hero-copy2 .hero-tag{margin:0;max-width:560px;}
.hero-copy2 .hero-cta{justify-content:flex-start;}
.hero-art{position:relative;overflow:hidden;background:var(--green-ink);}
.hero-art img{width:100%;height:100%;object-fit:cover;display:block;}

/* ===== 关于:编辑式陈述带 ===== */
.sec-about{background:var(--bg-alt);border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);padding-block:clamp(3rem,6vw,5.5rem);}
.about-opener{display:grid;grid-template-columns:minmax(160px,240px) 1fr;
  gap:clamp(1.6rem,5vw,5rem);align-items:start;}
.about-label .kicker{margin-bottom:.6rem;}
.about-h{font-size:1.35rem;font-weight:900;}
.about-statement{font-family:var(--serif);font-weight:700;color:var(--head);
  font-size:clamp(1.45rem,2.5vw,2.15rem);line-height:1.55;max-width:980px;letter-spacing:.2px;
  text-wrap:balance;}

/* ===== 研究区开场 ===== */
.research-opener{display:flex;justify-content:space-between;align-items:flex-end;
  gap:2rem;flex-wrap:wrap;padding-bottom:1.4rem;}
.research-sub{color:var(--lead);font-size:1.02rem;max-width:38ch;line-height:1.6;}

@media(max-width:880px){
  .hero-grid2{grid-template-columns:1fr;min-height:0;}
  .hero-copy2{order:1;padding:3rem var(--pad) 2.5rem;}
  .hero-art{order:2;min-height:240px;}
  .about-opener{grid-template-columns:1fr;}
  .research-opener{align-items:flex-start;}
  .research-sub{text-align:left;}
}

/* ===== 研究论文页 ===== */
.paper-cover{background:linear-gradient(165deg,var(--hero-a) 0%,var(--hero-b) 58%,var(--hero-c) 100%);
  border-bottom:1px solid var(--line);}
.paper-cover-grid{max-width:var(--max);margin:0;padding:clamp(2.4rem,5vw,4.2rem) var(--pad);
  display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(2rem,4vw,3.5rem);align-items:center;}
.paper-cover .detail-back{color:var(--green-deep);}
.paper-kicker{font-family:var(--mono);font-size:.74rem;font-weight:700;letter-spacing:2px;
  color:var(--heat);margin-bottom:.9rem;}
.paper-title{font-family:var(--serif);font-weight:900;color:var(--head);
  font-size:clamp(1.8rem,3.5vw,2.9rem);line-height:1.14;letter-spacing:-.3px;}
.paper-subtitle{color:var(--lead);font-size:clamp(1.02rem,1.5vw,1.18rem);margin-top:.8rem;line-height:1.55;}
.paper-authors{margin-top:1.5rem;font-size:.88rem;line-height:1.7;color:var(--lead);}
.pa-names strong{color:var(--head);}
.pa-corr{font-family:var(--mono);font-size:.6rem;background:var(--heat-bg);color:var(--heat);
  border-radius:999px;padding:.06rem .42rem;margin-left:.25rem;}
.pa-jour{display:block;margin-top:.55rem;font-family:var(--mono);font-size:.78rem;color:var(--grey);}
.pa-jour a{color:var(--green-deep);font-weight:700;}
.paper-cover-fig{min-width:0;}
/* 阈值散点图 —— 论文图风格:浅色面板、明暗两色一致(像嵌入的扫描论文图)、细轴线、真实散点 */
.thr-chart{width:100%;height:auto;display:block;background:#FCFCFA;
  border:1px solid #DBE0D8;border-radius:4px;}
.thr-axis{stroke:#6E776F;stroke-width:1.1;}
.thr-ticks line{stroke:#6E776F;stroke-width:1;}
.thr-zero{stroke:#9AA39B;stroke-width:1;stroke-dasharray:4 4;}
.thr-reflab{font-family:var(--mono);font-size:10.5px;fill:#8A938C;}
.thr-fit{stroke:#2B332E;stroke-width:1.8;fill:none;}
.thr-ci{fill:#2B332E;opacity:.07;}
.sc{fill-opacity:.72;stroke:#FCFCFA;stroke-width:.6;}
.sc.p-lo{fill:#5E8B72;}
.sc.p-hi{fill:#C0604A;}
.thr-mark{stroke:#C0604A;stroke-width:1.3;stroke-dasharray:5 4;}
.thr-mark-lab{font-family:var(--mono);font-weight:700;font-size:12.5px;fill:#B0533D;}
.thr-tick{font-family:var(--mono);font-size:11px;fill:#6E776F;}
.thr-n{font-family:var(--mono);font-size:10.5px;fill:#8A938C;}
.thr-dir{font-family:var(--sans);font-size:11px;font-weight:600;}
.thr-dir-lo{fill:#4E7C63;}
.thr-dir-hi{fill:#B0533D;}
.thr-axlab{font-family:var(--sans);font-size:12px;font-weight:600;fill:#2B332E;}
.paper-fig-cap{font-size:.82rem;color:var(--grey);margin-top:.8rem;line-height:1.6;}

.paper-body{max-width:880px;margin:0;padding:clamp(2.5rem,5vw,4rem) var(--pad);}
.paper-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:16px;overflow:hidden;margin-bottom:2.4rem;}
.pstat{background:var(--bg);padding:1.3rem 1.1rem;}
.pstat-n{font-family:var(--display);font-size:clamp(1.35rem,2.3vw,1.9rem);font-weight:700;
  color:var(--heat);line-height:1;}
.pstat-l{font-size:.8rem;color:var(--grey);margin-top:.5rem;line-height:1.4;}
.paper-lead{font-size:1.18rem;line-height:1.8;color:var(--lead);margin-bottom:2rem;}
.paper-body h2{font-size:1.45rem;font-weight:900;margin:2.4rem 0 .9rem;padding-left:.8rem;
  border-left:5px solid var(--heat);color:var(--head);}
.paper-body p{color:var(--lead);font-size:1.05rem;line-height:1.85;margin-bottom:1rem;}
.paper-body ul{color:var(--lead);font-size:1.05rem;line-height:1.85;margin:0 0 1.2rem 1.2rem;}
.paper-body li{margin-bottom:.45rem;}
.paper-figure{margin:2rem 0;}
.mech{width:100%;height:auto;display:block;background:var(--bg-alt);border:1px solid var(--line);border-radius:16px;}
.mech-node rect{fill:var(--card);stroke:var(--line);stroke-width:1.5;}
.mech-mid rect{stroke:var(--heat-soft);}
.mech-end rect{stroke:var(--heat);}
.mech-t{font-family:var(--serif);font-weight:700;font-size:18px;fill:var(--head);}
.mech-s{font-family:var(--sans);font-size:12px;fill:var(--grey);}
.mech-arrow{stroke:var(--heat);stroke-width:2.4;fill:none;marker-end:url(#mechArrow);}
.mech-via{font-family:var(--mono);font-size:11px;fill:var(--heat);font-weight:700;}
.paper-cite{background:var(--bg-alt);border:1px solid var(--line);border-left:4px solid var(--green);
  border-radius:14px;padding:1.4rem 1.6rem;margin:2.6rem 0 1rem;}
.pc-label{font-family:var(--mono);font-size:.72rem;font-weight:700;letter-spacing:1px;
  color:var(--green-deep);margin-bottom:.6rem;}
.pc-text{font-size:.92rem;line-height:1.7;color:var(--lead);}
.pc-doi{display:inline-block;margin-top:.7rem;font-family:var(--mono);font-size:.8rem;font-weight:700;
  color:var(--green-deep);word-break:break-all;}
@media(max-width:880px){
  .paper-cover-grid{grid-template-columns:1fr;}
  .paper-stats{grid-template-columns:repeat(2,1fr);}
}

/* ===== 方向页:代表性研究封面卡 ===== */
.studies{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:1.2rem;max-width:1100px;}
.study-card{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);
  border-radius:18px;overflow:hidden;transition:transform .2s,box-shadow .2s,border-color .2s;}
.study-card:hover{transform:translateY(-4px);box-shadow:0 16px 38px rgba(15,92,50,.16);border-color:var(--heat);}
.study-card-fig{height:150px;position:relative;overflow:hidden;border-bottom:1px solid var(--line);}
.study-card-fig svg{width:100%;height:100%;display:block;}
.study-card-body{padding:1.4rem 1.5rem;display:flex;flex-direction:column;flex:1;}
.study-tag{font-family:var(--mono);font-size:.7rem;font-weight:700;letter-spacing:.5px;
  color:var(--heat);margin-bottom:.55rem;}
.study-card h3{font-size:1.18rem;font-weight:800;line-height:1.25;margin-bottom:.5rem;}
.study-card p{color:var(--grey);font-size:.92rem;line-height:1.6;flex:1;}
.study-meta{font-family:var(--mono);font-size:.7rem;color:var(--grey);margin-top:.9rem;}
.study-go{font-family:var(--mono);font-weight:700;color:var(--heat);font-size:.85rem;margin-top:.7rem;
  transition:gap .2s;}
.study-card:hover .study-go{padding-left:.3rem;}

/* ===== 方向内页:蒙德里安研究墙(满铺自适应密铺)===== */
.dir-body{max-width:none;margin:0;padding:clamp(2rem,4vw,3.4rem) var(--pad) 4rem;}
.dir-head{display:flex;align-items:baseline;gap:1rem;flex-wrap:wrap;margin-bottom:1.4rem;}
.dir-h{font-size:clamp(1.5rem,2.6vw,2.1rem);font-weight:900;}
/* 列数随宽度自动增减、色块大小不一密铺,横向始终填满;分割形式随屏宽变化 */
.mondrian{display:grid;grid-template-columns:repeat(auto-fill,minmax(clamp(150px,12vw,210px),1fr));
  grid-auto-rows:clamp(116px,11vw,160px);grid-auto-flow:dense;gap:12px;
  background:var(--green-ink);padding:12px;border-radius:18px;}
.m-cell{position:relative;display:flex;flex-direction:column;overflow:hidden;}
/* 跨度 */
.s-2x2{grid-column:span 2;grid-row:span 2;}
.s-1x2{grid-row:span 2;}
.s-2x1{grid-column:span 2;}
/* 颜色块 */
.c-heat{background:var(--heat);}
.c-green{background:var(--green);}
.c-greendeep{background:var(--green-deep);}
.c-amber{background:var(--heat-soft);}
/* 研究卡(白块) */
.m-study{background:var(--card);padding:1.5rem 1.6rem;justify-content:space-between;
  color:var(--ink);transition:background .2s;}
.m-study:hover{background:var(--bg-alt);}
.m-study .ms-tag{font-family:var(--mono);font-size:.7rem;font-weight:700;letter-spacing:.5px;color:var(--heat);}
.m-study h3{font-size:clamp(1.2rem,1.9vw,1.55rem);font-weight:800;line-height:1.22;margin:.4rem 0 .5rem;}
.m-study .ms-desc{color:var(--grey);font-size:.92rem;line-height:1.6;max-width:42ch;}
.m-study .ms-meta{font-family:var(--mono);font-size:.68rem;color:var(--grey);}
.m-study .ms-go{display:inline-block;margin-top:.5rem;font-family:var(--mono);font-weight:700;
  color:var(--heat);font-size:.85rem;transition:padding .2s;}
.m-study:hover .ms-go{padding-left:.3rem;}
/* “更多研究”暗块 */
.m-more{background:#08160F;color:#cfe6da;align-items:flex-start;justify-content:center;
  padding:1.2rem 1.5rem;gap:.45rem;}
.m-more .mm-plus{font-family:var(--display);font-size:2rem;font-weight:700;color:var(--heat-soft);line-height:.8;}
.m-more .mm-t{font-family:var(--mono);font-size:.78rem;font-weight:700;letter-spacing:.5px;}
@media(max-width:560px){
  .mondrian{grid-template-columns:repeat(2,1fr);}
  .m-study{min-height:230px;}
}

/* ===== 四阈值仪表盘(builtenv-thresholds 封面图)===== */
.thr2{width:100%;height:auto;display:block;background:var(--card);border:1px solid var(--line);
  border-radius:18px;box-shadow:0 16px 44px rgba(11,42,26,.12);}
.t2-col{font-family:var(--mono);font-size:11px;font-weight:700;fill:var(--grey);letter-spacing:.3px;}
.t2-attr{font-family:var(--sans);font-weight:700;font-size:15px;fill:var(--head);}
.t2-val{font-family:var(--mono);font-size:11.5px;fill:var(--grey);}
.t2-mark{stroke:var(--head);stroke-width:2.2;stroke-linecap:round;}
.t2-pd{font-family:var(--mono);font-weight:700;font-size:14px;fill:var(--green-deep);}
.t2-pd-strong{fill:var(--heat);}
.t2-strong-tag{font-family:var(--mono);font-size:9.5px;font-weight:700;fill:var(--heat);}
.t2-foot{font-family:var(--sans);font-size:11px;fill:var(--grey);}

/* ===== 森林图(traffic-urbanform 封面图)===== */
.forest{width:100%;height:auto;display:block;background:var(--card);border:1px solid var(--line);
  border-radius:18px;box-shadow:0 16px 44px rgba(11,42,26,.12);}
.f-anno{font-family:var(--mono);font-size:10.5px;font-weight:700;fill:var(--grey);}
.f-noeff-lab{font-family:var(--mono);font-size:11px;font-weight:700;fill:var(--grey);}
.f-noeff{stroke:var(--grey);stroke-width:1.3;stroke-dasharray:4 4;opacity:.7;}
.f-axis{stroke:var(--grey);stroke-width:1.4;opacity:.7;}
.f-tick{stroke:var(--grey);stroke-width:1;opacity:.5;}
.f-ticklab{font-family:var(--mono);font-size:11px;fill:var(--grey);text-anchor:middle;}
.f-label{font-family:var(--sans);font-size:13.5px;font-weight:600;fill:var(--head);}
.f-label-hi{fill:var(--heat);font-weight:800;}
.f-ci,.f-cap{stroke:var(--head);stroke-width:2;opacity:.6;stroke-linecap:round;}
.f-dot-r{fill:#E8553B;}
.f-dot-g{fill:#1FA85C;}
.f-val{font-family:var(--mono);font-size:12px;font-weight:700;fill:var(--head);}
.f-note{font-family:var(--sans);font-size:11px;fill:var(--grey);}

/* ===== SEM 路径图(urban-expansion 封面图)===== */
.sem{width:100%;height:auto;display:block;background:var(--card);border:1px solid var(--line);
  border-radius:18px;box-shadow:0 16px 44px rgba(11,42,26,.12);}
.sem-col{font-family:var(--mono);font-size:11px;font-weight:700;fill:var(--grey);letter-spacing:.3px;}
.sem-a{fill:none;stroke:#9bb0a4;stroke-width:1.8;}
.sem-a.sem-hi{stroke:#E8553B;stroke-width:2.8;}
.sem-a.sem-out{stroke:#9bb0a4;stroke-width:2.4;}
.sem-b{font-family:var(--mono);font-size:12px;font-weight:700;fill:var(--grey);text-anchor:middle;}
.sem-b-hi{fill:#E8553B;font-size:13px;}
.sem-box rect{fill:var(--card);stroke:var(--line);stroke-width:1.5;}
.sem-box-hi rect{stroke:var(--heat);stroke-width:2.2;}
.sem-t{font-family:var(--sans);font-size:13.5px;font-weight:700;fill:var(--head);dominant-baseline:middle;}
.sem-med rect{fill:var(--heat-bg);stroke:var(--heat-soft);stroke-width:2;}
.sem-mt{font-family:var(--serif);font-size:16px;font-weight:700;fill:var(--head);}
.sem-ms{font-family:var(--mono);font-size:11px;fill:var(--grey);}
.sem-out-box rect{fill:var(--heat);}
.sem-ot{font-family:var(--serif);font-size:16px;font-weight:800;fill:#fff;}
.sem-os{font-family:var(--mono);font-size:11px;fill:#ffe;opacity:.85;}
.sem-note{font-family:var(--sans);font-size:11px;fill:var(--grey);}
