/* ═══════════════════════════════════════════════════════════════
   site.css —— 全站基础样式（所有页面共用）
   设计约束：零渐变 / 零 box-shadow / 圆角 ≤ 4px / 零外部资源
   ═══════════════════════════════════════════════════════════════ */

/* ── 01 设计令牌 ─────────────────────────────────────────── */
:root{
  --bg:#08080a; --tx:#f1f1ee; --tx2:#6d6d70; --tx3:#3a3a3e;
  --line:#1c1c20; --ac:#d4ff3f; --ac-ink:#08080a; --radius:2px;
  /* 旧版别名，保证历史内联样式里的 var() 继续可用 */
  --bl:var(--ac); --am:#d4ff3f; --ok:#d4ff3f;
  --sans:system-ui,-apple-system,"Segoe UI",Roboto,"Helvetica Neue","PingFang SC","Hiragino Sans GB","Microsoft YaHei",sans-serif;
  --mono:ui-monospace,SFMono-Regular,"SF Mono",Menlo,Consolas,"Liberation Mono","Courier New",monospace;
  --nav-h:58px;
  --gut:clamp(18px,4.4vw,44px);
  --maxw:1180px;
  --ease:cubic-bezier(.22,.61,.36,1);
}
:root[data-theme="light"]{
  --bg:#f2f2ee; --tx:#08080a; --tx2:#6d6d70; --tx3:#b4b4ae;
  --line:#dcdcd4; --ac:#5c7600; --ac-ink:#f7ffdd;
}
/* ── 02 重置 ─────────────────────────────────────────────── */
*,*::before,*::after{box-sizing:border-box;border-radius:0}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--tx);font-family:var(--sans);
  font-size:16px;line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
h1,h2,h3,h4,p,figure,blockquote{margin:0}
ul,ol{margin:0;padding:0;list-style:none}
img{max-width:100%;display:block;border-radius:var(--radius)}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;border-radius:var(--radius)}
::selection{background:var(--ac);color:var(--ac-ink)}
:focus-visible{outline:2px solid var(--ac);outline-offset:3px}
:focus:not(:focus-visible){outline:none}
.skip{position:fixed;top:-100px;left:12px;z-index:999;background:var(--ac);color:var(--ac-ink);
  padding:10px 16px;font:600 13px/1 var(--mono);border-radius:var(--radius);transition:top .18s var(--ease)}
.skip:focus{top:12px}
.mono{font-family:var(--mono);font-size:11.5px;letter-spacing:.14em;text-transform:uppercase;color:var(--tx2)}
/* 行内代码：正文里出现技术名词时的统一呈现 */
code{font-family:var(--mono);font-size:.88em;background:var(--line);color:var(--ac);padding:.12em .4em;border-radius:var(--radius)}
/* ── 03 图标精灵 ─────────────────────────────────────────── */
.sprite{position:absolute;width:0;height:0;overflow:hidden}
.i{width:1em;height:1em;flex:none;fill:currentColor;display:block}
.i-s{fill:none;stroke:currentColor;stroke-width:1.7;stroke-linecap:square}
.i-lg{width:24px;height:24px}
/* ── 04 骨架 ─────────────────────────────────────────────── */
.wrap,.section-content{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 var(--gut);position:relative;z-index:1}
main{position:relative;z-index:1}
section{position:relative;scroll-margin-top:var(--nav-h)}
.sec-head,.section-header{margin-bottom:clamp(30px,4.6vw,52px)}
.sec-head h2,.section-header h2{font-size:clamp(1.5rem,4.2vw,2.15rem);font-weight:800;letter-spacing:-.02em;line-height:1.14}
.sec-head .kicker{display:flex;align-items:center;gap:12px;margin-bottom:14px}
.sec-head .kicker::after{content:"";flex:1;height:1px;background:var(--line)}
.sec-head .lead,.section-header p{margin-top:10px;color:var(--tx2);font-size:.94rem;max-width:62ch}
.back-link{display:inline-flex;align-items:center;gap:8px;font-family:var(--mono);font-size:11.5px;
  letter-spacing:.1em;text-transform:uppercase;color:var(--tx2);margin-bottom:26px;transition:color .2s;
  background:none;border:0;padding:0;cursor:pointer}
.back-link:hover{color:var(--ac)}
/* ── 05 按钮 ─────────────────────────────────────────────── */
.btn,.button,.service-button{display:inline-flex;align-items:center;justify-content:center;gap:9px;
  padding:11px 19px;border:1px solid var(--line);border-radius:var(--radius);font-size:.86rem;
  font-weight:600;color:var(--tx);cursor:pointer;transition:background .22s var(--ease),color .22s var(--ease),border-color .22s var(--ease)}
.btn:hover,.button:hover,.service-button:hover{border-color:var(--ac);color:var(--ac)}
.btn-solid,.primary-btn,.button.primary-btn{background:var(--ac);color:var(--ac-ink);border-color:var(--ac)}
.btn-solid:hover,.primary-btn:hover,.button.primary-btn:hover{background:transparent;color:var(--ac)}
.buttons,.button-group{display:flex;flex-wrap:wrap;gap:10px}
/* ── 06 行列表 ───────────────────────────────────────────── */
.rows{border-top:1px solid var(--line)}
.row{position:relative;display:grid;grid-template-columns:auto minmax(0,1fr) auto;align-items:baseline;
  gap:clamp(12px,3vw,30px);padding:20px 16px 20px 18px;border-bottom:1px solid var(--line);
  transition:background .24s var(--ease),color .24s var(--ease),padding-left .24s var(--ease)}
.row::before{content:"";position:absolute;left:0;top:0;bottom:0;width:2px;background:var(--ac);
  transform:scaleY(0);transition:transform .3s var(--ease)}
.row:hover,.row:focus-visible{background:var(--ac);color:var(--ac-ink);padding-left:26px}
.row:hover::before,.row:focus-visible::before{transform:scaleY(1)}
.row:hover .r-meta,.row:hover .r-idx{color:var(--ac-ink);opacity:.72}
.row:hover .r-tit::after{transform:scaleX(1)}
.row:hover .r-arw{opacity:1;transform:none}
.r-idx{font-family:var(--mono);font-size:11.5px;color:var(--tx3);transition:color .24s}
.r-main{display:block;min-width:0}
.r-tit{font-size:1.15rem;font-weight:700;letter-spacing:-.015em;display:inline-block;position:relative}
.r-tit::after{content:"";position:absolute;left:0;right:0;bottom:-2px;height:1px;background:currentColor;
  transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease)}
.r-desc{display:block;color:var(--tx2);font-size:.875rem;margin-top:7px;transition:color .24s;max-width:64ch}
.r-meta{font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--tx3);text-align:right;
  white-space:nowrap;transition:color .24s}
.r-arw{font-family:var(--mono);opacity:0;transform:translate(-6px,6px);display:inline;
  transition:opacity .26s var(--ease),transform .26s var(--ease)}
/* ── 07 覆盖层 ───────────────────────────────────────────── */
#progress{position:fixed;top:0;left:0;height:2px;width:0;background:var(--ac);z-index:80;pointer-events:none}
#particles-js{position:fixed;inset:0;z-index:0;pointer-events:none;opacity:.5}
:root[data-theme="light"] #particles-js{opacity:.3}
#particles-js canvas{display:block;width:100%;height:100%}
.bg-deco{position:fixed;inset:0;z-index:0;pointer-events:none;overflow:hidden}
.bg-deco span{position:absolute;display:block;border:1px solid var(--line)}
.bg-deco span:nth-child(1){width:190px;height:190px;top:14%;left:6%}
.bg-deco span:nth-child(2){width:120px;height:120px;top:58%;left:12%;border-color:var(--tx3)}
.bg-deco span:nth-child(3){width:250px;height:250px;top:24%;right:5%}
.bg-deco span:nth-child(4){width:90px;height:90px;top:74%;right:14%;border-color:var(--ac);opacity:.45}
.bg-deco span:nth-child(5){width:150px;height:150px;bottom:8%;left:44%;border-color:var(--tx3)}
.xhair{position:fixed;inset:0;z-index:70;pointer-events:none;display:none}
.xhair b{position:absolute;background:var(--ac);opacity:.22;display:block}
.xhair b:nth-child(1){width:1px;height:100vh;top:0;left:0}
.xhair b:nth-child(2){height:1px;width:100vw;left:0;top:0}
.hud{position:fixed;left:var(--gut);bottom:22px;z-index:70;display:none;font-family:var(--mono);
  font-size:11px;letter-spacing:.1em;color:var(--tx3);border-left:2px solid var(--ac);
  padding-left:9px;line-height:1.5;pointer-events:none}
.hud i{font-style:normal;color:var(--tx2)}
@media (hover:hover) and (min-width:1024px){.xhair,.hud{display:block}}
/* ── 08 导航 ─────────────────────────────────────────────── */
.nav{position:fixed;top:0;left:0;right:0;z-index:90;height:var(--nav-h);border-bottom:1px solid transparent;
  transition:background .3s var(--ease),border-color .3s var(--ease)}
.nav.scrolled{background:color-mix(in srgb,var(--bg) 86%,transparent);border-bottom-color:var(--line);
  backdrop-filter:saturate(140%) blur(12px)}
.nav-in{height:100%;display:flex;align-items:center;gap:20px}
.brand{display:flex;align-items:center;gap:9px;font-weight:800;letter-spacing:-.02em;font-size:1.02rem;flex:none}
.brand em{font-style:normal;width:11px;height:11px;background:var(--ac);display:block;border-radius:50%}
.nav-links{display:flex;align-items:center;gap:2px;margin-left:auto}
.nav-links a{position:relative;display:block;padding:7px 11px;font-size:.855rem;color:var(--tx2);
  font-weight:500;transition:color .2s var(--ease);white-space:nowrap}
.nav-links a::after{content:"";position:absolute;left:11px;right:11px;bottom:3px;height:1px;
  background:var(--ac);transform:scaleX(0);transform-origin:left;transition:transform .28s var(--ease)}
.nav-links a:hover{color:var(--tx)}
.nav-links a:hover::after,.nav-links a.active::after{transform:scaleX(1)}
.nav-links a.active{color:var(--ac)}
.nav-sep{width:1px;height:16px;background:var(--line);margin:0 8px;flex:none}
.nav-tools{display:flex;align-items:center;gap:8px;flex:none}
.icon-btn{width:34px;height:34px;display:grid;place-items:center;font-size:15px;color:var(--tx2);
  border:1px solid var(--line);border-radius:var(--radius);transition:color .2s,border-color .2s}
.icon-btn:hover{color:var(--ac);border-color:var(--ac)}
.burger{display:none;width:34px;height:34px;border:1px solid var(--line);border-radius:var(--radius);place-items:center}
.burger span{display:block;width:15px;height:1px;background:var(--tx);margin:2.5px auto;transition:transform .25s var(--ease),opacity .2s}
.burger.on span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.burger.on span:nth-child(2){opacity:0}
.burger.on span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}
/* ── 09 返回顶部 / 页脚 ─────────────────────────────────── */
#top,#backToTop{position:fixed;right:var(--gut);bottom:22px;z-index:70;width:38px;height:38px;
  display:grid;place-items:center;font-family:var(--mono);border:1px solid var(--line);background:var(--bg);
  color:var(--tx2);border-radius:var(--radius);opacity:0;visibility:hidden;transform:translateY(8px);
  transition:opacity .3s var(--ease),transform .3s var(--ease),visibility .3s,color .2s,border-color .2s}
#top.on,#backToTop.on{opacity:1;visibility:visible;transform:none}
#top:hover,#backToTop:hover{color:var(--ac);border-color:var(--ac)}
.foot,.footer{border-top:1px solid var(--line);padding:38px 0 30px;position:relative;z-index:1;margin-top:0}
.foot-in,.footer-content{width:100%;max-width:var(--maxw);margin:0 auto;padding:0 var(--gut);
  display:flex;justify-content:space-between;align-items:flex-end;gap:26px;flex-wrap:wrap}
.foot-l{display:grid;gap:7px}
.foot p,.footer-content p{font-size:.84rem;color:var(--tx2)}
.foot-clock{font-family:var(--mono);font-size:12px;letter-spacing:.14em;color:var(--tx3)}
.foot-clock b{color:var(--ac);font-weight:600}
.foot-links,.footer-links{display:flex;gap:18px;flex-wrap:wrap}
.foot-links a,.footer-links a{font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--tx2);transition:color .2s}
.foot-links a:hover,.footer-links a:hover{color:var(--ac)}
/* ── 10 通用小组件 ──────────────────────────────────────── */
.loading,.no-results{padding:30px 0;color:var(--tx2);font-family:var(--mono);font-size:11.5px;
  letter-spacing:.12em;text-transform:uppercase;text-align:center}
.js .rv{opacity:0;transform:translateY(15px);transition:opacity .62s var(--ease),transform .62s var(--ease);transition-delay:calc(var(--i,0)*62ms)}
.rv.in{opacity:1;transform:none}
.page-title{font-size:clamp(1.9rem,5.4vw,3rem);font-weight:800;letter-spacing:-.035em;line-height:1.06;margin-bottom:12px}
/* ── 11 响应式 ──────────────────────────────────────────── */
@media (max-width:820px){
  .nav-links{position:fixed;top:var(--nav-h);left:0;right:0;flex-direction:column;align-items:stretch;
    background:var(--bg);border-bottom:1px solid var(--line);padding:8px var(--gut) 18px;gap:0;
    margin-left:0;max-height:calc(100vh - var(--nav-h));overflow-y:auto;display:none}
  .nav-links.open{display:flex}
  .nav-links a{padding:14px 0;font-size:1rem;border-bottom:1px solid var(--line)}
  .nav-links a::after{display:none}
  .nav-sep{display:none}
  .burger{display:grid;margin-left:auto}
  .nav-tools{margin-left:8px}
  .row{grid-template-columns:auto minmax(0,1fr);gap:12px;padding:17px 14px 17px 16px}
  .r-meta,.r-arw{display:none}
  .row:hover,.row:focus-visible{padding-left:20px}
  .foot-in,.footer-content{flex-direction:column;align-items:flex-start;gap:20px}
  .hud{display:none!important}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  *,*::before,*::after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important}
  .rv{opacity:1;transform:none}
  .xhair,.hud{display:none!important}
  #particles-js{display:none}
}
