/* ══════════ CTFAgent 站点样式 ══════════ */
:root{
  --bg:#05070c; --bg2:#080611;
  --ink:#e8eef7; --mut:#8b9aae; --dim:#6b7a90;
  --grn:#4ade80; --cyn:#22d3ee; --vio:#a78bfa; --pnk:#f472b6; --amb:#fbbf24;
  --line:rgba(120,170,255,.16);
  --card:linear-gradient(170deg,rgba(22,30,46,.92),rgba(10,14,22,.9));
}
*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
body{
  font-family:"Microsoft YaHei","PingFang SC",system-ui,-apple-system,sans-serif;
  background:var(--bg);color:var(--ink);line-height:1.7;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
}
a{color:inherit;text-decoration:none}
code{font-family:Consolas,"Courier New",monospace;font-size:.92em;
  background:rgba(120,170,255,.1);padding:1px 6px;border-radius:5px;color:#9ecbff}
.wrap{max-width:1180px;margin:0 auto;padding:0 24px}
.grad{background:linear-gradient(94deg,#6ee7ff,#4ade80);
  -webkit-background-clip:text;background-clip:text;color:transparent}
.mut{color:var(--mut)}

/* ── 导航 ── */
.nav{position:fixed;top:0;left:0;right:0;z-index:100;transition:.3s;
  background:rgba(5,7,12,0);backdrop-filter:blur(0)}
.nav.on{background:rgba(5,7,12,.82);backdrop-filter:blur(14px);
  border-bottom:1px solid rgba(120,170,255,.12)}
.nav-in{display:flex;align-items:center;gap:26px;height:66px}
.brand{display:flex;align-items:center;gap:11px}
.logo{width:34px;height:34px;border-radius:9px;display:flex;align-items:center;justify-content:center;
  font:800 12px/1 "PingFang SC",sans-serif;color:#fff;letter-spacing:-.5px;
  background:linear-gradient(135deg,#ff2d95,#a855f7 48%,#22d3ee);
  box-shadow:0 6px 18px rgba(168,85,247,.4)}
.bt{font-size:17px;font-weight:800;letter-spacing:-.3px}
.bt em{font-style:normal;background:linear-gradient(96deg,#ff4fa8,#c084fc 52%,#22d3ee);
  -webkit-background-clip:text;background-clip:text;color:transparent}
.links{display:flex;gap:24px;margin-left:auto;font-size:15px;color:var(--mut)}
.links a:hover{color:var(--ink)}
.cta-mini{padding:8px 18px;border-radius:99px;font-size:14px;font-weight:700;
  background:linear-gradient(96deg,#22d3ee,#4ade80);color:#04121a;
  box-shadow:0 6px 20px rgba(74,222,128,.3)}

/* ── HERO ── */
.hero{position:relative;min-height:auto;padding:104px 0 56px;display:flex;align-items:center;
  padding:110px 0 80px;overflow:hidden}
.glow{position:absolute;border-radius:50%;filter:blur(90px);pointer-events:none}
.g1{width:640px;height:520px;right:-140px;top:-160px;background:rgba(124,58,237,.32)}
.g2{width:520px;height:440px;left:-160px;top:24%;background:rgba(14,165,233,.22)}
.g3{width:620px;height:480px;left:38%;bottom:-240px;background:rgba(236,72,153,.16)}
.grid-bg{position:absolute;inset:0;pointer-events:none;opacity:.5;
  background-image:linear-gradient(rgba(120,180,255,.05) 1px,transparent 1px),
                   linear-gradient(90deg,rgba(120,180,255,.05) 1px,transparent 1px);
  background-size:62px 62px;
  mask-image:radial-gradient(circle at 50% 30%,#000 0%,transparent 72%)}
.hero-in{position:relative;display:grid;grid-template-columns:1.05fr .95fr;gap:56px;align-items:center;width:100%}
.badge{display:inline-flex;align-items:center;gap:9px;padding:7px 15px;border-radius:99px;
  font-size:13.5px;color:#9fd6b6;background:rgba(74,222,128,.09);
  border:1px solid rgba(74,222,128,.26)}
.badge .dot{width:7px;height:7px;border-radius:50%;background:var(--grn);
  box-shadow:0 0 10px var(--grn);animation:pulse 2s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.35}}
.hero h1{font-size:63px;line-height:1.14;font-weight:900;letter-spacing:-2.4px;margin:24px 0 0;
  background:linear-gradient(96deg,#fff 8%,#c3b5ff 44%,#6ee7ff 78%,#4ade80);
  -webkit-background-clip:text;background-clip:text;color:transparent}
.lead{margin-top:22px;font-size:18px;color:#a3b2c6;line-height:1.85}
.lead b{color:var(--ink)}
.hero-btns{display:flex;gap:14px;margin-top:32px;flex-wrap:wrap}
.btn{display:inline-flex;align-items:center;gap:8px;padding:13px 26px;border-radius:99px;
  font-size:16px;font-weight:800;cursor:pointer;border:none;transition:.22s;font-family:inherit}
.btn.primary{background:linear-gradient(96deg,#22d3ee,#4ade80);color:#04121a;
  box-shadow:0 10px 30px rgba(74,222,128,.28)}
.btn.primary:hover{transform:translateY(-2px);box-shadow:0 14px 38px rgba(74,222,128,.4)}
.btn.ghost{background:rgba(255,255,255,.06);color:var(--ink);border:1px solid var(--line)}
.btn.ghost:hover{background:rgba(255,255,255,.11)}
.btn.big{padding:15px 32px;font-size:17px}
.btn:disabled{opacity:.45;cursor:not-allowed;transform:none!important}
.hero-tags{display:flex;gap:10px;margin-top:30px;flex-wrap:wrap;font-size:13.5px;color:var(--mut)}
.hero-tags span{padding:6px 13px;border-radius:99px;background:rgba(255,255,255,.045);
  border:1px solid rgba(120,170,255,.13)}

/* 点墙卡 */
.wall-card{border-radius:24px;padding:26px 26px 22px;border:1px solid var(--line);
  background:linear-gradient(180deg,rgba(14,20,32,.92),rgba(8,11,18,.86));
  box-shadow:0 34px 90px rgba(0,0,0,.6),inset 0 1px 0 rgba(255,255,255,.05)}
.wc-head{display:flex;align-items:baseline;gap:12px;margin-bottom:18px}
.wc-num{font-size:40px;font-weight:900;letter-spacing:-1.4px;line-height:1;color:var(--grn)}
.wc-num i{font-style:normal;font-size:25px;font-weight:700;color:var(--dim)}
.wc-cap{font-size:13px;color:var(--mut)}
.dots{display:grid;grid-template-columns:repeat(30,minmax(0,1fr));gap:4px}
.dots i{width:100%;aspect-ratio:1/1;border-radius:50%;background:rgba(255,255,255,.06);
  transition:background .35s,box-shadow .35s,opacity .35s}
.dots i.on{background:var(--grn);box-shadow:0 0 6px rgba(74,222,128,.5)}
.dots i.fail{background:#8f2f2f!important;box-shadow:0 0 5px rgba(180,60,60,.45)!important;opacity:.75!important}
.wc-legend{display:flex;gap:20px;margin-top:16px;font-size:13px;color:var(--mut);align-items:center}
.wc-legend i{width:9px;height:9px;border-radius:50%;display:inline-block;margin-right:6px}
.wc-legend .gd{background:var(--grn)}.wc-legend .rd{background:#8f2f2f}
.scroll-hint{position:absolute;bottom:26px;left:50%;transform:translateX(-50%);
  color:var(--dim);font-size:20px;animation:bob 2s infinite}
@keyframes bob{0%,100%{transform:translate(-50%,0)}50%{transform:translate(-50%,9px)}}

/* ── 通用 section ── */
.sec{position:relative;padding:70px 0;border-top:1px solid rgba(120,170,255,.08)}
.sec-h{text-align:center;max-width:730px;margin:0 auto 54px}
.kicker{font:700 12px/1 Consolas,monospace;letter-spacing:3px;color:#5f7f9f;margin-bottom:14px}
.sec-h h2{font-size:40px;line-height:1.25;font-weight:900;letter-spacing:-1.4px}
.sec-h h2 b{background:linear-gradient(94deg,#6ee7ff,#4ade80);
  -webkit-background-clip:text;background-clip:text;color:transparent}
.sec-h p{margin-top:14px;font-size:16.5px;color:var(--mut)}

/* KPI */
.kpis{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.kpi{border-radius:18px;padding:26px 22px;text-align:center;border:1px solid var(--line);
  background:var(--card);box-shadow:0 18px 46px rgba(0,0,0,.42)}
.kv{font-size:46px;font-weight:900;letter-spacing:-2px;line-height:1;
  display:flex;align-items:baseline;justify-content:center;gap:2px}
.kv i{font-style:normal;font-size:22px;font-weight:800;color:var(--mut)}
.kpi:nth-child(1) .kv b{background:linear-gradient(96deg,#4ade80,#22d3ee);-webkit-background-clip:text;background-clip:text;color:transparent}
.kpi:nth-child(2) .kv b{background:linear-gradient(96deg,#a78bfa,#f0abfc);-webkit-background-clip:text;background-clip:text;color:transparent}
.kpi:nth-child(3) .kv b{background:linear-gradient(96deg,#fbbf24,#fb923c);-webkit-background-clip:text;background-clip:text;color:transparent}
.kpi:nth-child(4) .kv b{background:linear-gradient(96deg,#38bdf8,#818cf8);-webkit-background-clip:text;background-clip:text;color:transparent}
.kk{margin-top:10px;font-size:13.5px;color:var(--mut)}

/* 五方向 */
.dirs{margin-top:34px;border-radius:18px;padding:28px 30px;border:1px solid rgba(120,170,255,.13);
  background:linear-gradient(170deg,rgba(18,25,38,.9),rgba(9,12,19,.86))}
.dirs-h{font-size:17px;font-weight:800;margin-bottom:20px}
.drow{display:flex;align-items:center;gap:18px;margin-bottom:12px}
.dn{width:92px;font:700 15px/1 Consolas,monospace;color:#c8d4e4}
.dt{flex:1;height:13px;border-radius:99px;background:rgba(255,255,255,.07);overflow:hidden}
.dt i{display:block;height:100%;width:0;border-radius:99px;transition:width 1.2s cubic-bezier(.2,.9,.2,1)}
.dv{width:92px;text-align:right;font:700 15px/1 Consolas,monospace;color:var(--ink)}
.p1 .dt i{background:linear-gradient(90deg,#22d3ee,#4ade80)}
.p2 .dt i{background:linear-gradient(90deg,#a78bfa,#f0abfc)}
.p3 .dt i{background:linear-gradient(90deg,#fbbf24,#fb923c)}
.p4 .dt i{background:linear-gradient(90deg,#f472b6,#fb7185)}
.p5 .dt i{background:linear-gradient(90deg,#38bdf8,#818cf8)}

/* 终端 */
.term{margin-top:34px;border-radius:18px;overflow:hidden;border:1px solid rgba(74,222,128,.22);
  background:linear-gradient(180deg,#08110c,#060a08);box-shadow:0 26px 70px rgba(0,0,0,.55)}
.term-bar{display:flex;align-items:center;gap:9px;padding:13px 20px;
  background:rgba(74,222,128,.07);border-bottom:1px solid rgba(74,222,128,.16)}
.term-bar b{width:11px;height:11px;border-radius:50%}
.term-bar .r{background:#ff5f57}.term-bar .y{background:#febc2e}.term-bar .g{background:#28c840}
.term-bar span{margin-left:12px;font:600 12.5px/1 Consolas,monospace;color:#5f7f6d}
.term-body{padding:18px 22px;font:400 14px/1.95 Consolas,"Courier New",monospace;min-height:180px}
.term-body .ln{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tp{color:var(--grn)}.tn{color:#8fb7ff}.ts{color:var(--grn);font-weight:700}
.td{color:#6b7f92}.tf{color:#ffd166}.tc{color:#38bdf8}.tt2{color:var(--vio)}

/* ══════════ 演示（重构 v2：扁头 + 唯一滚动区 + 右侧折叠） ══════════ */
.sec-demo{background:radial-gradient(700px 400px at 50% 0%,rgba(124,58,237,.1),transparent 70%)}
.demo-box{border-radius:22px;overflow:hidden;border:1px solid var(--line);
  background:rgba(8,11,18,.72);box-shadow:0 30px 80px rgba(0,0,0,.5)}

/* tab */
.tabs{display:flex;gap:6px;padding:12px 14px;background:rgba(255,255,255,.03);
  border-bottom:1px solid rgba(120,170,255,.12);flex-wrap:wrap}
.tab{padding:8px 20px;border-radius:10px;font-size:14.5px;font-weight:700;cursor:pointer;
  color:var(--mut);background:transparent;border:1px solid transparent;transition:.2s;font-family:inherit}
.tab:hover{color:var(--ink);background:rgba(255,255,255,.05)}
.tab.on{color:#04121a;background:linear-gradient(96deg,#22d3ee,#4ade80);
  box-shadow:0 6px 18px rgba(74,222,128,.25)}

/* 扁头一行 */
.dhead{display:flex;align-items:center;gap:18px;padding:16px 20px;
  border-bottom:1px solid rgba(120,170,255,.12);flex-wrap:wrap}
.dh-l{min-width:0}
.dh-name{font-size:20px;font-weight:900;letter-spacing:-.4px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:420px}
.dh-meta{display:flex;gap:7px;margin-top:8px;flex-wrap:wrap}
.dh-meta span{font-size:11.5px;padding:2px 9px;border-radius:99px;
  background:rgba(120,170,255,.12);color:#9ecbff;font-weight:700}
.dh-r{display:flex;align-items:center;gap:14px;margin-left:auto;flex-wrap:wrap}
.gauges{display:flex;gap:16px}
.g{display:flex;align-items:baseline;gap:4px}
.gl{font-size:11px;color:var(--dim)}
.g b{font-size:15.5px;font-weight:800;font-family:Consolas,monospace;color:var(--ink);min-width:44px;display:inline-block}
#gCost{min-width:66px}
.gu{font-size:10.5px;color:var(--dim)}
.iconbtn{padding:13px 16px;font-size:16px;line-height:1}

/* 主体：左步骤流（唯一滚动） + 右说明 */
.dbody{display:grid;grid-template-columns:1fr 330px;height:560px}
.stream{padding:18px 20px;overflow-y:auto;min-width:0}
.stream::-webkit-scrollbar{width:8px}
.stream::-webkit-scrollbar-track{background:transparent}
.stream::-webkit-scrollbar-thumb{background:rgba(120,170,255,.22);border-radius:9px}
.stream::-webkit-scrollbar-thumb:hover{background:rgba(120,170,255,.36)}
.stream-empty{height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;
  gap:14px;color:var(--dim);font-size:14.5px;text-align:center;padding:0 20px}
.se-ico{font-size:40px;opacity:.45}

/* 步骤卡 */
.step{opacity:0;transform:translateY(8px);animation:stepIn .38s forwards;
  margin-bottom:15px;padding-left:13px;border-left:2px solid rgba(120,170,255,.22)}
@keyframes stepIn{to{opacity:1;transform:none}}
.step .sh{display:flex;align-items:center;gap:8px;font-size:11.5px;color:var(--dim);
  font-family:Consolas,monospace;margin-bottom:7px}
.sn2{width:20px;height:20px;border-radius:6px;display:flex;align-items:center;justify-content:center;
  font-size:10.5px;font-weight:800;background:rgba(120,170,255,.16);color:#9ecbff;flex:0 0 20px}
.step .think{padding:10px 13px;border-radius:9px;background:rgba(167,139,250,.09);
  border:1px solid rgba(167,139,250,.2);font-size:13px;color:#c4b5fd;line-height:1.72;
  white-space:pre-wrap;margin-bottom:8px}
.step .note{font-size:13px;color:#a3b2c6;line-height:1.72;margin-bottom:8px;white-space:pre-wrap}
.step .call{display:flex;gap:8px;align-items:flex-start;margin-bottom:6px}
.ct{font:700 11.5px/1.6 Consolas,monospace;color:#4ade80;padding:3px 8px;border-radius:5px;
  background:rgba(74,222,128,.12);flex:0 0 auto}
.cc{font:400 12.5px/1.6 Consolas,monospace;color:#d7e3f0;background:rgba(255,255,255,.035);
  padding:6px 10px;border-radius:6px;flex:1;white-space:pre-wrap;word-break:break-all;min-width:0}
.outwrap{position:relative;margin-bottom:6px}
.out{font:400 12px/1.62 Consolas,monospace;color:#8fa3b8;background:rgba(0,0,0,.42);
  padding:9px 11px;border-radius:7px;white-space:pre-wrap;word-break:break-all;
  border:1px solid rgba(255,255,255,.05);max-height:86px;overflow:hidden;
  transition:max-height .25s}
.out.open{max-height:420px;overflow:auto}
.outopen{display:block;width:100%;margin-top:-6px;margin-bottom:6px;padding:4px;
  font-size:11.5px;color:#7fa8d8;background:rgba(120,170,255,.07);border:1px solid rgba(120,170,255,.14);
  border-radius:6px;cursor:pointer;font-family:inherit}
.outopen:hover{background:rgba(120,170,255,.14)}
.step.final{border-left-color:var(--grn)}
.flagbox{margin-top:8px;padding:13px 15px;border-radius:10px;
  background:linear-gradient(96deg,rgba(74,222,128,.16),rgba(34,211,238,.1));
  border:1px solid rgba(74,222,128,.42);
  font:700 15px/1.6 Consolas,monospace;color:var(--grn);word-break:break-all}

/* 右侧折叠说明 */
.dside{border-left:1px solid rgba(120,170,255,.12);padding:16px 16px 12px;
  overflow-y:auto;background:rgba(255,255,255,.014)}
.dside::-webkit-scrollbar{width:6px}
.dside::-webkit-scrollbar-thumb{background:rgba(120,170,255,.2);border-radius:9px}
.dsec{border:1px solid rgba(120,170,255,.13);border-radius:10px;margin-bottom:10px;
  background:rgba(255,255,255,.022);overflow:hidden}
.dsec summary{padding:10px 13px;font-size:13px;font-weight:800;cursor:pointer;
  color:#c8d4e4;list-style:none;display:flex;align-items:center;gap:7px}
.dsec summary::-webkit-details-marker{display:none}
.dsec summary:before{content:"▸";color:var(--cyn);transition:.2s;font-size:11px}
.dsec[open] summary:before{transform:rotate(90deg)}
.dsec-body{padding:0 13px 12px;font-size:12.5px;color:#93a3bb;line-height:1.72;
  white-space:pre-wrap;word-break:break-word}
.dnote{margin-top:4px;font-size:11px;color:var(--dim);line-height:1.6}

/* 结果条 */
.donebar{padding:0 20px 16px;display:none}
.donebar.on{display:block}
.donebar .db{border-radius:11px;padding:13px 16px;display:flex;gap:20px;flex-wrap:wrap;
  background:linear-gradient(96deg,rgba(74,222,128,.1),rgba(34,211,238,.06));
  border:1px solid rgba(74,222,128,.3);font-size:13.5px}
.donebar .db b{color:var(--grn)}

/* ══════════ 功能 ══════════ */
.fgrid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.fcard{border-radius:20px;padding:26px 24px;border:1px solid var(--line);
  background:var(--card);box-shadow:0 18px 44px rgba(0,0,0,.4);
  transition:.25s;position:relative;overflow:hidden}
.fcard:hover{transform:translateY(-4px);border-color:rgba(120,170,255,.34);
  box-shadow:0 26px 60px rgba(0,0,0,.52)}
.fcard:before{content:"";position:absolute;inset:0;opacity:0;transition:.25s;
  background:radial-gradient(300px 200px at 20% 0%,rgba(110,231,255,.09),transparent 70%)}
.fcard:hover:before{opacity:1}
.fi{font-size:30px;line-height:1;margin-bottom:14px}
.fcard h3{font-size:19.5px;font-weight:800;margin-bottom:10px;letter-spacing:-.3px}
.fcard p{font-size:14.5px;color:#9aa9bd;line-height:1.8}
.fcard p b{color:var(--ink)}
.ftag{display:inline-block;margin-top:14px;font-size:11.5px;font-weight:700;
  padding:4px 12px;border-radius:99px;color:#9ecbff;background:rgba(120,170,255,.12)}
.extras{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-top:20px}
.ex{padding:15px 18px;border-radius:13px;background:rgba(255,255,255,.032);
  border:1px solid rgba(120,170,255,.11)}
.ex b{display:block;font-size:15px;color:var(--ink);margin-bottom:4px}
.ex span{font-size:13px;color:var(--mut)}

/* ══════════ 靶机题 ══════════ */
.tgrid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
.tcard{border-radius:20px;padding:28px 26px;border:1px solid var(--line);
  background:var(--card)}
.tcard h3{font-size:19.5px;font-weight:800;margin-bottom:16px}
.tcard ul{list-style:none}
.tcard li{position:relative;padding-left:22px;margin-bottom:11px;font-size:14.5px;
  color:#9aa9bd;line-height:1.75}
.tcard li:before{content:"▸";position:absolute;left:0;color:var(--cyn)}
.tcard li b{color:var(--ink)}
.video-slot{margin-top:20px;border-radius:20px;padding:34px 30px;display:flex;align-items:center;gap:22px;
  border:1.5px dashed rgba(120,170,255,.28);background:rgba(120,170,255,.04)}
.vs-ico{font-size:38px;opacity:.8}
.vs-t b{display:block;font-size:18px;margin-bottom:6px}
.vs-t span{font-size:14px;color:var(--mut)}
.vs-badge{margin-left:auto;font-size:12.5px;font-weight:700;padding:6px 15px;border-radius:99px;
  color:#fbbf24;background:rgba(251,191,36,.12);border:1px solid rgba(251,191,36,.3)}

/* ══════════ 上手 ══════════ */
.steps3{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.st{border-radius:20px;padding:30px 26px;border:1px solid var(--line);background:var(--card);position:relative}
.sn{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  font:800 19px/1 Consolas,monospace;color:#04121a;margin-bottom:16px;
  background:linear-gradient(135deg,#22d3ee,#4ade80);box-shadow:0 8px 22px rgba(74,222,128,.25)}
.st h3{font-size:18.5px;font-weight:800;margin-bottom:10px}
.st p{font-size:14px;color:#9aa9bd;line-height:1.8}
.req{margin-top:20px;border-radius:20px;padding:26px 28px;border:1px solid rgba(120,170,255,.13);
  background:rgba(255,255,255,.025)}
.req-h{font-size:16px;font-weight:800;margin-bottom:18px}
.req-g{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.req-g div b{display:block;font-size:15px;color:var(--ink);margin-bottom:4px}
.req-g div span{font-size:13px;color:var(--mut)}

/* ══════════ 联系 ══════════ */
.sec-contact{padding:100px 0;
  background:radial-gradient(700px 400px at 50% 50%,rgba(124,58,237,.14),transparent 70%)}
.contact-in{display:grid;grid-template-columns:1fr 320px;gap:50px;align-items:center}
.cl h2{font-size:40px;font-weight:900;letter-spacing:-1.4px;line-height:1.25}
.cl p{margin-top:16px;font-size:16px;color:var(--mut);max-width:520px}
.cstats{display:flex;gap:30px;margin-top:30px;flex-wrap:wrap}
.cstats div b{display:block;font-size:26px;font-weight:900;letter-spacing:-.8px;
  background:linear-gradient(96deg,#6ee7ff,#4ade80);-webkit-background-clip:text;background-clip:text;color:transparent}
.cstats div span{font-size:12.5px;color:var(--dim)}
.qrbox{text-align:center;padding:22px;border-radius:22px;border:1px solid var(--line);
  background:var(--card);box-shadow:0 24px 60px rgba(0,0,0,.45)}
.qrbox img{width:100%;max-width:230px;border-radius:14px;background:#fff;padding:9px;display:block;margin:0 auto}
.qrt{margin-top:14px;font-size:13.5px;color:var(--mut)}
.qrid{margin-top:6px;font:800 20px/1 Consolas,monospace;color:var(--grn)}

/* ── 页脚 ── */
.foot{border-top:1px solid rgba(120,170,255,.1);padding:34px 0}
.foot-in{display:flex;justify-content:space-between;gap:18px;font-size:13px;color:var(--dim);flex-wrap:wrap}

/* ── 进场动画 ── */
/* ★ 只有 JS 正常（html.js）才隐藏待进场元素 ✓
   否则 JS 一挂整站全黑 ✗ 这是个真 bug ✓ */
html.js .reveal{opacity:0;transform:translateY(24px);transition:opacity .7s,transform .7s}
html.js .reveal.in{opacity:1;transform:none}

/* ── 响应式 ── */
@media(max-width:1000px){
  .hero-in{grid-template-columns:1fr;gap:40px}
  .hero h1{font-size:46px}
  .demo-body{grid-template-columns:1fr}
  .dbody{grid-template-columns:1fr;height:auto}
  .dside{border-left:none;border-top:1px solid rgba(120,170,255,.12);max-height:300px}
  .stream{max-height:460px}
  .fgrid,.extras,.steps3,.req-g{grid-template-columns:1fr 1fr}
  .tgrid{grid-template-columns:1fr}
  .kpis{grid-template-columns:1fr 1fr}
  .contact-in{grid-template-columns:1fr;gap:34px}
  .links{display:none}
}
@media(max-width:640px){
  .wrap{padding:0 16px}
  .hero{padding:96px 0 60px}
  .hero h1{font-size:34px;letter-spacing:-1.2px}
  .lead{font-size:15.5px}
  .sec{padding:64px 0}
  .sec-h h2{font-size:27px}
  .sec-h p{font-size:15px}
  .fgrid,.extras,.steps3,.req-g,.kpis{grid-template-columns:1fr}
  .kv{font-size:38px}
  .kv i{font-size:18px}
  .dhead{padding:14px 14px}
  .dh-name{max-width:100%;font-size:17px}
  .dh-r{margin-left:0;width:100%;justify-content:space-between}
  .gauges{gap:10px}
  .g b{font-size:14px}
  .stream{padding:14px;max-height:400px}
  .player{gap:12px;padding:14px 16px}
  .gauges{gap:14px;margin-left:0;width:100%;justify-content:space-between}
  .stream{padding:16px;max-height:none}
  .video-slot{flex-direction:column;text-align:center;gap:14px}
  .vs-badge{margin:0}
  .cstats{gap:20px}
}

/* ★ 点墙整体渐显（纯 CSS ✓ JS 挂了照样亮 ✓） */
@keyframes dotsIn { from { opacity: 0; transform: scale(.985); } to { opacity: 1; transform: none; } }
.dots { animation: dotsIn .7s cubic-bezier(.2,.9,.2,1) both; }
@media (prefers-reduced-motion: reduce) { .dots { animation: none; } }

/* ── 安装指南下载卡（gcard 前缀，避免与现有类冲突）── */
.gcard{display:flex;align-items:center;gap:24px;margin-top:26px;padding:22px 26px;
  border-radius:16px;background:rgba(74,222,128,.05);border:1px solid rgba(74,222,128,.22)}
.gcard-l{flex:1}
.gcard-h{font-size:16px;font-weight:900;color:#e8eef7;letter-spacing:-.2px}
.gcard p{margin-top:8px;font-size:13.5px;line-height:1.75;color:#93a3bb;max-width:640px}
.gcard-tag{margin-top:9px;font-size:12px;color:#6b7a90}
.gcard-btn{flex-shrink:0;padding:12px 22px;border-radius:11px;font-size:14px;font-weight:800;
  color:#04140c;background:linear-gradient(135deg,#4ade80,#22d3ee);white-space:nowrap}
.gcard-btn:hover{filter:brightness(1.08)}
@media(max-width:820px){.gcard{flex-direction:column;align-items:flex-start;gap:16px}
  .gcard-btn{width:100%;text-align:center}}
/* 每屏标题下的说明行 */
.sec-sub{margin-top:9px;font-size:14px;line-height:1.7;color:#8b9aae;max-width:660px}

/* 证据屏：第一张放大，后两张并排，缩略图里的字才看得清 */
.evid-g{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.evid-g .ev:first-child{grid-column:1 / -1}
.evid-g .ev:first-child img{height:auto;max-height:none}
@media(max-width:820px){.evid-g{grid-template-columns:1fr}}

/* 页脚次要导航（导航栏放不下的页面） */
.foot-more{display:flex;gap:18px;flex-wrap:wrap;margin-top:10px}
.foot-more a{font-size:12px;color:#6b7a90;text-decoration:none}
.foot-more a:hover{color:#8ef1c0}
/* 导航 5 项时收紧间距 */
.links{gap:17px}