/* ===== 8868看台 · /assets/site.css ===== */

/* --- 1. Reset --- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body,h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd,pre{margin:0}
ul,ol{margin:0;padding:0;list-style:none}
img,svg,video{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
button,input,select,textarea{font:inherit;color:inherit}
button{background:none;border:0;cursor:pointer}
table{border-collapse:collapse;border-spacing:0;width:100%}
hr{border:0}
em{font-style:normal}

/* --- 2. 变量 --- */
:root{
  --ink:#050E1F;
  --panel:#0B1A31;
  --grid:#17294A;
  --grid-soft:rgba(23,41,74,.62);
  --white:#E9EFF8;
  --mute:#8EA1BC;
  --qing:#17B3C4;
  --qing-ink:#04121A;
  --mint:#3FE0C4;
  --warn:#FF6A3D;
  --gold:#F2C230;
  --mono:ui-monospace,"JetBrains Mono","Roboto Mono",Consolas,"Courier New",monospace;
  --sans:"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei","Source Han Sans SC",system-ui,-apple-system,"Segoe UI",Roboto,sans-serif;
  --wrap:1280px;
  --gut:clamp(16px,4vw,40px);
  --head-h:56px;
  --rail-w:72px;
  --measure:34em;
  --tick:160ms;
}

/* --- 3. 基础排版 --- */
body{
  background-color:var(--ink);
  background-image:
    linear-gradient(to right,var(--grid-soft) 1px,transparent 1px),
    linear-gradient(to bottom,var(--grid-soft) 1px,transparent 1px);
  background-size:64px 64px;
  color:var(--white);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
  min-height:100vh;
}
h1,h2,h3,h4{font-weight:800;letter-spacing:-.02em;line-height:1.1}
h1{font-size:clamp(2.6rem,6vw,5.2rem)}
h2{font-size:clamp(1.9rem,3.4vw,3rem)}
h3{font-size:clamp(20px,2.4vw,26px)}
p{max-width:var(--measure)}
.mono,code,kbd,samp,.stat__num,.table .num{font-family:var(--mono);font-variant-numeric:tabular-nums;letter-spacing:.02em}
::selection{background:var(--qing);color:var(--qing-ink)}
:focus-visible{outline:2px solid var(--qing);outline-offset:2px}
a:focus-visible,button:focus-visible{outline:2px solid var(--qing);outline-offset:2px}

/* --- 4. 布局容器 --- */
.wrap{width:100%;max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut)}
.wrap--narrow{max-width:840px}
.site-main{display:block}
.section{padding:clamp(40px,6vw,84px) 0}
.section--tight{padding:clamp(24px,3vw,40px) 0}
.rule{height:1px;background:var(--grid);width:100%}

.sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:20px;
  border-bottom:1px solid var(--grid);padding-bottom:14px;margin-bottom:clamp(18px,2.4vw,30px)}
.sec-head__title{font-size:clamp(20px,2.4vw,26px);font-weight:800;letter-spacing:-.01em}
.sec-head__meta{font-family:var(--mono);font-size:11.5px;letter-spacing:.12em;color:var(--mute);white-space:nowrap}

.kicker{display:inline-block;font-family:var(--mono);font-size:12px;letter-spacing:.2em;color:var(--qing)}
.lede{font-size:clamp(16px,1.6vw,18px);line-height:1.85;color:var(--mute);max-width:var(--measure)}
.prose{max-width:var(--measure)}
.prose p+p{margin-top:1.1em}
.prose h3{margin:2em 0 .6em}

.cols{display:grid;gap:clamp(14px,2vw,24px)}
.cols--2{grid-template-columns:repeat(2,minmax(0,1fr))}
.cols--3{grid-template-columns:repeat(3,minmax(0,1fr))}
.cols--4{grid-template-columns:repeat(4,minmax(0,1fr))}
.split{display:grid;grid-template-columns:minmax(200px,3fr) minmax(0,9fr);gap:clamp(20px,3vw,40px)}

.cells{display:grid;gap:1px;background:var(--grid);border:1px solid var(--grid)}
.cells>*{background:var(--ink);padding:clamp(16px,2.4vw,28px);min-width:0}
.panel{background:var(--panel);border:1px solid var(--grid);padding:clamp(16px,2.4vw,28px)}

/* --- 5. 通用元件 --- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:.5em;
  padding:8px 14px;min-height:34px;
  font-size:13px;font-weight:600;letter-spacing:.08em;
  border:1px solid var(--grid);background:transparent;color:var(--white);
  transition:transform var(--tick) ease,border-color var(--tick) ease,
             background-color var(--tick) ease,color var(--tick) ease;
}
.btn:hover{transform:translateY(-2px);border-color:var(--qing)}
.btn:active{transform:translateY(0)}
.btn--accent{background:var(--qing);border-color:var(--qing);color:var(--qing-ink)}
.btn--accent:hover{background:var(--mint);border-color:var(--mint)}
.btn--ghost{color:var(--mute)}
.btn--ghost:hover{color:var(--white)}
.btn--block{width:100%}

.crumb{padding:clamp(14px,2vw,22px) 0}
.crumb__list{display:flex;flex-wrap:wrap;align-items:center;gap:8px;
  font-family:var(--mono);font-size:12px;letter-spacing:.08em;color:var(--mute)}
.crumb__list li{display:inline-flex;align-items:center;gap:8px}
.crumb__list li+li::before{content:"/";color:var(--grid);color:#2d4470}
.crumb__list a{color:var(--mute)}
.crumb__list a:hover{color:var(--qing)}
.crumb__list [aria-current="page"]{color:var(--white)}

.tag{display:inline-flex;align-items:center;gap:6px;padding:3px 8px;
  font-family:var(--mono);font-size:11px;letter-spacing:.1em;
  border:1px solid var(--grid);color:var(--mute)}
.tag--qing{border-color:var(--qing);color:var(--qing)}
.tag--warn{border-color:var(--warn);color:var(--warn)}
.tag--gold{border-color:var(--gold);color:var(--gold)}

.stat{display:flex;flex-direction:column;gap:6px}
.stat__num{font-size:clamp(28px,4vw,44px);font-weight:700;line-height:1;color:var(--white)}
.stat__num--mint{color:var(--mint)}
.stat__num--warn{color:var(--warn)}
.stat__num--gold{color:var(--gold)}
.stat__label{font-family:var(--mono);font-size:11.5px;letter-spacing:.12em;color:var(--mute)}

.table-wrap{width:100%;overflow-x:auto;border:1px solid var(--grid)}
.table{min-width:520px;font-size:14px}
.table th,.table td{text-align:left;padding:10px 12px;border-bottom:1px solid var(--grid)}
.table thead th{font-family:var(--mono);font-size:11.5px;letter-spacing:.12em;color:var(--mute);font-weight:500}
.table tbody tr:last-child td{border-bottom:0}
.table tbody tr:hover{background:var(--panel)}
.table .num{text-align:right}

.pic{position:relative;display:block;width:100%;overflow:hidden;
  background:var(--panel);border:1px solid var(--grid);aspect-ratio:16/9}
.pic>img{width:100%;height:100%;object-fit:cover;filter:saturate(.9) contrast(1.06) brightness(.92)}
.pic::after{content:"";position:absolute;inset:0;pointer-events:none;opacity:.45;
  background-image:
    linear-gradient(to right,rgba(23,41,74,.7) 1px,transparent 1px),
    linear-gradient(to bottom,rgba(23,41,74,.7) 1px,transparent 1px);
  background-size:32px 32px}
.pic--wide{aspect-ratio:21/9}
.pic--tall{aspect-ratio:4/5}
.pic--sq{aspect-ratio:1/1}
.pic__cap{position:absolute;left:0;right:0;bottom:0;z-index:2;
  padding:8px 10px;background:rgba(5,14,31,.88);border-top:1px solid var(--grid);
  font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--white)}
.figure{display:flex;flex-direction:column;gap:8px}
.figure__cap{font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;color:var(--mute)}

/* --- 6. 跳转链接 --- */
.skip-link{
  position:fixed;top:8px;left:8px;z-index:200;
  padding:8px 12px;background:var(--qing);color:var(--qing-ink);
  font-size:13px;font-weight:700;letter-spacing:.06em;
  transform:translateY(-220%);
  transition:transform var(--tick) ease;
}
.skip-link:focus{transform:translateY(0)}

/* --- 7. 头部 --- */
.site-header{
  position:sticky;top:0;z-index:120;
  background:var(--ink);
  border-bottom:1px solid var(--grid);
}
.site-header__inner{
  max-width:var(--wrap);margin-inline:auto;padding-inline:var(--gut);
  height:var(--head-h);
  display:flex;align-items:center;gap:clamp(10px,1.6vw,24px);
}
.scroll-progress{position:absolute;left:0;right:0;top:0;height:2px;background:transparent;pointer-events:none;z-index:2}
.scroll-progress__fill{display:block;height:100%;width:0;background:var(--qing)}

.brand{display:inline-flex;align-items:center;gap:10px;flex:0 0 auto;color:var(--white)}
.brand__tick{display:block;width:3px;height:18px;background:var(--qing)}
.brand__mark{font-family:var(--mono);font-size:19px;font-weight:700;letter-spacing:.02em;line-height:1}
.brand__cn{font-size:12px;letter-spacing:.34em;color:var(--mute);padding-left:10px;border-left:1px solid var(--grid);line-height:1}
.brand:hover .brand__cn{color:var(--white)}

.site-nav{margin-left:auto}
.nav-list{display:flex;align-items:center;gap:clamp(0px,1vw,12px)}
.nav-link{
  position:relative;display:inline-flex;align-items:center;
  height:var(--head-h);padding:0 clamp(8px,1vw,14px);
  font-size:14px;letter-spacing:.06em;color:var(--mute);
  transition:color var(--tick) ease;
}
.nav-link::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:var(--qing);
  transform:scaleX(0);transform-origin:left center;
  transition:transform var(--tick) ease;
}
.nav-link:hover{color:var(--white)}
.nav-link:hover::after{transform:scaleX(1)}
.nav-link[aria-current="page"]{color:var(--white);font-weight:600}
.nav-link[aria-current="page"]::after{transform:scaleX(1)}

.head-actions{
  display:flex;align-items:center;gap:8px;
  margin-left:clamp(8px,1.6vw,20px);padding-left:clamp(8px,1.6vw,20px);
  border-left:1px solid var(--grid);
}
.nav-toggle{
  display:none;margin-left:auto;align-items:center;justify-content:center;
  width:42px;height:36px;border:1px solid var(--grid);
  transition:border-color var(--tick) ease;
}
.nav-toggle:hover{border-color:var(--qing)}
.nav-toggle__bars{position:relative;display:block;width:18px;height:11px}
.nav-toggle__bars>span{position:absolute;left:0;right:0;height:1px;background:var(--white);
  transition:transform var(--tick) ease,opacity var(--tick) ease}
.nav-toggle__bars>span:nth-child(1){top:0}
.nav-toggle__bars>span:nth-child(2){top:5px}
.nav-toggle__bars>span:nth-child(3){top:10px}
.site-header[data-open] .nav-toggle__bars>span:nth-child(1){transform:translateY(5px) rotate(45deg)}
.site-header[data-open] .nav-toggle__bars>span:nth-child(2){opacity:0}
.site-header[data-open] .nav-toggle__bars>span:nth-child(3){transform:translateY(-5px) rotate(-45deg)}

/* --- 8. 页脚 --- */
.site-footer{
  margin-top:clamp(40px,7vw,88px);
  background:var(--panel);
  border-top:1px solid var(--qing);
}
.foot-inner{
  max-width:var(--wrap);margin-inline:auto;
  padding:clamp(28px,4vw,52px) var(--gut) clamp(24px,3vw,36px);
  display:grid;gap:clamp(22px,3vw,44px);
  grid-template-columns:minmax(210px,1.15fr) repeat(4,minmax(130px,1fr));
}
.foot-brand__mark{font-family:var(--mono);font-size:22px;font-weight:700;letter-spacing:.02em;
  display:flex;align-items:baseline;gap:10px;color:var(--white)}
.foot-brand__mark em{font-family:var(--sans);font-size:12px;letter-spacing:.34em;color:var(--mute)}
.foot-brand p{margin-top:12px;font-size:13px;line-height:1.85;color:var(--mute);max-width:26em}
.foot-brand__tag{display:inline-flex;align-items:center;gap:8px;margin-top:14px;
  padding:5px 9px;border:1px solid var(--grid);
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--mute)}
.foot-brand__tag::before{content:"";width:6px;height:6px;background:var(--mint);flex:0 0 auto}

.foot-col__title{position:relative;display:flex;align-items:center;gap:8px;
  font-family:var(--mono);font-size:11px;letter-spacing:.2em;color:var(--mute);
  padding-bottom:10px;margin-bottom:14px;border-bottom:1px solid var(--grid)}
.foot-col__title::before{content:"";width:6px;height:6px;background:var(--qing);flex:0 0 auto}
.foot-list{display:flex;flex-direction:column;gap:1px}
.foot-list a{display:inline-block;padding:5px 0;font-size:14px;color:var(--white);opacity:.84;
  transition:transform var(--tick) ease,color var(--tick) ease,opacity var(--tick) ease}
.foot-list a:hover{opacity:1;color:var(--qing);transform:translateX(3px)}

.foot-contact{display:flex;flex-direction:column;gap:10px;margin-top:4px}
.foot-contact__row{display:flex;align-items:flex-start;gap:8px;font-size:13px;line-height:1.7}
.foot-contact__k{flex:0 0 auto;min-width:32px;padding-top:4px;
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;color:var(--qing)}
.foot-contact__v{color:var(--white);font-family:var(--mono);font-size:12.5px;word-break:break-all;padding-top:2px}
.copy-btn{
  flex:0 0 auto;margin-left:2px;padding:3px 7px;
  font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--mute);
  border:1px solid var(--grid);background:transparent;
  transition:color var(--tick) ease,border-color var(--tick) ease,background-color var(--tick) ease;
}
.copy-btn:hover{border-color:var(--qing);color:var(--white)}
.copy-btn.is-copied{background:var(--qing);border-color:var(--qing);color:var(--qing-ink)}

.foot-bar{position:sticky;bottom:0;z-index:5;background:var(--ink);border-top:1px solid var(--grid)}
.foot-bar__inner{
  max-width:var(--wrap);margin-inline:auto;padding:10px var(--gut);
  display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:6px 24px;
  font-family:var(--mono);font-size:11.5px;letter-spacing:.08em;color:var(--mute);
}

/* --- 9. 左侧数据轨道 --- */
.data-rail{
  display:none;position:fixed;left:0;top:0;bottom:0;width:var(--rail-w);z-index:130;
  background:var(--panel);border-right:1px solid var(--grid);
  flex-direction:column;align-items:center;padding:0 0 22px;
}
.data-rail__head{height:var(--head-h);width:100%;flex:0 0 auto;
  border-bottom:1px solid var(--grid);display:flex;align-items:center;justify-content:center;
  font-family:var(--mono);font-size:10px;letter-spacing:.16em;color:var(--qing)}
.data-rail__label{writing-mode:vertical-rl;margin-top:18px;
  font-family:var(--mono);font-size:11px;letter-spacing:.24em;color:var(--mute)}
.data-rail__track{position:relative;flex:1 1 auto;width:1px;background:var(--grid);margin:16px 0}
.data-rail__fill{position:absolute;left:0;top:0;width:1px;height:0;background:var(--qing)}
.data-rail__pct{font-family:var(--mono);font-size:11px;letter-spacing:.06em;color:var(--qing)}

/* --- 10. 显现 --- */
[data-reveal]{opacity:1;transform:none}
.has-js [data-reveal]{opacity:0;transform:translateY(10px);
  transition:opacity 240ms ease,transform 240ms ease}
.has-js [data-reveal].is-in{opacity:1;transform:none}

/* --- 11. 响应式 --- */
@media (min-width:1240px){
  body.has-rail{padding-left:var(--rail-w)}
  .data-rail{display:flex}
}
@media (max-width:1080px){
  .foot-inner{grid-template-columns:repeat(2,minmax(0,1fr))}
  .foot-brand{grid-column:1/-1}
}
@media (max-width:960px){
  .cols--3,.cols--4{grid-template-columns:repeat(2,minmax(0,1fr))}
  .split{grid-template-columns:1fr}
}
@media (max-width:900px){
  .nav-toggle{display:inline-flex;margin-left:0}
  .head-actions{margin-left:auto;padding-left:0;border-left:0;gap:6px}
  .site-nav{
    position:fixed;left:0;right:0;top:var(--head-h);
    display:none;
    max-height:calc(100vh - var(--head-h));
    overflow-y:auto;
    background:var(--ink);
    border-bottom:1px solid var(--grid);
    padding:4px var(--gut) 22px;
  }
  .site-header[data-open] .site-nav{display:block}
  .nav-list{display:block}
  .nav-link{
    display:flex;width:100%;height:auto;min-height:48px;
    padding:14px 0 14px 14px;font-size:16px;letter-spacing:.04em;
    border-bottom:1px solid var(--grid);
  }
  .nav-link::after{
    left:0;right:auto;top:14px;bottom:14px;width:1px;height:auto;
    transform:scaleY(0);transform-origin:top center;
  }
  .nav-link:hover::after,.nav-link[aria-current="page"]::after{transform:scaleY(1)}
  body.is-nav-open{overflow:hidden}
}
@media (max-width:620px){
  .cols--2,.cols--3,.cols--4{grid-template-columns:1fr}
  .foot-inner{grid-template-columns:1fr}
  .table{min-width:440px}
}
@media (max-width:560px){
  .brand__cn{display:none}
  .head-actions .btn--ghost{display:none}
  .btn{padding:7px 10px;font-size:12px;letter-spacing:.06em}
  .brand__mark{font-size:17px}
}

/* --- 12. 动效降级 --- */
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{
    animation-duration:.001ms !important;
    animation-iteration-count:1 !important;
    transition-duration:.001ms !important;
  }
  .has-js [data-reveal]{opacity:1;transform:none}
}
