/* 研究台 · 共用气韵 — 三页共享的设计系统
   意境取自寒江雾色：墨字浮于薄雾，留白如呼吸，结构只剩发丝，唯一点朱如远印。
   慢、空、静；但数据要读得清——涨跌分明、字够大、说明铺满整行再换。 */
:root{
  --paper:#eef2f3; --paper-lo:#e6ebed; --wash:#f5f7f8; --card:rgba(255,255,255,.42);
  --ink:#36424a; --ink-2:#5a6970; --far:#92a2ab; --mid:#6b7b85; --near:#404d55;
  --hair:rgba(64,77,85,.20); --hair-2:rgba(64,77,85,.11); --hair-3:rgba(64,77,85,.055);
  --seal:#9c5b52; --seal-2:#b06b60; --seal-soft:rgba(156,91,82,.10);
  /* 涨跌：加深、提饱和，确保在浅雾底上对比清晰 */
  --up:#c0392b; --down:#157f57;
  --up-2:#a52f23; --down-2:#0f6647;
  --up-soft:rgba(192,57,43,.12); --down-soft:rgba(21,127,87,.12);
  --serif:"Songti SC","STSong","Noto Serif SC","Source Han Serif SC",SimSun,"Times New Roman",serif;
  --sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --te:.5s cubic-bezier(.22,.61,.36,1);
  --wrap:clamp(960px,92vw,1500px);
}
*{margin:0;padding:0;box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{background:var(--paper);color:var(--ink);font-family:var(--serif);
  font-size:16px;line-height:1.72;font-variant-numeric:tabular-nums;font-weight:400;
  -webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
/* 薄雾：固定层，极缓飘移 */
body::before{content:"";position:fixed;inset:-25%;z-index:-1;pointer-events:none;
  background:
    radial-gradient(58% 48% at 26% 14%, rgba(247,249,250,.95), transparent 62%),
    radial-gradient(72% 60% at 84% 94%, rgba(64,77,85,.10), transparent 60%),
    radial-gradient(48% 38% at 92% 10%, rgba(156,91,82,.05), transparent 60%),
    linear-gradient(180deg,#eef2f3 0%,#e6ebed 60%,#e0e6e8 100%);
  animation:drift 56s ease-in-out infinite alternate}
@keyframes drift{from{transform:translate3d(-1.3%,-1%,0) scale(1.03)}to{transform:translate3d(1.5%,1.3%,0) scale(1.06)}}

a{color:var(--seal);text-decoration:none;transition:color var(--te)}
a:hover{color:var(--seal-2)}
::selection{background:var(--seal-soft)}
.num{font-variant-numeric:tabular-nums lining-nums}
.up{color:var(--up)} .down{color:var(--down)} .dim{color:var(--mid)}
.code{font-family:var(--sans);font-weight:500;font-size:13px;letter-spacing:.02em;color:var(--ink-2)}
:focus-visible{outline:1.5px solid var(--seal);outline-offset:3px}
@keyframes breathe{0%,100%{opacity:1}50%{opacity:.3}}
@keyframes rise{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}body::before{animation:none!important}}

.wrap{max-width:var(--wrap);margin:0 auto;padding:0 clamp(22px,5vw,68px)}

/* ===================== 题头（无栏、不固定、大留白） ===================== */
.top{padding:clamp(44px,8vh,104px) 0 clamp(18px,3vh,36px);animation:rise 1.4s var(--te) both}
.ko{font-family:var(--sans);font-size:13px;letter-spacing:.42em;color:var(--mid);text-indent:.42em;margin-bottom:clamp(14px,2.2vh,26px)}
.top-row{display:flex;align-items:flex-end;justify-content:space-between;gap:18px 40px;flex-wrap:wrap}
.top h1{font-size:clamp(38px,6vw,78px);font-weight:600;letter-spacing:.05em;color:var(--near);line-height:1}
.nav{display:flex;gap:clamp(20px,2.2vw,34px);align-items:baseline;font-size:16px}
.nav a{color:var(--mid);position:relative;padding-bottom:5px;letter-spacing:.06em}
.nav a:hover{color:var(--seal)}
.nav a.cur{color:var(--near)}
.nav a.cur::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1.5px;background:var(--seal);opacity:.6}
.nav .ext{color:var(--far);font-family:var(--sans);font-size:13px;letter-spacing:.04em}
.lede{font-size:clamp(16px,1.5vw,20px);color:var(--ink-2);line-height:1.7;max-width:88ch;
  margin-top:clamp(16px,2.4vh,28px)}
.lede .hl{color:var(--near);font-weight:600}
.meta{display:flex;flex-wrap:wrap;gap:10px 32px;align-items:baseline;margin-top:clamp(16px,2.4vh,28px);
  padding-top:18px;border-top:1px solid var(--hair-2);font-size:14.5px;color:var(--mid)}
.meta .it{display:inline-flex;gap:9px;align-items:baseline}
.meta .it i{font-style:normal;font-family:var(--sans);color:var(--far);font-size:12px;letter-spacing:.1em}
.meta .it b{font-weight:600;color:var(--ink);font-variant-numeric:tabular-nums}
.meta .it em{font-style:normal;color:var(--far);font-size:13px}
.wire{display:inline-flex;align-items:center;gap:9px;color:var(--mid)}
.wire .dot{width:7px;height:7px;border-radius:50%;background:var(--far)}
.wire.live{color:var(--down)} .wire.live .dot{background:var(--down);animation:breathe 3.2s ease-in-out infinite}
.warn{color:var(--up);font-size:13.5px}
.warn:empty{display:none}

/* ===================== 乐章（无框分节） ===================== */
main{animation:rise 1.4s var(--te) .12s both}
.movement{margin-top:clamp(40px,7vh,92px)}
.movement-h{display:flex;align-items:baseline;gap:8px 20px;flex-wrap:wrap;
  padding-bottom:14px;margin-bottom:clamp(20px,3vh,32px);border-bottom:1px solid var(--hair)}
.movement-h .idx{font-family:var(--sans);font-size:13px;letter-spacing:.28em;color:var(--seal);align-self:flex-start;padding-top:8px}
.movement-h h2{font-size:clamp(23px,2.6vw,33px);font-weight:600;letter-spacing:.04em;color:var(--near);line-height:1.05}
.movement-h .sub{font-size:13.5px;color:var(--mid);align-self:flex-end;padding-bottom:2px}
.movement-h .tools{margin-left:auto;display:flex;align-items:center;gap:10px 18px;flex-wrap:wrap}

/* 说明性文字：铺满整行再换，读着不费力 */
.prose{font-size:15.5px;line-height:1.85;color:var(--ink-2);max-width:none}
.prose b{color:var(--near);font-weight:600}
.prose .key{color:var(--seal);font-weight:600}

/* ===================== 控件（去框、下划线式） ===================== */
.seg{display:inline-flex;gap:2px;align-items:baseline}
.seg button{border:0;background:transparent;padding:6px 2px;margin:0 10px;font-size:14.5px;color:var(--mid);
  cursor:pointer;font-family:var(--serif);transition:color var(--te);position:relative}
.seg button:first-child{margin-left:0}
.seg button:hover{color:var(--near)}
.seg button.on{color:var(--near)}
.seg button.on::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1.5px;background:var(--seal);opacity:.65}
.tog{display:inline-flex;align-items:center;gap:8px;font-size:14.5px;color:var(--mid);cursor:pointer;user-select:none}
.tog:hover{color:var(--near)}
.tog input{appearance:none;-webkit-appearance:none;width:14px;height:14px;border:1px solid var(--mid);border-radius:50%;
  background:transparent;cursor:pointer;position:relative;flex:none;transition:var(--te)}
.tog input:checked{border-color:var(--seal)}
.tog input:checked::after{content:"";position:absolute;left:3px;top:3px;width:6px;height:6px;border-radius:50%;background:var(--seal)}
.tog:has(input:checked){color:var(--near)}

.search{position:relative}
.search svg{position:absolute;left:2px;top:50%;transform:translateY(-50%);width:16px;height:16px;color:var(--far);pointer-events:none}
.search input{width:100%;font-family:var(--serif);font-size:16px;color:var(--ink);background:transparent;
  border:0;border-bottom:1px solid var(--hair);outline:none;padding:10px 4px 10px 28px;transition:border-color var(--te)}
.search input:focus{border-bottom-color:var(--seal)}
.search input::placeholder{color:var(--far)}

/* ===================== 通用统计块 / 图表框 ===================== */
.stat .l{font-family:var(--sans);font-size:12.5px;letter-spacing:.12em;color:var(--mid)}
.stat .v{font-size:clamp(30px,3.4vw,44px);font-weight:600;line-height:1.04;margin-top:8px;color:var(--near)}
.stat .v small{font-size:14px;font-weight:400;color:var(--far);margin-left:5px}
.stat .v.up{color:var(--up)} .stat .v.down{color:var(--down)} .stat .v.dim{color:var(--far)}
svg.chart{display:block;width:100%;height:auto}

/* ===================== 表格（仅横丝，宽松，字够大） ===================== */
mark{background:var(--seal-soft);color:var(--seal);padding:0 2px;border-radius:2px}
.tag{display:inline-block;margin-left:7px;font-family:var(--sans);font-size:11px;font-weight:600;line-height:1.7;
  padding:0 6px;vertical-align:1px;border-radius:2px}
.tag.up{color:var(--up);background:var(--up-soft)} .tag.down{color:var(--down);background:var(--down-soft)}
.tag.muted{color:var(--mid);background:var(--hair-2)}
.tag.divd{color:#fff;background:var(--seal)}

footer{margin-top:clamp(48px,9vh,116px);padding:26px 0 84px;border-top:1px solid var(--hair-2);
  font-size:13px;color:var(--far);line-height:2.1}
footer a{color:var(--mid);border-bottom:1px solid var(--hair)}
