:root{
  --bg:#f5f6f8; --card:#fff; --ink:#1f2937; --muted:#6b7280; --line:#eef0f3;
  --brand:#2563eb; --brand-d:#1d4ed8; --radius:14px;
  --shadow:0 1px 2px rgba(16,24,40,.05),0 10px 28px rgba(16,24,40,.05);
  --up:#e03e2d; --down:#0aa858; --warn-bg:#fff5f5; --warn-bd:#fbe0e0; --warn-tx:#c0392b;
  --good-bg:#f3fbf5; --good-bd:#d6f0dd; --good-tx:#1a7f37;
}
*{box-sizing:border-box}
body{font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",sans-serif;max-width:1200px;margin:36px auto;padding:0 20px;color:var(--ink);background:var(--bg);line-height:1.5;font-feature-settings:"tnum"}
/* ---- 顶部导航：brand 在左、导航在右 ---- */
.top{display:flex;justify-content:space-between;align-items:center;flex-wrap:wrap;gap:12px;margin-bottom:18px}
.brand{display:flex;align-items:center;gap:10px}
.brand-logo{width:38px;height:38px;border-radius:9px;object-fit:cover;display:block}
.brand-body{display:flex;flex-direction:column}
.brand-name{font-size:15px;font-weight:700;color:var(--ink);letter-spacing:.3px}
.brand-tag{font-size:11px;color:var(--muted)}
.nav{display:flex;gap:4px;flex-wrap:wrap}
.nav a{display:inline-block;padding:8px 13px;border-radius:9px;font-size:13.5px;color:var(--muted);text-decoration:none;transition:.15s;white-space:nowrap}
.nav a:hover{color:var(--brand);background:#eef3ff}
.nav a.active{color:var(--brand);background:#eef3ff;font-weight:600}
h1{font-size:22px;font-weight:700;margin:0 0 6px;letter-spacing:.4px}
.sub{color:var(--muted);font-size:13px;margin-bottom:22px;line-height:1.7}
.badges{display:flex;flex-wrap:wrap;align-items:center;gap:0;margin:0 0 14px;padding:9px 14px;
  background:rgba(37,99,235,.04);border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow)}
.badges:empty{display:none}
.badge{display:inline-flex;align-items:center;gap:6px;font-size:12.5px;color:var(--ink);
  padding:0 14px;white-space:nowrap}
.badge:not(:last-child){border-right:1px solid var(--line)}
.badge:first-child{padding-left:2px}
.badge b{font-weight:700;font-variant-numeric:tabular-nums}
.badge .dot{width:7px;height:7px;border-radius:50%;display:inline-block}
.bar{display:flex;gap:10px;margin-bottom:18px;position:relative}
input{flex:1;padding:11px 14px;border:1px solid var(--line);border-radius:10px;font-size:15px;background:#fff;transition:.15s}
input:focus{outline:none;border-color:var(--brand);box-shadow:0 0 0 3px rgba(37,99,235,.12)}
button{padding:11px 20px;border:none;background:var(--brand);color:#fff;border-radius:10px;font-size:15px;font-weight:500;cursor:pointer;transition:.15s}
button:hover{background:var(--brand-d)}
button.ghost{background:#fff;color:var(--brand);border:1px solid var(--brand);font-weight:500}
button.ghost:hover{background:var(--brand);color:#fff}
.cards{display:flex;flex-wrap:wrap;gap:12px;margin-bottom:20px}
.card{flex:1;min-width:140px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:14px 16px;box-shadow:var(--shadow);transition:.18s}
.card:hover{transform:translateY(-2px);box-shadow:0 6px 20px rgba(16,24,40,.10)}
.card .k{color:var(--muted);font-size:12px;letter-spacing:.3px}
.card .v{font-size:18px;font-weight:600;margin-top:6px;white-space:nowrap;font-variant-numeric:tabular-nums}
.up{color:var(--up)}.down{color:var(--down)}
.num{font-variant-numeric:tabular-nums}
#chart{width:100%;height:560px;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);box-shadow:var(--shadow);margin-bottom:8px;position:relative}
#chart.loading::before{content:'';position:absolute;inset:0;border-radius:14px;z-index:-1;
  background:linear-gradient(90deg,#f2f3f5 25%,#e7e9ed 37%,#f2f3f5 63%);background-size:400% 100%;
  animation:ske 1.3s ease-in-out infinite}
.chart-wrap{position:relative}
.ch-tools{position:absolute;top:8px;right:8px;z-index:20;display:flex;gap:6px}
.ch-tools button{padding:4px 10px;font-size:12px;border-radius:8px;background:#fff;border:1px solid var(--line);color:var(--muted);cursor:pointer;box-shadow:var(--shadow);transition:.15s}
.ch-tools button:hover{color:var(--brand);border-color:var(--brand)}
.err{display:none;margin:10px 0;padding:12px 16px;border-radius:var(--radius);font-size:13.5px;line-height:1.6;
  background:#fff7f7;border:1px solid #fde2e2;color:var(--warn-tx);box-shadow:var(--shadow)}
.err:not(:empty){display:block}
.note{color:var(--muted);font-size:12px;margin-top:12px;line-height:1.7}
.bse-note{display:none;margin:10px 0 16px;padding:12px 15px;border-radius:var(--radius);font-size:13.5px;line-height:1.65;background:#fff8ec;border:1px solid #f3e2bf;color:#8a6d3b;box-shadow:var(--shadow)}
.signal{margin:0 0 18px;padding:13px 16px;border-radius:var(--radius);font-size:14px;line-height:1.6;box-shadow:var(--shadow)}
.signal.warn{background:var(--warn-bg);border:1px solid var(--warn-bd);color:var(--warn-tx)}
.signal.good{background:var(--good-bg);border:1px solid var(--good-bd);color:var(--good-tx)}
.rank-title{margin:32px 0 12px;font-size:16px;font-weight:600;display:flex;align-items:baseline;gap:8px}
.rank-title span{font-weight:400;color:var(--muted);font-size:12px}
.ttable{width:100%;border-collapse:separate;border-spacing:0;font-size:13px;margin-top:6px;background:var(--card);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow)}
.ttable th,.ttable td{padding:11px 10px;text-align:center;border-bottom:1px solid var(--line)}
.ttable th{background:#fafbfc;color:#5b6472;font-weight:600;font-size:12px;letter-spacing:.3px}
.ttable td{font-variant-numeric:tabular-nums}
.new-badge{display:inline-block;margin-left:6px;padding:0 5px;line-height:15px;font-size:10px;border-radius:4px;
  background:var(--brand);color:#fff;font-weight:700;vertical-align:1px;letter-spacing:.3px}
.ttable tbody tr:nth-child(odd){background:#fff}
.ttable tbody tr:nth-child(even){background:#fafbfc}
.ttable tr.top1 td:first-child,.ttable tr.nd2 td:first-child,.ttable tr.rd3 td:first-child{font-weight:700}
.ttable tr.top1 td:first-child{color:#e8a020}.ttable tr.nd2 td:first-child{color:#9aa3af}.ttable tr.rd3 td:first-child{color:#c07a3b}
.skeleton{background:linear-gradient(90deg,#f2f3f5 25%,#e7e9ed 37%,#f2f3f5 63%);background-size:400% 100%;
  animation:ske 1.3s ease-in-out infinite;border-radius:6px;color:transparent}
@keyframes ske{0%{background-position:100% 50%}100%{background-position:0 50%}}
.ttable tbody tr.sk td{color:#c3c9d2}
.ttable .empty td{height:90px;color:var(--muted);font-size:13px}
.ttable tbody tr{cursor:pointer;transition:.12s}
.ttable tbody tr:hover{background:#f5f8ff}
.ttable tbody tr:last-child td{border-bottom:none}
.topwrap{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
.favs{display:flex;flex-wrap:wrap;gap:8px;margin:6px 0 14px;min-height:0}
.favs:empty{margin:0}
#histDrop{position:absolute;top:calc(100% + 4px);left:0;right:auto;min-width:260px;background:#fff;
  border:1px solid var(--line);border-radius:12px;box-shadow:var(--shadow);padding:6px;z-index:60;display:none}
#histDrop.show{display:block}
#histDrop .h-item{display:flex;align-items:center;justify-content:space-between;padding:7px 10px;border-radius:8px;text-decoration:none;
  cursor:pointer;font-size:13px;color:var(--ink)}
#histDrop .h-item:hover{background:#f0f5ff;color:var(--brand)}
#histDrop .h-item .x{color:var(--muted);font-size:14px;padding:0 4px;opacity:0;transition:.15s}
#histDrop .h-item:hover .x{opacity:1}
#histDrop .h-empty{padding:10px;color:var(--muted);font-size:12px;text-align:center}
.fav-chip{display:inline-flex;align-items:center;gap:6px;padding:4px 10px;border:1px solid var(--line);border-radius:999px;
  background:#fff;font-size:13px;color:var(--ink);cursor:pointer;transition:.15s;text-decoration:none}
.fav-chip:hover{border-color:var(--brand);color:var(--brand)}
.fav-chip b{font-weight:600}
.fav-x{color:var(--muted);font-size:12px;line-height:1;padding:0 2px;opacity:.7}
.fav-x:hover{color:#e03e2d;opacity:1}
.favs-empty{font-size:12px;color:var(--muted)}
.footer{margin-top:36px;padding-top:22px;border-top:1px solid var(--line);color:var(--muted);font-size:12px;text-align:center;letter-spacing:.3px}
.footer a{color:inherit;text-decoration:none}.footer a:hover{color:var(--brand)}
.f-cols{display:grid;grid-template-columns:repeat(auto-fit,minmax(150px,1fr));gap:16px;text-align:left;margin-bottom:14px}
.f-col{display:flex;flex-direction:column;gap:4px}
.f-col b{color:var(--ink);font-size:12.5px;margin-bottom:2px}
.f-dis{margin:0 0 12px;padding:10px 14px;border-radius:10px;background:#fff7ef;border:1px solid #f6e2c9;color:#9a6b2f;text-align:left;font-size:12px;line-height:1.6}
.f-copy{color:var(--muted)}
.f-wx-qr{display:none;width:108px;height:108px;border-radius:10px;border:1px solid var(--line);cursor:pointer;margin-top:6px}
.wechat-fixed{position:fixed;right:14px;bottom:20px;z-index:50;
  width:92px;text-align:center;opacity:.97;transition:opacity .2s;user-select:none}
.to-top{position:fixed;right:14px;bottom:150px;z-index:45;width:40px;height:40px;border-radius:12px;
  border:1px solid var(--line);background:#fff;color:var(--brand);font-size:18px;line-height:1;
  cursor:pointer;box-shadow:var(--shadow);display:none;align-items:center;justify-content:center;transition:.15s}
.to-top:hover{background:var(--brand);color:#fff;border-color:var(--brand)}
.to-top.show{display:flex}
@media (max-width:1100px){.to-top{bottom:24px}}
.wechat-fixed img{display:block;width:92px;height:92px;border-radius:10px;
  border:1px solid var(--line);box-shadow:var(--shadow);background:#fff}
.wechat-fixed .wx-cap{display:block;margin-top:6px;font-size:11px;color:var(--brand);font-weight:600;letter-spacing:.3px}
@media (max-width:1100px){.wechat-fixed{display:none}.f-wx-qr{display:block}}
.wx-zoom{position:fixed;inset:0;z-index:100;display:none;align-items:center;justify-content:center;
  background:rgba(15,23,42,.62);backdrop-filter:blur(2px);cursor:zoom-out}
.wx-zoom.show{display:flex}
.wx-zoom img{max-width:min(520px,86vw);width:100%;border-radius:16px;box-shadow:0 20px 60px rgba(0,0,0,.45);background:#fff}
.wx-zoom-cap{position:absolute;bottom:44px;left:50%;transform:translateX(-50%);color:#fff;font-size:13px;opacity:.85;letter-spacing:.5px}
/* ---- 关于页 ---- */
.about-section{margin:6px 0 28px;line-height:1.8;color:var(--ink);font-size:14px}
.about-section h2{font-size:17px;font-weight:700;margin:26px 0 10px;letter-spacing:.4px}
.about-section p{margin:6px 0;color:#374151}
.about-contact,.about-mail{display:block} /* 联系方式：纵向堆叠，图片左对齐 */
.about-mail p{margin:6px 0}
.about-qr{width:150px;height:150px;border-radius:12px;border:1px solid var(--line);cursor:zoom-in;box-shadow:var(--shadow);display:block;margin:8px 0 0}
.about-mail a{color:var(--brand);text-decoration:none}.about-mail a:hover{text-decoration:underline}
/* ---- 移动端 ---- */
@media (max-width:720px){
  body{margin:20px auto;padding:0 12px}
  h1{font-size:19px}
  .sub{font-size:12px;line-height:1.6;margin-bottom:16px}
  .top{flex-direction:column;align-items:flex-start}
  .nav{width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch}
  .bar{flex-wrap:wrap;gap:8px}
  .bar{position:sticky;top:0;z-index:50;padding:10px 0 4px;margin-bottom:6px;background:var(--bg);box-shadow:0 1px 6px rgba(16,24,40,.06);border-radius:0 0 12px 12px}
  .bar input{flex:1 1 100%;font-size:16px;padding:12px 14px}
  .bar button{flex:1;padding:12px 8px;font-size:14px}
  .cards{gap:10px}
  .topwrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
  .ttable{font-size:12px}
  .ttable th,.ttable td{padding:7px 6px;white-space:nowrap}
  #chart{height:480px !important;scroll-margin-top:72px}
  .card{flex:1 1 100%;padding:12px 14px}
  .wx-cap{display:none}
}
