/* ============================================================
   设计基调：藏青(权威) × 朱砂红(印章) × 石青(立项) —— 中国学术档案
   与首页(funding-search3)、主题词分析页、学科趋势分析页同一套设计令牌
   ============================================================ */
:root{
  --page-width: 1360px;
  --page-gutter: clamp(16px,2.2vw,32px);
  --navy:        #16324A;
  --navy-deep:   #0F2336;
  --ink:         #1C1E24;
  --ink-2:       #565B66;
  --ink-3:       #8A8F9B;
  --paper:       #F7F6F2;
  --card:        #FFFFFF;
  --line:        #E3E0D8;
  --line-strong: #C9C5B9;
  --seal:        #B23A30;
  --seal-deep:   #8F2C24;
  --teal:        #2E6E63;
  --teal-soft:   #E7F0ED;
  --seal-soft:   #F7E9E7;
  --navy-soft:   #E7EDF3;
  --gold:        #A98B5F;
  --radius:      3px;
  --font-serif: "Noto Serif SC","Source Han Serif SC","Songti SC",serif;
  --font-sans:  "Noto Sans SC","Source Han Sans SC","PingFang SC","Microsoft YaHei",sans-serif;
}
*{margin:0;padding:0;box-sizing:border-box;}
html{scroll-behavior:smooth;}
body{
  font-family:var(--font-sans);
  font-size:15px;line-height:1.65;
  color:var(--ink);background:var(--paper);
  -webkit-font-smoothing:antialiased;
}
button,input,select{font-family:inherit;font-size:inherit;color:inherit;}
:focus-visible{outline:2px solid var(--navy);outline-offset:2px;border-radius:2px;}
::selection{background:var(--navy);color:#fff;}
.sr-only{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}

/* ---------- Hero（收窄版，无统计区） ---------- */
.hero{
  position:relative;color:#E9EDF2;
  background:
    radial-gradient(1100px 500px at 88% -10%,rgba(178,58,48,.22),transparent 60%),
    linear-gradient(160deg,var(--navy) 0%,var(--navy-deep) 78%);
  overflow:hidden;
}
.hero::before{
  content:"";position:absolute;inset:0;
  background-image:linear-gradient(rgba(255,255,255,.045) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(255,255,255,.045) 1px,transparent 1px);
  background-size:44px 44px;
  mask-image:linear-gradient(180deg,#000 0%,transparent 85%);
  -webkit-mask-image:linear-gradient(180deg,#000 0%,transparent 85%);
  pointer-events:none;
}
.hero-inner{
  position:relative;max-width:var(--page-width);margin:0 auto;
  padding:clamp(18px,2.2vw,24px) var(--page-gutter) 44px;
}
.hero h2{
  font-family:var(--font-serif);font-weight:900;color:#FFFFFF;
  font-size:clamp(22px,2.6vw,29px);line-height:1.3;letter-spacing:.02em;
  max-width:20em;
}
.hero-lede{margin-top:8px;max-width:46em;color:#AEBCCC;font-size:13.5px;line-height:1.75;}
.hero-lede strong{color:#E8D9B8;font-weight:500;}

/* ---------- 统计仪表盘 ---------- */
.dashboard{max-width:var(--page-width);margin:auto;padding:30px var(--page-gutter) 48px;}
@keyframes riseIn{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:none;}}
.dashboard{animation:riseIn .7s .15s cubic-bezier(.2,.7,.2,1) both;}

.filters{
  display:flex;justify-content:space-between;align-items:center;gap:18px;flex-wrap:wrap;
  padding:16px 0;border-top:1px solid var(--line-strong);border-bottom:1px solid var(--line-strong);
}
.source-picker{display:flex;align-items:center;gap:8px;}
.filter-label{font-size:14px;color:var(--ink-2);margin-right:6px;}
button{cursor:pointer;border:1px solid var(--line);background:white;padding:7px 13px;border-radius:3px;font-size:14px;}
button:hover{border-color:var(--navy);}
button[aria-pressed=true]{background:var(--navy);border-color:var(--navy);color:white;}

.metrics{display:grid;grid-template-columns:repeat(5,1fr);padding:26px 0 28px;}
.metric{padding-left:24px;border-left:1px solid var(--line);}
.metric:first-child{padding-left:0;border:0;}
.metric-label{font-size:14px;color:var(--ink-2);}
.metric-value{display:block;font-size:32px;font-weight:500;font-variant-numeric:tabular-nums;color:var(--navy);line-height:1.5;}
.metric-unit{font-size:13px;color:var(--ink-3);margin-left:6px;font-weight:400;}
.metric-foot{font-size:12px;color:var(--ink-2);}
.metric:first-child .metric-value{color:var(--teal);}

.trend-row{display:grid;grid-template-columns:2fr 1fr;gap:20px;margin-bottom:20px;}
.chart-grid{display:grid;grid-template-columns:1fr 1fr;gap:20px;}
.panel{background:white;border:1px solid var(--line);border-radius:3px;padding:22px 24px;min-width:0;}
.panel-head{display:flex;justify-content:space-between;align-items:flex-start;gap:14px;margin-bottom:18px;}
.panel h2{font-size:18px;color:var(--navy);font-family:var(--font-serif);font-weight:700;}
.panel-sub{font-size:12px;color:var(--ink-2);margin-top:4px;}
.toggle{display:flex;gap:0;}
.toggle button{font-size:12px;padding:4px 10px;border-radius:0;}
.toggle button:first-child{border-radius:3px 0 0 3px;}
.toggle button:last-child{border-radius:0 3px 3px 0;}

.legend{display:flex;gap:18px;color:var(--ink-2);font-size:12px;align-items:center;}
.dot{width:8px;height:8px;display:inline-block;margin-right:6px;border-radius:2px;background:var(--teal);}
.trend-scroll{
  overflow-x:auto;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;padding-bottom:4px;
}
.trend-scroll::-webkit-scrollbar{width:6px;height:6px;}
.trend-scroll::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:3px;}
.trend-scroll::-webkit-scrollbar-track{background:transparent;}
.trend-chart{height:238px;display:block;}
.trend-note{display:flex;justify-content:space-between;gap:10px;padding-top:13px;border-top:1px solid #eee;font-size:12px;color:var(--ink-2);}
.trend-note strong{color:var(--navy);font-weight:500;}

.bar-list{display:grid;gap:17px;padding:4px 0;}
.bar-row{display:grid;grid-template-columns:82px 1fr 58px;gap:12px;align-items:center;font-size:13px;}
.bar-track{background:#f2f3f2;height:10px;border-radius:1px;overflow:hidden;}
.bar-fill{height:100%;background:var(--navy);border-radius:1px;}
.bar-value{text-align:right;font-variant-numeric:tabular-nums;color:var(--ink-2);}
.empty{color:var(--ink-2);padding:65px 12px;text-align:center;font-size:14px;}

.rank-row{display:grid;grid-template-columns:23px 145px 1fr 43px;align-items:center;gap:9px;font-size:13px;}
.rank-index{font-size:12px;color:var(--ink-3);}
.rank-row:nth-child(-n+3) .rank-index{color:var(--seal);font-weight:700;}
.rank-row .bar-track{height:7px;}
.rank-list{display:grid;gap:14px;}
.rank-name{overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.region-list .bar-fill{background:var(--teal);}
.discipline-note{font-size:12px;border-top:1px solid #eee;padding-top:13px;color:var(--ink-2);}
.discipline-ranks,.rank-scroll{max-height:360px;overflow-y:auto;padding-right:8px;scrollbar-width:thin;scrollbar-color:var(--line-strong) transparent;}
.rank-scroll{max-height:430px;}
.discipline-ranks::-webkit-scrollbar,.rank-scroll::-webkit-scrollbar{width:6px;}
.discipline-ranks::-webkit-scrollbar-thumb,.rank-scroll::-webkit-scrollbar-thumb{background:var(--line-strong);border-radius:3px;}
.discipline-ranks::-webkit-scrollbar-track,.rank-scroll::-webkit-scrollbar-track{background:transparent;}
.discipline-rank-row{grid-template-columns:23px 145px 1fr 40px 46px;}
.rank-pct{font-size:12px;color:var(--ink-2);text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap;}

.scope-note{margin-top:22px;color:var(--ink-2);font-size:12px;display:flex;justify-content:space-between;gap:18px;}
.scope-note [hidden]{display:none!important;}
.legend [hidden]{display:none!important;}

/* ---------- 地域分布：地图 / 排行 ---------- */
.region-map{display:block;width:100%;height:auto;max-height:540px;margin:0 auto;}
.map-province{stroke:#fff;stroke-width:.8;stroke-linejoin:round;cursor:pointer;outline:none;}
.map-province:hover,.map-province:focus{stroke:var(--seal);stroke-width:1.8;filter:brightness(.94);}
.map-label{font-family:var(--font-sans);font-size:9px;text-anchor:middle;pointer-events:none;}
.map-boundary{fill:#b1bbb5;stroke:#a0aca4;stroke-width:.5;pointer-events:none;}
.map-scale{display:flex;align-items:center;justify-content:center;gap:9px;font-size:12px;color:var(--ink-2);margin:8px 0 14px;}
.map-scale>span:first-child{margin-right:12px;}
.map-no-data{display:inline-block;width:10px;height:10px;background:#eef0ec;border:1px solid #d9dfd9;margin-right:5px;}
.map-gradient{height:8px;width:85px;background:linear-gradient(90deg,#daebe1,#2e6e63);border-radius:2px;}
.region-detail{border-top:1px solid var(--line);padding-top:12px;font-size:13px;color:var(--navy);min-height:35px;}
.region-panel [hidden]{display:none!important;}

/* ---------- 地域分布面板：通栏展示（chart-grid 移除等级面板后固定 3 面板布局） ---------- */
.region-panel{grid-column:1/-1;}
.region-panel [hidden]{display:none!important;}

/* ---------- 响应式 ---------- */
@media(max-width:1100px){
  .trend-row{grid-template-columns:1.65fr 1fr;}
  .metric{padding-left:15px;}
  .metric-value{font-size:28px;}
  .rank-row{grid-template-columns:20px 115px 1fr 35px;}
  .discipline-rank-row{grid-template-columns:20px 115px 1fr 34px 40px;}
  .panel{padding:18px;}
}
@media(max-width:760px){
  .dashboard{padding-top:20px;}
  .source-picker{flex-wrap:wrap;}
  .source-picker button{font-size:12px;padding:6px 9px;}
  .metrics{grid-template-columns:repeat(3,1fr);row-gap:20px;}
  .metric:nth-child(4){border:0;padding-left:0;}
  .metric-value{font-size:27px;}
  .trend-row,.chart-grid{grid-template-columns:1fr;}
  .trend-chart{height:220px;}
  .trend-note{flex-wrap:wrap;}
  .scope-note{flex-direction:column;}
  .rank-row{grid-template-columns:20px 130px 1fr 35px;}
  .discipline-rank-row{grid-template-columns:20px 100px 1fr 30px 38px;}
  .discipline-ranks,.rank-scroll{max-height:300px;}
  .filters{gap:12px;}
  .metric-label{font-size:12px;}
  .metric-foot{font-size:11px;}
  .metric:nth-child(4){border:0;padding-left:0;}
  .map-scale{gap:6px;font-size:11px;}
  .map-scale>span:first-child{margin-right:4px;}
  .map-gradient{width:65px;}
  .region-detail{font-size:12px;}
}
@media(prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important;}
  html{scroll-behavior:auto;}
}
