:root{
  --bg:#06090d; --bg2:#0a0f15; --surface:#0e151c; --surface2:#131c25;
  --line:#1b2733; --line2:#2b3e4e;
  --ink:#dbe6f0; --muted:#6b8095;
  --hot:#ff3b2e; --hot-dim:#c02a1e; --hot-soft:rgba(255,59,46,.10);
  --cyan:#35d6e8; --cyan-soft:rgba(53,214,232,.09);
  --amber:#f5c518; --amber-soft:rgba(245,197,24,.10);
  --good:#2fe0a6; --good-soft:rgba(47,224,166,.09);
  --bad:#ff4d4d;  --bad-soft:rgba(255,77,77,.10);
  --mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,monospace;
  --sans:"IBM Plex Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;
  --disp:"Chakra Petch",var(--mono);
}
*{box-sizing:border-box}
body{background:var(--bg);color:var(--ink);font-family:var(--sans);font-size:15px;line-height:1.62;
     -webkit-font-smoothing:antialiased;overflow-x:hidden}
/* 扫描线：固定、极淡、不吃点击 */
body::after{content:"";position:fixed;inset:0;pointer-events:none;z-index:60;
  background:repeating-linear-gradient(180deg,rgba(190,230,255,.022) 0 1px,transparent 1px 3px)}

.wrap{max-width:980px;margin:0 auto;padding-inline:20px;padding-block:0;position:relative;z-index:1}
h1,h2,h3{margin:0;text-wrap:balance}
h1{font-family:var(--disp);font-size:clamp(2rem,6vw,3.4rem);font-weight:700;line-height:1.02;
   letter-spacing:-.02em;text-transform:uppercase;
   text-shadow:0 0 28px rgba(255,59,46,.30)}
h2{font-family:var(--disp);font-size:clamp(1.2rem,3.2vw,1.6rem);font-weight:600;letter-spacing:.01em}
h3{font-family:var(--disp);font-size:1rem;font-weight:600;letter-spacing:.02em}
p{margin:0}
a{color:var(--cyan);text-decoration:none;border-bottom:1px solid rgba(53,214,232,.3)}
a:hover{border-bottom-color:var(--cyan);text-shadow:0 0 10px rgba(53,214,232,.45)}
a:focus-visible,button:focus-visible{outline:1px solid var(--cyan);outline-offset:3px}

.eyebrow{font-family:var(--mono);font-size:.68rem;font-weight:500;letter-spacing:.16em;
  text-transform:uppercase;color:var(--cyan);display:block}
.eyebrow::before{content:"// ";opacity:.55}
.mono{font-family:var(--mono);font-variant-numeric:tabular-nums}

/* ── header ── */
header.top{position:sticky;top:env(safe-area-inset-top,0px);z-index:40;
  background:rgba(6,9,13,.82);backdrop-filter:blur(14px);
  border-bottom:1px solid var(--line)}
.topin{max-width:980px;margin:0 auto;padding:9px 20px;display:flex;align-items:center;gap:11px;flex-wrap:wrap}
.brand{display:flex;align-items:center;gap:10px;min-width:0}
.brand img{width:34px;height:34px;border-radius:7px;display:block;
  box-shadow:0 0 0 1px var(--line2),0 0 18px rgba(255,59,46,.26)}
.wordmark{font-family:var(--disp);font-weight:700;letter-spacing:.09em;font-size:.95rem;text-transform:uppercase}
.wordmark span{color:var(--hot)}
.topin .sp{flex:1 1 auto}
.chip{font-family:var(--mono);font-size:.68rem;padding:4px 9px;border:1px solid var(--line2);
  border-radius:2px;color:var(--muted);background:var(--surface);cursor:pointer;white-space:nowrap}
.chip:hover{color:var(--cyan);border-color:var(--cyan)}
/* 上行状态灯：反映实时取数真的成没成，不是装饰 */
#uplink{font-family:var(--mono);font-size:.64rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--muted);display:flex;align-items:center;gap:6px;white-space:nowrap}
#uplink b{font-weight:500;color:var(--muted)}
.led{width:7px;height:7px;border-radius:50%;background:var(--muted);box-shadow:0 0 9px currentColor;flex:none}
#uplink.live .led{background:var(--good);color:var(--good);animation:bp 2.4s ease-in-out infinite}
#uplink.live b{color:var(--good)}
#uplink.down .led{background:var(--bad);color:var(--bad)}
#uplink.down b{color:var(--bad)}
@keyframes bp{0%,100%{opacity:1}50%{opacity:.35}}

/* ── sections ── */
section{padding-block:clamp(40px,6.5vw,66px);border-top:1px solid var(--line);position:relative}
section:first-of-type{border-top:0}
/* 首屏网格，向下淡出 */
section:first-of-type::before{content:"";position:absolute;inset:-1px 0 auto;height:420px;pointer-events:none;
  background-image:linear-gradient(rgba(53,214,232,.055) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(53,214,232,.055) 1px,transparent 1px);
  background-size:46px 46px;
  -webkit-mask-image:linear-gradient(180deg,#000 0%,transparent 100%);
  mask-image:linear-gradient(180deg,#000 0%,transparent 100%)}
.shead{display:flex;flex-direction:column;gap:7px;margin-bottom:20px;position:relative}
.lede{color:var(--muted);max-width:66ch}

/* ── 读数板 ── */
.board{display:grid;grid-template-columns:repeat(auto-fit,minmax(152px,1fr));gap:1px;
  background:var(--line);border:1px solid var(--line);margin-top:24px;position:relative}
.cell{background:var(--surface);padding:14px 16px;display:flex;flex-direction:column;gap:5px;min-width:0}
.cell .k{font-family:var(--mono);font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.cell .v{font-family:var(--mono);font-variant-numeric:tabular-nums;font-size:1.22rem;font-weight:600;
  letter-spacing:-.01em;overflow-wrap:anywhere;color:var(--ink)}
.cell .s{font-size:.7rem;color:var(--muted);font-family:var(--mono)}
.cell.hl{background:linear-gradient(180deg,var(--hot-soft),transparent)}
.cell.hl .v{color:var(--hot);text-shadow:0 0 16px rgba(255,59,46,.4)}

.callout{margin-top:22px;background:var(--surface);padding:17px 19px;display:flex;flex-direction:column;gap:7px;
  border:1px solid var(--line);border-left:2px solid var(--hot);position:relative}
.callout p{color:var(--muted)}

.grid2{display:grid;grid-template-columns:repeat(auto-fit,minmax(272px,1fr));gap:18px}
/* 角标：HUD 框 */
.panel{background:var(--surface);border:1px solid var(--line);padding:19px;position:relative}
.panel::before,.panel::after{content:"";position:absolute;width:11px;height:11px;
  border:1px solid var(--cyan);opacity:.45;pointer-events:none}
.panel::before{top:-1px;left:-1px;border-right:0;border-bottom:0}
.panel::after{bottom:-1px;right:-1px;border-left:0;border-top:0}
.panel .ph{display:flex;align-items:baseline;justify-content:space-between;gap:10px;margin-bottom:11px}
.panel p{color:var(--muted);font-size:.9rem}

/* ── 表 ── */
.tbl{width:100%;border-collapse:collapse;font-size:.87rem}
.tscroll{overflow-x:auto;border:1px solid var(--line);background:var(--surface)}
.tbl th,.tbl td{padding:9px 14px;text-align:right;white-space:nowrap;border-bottom:1px solid var(--line)}
.tbl th:first-child,.tbl td:first-child{text-align:left;white-space:normal;min-width:188px}
.tbl thead th{font-family:var(--mono);font-size:.63rem;letter-spacing:.12em;text-transform:uppercase;
  color:var(--cyan);font-weight:500;background:var(--surface2)}
.tbl tbody tr:last-child td{border-bottom:0}
.tbl tbody tr:hover td{background:rgba(53,214,232,.035)}
.tbl td.n{font-family:var(--mono);font-variant-numeric:tabular-nums}
.tbl tr.em td{background:var(--hot-soft);color:var(--ink);font-weight:600}

/* ── 状态灯徽标 ── */
.pill{display:inline-flex;align-items:center;gap:6px;font-family:var(--mono);font-size:.63rem;
  letter-spacing:.1em;text-transform:uppercase;padding:3px 8px;border-radius:2px;white-space:nowrap;
  border:1px solid currentColor}
.pill::before{content:"";width:5px;height:5px;border-radius:50%;background:currentColor;
  box-shadow:0 0 7px currentColor;flex:none}
.pill.g{color:var(--good);background:var(--good-soft)}
.pill.w{color:var(--amber);background:var(--amber-soft)}
.pill.b{color:var(--bad);background:var(--bad-soft)}
.pill.n{color:var(--muted);background:var(--surface2)}

ul.plain{margin:0;padding-left:0;list-style:none;color:var(--muted);font-size:.9rem;
  display:flex;flex-direction:column;gap:9px}
ul.plain li{position:relative;padding-left:17px}
ul.plain li::before{content:"▸";position:absolute;left:0;color:var(--cyan);opacity:.7}
ol.crit{margin:0;padding-left:0;list-style:none;counter-reset:c;display:flex;flex-direction:column;gap:11px;
  font-size:.9rem;color:var(--muted)}
ol.crit li{position:relative;padding-left:34px;counter-increment:c}
ol.crit li::before{content:counter(c,decimal-leading-zero);position:absolute;left:0;top:1px;
  font-family:var(--mono);font-size:.74rem;color:var(--hot);border:1px solid var(--line2);
  padding:1px 5px;letter-spacing:.04em}
ol.crit b{color:var(--ink);font-weight:600}

.addr{font-family:var(--mono);font-size:.74rem;word-break:break-all;color:var(--muted)}
.note{font-size:.8rem;color:var(--muted);font-family:var(--mono);line-height:1.6}
pre.cmd{background:#04070a;border:1px solid var(--line);padding:14px 15px;overflow-x:auto;
  font-family:var(--mono);font-size:.74rem;margin:0;color:var(--cyan);line-height:1.75}
footer{border-top:1px solid var(--line);padding-block:32px;color:var(--muted);font-size:.83rem;position:relative;z-index:1}
.frow{display:flex;gap:18px;flex-wrap:wrap;align-items:center}
.stale{opacity:.4}

/* 窄屏：页眉收成一行。
   让位的是合约地址按钮——它在页脚有完整文本，是工具；
   而字标是身份，状态灯是信息，这两个留下。 */
@media (max-width:480px){
  #copyca{display:none}
  #uplink b{display:none}
  .topin{gap:9px;padding:8px 20px}
  .brand img{width:30px;height:30px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}}

/* ---------- 跨页导航：首页之外还有 /nft /event /dexfans ---------- */
.subnav{position:sticky;top:0;z-index:50;background:rgba(6,9,13,.92);
  backdrop-filter:blur(10px);border-bottom:1px solid var(--line)}
.subin{max-width:980px;margin:0 auto;padding:0 20px;display:flex;gap:2px;
  overflow-x:auto;scrollbar-width:none}
.subin::-webkit-scrollbar{display:none}
.subin a{font-family:var(--mono);font-size:.68rem;letter-spacing:.13em;text-transform:uppercase;
  color:var(--muted);text-decoration:none;padding:11px 13px;white-space:nowrap;
  border-bottom:2px solid transparent;transition:color .15s,border-color .15s}
.subin a:hover{color:var(--ink)}
.subin a[aria-current="page"]{color:var(--hot);border-bottom-color:var(--hot)}

/* 一行里落单的最后一格会留下一个空方块，让它占满整行 */
@media (max-width:620px){
  .board>.cell:last-child:nth-child(odd){grid-column:1/-1}
}

/* 「即将推出」占位页：把空状态做成状态，而不是做成一张空页 */
.soon{border:1px solid var(--line);background:var(--surface);padding:34px 22px;
  margin-top:24px;text-align:center;position:relative}
.soon .big{font-family:var(--disp);font-size:clamp(1.3rem,4vw,2rem);font-weight:700;
  letter-spacing:.02em;color:var(--ink)}
.soon .sub{font-family:var(--mono);font-size:.7rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--amber);margin-top:9px}
.soon p{color:var(--muted);max-width:56ch;margin:14px auto 0}

/* ---------- 钱包门 ---------- */
.chip.wchip{border-color:var(--line2)}
.chip.wchip.on{color:var(--good);border-color:rgba(47,224,166,.4);background:var(--good-soft)}
.chip.wchip:disabled{opacity:.6;cursor:default}

#wpanel{position:fixed;top:58px;right:20px;z-index:70;width:min(320px,calc(100vw - 40px));
  background:var(--surface);border:1px solid var(--line2);padding:16px 17px;
  box-shadow:0 18px 50px rgba(0,0,0,.55)}
#wpanel::before,#wpanel::after{content:"";position:absolute;width:9px;height:9px;
  border:1px solid var(--cyan);opacity:.45;pointer-events:none}
#wpanel::before{top:-1px;left:-1px;border-right:0;border-bottom:0}
#wpanel::after{bottom:-1px;right:-1px;border-left:0;border-top:0}
#wpanel .whead{font-family:var(--mono);font-size:.66rem;letter-spacing:.16em;text-transform:uppercase;
  color:var(--muted);padding-bottom:10px;margin-bottom:10px;border-bottom:1px solid var(--line)}
#wpanel .wrow{display:flex;justify-content:space-between;align-items:baseline;gap:12px;padding:5px 0}
#wpanel .wk{font-family:var(--mono);font-size:.64rem;letter-spacing:.1em;text-transform:uppercase;color:var(--muted)}
#wpanel .wv{font-family:var(--mono);font-size:.84rem;font-variant-numeric:tabular-nums;color:var(--ink);
  text-align:right;overflow-wrap:anywhere}
#wpanel .wmono{color:var(--cyan)}
#wpanel .wnote{margin-top:11px;padding-top:10px;border-top:1px solid var(--line);
  font-size:.72rem;line-height:1.5;color:var(--muted)}

@media (max-width:480px){
  #wpanel{top:52px;right:12px;left:12px;width:auto}
}
