/* =========================================================
   掌旗安全智能体中枢 · 首页重构版样式 (home.css)
   作用域：仅首页(assets/css/site.css 之后加载)。
   新类统一使用 nx- 前缀；复用 site.css 的变量与通用按钮。
   顶部菜单(.site-header) 与子页面均不受影响。
   ========================================================= */

/* ---------- 0. 基础 ---------- */
body.home{ background:#fff; color:var(--ink); --sec-alt:#F5F7FA; }
.nx-sec{ padding:clamp(76px,9vw,128px) 0; position:relative; background:#fff; }
.nx-sec.alt{ background:var(--sec-alt); }

/* 章节标题组件 */
.nx-head{ display:grid; gap:16px; margin-bottom:44px; }
.nx-head.grid2{ grid-template-columns:1.5fr .9fr; align-items:end; gap:40px; }
.nx-kicker{ display:inline-flex; align-items:center; gap:10px; font-family:var(--mono);
  font-size:12px; letter-spacing:.12em; text-transform:uppercase; color:var(--accent); font-weight:600; }
.nx-kicker::before{ content:""; width:26px; height:2px; background:var(--grad); border-radius:2px; }
.nx-kicker .idx{ color:var(--ink-3); }
.nx-title{ font-size:clamp(28px,4.2vw,46px); line-height:1.16; letter-spacing:-.02em;
  font-weight:750; color:var(--ink); margin:0; }
.nx-title .dim{ color:#79838A; font-weight:600; }
.nx-lead{ font-size:clamp(15px,1.4vw,17px); line-height:1.85; color:var(--ink-2);
  max-width:62ch; margin:0; }
.nx-note{ margin:16px 0 0; font-size:13.5px; line-height:1.75; color:var(--ink-3); }

/* 流光文字 */
.grad{ background:linear-gradient(100deg,var(--grad-a),var(--grad-b) 50%,var(--accent-2));
  -webkit-background-clip:text; background-clip:text; color:transparent;
  background-size:200% auto; animation:nx-shimmer 6s linear infinite; }

/* ---------- 1. HERO ---------- */
.nx-hero{ position:relative; overflow:hidden; padding:calc(var(--nav-h) + 84px) 0 clamp(58px,7vw,92px);
  text-align:center; }
.nx-hero .wrap{ position:relative; z-index:1; }
.nx-hero-bg{ position:absolute; inset:0; z-index:0; pointer-events:none; }
.nx-hero-bg .gx{ position:absolute; border-radius:50%; filter:blur(60px); opacity:.5; }
.nx-hero-bg .a1{ width:520px; height:520px; left:-120px; top:-170px;
  background:radial-gradient(circle, rgba(239,22,27,.20), transparent 70%); animation:nx-float1 14s ease-in-out infinite; }
.nx-hero-bg .a2{ width:560px; height:560px; right:-150px; top:20px;
  background:radial-gradient(circle, rgba(162,32,39,.16), transparent 70%); animation:nx-float2 18s ease-in-out infinite; }
.nx-hero-bg .grid{ position:absolute; inset:-2px;
  background-image:linear-gradient(rgba(162,32,39,.05) 1px, transparent 1px),
    linear-gradient(90deg, rgba(162,32,39,.05) 1px, transparent 1px);
  background-size:38px 38px;
  -webkit-mask-image:radial-gradient(120% 80% at 50% 0%, #000 30%, transparent 75%);
  mask-image:radial-gradient(120% 80% at 50% 0%, #000 30%, transparent 75%); }

.nx-eyebrow{ display:inline-flex; align-items:center; gap:10px; font-family:var(--mono);
  font-size:12px; letter-spacing:.06em; color:var(--ink-3); background:var(--wash);
  border:1px solid var(--line); padding:7px 14px; border-radius:999px; }
.nx-eyebrow i{ width:4px; height:4px; border-radius:50%; background:var(--accent-2); }
.nx-h1{ font-size:clamp(32px,5.8vw,68px); line-height:1.08; letter-spacing:-.03em;
  font-weight:780; color:var(--ink); margin:22px auto 0; max-width:16em;
  text-wrap:balance; }
.nx-h1 .line{ display:block; }
/* 首行英文 Wordmark：Inter 800，收一点字距，和下面一行中文等重视觉 */
.nx-h1 .wm{ font-family:"Inter",var(--sans); font-weight:800; letter-spacing:-.045em;
  display:inline-block; }
/* 第二行中文：比英文词标小一档，形成层级 */
.nx-h1 .cn{ margin-top:.09em; font-size:clamp(24px,3.9vw,46px); font-weight:750;
  letter-spacing:-.02em; line-height:1.3; }
/* 词标动效：字母逐字入场 + 徽章里代码符号轮播 + 扫光
   —— 不是静态贴图，是一个会"呼吸"的小终端 */
.wm-badge{
  position:relative; display:inline-flex; align-items:center; justify-content:center;
  width:1.26em; height:.8em; margin:0 .05em; vertical-align:.03em;
  border-radius:.235em; overflow:hidden;
  background:linear-gradient(135deg,#B7D0FF 0%,#93AEF5 52%,#7C9AEA 100%);
  box-shadow:0 .05em .16em -.04em rgba(96,132,224,.5),
             inset 0 .015em 0 rgba(255,255,255,.6),
             inset 0 -.02em .04em rgba(84,116,205,.25);
  color:#fff;
  transform:translateY(-.01em);
  opacity:0; scale:.35;
  animation:wm-pop .8s var(--ease) .32s forwards,
            wm-breathe 4.8s ease-in-out 1.2s infinite;
}
/* 三枚符号在同一位置循环：</>  →  { }  →  >_  */
.wm-badge .ic{
  position:absolute; width:.6em; height:.6em; z-index:1; opacity:0;
  animation:wm-cycle 8.4s var(--ease) infinite;
}
.wm-badge .ic:nth-of-type(1){ animation-delay:0s }
.wm-badge .ic:nth-of-type(2){ animation-delay:2.8s }
.wm-badge .ic:nth-of-type(3){ animation-delay:5.6s }
/* 扫光 */
.wm-badge::after{
  content:""; position:absolute; top:-45%; left:-70%; width:48%; height:190%;
  background:linear-gradient(100deg,rgba(255,255,255,0),rgba(255,255,255,.8),rgba(255,255,255,0));
  transform:rotate(18deg); animation:wm-sheen 5.6s ease-in-out infinite;
}
/* 字母：逐字上浮 + 去模糊 */
.wm .ch{ display:inline-block; will-change:transform,opacity; }
.wm-ready .ch{
  opacity:0; transform:translateY(.3em); filter:blur(6px);
  animation:wm-in .8s var(--ease) calc(var(--i) * 28ms + 100ms) forwards,
            nx-glitch 7s steps(1, end) 2.6s infinite;
}
@keyframes wm-in{ to{ opacity:1; transform:none; filter:none; } }
@keyframes wm-pop{ to{ opacity:1; scale:1; } }
@keyframes wm-breathe{ 0%,100%{ scale:1 } 50%{ scale:1.045 } }
@keyframes wm-cycle{
  0%   { opacity:0; transform:translateY(.24em) rotateX(-75deg); }
  4%,29%{ opacity:1; transform:none; }
  34%,100%{ opacity:0; transform:translateY(-.24em) rotateX(75deg); }
}
@keyframes wm-sheen{
  0%,58%{ left:-70%; }
  84%,100%{ left:130%; }
}
.sr-only{ position:absolute; width:1px; height:1px; padding:0; margin:-1px;
  overflow:hidden; clip:rect(0 0 0 0); white-space:nowrap; border:0; }
.nx-sub{ font-size:clamp(15px,1.6vw,18px); line-height:1.8; color:var(--ink-2);
  max-width:640px; margin:24px auto 0; }
.nx-cta-row{ display:flex; gap:14px; justify-content:center; align-items:center;
  margin-top:34px; flex-wrap:wrap; }
.nx-link{ display:inline-flex; align-items:center; gap:6px; color:var(--accent);
  font-weight:600; border-bottom:1px solid transparent; transition:border-color .2s; }
.nx-link:hover{ border-color:var(--accent); }
.nx-link svg{ width:14px; height:14px; animation:nx-bob 2.4s ease-in-out infinite; }

/* 按钮在 hero / CTA 中的放大处理（复用通用 .btn-solid / .btn-ghost） */
.nx-hero .btn-solid, .nx-cta .btn-solid{ font-size:15px; padding:13px 24px;
  display:inline-flex; align-items:center; gap:8px; border-radius:10px; }
.nx-hero .btn-solid svg, .nx-cta .btn-solid svg{ width:16px; height:16px; }
.nx-cta .btn-ghost{ color:var(--ink); border-color:var(--line); background:#fff; }
.nx-cta .btn-ghost:hover{ background:#fff; border-color:var(--accent); color:var(--accent); }

/* 产品窗口：真实界面截图 */
.nx-shot{ position:relative; max-width:1000px; margin:54px auto 0;
  border-radius:14px; border:1px solid var(--line); background:#fff; overflow:hidden;
  text-align:left;
  box-shadow:0 1px 2px rgba(17,20,23,.05),
             0 30px 60px -34px rgba(162,32,39,.42),
             0 60px 110px -60px rgba(162,32,39,.3); }
/* 顶栏：浏览器式外壳，说明这是真实界面 */
.nx-shot-bar{ display:flex; align-items:center; gap:12px; height:34px; padding:0 14px;
  background:linear-gradient(180deg,#FBFCFD,#F4F7F9); border-bottom:1px solid var(--line); }
.nx-shot-bar .dots{ display:flex; gap:6px; }
.nx-shot-bar .dots i{ width:9px; height:9px; border-radius:50%; background:#D8DEE4; }
.nx-shot-name{ font-family:var(--mono); font-size:10px; letter-spacing:.18em; color:var(--ink-3); }
.nx-shot-tag{ margin-left:auto; font-size:10.5px; letter-spacing:.02em; color:var(--accent);
  background:var(--accent-wash); border:1px solid rgba(162,32,39,.16);
  padding:2px 8px; border-radius:999px; }
.nx-shot-img{ display:block; width:100%; height:auto; }
@media (max-width:640px){
  .nx-shot{ margin-top:38px; border-radius:12px; }
  .nx-shot-bar{ height:30px; }
  .nx-shot-name{ letter-spacing:.12em; }
}

/* 数据条 */
.nx-stats{ display:grid; grid-template-columns:repeat(4,1fr); max-width:900px; margin:46px auto 0;
  border:1px solid var(--line); border-radius:14px; overflow:hidden; background:#fff;
  box-shadow:0 14px 36px -24px rgba(162,32,39,.4); }
.nx-stat{ padding:22px 14px; text-align:center; border-right:1px solid var(--line-2); }
.nx-stat:last-child{ border-right:0; }
.nx-stat b{ display:block; font-family:var(--mono); font-size:clamp(26px,3.4vw,38px);
  font-weight:700; letter-spacing:-.03em; color:var(--ink); font-variant-numeric:tabular-nums; }
.nx-stat b em{ font-style:normal; font-size:.5em; color:var(--ink-3); margin-left:2px; }
.nx-stat > span{ display:block; margin-top:4px; font-size:12.5px; color:var(--ink-3); }

/* ---------- 2. 卡片与网格 ---------- */
.nx-grid{ display:grid; gap:18px; }
.nx-grid.cols2{ grid-template-columns:repeat(2,1fr); }
.nx-grid.cols3{ grid-template-columns:repeat(3,1fr); }
.nx-grid.cols4{ grid-template-columns:repeat(4,1fr); }
.nx-card{ position:relative; background:#fff; border:1px solid var(--line); border-radius:14px;
  padding:24px; box-shadow:0 1px 2px rgba(17,20,23,.035); transition:transform .35s var(--ease), box-shadow .35s var(--ease), border-color .35s var(--ease); }
.nx-card::after{ content:""; position:absolute; inset:0; border-radius:inherit; padding:1px;
  background:linear-gradient(135deg, rgba(239,22,27,.6), rgba(162,32,39,0));
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude; opacity:0; transition:opacity .35s var(--ease);
  pointer-events:none; }
.nx-card:hover{ transform:translateY(-4px); box-shadow:0 22px 44px -26px rgba(162,32,39,.45);
  border-color:rgba(239,22,27,.4); }
.nx-card:hover::after{ opacity:1; }
.nx-card .ic{ width:44px; height:44px; display:grid; place-items:center; border-radius:11px;
  background:var(--accent-wash); color:var(--accent); margin-bottom:14px; }
.nx-card .ic svg{ width:22px; height:22px; }
.nx-card h3{ font-size:18px; font-weight:700; color:var(--ink); margin:0 0 8px; letter-spacing:-.01em; }
.nx-card p{ font-size:14px; line-height:1.75; color:var(--ink-2); margin:0; }
.nx-card .num{ display:block; font-family:var(--mono); font-size:12px; color:var(--ink-3);
  letter-spacing:.08em; margin-bottom:6px; }

.nx-pills{ display:flex; flex-wrap:wrap; gap:8px; margin-top:14px; }
.nx-pills span{ font-family:var(--mono); font-size:11.5px; color:var(--ink-2);
  background:var(--wash); border:1px solid var(--line); padding:5px 10px; border-radius:8px; }

.nx-list{ margin:14px 0 0; display:grid; gap:8px; }
.nx-list div{ display:grid; grid-template-columns:52px 1fr; gap:10px; font-size:13px; }
.nx-list dt{ color:var(--accent); font-weight:600; }
.nx-list dd{ color:var(--ink-2); margin:0; }

/* ---------- 3. 特性区块：浅色卡片系统 ---------- */
.nx-glass{ position:relative; background:#fff; border:1px solid var(--line);
  border-radius:14px; padding:24px; box-shadow:0 1px 2px rgba(17,20,23,.035);
  transition:transform .35s var(--ease), border-color .35s var(--ease), box-shadow .35s var(--ease); }
.nx-glass:hover{ transform:translateY(-4px); border-color:rgba(239,22,27,.45);
  box-shadow:0 22px 44px -26px rgba(162,32,39,.4); }
.nx-glass h3{ color:var(--ink); font-size:17px; margin:0 0 8px; }
.nx-glass p{ color:var(--ink-2); font-size:13.5px; line-height:1.7; margin:0; }
.nx-glass .ic{ width:42px; height:42px; border-radius:11px; display:grid; place-items:center;
  background:var(--accent-wash); color:var(--accent); margin-bottom:12px; }
.nx-glass .ic svg{ width:20px; height:20px; }

/* 模型墙 */
.nx-models{ display:grid; grid-template-columns:repeat(auto-fill, minmax(150px,1fr)); gap:12px;
  position:relative; z-index:1; }
.nx-brand{ display:flex; align-items:center; gap:11px; padding:13px 14px; border-radius:12px;
  background:#fff; border:1px solid var(--line);
  transition:transform .3s var(--ease), border-color .3s, box-shadow .3s; }
.nx-brand:hover{ transform:translateY(-3px); border-color:rgba(239,22,27,.45);
  box-shadow:0 18px 34px -26px rgba(162,32,39,.45); }
.nx-brand .logo{ width:28px; height:28px; flex:none; display:grid; place-items:center; color:var(--ink-2); }
.nx-brand .logo img{ width:26px; height:26px; object-fit:contain; }
/* 单色品牌标识以行内 SVG 内联，才能继承磁贴的 color（<img> 里的 currentColor 拿不到页面颜色） */
.nx-brand .logo svg.lg{ width:26px; height:26px; display:block; }
.nx-brand b{ font-size:13.5px; color:var(--ink); font-weight:600; display:block; }
.nx-brand span{ font-size:11px; color:var(--ink-3); }
.nx-brand.float{ animation:nx-floaty 5s ease-in-out infinite; }

/* bento 能力矩阵 */
.nx-bento{ display:grid; grid-template-columns:repeat(6,1fr); gap:14px; position:relative; z-index:1; }
.nx-bento .nx-glass{ grid-column:span 2; }
.nx-bento .nx-glass.wide{ grid-column:span 4; }
.nx-bento .nx-glass.full{ grid-column:span 6; }

/* ---------- 4. 智能体对比表 ---------- */
.nx-table-wrap{ width:100%; overflow-x:auto; -webkit-overflow-scrolling:touch;
  border-radius:14px; }
.nx-table-wrap::-webkit-scrollbar{ height:8px; }
.nx-table-wrap::-webkit-scrollbar-thumb{ background:#DDE3E8; border-radius:99px; }
.nx-table-wrap::-webkit-scrollbar-track{ background:transparent; }
.nx-table-hint{ display:none; }
.nx-table{ width:100%; border-collapse:collapse; background:#fff; border:1px solid var(--line);
  border-radius:14px; overflow:hidden; }
.nx-table th, .nx-table td{ padding:14px 16px; text-align:left; border-bottom:1px solid var(--line-2);
  font-size:13.5px; vertical-align:top; }
.nx-table thead th{ background:var(--wash); font-size:12px; color:var(--ink-3); letter-spacing:.04em; }
.nx-table tbody th{ color:var(--ink); font-weight:600; background:var(--wash);
  white-space:nowrap; }
.nx-table td b{ color:var(--accent); }
.nx-table tr:last-child td, .nx-table tr:last-child th{ border-bottom:0; }

/* ---------- 5. 场景列表 ---------- */
.nx-scenes{ display:grid; border:1px solid var(--line); border-radius:14px; overflow:hidden; background:#fff; }
.nx-scene{ display:grid; grid-template-columns:64px 1fr auto; gap:20px; align-items:center;
  padding:20px 22px; border-bottom:1px solid var(--line-2); transition:background .25s; }
.nx-scene:last-child{ border-bottom:0; }
.nx-scene:hover{ background:var(--wash); }
.nx-scene .sn{ font-family:var(--mono); font-size:20px; font-weight:700; color:var(--accent); }
.nx-scene b{ font-size:16px; color:var(--ink); }
.nx-scene p{ font-size:13.5px; color:var(--ink-2); margin:4px 0 0; line-height:1.65; }
.nx-scene .out{ font-family:var(--mono); font-size:12px; color:var(--ink-3); white-space:nowrap; }

/* ---------- 6. 架构四层 ---------- */
.nx-layers{ display:grid; gap:0; }
.nx-layer{ border:1px solid var(--line); border-radius:14px; padding:18px 20px; background:#fff; }
.nx-layer .lt{ font-weight:700; color:var(--ink); font-size:15px; }
.nx-layer .ls{ font-family:var(--mono); font-size:11.5px; color:var(--accent); margin-left:8px; }
.nx-layer .items{ display:flex; flex-wrap:wrap; gap:8px; margin-top:12px; }
.nx-layer .items span{ font-size:12.5px; color:var(--ink-2); background:var(--wash);
  border:1px solid var(--line); padding:5px 11px; border-radius:8px; }
.nx-layer.core{ border-color:rgba(239,22,27,.4); background:var(--accent-wash); }
.nx-conn{ height:26px; display:grid; place-items:center; }
.nx-conn::before{ content:"↓"; color:var(--accent-2); font-size:18px;
  animation:nx-pulse 2.4s ease-in-out infinite; }
.nx-principles{ display:grid; grid-template-columns:repeat(4,1fr); gap:14px; margin-top:22px; }
.nx-pitem{ display:flex; gap:12px; align-items:flex-start; padding:16px; border:1px solid var(--line);
  border-radius:12px; background:#fff; }
.nx-pitem .pi{ width:34px; height:34px; flex:none; display:grid; place-items:center; border-radius:9px;
  background:var(--accent-wash); color:var(--accent); }
.nx-pitem .pi svg{ width:18px; height:18px; }
.nx-pitem b{ font-size:14px; color:var(--ink); }
.nx-pitem p{ font-size:12.5px; color:var(--ink-2); margin:4px 0 0; line-height:1.6; }
.nx-proto-row{ display:flex; flex-wrap:wrap; gap:8px; margin-top:18px; }
.nx-proto-row span{ font-family:var(--mono); font-size:11.5px; color:var(--ink-2);
  background:var(--wash); border:1px solid var(--line); padding:5px 11px; border-radius:8px; }
/* 灰底区块里的浅色小标签改用白底，避免与区块底色糊在一起 */
.nx-sec.alt .nx-proto-row span{ background:#fff; }

/* ---------- 9. CTA（已统一为白底） ---------- */
.nx-cta{ position:relative; overflow:hidden; text-align:center;
  background:#fff; color:var(--ink); }
.nx-cta::before{ content:""; position:absolute; inset:0;
  background:radial-gradient(58% 78% at 50% 118%, rgba(239,22,27,.055), transparent 62%); }
.nx-cta .wrap{ position:relative; z-index:1; }
.nx-cta h2{ font-size:clamp(26px,4vw,44px); font-weight:750; color:var(--ink); margin:0; letter-spacing:-.02em; }
.nx-cta p{ color:var(--ink-2); font-size:16px; max-width:56ch; margin:16px auto 0; line-height:1.8; }
/* 三平台下载按钮组：图标居中、彩色磁贴、放大 */
.dlw-row{ display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:14px;
  max-width:760px; margin:34px auto 0; }
.dlw-btn{ position:relative; display:flex; flex-direction:column; align-items:center;
  gap:12px; padding:26px 16px 22px; text-align:center;
  background:#fff; border:1px solid var(--line); border-radius:14px;
  transition:transform .25s var(--ease), border-color .25s var(--ease),
             box-shadow .25s var(--ease); }
.dlw-btn:hover{ transform:translateY(-3px); border-color:rgba(239,22,27,.45);
  box-shadow:0 22px 40px -28px rgba(162,32,39,.6); }
.dlw-ico{ width:64px; height:64px; flex:none; display:grid; place-items:center;
  border-radius:18px; color:#fff;
  box-shadow:0 10px 20px -12px rgba(17,20,23,.45),
             inset 0 1px 0 rgba(255,255,255,.35); }
.dlw-svg{ width:32px; height:32px; display:block; }
.dlw-ico.is-win{ background:linear-gradient(145deg,#2E9BF5,#0B62C4); }
.dlw-ico.is-mac{ background:linear-gradient(145deg,#5A6672,#232A31); }
.dlw-ico.is-linux{ background:linear-gradient(145deg,#FFD24D,#EFA91A); color:#3B2E00; }
.dlw-meta{ display:flex; flex-direction:column; align-items:center; line-height:1.25; min-width:0; }
.dlw-meta b{ font-size:14.5px; font-weight:600; color:var(--ink); letter-spacing:-.01em; }
.dlw-meta i{ font-style:normal; font-size:11.5px; color:var(--ink-3); margin-top:5px; }
.dlw-tag{ display:none; position:absolute; top:10px; right:10px; font-style:normal;
  font-size:10px; color:var(--accent); background:var(--accent-wash);
  border:1px solid rgba(162,32,39,.18); padding:2px 7px; border-radius:999px; white-space:nowrap; }
.dlw-btn.is-current{ border-color:rgba(239,22,27,.55); background:#FCFEFD; }
.dlw-btn.is-current .dlw-tag{ display:inline-block; }
.dlw-arrow{ position:absolute; right:12px; bottom:12px; color:#C2CBD2;
  opacity:0; transform:translateY(-2px); transition:opacity .25s, transform .25s var(--ease); }
.dlw-arrow svg{ width:14px; height:14px; display:block; }
.dlw-btn:hover .dlw-arrow{ opacity:1; transform:none; color:var(--accent); }
.dlw-more{ margin-top:20px; }
@media (max-width:720px){
  .dlw-row{ grid-template-columns:1fr; max-width:100%; gap:10px; }
  .dlw-btn{ flex-direction:row; justify-content:flex-start; text-align:left; gap:14px;
    padding:16px 18px; }
  .dlw-ico{ width:52px; height:52px; border-radius:15px; }
  .dlw-svg{ width:26px; height:26px; }
  .dlw-meta{ align-items:flex-start; }
  .dlw-tag{ position:static; margin-left:auto; }
  .dlw-arrow{ position:static; margin-left:8px; opacity:1; transform:none; }
}
.nx-cta .steps{ display:flex; gap:14px; justify-content:center; flex-wrap:wrap; margin-top:26px; }
.nx-cta .steps li{ display:flex; align-items:center; gap:8px; list-style:none; font-size:13.5px; color:var(--ink-2); }
.nx-cta .steps b{ font-family:var(--mono); color:var(--accent); }
.nx-cta .notes{ display:flex; gap:10px; justify-content:center; align-items:center; margin-top:24px;
  font-size:12.5px; color:var(--ink-3); flex-wrap:wrap; }
.nx-cta .notes i{ width:3px; height:3px; border-radius:50%; background:var(--line); }

/* ---------- 10. FOOTER（已统一为白底） ---------- */
.nx-footer{ background:#fff; color:var(--ink-2); padding:64px 0 30px; border-top:1px solid var(--line); }
.nx-footer .cols{ display:grid; grid-template-columns:1.7fr 1fr 1fr 1fr; gap:30px; }
.nx-footer .brand{ display:flex; align-items:center; gap:10px; }
.nx-footer .brand .mark{ width:30px; height:30px; }
.nx-footer .brand b{ color:var(--ink); font-size:15px; }
.nx-footer .brand span{ display:block; font-family:var(--mono); font-size:10px; color:var(--ink-3); letter-spacing:.06em; }
.nx-footer p.desc{ font-size:13px; line-height:1.7; margin:14px 0; max-width:36ch; }
.nx-footer h4{ color:var(--ink); font-size:14px; margin:0 0 12px; }
.nx-footer .col a:not(.brand){ display:block; font-size:13px; color:var(--ink-2); padding:5px 0; transition:color .2s; }
.nx-footer .col a:not(.brand):hover{ color:var(--accent); }
.nx-footer .bot{ display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; margin-top:40px;
  padding-top:22px; border-top:1px solid var(--line); font-size:12px; color:var(--ink-3); }

/* ---------- 11. 返回顶部 ---------- */
.nx-top{ position:fixed; right:22px; bottom:22px; width:46px; height:46px; border-radius:50%;
  background:#fff; border:1px solid var(--line); box-shadow:0 10px 26px -12px rgba(162,32,39,.5);
  display:grid; place-items:center; cursor:pointer; opacity:0; transform:translateY(12px) scale(.9);
  pointer-events:none; transition:opacity .3s, transform .3s; z-index:50; color:var(--accent); }
.nx-top.show{ opacity:1; transform:none; pointer-events:auto; }
.nx-top svg{ width:20px; height:20px; }

/* ---------- 12. 聚光灯 / 3D 倾斜 ---------- */
[data-spot]{ position:relative; }
[data-spot]::before{ content:""; position:absolute; inset:0; border-radius:inherit;
  background:radial-gradient(220px circle at var(--mx,50%) var(--my,50%), rgba(239,22,27,.10), transparent 60%);
  opacity:0; transition:opacity .3s; pointer-events:none; }
[data-spot]:hover::before{ opacity:1; }
.nx-card.nx-tilt{ transform:perspective(900px) translateY(var(--ty,0)) rotateX(var(--rx,0)) rotateY(var(--ry,0));
  transform-style:preserve-3d; transition:transform .25s var(--ease); will-change:transform; }
.nx-card.nx-tilt:hover{ transform:perspective(900px) translateY(var(--ty,-4px)) rotateX(var(--rx,0)) rotateY(var(--ry,0)); }

/* ---------- 13. 滚动浮现 / 错峰 ---------- */
.nx-reveal{ opacity:0; transform:translateY(26px); transition:opacity .8s var(--ease), transform .8s var(--ease); }
.nx-reveal.show{ opacity:1; transform:none; }
.nx-reveal .nx-up{ opacity:0; transition:opacity .6s var(--ease); transition-delay:var(--d,0ms); }
.nx-reveal.show .nx-up{ opacity:1; }

/* ---------- 14. 关键帧 ---------- */
@keyframes nx-shimmer{ to{ background-position:200% center; } }
@keyframes nx-float1{ 0%,100%{ transform:translate(0,0); } 50%{ transform:translate(30px,20px); } }
@keyframes nx-float2{ 0%,100%{ transform:translate(0,0); } 50%{ transform:translate(-26px,16px); } }
@keyframes nx-bob{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(4px); } }
@keyframes nx-pulse{ 0%,100%{ opacity:.4; transform:translateY(0); } 50%{ opacity:1; transform:translateY(3px); } }
@keyframes nx-floaty{ 0%,100%{ transform:translateY(0); } 50%{ transform:translateY(-5px); } }

/* ---------- 15. 响应式 ---------- */
@media (max-width:980px){
  .nx-grid.cols3, .nx-grid.cols4{ grid-template-columns:repeat(2,1fr); }
  .nx-bento{ grid-template-columns:repeat(2,1fr); }
  .nx-bento .nx-glass, .nx-bento .nx-glass.wide, .nx-bento .nx-glass.full{ grid-column:span 2; }
  .nx-head.grid2{ grid-template-columns:1fr; }
  .nx-principles{ grid-template-columns:repeat(2,1fr); }
  .nx-footer .cols{ grid-template-columns:1fr 1fr; }
  body.home .nx-try{ grid-template-columns:1fr; }
}
/* ---------- 移动端专项：更紧凑的节奏与可读性 ---------- */
@media (max-width:760px){
  .nx-sec{ padding:64px 0; }
  .nx-head{ margin-bottom:30px; gap:12px; }
  .nx-lead{ font-size:15px; line-height:1.8; }
  .nx-hero{ padding-top:calc(var(--nav-h) + 48px); padding-bottom:56px; }
  .nx-sub{ margin-top:18px; }
  .nx-cta-row{ margin-top:26px; gap:12px; }
  .nx-card{ padding:20px; }
  .nx-card h3{ font-size:16.5px; }
  .nx-glass{ padding:20px; }
  .nx-stats{ margin-top:34px; }
  .nx-stat{ padding:18px 10px; }
  .nx-shot{ margin-top:34px; }
  .nx-models{ gap:10px; }
  .nx-brand{ padding:11px 12px; }
  .nx-table{ min-width:640px; }
  .nx-table-hint{ display:block; margin:10px 0 0; font-size:12px; color:var(--ink-3);
    text-align:center; letter-spacing:.02em; }
  .nx-footer{ padding:48px 0 24px; }
  .nx-footer .cols{ gap:26px; }
  .nx-footer .bot{ margin-top:28px; padding-top:18px; }
  .dlw-row{ margin-top:26px; }
  .nx-cta .steps{ gap:10px; margin-top:20px; }
  .nx-cta .notes{ margin-top:18px; }
}

@media (max-width:640px){
  .nx-grid.cols2, .nx-grid.cols3, .nx-grid.cols4{ grid-template-columns:1fr; }
  .nx-stats{ grid-template-columns:repeat(2,1fr); }
  .nx-stat:nth-child(2){ border-right:0; }
  .nx-bento{ grid-template-columns:1fr; }
  .nx-bento .nx-glass{ grid-column:span 1 !important; }
  .nx-scene{ grid-template-columns:40px 1fr; }
  .nx-scene .out{ grid-column:2; }
  .nx-principles{ grid-template-columns:1fr; }
  .nx-footer .cols{ grid-template-columns:1fr; }
}

/* ---------- 16. 减弱动效偏好 ---------- */
@media (prefers-reduced-motion: reduce){
  .nx-reveal, .nx-reveal .nx-up{ opacity:1 !important; transform:none !important; transition:none !important; }
  .grad{ animation:none; }
  .nx-hero-bg .gx, .nx-link svg, .nx-conn::before, .nx-brand.float{ animation:none !important; }
  .wm-badge::after{ display:none; }
  .wm-badge{ opacity:1 !important; scale:1 !important; animation:none !important; }
  .wm-badge .ic{ animation:none !important; opacity:0 !important; }
  .wm-badge .ic:nth-of-type(1){ opacity:1 !important; }
  .wm-ready .ch{ opacity:1 !important; transform:none !important;
    filter:none !important; animation:none !important; }
  *{ scroll-behavior:auto !important; }
}

/* =========================================================
   17. 与 site.css 旧版遗留规则隔离
   site.css 末尾有一批针对旧版首页的 !important 全局压制规则
   （如 main .btn-solid / main .btn-ghost
   的圆角与背景清空）。新版首页在这里按自身设计
   重新声明，避免深色区块里的按钮变成「白底白字」而看不清。
   ========================================================= */
body.home .nx-hero .btn-solid,
body.home .nx-cta .btn-solid{
  border-radius:10px !important;
  background-image:none !important;
  background-color:var(--accent) !important;
  color:#fff !important;
}
body.home .nx-hero .btn-solid:hover,
body.home .nx-cta .btn-solid:hover{
  background-color:var(--accent-2) !important;
}
body.home .nx-cta .btn-ghost{
  border-radius:10px !important;
  border-color:#D5DCD8 !important;
  padding:9px 18px !important;
  font-size:13.5px !important;
  background:#fff !important;
  border:1px solid var(--line) !important;
  color:var(--ink) !important;
}
body.home .nx-cta .btn-ghost:hover{
  background:#fff !important;
  border-color:var(--accent) !important;
  color:var(--accent) !important;
}
/* 页脚第一栏：site.css 的 .brand 是横排 flex，直接加在栏容器上会把
   品牌、简介、站点链接压成一行窄条，这里改回竖排布局。 */
body.home .nx-footer .col.brand{
  display:block !important;
}
/* 深色页脚里的品牌图形不要旧版的白色方块底 */
body.home .nx-footer .brand .mark{
  background:transparent !important;
  border-color:transparent !important;
  padding:0 !important;
  width:32px !important; height:32px !important;
}


/* =========================================================
   18. 视觉精修（编辑感 + 柔和层次）
   —— 只增强首页观感，不改动结构与信息层级
   ========================================================= */

/* 18.1 章节标题：右侧超大描边序号，填补单栏后的右侧空白 */
.nx-head{ position:relative; }
.nx-head > *{ position:relative; z-index:1; }
.nx-head[data-num]::after{
  content:attr(data-num);
  position:absolute; right:-2px; top:-.14em; z-index:0;
  font-family:var(--mono); font-weight:700; font-size:clamp(58px,8.6vw,124px);
  line-height:.76; letter-spacing:-.05em;
  color:transparent; -webkit-text-stroke:1px rgba(162,32,39,.15);
  pointer-events:none; user-select:none;
}
/* 序号徽标：把索引做成小胶囊，和主色呼应 */
.nx-kicker .idx{ color:var(--accent); background:var(--accent-wash);
  border:1px solid rgba(162,32,39,.14); padding:1px 6px; border-radius:5px;
  font-size:10.5px; letter-spacing:.02em; line-height:1.5; }
.nx-lead{ text-wrap:pretty; }

/* 18.2 卡片：图标渐变底 + 内描边；编号做小标签 */
.nx-card .ic, .nx-glass .ic{
  background:linear-gradient(145deg, rgba(239,22,27,.16), rgba(162,32,39,.04));
  box-shadow:inset 0 0 0 1px rgba(162,32,39,.10), 0 1px 2px rgba(162,32,39,.06);
  transition:transform .35s var(--ease), box-shadow .35s var(--ease); }
.nx-card:hover .ic, .nx-glass:hover .ic{
  transform:translateY(-2px) scale(1.04);
  box-shadow:inset 0 0 0 1px rgba(162,32,39,.20), 0 10px 20px -12px rgba(162,32,39,.75); }
.nx-card .num{ display:flex; align-items:center; gap:8px; width:fit-content;
  font-size:11px; color:#8B959C; letter-spacing:.14em; margin-bottom:9px; }
.nx-card .num::before{ content:""; width:14px; height:1px; background:rgba(162,32,39,.38); }

/* 18.3 模型墙：logo 统一进浅色芯片，光学尺寸一致，整墙更整齐 */
.nx-brand{ padding:12px 13px; }
.nx-brand .logo{ width:34px; height:34px; border-radius:10px;
  background:linear-gradient(180deg,#FCFDFD,#F6F9F8);
  border:1px solid #F4F0F0; box-shadow:inset 0 1px 0 #fff;
  transition:background .3s, border-color .3s, transform .3s var(--ease); }
.nx-brand .logo img, .nx-brand .logo svg.lg{ width:20px; height:20px; }
.nx-brand:hover .logo{ background:#fff; border-color:rgba(239,22,27,.32); transform:scale(1.06); }

/* 18.4 场景列表：序号成圆环，悬停浮起并亮起左侧色条 */
.nx-scene{ position:relative; }
.nx-scene::before{ content:""; position:absolute; left:0; top:0; bottom:0; width:3px;
  background:var(--grad); opacity:0; transform:scaleY(.25); transform-origin:50% 50%;
  transition:opacity .3s, transform .35s var(--ease); }
.nx-scene:hover::before{ opacity:1; transform:none; }
.nx-scene .sn{ width:42px; height:42px; display:grid; place-items:center; border-radius:50%;
  border:1px solid rgba(162,32,39,.18); background:#fff; font-size:15px;
  transition:background .3s, color .3s, border-color .3s, box-shadow .3s; }
.nx-scene:hover .sn{ background:var(--accent); color:#fff; border-color:var(--accent);
  box-shadow:0 8px 18px -10px rgba(162,32,39,.9); }
.nx-scene .out{ display:inline-flex; align-items:center; gap:0; justify-self:end;
  font-size:11.5px; line-height:1.5; color:var(--ink-3); background:#fff;
  border:1px solid var(--line-2); padding:5px 12px; border-radius:999px; }

/* 18.5 架构：层级编号 + 流动连线 */
.nx-layer{ padding-left:70px; }
.nx-layer::before{ content:attr(data-l); position:absolute; left:20px; top:19px;
  font-family:var(--mono); font-size:10.5px; font-weight:600; letter-spacing:.04em;
  color:var(--accent); background:var(--accent-wash);
  border:1px solid rgba(162,32,39,.16); padding:2px 6px; border-radius:6px; }
.nx-layer{ position:relative; }
.nx-layer.core{ background:linear-gradient(115deg, rgba(239,22,27,.11), rgba(239,22,27,.02));
  border-color:rgba(239,22,27,.42); box-shadow:0 20px 44px -34px rgba(162,32,39,.85); }
.nx-conn{ position:relative; height:34px; }
.nx-conn::before{ content:""; width:1px; height:100%;
  background:linear-gradient(180deg, rgba(162,32,39,.04), rgba(162,32,39,.55), rgba(162,32,39,.04));
  animation:none; }
.nx-conn::after{ content:""; position:absolute; left:50%; top:0; width:5px; height:5px;
  margin-left:-2.5px; border-radius:50%; background:var(--accent-2);
  box-shadow:0 0 0 3px rgba(239,22,27,.14); animation:nx-flow 2.6s ease-in-out infinite; }
@keyframes nx-flow{
  0%{ top:2px; opacity:0; }
  18%{ opacity:1; }
  82%{ opacity:1; }
  100%{ top:calc(100% - 7px); opacity:0; }
}

/* 18.6 下载区：顶部细光带 + 卡片渐变描边 */
.nx-cta::after{ content:""; position:absolute; left:50%; top:0; transform:translateX(-50%);
  width:min(940px,84%); height:1px;
  background:linear-gradient(90deg, transparent, rgba(162,32,39,.30), transparent); }
.dlw-btn::after{ content:""; position:absolute; inset:-1px; border-radius:15px; padding:1px;
  background:linear-gradient(140deg, rgba(239,22,27,.55), rgba(162,32,39,.04) 48%, rgba(239,22,27,.34));
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude;
  opacity:0; transition:opacity .3s var(--ease); pointer-events:none; }
.dlw-btn:hover::after{ opacity:1; }
.dlw-btn:hover .dlw-ico{ transform:translateY(-2px) scale(1.04); }
.dlw-ico{ transition:transform .3s var(--ease), box-shadow .3s var(--ease); }

/* 18.7 页脚：顶部一层极淡的绿色渐隐，收住整页 */
body.home .nx-footer{ background:linear-gradient(180deg,#FAFCFB 0%, #fff 44%); }

/* 18.8 杂项：选中色与焦点可见性 */
body.home ::selection{ background:rgba(239,22,27,.18); color:var(--ink); }
body.home a:focus-visible, body.home button:focus-visible{
  outline:2px solid rgba(239,22,27,.55); outline-offset:3px; border-radius:8px; }

/* 18.9 响应式：窄屏收起大号序号，压缩层级缩进 */
@media (max-width:900px){
  .nx-head[data-num]::after{ display:none; }
}
@media (max-width:640px){
  .nx-layer{ padding-left:58px; }
  .nx-layer::before{ left:14px; top:17px; }
  .nx-scene .sn{ width:34px; height:34px; font-size:13px; }
  .nx-scene .out{ font-size:11px; padding:4px 9px; }
}
@media (prefers-reduced-motion: reduce){
  .nx-conn::after{ animation:none !important; opacity:1 !important; top:calc(50% - 2.5px) !important; }
}

/* 18.10 表头与条纹：让对比表的三种协作形态更醒目 */
.nx-table thead th{ background:linear-gradient(180deg, rgba(239,22,27,.07), rgba(239,22,27,.02));
  color:var(--ink); font-weight:650; font-size:12px; letter-spacing:.02em;
  border-bottom:1px solid rgba(162,32,39,.20); }
.nx-table thead th:first-child{ color:var(--ink-3); font-weight:500; }
.nx-table tbody tr:nth-child(even){ background:#FCFDFD; }
.nx-table tbody tr:hover{ background:rgba(239,22,27,.045); }
.nx-table tbody th, .nx-table tbody td{ transition:background .2s; }

/* 18.11 灰底区块里的白卡：加深一层柔和投影，增加浮起感 */
.nx-sec.alt .nx-card, .nx-sec.alt .nx-glass, .nx-sec.alt .nx-pitem{
  box-shadow:0 1px 2px rgba(17,20,23,.04), 0 16px 34px -28px rgba(17,20,23,.5); }
.nx-pitem{ transition:transform .3s var(--ease), box-shadow .3s var(--ease), border-color .3s; }
.nx-pitem:hover{ transform:translateY(-3px); border-color:rgba(239,22,27,.35); }

/* 18.12 章节标题入场（由 JS 添加类，脚本不可用时保持可见） */
.nx-head-anim{ opacity:0; transform:translateY(18px);
  transition:opacity .7s var(--ease), transform .7s var(--ease); }
.nx-head-anim.show{ opacity:1; transform:none; }

/* 18.13 能力矩阵下半段（统一调度）与上半段之间加分隔 */
#capabilities .nx-head[style]{ border-top:1px solid var(--line); padding-top:36px; }

/* 18.14 架构层悬停反馈 */
.nx-layer{ transition:border-color .3s var(--ease), box-shadow .3s var(--ease), transform .3s var(--ease); }
.nx-layer:hover{ border-color:rgba(239,22,27,.32); transform:translateX(2px); }

/* 18.15 首屏界面图：悬停轻微上浮 */
.nx-shot{ transition:transform .5s var(--ease), box-shadow .5s var(--ease); }
.nx-shot:hover{ transform:translateY(-4px);
  box-shadow:0 2px 4px rgba(17,20,23,.05),
             0 40px 70px -36px rgba(162,32,39,.48),
             0 80px 130px -70px rgba(162,32,39,.34); }

/* 18.16 四项保障：补上与其它卡片一致的编号语言 */
#capabilities .nx-grid.cols4{ counter-reset:pillar; }
#capabilities .nx-grid.cols4 .nx-glass::before{
  counter-increment:pillar; content:"— 0" counter(pillar);
  display:block; margin-bottom:9px; font-family:var(--mono); font-size:11px;
  letter-spacing:.14em; color:#8B959C;
}

/* 18.17 页脚顶部：一条极淡的品牌色渐变线收口 */
body.home .nx-footer{ position:relative; border-top:0; }
body.home .nx-footer::before{ content:""; position:absolute; left:0; right:0; top:0; height:1px;
  background:linear-gradient(90deg, transparent, rgba(162,32,39,.22) 30%, rgba(239,22,27,.28) 55%, transparent); }

/* 18.18 移动端微调 */
@media (max-width:640px){
  .nx-scene .sn{ align-self:start; margin-top:2px; }
  .nx-layer{ padding-left:52px; }
  .nx-layer::before{ left:12px; }
}

/* 18.19 首屏次要按钮：与主按钮成对，弱化为描边样式 */
.nx-hero .nx-link{ gap:8px; height:44px; padding:0 20px; border-radius:10px; font-size:14px;
  color:var(--ink); background:#fff; border:1px solid var(--line);
  transition:border-color .25s var(--ease), color .25s, background .25s, box-shadow .25s; }
.nx-hero .nx-link:hover{ border-color:rgba(239,22,27,.5); color:var(--accent);
  background:#FCFEFD; box-shadow:0 12px 26px -22px rgba(162,32,39,.9); }
.nx-hero .nx-link svg{ width:15px; height:15px; }

/* =========================================================
   19. 细节补强：下载区底纹、页脚链接、移动端表格首列固定
   ========================================================= */

/* 19.1 下载区：极淡点阵底纹，收尾区块不再是一张纯白 */
.nx-cta{ background-image:none; }
/* 点阵放在伪元素上，并上下渐隐，避免在区块边界出现生硬切边 */
.nx-cta::before{ content:""; position:absolute; inset:0; pointer-events:none;
  background-image:radial-gradient(rgba(162,32,39,.085) 1px, transparent 1.4px);
  background-size:24px 24px; background-position:center;
  -webkit-mask-image:linear-gradient(180deg, transparent 0, #000 16%, #000 74%, transparent 100%);
  mask-image:linear-gradient(180deg, transparent 0, #000 16%, #000 74%, transparent 100%); }
.nx-cta .wrap{ position:relative; z-index:1; }

/* 19.2 页脚链接：hover 时出现短横并右移，反馈更明确 */
body.home .nx-footer .col a:not(.brand){ position:relative; padding-left:0;
  transition:color .22s, padding-left .26s var(--ease); }
body.home .nx-footer .col a:not(.brand)::before{ content:""; position:absolute; left:0; top:50%;
  width:0; height:1px; background:var(--accent); transform:translateY(-50%);
  transition:width .26s var(--ease); }
body.home .nx-footer .col a:not(.brand):hover{ padding-left:11px; color:var(--accent); }
body.home .nx-footer .col a:not(.brand):hover::before{ width:6px; }

/* 19.3 移动端：对比表首列吸附，横向滑动时始终看得到行标题 */
@media (max-width:760px){
  .nx-table thead th:first-child, .nx-table tbody th{
    position:sticky; left:0; z-index:2; background:#FAF7F8;
    box-shadow:1px 0 0 var(--line-2);
  }
  .nx-table thead th:first-child{ background:#F9F5F6; }
}

/* =========================================================
   20. 微信内置浏览器 / 移动端分享适配
   ========================================================= */

/* 20.1 微信抓取用的分享缩略图：移出视口，不参与布局、不参与读屏 */
.wx-share-thumb{ position:absolute; left:-9999px; top:0; width:300px; height:300px;
  overflow:hidden; pointer-events:none; }
.wx-share-thumb img{ display:block; width:300px; height:300px; }

/* 20.2 微信 / 移动端点击不再闪灰色高亮块 */
body.home{ -webkit-tap-highlight-color:transparent; }

/* 20.3 刘海屏与手势条安全区（配合 viewport-fit=cover 生效） */
@supports (padding: env(safe-area-inset-bottom)){
  body.home .nx-footer{ padding-bottom:calc(30px + env(safe-area-inset-bottom)); }
  body.home .nx-top{ bottom:calc(22px + env(safe-area-inset-bottom)); }
  @media (max-width:760px){
    body.home .nx-footer{ padding-bottom:calc(24px + env(safe-area-inset-bottom)); }
  }
}

/* =========================================================
   21. 质感补强：首屏舞台光、灰底底纹、卡片顶线
   ========================================================= */

/* 21.1 首屏界面图下方的一层柔光，让截图"落"在页面上而不是浮着 */
.nx-hero .wrap::after{ content:""; position:absolute; left:50%; bottom:-26px;
  transform:translateX(-50%); width:min(880px,84%); height:200px;
  background:radial-gradient(50% 50% at 50% 50%, rgba(239,22,27,.18), transparent 72%);
  filter:blur(26px); pointer-events:none; z-index:-1; }

/* 21.2 界面窗口：顶栏对比略加强，边框内高光，更像真实窗口 */
.nx-shot{ box-shadow:0 1px 2px rgba(17,20,23,.05),
             0 30px 60px -34px rgba(162,32,39,.42),
             0 60px 110px -60px rgba(162,32,39,.3),
             inset 0 1px 0 #fff; }
.nx-shot-bar{ background:linear-gradient(180deg,#F7FAFB,#FAF8F7); }

/* 21.3 灰底区块：极淡点阵 + 向下渐隐，和下载区形成同一套语言 */
.nx-sec.alt{ position:relative; isolation:isolate; }
.nx-sec.alt::before{ content:""; position:absolute; inset:0; z-index:-1; pointer-events:none;
  background-image:radial-gradient(rgba(162,32,39,.055) 1px, transparent 1.3px);
  background-size:22px 22px;
  -webkit-mask-image:linear-gradient(180deg, rgba(0,0,0,.9) 0%, rgba(0,0,0,.35) 55%, transparent 100%);
  mask-image:linear-gradient(180deg, rgba(0,0,0,.9) 0%, rgba(0,0,0,.35) 55%, transparent 100%); }

/* 21.4 卡片 hover：顶部一道扫描线，呼应"可审计/可回放"的产品气质 */
.nx-card::before{ content:""; position:absolute; left:24px; right:24px; top:-1px; height:2px;
  border-radius:2px; opacity:0; transition:opacity .3s var(--ease); pointer-events:none;
  background:linear-gradient(90deg, transparent, rgba(239,22,27,.7), transparent); }
.nx-card:hover::before{ opacity:1; }

/* 21.6 首屏舞台光略加强，避免完全看不出来 */
.nx-hero .wrap::after{ bottom:-18px; width:min(920px,88%); height:230px;
  background:radial-gradient(50% 50% at 50% 50%, rgba(239,22,27,.26), transparent 72%);
  filter:blur(32px); }

/* 21.5 首屏窗口：1px 渐变描边，代替纯灰边框，细节更耐看 */
.nx-shot{ border:1px solid transparent;
  background:linear-gradient(#fff,#fff) padding-box,
             linear-gradient(135deg, rgba(239,22,27,.42), rgba(162,32,39,.08) 46%, rgba(239,22,27,.28)) border-box; }

/* 21.6 属性列表：行之间加虚线分隔，四条并列信息更好扫读 */
.nx-list div + div{ border-top:1px dashed var(--line-2); padding-top:8px; }

/* 21.7 统一的卡片标题字号（bento 卡片原为 17px，与其它卡片不一致） */
.nx-glass h3{ font-size:18px; font-weight:700; letter-spacing:-.01em; }
.nx-glass p{ font-size:13.8px; }

/* 21.8 返回顶部按钮：外圈滚动进度环 */
.nx-top{ --p:0; }
.nx-top::before{ content:""; position:absolute; inset:-1px; border-radius:50%; pointer-events:none;
  background:conic-gradient(var(--accent) calc(var(--p) * 1turn), rgba(162,32,39,.10) 0);
  -webkit-mask:radial-gradient(circle, transparent 62%, #000 63%);
  mask:radial-gradient(circle, transparent 62%, #000 63%);
  opacity:0; transition:opacity .3s var(--ease); }
.nx-top.show::before{ opacity:1; }

/* =========================================================
   22. 动态特效增强（JS 配合；prefers-reduced-motion 下 JS 直接跳过）
   ========================================================= */

/* 22.1 鼠标聚光灯：JS 给 .nx-glass / .nx-brand / .nx-pitem 加 data-spot，
       复用第 12 节的 [data-spot]::before 径向高亮（这三个类 ::before 空闲） */
.nx-glass, .nx-brand, .nx-pitem{ position:relative; overflow:hidden; }

/* 22.2 首屏截图 3D 微倾（JS 写 inline transform；leave 后交还 CSS） */
.nx-shot{ transition:transform .18s var(--ease), box-shadow .5s var(--ease);
  transform-style:preserve-3d; will-change:transform; }

/* 22.3 章节标题副行：入场时从左向右"擦除"显现（仅在 JS 添加 nx-head-anim 时生效） */
.nx-head-anim .nx-title .dim{ display:inline-block;
  clip-path:inset(-8% 102% -12% 0); transition:clip-path .9s var(--ease) .32s; }
.nx-head-anim.show .nx-title .dim{ clip-path:inset(-8% -4% -12% 0); }

/* 22.4 kicker 短线：随标题入场从 0 长到 26px */
.nx-head-anim .nx-kicker::before{ width:0; transition:width .55s var(--ease) .12s; }
.nx-head-anim.show .nx-kicker::before{ width:26px; }

/* 22.5 主按钮 hover 扫光 */
body.home .nx-hero .btn-solid, body.home .nx-cta .btn-solid{
  position:relative; overflow:hidden; }
body.home .nx-hero .btn-solid::after, body.home .nx-cta .btn-solid::after{
  content:""; position:absolute; top:-10%; left:-65%; width:36%; height:120%;
  background:linear-gradient(100deg, transparent, rgba(255,255,255,.38), transparent);
  transform:skewX(-18deg); transition:left .55s var(--ease); pointer-events:none; }
body.home .nx-hero .btn-solid:hover::after, body.home .nx-cta .btn-solid:hover::after{
  left:125%; }

/* 22.6 场景行 hover：结果胶囊轻微左移，形成"递过来"的动势 */
.nx-scene .out{ transition:transform .3s var(--ease), background .3s; }
.nx-scene:hover .out{ transform:translateX(-4px); }

/* =========================================================
   23. 动效第二批：右侧章节导航条 / 图标弹入 / 词标故障抖动
   ========================================================= */

/* 23.1 右侧章节导航条（桌面；JS 动态生成，点击平滑滚动） */
.nx-rail{ position:fixed; right:16px; top:50%; transform:translateY(-50%); z-index:40;
  display:flex; flex-direction:column; gap:9px; align-items:flex-end; }
.nx-rail .rail-i{ display:flex; align-items:center; gap:8px; cursor:pointer; }
.nx-rail .lb{ font-size:11px; line-height:1.4; color:var(--ink-2); background:#fff;
  border:1px solid var(--line); padding:3px 10px; border-radius:999px; white-space:nowrap;
  opacity:0; transform:translateX(6px); transition:opacity .25s, transform .25s var(--ease);
  box-shadow:0 6px 16px -12px rgba(17,20,23,.5); pointer-events:none; }
.nx-rail .dot{ width:8px; height:8px; border-radius:99px; background:#C6CFD6;
  transition:height .3s var(--ease), background .3s; }
.nx-rail .rail-i:hover .dot{ background:var(--ink-3); }
.nx-rail .rail-i:hover .lb{ opacity:1; transform:none; }
.nx-rail .rail-i.on .dot{ height:20px; background:var(--accent); }
.nx-rail .rail-i.on .lb{ opacity:1; transform:none; color:var(--accent);
  border-color:rgba(162,32,39,.3); }
@media (max-width:1380px){
  .nx-rail{ display:none; }
}
body.menu-open .nx-rail{ display:none; }

/* 23.2 卡片图标：随卡片入场依次弹入（backwards 填充，结束后不影响 hover） */
.nx-reveal .nx-card .ic, .nx-reveal .nx-glass .ic{ opacity:0; transform:scale(.55); }
.nx-reveal.show .nx-card .ic, .nx-reveal.show .nx-glass .ic{
  opacity:1; transform:none;
  animation:nx-icon-pop .55s var(--ease) backwards;
  animation-delay:calc(var(--d, 0ms) + 140ms);
}
@keyframes nx-icon-pop{ from{ opacity:0; transform:scale(.55); } }

/* 23.3 章节大号序号：随标题入场轻微上浮显现 */
.nx-head-anim[data-num]::after{ opacity:0; transform:translateY(18px);
  transition:opacity .8s var(--ease) .1s, transform .8s var(--ease) .1s; }
.nx-head-anim.show[data-num]::after{ opacity:1; transform:none; }

/* 23.4 首屏网格底纹：极缓慢漂移（一个网格周期，无缝循环） */
.nx-hero-bg .grid{ animation:nx-grid-drift 44s linear infinite; }
@keyframes nx-grid-drift{ to{ background-position:38px 38px; } }

/* 23.5 词标故障抖动：每 7 秒一次 150ms 的 RGB 分离抖动（黑客美学，极克制） */
@keyframes nx-glitch{
  0%,96.6%,100%{ text-shadow:none; transform:none; }
  97%{ text-shadow:-2px 0 rgba(255,69,58,.5), 2px 0 rgba(242,82,67,.5);
       transform:translateX(1px) skewX(-2deg); }
  97.7%{ text-shadow:2px 0 rgba(255,69,58,.45), -2px 0 rgba(242,82,67,.45);
         transform:translateX(-1px); }
}

/* =========================================================
   24. 视觉精修 · 层次与收尾
   —— 纯质感与微交互：不新增文案、不改动顶部菜单与章节结构
   ========================================================= */

/* 24.1 白 / 浅灰交替改为上下柔和过渡，去掉生硬的横向切边 */
.nx-sec.alt{
  background:linear-gradient(180deg,
    #fff 0, var(--sec-alt) 88px,
    var(--sec-alt) calc(100% - 88px), #fff 100%);
}
/* 点阵纹理同步上下渐隐，避免在过渡区留下可见的纹理边界 */
.nx-sec.alt::before{
  -webkit-mask-image:linear-gradient(180deg, transparent 0, rgba(0,0,0,.85) 13%, rgba(0,0,0,.3) 58%, transparent 100%);
  mask-image:linear-gradient(180deg, transparent 0, rgba(0,0,0,.85) 13%, rgba(0,0,0,.3) 58%, transparent 100%);
}

/* 24.2 编辑式大号序号：极淡渐变填充 + 一条引导细线，不再是孤立的水印 */
.nx-head[data-num]::after{
  -webkit-text-stroke:1.15px rgba(162,32,39,.30);
  background:linear-gradient(180deg, rgba(162,32,39,.085), rgba(162,32,39,0) 82%);
  -webkit-background-clip:text; background-clip:text;
  text-shadow:0 14px 32px rgba(162,32,39,.055);
}
.nx-head[data-num]::before{
  content:""; position:absolute; z-index:0;
  right:clamp(132px,11.5vw,178px); top:15px;
  width:clamp(36px,6vw,96px); height:1px;
  background:linear-gradient(90deg, transparent, rgba(162,32,39,.30));
  pointer-events:none;
}
@media (max-width:900px){
  .nx-head[data-num]::before{ display:none; }
}

/* 24.3 顶部 2px 滚动进度线（JS 写入 --sp），与返回顶部进度环同一套语言 */
.nxv-prog{
  position:fixed; left:0; top:0; z-index:120; height:2px; width:100%;
  transform:scaleX(var(--sp,0)); transform-origin:0 50%;
  background:linear-gradient(90deg, var(--accent), var(--accent-2));
  box-shadow:0 0 12px rgba(239,22,27,.38);
  opacity:0; transition:opacity .3s var(--ease); pointer-events:none;
}
.nxv-prog.on{ opacity:1; }

/* 24.4 模型墙：一道极淡的扫描光带缓慢掠过，呼应「调度 / 扫描」 */
.nx-models::after{
  content:""; position:absolute; z-index:2; top:-6px; bottom:-6px; left:0; width:34%;
  background:linear-gradient(90deg, transparent,
    rgba(239,22,27,.055) 42%, rgba(239,22,27,.085) 50%, transparent);
  transform:translateX(-105%) skewX(-14deg); pointer-events:none;
  animation:nxv-sweep 12s ease-in-out infinite;
}
@keyframes nxv-sweep{
  0%,10%{ transform:translateX(-105%) skewX(-14deg); opacity:0; }
  20%{ opacity:1; }
  80%{ opacity:1; }
  90%,100%{ transform:translateX(195%) skewX(-14deg); opacity:0; }
}
@media (prefers-reduced-motion: reduce){
  .nx-models::after{ animation:none; opacity:0; }
}

/* 24.5 卡片静态质感：左上角一抹极淡的品牌光，白卡不再是一整块死白 */
.nx-card, .nx-glass, .nx-brand, .nx-pitem{
  background-image:radial-gradient(140% 120% at 0% 0%, rgba(239,22,27,.045), transparent 62%);
}

/* 24.6 下载卡片：hover 时标题转主色、图标磁贴浮起更明确 */
.dlw-btn .dlw-meta b{ transition:color .3s var(--ease); }
.dlw-btn:hover .dlw-meta b{ color:var(--accent); }
.dlw-btn:hover .dlw-ico{ box-shadow:0 14px 26px -14px rgba(162,32,39,.8); }

/* 24.7 页脚收尾：拉宽品牌列、栏目标题短绿线、底部柔光、版权行居中 */
@media (min-width:981px){
  body.home .nx-footer .cols{ grid-template-columns:1.95fr 1fr 1fr 1fr; }
}
body.home .nx-footer .cols, body.home .nx-footer .bot{ position:relative; z-index:1; }
body.home .nx-footer .col h4{ position:relative; padding-left:12px; }
body.home .nx-footer .col h4::before{
  content:""; position:absolute; left:0; top:.55em;
  width:6px; height:2px; border-radius:2px; background:var(--grad);
}
body.home .nx-footer::after{
  content:""; position:absolute; left:50%; bottom:0; transform:translateX(-50%);
  width:min(1000px,86%); height:190px; pointer-events:none;
  background:radial-gradient(50% 100% at 50% 100%, rgba(239,22,27,.10), transparent 72%);
}
body.home .nx-footer .bot{ justify-content:center; text-align:center; letter-spacing:.02em; }

/* 24.8 返回顶部：hover 时箭头轻轻上挑 */
.nx-top svg{ transition:transform .3s var(--ease); }
.nx-top:hover svg{ transform:translateY(-3px); }
@media (prefers-reduced-motion: reduce){
  .nx-top svg{ transition:none; }
  .nx-top:hover svg{ transform:none; }
}

/* =========================================================
   25. 开场「启动 / 打开」序列 + 可重复触发的交互特效
   —— 一次性动画统一用 backwards 填充：动画结束、被禁用或脚本不可用时
      元素都回到 CSS 原始状态（完整可见），不存在"卡在隐藏态"的风险
   —— 解码只改 data-glyph 属性，真实文本始终保留，读屏内容不变
   ========================================================= */

/* 25.1 CRT 开机：一条水平亮线从中间拉开，0.85s 内淡出 */
.nx-hero::after{
  content:""; position:absolute; inset:0; z-index:2; pointer-events:none; opacity:0;
  background:
    linear-gradient(180deg, transparent 0, rgba(239,22,27,.10) 49.7%,
      rgba(255,255,255,.85) 50%, rgba(239,22,27,.10) 50.3%, transparent 100%),
    repeating-linear-gradient(180deg, rgba(162,32,39,.035) 0 1px, transparent 1px 4px);
  animation:nxv-crt .85s ease-out backwards;
}
@keyframes nxv-crt{
  0%{ opacity:0; clip-path:inset(49.9% 0 49.9% 0); }
  18%{ opacity:1; clip-path:inset(0 0 0 0); }
  100%{ opacity:0; clip-path:inset(0 0 0 0); }
}
/* 点击词标重播时用另一个动画名，浏览器才会真正重启这条一次性动画 */
.nx-hero.nxv-reboot::after{ animation:nxv-crt-again .85s ease-out backwards; }
@keyframes nxv-crt-again{
  0%{ opacity:0; clip-path:inset(49.9% 0 49.9% 0); }
  18%{ opacity:1; clip-path:inset(0 0 0 0); }
  100%{ opacity:0; clip-path:inset(0 0 0 0); }
}

/* 25.2 词标字符解码：乱码由伪元素显示，字母本体不变 */
.nx-h1 .wm{ position:relative; }
.wm .ch{ position:relative; }
.wm .ch[data-glyph]{ color:transparent; }
.wm .ch[data-glyph]::before{
  content:attr(data-glyph); position:absolute; inset:0;
  display:grid; place-items:center;
  color:var(--accent); font-weight:700;
  text-shadow:0 0 .22em rgba(239,22,27,.5);
}
/* 字符锁定的瞬间一道短促高亮 */
.wm .ch.locked::after{
  content:""; position:absolute; inset:-.08em -.02em; pointer-events:none;
  background:linear-gradient(180deg, rgba(239,22,27,.22), transparent);
  animation:nxv-lock .5s ease-out forwards;
}
@keyframes nxv-lock{ from{ opacity:1 } to{ opacity:0 } }

/* 25.3 终端光标：开场闪烁，2.4s 后隐去（绝对定位，不占词标宽度） */
.nx-h1 .wm::after{
  content:""; position:absolute; left:calc(100% + .1em); top:50%;
  transform:translateY(-50%); width:.075em; height:.72em; border-radius:1px;
  background:var(--accent); box-shadow:0 0 .18em rgba(239,22,27,.7);
  animation:nxv-caret .7s steps(1,end) 8, nxv-caret-out .4s ease 2.4s forwards;
}
@keyframes nxv-caret{ 0%,49%{ opacity:1 } 50%,100%{ opacity:.12 } }
@keyframes nxv-caret-out{ to{ opacity:0; visibility:hidden } }

/* 25.4 副标题 / 按钮 / 界面窗口：依次揭幕 */
.nx-h1 .cn{ animation:nxv-rise .7s var(--ease) .45s backwards; }
.nx-sub{ animation:nxv-rise .7s var(--ease) .62s backwards; }
.nx-cta-row{ animation:nxv-rise .7s var(--ease) .78s backwards; }
@keyframes nxv-rise{ from{ opacity:0; transform:translateY(14px); filter:blur(3px) } }

.nx-shot{ animation:nxv-open .9s var(--ease) .95s backwards; }
@keyframes nxv-open{
  from{ clip-path:inset(0 0 100% 0); opacity:.2; }
  60%{ opacity:1; }
  to{ clip-path:inset(0 0 0 0); opacity:1; }
}
/* 截图上一道自上而下的扫描光带，像窗口被"点亮" */
.nx-shot::after{
  content:""; position:absolute; left:0; right:0; top:0; height:120px; z-index:3;
  pointer-events:none; opacity:0;
  background:linear-gradient(180deg, transparent,
    rgba(239,22,27,.11) 68%, rgba(239,22,27,.32) 94%, transparent);
  animation:nxv-shot-scan 1.05s ease-in-out 1.35s backwards;
}
@keyframes nxv-shot-scan{
  0%{ opacity:0; transform:translateY(-120px); }
  20%{ opacity:1; }
  85%{ opacity:1; }
  100%{ opacity:0; transform:translateY(760px); }
}
/* 顶栏三个圆点依次点亮（无 fill，延迟期间保持原来的灰色） */
.nx-shot-bar .dots i{ animation:nxv-dot .5s ease-out; }
.nx-shot-bar .dots i:nth-child(1){ animation-delay:1.05s; }
.nx-shot-bar .dots i:nth-child(2){ animation-delay:1.13s; }
.nx-shot-bar .dots i:nth-child(3){ animation-delay:1.21s; }
@keyframes nxv-dot{
  0%,100%{ background:#D8DEE4; box-shadow:none; transform:none; }
  40%{ background:var(--accent-2); box-shadow:0 0 0 4px rgba(239,22,27,.16); transform:scale(1.3); }
}

/* 25.5 词标 hover：一道绿光扫过
   注意：不要用 .ch 的 animation 做 wave —— 会覆盖 wm-in / nx-glitch，
   鼠标移开后整词会重新播一遍模糊入场。改用容器伪元素，互不干扰。 */
.nx-h1 .wm::before{
  content:""; position:absolute; top:-.06em; bottom:-.06em; left:0; width:14%;
  z-index:2; pointer-events:none; opacity:0;
  background:linear-gradient(90deg, transparent, rgba(239,22,27,.18), transparent);
  transform:translateX(-120%) skewX(-14deg);
}
@media (hover:hover) and (pointer:fine){
  .nx-h1 .wm{ cursor:pointer; }
  .nx-h1 .wm:hover::before{ animation:nxv-wave-sweep .8s ease-out; }
}
@keyframes nxv-wave-sweep{
  0%{ opacity:0; transform:translateX(-120%) skewX(-14deg); }
  18%{ opacity:1; }
  82%{ opacity:1; }
  100%{ opacity:0; transform:translateX(820%) skewX(-14deg); }
}

/* 25.6 首屏背景：跟随指针的柔光（JS 写 --px / --py） */
.nx-hero-bg::after{
  content:""; position:absolute; inset:0; pointer-events:none; opacity:0;
  background:radial-gradient(340px circle at var(--px,50%) var(--py,35%),
    rgba(239,22,27,.10), transparent 70%);
  transition:opacity .5s var(--ease);
}
.nx-hero-bg.on-spot::after{ opacity:1; }

/* 25.7 按钮点击涟漪 */
.nx-hero .nx-link{ position:relative; overflow:hidden; }
.nxv-ripple{
  position:absolute; border-radius:50%; transform:scale(0); pointer-events:none;
  animation:nxv-ripple .6s ease-out forwards;
}
.nx-hero .btn-solid .nxv-ripple{
  background:radial-gradient(circle, rgba(255,255,255,.5), rgba(255,255,255,0) 70%); }
.nx-hero .nx-link .nxv-ripple{
  background:radial-gradient(circle, rgba(239,22,27,.22), rgba(239,22,27,0) 70%); }
@keyframes nxv-ripple{ to{ transform:scale(1); opacity:0 } }

/* 25.8 减弱动效：整组开场特效关闭，元素直接呈现终态 */
@media (prefers-reduced-motion: reduce){
  .nx-hero::after, .nx-h1 .wm::after, .nx-h1 .wm::before,
  .nx-shot::after, .nx-hero-bg::after, .nxv-ripple{ display:none !important; }
  .nx-shot, .nx-h1 .cn, .nx-sub, .nx-cta-row,
  .nx-shot-bar .dots i{ animation:none !important; }
  .wm .ch[data-glyph]{ color:inherit !important; }
  .wm .ch[data-glyph]::before{ display:none !important; }
  .nx-hero-bg::after{ transition:none !important; }
}

/* =========================================================
   26. 中段区块交互特效（脚本挂类，纯装饰）
   —— 全部由 JS 动态插入元素 / 挂类：无脚本、减弱动效时页面保持第 25 节终态
   —— 不动 .nx-brand 的 transform / animation：它同时被 .float 与 :hover 使用，
      一旦覆盖会让磁贴停浮、鼠标移开后跳回；新效果一律放在独立子元素或伪元素上
   ========================================================= */

/* 26.1 模型墙「调度激活波」：点一枚磁贴，光环按距离向外依次亮起 */
.nxw-pulse{
  position:absolute; inset:0; border-radius:inherit; pointer-events:none; opacity:0;
  border:1px solid rgba(239,22,27,.72);
  /* BUGFIX: 父级 .nx-brand{overflow:hidden} 会裁掉子层的外发光，改用更实的内部发光 */
  box-shadow:inset 0 0 0 1px rgba(239,22,27,.22), inset 0 0 26px rgba(239,22,27,.16);
  background:linear-gradient(115deg, rgba(239,22,27,.18), transparent 58%);
}
.nx-brand.nxw-on .nxw-pulse{
  animation:nxw-pulse .8s ease-out var(--dl,0ms) backwards;
}
@keyframes nxw-pulse{
  0%{ opacity:0; transform:scale(.93); }
  26%{ opacity:1; transform:scale(1); }
  100%{ opacity:0; transform:scale(1.05); }
}
/* 从点击点扩散的一圈冲击波：用 clip-path 裁剪，不会撑出文档造成横向溢出 */
.nx-models.nxw-burst::before{
  content:""; position:absolute; inset:0; z-index:3; pointer-events:none;
  background:radial-gradient(circle at var(--bx,50%) var(--by,50%),
    rgba(239,22,27,.13), rgba(239,22,27,.035) 34%, transparent 66%);
  clip-path:circle(0% at var(--bx,50%) var(--by,50%));
  animation:nxw-burst .95s ease-out forwards;
}
@keyframes nxw-burst{
  from{ clip-path:circle(0% at var(--bx,50%) var(--by,50%)); opacity:1; }
  to{ clip-path:circle(150% at var(--bx,50%) var(--by,50%)); opacity:0; }
}
/* 26.2 指针邻近点亮：靠近指针的磁贴同步透出一层极淡的绿边 */
.nx-models.nxw-near .nx-brand{ cursor:crosshair; }
.nx-models.nxw-near .nx-brand::after{
  content:""; position:absolute; inset:0; border-radius:inherit; pointer-events:none;
  box-shadow:inset 0 0 0 1px rgba(239,22,27,.42), inset 0 0 22px rgba(239,22,27,.07);
  opacity:var(--near,0); transition:opacity .16s linear;
}

/* 26.3 架构四层「逐层通电」：进入视口时 L1→L4 依次亮边 + 一道光带扫过 */
.nxw-scan{
  position:absolute; inset:0; border-radius:inherit; pointer-events:none; opacity:0;
  border:1px solid transparent;
  background:linear-gradient(100deg, transparent 34%, rgba(239,22,27,.17) 50%, transparent 66%);
  background-size:240% 100%;
}
.nx-layers.nxw-on .nxw-scan{
  animation:nxw-power 1.05s ease-out var(--dl,0ms) backwards;
}
@keyframes nxw-power{
  0%{ opacity:0; background-position:180% 0; border-color:transparent; }
  22%{ opacity:1; border-color:rgba(239,22,27,.55); box-shadow:inset 0 0 0 3px rgba(239,22,27,.09); }
  100%{ opacity:0; background-position:-80% 0; border-color:rgba(239,22,27,.16); box-shadow:none; }
}
/* 通电后连线上的流光点更亮，呼应「JSONL 事件开始流动」 */
.nx-layers.nxw-on .nx-conn::after{
  box-shadow:0 0 0 3px rgba(239,22,27,.14), 0 0 10px rgba(239,22,27,.42); }
/* 核心引擎层：极缓的呼吸光环 */
.nx-layer.core::after{
  content:""; position:absolute; inset:-1px; border-radius:inherit; pointer-events:none;
  animation:nxw-breathe 4.8s ease-in-out infinite;
}
@keyframes nxw-breathe{
  0%,100%{ box-shadow:0 0 0 0 rgba(239,22,27,0); }
  50%{ box-shadow:0 0 0 3px rgba(239,22,27,.10), 0 0 26px rgba(239,22,27,.10); }
}

/* 26.4 场景列表「执行进度」：左侧轨道自上而下填充，五个节点依次点亮 */
.nx-scenes{ position:relative; }
.nxw-track{
  position:absolute; left:0; top:0; bottom:0; width:2px; z-index:2; pointer-events:none;
  background:linear-gradient(180deg, var(--accent), var(--accent-2));
  box-shadow:0 0 10px rgba(239,22,27,.35);
  transform:scaleY(0); transform-origin:50% 0;
}
.nx-scenes.nxw-on .nxw-track{
  animation:nxw-fill 1.3s cubic-bezier(.22,.62,.24,1) forwards;
}
@keyframes nxw-fill{ from{ transform:scaleY(0) } to{ transform:scaleY(1) } }
.nx-scenes.nxw-on .nx-scene .sn{
  animation:nxw-node .62s ease-out var(--dl,0ms) backwards;
}
@keyframes nxw-node{
  0%,100%{ box-shadow:none; }
  42%{ box-shadow:0 0 0 5px rgba(239,22,27,.15), 0 8px 18px -10px rgba(162,32,39,.8);
       border-color:var(--accent); }
}

/* 26.5 界面截图「取证准星」：指针进入截图时出现十字测量线与取景框 */
.nxw-reticle{
  position:absolute; inset:0; z-index:4; pointer-events:none;
  opacity:0; transition:opacity .25s var(--ease);
  background:
    linear-gradient(90deg,
      transparent calc(var(--cx,50%) - .5px), rgba(239,22,27,.22) calc(var(--cx,50%) - .5px),
      rgba(239,22,27,.22) calc(var(--cx,50%) + .5px), transparent calc(var(--cx,50%) + .5px)),
    linear-gradient(180deg,
      transparent calc(var(--cy,50%) - .5px), rgba(239,22,27,.22) calc(var(--cy,50%) - .5px),
      rgba(239,22,27,.22) calc(var(--cy,50%) + .5px), transparent calc(var(--cy,50%) + .5px));
}
.nxw-reticle.on{ opacity:1; }
.nxw-reticle::before{
  content:""; position:absolute; left:var(--cx,50%); top:var(--cy,50%);
  width:26px; height:26px; margin:-13px 0 0 -13px; border-radius:3px;
  border:1px solid rgba(239,22,27,.62);
  box-shadow:0 0 0 1px rgba(255,255,255,.6), 0 0 14px rgba(239,22,27,.32);
}
.nxw-reticle::after{
  content:""; position:absolute; left:var(--cx,50%); top:var(--cy,50%);
  width:4px; height:4px; margin:-2px 0 0 -2px; border-radius:50%;
  background:var(--accent); box-shadow:0 0 8px rgba(239,22,27,.85);
}

/* 26.6 截图顶栏「运行中」状态灯：一颗缓慢呼吸的绿点 */
.nx-shot-tag{ display:inline-flex; align-items:center; gap:6px; }
.nx-shot-tag::before{
  content:""; width:5px; height:5px; flex:none; border-radius:50%;
  background:var(--accent); animation:nxw-live 2.4s ease-in-out infinite;
}
@keyframes nxw-live{
  0%,100%{ box-shadow:0 0 0 0 rgba(239,22,27,.38); opacity:.75; }
  50%{ box-shadow:0 0 0 4px rgba(239,22,27,0); opacity:1; }
}

/* 26.7 减弱动效：整组新特效退出，状态灯退化为静态小点 */
@media (prefers-reduced-motion: reduce){
  .nxw-pulse, .nxw-scan, .nxw-track, .nxw-reticle,
  .nx-models.nxw-burst::before, .nx-layer.core::after{ display:none !important; }
  .nx-shot-tag::before{ animation:none !important; box-shadow:none !important; opacity:1; }
}
/* 26.8 BUGFIX: 窄屏兜底 —— 即便指针能力中途变化，也不残留桌面专属装饰 */
@media (max-width:980px){
  .nx-models.nxw-near .nx-brand{ cursor:default; }
  .nx-models.nxw-near .nx-brand::after{ display:none; }
  .nxw-reticle{ display:none !important; }
}

/* =========================================================
   27. 第三轮特效：卡片流光边 / 章节切换脉冲 / 下载扫描 /
       盾牌描边 / 终端光标 / 导航脉冲
   全部纯装饰，由 JS 动态挂类或插元素；无 JS / 减弱动效时自动不出现
   ========================================================= */

/* 27.1 卡片「信号流光边」：hover 时一圈极淡的品牌光沿 1px 边框缓慢流转 */
@property --nxq-ang{ syntax:"<angle>"; initial-value:0deg; inherits:false; }
.nxq-edge{
  position:absolute; inset:0; z-index:1; border-radius:inherit; pointer-events:none;
  padding:1px; opacity:0; transition:opacity .35s var(--ease);
  background:conic-gradient(from var(--nxq-ang),
    transparent 0 76%, rgba(239,22,27,.26) 84%,
    rgba(239,22,27,.82) 89%, rgba(239,22,27,.26) 94%, transparent 100%);
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor; mask-composite:exclude;
  animation:nxq-spin 3.4s linear infinite paused;
}
.nx-card:hover .nxq-edge, .nx-glass:hover .nxq-edge{
  opacity:1; animation-play-state:running;
}
@keyframes nxq-spin{ to{ --nxq-ang:360deg; } }

/* 27.2 顶栏「章节切换」：每翻过一个章节，导航底线亮光从左到右扫一次 */
.nxq-chapter{
  position:absolute; left:0; right:0; bottom:0; height:2px; z-index:2;
  pointer-events:none; opacity:0; transform:translateX(-100%);
  background:linear-gradient(90deg, transparent, rgba(239,22,27,.85), transparent);
}
.nxq-chapter.on{ animation:nxq-chapter .85s ease-out; }
@keyframes nxq-chapter{
  0%{ transform:translateX(-100%); opacity:0; }
  20%{ opacity:1; }
  100%{ transform:translateX(100%); opacity:0; }
}

/* 27.3 下载卡片：hover 时图标磁贴自上而下扫过一道光，箭头顺势下沉 */
.dlw-ico{ position:relative; overflow:hidden; }
.dlw-ico::after{
  content:""; position:absolute; left:0; right:0; top:-45%; height:45%;
  pointer-events:none; opacity:0;
  background:linear-gradient(180deg, transparent, rgba(255,255,255,.62), transparent);
}
.dlw-btn:hover .dlw-ico::after{ animation:nxq-dlscan .9s ease-out; }
@keyframes nxq-dlscan{
  0%{ top:-45%; opacity:0; }
  18%{ opacity:.85; }
  100%{ top:110%; opacity:0; }
}
.dlw-btn:hover .dlw-arrow{ transform:translateY(2px); }

/* 27.4 页脚盾牌：进入视口时三条路径依次「描」出来（隐藏态只在 JS 挂类后出现） */
body.home .nx-footer .brand.nxq-draw .mark path{
  stroke-dasharray:var(--len,120); stroke-dashoffset:var(--len,120);
  animation:nxq-draw 1.05s ease-out var(--d,0ms) forwards;
}
@keyframes nxq-draw{ to{ stroke-dashoffset:0; } }

/* 27.5 首屏截图顶栏：终端式闪烁光标（纯装饰，不占词标宽度） */
.nx-shot-name::after{
  content:""; display:inline-block; width:5px; height:10px; margin-left:5px;
  vertical-align:-1px; border-radius:1px; background:var(--accent);
  animation:nxq-caret 1.1s steps(1,end) infinite;
}
@keyframes nxq-caret{ 0%,49%{ opacity:.82; } 50%,100%{ opacity:0; } }

/* 27.6 右侧章节导航：当前项向外扩散一枚脉冲环 */
.nx-rail .rail-i.on .dot{ position:relative; }
.nx-rail .rail-i.on .dot::after{
  content:""; position:absolute; inset:-4px; border-radius:99px;
  border:1px solid rgba(239,22,27,.48); pointer-events:none;
  animation:nxq-rail 2.2s ease-out infinite;
}
@keyframes nxq-rail{
  0%{ transform:scale(.6); opacity:.85; }
  100%{ transform:scale(2.3); opacity:0; }
}

/* 27.7 窄屏 / 减弱动效：整组新装饰退出，页面保持原状 */
@media (max-width:980px){
  .nxq-edge, .nxq-chapter{ display:none; }
}
@media (prefers-reduced-motion: reduce){
  .nxq-edge, .nxq-chapter, .dlw-ico::after,
  .nx-shot-name::after, .nx-rail .rail-i.on .dot::after{ display:none !important; }
  body.home .nx-footer .brand .mark path{
    animation:none !important; stroke-dasharray:none !important; stroke-dashoffset:0 !important;
  }
}
