/* ============================================================
   /assets/site.css — 共享外壳：reset、变量、中文排版、
   头部、页脚、按钮、面包屑、容器、网格与基础组件
   ============================================================ */

/* ---------- 1. 设计令牌 ---------- */
:root{
  --night:#07231F;
  --panel:#0E3B33;
  --panel-2:#0A2C27;
  --line:#163A38;
  --cyan:#22F5C8;
  --mint:#A8FFE8;
  --amber:#FFB84D;
  --coral:#FF6B4A;
  --fog:#F1F7F4;
  --ink:#041311;

  --wrap:1240px;
  --gutter:clamp(16px,3.6vw,44px);

  --edge:4px solid var(--line);
  --shadow-hard:8px 8px 0 var(--ink);
  --shadow-soft:5px 5px 0 var(--ink);

  --font-display:"Noto Sans SC","Source Han Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  --font-body:"Noto Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,-apple-system,"Segoe UI",sans-serif;
  --font-mono:"JetBrains Mono","IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,"Noto Sans Mono CJK SC",monospace;

  --ease:cubic-bezier(.22,.61,.36,1);
  --dur:200ms;
}

/* ---------- 2. reset ---------- */
*,*::before,*::after{box-sizing:border-box;}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;}
body{
  margin:0;
  min-height:100vh;
  background-color:var(--night);
  background-image:
    radial-gradient(120% 80% at 100% 0%,rgba(34,245,200,.10),transparent 62%),
    radial-gradient(90% 70% at 0% 100%,rgba(255,184,77,.07),transparent 60%),
    repeating-linear-gradient(90deg,rgba(168,255,232,.045) 0 1px,transparent 1px 96px);
  background-repeat:no-repeat,no-repeat,repeat;
  color:var(--fog);
  font-family:var(--font-body);
  font-size:clamp(15px,.5vw + 13px,17px);
  line-height:1.75;
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
}
h1,h2,h3,h4,h5,h6,p,figure,blockquote,dl,dd{margin:0;}
ul,ol{margin:0;padding:0;list-style:none;}
img,svg,video{display:block;max-width:100%;height:auto;}
a{color:inherit;}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;}
table{border-collapse:collapse;width:100%;}
[hidden]{display:none !important;}

/* ---------- 3. 无障碍 ---------- */
:focus-visible{outline:3px solid var(--cyan);outline-offset:3px;}
.skip-link{
  position:absolute;top:-80px;left:12px;z-index:400;
  display:inline-flex;align-items:center;min-height:44px;
  padding:10px 18px;
  background:var(--cyan);color:var(--ink);
  font-family:var(--font-mono);font-size:13px;font-weight:700;letter-spacing:.06em;
  text-decoration:none;
  border:3px solid var(--ink);
  box-shadow:var(--shadow-soft);
  transition:top var(--dur) var(--ease);
}
.skip-link:focus,.skip-link:focus-visible{top:12px;}

/* ---------- 4. 头部 ---------- */
.site-header{
  position:sticky;top:0;z-index:120;
  background:rgba(7,35,31,.94);
  border-bottom:4px solid var(--line);
  -webkit-backdrop-filter:blur(10px);
  backdrop-filter:blur(10px);
}
@supports not ((backdrop-filter:blur(4px)) or (-webkit-backdrop-filter:blur(4px))){
  .site-header{background:#07231F;}
}
.header-rail{
  height:4px;
  background:linear-gradient(90deg,var(--cyan) 0 34%,var(--amber) 34% 40%,var(--coral) 40% 43%,var(--line) 43% 100%);
}
.header-inner{
  width:100%;max-width:var(--wrap);margin:0 auto;
  padding:12px var(--gutter);
  min-height:74px;
  display:flex;align-items:center;
  gap:clamp(14px,2.2vw,34px);
}
.brand-block{display:flex;flex-direction:column;gap:2px;min-width:0;}
.brand{
  display:inline-flex;align-items:center;gap:11px;
  text-decoration:none;color:var(--fog);
}
.brand-pulse{
  flex:0 0 auto;width:12px;height:12px;
  background:var(--cyan);
  transform:rotate(45deg);
  box-shadow:0 0 0 3px rgba(34,245,200,.16),0 0 18px rgba(34,245,200,.55);
  animation:brand-blink 2.8s ease-in-out infinite;
}
@keyframes brand-blink{
  0%,90%,100%{opacity:1;}
  94%{opacity:.3;}
}
.brand-text{display:flex;flex-direction:column;line-height:1;}
.brand-cn{
  font-family:var(--font-display);font-weight:800;
  font-size:clamp(17px,1.5vw,20px);letter-spacing:-.01em;
}
.brand-en{
  margin-top:5px;
  font-family:var(--font-mono);font-size:10px;letter-spacing:.3em;
  color:var(--mint);opacity:.75;
}
.brand-tag{
  padding-left:23px;
  font-family:var(--font-mono);font-size:10.5px;letter-spacing:.16em;
  color:var(--mint);opacity:.6;line-height:1.4;
}
.nav-toggle{
  display:none;align-items:center;gap:9px;margin-left:auto;
  min-height:44px;padding:0 12px;
  background:var(--panel);color:var(--mint);
  border:3px solid var(--line);
  box-shadow:3px 3px 0 var(--ink);
  font-family:var(--font-mono);font-size:11px;letter-spacing:.18em;
  transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),background-color var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease);
}
.nav-toggle:active{transform:translate(3px,3px);box-shadow:0 0 0 var(--ink);}
.nav-toggle-bars{display:inline-grid;gap:3px;width:16px;}
.nav-toggle-bars i{display:block;height:2px;background:currentColor;transition:transform var(--dur) var(--ease),opacity var(--dur) var(--ease);}
.site-header[data-open="true"] .nav-toggle{
  background:var(--cyan);color:var(--ink);border-color:var(--cyan);
}
.site-header[data-open="true"] .nav-toggle-bars i:nth-child(1){transform:translateY(5px) rotate(45deg);}
.site-header[data-open="true"] .nav-toggle-bars i:nth-child(2){opacity:0;}
.site-header[data-open="true"] .nav-toggle-bars i:nth-child(3){transform:translateY(-5px) rotate(-45deg);}

.site-nav{
  display:flex;align-items:center;
  gap:clamp(8px,1.4vw,20px);
  margin-left:auto;
}
.nav-list{display:flex;align-items:center;gap:clamp(2px,.9vw,12px);}
.nav-link{
  display:inline-flex;align-items:center;min-height:44px;padding:0 10px;
  color:var(--mint);text-decoration:none;
  font-family:var(--font-mono);font-size:12px;letter-spacing:.04em;
  border-bottom:3px solid transparent;
  transition:color var(--dur) var(--ease),background-color var(--dur) var(--ease),border-color var(--dur) var(--ease);
}
.nav-link:hover,.nav-link:focus-visible{
  color:var(--cyan);background:rgba(34,245,200,.08);border-bottom-color:var(--cyan);
}
.nav-link[aria-current="page"]{
  color:var(--ink);background:var(--cyan);border-bottom-color:var(--cyan);
}
.nav-cta{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:44px;padding:0 18px;
  text-decoration:none;
  background:var(--amber);color:var(--ink);
  font-family:var(--font-mono);font-weight:700;font-size:12.5px;letter-spacing:.06em;
  border:3px solid var(--ink);
  box-shadow:5px 5px 0 var(--ink);
  transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),background-color var(--dur) var(--ease);
}
.nav-cta:hover,.nav-cta:focus-visible{
  background:var(--cyan);transform:translate(-2px,-2px);box-shadow:7px 7px 0 var(--ink);
}
.scroll-progress{
  position:absolute;left:0;bottom:-4px;
  width:0;height:4px;
  background:linear-gradient(90deg,var(--cyan),var(--amber));
  pointer-events:none;
}

/* ---------- 5. 页脚 ---------- */
.site-footer{
  margin-top:clamp(64px,9vw,120px);
  background:var(--ink);
  border-top:4px solid var(--line);
  color:var(--fog);
}
.footer-dock{
  background:linear-gradient(90deg,var(--panel) 0 62%,var(--panel-2) 100%);
  border-top:4px solid var(--cyan);
  border-bottom:4px solid var(--line);
}
.dock-inner{
  width:100%;max-width:var(--wrap);margin:0 auto;
  padding:16px var(--gutter);
  display:flex;flex-wrap:wrap;align-items:center;gap:12px 28px;
}
.dock-title{
  display:inline-flex;align-items:center;gap:9px;
  font-family:var(--font-mono);font-size:11px;font-weight:700;letter-spacing:.22em;
  color:var(--cyan);text-transform:uppercase;
}
.dock-title::before{
  content:"";width:9px;height:9px;background:var(--coral);transform:rotate(45deg);
  box-shadow:0 0 12px rgba(255,107,74,.7);
}
.dock-list{display:flex;flex-wrap:wrap;align-items:center;gap:10px 26px;}
.dock-item{display:inline-flex;align-items:center;gap:8px;font-size:14px;line-height:1.5;}
.dock-key{
  font-family:var(--font-mono);font-size:10.5px;letter-spacing:.14em;
  color:var(--mint);opacity:.62;
}
.dock-value{color:var(--fog);border-bottom:1px dashed rgba(168,255,232,.35);}
.copy-btn{
  display:inline-flex;align-items:center;justify-content:center;
  min-height:40px;padding:0 10px;
  background:var(--panel-2);color:var(--mint);
  border:2px solid var(--line);
  font-family:var(--font-mono);font-size:10.5px;letter-spacing:.1em;
  transition:background-color var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease);
}
.copy-btn:hover,.copy-btn:focus-visible{background:var(--cyan);color:var(--ink);border-color:var(--cyan);}
.copy-btn[data-copied="true"]{background:var(--amber);color:var(--ink);border-color:var(--amber);}

.footer-main{
  width:100%;max-width:var(--wrap);margin:0 auto;
  padding:clamp(36px,5.5vw,68px) var(--gutter) clamp(26px,4vw,40px);
  display:grid;
  grid-template-columns:minmax(230px,.95fr) minmax(0,1.9fr);
  gap:clamp(28px,5vw,64px);
}
.footer-brand .brand-cn{font-size:clamp(18px,1.7vw,22px);}
.footer-brand .brand-en{margin-top:6px;}
.footer-tagline{
  margin-top:14px;
  font-family:var(--font-mono);font-size:11px;letter-spacing:.16em;
  color:var(--amber);
}
.footer-note{
  margin-top:10px;max-width:34ch;
  font-size:14px;line-height:1.8;color:rgba(241,247,244,.68);
}
.footer-cols{
  display:grid;
  grid-template-columns:repeat(3,minmax(120px,1fr));
  gap:clamp(20px,3vw,36px);
}
.footer-col-title{
  font-family:var(--font-mono);font-size:11px;font-weight:700;letter-spacing:.2em;
  color:var(--cyan);
  padding-bottom:10px;margin-bottom:12px;
  border-bottom:2px solid var(--line);
}
.footer-links{display:grid;gap:2px;}
.footer-link{
  display:inline-flex;align-items:center;min-height:44px;
  font-size:14.5px;color:rgba(241,247,244,.82);text-decoration:none;
  border-bottom:1px solid transparent;
  transition:color var(--dur) var(--ease),border-color var(--dur) var(--ease);
}
.footer-link::before{
  content:"";width:6px;height:6px;margin-right:9px;
  background:var(--line);
  transition:background-color var(--dur) var(--ease);
}
.footer-link:hover,.footer-link:focus-visible{color:var(--cyan);border-bottom-color:var(--cyan);}
.footer-link:hover::before,.footer-link:focus-visible::before{background:var(--cyan);}
.footer-base{
  width:100%;max-width:var(--wrap);margin:0 auto;
  padding:16px var(--gutter) 26px;
  display:flex;flex-wrap:wrap;gap:10px 24px;align-items:center;justify-content:space-between;
  border-top:1px solid var(--line);
  font-family:var(--font-mono);font-size:11.5px;letter-spacing:.06em;
  color:rgba(168,255,232,.58);
}
.footer-copy,.footer-icp{margin:0;}
.footer-icp{color:rgba(255,184,77,.72);}

/* ---------- 6. 布局工具 ---------- */
.wrap{width:100%;max-width:var(--wrap);margin:0 auto;padding-inline:var(--gutter);}
.wrap--narrow{max-width:860px;}
#main-content{display:block;}
.grid{display:grid;gap:clamp(18px,2.4vw,32px);}
.grid--12{grid-template-columns:repeat(12,minmax(0,1fr));}
.grid--2{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));}
.grid--3{grid-template-columns:repeat(auto-fit,minmax(240px,1fr));}
.span-4{grid-column:span 4;}
.span-5{grid-column:span 5;}
.span-7{grid-column:span 7;}
.span-8{grid-column:span 8;}
.span-12{grid-column:1 / -1;}
.split{
  display:grid;
  grid-template-columns:minmax(0,1.7fr) minmax(0,1fr);
  gap:clamp(24px,4vw,56px);
  align-items:start;
}
.stack > * + *{margin-top:var(--stack-gap,16px);}
.rail{
  display:flex;gap:clamp(14px,2vw,22px);
  overflow-x:auto;overscroll-behavior-x:contain;
  padding:6px 0 22px;
  scroll-snap-type:x mandatory;
  scrollbar-color:var(--cyan) var(--line);
}
.rail > *{flex:0 0 clamp(260px,26vw,330px);scroll-snap-align:start;}
.rail::-webkit-scrollbar{height:10px;}
.rail::-webkit-scrollbar-track{background:var(--line);}
.rail::-webkit-scrollbar-thumb{background:var(--cyan);}
.divider{height:4px;background:var(--line);border:0;margin:clamp(28px,4vw,48px) 0;}

/* ---------- 7. 排版 ---------- */
.h-display{
  font-family:var(--font-display);font-weight:800;
  font-size:clamp(2.4rem,5.6vw,4.8rem);
  line-height:1.02;letter-spacing:-.03em;
}
.h-section{
  font-family:var(--font-display);font-weight:800;
  font-size:clamp(1.6rem,2.9vw,2.6rem);
  line-height:1.14;letter-spacing:-.02em;
}
.eyebrow{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--font-mono);font-size:11.5px;font-weight:700;letter-spacing:.22em;
  text-transform:uppercase;color:var(--cyan);
}
.eyebrow::before{content:"";width:22px;height:2px;background:var(--amber);}
.section-index{
  display:block;
  font-family:var(--font-mono);font-weight:700;
  font-size:clamp(56px,10vw,140px);
  line-height:.8;letter-spacing:-.04em;
  color:rgba(34,245,200,.14);
  -webkit-text-stroke:2px rgba(168,255,232,.18);
  pointer-events:none;user-select:none;
}
.prose{
  max-width:68ch;
  font-size:clamp(15px,.55vw + 13px,17px);
  line-height:1.85;
  color:rgba(241,247,244,.86);
}
.prose p + p{margin-top:1em;}
.prose a{color:var(--cyan);text-decoration:underline;text-underline-offset:3px;}
.mono{font-family:var(--font-mono);}
.page-head{
  padding:clamp(32px,5vw,68px) 0 clamp(22px,3.5vw,38px);
  border-bottom:4px solid var(--line);
}

/* ---------- 8. 按钮 / 标签 / 卡片 ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:10px;
  min-height:48px;padding:0 22px;
  text-decoration:none;
  font-family:var(--font-mono);font-weight:700;font-size:13px;letter-spacing:.08em;
  border:3px solid var(--ink);
  box-shadow:6px 6px 0 var(--ink);
  transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),background-color var(--dur) var(--ease),color var(--dur) var(--ease),border-color var(--dur) var(--ease);
}
.btn--primary{background:var(--cyan);color:var(--ink);}
.btn--primary:hover,.btn--primary:focus-visible{background:var(--mint);transform:translate(-2px,-2px);box-shadow:8px 8px 0 var(--ink);}
.btn--amber{background:var(--amber);color:var(--ink);}
.btn--amber:hover,.btn--amber:focus-visible{background:var(--cyan);transform:translate(-2px,-2px);box-shadow:8px 8px 0 var(--ink);}
.btn--ghost{
  background:transparent;color:var(--fog);
  border-color:var(--mint);
  box-shadow:6px 6px 0 rgba(34,245,200,.32);
}
.btn--ghost:hover,.btn--ghost:focus-visible{background:rgba(34,245,200,.12);color:var(--cyan);border-color:var(--cyan);}

.chip-row{display:flex;flex-wrap:wrap;gap:8px;}
.chip{
  display:inline-flex;align-items:center;gap:6px;
  min-height:30px;padding:0 11px;
  font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;
  text-decoration:none;
  color:var(--cyan);
  background:rgba(34,245,200,.10);
  border:2px solid currentColor;
}
.chip--amber{color:var(--amber);background:rgba(255,184,77,.10);}
.chip--coral{color:var(--coral);background:rgba(255,107,74,.12);}
.chip--mint{color:var(--mint);background:rgba(168,255,232,.08);}
.tag{
  display:inline-block;
  font-family:var(--font-mono);font-size:10.5px;letter-spacing:.18em;
  color:var(--mint);opacity:.7;
}
.card{
  background:var(--panel);
  border:var(--edge);
  box-shadow:var(--shadow-hard);
  padding:clamp(18px,2.4vw,26px);
  transition:transform var(--dur) var(--ease),box-shadow var(--dur) var(--ease),border-color var(--dur) var(--ease);
}
.card:hover,.card:focus-within{
  border-color:rgba(34,245,200,.45);
  transform:translate(-2px,-2px);
  box-shadow:10px 10px 0 var(--ink);
}
.panel{
  background:var(--panel);
  border:var(--edge);
  box-shadow:var(--shadow-hard);
  padding:clamp(18px,2.4vw,28px);
}

/* ---------- 9. 媒体容器基础规则 ---------- */
.media-frame{
  position:relative;display:block;overflow:hidden;
  aspect-ratio:16 / 10;
  background:
    linear-gradient(135deg,rgba(34,245,200,.16),transparent 58%),
    repeating-linear-gradient(135deg,rgba(168,255,232,.10) 0 2px,transparent 2px 14px),
    var(--panel-2);
  border:var(--edge);
  box-shadow:var(--shadow-hard);
}
.media-frame > img,
.media-frame > picture > img{
  width:100%;height:100%;object-fit:cover;
}
.media-frame::after{
  content:"";position:absolute;right:0;bottom:0;
  width:38%;height:4px;background:var(--cyan);
}
.media-frame--wide{aspect-ratio:21 / 9;}
.media-frame--tall{aspect-ratio:3 / 4;}

/* ---------- 10. 面包屑 ---------- */
.breadcrumbs{
  display:flex;flex-wrap:wrap;align-items:center;gap:8px;
  margin:0 0 clamp(18px,3vw,28px);
  font-family:var(--font-mono);font-size:11px;letter-spacing:.12em;
  color:rgba(168,255,232,.68);
}
.breadcrumbs li{display:inline-flex;align-items:center;gap:8px;}
.breadcrumbs li + li::before{content:"/";color:var(--amber);}
.breadcrumbs a{color:inherit;text-decoration:none;border-bottom:1px solid transparent;}
.breadcrumbs a:hover,.breadcrumbs a:focus-visible{border-bottom-color:currentColor;color:var(--cyan);}
.breadcrumbs [aria-current="page"]{color:var(--fog);}

/* ---------- 11. 标签页 ---------- */
.tabs{display:block;}
.tablist{
  display:flex;flex-wrap:wrap;gap:0;
  border-bottom:3px solid var(--line);
}
.tab{
  min-height:46px;padding:0 clamp(12px,2vw,20px);
  background:transparent;color:var(--mint);
  border:3px solid transparent;border-bottom:none;
  font-family:var(--font-mono);font-size:12px;letter-spacing:.1em;
  transition:color var(--dur) var(--ease),background-color var(--dur) var(--ease),border-color var(--dur) var(--ease);
}
.tab:hover,.tab:focus-visible{color:var(--cyan);background:rgba(34,245,200,.08);}
.tab[aria-selected="true"]{
  background:var(--panel);color:var(--cyan);
  border-color:var(--line);
  box-shadow:inset 0 3px 0 var(--cyan);
}
.tabpanel{
  padding:clamp(18px,3vw,28px);
  background:var(--panel);
  border:3px solid var(--line);border-top:none;
}
.tabpanel:focus-visible{outline-offset:-5px;}

/* ---------- 12. 显现 ---------- */
[data-reveal]{transition:opacity var(--dur) var(--ease),transform var(--dur) var(--ease);}
html[data-js="on"] [data-reveal]{opacity:0;transform:translateY(14px);}
html[data-js="on"] [data-reveal].is-visible{opacity:1;transform:none;}

/* ---------- 13. 响应式 ---------- */
@media (min-width:1025px) and (max-width:1180px){
  .header-inner{gap:12px;}
  .nav-list{gap:2px;}
  .nav-link{padding:0 7px;font-size:11px;letter-spacing:0;}
  .nav-cta{padding:0 12px;font-size:11px;}
}
@media (max-width:1024px){
  .header-inner{flex-wrap:wrap;align-items:center;padding-block:10px;}
  .brand-tag{display:none;}
  .nav-toggle{display:inline-flex;}
  .site-nav{
    order:3;flex-basis:100%;
    display:none;
    flex-direction:column;align-items:stretch;
    gap:0;margin:14px 0 4px;
    padding-top:6px;
    border-top:3px solid var(--line);
  }
  .site-header[data-open="true"] .site-nav{display:flex;}
  .nav-list{flex-direction:column;align-items:stretch;gap:0;}
  .nav-link{
    justify-content:space-between;
    min-height:52px;padding:0 6px;
    font-size:13px;
    border-bottom:1px solid var(--line);
  }
  .nav-link::after{
    content:"";width:6px;height:6px;
    background:var(--amber);
    transform:rotate(45deg);
  }
  .nav-link[aria-current="page"]::after{background:var(--ink);}
  .nav-cta{width:100%;margin-top:14px;min-height:52px;}
  .footer-main{grid-template-columns:1fr;}
  .split{grid-template-columns:1fr;}
  .span-4,.span-5,.span-7,.span-8{grid-column:1 / -1;}
}
@media (max-width:860px){
  .footer-cols{grid-template-columns:repeat(2,minmax(120px,1fr));}
  .rail > *{flex-basis:min(78vw,320px);}
}
@media (max-width:600px){
  .brand-tag{display:none;}
  .dock-list{gap:10px 18px;}
  .dock-item{font-size:13px;}
  .media-frame{aspect-ratio:4 / 3;}
  .media-frame--wide{aspect-ratio:16 / 10;}
  .footer-cols{grid-template-columns:1fr;}
  .footer-base{flex-direction:column;align-items:flex-start;}
}
@media (max-width:420px){
  .brand-en{letter-spacing:.22em;}
  .copy-btn{padding:0 8px;}
}

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