/* 3z9wOpt 发布页样式（由 _build.py 从 _tpl.html 自动抽出，别直接改这个文件）
   要改样式请改 _tpl.html 的 <style> 段，然后重新跑 python _build.py */
/* ==========================================================================
   3z9wOpt 发布页 · 纯白高级（浅色大留白 + 单一强调色 + 克制动效）
   选择器全部带 #dl / .dl- 前缀，嵌进子比主题不会污染官网样式
   ========================================================================== */
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth}
body{margin:0;background:#fff;color:#0d1220;overflow-x:hidden;
  font-family:"PingFang SC","HarmonyOS Sans SC","Microsoft YaHei",system-ui,-apple-system,"Segoe UI",sans-serif;
  font-size:15px;line-height:1.6;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
img{border:0}
#dl *,#dl-nav *,#dl-bar *,#dl-foot *,.dl-menu *{box-sizing:border-box}
#dl a,#dl-nav a,#dl-foot a,#dl-bar a,#dl-lb a,#dl-toast a,.dl-menu a{text-decoration:none}
#dl a:not(.dl-btn):not(.dl-copy){color:inherit}
.dl-ico{width:1em;height:1em;fill:none;stroke:currentColor;stroke-width:1.85;stroke-linecap:round;stroke-linejoin:round;flex:none;display:inline-block;vertical-align:-.13em}

/* 通用按钮 */
.dl-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-weight:600;
  font-size:14px;padding:11px 20px;border-radius:11px;border:0;cursor:pointer;white-space:nowrap;
  transition:background .2s,box-shadow .24s,transform .24s,color .2s;font-family:inherit}
.dl-btn .dl-ico{width:16px;height:16px;stroke-width:2}
.dl-btn-p{background:linear-gradient(135deg,#3d70ff 0%,#0F4CFF 46%,#0632b8 100%);color:#fff;
  box-shadow:0 8px 24px -6px rgba(15,76,255,.44),inset 0 1px 0 rgba(255,255,255,.24)}
.dl-btn-p:hover{background:linear-gradient(135deg,#4f7fff 0%,#1550ff 46%,#0a39cf 100%);
  transform:translateY(-2px);box-shadow:0 14px 34px -8px rgba(15,76,255,.52),inset 0 1px 0 rgba(255,255,255,.3)}
.dl-btn-o{background:#f2f4f9;color:#0d1220;box-shadow:inset 0 0 0 1px rgba(13,18,32,.08)}
.dl-hero .dl-btn-o{background:rgba(255,255,255,.07);color:#e2e9f8;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.16);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}
.dl-hero .dl-btn-o:hover{background:rgba(255,255,255,.13);color:#fff}
.dl-btn-o:hover{background:#e9edf6;transform:translateY(-1px)}

/* 布局 */
.dl-in{max-width:1120px;margin:0 auto;padding:0 32px}
#dl section{position:relative}

/* 进场动效 */
#dl [data-rv]{opacity:0;transform:translateY(20px);
  transition:opacity .8s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1)}
#dl [data-rv].dl-inview{opacity:1;transform:none}

/* 顶部滚动进度 */
#dl-prog{position:fixed;left:0;top:0;height:2px;width:100%;z-index:60;pointer-events:none}
#dl-prog i{display:block;height:100%;width:0;background:#0F4CFF}

/* ============================ 顶栏 ============================ */
#dl-nav{position:sticky;top:0;z-index:55;background:rgba(255,255,255,.72);
  -webkit-backdrop-filter:saturate(180%) blur(16px);backdrop-filter:saturate(180%) blur(16px);
  border-bottom:1px solid rgba(13,18,32,.06);transition:background .3s,box-shadow .3s}
#dl-nav.dl-on:not(.dl-dk){background:rgba(255,255,255,.9);
  box-shadow:0 1px 0 rgba(15,76,255,.08),0 14px 36px -16px rgba(15,76,255,.38)}
/* 深色首屏没滚出去之前，顶栏走深玻璃 */
#dl-nav.dl-dk{background:rgba(7,11,22,.5);border-bottom-color:rgba(255,255,255,.09)}
#dl-nav.dl-dk .dl-lname{color:#fff}
#dl-nav.dl-dk .dl-lsub{color:rgba(255,255,255,.6)}
#dl-nav.dl-dk .dl-k{color:#a7b3cb}
#dl-nav.dl-dk .dl-k:hover{color:#fff}
#dl-nav.dl-dk .dl-k.dl-cur{color:#7aa2ff}
#dl-nav.dl-dk .dl-mn{background:rgba(255,255,255,.08);border-color:rgba(255,255,255,.16)}
#dl-nav.dl-dk .dl-mn i,#dl-nav.dl-dk .dl-mn i::before,#dl-nav.dl-dk .dl-mn i::after{background:#fff}
#dl-nav.dl-dk .dl-menu{background:rgba(9,14,28,.94);border-top-color:rgba(255,255,255,.08)}
#dl-nav.dl-dk .dl-menu a{color:#c9d3e6}
#dl-nav.dl-dk .dl-menu a:hover{background:rgba(255,255,255,.08);color:#fff}
#dl-nav.dl-dk .dl-menu a .dl-ico{color:#8fa3c4}
.dl-nin{max-width:1120px;margin:0 auto;padding:0 32px;height:62px;display:flex;align-items:center;gap:26px}
.dl-logo{display:flex;align-items:center;gap:10px;font-weight:700;font-size:15px;letter-spacing:-.01em;white-space:nowrap;color:#0d1220}
.dl-logo img{width:29px;height:29px;border-radius:8px;object-fit:cover;box-shadow:0 2px 8px rgba(15,76,255,.22)}
.dl-lname{display:block;line-height:1.2}
.dl-lsub{display:block;font-size:11px;font-weight:500;color:#5f687c;letter-spacing:.05em;margin-top:1px}
.dl-links{display:flex;align-items:center;gap:24px;margin-left:auto;font-size:13.5px}
.dl-k{color:#5a6579;transition:color .18s;position:relative;
  display:inline-flex;align-items:center;padding:8px 0}
.dl-k:hover{color:#0d1220}
.dl-k.dl-cur{color:#0F4CFF;font-weight:600}
.dl-k .dl-ico{width:9.5px;height:9.5px;opacity:.45;margin-left:3px;stroke-width:2}
.dl-ngo{margin-left:2px}
.dl-mn{display:none;width:40px;height:38px;margin-left:auto;border:1px solid rgba(13,18,32,.1);
  background:#fff;border-radius:10px;cursor:pointer;padding:0;place-items:center;
  transition:border-color .22s,box-shadow .22s,transform .22s}
.dl-mn:hover{border-color:rgba(15,76,255,.45);box-shadow:0 0 0 4px rgba(15,76,255,.1);
  transform:translateY(-1px)}
.dl-mn i{display:block;width:16px;height:2px;background:#0d1220;border-radius:2px;position:relative;transition:.25s}
.dl-mn i::before,.dl-mn i::after{content:"";position:absolute;left:0;width:16px;height:2px;background:#0d1220;border-radius:2px;transition:.25s}
.dl-mn i::before{top:-5px}.dl-mn i::after{top:5px}
#dl-nav.dl-menu-on .dl-mn i{background:transparent}
#dl-nav.dl-menu-on .dl-mn i::before{top:0;transform:rotate(45deg)}
#dl-nav.dl-menu-on .dl-mn i::after{top:0;transform:rotate(-45deg)}
.dl-menu{display:none;border-top:1px solid rgba(13,18,32,.06);background:#fff;padding:8px 32px 16px}
.dl-menu.dl-on{display:block}
.dl-menu a{display:flex;align-items:center;gap:10px;padding:11px 12px;border-radius:10px;
  font-size:14px;color:#39435a;margin-top:4px}
.dl-menu a:hover{background:#f5f7fc;color:#0F4CFF}
.dl-menu a .dl-ico{width:15px;height:15px;color:#96a0b5}
.dl-menu .dl-btn-p{margin-top:10px;color:#fff;justify-content:center}
.dl-menu .dl-btn-p .dl-ico{color:#fff}

/* ============================ Hero ============================ */
.dl-hero{padding:74px 0 80px;text-align:center;position:relative;overflow:hidden;background:
  radial-gradient(ellipse 54% 44% at 14% -14%,rgba(56,110,255,.46),transparent 62%),
  radial-gradient(ellipse 50% 40% at 88% -6%,rgba(150,90,255,.32),transparent 60%),
  radial-gradient(ellipse 70% 34% at 50% 96%,rgba(38,86,220,.3),transparent 68%),
  linear-gradient(180deg,#080c18 0%,#080e1f 46%,#070b16 100%)}
/* 细网格：给首屏一点"精密仪器"的底子，用径向遮罩从中间淡出 */
.dl-hero::before{content:"";position:absolute;left:0;right:0;top:0;height:520px;pointer-events:none;
  background-image:linear-gradient(rgba(255,255,255,.06) 1px,transparent 1px),
    linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px);
  background-size:58px 58px;
  -webkit-mask-image:radial-gradient(ellipse 66% 86% at 50% -6%,#000 10%,transparent 72%);
  mask-image:radial-gradient(ellipse 66% 86% at 50% -6%,#000 10%,transparent 72%);
  animation:dlGrid 12s ease-in-out infinite}
@keyframes dlGrid{0%,100%{opacity:.85}50%{opacity:1}}
/* 顶部一道彩色流光，压住网格的机械味 */
.dl-hero::after{content:"";position:absolute;left:10%;right:10%;top:0;height:2px;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(96,150,255,.85) 22%,rgba(178,124,255,.8) 58%,rgba(70,130,255,.5) 76%,transparent)}
.dl-hero>*{position:relative;z-index:1}
.dl-hl{display:inline-flex;align-items:center;gap:8px;font-size:12.5px;color:#c3cee4;
  padding:7px 17px;border-radius:999px;background:rgba(255,255,255,.05);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  box-shadow:0 10px 30px -14px rgba(70,130,255,.5),inset 0 0 0 1px rgba(140,175,255,.22)}
.dl-hl b{color:#8fb4ff;font-weight:700}
.dl-hl .dl-ico{width:14px;height:14px;color:#8fb4ff}
.dl-h1{font-size:clamp(38px,5.6vw,78px);line-height:1.04;letter-spacing:-.048em;font-weight:800;
  margin:18px 0 0;color:#fff;text-shadow:0 2px 40px rgba(70,130,255,.34)}
.dl-h1 em{font-style:normal;color:#fff;background:linear-gradient(96deg,#74a4ff 4%,#8f8dff 52%,#c08bff);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.dl-hd{margin:22px auto 0;font-size:18px;line-height:1.72;color:#a3b1cb;max-width:660px}
.dl-hd b{color:#e4ebfa;font-weight:600}
.dl-hbtns{display:flex;justify-content:center;gap:12px;margin-top:22px;flex-wrap:wrap}
.dl-hbtns .dl-btn{font-size:15.5px;padding:16px 30px;border-radius:13px}
.dl-hnote{margin:12px 0 0;font-size:12.5px;color:#a3b1cb}
.dl-specs{display:flex;justify-content:center;gap:11px;margin:30px auto 0;padding-top:0;
  max-width:940px;flex-wrap:wrap}
.dl-spec{display:inline-flex;align-items:center;gap:10px;text-align:left;padding:9px 17px 9px 11px;
  border-radius:13px;background:rgba(255,255,255,.055);
  -webkit-backdrop-filter:blur(9px);backdrop-filter:blur(9px);
  box-shadow:0 10px 28px -16px rgba(0,0,0,.6),inset 0 0 0 1px rgba(255,255,255,.1);
  transition:box-shadow .3s,transform .3s}
.dl-spec:hover{transform:translateY(-2px);
  box-shadow:0 16px 34px -16px rgba(70,130,255,.6),inset 0 0 0 1px rgba(150,180,255,.34)}
.dl-spec>i{display:grid;place-items:center;width:29px;height:29px;border-radius:9px;flex:none;
  background:linear-gradient(140deg,rgba(90,140,255,.34),rgba(56,110,255,.16));
  box-shadow:inset 0 0 0 1px rgba(150,180,255,.26)}
.dl-spec .dl-ico{width:16px;height:16px;color:#a9c4ff}
.dl-spec>div{display:flex;flex-direction:column}
.dl-spec b{display:block;font-size:11px;font-weight:600;color:#a3b1cb;margin-bottom:2px;letter-spacing:.02em}
.dl-spec span{font-size:13px;font-weight:600;color:#dde5f5}
.dl-stage{margin-top:34px;padding:0 32px;position:relative}
.dl-stage::before{content:"";position:absolute;left:0;right:0;top:56px;bottom:-58px;
  background:linear-gradient(180deg,rgba(48,96,220,.16),rgba(10,16,34,0) 78%);border-radius:32px 32px 0 0}
/* 产品图背后一团深空辉光，把截图"托"起来 */
.dl-stage::after{content:"";position:absolute;left:6%;right:6%;top:6px;height:460px;z-index:0;
  pointer-events:none;filter:blur(34px);
  background:radial-gradient(ellipse 58% 58% at 50% 40%,rgba(70,132,255,.5),rgba(150,90,255,.24) 46%,transparent 74%);
  animation:dlGlow 7.5s ease-in-out infinite}
@keyframes dlGlow{0%,100%{opacity:.72;transform:scale(.97)}50%{opacity:1;transform:scale(1.05)}}
.dl-mock{position:relative;z-index:1;max-width:900px;margin:0 auto;border-radius:16px;overflow:hidden;background:#fff;
  box-shadow:0 0 0 1px rgba(140,175,255,.3),0 2px 6px rgba(0,0,0,.5),
    0 -18px 70px -18px rgba(80,140,255,.5),0 26px 54px -16px rgba(0,0,0,.62),
    0 70px 130px -34px rgba(24,64,180,.6);
  transition:box-shadow .4s,transform .5s cubic-bezier(.22,1,.36,1)}
.dl-mock:hover{transform:translateY(-4px);
  box-shadow:0 0 0 1px rgba(170,200,255,.44),0 2px 6px rgba(0,0,0,.5),
    0 -20px 84px -16px rgba(96,150,255,.62),0 34px 88px rgba(0,0,0,.6),0 70px 150px -34px rgba(24,64,180,.66)}
.dl-mockbox{cursor:zoom-in}
.dl-wbar{display:flex;align-items:center;gap:6px;padding:10px 14px;background:#f4f6fb;
  border-bottom:1px solid rgba(13,18,32,.1)}
.dl-wbar i{width:9px;height:9px;border-radius:50%;background:#e3e6ec}
.dl-wbar i:first-child{background:#ff5f57}
.dl-wbar i:nth-child(2){background:#febc2e}
.dl-wbar i:nth-child(3){background:#28c840}
.dl-wbar span{margin-left:8px;font-size:11px;color:#5f687c}
/* height:auto 必须写 —— img 上带了 width/height 属性（为了防布局抖动），
   不写 height:auto 的话浏览器会把属性当成固定高度，图会被拉变形 */
.dl-mock img{display:block;width:100%;height:auto}
.dl-hchips{display:flex;justify-content:center;gap:10px;margin:13px auto 0;flex-wrap:wrap;position:relative}
.dl-hchip{display:inline-flex;align-items:center;gap:7px;font-size:12.5px;font-weight:600;color:#c6d1e6;
  background:rgba(255,255,255,.06);padding:7px 14px;border-radius:999px;
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);
  box-shadow:0 6px 22px rgba(0,0,0,.34),inset 0 0 0 1px rgba(255,255,255,.1)}
.dl-hchip .dl-ico{width:14px;height:14px;color:#8fb4ff}

/* ============================ 数字带 ============================ */
.dl-nums{padding:52px 0 0}
.dl-ngrid{position:relative;display:grid;grid-template-columns:repeat(4,1fr);max-width:1120px;margin:0 auto;
  padding:0;border-radius:20px;background:#fff;overflow:hidden;
  border:1px solid #e6eaf4;box-shadow:0 26px 54px -40px rgba(13,18,32,.5)}
.dl-ngrid::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;
  background:linear-gradient(90deg,#0F4CFF,#7C3AED 52%,#0F4CFF)}
.dl-ncell{position:relative;text-align:left;padding:22px 24px 24px;border-left:1px solid #eef1f8}
.dl-ncell:first-child{border-left:0}
.dl-ncell::after{content:attr(data-k);position:absolute;right:22px;top:24px;font-size:11px;
  font-weight:700;letter-spacing:.14em;color:#c2cbd9;
  font-family:ui-monospace,"SFMono-Regular",Consolas,Menlo,monospace}
.dl-nv{font-size:clamp(38px,4.4vw,58px);font-weight:800;line-height:1;letter-spacing:-.045em;
  font-variant-numeric:tabular-nums;
  background:linear-gradient(168deg,#0b1020 16%,#263e7d);-webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent}
.dl-nv sup{font-size:.42em;font-weight:700;color:#0F4CFF;-webkit-text-fill-color:#0F4CFF;
  position:relative;top:-.72em;margin-left:2px}
.dl-nl{font-size:14.5px;font-weight:700;margin-top:12px;letter-spacing:-.01em}
.dl-nd{font-size:12px;color:#5f687c;margin-top:6px;padding-top:8px;
  border-top:1px dashed #e7ebf5}

/* 居中的多行文本用 balance 断行：避免末行只剩两三个字（孤行） */
.dl-hd,.dl-lede,.dl-sub,.dl-hnote,.dl-bug,.dl-dwarn,.dl-sc>p,.dl-3c>p{text-wrap:balance}
/* 短段落（FAQ 答案、卡片说明）用 balance：末行不再只剩两三个字 */
.dl-qa p,.dl-cc>p,.dl-fc>p,.dl-cmt-tx p,.dl-capc p,.dl-pli p,.dl-pt p,.dl-3c>p{text-wrap:balance}
/* 长段落（5 行以上，balance 会自动跳过）用 pretty：尽量不把一两个词甩到末行 */
.dl-pane>p,.dl-risk li,.dl-credit,.dl-st p,.dl-tip p{text-wrap:balance}

/* ============================ 通用区块 ============================ */
.dl-sec{padding:46px 0}
.dl-soft{background:
  linear-gradient(rgba(13,18,32,.026) 1px,transparent 1px) 0 0/56px 56px,
  linear-gradient(90deg,rgba(13,18,32,.026) 1px,transparent 1px) 0 0/56px 56px,
  radial-gradient(ellipse 58% 44% at 50% 0%,rgba(15,76,255,.05),transparent 72%),
  linear-gradient(180deg,#f6f8fd,#fcfdff);
  border-top:1px solid #e7ebf5;border-bottom:1px solid #e7ebf5}
/* 通用细网格底纹：给纯白底一点"精密仪器"的底子 */
.dl-grid-bg::before{content:"";position:absolute;inset:0;pointer-events:none;z-index:0;
  background-image:linear-gradient(rgba(13,18,32,.026) 1px,transparent 1px),
    linear-gradient(90deg,rgba(13,18,32,.026) 1px,transparent 1px);
  background-size:56px 56px;
  -webkit-mask-image:radial-gradient(ellipse 74% 62% at 50% 0,#000,transparent 76%);
  mask-image:radial-gradient(ellipse 74% 62% at 50% 0,#000,transparent 76%)}
.dl-mono{font-family:ui-monospace,"SFMono-Regular",Consolas,Menlo,monospace}
.dl-head{position:relative;z-index:1;text-align:center;max-width:780px;margin:0 auto 30px}
/* 标题区背后一团极淡光斑：让纯白底有层次，不至于"素成一张纸" */
.dl-head::before{content:"";position:absolute;left:50%;top:-58px;width:min(820px,92vw);height:280px;
  transform:translateX(-50%);pointer-events:none;z-index:-1;
  background:radial-gradient(ellipse 46% 52% at 50% 50%,rgba(15,76,255,.085),transparent 72%)}
.dl-badge{display:inline-flex;align-items:center;gap:9px;font-size:11px;font-weight:700;
  letter-spacing:.18em;color:#0F4CFF;padding:6px 14px 6px 12px;border-radius:8px;
  background:#f2f6ff;border:1px solid #dce5fa;
  font-family:ui-monospace,"SFMono-Regular",Consolas,Menlo,monospace}
.dl-badge::before{content:"";width:5px;height:5px;border-radius:1.5px;background:#0F4CFF;
  box-shadow:0 0 9px rgba(15,76,255,.7)}
.dl-badge::after{display:none}
.dl-h2{font-size:clamp(28px,3.7vw,44px);font-weight:800;letter-spacing:-.035em;line-height:1.24;
  margin:16px 0 0;text-wrap:balance;text-shadow:0 2px 20px rgba(15,76,255,.07)}
.dl-h2 em{font-style:normal;color:#0F4CFF;white-space:nowrap;
  background:linear-gradient(96deg,#0F4CFF 6%,#5b7cff 54%,#7C3AED);
  -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.dl-sub{margin:16px auto 0;font-size:15px;line-height:1.8;color:#5a6579;max-width:600px}
.dl-hair{display:none}

/* 三条底线（大卡） */
.dl-3{display:grid;grid-template-columns:repeat(3,1fr);gap:16px}
.dl-3c{display:grid;grid-template-columns:37px 1fr;grid-template-areas:"i h" "i p";
  gap:7px 13px;align-items:start;padding:18px 20px 20px;border-radius:16px;
  background:linear-gradient(180deg,#fff,#fafbfe);
  border:1px solid #e7ebf5;box-shadow:0 16px 34px -30px rgba(13,18,32,.36);
  transition:border-color .3s,box-shadow .3s,transform .3s}
.dl-3c:hover{transform:translateY(-3px);border-color:#c6d6fb;
  box-shadow:0 22px 44px -30px rgba(15,76,255,.5)}
.dl-3i{grid-area:i;width:37px;height:37px;border-radius:11px;display:grid;place-items:center;flex:none;margin:1px 0 0;
  background:linear-gradient(140deg,#eaf0ff,#dbe6ff);
  box-shadow:0 6px 16px -8px rgba(15,76,255,.42),inset 0 0 0 1px rgba(15,76,255,.12);transition:.28s}
.dl-3i .dl-ico{width:19px;height:19px;color:#0F4CFF}
.dl-3c:hover .dl-3i{background:#0F4CFF;box-shadow:0 7px 18px rgba(15,76,255,.3)}
.dl-3c:hover .dl-3i .dl-ico{color:#fff}
.dl-3c h3{grid-area:h;font-size:16px;font-weight:700;margin:0;letter-spacing:-.01em}
.dl-3c p{grid-area:p;margin:0;font-size:12.8px;line-height:1.8;color:#5a6579}
.dl-3c p b{color:#0d1220;font-weight:600}

/* 卖点小卡 */
.dl-sell{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin-top:13px}
.dl-sc{padding:18px 19px 19px;border-radius:16px;background:linear-gradient(180deg,#fff,#fcfdff);
  border:1px solid #e7ebf5;box-shadow:0 16px 34px -30px rgba(13,18,32,.34);
  transition:border-color .3s,box-shadow .3s,transform .3s}
.dl-sc:hover{transform:translateY(-3px);border-color:#c6d6fb;
  box-shadow:0 22px 44px -30px rgba(15,76,255,.46)}
.dl-si{width:33px;height:33px;border-radius:10px;display:grid;place-items:center;margin-bottom:11px;
  background:linear-gradient(140deg,#eaf0ff,#dbe6ff);
  box-shadow:0 6px 14px -8px rgba(15,76,255,.4),inset 0 0 0 1px rgba(15,76,255,.1)}
.dl-si .dl-ico{width:19px;height:19px;color:#0F4CFF}
.dl-sc h3{font-size:16px;font-weight:700;margin:0 0 8px;letter-spacing:-.01em;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.dl-sc p{margin:0;font-size:12.8px;line-height:1.8;color:#5a6579}
.dl-sc p b{color:#0d1220;font-weight:600}
.dl-tag{display:inline-flex;align-items:center;gap:3px;font-size:11px;font-weight:700;letter-spacing:.02em;
  color:#fff;background:linear-gradient(120deg,#0F4CFF,#7C3AED);padding:3px 7px;border-radius:5px;line-height:1.35}
.dl-tag .dl-ico{width:10px;height:10px;stroke-width:2.6}
.dl-more{display:flex;flex-wrap:wrap;justify-content:center;gap:10px;margin-top:16px}
.dl-more span{font-size:12.5px;font-weight:600;color:#39435a;background:#fff;
  padding:8px 15px;border-radius:999px;box-shadow:inset 0 0 0 1px rgba(13,18,32,.07)}
.dl-more span::before{content:"";display:inline-block;width:5px;height:5px;border-radius:50%;
  background:#0F4CFF;margin-right:8px;vertical-align:2px}

/* ============ 没截图的模块：能力清单（单列大条目，撑满卡片） ============ */
.dl-capmode .dl-pbody{grid-template-columns:minmax(0,1fr)}
.dl-cap{display:flex;flex-direction:column;gap:9px;margin-top:15px;width:100%}
.dl-capc{display:flex;gap:13px;padding:12px 16px;border-radius:13px;background:#f8fafd;
  border:1px solid #eaeef7;border-left:3px solid #dbe5fb;
  transition:background .25s,border-color .25s,box-shadow .25s,transform .25s}
.dl-capc:hover{background:#fff;border-color:#c6d6fb;border-left-color:#0F4CFF;transform:translateX(2px);
  box-shadow:0 18px 36px -28px rgba(15,76,255,.6)}
.dl-capc>i{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;flex:none;
  background:linear-gradient(140deg,#eaf0ff,#dbe6ff);box-shadow:inset 0 0 0 1px rgba(15,76,255,.12)}
.dl-capc>i .dl-ico{width:18px;height:18px;color:#0F4CFF}
.dl-capc>b,.dl-capc>div>b{display:block;font-size:13.5px;font-weight:700;margin-bottom:4px;letter-spacing:-.012em;color:#0d1220}
.dl-capc p{margin:0;font-size:12.8px;line-height:1.72;color:#5a6579}
.dl-capc p b{color:#0d1220;font-weight:600}
.dl-capc code{font-family:ui-monospace,Consolas,Menlo,monospace;font-size:12.5px;background:#eef1f7;
  padding:1px 5px;border-radius:4px;color:#39435a}
.dl-capc.dl-bad{border-left-color:#f4c9c9;background:#fffafa}
.dl-capc.dl-bad>i{background:linear-gradient(140deg,#ffeeee,#ffdede);box-shadow:inset 0 0 0 1px rgba(220,38,38,.16)}
.dl-capc.dl-bad>i .dl-ico{color:#DC2626}
.dl-capc.dl-warn{border-left-color:#f2d9a8;background:#fffdf8}
.dl-capc.dl-warn>i{background:linear-gradient(140deg,#fff5e6,#ffead0);box-shadow:inset 0 0 0 1px rgba(224,138,0,.18)}
.dl-capc.dl-warn>i .dl-ico{color:#E08A00}
.dl-mod.dl-scon .dl-cap{gap:9px;margin-top:13px;flex:1 1 auto}
/* 条目少的模块（3 条）不再堆在卡片上半截：整块清单在剩余空间里垂直居中 */
.dl-mod.dl-scon .dl-capmode .dl-pbody{align-content:center}
.dl-mod.dl-scon .dl-capmode .dl-pbody{margin-top:14px}
.dl-mod.dl-scon .dl-capc{padding:13px 16px}

/* ============================ 功能清单 ============================ */
.dl-mod{display:grid;grid-template-columns:288px 1fr;gap:24px;align-items:start}
.dl-mlist{display:flex;flex-direction:column;gap:4px}
.dl-mi{display:flex;align-items:center;gap:12px;width:100%;text-align:left;border:0;background:transparent;
  font-family:inherit;font-size:13.5px;color:#5a6579;padding:11px 14px;border-radius:12px;cursor:pointer;
  box-shadow:inset 0 0 0 1px rgba(13,18,32,.055);transition:.22s}
.dl-mi i{width:32px;height:32px;border-radius:10px;display:grid;place-items:center;font-style:normal;flex:none;
  background:linear-gradient(140deg,#f1f5ff,#e7eefc);box-shadow:inset 0 0 0 1px rgba(13,18,32,.05);transition:.22s}
.dl-mi i .dl-ico{width:16px;height:16px;color:#5a6579;transition:.22s}
.dl-mi b{font-weight:600;flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.dl-mi em{font-style:normal;font-size:11px;color:#5f687c;background:#f2f4f9;padding:2px 7px;border-radius:5px;flex:none}
.dl-mi:hover{background:#f5f7fc;color:#0d1220}
.dl-mi.dl-on{background:#fff;color:#0F4CFF;font-weight:700;
  box-shadow:0 6px 20px rgba(15,76,255,.1),inset 3px 0 0 #0F4CFF}
.dl-mi.dl-on i{background:#0F4CFF;box-shadow:0 6px 16px rgba(15,76,255,.3)}
.dl-mi.dl-on i .dl-ico{color:#fff}
.dl-mi.dl-on em{background:#eef3ff;color:#0F4CFF}
.dl-mpane{background:radial-gradient(ellipse 62% 48% at 10% 0%,rgba(15,76,255,.055),transparent 66%),
    radial-gradient(ellipse 46% 40% at 100% 100%,rgba(124,58,237,.045),transparent 68%),#fff;
  border-radius:18px;padding:22px 24px 24px;min-height:0;
  box-shadow:0 2px 5px rgba(13,18,32,.04),0 26px 60px -26px rgba(13,18,32,.34),inset 0 0 0 1px rgba(13,18,32,.07)}
.dl-pan{display:none}
.dl-pan.dl-on{display:block;animation:dlpan .45s cubic-bezier(.22,1,.36,1)}
@keyframes dlpan{from{opacity:0;transform:translateY(10px)}to{opacity:1;transform:none}}
.dl-ptop{display:flex;gap:15px;align-items:flex-start;padding-bottom:18px;border-bottom:1px solid rgba(13,18,32,.07)}
.dl-pico{width:44px;height:44px;border-radius:13px;display:grid;place-items:center;flex:none;
  background:linear-gradient(140deg,#e8efff,#d7e4ff);
  box-shadow:0 8px 20px -10px rgba(15,76,255,.55),inset 0 0 0 1px rgba(15,76,255,.12)}
.dl-pico .dl-ico{width:21px;height:21px;color:#0F4CFF}
.dl-ptop h3{font-size:19px;font-weight:700;margin:1px 0 0;letter-spacing:-.015em;display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.dl-lede{margin:7px 0 0;font-size:13.5px;line-height:1.8;color:#5a6579;max-width:660px}
.dl-pbody{display:grid;grid-template-columns:1fr 1fr;gap:24px;margin-top:20px;align-items:start}
.dl-shot{position:relative;border-radius:13px;overflow:hidden;background:#f5f7fc;cursor:zoom-in;
  box-shadow:inset 0 0 0 1px rgba(13,18,32,.07)}
.dl-shot img{display:block;width:100%;height:auto;transition:transform .5s cubic-bezier(.22,1,.36,1)}
.dl-shot:hover img{transform:scale(1.025)}
.dl-shot u{position:absolute;right:10px;bottom:10px;display:inline-flex;align-items:center;gap:5px;
  font-size:11px;font-weight:600;text-decoration:none;color:#fff;background:rgba(13,18,32,.62);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);padding:5px 10px;border-radius:7px;
  opacity:0;transition:opacity .25s}
.dl-shot:hover u{opacity:1}
.dl-shot u .dl-ico{width:13px;height:13px;stroke-width:2.4}
.dl-noshot{display:grid;place-items:center;gap:8px;text-align:center;border-radius:13px;padding:54px 22px;
  background:#fafbfd;box-shadow:inset 0 0 0 1px dashed rgba(13,18,32,.13)}
.dl-noshot .dl-ico{width:30px;height:30px;color:#c3cad8}
.dl-noshot b{font-size:13.5px;font-weight:600;color:#39435a}
.dl-noshot span{font-size:12px;color:#5f687c}
.dl-points{display:flex;flex-direction:column;gap:2px}
.dl-pt{display:flex;gap:11px;padding:11px 0;border-bottom:1px solid rgba(13,18,32,.055)}
.dl-pt:last-child{border-bottom:0}
.dl-pt>.dl-ico{width:17px;height:17px;color:#0F4CFF;margin-top:3px;stroke-width:2.1}
.dl-pt b{display:block;font-size:13.5px;font-weight:700;color:#0d1220;margin-bottom:5px}
.dl-pt p{margin:0;font-size:12.8px;line-height:1.85;color:#5a6579}
.dl-pt p b{display:inline;font-size:inherit;color:#0d1220;margin:0}
.dl-pt code{font-family:ui-monospace,Consolas,Menlo,monospace;font-size:12px;background:#f2f4f9;
  padding:1px 5px;border-radius:4px;color:#39435a}
.dl-pt.dl-warn>.dl-ico{color:#E08A00}
.dl-pt.dl-warn b{color:#8a5600}
.dl-pt.dl-bad>.dl-ico{color:#DC2626}
.dl-pt.dl-bad b{color:#b91c1c}

/* ============================ 三步上手 ============================ */
.dl-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;counter-reset:dlstep}
.dl-st{position:relative;padding:22px 22px 24px;border-radius:18px;overflow:hidden;
  background:linear-gradient(180deg,#fff,#fafbfe);counter-increment:dlstep;
  border:1px solid #e7ebf5;box-shadow:0 16px 36px -30px rgba(13,18,32,.34);
  transition:transform .3s,border-color .3s,box-shadow .3s}
.dl-st:hover{transform:translateY(-3px);border-color:#c6d6fb;
  box-shadow:0 24px 46px -30px rgba(15,76,255,.46)}
.dl-st::before{content:"0" counter(dlstep);position:absolute;right:24px;top:16px;font-size:46px;font-weight:800;
  letter-spacing:-.05em;line-height:1;
  background:linear-gradient(160deg,#cddaf5,#eaf0ff);-webkit-background-clip:text;background-clip:text;
  -webkit-text-fill-color:transparent}
.dl-st h3{display:flex;align-items:center;gap:9px;font-size:17.5px;font-weight:700;margin:0 0 12px;letter-spacing:-.01em}
.dl-st h3 .dl-ico{width:19px;height:19px;color:#0F4CFF}
.dl-st p{margin:0;font-size:13.5px;line-height:1.9;color:#5a6579}
.dl-st p b{color:#0d1220;font-weight:600}
.dl-st code{font-family:ui-monospace,Consolas,Menlo,monospace;font-size:12.5px;background:#fff;
  padding:2px 6px;border-radius:5px;box-shadow:inset 0 0 0 1px rgba(13,18,32,.08)}
.dl-tip{display:flex;gap:14px;margin-top:14px;padding:16px 20px;border-radius:16px;
  background:linear-gradient(100deg,#fff8ec,#fffdf8);border:1px solid rgba(224,138,0,.26);
  border-left:3px solid #E08A00}
.dl-tip>.dl-ico{width:22px;height:22px;color:#E08A00;flex:none;margin-top:2px}
.dl-tip b{display:block;font-size:14px;font-weight:700;color:#8a5600;margin-bottom:6px}
.dl-tip p{margin:0;font-size:13.5px;line-height:1.85;color:#6b5638}

/* ============================ 动手前请留意 ============================ */
.dl-cg{display:grid;grid-template-columns:repeat(3,1fr);gap:22px}
.dl-cc{padding:21px 20px 22px;border-radius:18px;background:linear-gradient(180deg,#fff,#fcfdff);
  border:1px solid #e7ebf5;border-top:3px solid #cfdcff;
  box-shadow:0 16px 36px -30px rgba(13,18,32,.32);
  transition:transform .3s,border-color .3s,box-shadow .3s}
.dl-cc:hover{transform:translateY(-3px);border-color:#c6d6fb;border-top-color:#0F4CFF;
  box-shadow:0 22px 44px -30px rgba(15,76,255,.42)}
.dl-cc.dl-cant{border-top-color:#F0B429}
.dl-cc.dl-save{border-top-color:#0F4CFF}
.dl-cc h3{font-size:17.5px;font-weight:700;margin:0 0 4px}
.dl-ci{width:37px;height:37px;border-radius:11px;display:grid;place-items:center;margin-bottom:11px;background:#f2f4f9}
.dl-ci .dl-ico{width:19px;height:19px;color:#39435a}
.dl-can .dl-ci{background:#eef3ff}.dl-can .dl-ci .dl-ico{color:#0F4CFF}
.dl-cant .dl-ci{background:#fff7e8}.dl-cant .dl-ci .dl-ico{color:#B45309}
.dl-save .dl-ci{background:#eef3ff}.dl-save .dl-ci .dl-ico{color:#0F4CFF}
.dl-cs{font-size:11.5px;font-weight:700;letter-spacing:.06em;color:#5f687c;margin-bottom:9px}
.dl-can .dl-cs{color:#0F4CFF}.dl-cant .dl-cs{color:#B45309}
.dl-cc p{margin:0;font-size:13.5px;line-height:1.9;color:#5a6579}
.dl-cc p b{color:#0d1220;font-weight:600}
.dl-risk{margin-top:16px;padding:17px 24px 18px;border-radius:18px;
  background:linear-gradient(100deg,#fef6f6,#fffdfd);border:1px solid rgba(220,38,38,.22);
  border-left:3px solid #DC2626}
.dl-risk li{display:flex;gap:10px;font-size:13.5px;line-height:1.85;color:#6b4a4a}
.dl-risk li .dl-ico{width:16px;height:16px;color:#DC2626;flex:none;margin-top:3px}
.dl-risk li b{color:#b91c1c}
.dl-risk code{font-family:ui-monospace,Consolas,Menlo,monospace;font-size:12px;background:#fff;
  padding:1px 5px;border-radius:4px;color:#8a4949}

/* ============================ 常见问题 ============================ */
.dl-faq{max-width:820px;margin:0 auto;display:flex;flex-direction:column;gap:7px}
.dl-q{border-radius:14px;background:#fff;border:1px solid #e7ebf5;
  box-shadow:0 14px 30px -28px rgba(13,18,32,.4);
  transition:border-color .25s,box-shadow .25s}
.dl-q:hover{border-color:#c9d8fb}
.dl-q.dl-open{border-color:#b6cbfa;box-shadow:0 18px 36px -26px rgba(15,76,255,.34)}
.dl-qh{display:flex;align-items:center;gap:14px;width:100%;text-align:left;border:0;background:transparent;
  font-family:inherit;font-size:14.5px;font-weight:600;color:#0d1220;padding:13px 20px;cursor:pointer}
.dl-qh u{text-decoration:none;font-size:11.5px;font-weight:700;color:#0F4CFF;background:#eef3ff;
  padding:3px 8px;border-radius:6px;flex:none;letter-spacing:.02em}
.dl-qh span{flex:1;min-width:0}
.dl-qh>.dl-ico{width:18px;height:18px;color:#828b9f;flex:none;transition:transform .3s,color .25s}
.dl-q.dl-open .dl-qh>.dl-ico{transform:rotate(180deg);color:#0F4CFF}
.dl-qa{max-height:0;overflow:hidden;transition:max-height .38s cubic-bezier(.22,1,.36,1)}
.dl-qa p{margin:0;padding:0 22px 20px 64px;font-size:13.5px;line-height:1.9;color:#5a6579}
.dl-qa p b{color:#0d1220;font-weight:600}

/* ============================ 出身说明 ============================ */
/* 出身说明（并入常见问题区块） */
.dl-origin-sub{margin-top:30px;padding-top:26px;border-top:1px solid rgba(13,18,32,.08)}
.dl-ostop{display:flex;flex-direction:column;gap:7px;margin-bottom:20px}
.dl-ostop b{font-size:clamp(21px,2.4vw,27px);font-weight:800;letter-spacing:-.025em;line-height:1.3;text-wrap:balance}
.dl-ostop span:last-child{font-size:14px;line-height:1.8;color:#5a6579}
.dl-two{display:grid;grid-template-columns:1.25fr 1fr;gap:22px;align-items:stretch}
/* 右卡内容比左卡少，等高后靠 space-between 把四块内容铺开，避免底部一大块空洞 */
.dl-two > .dl-pane{display:flex;flex-direction:column}
.dl-two > .dl-pane > .dl-plist{margin-top:auto}
.dl-two > .dl-pane > .dl-freenum{margin-top:auto}
.dl-two > .dl-pane > .dl-freenum + .dl-plist{margin-top:14px}
.dl-pane{background:#fff;border-radius:18px;padding:22px 22px 24px;border:1px solid #e7ebf5;
  box-shadow:0 16px 34px -30px rgba(13,18,32,.32)}
.dl-pane h3{display:flex;align-items:center;gap:10px;font-size:17.5px;font-weight:700;margin:0 0 11px}
.dl-pane h3 .dl-ico{width:20px;height:20px;color:#0F4CFF}
.dl-pane>p{margin:0;font-size:13.5px;line-height:1.9;color:#5a6579}
.dl-pane>p b{color:#0d1220;font-weight:600}
.dl-plist{display:flex;flex-direction:column;gap:2px;margin-top:16px}
.dl-pli{display:flex;gap:11px;padding:10px 0;border-bottom:1px solid rgba(13,18,32,.055)}
.dl-pli:last-child{border-bottom:0}
.dl-pli>.dl-ico{width:16px;height:16px;color:#0F4CFF;flex:none;margin-top:3px;stroke-width:2.1}
.dl-pli b{display:block;font-size:13.5px;font-weight:700;margin-bottom:4px}
.dl-pli p{margin:0;font-size:12.8px;line-height:1.8;color:#5a6579}
.dl-credit{margin-top:14px;padding:15px 17px;border-radius:13px;background:#fafbfd;font-size:12.8px;
  line-height:1.9;color:#5a6579;border:1px solid #e7ebf5;border-left:3px solid #c6d6fb}
.dl-credit b{color:#0d1220;font-weight:600}
.dl-pane.dl-dark{background:linear-gradient(158deg,#0b2f7a,#0F4CFF);color:#fff;box-shadow:none}
.dl-pane.dl-dark h3{color:#fff}
.dl-pane.dl-dark h3 .dl-ico{color:#fff}
.dl-pane.dl-dark>p{color:rgba(255,255,255,.82)}
.dl-pane.dl-dark>p b{color:#fff}
.dl-freenum{display:flex;align-items:center;gap:13px;margin:16px 0 4px;padding:15px 17px;border-radius:13px;
  background:rgba(255,255,255,.14);box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}
.dl-freenum .dl-ico{width:30px;height:30px;color:#fff;flex:none}
.dl-freenum b{display:block;font-size:17px;font-weight:800;letter-spacing:-.01em}
.dl-freenum span{display:block;font-size:12px;color:rgba(255,255,255,.75);margin-top:3px}
.dl-dark .dl-pli{border-bottom-color:rgba(255,255,255,.16)}
.dl-dark .dl-pli>.dl-ico{color:rgba(255,255,255,.9)}
.dl-dark .dl-pli b{color:#fff}
.dl-dark .dl-pli p{color:rgba(255,255,255,.76)}

/* 折叠块 */
#dl details>summary{list-style:none;cursor:pointer;user-select:none}
#dl details>summary::-webkit-details-marker{display:none}
#dl details>summary .dl-chev{transition:transform .3s;margin-left:auto}
#dl details[open]>summary .dl-chev{transform:rotate(180deg)}
.dl-log{max-width:760px;margin:14px auto 0;padding:0;border-radius:15px;background:#fafbfd;
  border:1px solid #e7ebf5;overflow:hidden}
.dl-log>summary{display:flex;align-items:center;gap:11px;padding:13px 22px;flex-wrap:wrap}
.dl-log>summary b{font-size:14px;font-weight:800;letter-spacing:-.01em}
.dl-log>summary time{font-size:12px;color:#5f687c}
.dl-log>summary em{font-style:normal;font-size:12px;color:#5f687c;margin-left:2px}
.dl-log[open]>summary{border-bottom:1px solid rgba(13,18,32,.07)}
.dl-log ul{list-style:none;margin:0;padding:18px 22px 20px;display:grid;
  grid-template-columns:1fr 1fr;gap:9px 22px}
.dl-risk>summary{display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.dl-risk>summary b{font-size:15px;font-weight:700;color:#b91c1c}
.dl-risk>summary em{font-style:normal;font-size:12.5px;color:#8a4949}
.dl-risk>summary .dl-ico{width:18px;height:18px;color:#DC2626}
.dl-risk[open]>summary{margin-bottom:14px}
.dl-risk ul{list-style:none;margin:0;padding:0;display:grid;gap:12px}

/* ============================ 下载 ============================ */
.dl-dcard{position:relative;max-width:780px;margin:0 auto;text-align:center;border-radius:24px;
  padding:34px 36px 28px;overflow:hidden;background:#fff;
  border:1px solid #dbe4f8;
  box-shadow:0 34px 74px -42px rgba(15,76,255,.55)}
.dl-dcard::before{content:"";position:absolute;left:0;right:0;top:0;height:3px;
  background:linear-gradient(90deg,#0F4CFF,#5b7cff 42%,#7C3AED)}
.dl-dcard h3{font-size:22px;font-weight:800;margin:0;letter-spacing:-.02em}
.dl-dcard>p{margin:10px 0 0;font-size:13.5px;color:#5a6579}
.dl-drow{display:flex;justify-content:center;gap:12px;margin-top:18px;flex-wrap:wrap}
.dl-drow .dl-btn{font-size:15px;padding:15px 28px;border-radius:12px}
.dl-btn-o.dl-off{opacity:.5;pointer-events:none}
.dl-dmeta{display:grid;grid-template-columns:repeat(2,1fr);gap:13px 18px;margin-top:18px;padding-top:16px;
  border-top:1px solid rgba(13,18,32,.08)}
.dl-dmeta>div{display:flex;align-items:center;justify-content:center;gap:7px;font-size:12.5px;color:#5a6579;
  flex-wrap:wrap;text-align:center}
.dl-dmeta .dl-ico{width:15px;height:15px;color:#828b9f;flex:none}
.dl-dmeta b{color:#0d1220;font-weight:700}
.dl-dwarn{margin:14px 0 0;font-size:12.5px;line-height:1.8;color:#5f687c}
.dl-dwarn b{color:#39435a;font-weight:600}
.dl-log li{display:flex;gap:9px;font-size:12.8px;line-height:1.8;color:#5a6579}
.dl-log li .dl-ico{width:15px;height:15px;color:#0F4CFF;flex:none;margin-top:3px;stroke-width:2.1}
.dl-log li b{color:#0d1220;font-weight:700}

/* ============================ 反馈与联系 ============================ */
.dl-fb{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.dl-fc{text-align:center;padding:22px 20px 22px;border-radius:18px;background:#fff;
  border:1px solid #e7ebf5;box-shadow:0 16px 34px -30px rgba(13,18,32,.32);
  transition:transform .3s,border-color .3s,box-shadow .3s}
.dl-fc:hover{transform:translateY(-3px);border-color:#c6d6fb;
  box-shadow:0 22px 44px -30px rgba(15,76,255,.44)}
.dl-fi{width:43px;height:43px;border-radius:13px;display:grid;place-items:center;margin:0 auto 11px;background:#eef3ff}
.dl-fi .dl-ico{width:23px;height:23px;color:#0F4CFF}
.dl-fc h3{font-size:16px;font-weight:700;margin:0 0 10px}
.dl-fc p{margin:0 0 11px;font-size:13.5px;line-height:1.8;color:#5a6579}
.dl-copy{display:inline-flex;align-items:center;justify-content:center;gap:8px;font-family:inherit;
  font-size:13px;font-weight:700;color:#39435a;background:#f2f4f9;border:0;cursor:pointer;
  padding:10px 18px;border-radius:10px;letter-spacing:.02em;transition:.22s}
.dl-copy .dl-ico{width:14px;height:14px;color:#828b9f}
.dl-copy:hover,.dl-copy.dl-done{background:#0F4CFF;color:#fff;transform:translateY(-1px)}
.dl-copy:hover .dl-ico,.dl-copy.dl-done .dl-ico{color:#fff}
.dl-cmt{position:relative;display:flex;align-items:center;gap:20px;margin-top:16px;padding:20px 24px;
  border-radius:18px;overflow:hidden;
  background:linear-gradient(100deg,#08224f,#0d3aa8 56%,#0F4CFF);color:#fff;
  box-shadow:0 26px 54px -34px rgba(15,76,255,.7)}
.dl-cmt::after{content:"";position:absolute;right:-60px;top:-90px;width:280px;height:280px;border-radius:50%;
  background:radial-gradient(closest-side,rgba(150,190,255,.34),transparent 72%);pointer-events:none}
.dl-cmt>*{position:relative;z-index:1}
.dl-cmt-ic{width:50px;height:50px;border-radius:15px;display:grid;place-items:center;flex:none;
  background:rgba(255,255,255,.16);box-shadow:inset 0 0 0 1px rgba(255,255,255,.22)}
.dl-cmt-ic .dl-ico{width:24px;height:24px;color:#fff}
.dl-cmt-tx{flex:1;min-width:0}
.dl-cmt-tx h3{font-size:17.5px;font-weight:700;margin:0 0 6px}
.dl-cmt-tx p{margin:0;font-size:13.5px;color:rgba(255,255,255,.78)}
.dl-cmt-btn{background:#fff;color:#0b2f7a;box-shadow:0 8px 22px rgba(0,0,0,.18)}
.dl-cmt-btn:hover{background:#fff;color:#0b2f7a}
.dl-bug{margin-top:14px;text-align:center;font-size:12.8px;line-height:1.8;color:#5f687c}
.dl-bug b{color:#39435a;font-weight:600}

/* ============================ 页脚 ============================ */
#dl-foot{border-top:1px solid rgba(13,18,32,.08);padding:36px 0 26px;background:#fff}
.dl-fin{max-width:1120px;margin:0 auto;padding:0 32px;display:flex;align-items:center;gap:26px;
  justify-content:space-between;flex-wrap:wrap;font-size:13px;color:#5a6579}
.dl-fl{display:flex;align-items:center;gap:12px;font-size:12.5px;line-height:1.7;color:#5f687c}
.dl-fl img{width:36px;height:36px;border-radius:10px;object-fit:cover}
.dl-fl b{display:block;font-size:14px;font-weight:700;color:#0d1220;letter-spacing:-.01em}
.dl-fin a{color:#0F4CFF;font-weight:600}
.dl-fnote{margin-top:16px;padding-top:16px;border-top:1px solid rgba(13,18,32,.06);
  font-size:12px;color:#5f687c;display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap}

/* ============================ 浮层 ============================ */
#dl-top{position:fixed;right:24px;bottom:26px;width:44px;height:44px;border-radius:13px;border:0;
  background:#fff;color:#0d1220;box-shadow:0 10px 30px rgba(13,18,32,.16),inset 0 0 0 1px rgba(13,18,32,.07);
  cursor:pointer;display:grid;place-items:center;opacity:0;visibility:hidden;transform:translateY(8px);
  transition:.28s;z-index:56}
#dl-top .dl-ico{width:19px;height:19px}
#dl-top:hover{background:#0F4CFF;color:#fff;box-shadow:0 12px 32px rgba(15,76,255,.34)}
#dl-top.dl-on{opacity:1;visibility:visible;transform:none}
#dl-bar{position:fixed;left:0;right:0;bottom:0;z-index:56;display:none;align-items:center;gap:14px;
  padding:11px 18px;background:rgba(255,255,255,.94);
  -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
  box-shadow:0 -6px 24px rgba(13,18,32,.1);border-top:1px solid rgba(13,18,32,.07);
  transform:translateY(105%);transition:transform .32s cubic-bezier(.22,1,.36,1)}
#dl-bar.dl-on{transform:none}
.dl-bin{display:flex;align-items:center;gap:11px;flex:1;min-width:0}
.dl-bin img{width:36px;height:36px;border-radius:10px;object-fit:cover;flex:none}
.dl-bin b{display:block;font-size:14px;font-weight:700;letter-spacing:-.01em}
.dl-bin span{display:block;font-size:11.5px;color:#5f687c;margin-top:2px}
#dl-bar .dl-btn{padding:12px 20px;flex:none}
#dl-lb{position:fixed;inset:0;z-index:70;background:rgba(9,13,24,.9);
  -webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  display:grid;place-items:center;padding:40px;opacity:0;visibility:hidden;transition:.28s;cursor:zoom-out}
#dl-lb.dl-on{opacity:1;visibility:visible}
#dl-lb img{max-width:min(1200px,94vw);max-height:88vh;border-radius:12px;
  box-shadow:0 40px 100px rgba(0,0,0,.6);transform:scale(.97);transition:transform .34s cubic-bezier(.22,1,.36,1)}
#dl-lb.dl-on img{transform:none}
#dl-lb i{position:absolute;right:26px;top:26px;width:42px;height:42px;border-radius:12px;font-style:normal;
  background:rgba(255,255,255,.14);display:grid;place-items:center;cursor:pointer;transition:.2s}
#dl-lb i:hover{background:rgba(255,255,255,.26)}
#dl-lb i .dl-ico{width:20px;height:20px;color:#fff;stroke-width:2.2}
#dl-toast{position:fixed;left:50%;bottom:34px;transform:translate(-50%,14px);z-index:80;
  background:#0d1220;color:#fff;font-size:13px;font-weight:600;padding:12px 22px;border-radius:11px;
  box-shadow:0 14px 40px rgba(0,0,0,.3);opacity:0;visibility:hidden;transition:.26s;pointer-events:none}
#dl-toast.dl-on{opacity:1;visibility:visible;transform:translate(-50%,0)}

/* ============================ 响应式 ============================ */
@media (max-width:1180px){
  .dl-links{gap:17px}
  .dl-mod{grid-template-columns:250px 1fr}
}
@media (max-width:1024px){
  .dl-links{display:none}
  .dl-mn{display:grid}
  .dl-hero{padding-top:72px}
  .dl-stage{padding:0 24px}
  .dl-3,.dl-sell,.dl-steps,.dl-cg{grid-template-columns:repeat(2,1fr)}
  .dl-fb{grid-template-columns:repeat(2,1fr)}
  .dl-mod{grid-template-columns:1fr}
  .dl-mlist{flex-direction:row;overflow-x:auto;gap:8px;padding-bottom:6px;scrollbar-width:none}
  .dl-mlist::-webkit-scrollbar{display:none}
  .dl-mi{flex:none;width:auto;padding:10px 14px;box-shadow:inset 0 0 0 1px rgba(13,18,32,.07)}
  .dl-mi em{display:none}
  .dl-mi.dl-on{box-shadow:0 8px 22px rgba(15,76,255,.16),inset 0 0 0 1.5px #0F4CFF}
  .dl-mi i{width:26px;height:26px}
  .dl-mpane{min-height:0;padding:24px 22px 28px}
  .dl-pbody{grid-template-columns:1fr}
  .dl-two{grid-template-columns:1fr}
  .dl-capc{padding:13px 15px}
  .dl-dmeta{grid-template-columns:repeat(2,1fr);gap:16px 10px}
  .dl-log ul{grid-template-columns:1fr}
}
@media (max-width:768px){
  .dl-in,.dl-nin,.dl-menu,#dl-foot .dl-fin{padding-left:20px;padding-right:20px}
  .dl-hero{padding-top:56px}
  .dl-stage{padding:0 20px}
  .dl-sec{padding:46px 0}
  .dl-ngrid{grid-template-columns:repeat(2,1fr);gap:0}
  .dl-ncell{padding:22px 20px 24px}
  .dl-ncell:nth-child(3){border-left:0}
  .dl-ncell:nth-child(1),.dl-ncell:nth-child(2){border-bottom:1px solid #eef1f8}
  .dl-ncell::after{display:none}
  .dl-specs{gap:22px 28px;max-width:100%}
  .dl-spec{flex:1 1 40%}
  .dl-hbtns .dl-btn{flex:1 1 100%}
  .dl-3,.dl-sell,.dl-steps,.dl-cg,.dl-fb{grid-template-columns:1fr}
  .dl-dcard{padding:32px 22px 30px;border-radius:20px}
  .dl-drow .dl-btn{flex:1 1 100%}
  .dl-dmeta{grid-template-columns:1fr;gap:12px}
  .dl-dmeta>div{justify-content:flex-start}
  .dl-cmt{flex-direction:column;text-align:center;gap:16px;padding:26px 22px}
  .dl-cmt-btn{width:100%}
  .dl-qa p{padding:0 20px 20px 20px}
  .dl-qh{padding:16px 18px;font-size:14px}
  #dl-lb{padding:18px}
  #dl-lb i{right:14px;top:14px}
  #dl-bar{display:flex}
  #dl-top{bottom:84px;right:16px}
  .dl-fnote{flex-direction:column;gap:8px}
}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  #dl [data-rv]{opacity:1;transform:none;transition:none}
  .dl-pan.dl-on{animation:none}
  .dl-stage::after{animation:none}
}

/* ===== 功能清单 · 滚动联动（脚本加 .dl-scon 才生效；仅宽屏） ===== */
.dl-mod{--sc-step:132px;--sc-n:10;--sc-tail:646px;--sc-top:80px;
  /* 左列与右侧卡片统一高度：两边底部齐平，切模块时不再忽高忽低 */
  /* 卡片高度不再吃满整屏：内容只有 283~485px，撑到 786 只会露出一大片空 */
  --sc-h:clamp(520px,calc(100vh - var(--sc-top) - 172px),664px)}
.dl-mnum{display:none}
@media (min-width:1025px){
  .dl-mod.dl-scon{position:relative;min-height:calc(var(--sc-step) * var(--sc-n) + var(--sc-tail))}
  .dl-mod.dl-scon .dl-mlist,
  .dl-mod.dl-scon .dl-mpane{position:sticky;top:var(--sc-top);align-self:start;
    height:var(--sc-h)}
  /* 左列 10 项等分撑满，底部与右侧卡片齐平 */
  .dl-mod.dl-scon .dl-mlist{justify-content:space-between}
  .dl-mod.dl-scon .dl-mi{flex:1 1 0;min-height:46px}
  .dl-mod.dl-scon .dl-mpane{display:flex;flex-direction:column}
  .dl-mod.dl-scon .dl-mpages{flex:1 1 auto;min-height:0;display:flex;flex-direction:column;
    overflow-y:auto;overflow-x:hidden;scrollbar-width:thin;scrollbar-color:rgba(13,18,32,.16) transparent}
  /* 面板铺满卡片：面板撑满、主体区 flex 拉伸、要点列空间均分 —— 内容少的模块
     也不会在卡片下半部留一大片空 */
  .dl-mod.dl-scon .dl-pan.dl-on{width:100%;margin:0;display:flex;flex-direction:column;
    flex:1 1 auto;min-height:0}
  /* 联动模式下把面板排版压紧一档：让最高的那个面板也整体装进视口，不用卡片内滚动 */
  .dl-mod.dl-scon .dl-mpane{padding:16px 22px 18px}
  .dl-mod.dl-scon .dl-ptop{padding-bottom:12px}
  /* 「截图还没补」占位块：跟截图位等高、有质感，不再是灰虚线小框 */
  .dl-mod.dl-scon .dl-noshot{align-self:start;align-content:center;gap:13px;
    padding:34px 26px;border-radius:16px;
    background:radial-gradient(ellipse 72% 58% at 50% 0%,rgba(15,76,255,.075),transparent 72%),
      linear-gradient(165deg,#f8fbff,#edf3ff);
    box-shadow:inset 0 0 0 1px rgba(15,76,255,.1)}
  .dl-mod.dl-scon .dl-noshot .dl-ico{width:46px;height:46px;color:rgba(15,76,255,.9);opacity:1;
    padding:16px;box-sizing:content-box;border-radius:24px;background:#fff;
    box-shadow:0 16px 32px -16px rgba(15,76,255,.55),0 2px 6px rgba(13,18,32,.05),
      inset 0 0 0 1px rgba(15,76,255,.14)}
  .dl-mod.dl-scon .dl-noshot b{margin-top:2px;font-size:14px;font-weight:700;color:#39435a}
  .dl-mod.dl-scon .dl-noshot span{max-width:300px;font-size:12.5px;line-height:1.72;color:#5f687c}
  .dl-mod.dl-scon .dl-pbody{margin-top:16px;gap:24px;flex:1 1 auto;min-height:0;
    align-items:start;grid-template-columns:minmax(0,358px) minmax(0,1fr)}
  /* 要点列把可用高度均分掉；截图/占位块跟着拉伸到同一高度，左右两列底部对齐 */
  /* 要点少时（只有 2 条）space-between 会把首尾拉到上下两端、中间空一大块；
     改用"安全居中"：首尾 margin:auto，空间富余才均分，不足时自动退化为 0（不会裁顶部） */
  .dl-mod.dl-scon .dl-points>.dl-pt:first-child{margin-top:auto}
  .dl-mod.dl-scon .dl-points>.dl-pt:last-child{margin-bottom:auto;border-bottom:0}
  /* 截图列不拉伸：容器贴合图片、整体垂直居中，与右侧文字块对齐 */
  .dl-mod.dl-scon .dl-shot{align-self:start}
  .dl-mod.dl-scon .dl-shot img{height:auto}
  /* 每条要点做成独立小卡：比裸文字 + 分隔线有分量，短面板也不会显得空 */
  .dl-mod.dl-scon .dl-points{gap:8px}
  .dl-mod.dl-scon .dl-pt{padding:11px 14px;border-radius:12px;border-bottom:0;
    background:#f7f9fd;box-shadow:inset 0 0 0 1px rgba(13,18,32,.045)}
  .dl-mod.dl-scon .dl-pt b{margin-bottom:3px}
  .dl-mod.dl-scon .dl-pt p,
  .dl-mod.dl-scon .dl-lede{line-height:1.68}
  /* 小屏 / 矮视口下卡片内容仍可能超长：底边渐隐，明确告诉用户"下面还有" */
  .dl-mod.dl-scon .dl-mpane::after{content:"";position:absolute;left:1px;right:1px;bottom:1px;
    height:66px;border-radius:0 0 17px 17px;pointer-events:none;z-index:3;opacity:0;
    transition:opacity .25s;
    background:linear-gradient(to bottom,rgba(255,255,255,0),rgba(255,255,255,.93) 72%,#fff)}
  .dl-mod.dl-scon .dl-mpane.dl-more::after{opacity:1}
  .dl-mod.dl-scon .dl-mpages::-webkit-scrollbar{width:7px}
  .dl-mod.dl-scon .dl-mpages::-webkit-scrollbar-thumb{background:rgba(13,18,32,.14);border-radius:4px}
  .dl-mod.dl-scon .dl-mpages::-webkit-scrollbar-track{background:transparent}
  /* 激活项的左侧竖条随滚动生长：填满即换下一项 */
  .dl-mod.dl-scon .dl-mi{position:relative;overflow:hidden}
  .dl-mod.dl-scon .dl-mi::after{content:"";position:absolute;left:0;top:0;width:3px;height:100%;
    border-radius:3px;background:#0F4CFF;transform:scaleY(0);transform-origin:0 0;
    transition:transform .12s linear}
  .dl-mod.dl-scon .dl-mi.dl-on{box-shadow:0 6px 20px rgba(15,76,255,.1),inset 3px 0 0 rgba(15,76,255,.16)}
  .dl-mod.dl-scon .dl-mi.dl-on::after{transform:scaleY(var(--sc-p,0))}
  .dl-mod.dl-scon .dl-mnum{display:flex;align-items:baseline;gap:5px;position:absolute;top:22px;right:26px;
    z-index:2;font-size:12px;font-weight:700;letter-spacing:.02em;color:#5f687c;
    font-variant-numeric:tabular-nums;pointer-events:none}
  .dl-mod.dl-scon .dl-mnum b{font-size:19px;color:#0F4CFF;letter-spacing:-.02em}
  .dl-mod.dl-scon .dl-mnum i{font-style:normal}
  /* 工具库（7 条要点、自然高 756px）单独走双列，才装得进卡片 */
  /* 这个面板要点最多（7 条），旁边再立一列截图就装不下了：
     联动模式下让要点吃掉全宽，每条少折一行，正文宽度足够、字号不用压
     （窄屏/点击模式下截图照常显示） */
  .dl-mod.dl-scon .dl-2col .dl-pbody{grid-template-columns:minmax(0,1fr);gap:0}
  .dl-mod.dl-scon .dl-2col .dl-shot{display:none}
  .dl-mod.dl-scon .dl-2col .dl-points{gap:6px}
  .dl-mod.dl-scon .dl-2col .dl-pt{padding:7px 14px}
  .dl-mod.dl-scon .dl-2col .dl-pt b{font-size:12.5px;margin-bottom:2px}
  .dl-mod.dl-scon .dl-2col .dl-pt p{font-size:12.8px;line-height:1.6}
}

/* ==========================================================================
   v7 · 顶栏 / 页脚 / 底条 / 回顶 —— 质感与动效
   （追加在样式表末尾，覆盖同名规则；装饰层一律 pointer-events:none）
   ========================================================================== */

/* ---------- 1. 顶部滚动进度：3px 渐变 + 发光 + 光头光点 ---------- */
#dl-prog{height:3px}
#dl-prog i{background:linear-gradient(90deg,#0F4CFF 0%,#3ddcff 52%,#a06bff 100%);
  box-shadow:0 0 12px rgba(61,220,255,.7),0 0 3px rgba(15,76,255,.9);
  position:relative;border-radius:0 3px 3px 0}
#dl-prog i::after{content:"";position:absolute;right:0;top:50%;width:9px;height:9px;border-radius:50%;
  transform:translate(45%,-50%);background:#fff;
  box-shadow:0 0 6px 2px rgba(61,220,255,.95),0 0 16px 5px rgba(15,76,255,.55)}

/* ---------- 2. 顶栏：底部流光霓虹线 ---------- */
#dl-nav::after{content:"";position:absolute;left:0;right:0;bottom:-1px;height:1.5px;pointer-events:none;
  background:linear-gradient(90deg,transparent 0%,rgba(15,76,255,.9) 30%,rgba(61,220,255,1) 50%,
    rgba(160,107,255,.9) 70%,transparent 100%);
  background-size:220% 100%;background-repeat:no-repeat;
  opacity:0;transition:opacity .45s;
  animation:dlFlowX 5.4s linear infinite}
#dl-nav.dl-on::after{opacity:.95}
#dl-nav.dl-dk::after{opacity:1;height:2px;
  filter:drop-shadow(0 0 6px rgba(61,220,255,.75))}
@keyframes dlFlowX{from{background-position:130% 0}to{background-position:-130% 0}}

/* 深色态：玻璃再加一层纵向渐变，别是一块死黑 */
#dl-nav.dl-dk{background:linear-gradient(180deg,rgba(9,14,28,.74) 0%,rgba(8,12,24,.46) 62%,rgba(8,12,24,.3) 100%)}

/* ---------- 3. 顶栏：光标跟随光条（.dl-ink）---------- */
.dl-links{position:relative}
.dl-ink{position:absolute;left:0;top:50%;width:0;height:30px;border-radius:9px;pointer-events:none;
  transform:translateY(-50%);
  background:linear-gradient(180deg,rgba(15,76,255,.1),rgba(61,220,255,.15));
  box-shadow:inset 0 0 0 1px rgba(15,76,255,.2),0 8px 18px -10px rgba(15,76,255,.6);
  opacity:0;
  transition:transform .36s cubic-bezier(.22,1,.36,1),width .36s cubic-bezier(.22,1,.36,1),opacity .2s}
.dl-links.dl-hov .dl-ink{opacity:1}
#dl-nav.dl-dk .dl-ink{background:linear-gradient(180deg,rgba(122,162,255,.16),rgba(61,220,255,.15));
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.18),0 6px 18px -10px rgba(61,220,255,.6)}

/* 链接：上浮 + 当前区块渐变下划线 */
.dl-k{transition:color .18s,transform .24s cubic-bezier(.22,1,.36,1)}
.dl-k:hover{transform:translateY(-1px)}
.dl-k::after{content:"";position:absolute;left:0;right:0;bottom:-4px;height:2px;border-radius:2px;
  background:linear-gradient(90deg,#0F4CFF,#3ddcff 70%,#a06bff);
  transform:scaleX(0);transform-origin:left;opacity:.9;
  transition:transform .34s cubic-bezier(.22,1,.36,1)}
.dl-k.dl-cur::after{transform:scaleX(1)}
.dl-k.dl-cur{text-shadow:0 0 16px rgba(15,76,255,.3)}
#dl-nav.dl-dk .dl-k.dl-cur{text-shadow:0 0 16px rgba(122,162,255,.5)}

/* ---------- 4. 按钮：扫光 + 悬浮光晕 ---------- */
.dl-btn-p{position:relative;overflow:hidden}
.dl-btn-p::after{content:"";position:absolute;top:-20%;bottom:-20%;left:-70px;width:36px;pointer-events:none;
  background:linear-gradient(100deg,transparent 0%,rgba(255,255,255,.02) 34%,rgba(255,255,255,.5) 50%,
    rgba(255,255,255,.02) 66%,transparent 100%);
  transform:skewX(-18deg);opacity:0}
.dl-btn-p:hover::after{opacity:1;animation:dlSheen .78s cubic-bezier(.3,0,.25,1)}
@keyframes dlSheen{from{left:-70px}to{left:calc(100% + 20px)}}

/* 顶栏那颗「免费下载」：常驻周期扫光 + 呼吸光环 + 更亮的悬浮光晕 */
.dl-ngo{box-shadow:0 8px 24px -6px rgba(15,76,255,.5),inset 0 1px 0 rgba(255,255,255,.24),
  0 0 20px -2px rgba(45,140,255,.4);
  animation:dlRing 3.4s ease-out infinite}
.dl-ngo::after{opacity:1;animation:dlSheenIdle 5.2s cubic-bezier(.45,0,.25,1) infinite}
.dl-ngo:hover{box-shadow:0 14px 34px -8px rgba(15,76,255,.62),inset 0 1px 0 rgba(255,255,255,.3),
  0 0 32px 2px rgba(61,220,255,.6)}
.dl-ngo:hover::after{animation:dlSheen .78s cubic-bezier(.3,0,.25,1)}
@keyframes dlSheenIdle{0%{left:-70px}18%{left:calc(100% + 20px)}100%{left:calc(100% + 20px)}}
@keyframes dlRing{0%{outline:2px solid rgba(61,220,255,.5);outline-offset:0}
  72%,100%{outline:2px solid rgba(61,220,255,0);outline-offset:8px}}

/* ---------- 5. logo 图标：呼吸光晕 ---------- */
.dl-logo{position:relative}
.dl-logo::before{content:"";position:absolute;left:0;top:50%;width:29px;height:29px;border-radius:8px;
  pointer-events:none;box-shadow:0 0 16px 3px rgba(45,140,255,.5);
  animation:dlBreathe 3.8s ease-in-out infinite}
/**
 * 注意：这里不能用 transform 参与动画 —— .dl-logo::before 的垂直居中靠 translateY(-50%)，
 * 一旦 keyframes 里写 transform 就会把居中带跑，图标会整体上移。
 * 改用 opacity + box-shadow 做呼吸，居中稳定。
 */
@keyframes dlBreathe{0%,100%{opacity:.34;box-shadow:0 0 12px 2px rgba(45,140,255,.42)}
  50%{opacity:.85;box-shadow:0 0 22px 5px rgba(61,220,255,.55)}}

/* 顶栏 logo 外面再套一圈自转的渐变色环（跟页脚同一套语汇） */
.dl-logo::after{content:"";position:absolute;left:-3px;top:50%;width:35px;height:35px;border-radius:11px;
  transform:translateY(-50%);pointer-events:none;opacity:.95;
  background:conic-gradient(from 0deg,rgba(15,76,255,0),rgba(61,220,255,.95) 25%,
    rgba(160,107,255,.9) 50%,rgba(15,76,255,0) 78%,rgba(15,76,255,0));
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 2px),#000 calc(100% - 2px));
  mask:radial-gradient(farthest-side,transparent calc(100% - 2px),#000 calc(100% - 2px));
  animation:dlSpinSoft 7.5s linear infinite}
@keyframes dlSpinSoft{to{transform:translateY(-50%) rotate(360deg)}}

/* ---------- 6. 页脚：辉光 + 网格 + 顶部流光霓虹线 ---------- */
#dl-foot{position:relative;overflow:hidden;padding:46px 0 28px;border-top:0;
  background:
    radial-gradient(ellipse 64% 130% at 50% 0%,rgba(15,76,255,.085),transparent 72%),
    linear-gradient(180deg,#fff 0%,#f8fafd 100%)}
#dl-foot::before{content:"";position:absolute;inset:0;pointer-events:none;opacity:.55;
  background-image:linear-gradient(rgba(13,18,32,.045) 1px,transparent 1px),
    linear-gradient(90deg,rgba(13,18,32,.045) 1px,transparent 1px);
  background-size:34px 34px;
  -webkit-mask-image:radial-gradient(ellipse 66% 78% at 50% 0%,#000 0%,transparent 74%);
  mask-image:radial-gradient(ellipse 66% 78% at 50% 0%,#000 0%,transparent 74%)}
#dl-foot::after{content:"";position:absolute;left:0;right:0;top:0;height:3px;pointer-events:none;
  box-shadow:0 0 16px rgba(61,220,255,.55),0 0 4px rgba(15,76,255,.75);
  background:linear-gradient(90deg,transparent 0%,rgba(15,76,255,.85) 24%,rgba(61,220,255,1) 50%,
    rgba(160,107,255,.85) 76%,transparent 100%);
  background-size:200% 100%;background-repeat:no-repeat;
  animation:dlFlowX2 6.8s linear infinite}
@keyframes dlFlowX2{from{background-position:0 0}to{background-position:200% 0}}
.dl-fin{position:relative;z-index:1}

/* 页脚 logo：旋转渐变光环（套在图标外面一圈，慢慢自转） */
.dl-fl{position:relative}
.dl-fl::before{content:"";position:absolute;left:-3px;top:50%;width:42px;height:42px;border-radius:13px;
  transform:translateY(-50%);pointer-events:none;z-index:1;
  background:conic-gradient(from 0deg,rgba(15,76,255,0),rgba(61,220,255,.95) 26%,
    rgba(160,107,255,.9) 50%,rgba(15,76,255,0) 78%,rgba(15,76,255,0));
  -webkit-mask:radial-gradient(farthest-side,transparent calc(100% - 2px),#000 calc(100% - 2px));
  mask:radial-gradient(farthest-side,transparent calc(100% - 2px),#000 calc(100% - 2px));
  animation:dlSpin 6.5s linear infinite}
@keyframes dlSpin{to{transform:translateY(-50%) rotate(360deg)}}

/* 页脚：一道柔光缓慢扫过（每 11 秒一次），让整块有"活着"的感觉 */
#dl-foot .dl-fx{position:absolute;top:0;bottom:0;left:-40%;width:36%;pointer-events:none;
  background:linear-gradient(100deg,transparent,rgba(15,76,255,.06) 42%,
    rgba(61,220,255,.085) 56%,transparent);
  transform:skewX(-14deg);
  animation:dlFootSweep 11s cubic-bezier(.45,0,.5,1) infinite}
@keyframes dlFootSweep{0%{left:-40%}52%{left:132%}100%{left:132%}}

/* 页脚 logo：呼吸光环 */
.dl-fl img{animation:dlFootLogo 4.2s ease-in-out infinite}
@keyframes dlFootLogo{0%,100%{box-shadow:0 0 0 0 rgba(15,76,255,.26),0 4px 12px -4px rgba(15,76,255,.4)}
  50%{box-shadow:0 0 0 6px rgba(15,76,255,.06),0 8px 20px -5px rgba(15,76,255,.55)}}

/* 特性胶囊（替代原来一行灰字） */
.dl-fpills{display:flex;flex-wrap:wrap;gap:7px;justify-content:center;flex:1 1 auto}
.dl-fpills span{font-size:12.5px;line-height:1;color:#48536a;padding:6px 11px;border-radius:999px;
  background:rgba(15,76,255,.062);
  box-shadow:inset 0 0 0 1px rgba(15,76,255,.2);
  transition:transform .24s cubic-bezier(.22,1,.36,1),background .24s,color .24s,box-shadow .24s}
.dl-fpills span:hover{transform:translateY(-2px);background:rgba(15,76,255,.1);color:#0F4CFF;
  box-shadow:inset 0 0 0 1px rgba(15,76,255,.32),0 8px 16px -8px rgba(15,76,255,.55)}

/* 页脚外链：做成胶囊按钮，悬浮转蓝底白字 */
.dl-fin a{display:inline-flex;align-items:center;gap:7px;padding:9px 16px;border-radius:999px;
  background:#fff;font-size:13px;
  box-shadow:inset 0 0 0 1px rgba(15,76,255,.24),0 5px 16px -9px rgba(15,76,255,.6);
  transition:transform .26s cubic-bezier(.22,1,.36,1),background .26s,color .26s,box-shadow .26s}
.dl-fin a .dl-ico{width:13px;height:13px;stroke-width:2;transition:transform .26s cubic-bezier(.22,1,.36,1)}
.dl-fin a:hover{background:linear-gradient(135deg,#3d70ff,#0F4CFF);color:#fff;
  box-shadow:0 12px 26px -10px rgba(15,76,255,.75);transform:translateY(-2px)}
.dl-fin a:hover .dl-ico{transform:translate(1px,-1px)}

/* 底注分隔线改渐变 */
.dl-fnote{border-top:0;position:relative;margin-top:18px;padding-top:18px}
.dl-fnote::before{content:"";position:absolute;left:0;right:0;top:0;height:1px;
  background:linear-gradient(90deg,transparent,rgba(13,18,32,.12) 18%,rgba(13,18,32,.12) 82%,transparent)}

/* 页脚进场（JS 给 .dl-inview；#dl 作用域够不到 footer，所以单独写一份） */
#dl-foot [data-rv]{opacity:0;transform:translateY(18px);
  transition:opacity .8s cubic-bezier(.22,1,.36,1),transform .8s cubic-bezier(.22,1,.36,1)}
#dl-foot [data-rv].dl-inview{opacity:1;transform:none}

/* ---------- 7. 移动底条 / 回顶按钮 ---------- */
#dl-bar{overflow:hidden}
#dl-bar::before{content:"";position:absolute;left:0;right:0;top:0;height:2px;pointer-events:none;
  background:linear-gradient(90deg,transparent 0%,rgba(15,76,255,.9) 28%,rgba(61,220,255,1) 50%,
    rgba(160,107,255,.9) 72%,transparent 100%);
  background-size:200% 100%;background-repeat:no-repeat;
  animation:dlFlowX2 5.6s linear infinite}

#dl-top{box-shadow:0 10px 30px rgba(13,18,32,.16),inset 0 0 0 1px rgba(13,18,32,.07),
  0 0 18px -4px rgba(15,76,255,.45)}
#dl-top .dl-ico{transition:transform .3s cubic-bezier(.22,1,.36,1)}
#dl-top:hover .dl-ico{transform:translateY(-2px)}
#dl-top.dl-on{animation:dlTopRing 3.8s ease-out infinite}
@keyframes dlTopRing{0%{outline:2px solid rgba(15,76,255,.34);outline-offset:0}
  70%,100%{outline:2px solid rgba(15,76,255,0);outline-offset:7px}}

/* ---------- 8. 窄屏微调 ---------- */
@media (max-width:1024px){
  #dl-nav::after{opacity:.8}
  .dl-fpills{gap:6px}
  .dl-fpills span{font-size:12px;padding:5px 10px}
}
@media (max-width:640px){
  .dl-fpills span:nth-child(n+4){display:none}   /* 手机上只留前三个，别挤成两行 */
  .dl-fpills{justify-content:flex-start}          /* 手机上跟 logo 一样左对齐，不要忽左忽居中 */
  #dl-foot{padding:34px 0 22px}
}

/* ---------- 9. 降级：尊重系统「减少动态效果」 ---------- */
@media (prefers-reduced-motion:reduce){
  #dl-prog i::after,#dl-nav::after,#dl-foot::after,#dl-bar::before,
  .dl-ngo,.dl-logo::before,.dl-logo::after,.dl-fl img,.dl-fl::before,#dl-foot .dl-fx,
  #dl-top.dl-on,.dl-btn-p::after{animation:none!important}
  .dl-ngo{outline:0!important}
  .dl-links.dl-hov .dl-ink{opacity:1}
  #dl-foot [data-rv]{opacity:1;transform:none;transition:none}
  .dl-k,.dl-k:hover,.dl-fpills span,.dl-fpills span:hover,
  .dl-fin a,.dl-fin a:hover{transform:none}
}
