/* ==========================================================================
   阿福地球 AfuEarth — 站点视觉系统 v2 「深空控制台」
   Tokens → Global canvas → Nav → Hero → Blocks → Editor → Responsive
   ========================================================================== */

/* ---------- 1. Tokens ---------- */
:root{
  /* 底色：从近黑到深蓝的分层 */
  --void:#03050a;
  --void-2:#060a12;
  --void-3:#0a111d;
  --panel:rgba(11,19,32,.62);
  --panel-solid:#0b1320;
  --panel-hi:rgba(22,36,58,.72);

  /* 线条 */
  --line:rgba(104,168,224,.13);
  --line-2:rgba(104,168,224,.24);
  --line-3:rgba(104,168,224,.40);

  /* 色相 */
  --cyan:#2fe4ff;
  --cyan-d:#12b8d6;
  --blue:#3f7dff;
  --violet:#8b5cf6;
  --mint:#34e5b0;
  --amber:#ffb545;

  /* 文字 */
  --ink:#e9f2ff;
  --ink-2:#b9cbe3;
  --dim:#8095b0;
  --faint:#5a6c85;

  /* 排版 */
  --sans:"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei UI","Microsoft YaHei",
         -apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,"Helvetica Neue",sans-serif;
  --mono:"JetBrains Mono","SF Mono",ui-monospace,SFMono-Regular,Consolas,
         "Liberation Mono",Menlo,monospace;

  /* 尺度 */
  --nav-h:66px;
  --wrap:1180px;
  --r-s:6px;
  --r-m:10px;
  --r-l:16px;
  --ease:cubic-bezier(.22,.72,.24,1);

  /* 旧版变量别名（app.js 内联样式仍在用） */
  --bg:var(--void);
  --bg2:var(--void-2);
  --txt:var(--ink);
  --muted:var(--ink-2);
  --cyan-dim:rgba(47,228,255,.12);
  --radius:var(--r-m);
  --editor-w:376px;
}

/* ---------- 2. Reset ---------- */
*,*::before,*::after{box-sizing:border-box;margin:0;padding:0}
html{
  -webkit-text-size-adjust:100%;
  scroll-behavior:smooth;
  scroll-padding-top:calc(var(--nav-h) + 12px);
}
body{
  min-height:100%;
  background:var(--void);
  color:var(--ink);
  font-family:var(--sans);
  font-size:16px;
  line-height:1.7;
  letter-spacing:.01em;
  -webkit-font-smoothing:antialiased;
  -moz-osx-font-smoothing:grayscale;
  overflow-x:hidden;
  position:relative;
}
img{max-width:100%;display:block;border:0}
a{color:inherit;text-decoration:none}
button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}
h1,h2,h3,h4,h5,h6{font-weight:700;line-height:1.22;letter-spacing:-.015em}
ul,ol{list-style:none}
::selection{background:rgba(47,228,255,.26);color:#fff}

::-webkit-scrollbar{width:10px;height:10px}
::-webkit-scrollbar-track{background:#05080f}
::-webkit-scrollbar-thumb{
  background:linear-gradient(180deg,rgba(47,228,255,.34),rgba(63,125,255,.22));
  border-radius:8px;border:2px solid #05080f;
}
::-webkit-scrollbar-thumb:hover{background:linear-gradient(180deg,rgba(47,228,255,.6),rgba(63,125,255,.4))}

/* ---------- 3. 全局画布层：网格 / 光晕 ---------- */
body::before{
  /* 精密网格 */
  content:"";
  position:fixed;inset:0;z-index:0;pointer-events:none;
  background-image:
    linear-gradient(to right,rgba(104,168,224,.075) 1px,transparent 1px),
    linear-gradient(to bottom,rgba(104,168,224,.075) 1px,transparent 1px),
    linear-gradient(to right,rgba(104,168,224,.035) 1px,transparent 1px),
    linear-gradient(to bottom,rgba(104,168,224,.035) 1px,transparent 1px);
  background-size:120px 120px,120px 120px,24px 24px,24px 24px;
  -webkit-mask-image:radial-gradient(ellipse 120% 90% at 50% 0%,#000 8%,rgba(0,0,0,.55) 44%,transparent 82%);
          mask-image:radial-gradient(ellipse 120% 90% at 50% 0%,#000 8%,rgba(0,0,0,.55) 44%,transparent 82%);
}
body::after{
  /* 顶部冷光 + 两团极淡色雾 */
  content:"";
  position:fixed;inset:0;z-index:0;pointer-events:none;
  background:
    radial-gradient(900px 420px at 50% -12%,rgba(47,228,255,.10),transparent 68%),
    radial-gradient(720px 480px at 86% 6%,rgba(63,125,255,.09),transparent 70%),
    radial-gradient(620px 420px at 6% 32%,rgba(139,92,246,.07),transparent 72%);
}

#nav,#app,#footer{position:relative;z-index:1}

.wrap{
  width:100%;
  max-width:var(--wrap);
  margin:0 auto;
  padding:0 clamp(20px,4.4vw,44px);
}

/* ---------- 4. 导航 ---------- */
nav{
  position:fixed;top:0;left:0;right:0;z-index:120;
  height:var(--nav-h);
  display:flex;align-items:center;
  background:rgba(4,7,13,.62);
  -webkit-backdrop-filter:blur(18px) saturate(150%);
          backdrop-filter:blur(18px) saturate(150%);
  border-bottom:1px solid transparent;
  transition:background .3s var(--ease),border-color .3s var(--ease);
}
nav::after{
  /* 底边一条渐变发光线 */
  content:"";position:absolute;left:0;right:0;bottom:-1px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(47,228,255,.42) 22%,rgba(63,125,255,.42) 62%,transparent);
  opacity:.7;
}
body.scrolled nav{background:rgba(4,7,13,.9);border-bottom-color:rgba(104,168,224,.10)}

.nav-inner{
  width:100%;max-width:var(--wrap);margin:0 auto;
  padding:0 clamp(20px,4.4vw,44px);
  display:flex;align-items:center;gap:8px;
}
.logo{
  display:flex;align-items:center;gap:10px;
  font-size:16.5px;font-weight:700;letter-spacing:.02em;
  color:var(--ink);margin-right:auto;white-space:nowrap;
  transition:opacity .24s;
}
.logo:hover{opacity:.86}
.logo-img{
  width:30px;height:30px;border-radius:8px;
  box-shadow:0 0 0 1px rgba(47,228,255,.26),0 0 18px rgba(47,228,255,.30);
}

.nav-links{display:flex;align-items:center;gap:4px}
.nav-links a{
  position:relative;
  padding:8px 14px;border-radius:var(--r-s);
  font-size:14px;color:var(--ink-2);
  transition:color .22s,background .22s;
}
.nav-links a:hover{color:var(--ink);background:rgba(104,168,224,.075)}
.nav-links a.on{color:var(--cyan)}
.nav-links a.on::after{
  content:"";position:absolute;left:14px;right:14px;bottom:2px;height:1.5px;
  background:linear-gradient(90deg,var(--cyan),var(--blue));
  box-shadow:0 0 8px rgba(47,228,255,.7);
}

.nav-cta{
  margin-left:10px;
  padding:9px 20px;border-radius:var(--r-s);
  font-size:14px;font-weight:600;letter-spacing:.01em;
  color:#02121a;
  background:linear-gradient(135deg,var(--cyan),#57c8ff 55%,var(--blue));
  box-shadow:0 0 0 1px rgba(47,228,255,.4),0 6px 22px -6px rgba(47,228,255,.6);
  transition:transform .2s var(--ease),box-shadow .24s,filter .24s;
  white-space:nowrap;
}
.nav-cta:hover{
  transform:translateY(-1px);
  filter:brightness(1.08);
  box-shadow:0 0 0 1px rgba(47,228,255,.7),0 10px 30px -8px rgba(47,228,255,.8);
}
.nav-cta.on{color:#02121a}

.nav-burger{
  display:none;width:38px;height:34px;margin-left:6px;
  border:1px solid var(--line-2);border-radius:var(--r-s);
  color:var(--ink-2);font-size:15px;line-height:1;
}
.nav-burger:hover{border-color:var(--line-3);color:var(--ink)}

/* ---------- 5. Hero ---------- */
.hero{
  position:relative;
  min-height:100vh;
  display:flex;flex-direction:column;justify-content:center;
  padding:calc(var(--nav-h) + 34px) 0 0;
  overflow:hidden;
  isolation:isolate;
}
.hero::before{
  /* 地平线冷光带 */
  content:"";position:absolute;left:50%;top:52%;transform:translate(-50%,-50%);
  width:min(1500px,150vw);height:min(1500px,150vw);
  background:
    radial-gradient(closest-side,rgba(47,228,255,.10),transparent 62%),
    radial-gradient(closest-side,rgba(63,125,255,.09),transparent 68%);
  z-index:-1;pointer-events:none;
}
.hero::after{
  /* 底部渐隐，衔接下一段 */
  content:"";position:absolute;left:0;right:0;bottom:0;height:200px;
  background:linear-gradient(to bottom,transparent,var(--void));
  pointer-events:none;z-index:-1;
}
.hero>.wrap{position:relative;z-index:2;flex:1;display:flex;align-items:center}

/* 星空 */
.stars{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:0}
.stars i{
  position:absolute;width:1.5px;height:1.5px;border-radius:50%;
  background:#dff3ff;
  animation:twinkle 3.4s ease-in-out infinite alternate;
  will-change:opacity;
}
.stars i.big{width:2.4px;height:2.4px;box-shadow:0 0 6px rgba(180,230,255,.9)}
.stars i.drift{animation:twinkle 3.4s ease-in-out infinite alternate,drift 26s linear infinite}
@keyframes twinkle{from{opacity:.10}to{opacity:.95}}
@keyframes drift{
  from{transform:translate3d(0,0,0)}
  to{transform:translate3d(-28px,14px,0)}
}
.meteor{
  position:absolute;width:120px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(47,228,255,.85),transparent);
  opacity:0;transform:rotate(24deg);
  animation:meteor 8s linear infinite;
}
@keyframes meteor{
  0%{opacity:0;transform:translate3d(-80px,0,0) rotate(24deg)}
  6%{opacity:.9}
  26%{opacity:0;transform:translate3d(320px,190px,0) rotate(24deg)}
  100%{opacity:0;transform:translate3d(320px,190px,0) rotate(24deg)}
}

/* 四角框 */
.hero-frame{position:absolute;inset:0;pointer-events:none;z-index:1}
.hero-frame i{position:absolute;width:62px;height:62px;border:1px solid rgba(47,228,255,.30)}
.hero-frame .tl{top:calc(var(--nav-h) + 22px);left:26px;border-right:0;border-bottom:0}
.hero-frame .tr{top:calc(var(--nav-h) + 22px);right:26px;border-left:0;border-bottom:0}
.hero-frame .bl{bottom:84px;left:26px;border-right:0;border-top:0}
.hero-frame .br{bottom:84px;right:26px;border-left:0;border-top:0}
.hero-frame .tr::after{
  content:"";position:absolute;right:-1px;top:0;width:1px;height:100%;
  background:linear-gradient(to bottom,rgba(47,228,255,.5),transparent);
}

/* 左侧竖排铭牌 */
.hero-side{
  position:absolute;left:34px;top:50%;transform:translateY(-50%);
  writing-mode:vertical-rl;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.34em;
  color:rgba(127,148,174,.72);z-index:3;white-space:nowrap;
  pointer-events:none;
}

/* 顶部遥测条 */
.hud{
  position:absolute;top:calc(var(--nav-h) + 20px);left:50%;transform:translateX(-50%);
  display:flex;align-items:center;gap:18px;
  padding:7px 18px;border-radius:999px;
  background:rgba(8,14,24,.7);
  border:1px solid var(--line);
  -webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);
  font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;color:var(--dim);
  white-space:nowrap;z-index:4;
  box-shadow:0 8px 30px -14px rgba(0,0,0,.9),inset 0 1px 0 rgba(255,255,255,.04);
}
.hud b{font-weight:500;color:rgba(185,203,227,.86);font-variant-numeric:tabular-nums}
.hud-dot{
  width:6px;height:6px;border-radius:50%;background:var(--mint);
  box-shadow:0 0 10px var(--mint);animation:pulse 2s ease-in-out infinite;
}
@keyframes pulse{0%,100%{opacity:.45;transform:scale(.85)}50%{opacity:1;transform:scale(1.15)}}
.hud-live{
  padding-left:16px;border-left:1px solid var(--line);
  color:var(--cyan);letter-spacing:.16em;font-size:9.5px;
}

/* 主栅格 */
.hero-grid{
  display:grid;grid-template-columns:minmax(0,1.06fr) minmax(0,.94fr);
  align-items:center;gap:clamp(24px,4vw,64px);width:100%;
}
.hero-grid.no-orb{grid-template-columns:1fr;max-width:760px}

.badge{
  display:inline-flex;align-items:center;gap:9px;
  padding:5px 14px 5px 11px;margin-bottom:24px;
  border-radius:999px;
  background:rgba(47,228,255,.07);
  border:1px solid rgba(47,228,255,.30);
  font-family:var(--mono);font-size:11px;letter-spacing:.14em;
  color:#8df0ff;text-transform:uppercase;
  box-shadow:0 0 24px -8px rgba(47,228,255,.7),inset 0 0 18px -10px rgba(47,228,255,.9);
}
.badge::before{
  content:"";width:5px;height:5px;border-radius:50%;background:var(--cyan);
  box-shadow:0 0 8px var(--cyan);animation:pulse 2.2s ease-in-out infinite;
}

.hero h1{
  font-size:clamp(36px,5.1vw,66px);
  line-height:1.1;letter-spacing:-.028em;font-weight:800;
  margin:0 0 22px;
  background:linear-gradient(178deg,#ffffff 6%,#d6e8ff 42%,#8fb6e0 88%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;color:transparent;
  text-shadow:0 0 60px rgba(47,228,255,.16);
}
.hero h1 .grad{
  background:linear-gradient(100deg,var(--cyan) 0%,#7dd3ff 36%,var(--blue) 72%,var(--violet) 100%);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;
  filter:drop-shadow(0 0 22px rgba(47,228,255,.34));
}
.hero .sub{
  font-size:clamp(14.5px,1.28vw,17px);
  line-height:1.85;color:var(--ink-2);max-width:560px;
  margin:0 0 34px;
}
.hero .sub b,.hero .sub strong{color:var(--cyan);font-weight:600}

.cta-row{display:flex;flex-wrap:wrap;gap:13px;align-items:center}

/* 按钮 */
.btn{
  position:relative;display:inline-flex;align-items:center;justify-content:center;gap:9px;
  padding:14px 28px;border-radius:var(--r-s);
  font-size:14.5px;font-weight:600;letter-spacing:.02em;white-space:nowrap;
  transition:transform .22s var(--ease),box-shadow .26s var(--ease),background .24s,color .24s,border-color .24s;
  overflow:hidden;
}
.btn-primary{
  color:#02121a;
  background:linear-gradient(135deg,#5df0ff,var(--cyan) 38%,#4a9bff 100%);
  box-shadow:
    0 0 0 1px rgba(47,228,255,.44),
    0 14px 34px -14px rgba(47,228,255,.9),
    inset 0 1px 0 rgba(255,255,255,.5);
}
.btn-primary::after{
  /* 掠过的高光 */
  content:"";position:absolute;top:0;left:-120%;width:55%;height:100%;
  background:linear-gradient(100deg,transparent,rgba(255,255,255,.65),transparent);
  transform:skewX(-18deg);transition:left .62s var(--ease);
}
.btn-primary:hover{
  transform:translateY(-2px);
  box-shadow:
    0 0 0 1px rgba(47,228,255,.85),
    0 20px 44px -14px rgba(47,228,255,1),
    inset 0 1px 0 rgba(255,255,255,.6);
}
.btn-primary:hover::after{left:150%}

.btn-ghost{
  color:var(--ink);
  border:1px solid var(--line-2);
  background:rgba(255,255,255,.022);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
}
.btn-ghost:hover{
  transform:translateY(-2px);
  border-color:rgba(47,228,255,.5);
  background:rgba(47,228,255,.075);
  box-shadow:0 10px 30px -14px rgba(47,228,255,.7);
  color:#cdf4ff;
}

.dl-note{
  margin-top:18px;font-size:12.5px;color:var(--faint);line-height:1.75;
}
.dl-note code{
  font-family:var(--mono);font-size:11.5px;
  padding:2px 7px;border-radius:4px;
  background:rgba(47,228,255,.09);color:#8df0ff;
  border:1px solid rgba(47,228,255,.16);
}

/* 地球舞台 */
.orb-stage{
  position:relative;
  width:clamp(250px,31vw,392px);aspect-ratio:1/1;
  margin:0 auto;
  display:grid;place-items:center;
}
.orb-stage::before{
  /* 外层大光圈 */
  content:"";position:absolute;inset:-16%;border-radius:50%;
  background:radial-gradient(closest-side,rgba(47,228,255,.16),rgba(63,125,255,.05) 62%,transparent 78%);
  filter:blur(6px);
  animation:breathe 7s ease-in-out infinite;
}
.orb-stage::after{
  /* 十字准星刻度 */
  content:"";position:absolute;inset:-9%;border-radius:50%;
  border:1px dashed rgba(47,228,255,.16);
  animation:spinSlow 68s linear infinite reverse;
}
@keyframes breathe{0%,100%{opacity:.62;transform:scale(.98)}50%{opacity:1;transform:scale(1.04)}}
@keyframes spinSlow{to{transform:rotate(360deg)}}

.orb{
  position:relative;
  width:100%;height:100%;border-radius:50%;
  background:#04070f url("earth.jpg") center/cover no-repeat;
  overflow:hidden;
  animation:orbSpin 90s linear infinite;
  box-shadow:
    inset -30px -22px 70px rgba(0,6,16,.72),
    inset 14px 16px 44px rgba(150,205,255,.10),
    0 0 0 1px rgba(47,228,255,.20),
    0 0 60px rgba(47,228,255,.28),
    0 0 130px rgba(63,125,255,.20),
    0 36px 96px -20px rgba(0,0,0,.9);
}
@keyframes orbSpin{to{transform:rotate(360deg)}}
.orb::before{
  /* 大气边缘 */
  content:"";position:absolute;inset:0;border-radius:50%;pointer-events:none;
  background:
    radial-gradient(circle at 32% 26%,rgba(180,232,255,.24),transparent 42%),
    radial-gradient(circle at 72% 78%,transparent 52%,rgba(2,7,16,.78) 100%);
}
.orb::after{
  /* 扫描光带 */
  content:"";position:absolute;left:-20%;right:-20%;top:-40%;height:26%;
  background:linear-gradient(to bottom,transparent,rgba(120,235,255,.30),transparent);
  filter:blur(3px);
  animation:scanDown 6.5s cubic-bezier(.5,0,.5,1) infinite;
}
@keyframes scanDown{
  0%{transform:translateY(0);opacity:0}
  12%{opacity:.9}
  86%{opacity:.6}
  100%{transform:translateY(560%);opacity:0}
}
.orb-grid{display:none}

.ring{
  position:absolute;inset:-6%;
  border-radius:50%;
  border:1.5px solid rgba(47,228,255,.30);
  border-top-color:rgba(47,228,255,.95);
  border-right-color:rgba(63,125,255,.66);
  animation:spinSlow 22s linear infinite;
  box-shadow:0 0 26px -6px rgba(47,228,255,.4),inset 0 0 26px -12px rgba(47,228,255,.6);
}
.ring::before{
  content:"";position:absolute;inset:-11%;
  border-radius:50%;
  border:1px dotted rgba(63,125,255,.26);
  animation:spinSlow 38s linear infinite reverse;
}

/* 环绕标签 */
.sat{
  position:absolute;
  display:inline-flex;align-items:center;gap:6px;
  padding:4px 11px;border-radius:999px;
  font-family:var(--mono);font-size:10px;letter-spacing:.1em;
  color:#9fe9ff;white-space:nowrap;
  background:rgba(7,15,26,.82);
  border:1px solid rgba(47,228,255,.26);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
  box-shadow:0 0 20px -8px rgba(47,228,255,.8);
  animation:float 6s ease-in-out infinite;
}
.sat::before{
  content:"";width:4px;height:4px;border-radius:50%;
  background:var(--cyan);box-shadow:0 0 7px var(--cyan);
}
.sat.s0{top:2%;right:-16%;animation-delay:0s}
.sat.s1{top:28%;left:-21%;animation-delay:1.4s}
.sat.s2{bottom:22%;right:-19%;animation-delay:2.6s}
.sat.s3{bottom:0%;left:-11%;animation-delay:3.8s}
@keyframes float{0%,100%{transform:translateY(0)}50%{transform:translateY(-9px)}}

/* Hero 底部信息带 */
.hero-foot{
  position:relative;z-index:2;
  margin-top:auto;
  border-top:1px solid var(--line);
  background:linear-gradient(to right,rgba(8,14,24,.42),rgba(8,14,24,.12));
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
}
.hero-foot .wrap{
  display:flex;align-items:center;gap:clamp(16px,3vw,38px);
  height:74px;flex-wrap:wrap;
}
.hf{
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--mono);font-size:11px;letter-spacing:.1em;color:var(--dim);
  white-space:nowrap;
}
.hf i{
  width:4px;height:4px;border-radius:50%;
  background:var(--cyan);box-shadow:0 0 7px var(--cyan);
}
.hf-scroll{
  margin-left:auto;display:inline-flex;align-items:center;gap:10px;
  font-size:12.5px;color:var(--ink-2);letter-spacing:.04em;
  transition:color .24s;
}
.hf-scroll em{
  position:relative;display:inline-block;width:34px;height:1px;
  background:rgba(104,168,224,.4);
}
.hf-scroll em::after{
  content:"";position:absolute;right:0;top:-3px;
  width:7px;height:7px;border-right:1px solid var(--cyan);border-bottom:1px solid var(--cyan);
  transform:rotate(-45deg);
  animation:nudge 1.8s ease-in-out infinite;
}
@keyframes nudge{0%,100%{transform:translateX(0) rotate(-45deg)}50%{transform:translateX(4px) rotate(-45deg)}}
.hf-scroll:hover{color:var(--cyan)}

/* ---------- 6. 区块通用 ---------- */
#app{padding-bottom:0}
body:not([data-page="index.html"]) #app{padding-top:var(--nav-h)}
body[data-page="index.html"] #app{padding-top:0}

.blk{
  position:relative;
  padding:clamp(64px,7.6vw,110px) 0;
  opacity:0;transform:translateY(26px);
  transition:opacity .78s var(--ease),transform .78s var(--ease);
}
.blk.is-in{opacity:1;transform:none}
.blk--hero{padding:0}
.blk--spacer{padding:0}
/* 视频块上下收一点，避免与相邻块之间出现大片死白 */
.blk--video{padding:clamp(46px,4.8vw,68px) 0 clamp(22px,2.6vw,34px)}

.blk-bg2{
  background:
    linear-gradient(to bottom,rgba(10,17,29,.62),rgba(6,10,18,.62));
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line);
}
.blk-bg2::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:radial-gradient(800px 300px at 50% 0%,rgba(47,228,255,.05),transparent 70%);
}

.sec-tag{
  display:inline-flex;align-items:center;gap:10px;
  font-family:var(--mono);font-size:11px;letter-spacing:.22em;
  color:var(--cyan);text-transform:uppercase;
  margin-bottom:16px;
}
.sec-tag::before{
  content:"";width:22px;height:1px;
  background:linear-gradient(90deg,transparent,var(--cyan));
  box-shadow:0 0 8px rgba(47,228,255,.8);
}
.sec-h,h2.sec-h{
  font-size:clamp(27px,3.5vw,44px);
  line-height:1.2;letter-spacing:-.022em;
  color:var(--ink);margin:0 0 16px;
  max-width:820px;
}
.sec-lead{
  font-size:clamp(14.5px,1.2vw,16.5px);line-height:1.82;
  color:var(--dim);max-width:680px;margin:0 0 44px;
}
.sec-lead b,.sec-lead strong{color:var(--ink-2);font-weight:600}

/* ---------- 7. 数据条 ---------- */
.stats{
  display:grid;
  grid-template-columns:repeat(var(--n,4),minmax(0,1fr));
  gap:1px;
  background:var(--line);
  border:1px solid var(--line);
  border-radius:var(--r-m);
  overflow:hidden;
}
.stat{
  position:relative;
  padding:clamp(22px,3vw,34px) clamp(16px,2.4vw,28px);
  background:linear-gradient(170deg,rgba(12,20,34,.92),rgba(7,12,21,.92));
  transition:background .3s;
}
.stat:hover{background:linear-gradient(170deg,rgba(16,28,48,.96),rgba(9,15,26,.96))}
.stat b{
  display:block;
  font-family:var(--mono);
  font-size:clamp(23px,2.7vw,34px);font-weight:600;
  letter-spacing:-.02em;line-height:1.1;
  font-variant-numeric:tabular-nums;
  white-space:nowrap;
  background:linear-gradient(160deg,#ffffff,#87c8ff 62%,#4a8dff);
  -webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent;
  margin-bottom:8px;
}
.stat span{
  display:block;font-size:12.5px;letter-spacing:.06em;color:var(--dim);
}
.stat::after{
  content:"";position:absolute;left:0;top:0;bottom:0;width:1px;
  background:linear-gradient(to bottom,transparent,rgba(47,228,255,.55),transparent);
  opacity:0;transition:opacity .4s;
}
.stat:hover::after{opacity:1}
.stat:last-child{border-right:0}

/* ---------- 8. 功能卡 ---------- */
.feat-grid{
  display:grid;
  grid-template-columns:repeat(var(--cols,3),minmax(0,1fr));
  gap:clamp(12px,1.6vw,20px);
}
.feat{
  position:relative;
  padding:clamp(20px,2.4vw,30px);
  border:1px solid var(--line);
  border-radius:var(--r-m);
  background:linear-gradient(168deg,rgba(13,21,36,.72),rgba(7,12,21,.86));
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  overflow:hidden;
  transition:transform .34s var(--ease),border-color .34s,box-shadow .34s,background .34s;
}
.feat::before{
  /* 顶部渐变高光线 */
  content:"";position:absolute;left:0;right:0;top:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(47,228,255,.6),transparent);
  opacity:0;transition:opacity .38s;
}
.feat::after{
  /* hover 光斑 */
  content:"";position:absolute;width:220px;height:220px;border-radius:50%;
  left:var(--mx,50%);top:var(--my,0);transform:translate(-50%,-50%);
  background:radial-gradient(closest-side,rgba(47,228,255,.16),transparent 70%);
  opacity:0;transition:opacity .4s;pointer-events:none;
}
.feat:hover{
  transform:translateY(-5px);
  border-color:rgba(47,228,255,.36);
  background:linear-gradient(168deg,rgba(17,28,47,.86),rgba(8,14,25,.92));
  box-shadow:0 22px 50px -24px rgba(0,0,0,.95),0 0 44px -18px rgba(47,228,255,.75);
}
.feat:hover::before,.feat:hover::after{opacity:1}

.feat figure{
  position:relative;margin:0 0 18px;border-radius:var(--r-s);overflow:hidden;
  border:1px solid var(--line);
  background:#05090f;
}
.feat figure img{
  width:100%;height:auto;display:block;
  aspect-ratio:16/10;object-fit:cover;
  filter:saturate(.92) contrast(1.04);
  transition:transform .6s var(--ease),filter .4s;
}
.feat:hover figure img{transform:scale(1.035);filter:saturate(1.06) contrast(1.06)}
.feat figure::after{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(to top,rgba(4,8,15,.72),transparent 54%);
}
.feat a.el-link{display:block}
.feat-no{
  position:absolute;left:0;top:0;z-index:2;
  min-width:34px;padding:3px 9px;
  font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.08em;
  color:#04121a;background:linear-gradient(135deg,var(--cyan),#57c8ff);
  border-bottom-right-radius:var(--r-s);
  box-shadow:0 0 18px -4px rgba(47,228,255,.9);
}

.feat-ico{
  display:grid;place-items:center;
  width:42px;height:42px;margin-bottom:16px;
  border-radius:var(--r-s);
  background:linear-gradient(145deg,rgba(47,228,255,.16),rgba(63,125,255,.08));
  border:1px solid rgba(47,228,255,.24);
  font-size:18px;line-height:1;
  color:var(--cyan);
  box-shadow:inset 0 0 20px -10px rgba(47,228,255,.9),0 0 22px -12px rgba(47,228,255,.8);
}
.feat h3{
  font-size:16.5px;font-weight:700;letter-spacing:-.01em;
  color:var(--ink);margin:0 0 7px;
}
.feat .feat-sub{
  position:relative;
  padding-left:12px;
  margin:0 0 11px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.13em;
  color:var(--cyan);text-transform:uppercase;
}
.feat .feat-sub::before{
  content:"";position:absolute;left:0;top:50%;transform:translateY(-50%);
  width:5px;height:1px;background:var(--cyan);box-shadow:0 0 7px var(--cyan);
}
.feat p{
  font-size:13.5px;line-height:1.78;color:var(--dim);margin:0;
}
.feat p b,.feat p strong{color:var(--ink-2);font-weight:600}
.feat .tip{
  display:inline-block;margin-top:14px;
  padding:3px 9px;border-radius:4px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;
  color:#8de9c8;background:rgba(52,229,176,.075);
  border:1px solid rgba(52,229,176,.22);
}

/* 四角装饰（沿用 .crn，改为极细青线） */
.crn{position:absolute;width:12px;height:12px;pointer-events:none;opacity:0;transition:opacity .36s,border-color .36s}
.crn.tl{left:6px;top:6px;border-left:1px solid var(--cyan);border-top:1px solid var(--cyan)}
.crn.br{right:6px;bottom:6px;border-right:1px solid var(--cyan);border-bottom:1px solid var(--cyan)}
.feat:hover .crn,.pcard:hover .crn,.dl-box:hover .crn{opacity:1}

/* ---------- 9. 页面入口卡 ---------- */
.pcards{
  display:grid;grid-template-columns:repeat(auto-fit,minmax(228px,1fr));
  gap:clamp(12px,1.6vw,20px);
}
.pcard{
  position:relative;display:block;
  padding:clamp(22px,2.6vw,30px);
  border:1px solid var(--line);
  border-radius:var(--r-m);
  background:linear-gradient(168deg,rgba(12,20,34,.7),rgba(7,11,20,.86));
  overflow:hidden;
  transition:transform .34s var(--ease),border-color .34s,box-shadow .34s;
}
.pcard::before{
  content:"";position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(140deg,rgba(47,228,255,.10),transparent 42%);
  opacity:0;transition:opacity .4s;
}
.pcard::after{
  content:"";position:absolute;right:-40%;top:-40%;
  width:180px;height:180px;border-radius:50%;
  background:radial-gradient(closest-side,rgba(47,228,255,.22),transparent 70%);
  opacity:0;transition:opacity .45s;pointer-events:none;
}
.pcard:hover{
  transform:translateY(-5px);
  border-color:rgba(47,228,255,.4);
  box-shadow:0 24px 54px -26px rgba(0,0,0,.95),0 0 50px -20px rgba(47,228,255,.8);
}
.pcard:hover::before,.pcard:hover::after{opacity:1}

.pcard-idx{
  position:absolute;right:16px;top:10px;
  font-family:var(--mono);font-size:44px;font-weight:700;line-height:1;
  color:rgba(104,168,224,.075);
  letter-spacing:-.04em;
  transition:color .4s;
}
.pcard:hover .pcard-idx{color:rgba(47,228,255,.16)}
.pcard-ico{
  position:relative;z-index:1;
  display:grid;place-items:center;
  width:40px;height:40px;margin-bottom:18px;
  border-radius:var(--r-s);
  background:linear-gradient(145deg,rgba(47,228,255,.14),rgba(63,125,255,.06));
  border:1px solid rgba(47,228,255,.22);
  color:var(--cyan);font-size:17px;
  transition:transform .34s var(--ease),box-shadow .34s;
}
.pcard:hover .pcard-ico{
  transform:translateY(-2px);
  box-shadow:0 0 26px -10px rgba(47,228,255,.95);
}
.pcard h3{
  position:relative;z-index:1;
  font-size:16px;color:var(--ink);margin:0 0 8px;
}
.pcard p{
  position:relative;z-index:1;
  font-size:13px;line-height:1.75;color:var(--dim);margin:0 0 18px;
}
.pcard-go{
  position:relative;z-index:1;
  display:inline-flex;align-items:center;gap:8px;
  font-family:var(--mono);font-size:11.5px;letter-spacing:.1em;
  color:var(--faint);transition:color .3s;
}
.pcard-go i{
  display:inline-block;font-style:normal;
  transition:transform .3s var(--ease);
}
.pcard:hover .pcard-go{color:var(--cyan)}
.pcard:hover .pcard-go i{transform:translateX(5px)}

/* ---------- 10. 流程步骤 ---------- */
.flow{
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:1px;background:var(--line);
  border:1px solid var(--line);border-radius:var(--r-m);
  overflow:hidden;
  counter-reset:step;
}
.step{
  position:relative;
  padding:clamp(24px,3vw,34px) clamp(18px,2.4vw,26px);
  background:linear-gradient(170deg,rgba(12,20,34,.9),rgba(7,11,20,.9));
  counter-increment:step;
  transition:background .32s;
}
.step:hover{background:linear-gradient(170deg,rgba(16,28,48,.95),rgba(9,15,26,.95))}
.step::before{
  content:"0" counter(step);
  display:block;
  font-family:var(--mono);font-size:11px;font-weight:600;letter-spacing:.16em;
  color:var(--cyan);margin-bottom:12px;
  text-shadow:0 0 14px rgba(47,228,255,.7);
}
.step h4{
  font-size:15px;color:var(--ink);margin:0 0 8px;letter-spacing:-.01em;
}
.step p{font-size:13px;line-height:1.75;color:var(--dim);margin:0}
.step p b,.step p strong{color:var(--ink-2)}

/* ---------- 11. 富文本 ---------- */
.rt{max-width:760px}
.rt h2{
  font-size:clamp(23px,2.7vw,32px);color:var(--ink);
  margin:0 0 18px;letter-spacing:-.02em;
}
.rt h3{
  font-size:17px;color:var(--ink);margin:34px 0 12px;
  padding-left:13px;position:relative;
}
.rt h3::before{
  content:"";position:absolute;left:0;top:.42em;width:3px;height:.86em;
  border-radius:2px;background:linear-gradient(180deg,var(--cyan),var(--blue));
  box-shadow:0 0 12px rgba(47,228,255,.8);
}
.rt p{
  font-size:14.5px;line-height:1.9;color:var(--ink-2);margin:0 0 16px;
}
.rt p b,.rt p strong{color:var(--ink);font-weight:600}
.rt ul,.rt ol{margin:0 0 18px;padding-left:2px}
.rt li{
  position:relative;padding-left:20px;margin-bottom:9px;
  font-size:14px;line-height:1.82;color:var(--ink-2);
}
.rt li::before{
  content:"";position:absolute;left:2px;top:.72em;
  width:6px;height:6px;border-radius:2px;
  background:var(--cyan);opacity:.75;transform:rotate(45deg);
  box-shadow:0 0 9px rgba(47,228,255,.7);
}
.rt a{color:var(--cyan);border-bottom:1px solid rgba(47,228,255,.3);transition:border-color .24s}
.rt a:hover{border-color:var(--cyan)}
.rt blockquote{
  margin:22px 0;padding:16px 20px;
  border-left:2px solid var(--cyan);
  background:rgba(47,228,255,.045);
  border-radius:0 var(--r-s) var(--r-s) 0;
  color:var(--ink-2);font-size:14px;
}
.rt img{border-radius:var(--r-m);border:1px solid var(--line);margin:20px 0}
.rt code{
  font-family:var(--mono);font-size:12.5px;
  padding:2px 6px;border-radius:4px;
  background:rgba(47,228,255,.09);color:#8df0ff;
  border:1px solid rgba(47,228,255,.16);
}

/* ---------- 12. 图 / 画廊 ---------- */
.figure{margin:0}
.figure a.el-link{display:block;border-radius:var(--r-m);overflow:hidden}
.figure img{
  width:100%;border-radius:var(--r-m);
  border:1px solid var(--line);
  transition:border-color .34s,box-shadow .34s,transform .5s var(--ease);
}
.figure a.el-link:hover img{
  border-color:rgba(47,228,255,.4);
  box-shadow:0 24px 60px -30px rgba(0,0,0,.95),0 0 46px -20px rgba(47,228,255,.7);
}
.figure figcaption{
  margin-top:12px;font-family:var(--mono);font-size:11.5px;letter-spacing:.06em;
  color:var(--faint);text-align:center;
}

.gallery{display:grid;gap:clamp(10px,1.4vw,16px)}
.gallery.cols-2{grid-template-columns:repeat(2,1fr)}
.gallery.cols-3{grid-template-columns:repeat(3,1fr)}
.gallery.cols-4{grid-template-columns:repeat(4,1fr)}
.gallery figure{
  position:relative;margin:0;border-radius:var(--r-m);overflow:hidden;
  border:1px solid var(--line);background:#05090f;
  transition:border-color .34s,box-shadow .34s,transform .34s var(--ease);
}
.gallery figure:hover{
  border-color:rgba(47,228,255,.36);
  box-shadow:0 20px 48px -26px rgba(0,0,0,.95),0 0 40px -18px rgba(47,228,255,.7);
  transform:translateY(-3px);
}
.gallery img{
  width:100%;aspect-ratio:16/10;object-fit:cover;
  transition:transform .6s var(--ease),filter .4s;
  filter:saturate(.94);
}
.gallery figure:hover img{transform:scale(1.04);filter:saturate(1.08)}
.gallery a.el-link{display:block}
.gallery figcaption{
  padding:9px 12px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;
  color:var(--faint);
  border-top:1px solid var(--line);
}

/* ---------- 13. 视频 ---------- */
.video-wrap{
  position:relative;
  border-radius:var(--r-l);overflow:hidden;
  border:1px solid var(--line-2);
  background:#03060c;
  box-shadow:
    0 34px 90px -40px rgba(0,0,0,1),
    0 0 70px -30px rgba(47,228,255,.6),
    inset 0 1px 0 rgba(255,255,255,.05);
}
.video-wrap::before{
  /* 播放框四角 */
  content:"";position:absolute;inset:0;pointer-events:none;z-index:2;
  border-radius:var(--r-l);
  background:
    linear-gradient(to right,rgba(47,228,255,.7) 0,transparent 34px) top left/44px 1px no-repeat,
    linear-gradient(to bottom,rgba(47,228,255,.7) 0,transparent 34px) top left/1px 44px no-repeat,
    linear-gradient(to left,rgba(47,228,255,.7) 0,transparent 34px) top right/44px 1px no-repeat,
    linear-gradient(to bottom,rgba(47,228,255,.7) 0,transparent 34px) top right/1px 44px no-repeat,
    linear-gradient(to right,rgba(63,125,255,.6) 0,transparent 34px) bottom left/44px 1px no-repeat,
    linear-gradient(to top,rgba(63,125,255,.6) 0,transparent 34px) bottom left/1px 44px no-repeat,
    linear-gradient(to left,rgba(63,125,255,.6) 0,transparent 34px) bottom right/44px 1px no-repeat,
    linear-gradient(to top,rgba(63,125,255,.6) 0,transparent 34px) bottom right/1px 44px no-repeat;
}
.video-wrap video,.video-wrap iframe{
  display:block;width:100%;height:auto;aspect-ratio:16/9;
  border:0;background:#03060c;
}
.video-link{
  position:absolute;right:12px;bottom:12px;z-index:3;
  padding:5px 12px;border-radius:999px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;
  color:var(--ink-2);
  background:rgba(4,8,15,.78);
  border:1px solid var(--line-2);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  transition:color .24s,border-color .24s;
}
.video-link:hover{color:var(--cyan);border-color:rgba(47,228,255,.5)}
.video-cap{
  margin-top:16px;text-align:center;
  font-family:var(--mono);font-size:11.5px;letter-spacing:.05em;
  color:var(--dim);line-height:1.7;
}
.video-ph{
  display:grid;place-items:center;aspect-ratio:16/9;
  padding:24px;text-align:center;
  font-size:13px;color:var(--faint);
  background:repeating-linear-gradient(45deg,#05090f,#05090f 10px,#070c15 10px,#070c15 20px);
}

/* ---------- 14. 更新日志 ---------- */
.log{position:relative;padding-left:26px;max-width:820px}
.log::before{
  content:"";position:absolute;left:5px;top:8px;bottom:8px;width:1px;
  background:linear-gradient(to bottom,rgba(47,228,255,.6),rgba(63,125,255,.18) 60%,transparent);
}
.log-item{
  position:relative;
  margin-bottom:14px;padding:clamp(18px,2.2vw,26px);
  border:1px solid var(--line);
  border-radius:var(--r-m);
  background:linear-gradient(168deg,rgba(12,20,34,.7),rgba(7,11,20,.86));
  transition:border-color .32s,box-shadow .32s;
}
.log-item:hover{
  border-color:rgba(47,228,255,.3);
  box-shadow:0 18px 44px -26px rgba(0,0,0,.95),0 0 36px -18px rgba(47,228,255,.6);
}
.log-item::before{
  content:"";position:absolute;left:-25.5px;top:26px;
  width:9px;height:9px;border-radius:50%;
  background:var(--void-3);
  border:1px solid rgba(47,228,255,.55);
  box-shadow:0 0 12px rgba(47,228,255,.55);
}
.log-item.latest::before{
  background:var(--cyan);
  box-shadow:0 0 16px var(--cyan),0 0 32px rgba(47,228,255,.6);
}
.log-item:last-child{margin-bottom:0}
.log-head{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-bottom:12px}
.log-ver{
  font-family:var(--mono);font-size:13.5px;font-weight:600;letter-spacing:.02em;
  color:var(--ink);
}
.log-item.latest .log-ver{color:var(--cyan);text-shadow:0 0 18px rgba(47,228,255,.6)}
.log-date{
  margin-left:auto;
  font-family:var(--mono);font-size:11px;letter-spacing:.08em;color:var(--faint);
}
.tag-new{
  padding:2px 9px;border-radius:999px;
  font-family:var(--mono);font-size:9.5px;letter-spacing:.14em;
  color:#04121a;background:linear-gradient(135deg,var(--cyan),#57c8ff);
  box-shadow:0 0 16px -4px rgba(47,228,255,.9);
}
.log-item ul{display:grid;gap:7px}
.log-item li{
  position:relative;padding-left:16px;
  font-size:13.5px;line-height:1.78;color:var(--dim);
}
.log-item li::before{
  content:"";position:absolute;left:0;top:.74em;
  width:5px;height:1px;background:rgba(47,228,255,.6);
}

/* ---------- 15. 下载框 ---------- */
.dl-box{
  position:relative;
  display:grid;grid-template-columns:minmax(0,1fr) auto;
  gap:clamp(20px,4vw,52px);align-items:center;
  padding:clamp(26px,4vw,48px);
  border:1px solid var(--line-2);
  border-radius:var(--r-l);
  background:
    radial-gradient(560px 240px at 8% 0%,rgba(47,228,255,.09),transparent 68%),
    linear-gradient(160deg,rgba(14,24,40,.86),rgba(7,11,20,.94));
  overflow:hidden;
  transition:border-color .34s,box-shadow .34s;
}
.dl-box::before{
  /* 刻度背景 */
  content:"";position:absolute;right:0;top:0;bottom:0;width:280px;
  background:repeating-linear-gradient(to right,rgba(104,168,224,.11) 0 1px,transparent 1px 14px);
  -webkit-mask-image:linear-gradient(to left,#000,transparent);
          mask-image:linear-gradient(to left,#000,transparent);
  pointer-events:none;
}
.dl-box:hover{
  border-color:rgba(47,228,255,.34);
  box-shadow:0 28px 70px -36px rgba(0,0,0,1),0 0 54px -24px rgba(47,228,255,.7);
}
.dl-box h2{
  font-size:clamp(21px,2.4vw,28px);color:var(--ink);
  margin:0 0 12px;letter-spacing:-.02em;
}
.dl-box .meta{
  font-family:var(--mono);font-size:12px;letter-spacing:.06em;
  color:var(--dim);margin:0 0 16px;line-height:1.8;
}
.dl-box .meta b{color:var(--cyan);font-weight:600}
.req{display:flex;flex-wrap:wrap;gap:7px}
.req span{
  padding:3px 10px;border-radius:4px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.06em;
  color:var(--dim);
  background:rgba(104,168,224,.055);
  border:1px solid var(--line);
}
.req b{color:var(--ink-2);font-weight:600}
.dl-box .btn{justify-self:end}

/* ---------- 16. 页脚 ---------- */
footer{
  position:relative;
  margin-top:0;
  border-top:1px solid var(--line);
  background:linear-gradient(to bottom,rgba(6,10,18,.6),rgba(3,5,10,.98));
}
footer::before{
  content:"";position:absolute;left:0;right:0;top:-1px;height:1px;
  background:linear-gradient(90deg,transparent,rgba(47,228,255,.34) 30%,rgba(63,125,255,.34) 70%,transparent);
}
.foot{
  display:grid;
  grid-template-columns:minmax(0,1.5fr) minmax(0,.8fr) minmax(0,.8fr);
  gap:clamp(24px,4vw,56px);
  padding:clamp(40px,5.4vw,64px) clamp(20px,4.4vw,44px) 0;
}
.f-brand .f-logo{
  display:flex;align-items:center;gap:11px;
  font-size:16px;font-weight:700;color:var(--ink);
  margin-bottom:12px;
}
.f-logo .logo-img{
  width:28px;height:28px;border-radius:7px;
  box-shadow:0 0 0 1px rgba(47,228,255,.22),0 0 16px rgba(47,228,255,.26);
}
.f-slogan{
  font-size:13px;line-height:1.85;color:var(--faint);max-width:320px;
}
.f-col h6{
  font-family:var(--mono);font-size:10.5px;font-weight:500;
  letter-spacing:.2em;text-transform:uppercase;
  color:rgba(47,228,255,.75);margin:0 0 16px;
}
.f-col a,.f-col span{
  display:block;
  font-size:13px;color:var(--dim);margin-bottom:10px;
  transition:color .22s;
}
.f-col a:hover{color:var(--cyan)}
.f-col span{color:var(--faint);font-family:var(--mono);font-size:11.5px;letter-spacing:.05em}
.f-bar{
  grid-column:1/-1;
  display:flex;justify-content:space-between;gap:16px;flex-wrap:wrap;
  margin-top:8px;padding:18px 0 26px;
  border-top:1px solid var(--line);
}
.f-bar small{
  font-family:var(--mono);font-size:11px;letter-spacing:.05em;color:var(--faint);
}
footer .foot a{color:inherit}

/* ---------- 17. 悬浮控件 ---------- */
#fsBtn{
  position:fixed;right:18px;bottom:18px;z-index:110;
  width:38px;height:38px;padding:0;
  display:none;place-items:center;
  border-radius:var(--r-s);
  border:1px solid var(--line-2);
  background:rgba(6,11,20,.82);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  color:var(--dim);
  transition:color .24s,border-color .24s,box-shadow .24s;
}
body:not(.editing) #fsBtn{display:grid}
#fsBtn:hover{color:var(--cyan);border-color:rgba(47,228,255,.45);box-shadow:0 0 22px -10px rgba(47,228,255,.9)}
#fsBtn svg{width:15px;height:15px}
#fsBtn .ic-out{display:none}
#fsBtn.on .ic-in{display:none}
#fsBtn.on .ic-out{display:inline}

#fab{
  position:fixed;right:18px;bottom:66px;z-index:110;
  padding:10px 18px;border-radius:999px;
  font-size:12.5px;font-weight:600;letter-spacing:.02em;
  color:#02121a;
  background:linear-gradient(135deg,#5df0ff,var(--cyan) 40%,#4a9bff);
  box-shadow:0 0 0 1px rgba(47,228,255,.4),0 12px 30px -12px rgba(47,228,255,.9);
  transition:transform .24s var(--ease),box-shadow .24s,opacity .2s;
}
#fab:hover{transform:translateY(-2px);box-shadow:0 0 0 1px rgba(47,228,255,.75),0 16px 38px -12px rgba(47,228,255,1)}
body.editing #fab{display:none}
body.publish #fab{display:none}

#prog{
  position:fixed;left:0;top:0;height:2px;width:0;z-index:200;
  background:linear-gradient(90deg,var(--cyan),var(--blue),var(--violet));
  box-shadow:0 0 12px rgba(47,228,255,.9);
  transition:width .1s linear;
  display:none;
}
body.editing #prog{display:block}

#toast{
  position:fixed;left:50%;bottom:34px;transform:translate(-50%,14px);
  z-index:300;padding:11px 22px;border-radius:var(--r-s);
  font-size:13px;color:var(--ink);
  background:rgba(10,17,29,.95);
  border:1px solid rgba(47,228,255,.35);
  box-shadow:0 18px 46px -20px rgba(0,0,0,1),0 0 30px -14px rgba(47,228,255,.8);
  opacity:0;pointer-events:none;
  transition:opacity .26s,transform .26s var(--ease);
}
#toast.on{opacity:1;transform:translate(-50%,0)}

/* ---------- 18. 编辑器 ---------- */
#bar{
  position:fixed;left:0;right:0;bottom:0;z-index:150;
  display:none;align-items:center;gap:8px;flex-wrap:wrap;
  padding:10px 16px;
  background:rgba(5,9,16,.96);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  border-top:1px solid rgba(47,228,255,.2);
  box-shadow:0 -14px 40px -20px rgba(0,0,0,1);
}
body.editing #bar{display:flex}
body.editing #app{padding-bottom:96px}

.bar-tag{
  padding:4px 10px;border-radius:4px;
  font-family:var(--mono);font-size:10px;letter-spacing:.16em;
  color:#04121a;background:linear-gradient(135deg,var(--cyan),#57c8ff);
}
.bar-pages{display:flex;gap:3px;margin-right:6px;flex-wrap:wrap}
.bar-pages .bp{
  padding:5px 11px;border-radius:4px;
  font-size:12px;color:var(--dim);
  border:1px solid transparent;
  transition:color .2s,background .2s,border-color .2s;
}
.bar-pages .bp:hover{color:var(--ink);background:rgba(104,168,224,.09)}
.bar-pages .bp.on{
  color:var(--cyan);border-color:rgba(47,228,255,.34);
  background:rgba(47,228,255,.075);
}
.bar-btn{
  padding:6px 13px;border-radius:4px;
  font-size:12px;color:var(--ink-2);
  border:1px solid var(--line-2);
  background:rgba(255,255,255,.02);
  transition:color .2s,border-color .2s,background .2s;
  white-space:nowrap;
}
.bar-btn:hover{color:var(--ink);border-color:var(--line-3);background:rgba(104,168,224,.09)}
.bar-btn.primary{
  color:#02121a;font-weight:600;
  background:linear-gradient(135deg,#5df0ff,var(--cyan) 40%,#4a9bff);
  border-color:transparent;
}
.bar-btn.danger:hover{color:#ff9b9b;border-color:rgba(255,120,120,.45);background:rgba(255,80,80,.09)}
.bar-spacer{flex:1}
.bar-state{
  font-family:var(--mono);font-size:10.5px;letter-spacing:.08em;color:var(--faint);
  padding:0 6px;
}

/* 添加模块菜单 */
#addMenu{
  position:fixed;left:50%;top:50%;transform:translate(-50%,-48%) scale(.98);
  z-index:170;width:min(680px,calc(100vw - 40px));
  max-height:74vh;overflow:auto;
  padding:22px;
  border-radius:var(--r-l);
  border:1px solid rgba(47,228,255,.24);
  background:rgba(7,12,21,.98);
  box-shadow:0 40px 120px -40px #000,0 0 70px -30px rgba(47,228,255,.6);
  opacity:0;pointer-events:none;
  transition:opacity .24s,transform .24s var(--ease);
  display:none;
}
#addMenu.on{opacity:1;pointer-events:auto;transform:translate(-50%,-50%) scale(1);display:block}
.am-title{
  font-family:var(--mono);font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  color:var(--cyan);margin-bottom:16px;
}
.am-list{display:grid;grid-template-columns:repeat(auto-fill,minmax(152px,1fr));gap:8px}
.am-item{
  padding:13px;border-radius:var(--r-s);text-align:left;
  border:1px solid var(--line);
  background:rgba(255,255,255,.02);
  transition:border-color .2s,background .2s,transform .2s;
}
.am-item:hover{border-color:rgba(47,228,255,.4);background:rgba(47,228,255,.06);transform:translateY(-2px)}
.am-item .ico{display:block;font-size:16px;margin-bottom:7px;color:var(--cyan)}
.am-item .t{font-size:12.5px;color:var(--ink)}
.add-btn{
  padding:12px;border-radius:var(--r-s);
  border:1px dashed var(--line-2);color:var(--dim);font-size:13px;
  transition:color .2s,border-color .2s;
}
.add-btn:hover{color:var(--cyan);border-color:rgba(47,228,255,.45)}

/* 侧栏面板 */
#panel{
  position:fixed;right:0;top:0;bottom:0;z-index:160;
  width:min(376px,100vw);
  background:rgba(6,11,19,.985);
  border-left:1px solid rgba(47,228,255,.2);
  box-shadow:-30px 0 80px -40px #000;
  transform:translateX(100%);
  transition:transform .3s var(--ease);
  display:flex;flex-direction:column;
}
body.editing #panel.open{transform:none}
.panel-head{
  display:flex;align-items:center;justify-content:space-between;
  padding:16px 18px;border-bottom:1px solid var(--line);
  flex:none;
}
.panel-head strong{
  font-size:14px;color:var(--ink);letter-spacing:.01em;
}
#panelClose{
  width:28px;height:28px;border-radius:4px;
  color:var(--dim);font-size:13px;
  transition:color .2s,background .2s;
}
#panelClose:hover{color:var(--ink);background:rgba(104,168,224,.1)}
.panel-body{
  flex:1;overflow:auto;padding:18px;
}
.panel-body::-webkit-scrollbar{width:8px}
.panel-body::-webkit-scrollbar-thumb{background:rgba(47,228,255,.24);border-radius:6px}

.field{margin-bottom:18px}
.field>label{
  display:block;margin-bottom:7px;
  font-family:var(--mono);font-size:10.5px;letter-spacing:.1em;
  text-transform:uppercase;color:var(--dim);
}
.field .hint{
  margin-top:6px;font-size:11px;line-height:1.65;color:var(--faint);
}
.inp,.ta{
  width:100%;padding:9px 11px;border-radius:var(--r-s);
  font-family:var(--sans);font-size:13px;color:var(--ink);
  background:rgba(255,255,255,.035);
  border:1px solid var(--line-2);
  transition:border-color .2s,background .2s,box-shadow .2s;
}
.inp:focus,.ta:focus{
  outline:none;border-color:rgba(47,228,255,.55);
  background:rgba(47,228,255,.045);
  box-shadow:0 0 0 3px rgba(47,228,255,.1);
}
.ta{resize:vertical;min-height:72px;line-height:1.65}
.ta-big{min-height:170px;font-family:var(--mono);font-size:12px}
select.inp{cursor:pointer}
.chk{display:flex;align-items:center;gap:9px;margin-bottom:12px;font-size:12.5px;color:var(--ink-2)}
.chk input{width:15px;height:15px;accent-color:#2fe4ff}

.list-box{display:grid;gap:9px;margin-bottom:12px}
.list-item{
  border:1px solid var(--line);border-radius:var(--r-s);
  overflow:hidden;background:rgba(255,255,255,.018);
}
.li-head{
  display:flex;align-items:center;gap:8px;
  padding:9px 11px;background:rgba(255,255,255,.022);
  cursor:pointer;
}
.li-idx{
  font-family:var(--mono);font-size:10px;color:var(--cyan);
  min-width:18px;
}
.li-sub{
  padding:12px 11px;border-top:1px solid var(--line);
  display:none;
}
.li-sub label{
  display:block;margin-bottom:5px;
  font-family:var(--mono);font-size:10px;letter-spacing:.09em;
  text-transform:uppercase;color:var(--faint);
}
.li-sub .inp,.li-sub .ta{margin-bottom:10px;font-size:12.5px}
.li-sub:last-child{margin-bottom:0}
.li-actions{margin-left:auto;display:flex;gap:4px}
.li-btn{
  width:24px;height:24px;border-radius:4px;
  font-size:11px;color:var(--dim);
  border:1px solid transparent;
  transition:color .18s,background .18s;
}
.li-btn:hover{color:var(--ink);background:rgba(104,168,224,.12)}
.li-btn.del:hover{color:#ff9b9b;background:rgba(255,80,80,.12)}
.media-box{margin-bottom:12px}
.media-thumb{
  width:100%;height:104px;border-radius:var(--r-s);
  border:1px dashed var(--line-2);background:rgba(255,255,255,.02);
  display:grid;place-items:center;overflow:hidden;
  font-size:11.5px;color:var(--faint);cursor:pointer;
  transition:border-color .2s,color .2s;
}
.media-thumb:hover{border-color:rgba(47,228,255,.45);color:var(--cyan)}
.media-thumb img{width:100%;height:100%;object-fit:cover}
.media-row{display:flex;gap:6px;margin-top:8px}
.media-row button{
  flex:1;padding:6px;border-radius:4px;font-size:11.5px;color:var(--dim);
  border:1px solid var(--line-2);transition:color .2s,border-color .2s;
}
.media-row button:hover{color:var(--cyan);border-color:rgba(47,228,255,.4)}
.media-empty{
  padding:16px;text-align:center;font-size:12px;color:var(--faint);
  border:1px dashed var(--line);border-radius:var(--r-s);
}

/* 帮助 / 导入导出对话框 */
.help{font-size:13.5px;line-height:1.85;color:var(--ink-2)}
.help h3{
  font-size:14.5px;color:var(--ink);margin:20px 0 10px;
  padding-left:12px;position:relative;
}
.help h3:first-child{margin-top:0}
.help h3::before{
  content:"";position:absolute;left:0;top:.4em;width:3px;height:.9em;
  border-radius:2px;background:linear-gradient(180deg,var(--cyan),var(--blue));
}
.help p{margin:0 0 10px}
.help b{color:var(--ink);font-weight:600}
.help code{
  font-family:var(--mono);font-size:12px;
  padding:2px 6px;border-radius:4px;
  background:rgba(47,228,255,.09);color:#8df0ff;
  border:1px solid rgba(47,228,255,.16);
}
.help ul,.help ol{padding-left:0;margin:0 0 12px}
.help li{
  position:relative;padding-left:18px;margin-bottom:7px;
}
.help li::before{
  content:"";position:absolute;left:2px;top:.72em;
  width:5px;height:5px;border-radius:2px;
  background:var(--cyan);opacity:.7;transform:rotate(45deg);
}
.help .warn{
  padding:12px 14px;border-radius:var(--r-s);
  background:rgba(255,181,69,.075);
  border-left:2px solid var(--amber);
  color:#f0d4a8;font-size:12.5px;margin:14px 0;
}

/* 画布块 */
.cv{
  position:relative;width:100%;aspect-ratio:16/9;
  border-radius:var(--r-m);overflow:hidden;
  background:#04080f;border:1px solid var(--line);
}
.cv-el{position:absolute}
.cv-text{font-size:inherit;line-height:1.5}
.cv-text b,.cv-text strong{color:var(--cyan)}
.cv-img img{width:100%;height:auto;border-radius:var(--r-s)}
.cv-img a.el-link{display:block}
.cv-video video,.cv-video iframe{width:100%;height:auto;border:0;border-radius:var(--r-s)}
.cv-video .video-link{right:8px;bottom:8px}
.cv-btn{
  display:inline-block;padding:9px 20px;border-radius:var(--r-s);
  font-weight:600;color:#02121a;
  background:linear-gradient(135deg,#5df0ff,var(--cyan) 40%,#4a9bff);
  box-shadow:0 8px 24px -10px rgba(47,228,255,.9);
}
.cv-line{width:100%;height:1px}
.cv-hint{
  display:grid;place-items:center;height:100%;
  font-size:11.5px;color:var(--faint);
}
.cv-list{display:grid;gap:5px;margin-top:10px}
.cv-row{
  display:flex;align-items:center;gap:8px;
  padding:6px 9px;border-radius:4px;font-size:12px;color:var(--dim);
  border:1px solid var(--line);background:rgba(255,255,255,.02);
}
.cv-row .n{font-family:var(--mono);font-size:10px;color:var(--cyan);min-width:16px}
.cv-row .t{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cv-row .x{color:var(--faint);font-size:11px}
.cv-row .x:hover{color:#ff9b9b}
.cv-row:hover{border-color:var(--line-2);color:var(--ink-2)}
.cv-row.on{border-color:rgba(47,228,255,.4);background:rgba(47,228,255,.06)}
.cv-add{
  padding:10px;border-radius:var(--r-s);width:100%;
  font-size:12px;color:var(--dim);border:1px dashed var(--line-2);
  transition:color .2s,border-color .2s;
}
.cv-add:hover{color:var(--cyan);border-color:rgba(47,228,255,.45)}
.cv-editing{outline:1px dashed rgba(47,228,255,.4);outline-offset:4px}
.cv-resize{
  position:absolute;right:-5px;bottom:-5px;width:11px;height:11px;
  border-radius:3px;background:var(--cyan);
  box-shadow:0 0 10px rgba(47,228,255,.9);
}
body.editing .cv-el{cursor:move}
body.editing .cv-el.sel .cv-resize{display:block}

/* 编辑态块装饰 */
body.editing .blk{
  outline:1px dashed rgba(47,228,255,.16);
  outline-offset:-8px;
  border-radius:var(--r-m);
  opacity:1;transform:none;
}
body.editing .blk:hover{outline-color:rgba(47,228,255,.42);background:rgba(47,228,255,.022)}
body.editing .blk.selected>.blk-tools{opacity:1;pointer-events:auto;transform:none}
body.editing a{pointer-events:none}
body.editing nav{pointer-events:auto}

.blk-tools{
  position:absolute;right:12px;top:10px;z-index:40;
  display:flex;gap:3px;
  padding:4px;border-radius:6px;
  background:rgba(5,10,18,.96);
  border:1px solid rgba(47,228,255,.28);
  box-shadow:0 12px 30px -14px #000;
  opacity:0;pointer-events:none;transform:translateY(-4px);
  transition:opacity .2s,transform .2s;
}
body.editing .blk:hover>.blk-tools{opacity:1;pointer-events:auto;transform:none}
.tool-btn{
  width:25px;height:25px;border-radius:4px;
  font-size:11.5px;line-height:1;color:var(--dim);
  transition:color .16s,background .16s;
}
.tool-btn:hover{color:var(--ink);background:rgba(104,168,224,.14)}
.tool-btn.del:hover{color:#ff9b9b;background:rgba(255,80,80,.14)}
.drag-handle{cursor:grab}
.drag-handle:active{cursor:grabbing}

.blk-label{
  position:absolute;left:12px;top:10px;z-index:40;
  padding:2px 8px;border-radius:4px;
  font-family:var(--mono);font-size:9.5px;letter-spacing:.1em;
  color:#8df0ff;background:rgba(5,10,18,.9);
  border:1px solid rgba(47,228,255,.28);
  opacity:0;pointer-events:none;transition:opacity .2s;
}
body.editing .blk:hover>.blk-label{opacity:1}
body.publish .blk-label,body.publish .cv-resize,body.publish .blk-tools{display:none}

.blk.dragging{opacity:.4}
.blk.drop-before::before{
  content:"";position:absolute;left:0;right:0;top:0;height:2px;z-index:50;
  background:linear-gradient(90deg,var(--cyan),var(--blue));
  box-shadow:0 0 14px rgba(47,228,255,.9);
}
.blk.drop-after::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:2px;z-index:50;
  background:linear-gradient(90deg,var(--cyan),var(--blue));
  box-shadow:0 0 14px rgba(47,228,255,.9);
}

.raw-html{color:var(--ink-2);font-size:14px;line-height:1.85}

/* ---------- 19. 响应式 ---------- */
@media (max-width:1080px){
  .hero-grid{grid-template-columns:1fr;gap:44px;text-align:center}
  .hero .sub{margin-left:auto;margin-right:auto}
  .cta-row{justify-content:center}
  .badge{margin-left:auto;margin-right:auto}
  .hero .dl-note{text-align:center}
  .orb-stage{width:clamp(230px,44vw,320px)}
  .sat.s1{left:-6%}
  .sat.s2{right:-5%}
  .hero-side{display:none}
  .foot{grid-template-columns:1fr 1fr}
  .f-brand{grid-column:1/-1}
  .dl-box{grid-template-columns:1fr;text-align:left}
  .dl-box .btn{justify-self:start}
  .gallery.cols-4{grid-template-columns:repeat(2,1fr)}
  .flow{grid-template-columns:repeat(2,minmax(0,1fr))}
}

@media (max-width:820px){
  :root{--nav-h:58px}
  .nav-links{
    position:fixed;left:0;right:0;top:var(--nav-h);
    flex-direction:column;align-items:stretch;gap:0;
    padding:8px 14px 16px;
    background:rgba(5,9,16,.98);
    border-bottom:1px solid var(--line);
    -webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);
    transform:translateY(-8px);opacity:0;pointer-events:none;
    transition:opacity .24s,transform .24s;
  }
  body.nav-open .nav-links,
  .nav-links.open{opacity:1;transform:none;pointer-events:auto}
  .nav-links a{padding:12px 10px;border-radius:6px;font-size:14px}
  .nav-links a.on::after{left:10px;right:auto;width:18px;bottom:8px}
  .nav-burger{display:grid;place-items:center}
  .nav-cta{margin-left:0;padding:9px 16px;font-size:13px}
  .hud{display:none}
  .hero-frame .tl,.hero-frame .tr{top:calc(var(--nav-h) + 12px)}
  .hero-frame .tl,.hero-frame .bl{left:12px}
  .hero-frame .tr,.hero-frame .br{right:12px}
  .hero-frame .bl,.hero-frame .br{bottom:96px}
  .hero-frame i{width:42px;height:42px}
  /* 移动端首屏改为内容自适应高度，避免地球被截断 */
  .hero{min-height:auto;padding:calc(var(--nav-h) + 26px) 0 34px}
  .hero>.wrap{align-items:flex-start}
  .hero-grid{gap:34px}
  .hero h1{font-size:clamp(29px,7.4vw,40px);margin-bottom:18px}
  .hero .sub{font-size:14px;line-height:1.82;margin-bottom:26px}
  .badge{
    white-space:normal;text-align:center;line-height:1.55;
    border-radius:12px;padding:6px 13px;
    font-size:9.5px;letter-spacing:.1em;max-width:100%;
  }
  .hero-foot{margin-top:0}
  .stats{grid-template-columns:repeat(2,minmax(0,1fr))}
  .feat-grid{grid-template-columns:1fr!important}
  .gallery.cols-3,.gallery.cols-4{grid-template-columns:repeat(2,1fr)}
  .flow{grid-template-columns:1fr 1fr}
  .hero-foot .wrap{height:auto;padding:14px 0;gap:12px 20px}
  .hf-scroll{margin-left:0;width:100%;justify-content:flex-start}
  .foot{grid-template-columns:1fr;gap:28px}
  #fab{bottom:16px;right:14px;padding:9px 15px;font-size:12px}
  #fsBtn{display:none!important}
  .log{padding-left:20px}
  .log-item::before{left:-19.5px}
}

@media (max-width:520px){
  .wrap{padding:0 18px}
  .stats{grid-template-columns:1fr}
  .gallery.cols-2,.gallery.cols-3,.gallery.cols-4{grid-template-columns:1fr}
  .flow{grid-template-columns:1fr}
  .cta-row .btn{width:100%}
  .hero-foot .wrap{padding:12px 0}
  .f-bar{flex-direction:column;gap:8px}
  .orb-stage{width:min(66vw,264px)}
  .sat{font-size:9px;padding:3px 8px}
  .sat.s0{right:-10%}
  .sat.s1{left:-13%}
  .sat.s2{right:-12%}
  .sat.s3{left:-8%}
  .hero-side{display:none}
}

/* 截图/无 JS 兜底：强制显示所有区块 */
body.shot-mode .blk{opacity:1!important;transform:none!important}

/* ---------- 20. 动效偏好 ---------- */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{
    animation-duration:.001ms!important;
    animation-iteration-count:1!important;
    transition-duration:.001ms!important;
    scroll-behavior:auto!important;
  }
  .blk{opacity:1;transform:none}
}
