﻿/* ============================================================
   小涵互联 · 液态玻璃设计系统 v1 (Liquid Glass)
   参考方向：MagicOS 11「流光通透」——折射 / 高光 / 模糊 / 流光
   独立样式表，无 !important，无覆盖层
   ============================================================ */

/* ---------- 1. 令牌 ---------- */
:root{
  --gx-font: "Inter","HarmonyOS Sans SC","PingFang SC","Microsoft YaHei",-apple-system,sans-serif;

  /* 底色 */
  --gx-bg-0:#07080f;
  --gx-bg-1:#0b0d18;

  /* 玻璃材质 */
  --gx-glass: rgba(255,255,255,.098);
  --gx-glass-hi: rgba(255,255,255,.145);
  --gx-glass-lo: rgba(255,255,255,.062);
  --gx-blur: 28px;
  --gx-sat: 180%;

  /* 描边与高光 */
  --gx-line: rgba(255,255,255,.165);
  --gx-line-hi: rgba(255,255,255,.22);
  --gx-spec-top: rgba(255,255,255,.42);
  --gx-spec-in: rgba(255,255,255,.14);

  /* 文字 */
  --gx-t1: #f4f6ff;
  --gx-t2: rgba(238,241,255,.66);
  --gx-t3: rgba(238,241,255,.40);

  /* 光色 */
  --gx-iris-a:#7b6bff;
  --gx-iris-b:#25d7ff;
  --gx-iris-c:#ff62b0;
  --gx-iris-d:#ffc861;

  /* 圆角 / 阴影 */
  --gx-r-xl: 30px;
  --gx-r-lg: 24px;
  --gx-r-md: 18px;
  --gx-r-sm: 13px;
  --gx-shadow: 0 16px 40px -22px rgba(0,0,0,.85), 0 1px 3px rgba(0,0,0,.4);
  --gx-shadow-hover: 0 26px 56px -24px rgba(0,0,0,.9), 0 2px 6px rgba(0,0,0,.45);

  /* 动效 */
  --gx-ease: cubic-bezier(.34,1.36,.64,1);
  --gx-ease-out: cubic-bezier(.22,.9,.3,1);
}

/* 浅色 / 磨砂玻璃（昼间通透） */
html.gx-light{
  --gx-bg-0:#eef1f8;
  --gx-bg-1:#f7f8fc;
  --gx-glass: rgba(255,255,255,.74);
  --gx-glass-hi: rgba(255,255,255,.9);
  --gx-glass-lo: rgba(255,255,255,.6);
  --gx-blur: 34px;
  --gx-sat: 200%;
  --gx-line: rgba(255,255,255,.95);
  --gx-line-hi: rgba(255,255,255,1);
  --gx-spec-top: rgba(255,255,255,.98);
  --gx-spec-in: rgba(255,255,255,.8);
  --gx-t1:#141726;
  --gx-t2:rgba(20,23,38,.62);
  --gx-t3:rgba(20,23,38,.38);
  --gx-shadow: 0 16px 34px -18px rgba(41,52,102,.26), 0 1px 3px rgba(41,52,102,.10), inset 0 1px 0 #fff;
  --gx-shadow-hover: 0 26px 48px -20px rgba(41,52,102,.34), 0 2px 6px rgba(41,52,102,.14), inset 0 1px 0 #fff;
}

/* ---------- 2. 基础 ---------- */
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%}
body{
  margin:0;
  min-height:100vh;
  font-family:var(--gx-font);
  color:var(--gx-t1);
  background:var(--gx-bg-0);
  -webkit-font-smoothing:antialiased;
  text-rendering:optimizeLegibility;
  overflow-x:hidden;
  transition:background .5s var(--gx-ease-out), color .4s var(--gx-ease-out);
}
a{color:inherit;text-decoration:none}
button{font-family:inherit;border:0;background:none;cursor:pointer;color:inherit}
img{max-width:100%;display:block}
::selection{background:rgba(123,107,255,.35)}

/* ---------- 3. 背景流光层（折射光晕） ---------- */
.gx-aurora{
  position:fixed;
  inset:-20vmax;
  z-index:-2;
  pointer-events:none;
  filter:blur(84px) saturate(120%);
  opacity:.5;
}
/* 中央暗角：把光晕压到边缘，保证内容区干净可读 */
.gx-veil{
  position:fixed;inset:0;z-index:-1;pointer-events:none;
  background:radial-gradient(74% 60% at 50% 30%, rgba(7,8,15,.9) 0%, rgba(7,8,15,.55) 46%, rgba(7,8,15,0) 82%);
}
html.gx-light .gx-veil{
  background:radial-gradient(74% 60% at 50% 30%, rgba(255,255,255,.92) 0%, rgba(255,255,255,.6) 46%, rgba(255,255,255,0) 82%);
}
.gx-aurora i{
  position:absolute;
  display:block;
  border-radius:50%;
  mix-blend-mode:screen;
  will-change:transform;
}
html.gx-light .gx-aurora{mix-blend-mode:multiply;opacity:.18;filter:saturate(.42) blur(2px)}
.gx-aurora i:nth-child(1){width:46vmax;height:46vmax;left:4%;top:2%;background:radial-gradient(circle at 35% 35%,#6a5bff,rgba(106,91,255,0) 68%);animation:gxDrift1 26s ease-in-out infinite}
.gx-aurora i:nth-child(2){width:40vmax;height:40vmax;right:2%;top:8%;background:radial-gradient(circle at 60% 40%,#12c8ff,rgba(18,200,255,0) 66%);animation:gxDrift2 32s ease-in-out infinite}
.gx-aurora i:nth-child(3){width:38vmax;height:38vmax;left:28%;bottom:-6%;background:radial-gradient(circle at 50% 50%,#ff5cae,rgba(255,92,174,0) 66%);animation:gxDrift3 29s ease-in-out infinite}
.gx-aurora i:nth-child(4){width:26vmax;height:26vmax;right:22%;bottom:6%;background:radial-gradient(circle at 50% 50%,#ffb84d,rgba(255,184,77,0) 64%);animation:gxDrift4 24s ease-in-out infinite}

@keyframes gxDrift1{0%,100%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(6vmax,4vmax,0) scale(1.12)}}
@keyframes gxDrift2{0%,100%{transform:translate3d(0,0,0) scale(1.05)}50%{transform:translate3d(-7vmax,6vmax,0) scale(.94)}}
@keyframes gxDrift3{0%,100%{transform:translate3d(0,0,0) scale(.96)}50%{transform:translate3d(5vmax,-6vmax,0) scale(1.1)}}
@keyframes gxDrift4{0%,100%{transform:translate3d(0,0,0) scale(1)}50%{transform:translate3d(-4vmax,-3vmax,0) scale(1.14)}}

/* 细颗粒纹理，消除塑料感 */
.gx-grain{
  position:fixed;inset:0;z-index:-1;pointer-events:none;
  opacity:.16;mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E");
}

/* ---------- 4. 玻璃基类 ---------- */
.gx-glass{
  position:relative;
  background:var(--gx-glass);
  border:1px solid var(--gx-line);
  border-radius:var(--gx-r-lg);
  -webkit-backdrop-filter:blur(var(--gx-blur)) saturate(var(--gx-sat));
  backdrop-filter:blur(var(--gx-blur)) saturate(var(--gx-sat));
  box-shadow:var(--gx-shadow), inset 0 1px 0 var(--gx-spec-in);
  overflow:hidden;
  isolation:isolate;
  transition:transform .42s var(--gx-ease), box-shadow .42s var(--gx-ease-out),
             border-color .42s var(--gx-ease-out), background .42s var(--gx-ease-out);
}
/* 顶部折射高光 */
.gx-glass::before{
  content:"";
  position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:
    linear-gradient(180deg, var(--gx-spec-top) 0%, transparent 14%),
    radial-gradient(120% 80% at 12% -10%, rgba(255,255,255,.18), transparent 55%);
  opacity:.85;
  z-index:-1;
}
/* 边缘焦散光边 */
.gx-glass::after{
  content:"";
  position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  padding:1px;
  background:linear-gradient(150deg, rgba(255,255,255,.55), rgba(255,255,255,0) 32%, rgba(255,255,255,0) 68%, rgba(255,255,255,.30));
  -webkit-mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  -webkit-mask-composite:xor;
  mask:linear-gradient(#000 0 0) content-box, linear-gradient(#000 0 0);
  mask-composite:exclude;
  opacity:.7;
  transition:opacity .4s var(--gx-ease-out);
}
.gx-glass.gx-hover:hover{
  transform:translateY(-5px);
  background:var(--gx-glass-hi);
  border-color:var(--gx-line-hi);
  box-shadow:var(--gx-shadow-hover), inset 0 1px 0 var(--gx-spec-in);
}
.gx-glass.gx-hover:hover::after{opacity:1}

/* ---------- 5. 布局壳 ---------- */
.gx-wrap{width:min(1240px,calc(100% - 48px));margin-inline:auto}

/* ---------- 6. 顶部悬浮导航 ---------- */
.gx-nav{
  position:sticky;top:14px;z-index:60;
  width:min(1240px,calc(100% - 32px));
  margin:14px auto 0;
  display:flex;align-items:center;gap:26px;
  padding:11px 14px 11px 20px;
  border-radius:999px;
  background:var(--gx-glass-lo);
  border:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(30px) saturate(190%);
  backdrop-filter:blur(30px) saturate(190%);
  box-shadow:0 14px 40px -16px rgba(0,0,0,.6), inset 0 1px 0 var(--gx-spec-in);
  transition:background .4s var(--gx-ease-out), border-color .4s var(--gx-ease-out);
}
.gx-nav::before{
  content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(180deg,var(--gx-spec-top),transparent 42%);opacity:.6;
}
.gx-logo{display:flex;align-items:center;gap:10px;font-weight:750;letter-spacing:-.02em;font-size:16.5px;flex:none}
.gx-logo .gx-mark{
  width:30px;height:30px;border-radius:10px;display:grid;place-items:center;flex:none;
  background:linear-gradient(140deg,var(--gx-iris-a),var(--gx-iris-b) 55%,var(--gx-iris-c));
  box-shadow:0 6px 18px -6px rgba(123,107,255,.9), inset 0 1px 0 rgba(255,255,255,.55);
  color:#fff;font-size:14px;font-weight:800;
}
.gx-menu{display:flex;gap:4px;margin-right:auto}
.gx-menu a{
  padding:8px 15px;border-radius:999px;font-size:14px;font-weight:550;color:var(--gx-t2);
  transition:color .3s var(--gx-ease-out), background .3s var(--gx-ease-out);
}
.gx-menu a:hover{color:var(--gx-t1);background:var(--gx-glass)}
.gx-menu a[aria-current="page"]{
  color:var(--gx-t1);background:var(--gx-glass-hi);
  box-shadow:inset 0 1px 0 var(--gx-spec-in), 0 4px 14px -8px rgba(0,0,0,.6);
}
.gx-nav-act{display:flex;align-items:center;gap:8px;flex:none}
.gx-icon-btn{
  width:36px;height:36px;border-radius:50%;display:grid;place-items:center;
  background:var(--gx-glass);border:1px solid var(--gx-line);
  color:var(--gx-t2);font-size:15px;
  transition:all .3s var(--gx-ease);
}
.gx-icon-btn:hover{color:var(--gx-t1);background:var(--gx-glass-hi);border-color:var(--gx-line-hi);transform:translateY(-1px)}

/* 玻璃按钮 */
.gx-btn{
  position:relative;display:inline-flex;align-items:center;justify-content:center;gap:8px;
  height:40px;padding:0 20px;border-radius:999px;
  font-size:14px;font-weight:650;letter-spacing:-.01em;white-space:nowrap;
  transition:transform .34s var(--gx-ease), box-shadow .34s var(--gx-ease-out), background .34s var(--gx-ease-out);
}
.gx-btn-primary{
  color:#fff;
  background:linear-gradient(135deg,var(--gx-iris-a),#5f8cff 52%,var(--gx-iris-b));
  box-shadow:0 10px 26px -10px rgba(94,124,255,.9), inset 0 1px 0 rgba(255,255,255,.5);
  border:1px solid rgba(255,255,255,.28);
}
.gx-btn-primary:hover{transform:translateY(-2px);box-shadow:0 16px 34px -12px rgba(94,124,255,1), inset 0 1px 0 rgba(255,255,255,.6)}
.gx-btn-ghost{
  color:var(--gx-t1);background:var(--gx-glass);border:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);
  box-shadow:inset 0 1px 0 var(--gx-spec-in);
}
.gx-btn-ghost:hover{background:var(--gx-glass-hi);border-color:var(--gx-line-hi);transform:translateY(-2px)}

/* ---------- 7. Hero ---------- */
.gx-hero{padding:76px 0 34px;text-align:center}
.gx-pill{
  display:inline-flex;align-items:center;gap:9px;
  padding:6px 15px 6px 7px;border-radius:999px;
  font-size:13px;font-weight:550;color:var(--gx-t2);
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);
  box-shadow:inset 0 1px 0 var(--gx-spec-in);
}
.gx-pill b{
  font-size:11.5px;font-weight:700;letter-spacing:.02em;color:#fff;
  padding:3px 9px;border-radius:999px;
  background:linear-gradient(135deg,var(--gx-iris-a),var(--gx-iris-c));
  box-shadow:0 4px 12px -4px rgba(255,98,176,.85);
}
.gx-h1{
  margin:26px auto 0;max-width:16em;
  font-size:clamp(38px,5.6vw,68px);line-height:1.07;letter-spacing:-.035em;font-weight:800;
}
.gx-h1 em{
  font-style:normal;
  background:linear-gradient(105deg,#a99bff,#63d9ff 42%,#ff8fcb 78%,#ffce85);
  -webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 6px 26px rgba(123,107,255,.35));
}
.gx-sub{
  margin:20px auto 0;max-width:34em;
  font-size:16px;line-height:1.7;color:var(--gx-t2);font-weight:450;
}

/* 搜索 = 玻璃镜面 */
.gx-search{
  position:relative;margin:36px auto 0;
  width:min(660px,100%);
  display:flex;align-items:center;gap:10px;
  padding:9px 9px 9px 20px;border-radius:999px;
  background:var(--gx-glass);
  border:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(34px) saturate(200%);
  backdrop-filter:blur(34px) saturate(200%);
  box-shadow:0 24px 60px -24px rgba(0,0,0,.8), inset 0 1px 0 var(--gx-spec-in), inset 0 -1px 0 rgba(255,255,255,.06);
  transition:box-shadow .4s var(--gx-ease-out), border-color .4s var(--gx-ease-out), transform .4s var(--gx-ease);
}
.gx-search::before{
  content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
  background:linear-gradient(180deg,var(--gx-spec-top),transparent 38%);opacity:.55;
}
.gx-search:focus-within{
  border-color:var(--gx-line-hi);
  box-shadow:0 28px 70px -22px rgba(0,0,0,.85), 0 0 0 4px rgba(123,107,255,.16), inset 0 1px 0 var(--gx-spec-in);
  transform:translateY(-1px);
}
.gx-search .gx-mag{color:var(--gx-t3);font-size:16px;flex:none}
.gx-search input{
  flex:1;min-width:0;height:38px;border:0;outline:0;background:none;
  font-family:inherit;font-size:15px;font-weight:500;color:var(--gx-t1);
}
.gx-search input::placeholder{color:var(--gx-t3)}
.gx-hotrow{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin:18px 0 0}
.gx-tag{
  padding:6px 14px;border-radius:999px;font-size:12.8px;font-weight:550;color:var(--gx-t2);
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  transition:all .3s var(--gx-ease);
}
.gx-tag:hover{color:var(--gx-t1);background:var(--gx-glass-hi);transform:translateY(-2px);border-color:var(--gx-line-hi)}

/* ---------- 8. 数据条 ---------- */
.gx-stats{
  margin:44px auto 0;display:grid;grid-template-columns:repeat(4,1fr);
  border-radius:var(--gx-r-lg);
  padding:4px;
}
.gx-stat{
  position:relative;padding:22px 12px;text-align:center;
}
.gx-stat+.gx-stat::before{
  content:"";position:absolute;left:0;top:22%;bottom:22%;width:1px;
  background:linear-gradient(180deg,transparent,var(--gx-line),transparent);
}
.gx-stat b{display:block;font-size:clamp(22px,2.6vw,29px);font-weight:780;letter-spacing:-.03em;
  background:linear-gradient(135deg,#fff,#c9d2ff);
  -webkit-background-clip:text;background-clip:text;color:transparent}
html.gx-light .gx-stat b{background:linear-gradient(135deg,#1a1e33,#4a5590);-webkit-background-clip:text;background-clip:text}
.gx-stat span{display:block;margin-top:6px;font-size:12.6px;color:var(--gx-t3);font-weight:550;letter-spacing:.02em}

/* ---------- 9. 章节标题 ---------- */
.gx-sec{margin-top:56px}
.gx-sec-head{display:flex;align-items:flex-end;justify-content:space-between;gap:16px;margin-bottom:18px}
.gx-sec-head h2{margin:0;font-size:21px;font-weight:730;letter-spacing:-.028em}
.gx-sec-head p{margin:5px 0 0;font-size:13.5px;color:var(--gx-t3)}
.gx-more{font-size:13.5px;font-weight:600;color:var(--gx-t2);transition:color .3s}
.gx-more:hover{color:var(--gx-t1)}

/* ---------- 10. 快捷入口 ---------- */
.gx-quick{display:grid;grid-template-columns:repeat(8,1fr);gap:14px}
.gx-quick a{
  display:flex;flex-direction:column;align-items:center;gap:11px;
  padding:20px 8px 17px;border-radius:var(--gx-r-md);
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(22px) saturate(170%);backdrop-filter:blur(22px) saturate(170%);
  box-shadow:inset 0 1px 0 var(--gx-spec-in);
  transition:all .4s var(--gx-ease);
}
.gx-quick a:hover{
  transform:translateY(-5px);background:var(--gx-glass-hi);
  box-shadow:0 18px 40px -18px rgba(0,0,0,.75), inset 0 1px 0 var(--gx-spec-in);
  border-color:var(--gx-line-hi);
}
.gx-quick i{
  width:46px;height:46px;border-radius:15px;display:grid;place-items:center;
  font-style:normal;font-size:20px;color:#fff;
  box-shadow:0 10px 24px -12px rgba(0,0,0,.9), inset 0 1px 0 rgba(255,255,255,.5);
  border:1px solid rgba(255,255,255,.24);
}
.gx-quick span{font-size:12.8px;font-weight:600;color:var(--gx-t2);letter-spacing:.01em}
.gx-quick a:hover span{color:var(--gx-t1)}
.gq1{background:linear-gradient(140deg,#7b6bff,#a58bff)}
.gq2{background:linear-gradient(140deg,#39c7ff,#25a2ff)}
.gq3{background:linear-gradient(140deg,#ff6fb5,#ff4d8d)}
.gq4{background:linear-gradient(140deg,#22d3a8,#12b18a)}
.gq5{background:linear-gradient(140deg,#ffb03a,#ff8a1f)}
.gq6{background:linear-gradient(140deg,#8b8cf0,#5f5fd6)}
.gq7{background:linear-gradient(140deg,#4bd0d9,#2aa7c9)}
.gq8{background:linear-gradient(140deg,#f07ae0,#c255c9)}

/* ---------- 11. 主内容双栏 ---------- */
.gx-main{display:grid;grid-template-columns:minmax(0,1fr) 316px;gap:22px;margin-top:56px;align-items:start}

/* 资源卡片 */
.gx-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px}
.gx-card{padding:20px 20px 18px;border-radius:var(--gx-r-lg)}
.gx-card-top{display:flex;align-items:center;gap:13px}
.gx-appicon{
  width:50px;height:50px;border-radius:15px;flex:none;display:grid;place-items:center;
  font-size:21px;font-weight:700;color:#fff;
  box-shadow:0 10px 24px -12px rgba(0,0,0,.85), inset 0 1px 0 rgba(255,255,255,.5);
  border:1px solid rgba(255,255,255,.22);
}
.gx-card-id{min-width:0}
.gx-card-id h3{margin:0;font-size:15.5px;font-weight:700;letter-spacing:-.02em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-card-id p{margin:4px 0 0;font-size:12.6px;color:var(--gx-t3);font-weight:500;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-card-desc{margin:14px 0 0;font-size:13.4px;line-height:1.66;color:var(--gx-t2);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gx-card-foot{display:flex;align-items:center;gap:8px;margin-top:16px}
.gx-chip{
  font-size:11.8px;font-weight:600;padding:4px 10px;border-radius:999px;
  color:var(--gx-t2);background:var(--gx-glass-lo);border:1px solid var(--gx-line);
}
.gx-chip.gx-chip-hot{color:#fff;background:linear-gradient(135deg,var(--gx-iris-c),#ff8a5c);border-color:rgba(255,255,255,.3)}
.gx-get{
  margin-left:auto;font-size:12.8px;font-weight:700;padding:7px 15px;border-radius:999px;
  color:var(--gx-t1);background:var(--gx-glass);border:1px solid var(--gx-line);
  box-shadow:inset 0 1px 0 var(--gx-spec-in);
  transition:all .34s var(--gx-ease);
}
.gx-card:hover .gx-get{background:linear-gradient(135deg,var(--gx-iris-a),var(--gx-iris-b));color:#fff;border-color:rgba(255,255,255,.35);
  box-shadow:0 8px 20px -8px rgba(94,124,255,.9)}

/* ---------- 12. 侧栏 ---------- */
.gx-side{display:grid;gap:16px;position:sticky;top:96px}
.gx-panel{padding:20px;border-radius:var(--gx-r-lg)}
.gx-panel h4{margin:0 0 15px;font-size:14.5px;font-weight:720;letter-spacing:-.02em;display:flex;align-items:center;gap:8px}
.gx-dot{width:7px;height:7px;border-radius:50%;background:linear-gradient(135deg,var(--gx-iris-b),var(--gx-iris-a));box-shadow:0 0 12px rgba(37,215,255,.9)}
.gx-notice{display:grid;gap:13px}
.gx-notice a{display:flex;gap:10px;font-size:13.2px;line-height:1.5;color:var(--gx-t2);transition:color .3s}
.gx-notice a:hover{color:var(--gx-t1)}
.gx-notice a b{color:var(--gx-iris-b);font-weight:700;flex:none;font-variant-numeric:tabular-nums}
.author-note{}
.gx-side-tags{display:flex;flex-wrap:wrap;gap:8px}
.gx-side-tags a{
  font-size:12.4px;font-weight:560;padding:6px 13px;border-radius:999px;color:var(--gx-t2);
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);transition:all .3s var(--gx-ease);
}
.gx-side-tags a:hover{color:var(--gx-t1);background:var(--gx-glass-hi);transform:translateY(-2px)}
.gx-cta{padding:22px;border-radius:var(--gx-r-lg);text-align:center}
.gx-cta h4{margin:0 0 8px;font-size:15px;font-weight:730}
.gx-cta p{margin:0 0 16px;font-size:12.8px;line-height:1.6;color:var(--gx-t3)}
.gx-cta .gx-btn{width:100%}

/* ---------- 13. 页脚 ---------- */
.gx-footer{
  margin:68px auto 26px;width:min(1240px,calc(100% - 48px));
  padding:26px 30px;border-radius:var(--gx-r-lg);
  display:flex;flex-wrap:wrap;align-items:center;gap:16px 26px;
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(26px) saturate(180%);backdrop-filter:blur(26px) saturate(180%);
  box-shadow:inset 0 1px 0 var(--gx-spec-in);
  font-size:12.8px;color:var(--gx-t3);
}
.gx-footer nav{display:flex;flex-wrap:wrap;gap:18px;margin-left:auto}
.gx-footer nav a{color:var(--gx-t2);font-weight:550;transition:color .3s}
.gx-footer nav a:hover{color:var(--gx-t1)}

/* ---------- 14. 入场动效 ---------- */
.gx-rise{opacity:0;transform:translateY(18px);animation:gxRise .8s var(--gx-ease-out) forwards}
@keyframes gxRise{to{opacity:1;transform:none}}
.gx-d1{animation-delay:.06s}.gx-d2{animation-delay:.13s}.gx-d3{animation-delay:.2s}
.gx-d4{animation-delay:.27s}.gx-d5{animation-delay:.34s}

/* ---------- 15. 响应式 ---------- */
@media (max-width:1080px){
  .gx-quick{grid-template-columns:repeat(4,1fr)}
  .gx-main{grid-template-columns:minmax(0,1fr)}
  .gx-side{position:static;grid-template-columns:repeat(2,1fr)}
}
@media (max-width:820px){
  .gx-menu{display:none}
  .gx-hero{padding:44px 0 22px}
  .gx-sub{font-size:14.6px}
  .gx-stats{grid-template-columns:repeat(2,1fr)}
  .gx-stat:nth-child(3)::before{display:none}
  .gx-stat:nth-child(odd)::before{display:none}
  .gx-cards{grid-template-columns:1fr}
  .gx-nav{gap:14px;padding:10px 12px 10px 16px}
}
@media (max-width:560px){
  .gx-wrap{width:calc(100% - 28px)}
  .gx-nav{width:calc(100% - 20px);top:8px;margin-top:8px}
  .gx-quick{grid-template-columns:repeat(4,1fr);gap:10px}
  .gx-quick a{padding:15px 4px 13px;gap:9px}
  .gx-quick i{width:40px;height:40px;border-radius:13px;font-size:17px}
  .gx-quick span{font-size:11.6px}
  .gx-side{grid-template-columns:1fr}
  .gx-search{padding:7px 7px 7px 16px}
  .gx-search input{font-size:14px}
  .gx-btn{height:38px;padding:0 17px;font-size:13.5px}
  .gx-footer{flex-direction:column;align-items:flex-start;padding:22px 20px}
  .gx-footer nav{margin-left:0;gap:14px}
  .gx-h1{letter-spacing:-.03em}
  .gx-sec{margin-top:42px}
  .gx-main{margin-top:42px;gap:16px}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.001s!important;transition-duration:.001s!important}
}


/* ============================================================
   16. 页面外壳（内页统一头图区）
   ============================================================ */
.gx-pagehead{padding:56px 0 8px}
.gx-pagehead h1{margin:0;font-size:clamp(27px,3.4vw,38px);font-weight:800;letter-spacing:-.035em;line-height:1.16}
.gx-pagehead p{margin:12px 0 0;font-size:14.6px;line-height:1.7;color:var(--gx-t2);max-width:46em}
.gx-crumb{display:flex;align-items:center;gap:8px;margin-bottom:14px;font-size:12.8px;color:var(--gx-t3);flex-wrap:wrap}
.gx-crumb a{color:var(--gx-t2);transition:color .3s}
.gx-crumb a:hover{color:var(--gx-t1)}
.gx-crumb span{opacity:.5}

/* 通用内容区块 */
.gx-block{margin-top:26px}
.gx-block.gx-glass{padding:26px 28px;border-radius:var(--gx-r-lg)}
@media(max-width:640px){.gx-block.gx-glass{padding:20px 18px}}

/* ============================================================
   17. 长文排版
   ============================================================ */
.gx-prose{font-size:14.8px;line-height:1.85;color:var(--gx-t2)}
.gx-prose h1,.gx-prose h2,.gx-prose h3,.gx-prose h4{color:var(--gx-t1);letter-spacing:-.028em;line-height:1.3}
.gx-prose h2{font-size:21px;font-weight:740;margin:34px 0 12px}
.gx-prose h3{font-size:17px;font-weight:700;margin:26px 0 10px}
.gx-prose h4{font-size:15px;font-weight:680;margin:20px 0 8px}
.gx-prose p{margin:12px 0}
.gx-prose a{color:#9fb0ff;text-decoration:none;border-bottom:1px solid rgba(159,176,255,.35);transition:all .25s}
html.gx-light .gx-prose a{color:#4b5fd6;border-bottom-color:rgba(75,95,214,.3)}
.gx-prose a:hover{color:var(--gx-iris-b);border-bottom-color:currentColor}
.gx-prose ul,.gx-prose ol{margin:12px 0;padding-left:22px}
.gx-prose li{margin:7px 0}
.gx-prose img{border-radius:var(--gx-r-md);margin:18px 0;border:1px solid var(--gx-line)}
.gx-prose code{
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:.9em;
  padding:2px 7px;border-radius:7px;background:var(--gx-glass);border:1px solid var(--gx-line);color:var(--gx-t1)
}
.gx-prose pre{
  padding:18px;border-radius:var(--gx-r-md);overflow:auto;background:rgba(0,0,0,.3);
  border:1px solid var(--gx-line);font-size:13px;line-height:1.7
}
html.gx-light .gx-prose pre{background:rgba(20,23,38,.045)}
.gx-prose pre code{background:none;border:0;padding:0}
.gx-prose blockquote{
  margin:18px 0;padding:14px 20px;border-radius:0 var(--gx-r-sm) var(--gx-r-sm) 0;
  border-left:2px solid var(--gx-iris-a);background:var(--gx-glass-lo);color:var(--gx-t2)
}
.gx-prose hr{border:0;border-top:1px solid var(--gx-line);margin:28px 0}
.gx-prose table{width:100%;border-collapse:collapse;margin:18px 0;font-size:13.6px}
.gx-prose th,.gx-prose td{padding:11px 14px;border-bottom:1px solid var(--gx-line);text-align:left}
.gx-prose th{color:var(--gx-t1);font-weight:650;background:var(--gx-glass-lo)}

/* ============================================================
   18. 表单
   ============================================================ */
.gx-field{display:block;margin-bottom:16px}
.gx-label{display:block;margin-bottom:8px;font-size:13px;font-weight:600;color:var(--gx-t2);letter-spacing:.01em}
.gx-input,.gx-textarea,.gx-select{
  width:100%;font-family:inherit;font-size:14.6px;font-weight:500;color:var(--gx-t1);
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);border-radius:var(--gx-r-sm);
  padding:12px 15px;outline:0;
  -webkit-backdrop-filter:blur(16px);backdrop-filter:blur(16px);
  box-shadow:inset 0 1px 0 rgba(255,255,255,.06);
  transition:border-color .3s var(--gx-ease-out), box-shadow .3s var(--gx-ease-out), background .3s;
}
.gx-input::placeholder,.gx-textarea::placeholder{color:var(--gx-t3)}
.gx-input:focus,.gx-textarea:focus,.gx-select:focus{
  border-color:rgba(123,107,255,.65);background:var(--gx-glass);
  box-shadow:0 0 0 4px rgba(123,107,255,.16), inset 0 1px 0 rgba(255,255,255,.08)
}
.gx-textarea{min-height:118px;resize:vertical;line-height:1.65}
.gx-select{
  appearance:none;-webkit-appearance:none;cursor:pointer;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='14' viewBox='0 0 24 24' fill='none' stroke='%238a90b0' stroke-width='2.2' stroke-linecap='round'%3E%3Cpath d='M6 9.5l6 6 6-6'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-position:right 14px center;padding-right:40px;
}
.gx-select option{background:#12141f;color:#f4f6ff}
html.gx-light .gx-select option{background:#fff;color:#141726}
.gx-help{margin-top:7px;font-size:12.2px;color:var(--gx-t3);line-height:1.55}
.gx-check{display:flex;align-items:flex-start;gap:10px;font-size:13.4px;color:var(--gx-t2);cursor:pointer;line-height:1.6}
.gx-check input{
  appearance:none;-webkit-appearance:none;margin:1px 0 0;flex:none;
  width:18px;height:18px;border-radius:6px;border:1px solid var(--gx-line-hi);
  background:var(--gx-glass-lo);cursor:pointer;position:relative;transition:all .25s var(--gx-ease)
}
.gx-check input:checked{
  background:linear-gradient(135deg,var(--gx-iris-a),var(--gx-iris-b));border-color:transparent;
  box-shadow:0 4px 12px -4px rgba(94,124,255,.8)
}
.gx-check input:checked::after{
  content:"";position:absolute;left:5.5px;top:2.5px;width:5px;height:9px;
  border:2px solid #fff;border-top:0;border-left:0;transform:rotate(42deg)
}
.gx-check a{color:#9fb0ff}
html.gx-light .gx-check a{color:#4b5fd6}

/* 提示条 */
.gx-alert{
  display:flex;gap:11px;align-items:flex-start;
  padding:13px 16px;border-radius:var(--gx-r-sm);font-size:13.4px;line-height:1.6;
  border:1px solid var(--gx-line);background:var(--gx-glass-lo);color:var(--gx-t2);margin:16px 0
}
.gx-alert.is-ok{border-color:rgba(39,166,68,.42);background:rgba(39,166,68,.12);color:#a9e8b8}
.gx-alert.is-warn{border-color:rgba(212,177,68,.42);background:rgba(212,177,68,.12);color:#f0dda4}
.gx-alert.is-error{border-color:rgba(229,72,77,.45);background:rgba(229,72,77,.13);color:#ffb3b5}
.gx-alert.is-info{border-color:rgba(37,215,255,.38);background:rgba(37,215,255,.1);color:#a8e8f8}
html.gx-light .gx-alert.is-ok{color:#186b33;background:rgba(39,166,68,.10)}
html.gx-light .gx-alert.is-warn{color:#7a5c04;background:rgba(212,177,68,.14)}
html.gx-light .gx-alert.is-error{color:#a01f24;background:rgba(229,72,77,.10)}
html.gx-light .gx-alert.is-info{color:#0b6076;background:rgba(37,215,255,.12)}

/* ============================================================
   19. 列表 / 表格
   ============================================================ */
.gx-list{display:grid;gap:10px}
.gx-rowline{
  display:flex;align-items:center;gap:14px;
  padding:15px 18px;border-radius:var(--gx-r-md);
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(18px);backdrop-filter:blur(18px);
  transition:all .34s var(--gx-ease)
}
.gx-rowline:hover{background:var(--gx-glass-hi);border-color:var(--gx-line-hi);transform:translateX(3px)}
.gx-rowline .gx-rl-main{min-width:0;flex:1}
.gx-rowline .gx-rl-main b{display:block;font-size:14.4px;font-weight:650;letter-spacing:-.015em;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-rowline .gx-rl-main span{display:block;margin-top:3px;font-size:12.4px;color:var(--gx-t3);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gx-rowline .gx-rl-side{display:flex;align-items:center;gap:10px;flex:none;font-size:12.4px;color:var(--gx-t3)}

.gx-table{width:100%;border-collapse:separate;border-spacing:0;font-size:13.4px}
.gx-table th,.gx-table td{padding:12px 14px;text-align:left;border-bottom:1px solid var(--gx-line);color:var(--gx-t2)}
.gx-table th{font-size:12.2px;font-weight:650;color:var(--gx-t3);text-transform:uppercase;letter-spacing:.04em}
.gx-table tr:last-child td{border-bottom:0}
.gx-table tbody tr{transition:background .25s}
.gx-table tbody tr:hover{background:var(--gx-glass-lo)}
.gx-scroll{overflow-x:auto;-webkit-overflow-scrolling:touch}

/* 分页 */
.gx-pager{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin:30px 0 0}
.gx-pager a,.gx-pager span{
  min-width:38px;height:38px;padding:0 13px;display:inline-flex;align-items:center;justify-content:center;
  border-radius:11px;font-size:13.4px;font-weight:600;color:var(--gx-t2);
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);transition:all .3s var(--gx-ease)
}
.gx-pager a:hover{color:var(--gx-t1);background:var(--gx-glass-hi);transform:translateY(-2px)}
.gx-pager .is-on{
  color:#fff;border-color:transparent;
  background:linear-gradient(135deg,var(--gx-iris-a),var(--gx-iris-b));
  box-shadow:0 10px 22px -10px rgba(94,124,255,.9)
}
.gx-pager .is-off{opacity:.35}

/* ============================================================
   20. Tabs / 分段控件
   ============================================================ */
.gx-tabs{
  display:inline-flex;gap:4px;padding:4px;border-radius:999px;
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);max-width:100%;overflow-x:auto
}
.gx-tabs a,.gx-tabs button{
  padding:9px 17px;border-radius:999px;font-size:13.4px;font-weight:600;color:var(--gx-t2);
  white-space:nowrap;transition:all .3s var(--gx-ease)
}
.gx-tabs a:hover,.gx-tabs button:hover{color:var(--gx-t1)}
.gx-tabs .is-on{
  color:var(--gx-t1);background:var(--gx-glass-hi);
  box-shadow:inset 0 1px 0 var(--gx-spec-in), 0 4px 14px -8px rgba(0,0,0,.6)
}

/* ============================================================
   21. 空状态 / 加载
   ============================================================ */
.gx-empty{
  padding:56px 24px;text-align:center;border-radius:var(--gx-r-lg);
  background:var(--gx-glass-lo);border:1px dashed var(--gx-line)
}
.gx-empty b{display:block;font-size:15px;font-weight:650;color:var(--gx-t1)}
.gx-empty p{margin:8px 0 0;font-size:13.2px;color:var(--gx-t3)}

/* ============================================================
   22. 登录弹窗 xhm-*（玻璃化组件）
   ============================================================ */
.xhm{position:fixed;inset:0;z-index:200;display:flex;align-items:center;justify-content:center;padding:clamp(16px,3vw,36px)}
.xhm[hidden]{display:none!important}
.xhm-mask{position:absolute;inset:0;background:rgba(4,5,12,.72);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);
  animation:xhmFade .3s ease-out}
html.gx-light .xhm-mask{background:rgba(120,130,165,.42)}
@keyframes xhmFade{from{opacity:0}to{opacity:1}}
.xhm-card{
  position:relative;display:flex;width:min(944px,100%);max-height:min(88vh,720px);
  border-radius:var(--gx-r-xl);overflow:hidden;
  background:var(--gx-glass-hi);border:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(40px) saturate(190%);backdrop-filter:blur(40px) saturate(190%);
  box-shadow:0 40px 100px -30px rgba(0,0,0,.9), inset 0 1px 0 var(--gx-spec-in);
  animation:xhmPop .46s var(--gx-ease) both;
}
@keyframes xhmPop{from{opacity:0;transform:translateY(22px) scale(.97)}to{opacity:1;transform:none}}
.xhm-aside{
  position:relative;width:min(340px,38%);flex:none;padding:38px 32px 34px;display:flex;flex-direction:column;gap:0;
  background:linear-gradient(160deg,rgba(123,107,255,.30),rgba(37,215,255,.16) 52%,rgba(255,98,176,.20));
  border-right:1px solid var(--gx-line)
}
.xhm-aside::before{
  content:"";position:absolute;inset:0;
  background:radial-gradient(120% 70% at 10% 0%, rgba(255,255,255,.30), transparent 58%);
  pointer-events:none
}
.xhm-brand{display:flex;align-items:center;gap:10px;font-size:15.5px;font-weight:750;color:var(--gx-t1);position:relative}
.xhm-brand img{width:30px;height:30px;border-radius:10px;object-fit:cover}
.xhm-aside h3{margin:auto 0 12px;font-size:22px;font-weight:780;letter-spacing:-.03em;color:var(--gx-t1);position:relative}
.xhm-aside p{margin:0;font-size:13px;line-height:1.7;color:var(--gx-t2);position:relative}
html.gx-light .xhm-aside h3,html.gx-light .xhm-aside p,html.gx-light .xhm-brand{color:#141726}
html.gx-light .xhm-aside p{color:rgba(20,23,38,.66)}
.xhm-body{flex:1;min-width:0;padding:36px 40px 32px;overflow-y:auto;scrollbar-width:thin}
.xhm-head{display:flex;flex-direction:column;gap:0;margin:0 0 22px;padding-right:44px}
.xhm-head h2{margin:0;font-size:22px;font-weight:780;letter-spacing:-.03em;line-height:1.3}
.xhm-head p{margin:7px 0 0;font-size:13.2px;line-height:1.6;color:var(--gx-t3)}
.xhm-close{
  position:absolute;top:16px;right:16px;z-index:5;margin:0;width:34px;height:34px;flex:none;
  border-radius:50%;display:grid;place-items:center;
  background:var(--gx-glass);border:1px solid var(--gx-line);color:var(--gx-t2);
  font-size:17px;line-height:1;cursor:pointer;transition:all .3s var(--gx-ease)
}
.xhm-close svg{width:13px;height:13px;fill:currentColor}
.xhm-close:hover{color:var(--gx-t1);background:var(--gx-glass-hi);transform:rotate(90deg)}
.xhm-tabs{position:relative;display:flex;gap:6px;margin:0 0 20px;padding:5px;border-radius:999px;
  background:var(--gx-glass-lo);border:1px solid var(--gx-line)}
.xhm-tab{
  position:relative;z-index:1;flex:1 1 0;min-width:0;padding:10px 6px;border-radius:999px;font-size:13.6px;font-weight:640;white-space:nowrap;
  color:var(--gx-t2);transition:color .3s
}
.xhm-tab.is-on{color:var(--gx-t1)}
.xhm-tab-ink{
  position:absolute;top:5px;bottom:5px;left:5px;border-radius:999px;z-index:0;
  background:var(--gx-glass-hi);border:1px solid var(--gx-line);
  box-shadow:0 4px 14px -8px rgba(0,0,0,.7), inset 0 1px 0 var(--gx-spec-in);
  transition:transform .42s var(--gx-ease), width .42s var(--gx-ease)
}
.xhm-form .gx-field{margin-bottom:14px}
.xhm-field{position:relative;margin-bottom:16px}
.xhm-field .gx-input{padding-right:44px}
.xhm-field .xhm-ico{position:absolute;right:14px;top:50%;transform:translateY(-50%);color:var(--gx-t3);font-size:15px;pointer-events:none}
.xhm-eye{position:absolute;right:8px;top:50%;transform:translateY(-50%);width:30px;height:30px;border-radius:9px;
  display:grid;place-items:center;color:var(--gx-t3);background:none;transition:all .25s}
.xhm-eye:hover{color:var(--gx-t1);background:var(--gx-glass)}
.xhm-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin:2px 0 20px;font-size:13px}
.xhm-link{font-size:13px;font-weight:600;color:#9fb0ff;transition:color .25s}
html.gx-light .xhm-link{color:#4b5fd6}
.xhm-link:hover{color:var(--gx-iris-b)}
.xhm-submit{
  width:100%;height:48px;border-radius:15px;font-size:15px;font-weight:700;letter-spacing:.01em;color:#fff;cursor:pointer;
  background:linear-gradient(135deg,var(--gx-iris-a),#5f8cff 55%,var(--gx-iris-b));
  border:1px solid rgba(255,255,255,.28);
  box-shadow:0 14px 30px -12px rgba(94,124,255,.95), inset 0 1px 0 rgba(255,255,255,.5);
  transition:transform .3s var(--gx-ease), box-shadow .3s var(--gx-ease-out)
}
.xhm-submit:hover{transform:translateY(-2px);box-shadow:0 20px 40px -14px rgba(94,124,255,1), inset 0 1px 0 rgba(255,255,255,.6)}
.xhm-submit:disabled{opacity:.6;transform:none;cursor:not-allowed}
.xhm-msg{margin:0 0 14px;font-size:13px;color:var(--gx-t2);min-height:0}
.xhm-msg.is-error{color:#ffb3b5}
.xhm-msg.is-ok{color:#a9e8b8}
html.gx-light .xhm-msg.is-error{color:#a01f24}
html.gx-light .xhm-msg.is-ok{color:#186b33}
.xhm-foot{margin:22px 0 0;padding-top:16px;border-top:1px solid var(--gx-line);display:flex;align-items:center;justify-content:center;gap:8px;flex-wrap:wrap;font-size:13px;color:var(--gx-t3)}
.xhm-tip{margin:14px 0 0;font-size:12.2px;line-height:1.6;color:var(--gx-t3)}
.xhm-scan-entry{
  display:flex;align-items:center;gap:10px;width:100%;margin-top:14px;padding:11px 15px;border-radius:13px;
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);font-size:13px;font-weight:600;color:var(--gx-t2);
  transition:all .3s var(--gx-ease)
}
.xhm-scan-entry:hover{background:var(--gx-glass-hi);color:var(--gx-t1);border-color:var(--gx-line-hi)}
.xhm-scan-arrow{margin-left:auto;opacity:.6}
.xhm-pane{display:none}
.xhm-pane.is-on{display:block}
.xhm-qr{display:flex;gap:20px;align-items:flex-start}
.xhm-qr-frame{position:relative;flex:none;width:172px;height:172px;border-radius:18px;overflow:hidden;
  background:#fff;border:1px solid var(--gx-line);display:grid;place-items:center}
.xhm-qr-canvas{width:100%;height:100%;display:block}
.xhm-qr-mask{position:absolute;inset:0;display:none;place-items:center;background:rgba(10,12,20,.82);color:#fff;font-size:13px;text-align:center;padding:14px}
.xhm-qr-mask.is-on{display:grid}
.xhm-qr-refresh{margin-top:10px;font-size:12.5px;font-weight:620;color:#9fb0ff;background:none}
html.gx-light .xhm-qr-refresh{color:#4b5fd6}
.xhm-qr-side{min-width:0;flex:1}
.xhm-qr-side h4{margin:0 0 8px;font-size:14.5px;font-weight:700}
.xhm-qr-side p{margin:0;font-size:12.8px;line-height:1.7;color:var(--gx-t3)}
.xhm-qr-status{margin-top:12px;font-size:12.6px;color:var(--gx-t2)}
.xhm-code{display:flex;gap:8px;align-items:center;margin-top:12px}
.xhm-qr-icon{display:none}
.xhm-dot{width:7px;height:7px;border-radius:50%;background:var(--gx-iris-b);box-shadow:0 0 10px var(--gx-iris-b);flex:none}
@media(max-width:760px){
  .xhm{padding:16px;align-items:center}
  .xhm-card{flex-direction:column;width:100%;max-height:calc(100vh - 32px);border-radius:24px}
  .xhm-aside{display:none}
  .xhm-body{padding:26px 20px 24px}
  .xhm-close{top:12px;right:12px}
  .xhm-head{padding-right:40px}
}

/* ============================================================
   23. 工具类
   ============================================================ */
.gx-flex{display:flex;align-items:center;gap:12px;flex-wrap:wrap}
.gx-between{display:flex;align-items:center;justify-content:space-between;gap:14px;flex-wrap:wrap}
.gx-muted{color:var(--gx-t3)}
.gx-t2{color:var(--gx-t2)}
.gx-mt{margin-top:22px}
.gx-mt-s{margin-top:12px}
.gx-center{text-align:center}
.gx-hr{border:0;border-top:1px solid var(--gx-line);margin:24px 0}
.gx-nowrap{white-space:nowrap}
.gx-blockbtn{width:100%}

/* 主题切换按钮 */
.gx-theme{
  position:relative;width:36px;height:36px;border-radius:50%;flex:none;
  display:grid;place-items:center;color:var(--gx-t2);
  background:var(--gx-glass);border:1px solid var(--gx-line);
  transition:all .4s var(--gx-ease)
}
.gx-theme:hover{color:var(--gx-t1);background:var(--gx-glass-hi);transform:rotate(-18deg) scale(1.06)}
.gx-theme svg{width:17px;height:17px;stroke:currentColor;fill:none;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}
.gx-theme .gx-i-sun{display:none}
html.gx-light .gx-theme .gx-i-sun{display:block}
html.gx-light .gx-theme .gx-i-moon{display:none}

/* 细节：亮色下玻璃描边改用深色细线更清晰 */
html.gx-light .gx-glass,html.gx-light .gx-search,html.gx-light .gx-nav{
  border-color:rgba(255,255,255,.9);
  box-shadow:var(--gx-shadow);
}
html.gx-light .gx-tag,html.gx-light .gx-chip,html.gx-light .gx-rowline,
html.gx-light .gx-input,html.gx-light .gx-select,html.gx-light .gx-textarea,
html.gx-light .gx-tabs,html.gx-light .gx-pager a,html.gx-light .gx-pager span{
  border-color:rgba(20,23,38,.09)
}


/* ============================================================
   26. 导航补充：logo 图片 / 移动抽屉 / 用户菜单
   ============================================================ */
.gx-logo .gx-mark img{width:100%;height:100%;object-fit:cover;border-radius:inherit}
.gx-nav-toggle{
  display:none;width:36px;height:36px;border-radius:50%;place-items:center;
  background:var(--gx-glass);border:1px solid var(--gx-line);color:var(--gx-t2);
  transition:all .3s var(--gx-ease)
}
.gx-nav-toggle:hover{color:var(--gx-t1);background:var(--gx-glass-hi)}
.gx-nav-toggle svg{width:18px;height:18px}

/* 用户下拉 */
.gx-user{position:relative}
.gx-user-trigger{
  display:flex;align-items:center;gap:9px;padding:5px 12px 5px 5px;border-radius:999px;cursor:pointer;
  background:var(--gx-glass);border:1px solid var(--gx-line);list-style:none;
  transition:all .3s var(--gx-ease)
}
.gx-user-trigger::-webkit-details-marker{display:none}
.gx-user-trigger:hover{background:var(--gx-glass-hi);border-color:var(--gx-line-hi)}
.gx-avatar{
  width:27px;height:27px;flex:none;border-radius:50%;display:grid;place-items:center;
  font-size:12.5px;font-weight:750;color:#fff;
  background:linear-gradient(135deg,var(--gx-iris-a),var(--gx-iris-b));
  box-shadow:inset 0 1px 0 rgba(255,255,255,.45), 0 4px 12px -6px rgba(94,124,255,.9)
}
.gx-user-name{font-size:13.4px;font-weight:620;max-width:8em;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gx-pop{
  position:absolute;right:0;top:calc(100% + 10px);z-index:120;min-width:186px;padding:7px;
  border-radius:18px;background:var(--gx-glass-hi);border:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(34px) saturate(190%);backdrop-filter:blur(34px) saturate(190%);
  box-shadow:0 26px 60px -24px rgba(0,0,0,.9), inset 0 1px 0 var(--gx-spec-in);
  animation:gxPop .28s var(--gx-ease-out) both
}
@keyframes gxPop{from{opacity:0;transform:translateY(-8px) scale(.97)}to{opacity:1;transform:none}}
.gx-pop-a{
  display:block;width:100%;text-align:left;padding:9px 12px;border-radius:11px;
  font-size:13.4px;font-weight:560;color:var(--gx-t2);transition:all .24s;background:none;border:0;cursor:pointer
}
.gx-pop-a:hover{background:var(--gx-glass);color:var(--gx-t1)}
.gx-pop-a.is-danger:hover{background:rgba(229,72,77,.16);color:#ff9a9c}
.gx-pop-sep{display:block;height:1px;margin:6px 8px;background:var(--gx-line)}

/* 移动抽屉 */
.gx-drawer{position:fixed;inset:0;z-index:190}
.gx-drawer[hidden]{display:none!important}
.gx-drawer-mask{position:absolute;inset:0;background:rgba(4,5,12,.62);
  -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);animation:xhmFade .26s ease-out}
html.gx-light .gx-drawer-mask{background:rgba(120,130,165,.36)}
.gx-drawer-panel{
  position:absolute;right:0;top:0;bottom:0;width:min(320px,86vw);display:flex;flex-direction:column;
  background:var(--gx-glass-hi);border-left:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(40px) saturate(190%);backdrop-filter:blur(40px) saturate(190%);
  box-shadow:-30px 0 80px -30px rgba(0,0,0,.9), inset 1px 0 0 var(--gx-spec-in);
  animation:gxSlide .38s var(--gx-ease) both
}
@keyframes gxSlide{from{transform:translateX(100%)}to{transform:none}}
.gx-drawer-head{display:flex;align-items:center;gap:12px;padding:18px 18px 14px;border-bottom:1px solid var(--gx-line)}
.gx-drawer-head .gx-icon-btn{margin-left:auto}
.gx-drawer-body{flex:1;overflow-y:auto;padding:12px 12px 18px;display:flex;flex-direction:column;gap:2px}
.gx-drawer-a{
  padding:12px 14px;border-radius:13px;font-size:14.6px;font-weight:580;color:var(--gx-t2);
  transition:all .26s
}
.gx-drawer-a:hover{background:var(--gx-glass);color:var(--gx-t1)}
.gx-drawer-a[aria-current="page"]{
  color:var(--gx-t1);background:var(--gx-glass-hi);
  box-shadow:inset 0 1px 0 var(--gx-spec-in)
}
.gx-drawer-foot{padding:14px 16px 22px;border-top:1px solid var(--gx-line);display:grid;gap:9px}

@media(max-width:960px){
  .gx-menu{display:none}
  .gx-nav-toggle{display:grid}
  [data-hide-sm]{display:none!important}
}

/* ============================================================
   27. 页脚（多列版）
   ============================================================ */
.gx-footer{
  margin-top:76px;padding:40px 36px 28px;border-top:1px solid var(--gx-line);
  display:block;font-size:13px;color:var(--gx-t3)
}
.gx-footer-top{display:flex;gap:40px;flex-wrap:wrap;justify-content:space-between;align-items:flex-start}
.gx-footer-brand .gx-logo{margin-bottom:12px}
.gx-footer-brand p{margin:0;font-size:12.8px;line-height:1.8;color:var(--gx-t3);max-width:22em}
.gx-footer-cols{display:flex;gap:52px;flex-wrap:wrap;justify-content:flex-end}
.gx-footer-cols > div{display:flex;flex-direction:column;gap:9px}
.gx-footer-cols h5{margin:0 0 2px;font-size:12px;font-weight:680;color:var(--gx-t2);letter-spacing:.06em;text-transform:uppercase}
.gx-footer-cols a{font-size:13px;color:var(--gx-t3);transition:color .28s}
.gx-footer-cols a:hover{color:var(--gx-t1)}
.gx-footer-bar{
  display:flex;flex-wrap:wrap;gap:12px;justify-content:space-between;align-items:center;
  margin-top:34px;padding-top:20px;border-top:1px solid var(--gx-line);font-size:12.4px;color:var(--gx-t3)
}
.gx-footer-note{opacity:.8}
@media(max-width:760px){
  .gx-footer{padding:28px 22px 22px;gap:0;margin:48px 16px 22px}
  .gx-footer-top{gap:26px;flex-direction:column}
  .gx-footer-cols{gap:16px 20px;width:100%;justify-content:space-between}
  .gx-footer-cols > div{flex:1 1 calc(50% - 10px);min-width:0}
  .gx-footer-brand p{max-width:none}
  .gx-footer-bar{margin-top:22px;padding-top:16px;flex-direction:column;align-items:center;text-align:center;gap:8px}
}

/* ============================================================
   28. 滚动进场
   ============================================================ */
.gx-reveal{opacity:0;transform:translateY(18px);transition:opacity .7s var(--gx-ease-out), transform .7s var(--gx-ease-out)}
.gx-reveal.is-in{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){
  .gx-reveal{opacity:1;transform:none;transition:none}
}


/* ==========================================================================
   shell.js 外壳三件套（Toast / 顶部进度条 / 移动 TabBar）玻璃化
   ========================================================================== */
.xh-toast{
  position:fixed;left:50%;bottom:34px;transform:translate(-50%,16px);
  z-index:9999;max-width:min(88vw,520px);padding:12px 20px;border-radius:14px;
  font-size:13.6px;font-weight:600;letter-spacing:.01em;color:var(--gx-t1);
  background:var(--gx-glass-hi);border:1px solid var(--gx-line-hi);
  -webkit-backdrop-filter:blur(22px) saturate(180%);backdrop-filter:blur(22px) saturate(180%);
  box-shadow:var(--gx-shadow-hover),inset 0 1px 0 var(--gx-spec-in);
  opacity:0;pointer-events:none;transition:opacity .3s,transform .34s cubic-bezier(.22,1,.36,1);
  text-align:center;
}
.xh-toast.show,.xh-toast.is-show{opacity:1;transform:translate(-50%,0)}
.xh-toast.error{color:#ff9db4;border-color:rgba(255,110,150,.42)}
html.gx-light .xh-toast.error{color:#c62048;border-color:rgba(210,40,80,.3)}

.xh-navprog{
  position:fixed;left:0;top:0;height:2px;width:0;z-index:10000;border-radius:0 2px 2px 0;
  background:linear-gradient(90deg,#7b6bff,#25d7ff 55%,#ff5cae);
  box-shadow:0 0 12px rgba(37,215,255,.55);
  transition:width .32s ease,opacity .4s;pointer-events:none;
}

.xh-tabbar{
  position:fixed;left:0;right:0;bottom:0;z-index:900;
  display:none;align-items:center;justify-content:space-around;gap:2px;
  padding:8px 10px calc(8px + env(safe-area-inset-bottom));
  background:var(--gx-glass-hi);border-top:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(24px) saturate(180%);backdrop-filter:blur(24px) saturate(180%);
  box-shadow:0 -12px 34px -22px rgba(0,0,0,.7);
  transition:transform .34s cubic-bezier(.22,1,.36,1);
}
.xh-tabbar a{
  flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px;
  padding:5px 2px;border-radius:12px;font-size:10.6px;font-weight:600;color:var(--gx-t3);
  text-align:center;
}
.xh-tabbar a:hover,.gx-light .xh-tabbar a:hover{color:var(--gx-t1)}
.xh-tabbar a.is-on{color:var(--gx-acc, #7b6bff)}
.xh-tabbar a.is-on .xh-tabbar-i{background:var(--gx-glass-hi);border-color:var(--gx-line-hi)}
.xh-tabbar-i{
  display:grid;place-items:center;width:26px;height:26px;border-radius:9px;
  border:1px solid transparent;transition:.25s;
}
.xh-tabbar a span{max-width:100%;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
body.xh-has-tabbar{padding-bottom:calc(64px + env(safe-area-inset-bottom))}
body.xh-tabbar-hide .xh-tabbar{transform:translateY(110%)}
@media (max-width:820px){.xh-tabbar{display:flex}}


/* ==========================================================================
   图标 / 弹窗 / 状态补充
   ========================================================================== */
.gx-ico{width:16px;height:16px;flex:none;display:inline-block;vertical-align:-2px}
.gx-ico-sm{width:14px;height:14px;flex:none}
.gx-ico-lg{width:28px;height:28px;flex:none}
.gx-search svg{width:17px;height:17px}

.gx-tag.is-on{
  color:var(--gx-t1);background:var(--gx-glass-hi);
  border-color:var(--gx-line-hi);
  box-shadow:inset 0 1px 0 var(--gx-spec-in), 0 6px 18px -12px rgba(123,107,255,.9);
}
.gx-tag b{font-weight:600;opacity:.55;margin-left:2px}

.gx-empty span{display:block;margin-top:8px;font-size:13.2px;color:var(--gx-t3)}
.gx-empty a{color:var(--gx-acc,#8b7dff);font-weight:600}

html.gx-lock,html.gx-lock body{overflow:hidden}

.gx-modal{position:fixed;inset:0;z-index:1200;display:none;align-items:center;justify-content:center;padding:20px}
.gx-modal.is-on{display:flex}
.gx-modal-mask{
  position:absolute;inset:0;background:rgba(4,5,12,.62);
  -webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);
  animation:gxFade .28s ease both;
}
html.gx-light .gx-modal-mask{background:rgba(24,30,54,.34)}
.gx-modal-box{
  position:relative;width:min(94vw,520px);max-height:min(86vh,760px);overflow:auto;
  padding:22px 24px 24px;border-radius:22px;
  animation:gxPop .34s cubic-bezier(.22,1,.36,1) both;
  --gx-glass:rgba(22,26,44,.86); --gx-glass-hi:rgba(30,36,58,.92);
}
html.gx-light .gx-modal-box{--gx-glass:rgba(255,255,255,.92); --gx-glass-hi:#fff}
@keyframes gxFade{from{opacity:0}to{opacity:1}}
@keyframes gxPop{from{opacity:0;transform:translateY(14px) scale(.985)}to{opacity:1;transform:none}}
.gx-modal-head{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:16px}
.gx-modal-head h3{margin:0;font-size:16.5px;font-weight:700;letter-spacing:-.01em;color:var(--gx-t1)}
.gx-modal-foot{display:flex;gap:10px;margin-top:18px;flex-wrap:wrap}
.gx-modal-foot .gx-btn{flex:1 1 auto;justify-content:center}

/* ==========================================================================
   鍒楄〃椤?/ 璇︽儏椤佃ˉ鍏呯粍浠?   ========================================================================== */
.gx-feature{position:relative;overflow:hidden}
.gx-feature::after{
  content:"";position:absolute;right:-60px;top:-70px;width:220px;height:220px;border-radius:50%;
  background:radial-gradient(circle,rgba(123,140,255,.30),transparent 68%);pointer-events:none
}
.gx-card.is-on{border-color:var(--gx-line-hi)}

/* 涓夋娴佺▼ */
.gx-ota{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px}
.gx-ota>div{
  padding:20px 18px;border-radius:var(--gx-r-md);
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(22px) saturate(160%);backdrop-filter:blur(22px) saturate(160%)
}
.gx-ota b{
  display:grid;place-items:center;width:30px;height:30px;border-radius:10px;margin-bottom:12px;
  font:700 13px/1 ui-sans-serif;color:#fff;
  background:linear-gradient(135deg,var(--gx-iris-a),var(--gx-iris-b));
  box-shadow:0 8px 18px -10px rgba(94,124,255,.9)
}
.gx-ota span{display:block;font-size:14px;font-weight:680;color:var(--gx-t1);letter-spacing:-.01em}
.gx-ota i{display:block;margin-top:6px;font-style:normal;font-size:12.6px;line-height:1.6;color:var(--gx-t3)}

/* 骞垮憡浣?*/
.gx-ad{margin:34px 0 0;border-radius:var(--gx-r-md);overflow:hidden}
.gx-ad:empty{display:none}
.gx-ad img{display:block;width:100%;height:auto}

/* 婊氬姩鍏ュ満 */
.gx-reveal{animation:gxRise .7s cubic-bezier(.22,1,.36,1) both}
@keyframes gxRise{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:none}}

@media (max-width:820px){
  .gx-ota{grid-template-columns:1fr}
  .gx-cards{grid-template-columns:1fr}
}


/* 绐勫鍣ㄤ笌鍙屾爮 */
.gx-wrap-narrow{max-width:880px}
.gx-rl{display:grid;grid-template-columns:minmax(0,1fr) 320px;gap:20px;margin-top:22px;align-items:start}
.gx-rl-side{display:grid;gap:16px}
@media (max-width:900px){
  .gx-rl{grid-template-columns:1fr}
}

/* 琛ㄥ崟椤?*/
.gx-formcard{width:min(100%,440px);margin:38px auto 60px;padding:28px 26px 26px}
.gx-formcard h1{margin:0 0 6px;font-size:22px;font-weight:750;letter-spacing:-.025em;color:var(--gx-t1)}
.gx-formcard .gx-sub{margin:0 0 20px;font-size:13.2px;color:var(--gx-t3)}
.gx-formcard .gx-btn{width:100%;justify-content:center;margin-top:6px}
.gx-formcard .gx-field+.gx-field{margin-top:13px}
.gx-formcard .gx-help{text-align:center}
.gx-formcard .gx-form-foot{margin-top:16px;text-align:center;font-size:13px;color:var(--gx-t3)}
.gx-formcard .gx-form-foot a{color:var(--gx-acc,#8b7dff);font-weight:600}

/* 鍒嗕韩鏉?*/
.gx-share{display:flex;gap:8px;flex-wrap:wrap;align-items:center;margin-top:14px}
.gx-share-tip{font-size:12.4px;color:var(--gx-t3);margin:0 0 8px}
.gx-share a,.gx-share button{
  display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border-radius:10px;
  font-size:12.8px;font-weight:600;color:var(--gx-t2);cursor:pointer;
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);
  transition:all .26s var(--gx-ease)
}
.gx-share a:hover,.gx-share button:hover{color:var(--gx-t1);background:var(--gx-glass-hi);border-color:var(--gx-line-hi)}


/* ============================================================
   @gxc-community  开发者社区组件（只依赖 --gx-* 变量，夜/昼同源）
   ============================================================ */

.gxc-repo{
  display:block;padding:18px 20px;border-radius:var(--gx-r-md);
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(22px) saturate(170%);backdrop-filter:blur(22px) saturate(170%);
  box-shadow:inset 0 1px 0 var(--gx-spec-in);
  text-decoration:none;color:inherit;
  transition:transform .4s var(--gx-ease),background .4s var(--gx-ease),border-color .4s var(--gx-ease),box-shadow .4s var(--gx-ease);
}
.gxc-repo:hover{
  transform:translateY(-3px);background:var(--gx-glass-hi);border-color:var(--gx-line-hi);
  box-shadow:0 22px 46px -24px rgba(0,0,0,.8), inset 0 1px 0 var(--gx-spec-in);
}
.gxc-repo-top{display:flex;align-items:center;gap:8px;flex-wrap:wrap;min-width:0}
.gxc-repo-top b{font-size:14.8px;font-weight:700;letter-spacing:-.012em;color:var(--gx-t1);word-break:break-word}
.gxc-repo-desc{margin:8px 0 0;font-size:12.9px;line-height:1.68;color:var(--gx-t3);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gxc-repo-foot{display:flex;align-items:center;gap:13px;flex-wrap:wrap;margin-top:12px;
  font-size:11.9px;color:var(--gx-t3);font-variant-numeric:tabular-nums}
.gxc-repo-foot>span{display:inline-flex;align-items:center;gap:5px}

.gxc-langdot{width:8px;height:8px;border-radius:50%;flex:none;display:inline-block;
  box-shadow:0 0 0 1px rgba(255,255,255,.22), 0 0 10px -2px currentColor}

.gxc-topic{
  display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:999px;
  font-size:11.4px;font-weight:600;color:var(--gx-t2);
  background:var(--gx-glass);border:1px solid var(--gx-line);text-decoration:none;
  transition:all .3s var(--gx-ease)
}
.gxc-topic:hover{color:var(--gx-t1);border-color:var(--gx-line-hi);transform:translateY(-1px)}
.gxc-topic em{font-style:normal;font-size:10.5px;color:var(--gx-t3)}

.gxc-issue{display:flex;gap:12px;padding:14px 2px;border-bottom:1px solid var(--gx-line);text-decoration:none;color:inherit}
.gxc-issue:last-child{border-bottom:0}
.gxc-issue .st{width:9px;height:9px;flex:none;border-radius:50%;margin-top:6px;
  background:linear-gradient(135deg,#4ede8c,#22c47a);box-shadow:0 0 12px -2px rgba(78,222,140,.8)}
.gxc-issue .bd{min-width:0;flex:1}
.gxc-issue .t{display:block;font-size:13.6px;font-weight:620;color:var(--gx-t1);line-height:1.55;word-break:break-word}
.gxc-issue:hover .t{color:#9fb0ff}
html.gx-light .gxc-issue:hover .t{color:#4b5fd6}
.gxc-issue .mt{display:flex;gap:11px;flex-wrap:wrap;margin-top:5px;font-size:11.6px;color:var(--gx-t3)}
.gxc-issue .mt a{color:var(--gx-t2);text-decoration:none}
.gxc-issue .mt a:hover{color:var(--gx-t1)}

.gxc-rank{list-style:none;margin:0;padding:0;display:grid;gap:10px}
.gxc-rank li{display:flex;align-items:center;gap:9px;font-size:12.9px;color:var(--gx-t2);min-width:0}
.gxc-rank li i{width:19px;height:19px;flex:none;border-radius:7px;display:grid;place-items:center;
  font-style:normal;font-size:10.5px;font-weight:750;color:var(--gx-t3);
  background:var(--gx-glass);border:1px solid var(--gx-line)}
.gxc-rank li:nth-child(1) i{color:#fff;background:linear-gradient(135deg,#ff9f43,#ff6b6b);border-color:transparent}
.gxc-rank li:nth-child(2) i{color:#fff;background:linear-gradient(135deg,#7b6bff,#a58bff);border-color:transparent}
.gxc-rank li:nth-child(3) i{color:#fff;background:linear-gradient(135deg,#39c7ff,#25a2ff);border-color:transparent}
.gxc-rank li a{flex:1;min-width:0;color:var(--gx-t2);text-decoration:none;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gxc-rank li a:hover{color:var(--gx-t1)}
.gxc-rank li span{flex:none;font-size:11.4px;color:var(--gx-t3);font-variant-numeric:tabular-nums}

.gxc-code{
  margin:0;padding:15px 0;border-radius:var(--gx-r-md);overflow:auto;
  background:rgba(0,0,0,.34);border:1px solid var(--gx-line);
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12.6px;line-height:1.72;color:var(--gx-t2)
}
html.gx-light .gxc-code{background:rgba(20,23,38,.05)}
.gxc-code .ln{display:block;padding:0 16px;white-space:pre}
.gxc-code .ln:hover{background:var(--gx-glass-lo)}
.gxc-code .ln i{display:inline-block;width:34px;margin-right:12px;font-style:normal;
  text-align:right;color:var(--gx-t3);opacity:.55;user-select:none}

.gxc-filelist{display:grid;gap:2px}
.gxc-filerow{display:flex;align-items:center;gap:10px;padding:10px 12px;border-radius:10px;
  font-size:13px;color:var(--gx-t2);text-decoration:none;transition:background .25s}
.gxc-filerow:hover{background:var(--gx-glass-lo);color:var(--gx-t1)}
.gxc-filerow .ic{width:16px;height:16px;flex:none;opacity:.7}
.gxc-filerow span.sz{margin-left:auto;font-size:11.6px;color:var(--gx-t3);font-variant-numeric:tabular-nums}

.gxc-statline{display:flex;gap:18px;flex-wrap:wrap;font-size:12.4px;color:var(--gx-t3);font-variant-numeric:tabular-nums}
.gxc-statline b{color:var(--gx-t1);font-weight:680}

.gxc-name{display:flex;align-items:center;gap:9px;flex-wrap:wrap;min-width:0}
.gxc-name h1{margin:0;font-size:clamp(20px,2.6vw,26px);font-weight:780;letter-spacing:-.032em;color:var(--gx-t1);word-break:break-word}
.gxc-meta{display:flex;gap:14px;flex-wrap:wrap;margin-top:8px;font-size:12.4px;color:var(--gx-t3)}

@media(max-width:760px){
  .gxc-repo{padding:15px 16px}
  .gxc-repo-desc{-webkit-line-clamp:3}
}

.gxc-stats5{grid-template-columns:repeat(5,1fr)}
.gxc-bar{
  display:flex;align-items:center;gap:12px;flex-wrap:wrap;
  padding:12px 14px;border-radius:var(--gx-r-md);
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);
  box-shadow:inset 0 1px 0 var(--gx-spec-in);
}
.gxc-bar form{display:flex;align-items:center;gap:9px;flex:1;min-width:230px}
.gxc-bar input[type=search],.gxc-bar input[type=text]{
  flex:1;min-width:0;height:40px;padding:0 15px;border-radius:11px;font-size:13.4px;
  color:var(--gx-t1);background:var(--gx-glass);border:1px solid var(--gx-line);outline:none;
  transition:border-color .3s,background .3s
}
.gxc-bar input::placeholder{color:var(--gx-t3)}
.gxc-bar input:focus{border-color:var(--gx-line-hi);background:var(--gx-glass-hi)}
.gxc-bar select{
  height:40px;padding:0 32px 0 13px;border-radius:11px;font-size:13px;color:var(--gx-t2);
  background:var(--gx-glass);border:1px solid var(--gx-line);outline:none;cursor:pointer;
  -webkit-appearance:none;appearance:none;
  background-image:linear-gradient(45deg,transparent 50%,var(--gx-t3) 50%),linear-gradient(135deg,var(--gx-t3) 50%,transparent 50%);
  background-position:calc(100% - 17px) 17px,calc(100% - 12px) 17px;
  background-size:5px 5px,5px 5px;background-repeat:no-repeat
}
.gxc-bar select option{background:#12131c;color:#e8eaf6}
html.gx-light .gxc-bar select option{background:#fff;color:#1a1e33}
@media(max-width:900px){
  .gxc-stats5{grid-template-columns:repeat(2,1fr)}
  .gxc-stats5 .gx-stat:nth-child(3){grid-column:1/-1}
}

.gxc-split{display:grid;grid-template-columns:268px minmax(0,1fr);gap:18px;align-items:start}
.gxc-tree{padding:14px 12px;border-radius:var(--gx-r-md);
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);box-shadow:inset 0 1px 0 var(--gx-spec-in)}
.gxc-tree h4{margin:2px 8px 10px;display:flex;justify-content:space-between;font-size:12px;
  font-weight:700;letter-spacing:.06em;text-transform:uppercase;color:var(--gx-t3)}
.gxc-tree ul{list-style:none;margin:0;padding:0;display:grid;gap:2px}
.gxc-tree li a{display:flex;align-items:center;gap:8px;padding:8px 10px;border-radius:9px;
  font-size:12.6px;color:var(--gx-t2);text-decoration:none;word-break:break-all;transition:all .25s}
.gxc-tree li a:hover{background:var(--gx-glass-hi);color:var(--gx-t1)}
.gxc-tree li.on a{background:linear-gradient(135deg,rgba(123,107,255,.24),rgba(99,217,255,.14));color:var(--gx-t1)}
.gxc-tree .ft{flex:none;min-width:34px;padding:2px 5px;border-radius:6px;font-size:9.5px;font-weight:750;
  letter-spacing:.04em;text-align:center;color:var(--gx-t3);background:var(--gx-glass);border:1px solid var(--gx-line)}

.gxc-editor textarea{
  width:100%;min-height:300px;padding:14px 16px;border-radius:0 0 var(--gx-r-md) var(--gx-r-md);
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12.8px;line-height:1.75;
  color:var(--gx-t1);background:rgba(0,0,0,.28);border:0;border-top:1px solid var(--gx-line);
  outline:none;resize:vertical
}
html.gx-light .gxc-editor textarea{background:rgba(20,23,38,.04)}
.gxc-editor-bar{display:flex;gap:9px;flex-wrap:wrap;padding:12px 14px}
.gxc-editor-bar input{height:36px;padding:0 12px;border-radius:9px;font-size:12.6px;
  color:var(--gx-t1);background:var(--gx-glass);border:1px solid var(--gx-line);outline:none}
.gxc-editor-bar input[name=path]{flex:1 1 200px;min-width:0}
.gxc-editor-bar input.message{flex:1 1 170px;min-width:0}

.gxc-metrics{display:flex;flex-wrap:wrap;gap:8px;margin-top:14px}
.gxc-metrics span{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:10px;
  font-size:12.4px;color:var(--gx-t3);background:var(--gx-glass-lo);border:1px solid var(--gx-line)}
.gxc-metrics span b{color:var(--gx-t1);font-weight:720;font-variant-numeric:tabular-nums}

.gxc-timeline{display:grid;gap:14px;margin-top:14px}
.gxc-rel{position:relative;padding:16px 18px;border-radius:var(--gx-r-md);
  background:var(--gx-glass-lo);border:1px solid var(--gx-line)}
.gxc-rel h4{margin:0;display:flex;align-items:center;gap:9px;flex-wrap:wrap;
  font-size:14px;font-weight:700;color:var(--gx-t1)}
.gxc-rel .sub{margin-top:5px;font-size:11.8px;color:var(--gx-t3)}
.gxc-rel pre{margin:11px 0 0;padding:12px 14px;border-radius:10px;overflow:auto;
  font-family:ui-monospace,SFMono-Regular,Consolas,monospace;font-size:12.4px;line-height:1.7;
  color:var(--gx-t2);background:rgba(0,0,0,.26);border:1px solid var(--gx-line)}
html.gx-light .gxc-rel pre{background:rgba(20,23,38,.04)}
.gxc-tagpill{padding:3px 10px;border-radius:999px;font-size:11.4px;font-weight:700;
  color:#fff;background:linear-gradient(135deg,var(--gx-iris-a),var(--gx-iris-b));
  box-shadow:0 6px 16px -8px rgba(94,124,255,.9)}

.gxc-form label{display:block;margin-bottom:15px;font-size:12.8px;font-weight:600;color:var(--gx-t2)}
.gxc-form label input,.gxc-form label textarea,.gxc-form label select{
  display:block;width:100%;margin-top:7px;padding:11px 13px;border-radius:11px;
  font-size:13.4px;font-weight:400;color:var(--gx-t1);
  background:var(--gx-glass);border:1px solid var(--gx-line);outline:none;
  transition:border-color .3s,background .3s
}
.gxc-form label input:focus,.gxc-form label textarea:focus,.gxc-form label select:focus{
  border-color:var(--gx-line-hi);background:var(--gx-glass-hi)}
.gxc-form label textarea{resize:vertical;line-height:1.7}
.gxc-form .row{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.gxc-form select option{background:#12131c;color:#e8eaf6}
html.gx-light .gxc-form select option{background:#fff;color:#1a1e33}
@media(max-width:900px){
  .gxc-split{grid-template-columns:1fr}
  .gxc-tree{order:2}
  .gxc-form .row{grid-template-columns:1fr}
}

/* 通用分享条（partials/share.php 在 gx 外壳下的样式，原站靠旧 site.css 提供） */
.share-box{padding:15px 17px;border-radius:var(--gx-r-md);margin:16px 0 4px;
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(22px);backdrop-filter:blur(22px);
  box-shadow:inset 0 1px 0 var(--gx-spec-in)}
.share-box>label{display:block;font-size:11.6px;font-weight:650;letter-spacing:.05em;
  text-transform:uppercase;color:var(--gx-t3);margin-bottom:9px}
.share-row{display:flex;gap:9px;flex-wrap:wrap}
.share-row input{flex:1 1 220px;min-width:0;height:38px;padding:0 13px;border-radius:10px;
  font-size:12.6px;color:var(--gx-t2);background:var(--gx-glass);
  border:1px solid var(--gx-line);outline:none}
.share-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:10px}
.share-act{display:inline-flex;align-items:center;gap:6px;padding:7px 13px;border-radius:9px;
  font-size:12.4px;font-weight:600;color:var(--gx-t2);cursor:pointer;text-decoration:none;
  background:var(--gx-glass);border:1px solid var(--gx-line);transition:all .26s var(--gx-ease)}
.share-act:hover{color:var(--gx-t1);background:var(--gx-glass-hi);border-color:var(--gx-line-hi)}
.share-box .share-tip{margin:9px 0 0;font-size:11.8px;color:var(--gx-t3)}
.share-box .xh-btn{height:38px;padding:0 16px;border-radius:10px;display:inline-flex;
  align-items:center;font-size:12.8px;font-weight:650;cursor:pointer;color:var(--gx-t1);
  background:var(--gx-glass);border:1px solid var(--gx-line);transition:all .26s var(--gx-ease)}
.share-box .xh-btn-primary{color:#fff;border-color:transparent;
  background:linear-gradient(135deg,var(--gx-iris-a),var(--gx-iris-b));
  box-shadow:0 10px 22px -12px rgba(94,124,255,.9)}
.share-box .xh-btn:hover{transform:translateY(-1px)}

/* @gxc-community 二期：用户主页 / 合并请求 / 代码命中 / 成员行 */
.gxc-profile{display:flex;gap:22px;align-items:flex-start;flex-wrap:wrap;padding:28px 30px;border-radius:var(--gx-r-lg)}
.gxc-profile .ava{flex:none;width:74px;height:74px;border-radius:22px;display:grid;place-items:center;
  font-size:27px;font-weight:750;color:#fff;letter-spacing:.02em;
  background:linear-gradient(135deg,var(--gx-iris-a),var(--gx-iris-b));
  box-shadow:0 18px 34px -18px rgba(94,124,255,.95),inset 0 1px 0 rgba(255,255,255,.45)}
.gxc-profile .main{flex:1 1 320px;min-width:0}
.gxc-profile h1{margin:8px 0 6px;font-size:26px;font-weight:760;letter-spacing:-.02em;color:var(--gx-t1);
  display:flex;align-items:center;gap:9px;flex-wrap:wrap}
.gxc-profile .sub{display:flex;gap:14px;flex-wrap:wrap;font-size:12.4px;color:var(--gx-t3)}
.gxc-profile .bio{margin:12px 0 0;font-size:13.6px;line-height:1.72;color:var(--gx-t2);max-width:52em}
.gxc-profile .acts{flex:none;display:flex;gap:9px;flex-wrap:wrap}

.gxc-user-mini{display:flex;align-items:center;gap:9px;min-width:0;padding:6px 0;text-decoration:none}
.gxc-user-mini .gx-avatar{flex:0 0 26px;width:26px;height:26px;font-size:11px}
.gxc-user-mini span.nm{flex:1;min-width:0;font-size:12.9px;color:var(--gx-t2);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.gxc-user-mini:hover span.nm{color:var(--gx-t1)}
.gxc-user-mini .num{flex:none;font-size:11.4px;color:var(--gx-t3)}

.gxc-pull{padding:16px 18px;border-radius:var(--gx-r-md);margin-bottom:11px;
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);
  -webkit-backdrop-filter:blur(20px);backdrop-filter:blur(20px);transition:all .28s var(--gx-ease)}
.gxc-pull:hover{border-color:var(--gx-line-hi);background:var(--gx-glass-hi);transform:translateY(-1px)}
.gxc-pull .t{font-size:13.8px;font-weight:680;color:var(--gx-t1);text-decoration:none}
.gxc-pull .flow{margin:8px 0 9px;font-family:ui-monospace,Consolas,monospace;font-size:12.1px;
  color:var(--gx-t3);word-break:break-all;line-height:1.6}
.gxc-pull .meta{display:flex;gap:13px;flex-wrap:wrap;align-items:center;font-size:11.8px;color:var(--gx-t3)}
.gxc-pull .ops{display:flex;gap:8px;margin-top:11px;flex-wrap:wrap}
.gxc-pull .body{margin:10px 0 0;font-size:12.7px;line-height:1.7;color:var(--gx-t2)}
.gxc-pull .state{display:inline-flex;align-items:center;gap:5px;padding:3px 9px;border-radius:7px;
  font-size:11.4px;font-weight:650;background:var(--gx-glass);border:1px solid var(--gx-line);color:var(--gx-t2)}

.gxc-hit{display:block;padding:14px 16px;border-radius:var(--gx-r-md);margin-bottom:10px;text-decoration:none;
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);transition:all .28s var(--gx-ease)}
.gxc-hit:hover{background:var(--gx-glass-hi);border-color:var(--gx-line-hi);transform:translateY(-1px)}
.gxc-hit .path{font-family:ui-monospace,Consolas,monospace;font-size:12.7px;color:var(--gx-t1);
  word-break:break-all;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.gxc-hit .repo{margin-top:5px;font-size:11.9px;color:var(--gx-t3)}
.gxc-hit pre{margin:9px 0 0;padding:11px 13px;border-radius:9px;overflow-x:auto;
  font-family:ui-monospace,Consolas,monospace;font-size:11.9px;line-height:1.65;color:var(--gx-t2);
  background:var(--gx-code-bg,rgba(10,14,28,.5));border:1px solid var(--gx-line);white-space:pre-wrap;word-break:break-all}

.gxc-cloud{display:flex;flex-wrap:wrap;gap:8px}
@media(max-width:760px){
  .gxc-profile{padding:20px 16px;gap:16px}
  .gxc-profile .ava{width:58px;height:58px;border-radius:18px;font-size:21px}
  .gxc-profile h1{font-size:21px}
  .gxc-profile .acts{width:100%}
}

.gxc-repolist{display:grid;grid-template-columns:repeat(auto-fill,minmax(268px,1fr));gap:11px;margin-top:10px}
@media(max-width:760px){.gxc-repolist{grid-template-columns:1fr}}

/* 补齐：验证码按钮 / 密码眼睛 / 登录面板 / VIP 徽标 */
.gx-code-btn{height:38px;padding:0 13px;font-size:12.6px;white-space:nowrap;flex:none}
.gx-code-btn[disabled]{opacity:.55;cursor:not-allowed}
.gx-eye{line-height:1}
.gx-eye:hover{color:var(--gx-t1)!important;background:var(--gx-glass-hi)!important}
.gx-pane{display:flex;flex-direction:column;gap:2px}
.gx-pane[hidden]{display:none!important}
.gx-chip-vip{background:linear-gradient(135deg,rgba(255,206,110,.28),rgba(255,166,72,.22));
  border-color:rgba(255,196,102,.42);color:#ffd58a;font-weight:700;letter-spacing:.02em}

/* 修复：栅格子项被长串撑破（移动端横向溢出） */
.gx-rl-main,.gx-rl-side{min-width:0}
.gxc-pull,.gxc-hit,.gxc-repo{min-width:0;max-width:100%}
.gx-panel,.gx-glass{min-width:0}

/* 修复：抽屉头部/底部被 flex:1 的 body 压扁导致关闭按钮点击被拦截 */
.gx-drawer-head,.gx-drawer-foot{flex:none}
.gx-drawer-head{position:relative;z-index:2;min-height:56px;flex-wrap:nowrap}
.gx-drawer-head .gx-logo{min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}


/* ============================================================
   29. 移动端底部导航（与电脑端头部 .gx-nav 同一套玻璃语言）
   —— 由 nav-g.php 输出 .gx-tabbar，shell.js 不再自建 xh-tabbar
   —— 左侧品牌标为「小涵互联」正式 logo，其后 5 个 SVG 图标胶囊项
   ============================================================ */
.gx-tabbar{display:none}
.gx-footer-mini{display:none}
@media(max-width:820px){
  .gx-tabbar{
    position:fixed;left:10px;right:10px;bottom:calc(10px + env(safe-area-inset-bottom,0px));
    z-index:60;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));align-items:center;gap:2px;
    padding:6px 8px;border-radius:999px;
    background:var(--gx-glass-lo);border:1px solid var(--gx-line);
    -webkit-backdrop-filter:blur(30px) saturate(190%);
    backdrop-filter:blur(30px) saturate(190%);
    box-shadow:0 14px 40px -16px rgba(0,0,0,.6), inset 0 1px 0 var(--gx-spec-in);
    transform:translateZ(0);
    transition:transform .34s cubic-bezier(.4,0,.2,1),opacity .28s
  }
  .gx-tabbar::before{
    content:"";position:absolute;inset:0;border-radius:inherit;pointer-events:none;
    background:linear-gradient(180deg,var(--gx-spec-top),transparent 42%);opacity:.6
  }
  html.gx-light .gx-tabbar{border-color:rgba(255,255,255,.9);box-shadow:var(--gx-shadow)}
  .gx-tabbar.gx-hide{transform:translateY(150%);opacity:0;pointer-events:none}
  /* 品牌标已从底栏移除（仅保留导航按钮，5 项等分），类名保留兜底隐藏 */
  .gx-tabbar-brand{display:none !important}
  .gx-tabbar > a,.gx-tabbar > button{
    appearance:none;-webkit-appearance:none;background:none;border:0;cursor:pointer;font:inherit;
    display:flex;flex-direction:column;align-items:center;justify-content:center;gap:3px;
    padding:6px 2px 5px;border-radius:999px;color:var(--gx-t3);font-size:10.5px;line-height:1;
    letter-spacing:.02em;text-decoration:none;position:relative;
    transition:color .26s,background .26s,transform .2s
  }
  .gx-tabbar > a:active,.gx-tabbar > button:active{transform:scale(.94)}
  .gx-tabbar > a svg,.gx-tabbar > button svg{
    width:21px;height:21px;display:block;stroke:currentColor;fill:none;
    stroke-width:1.85;stroke-linecap:round;stroke-linejoin:round
  }
  /* 激活态：复用头部菜单 a[aria-current] 的玻璃高亮 + 顶部渐变指示条 */
  .gx-tabbar > a.is-on,.gx-tabbar > button.is-on{
    color:var(--gx-t1);background:var(--gx-glass-hi);
    box-shadow:inset 0 1px 0 var(--gx-spec-in), 0 4px 14px -8px rgba(0,0,0,.6)
  }
  .gx-tabbar > a.is-on::after,.gx-tabbar > button.is-on::after{
    content:"";position:absolute;top:1px;left:50%;transform:translateX(-50%);
    width:14px;height:2px;border-radius:2px;
    background:linear-gradient(90deg,var(--gx-iris-a),var(--gx-iris-b))
  }
  .gx-tabbar > a.is-on svg,.gx-tabbar > button.is-on svg{
    stroke:url(#gxTabGrad);filter:drop-shadow(0 0 6px rgba(123,107,255,.45))
  }
  body.gx-has-tabbar{padding-bottom:calc(88px + env(safe-area-inset-bottom,0px))}

  /* 手机端页脚精简：品牌标 + 一行迷你链接 + 版权备案 */
  .gx-footer{margin:44px 14px 18px;padding:22px 18px 16px;border-radius:20px;gap:0}
  .gx-footer-top{gap:14px;flex-direction:column;align-items:center;text-align:center}
  .gx-footer-brand{width:100%;align-items:center;text-align:center}
  .gx-footer-brand .gx-logo{margin:0 auto 8px;justify-content:center}
  .gx-footer-brand .gx-mark{width:28px;height:28px;border-radius:9px}
  .gx-footer-brand p{max-width:none;font-size:12.2px;line-height:1.6;margin:0}
  .gx-footer-brand p .gx-footer-sub{display:none}
  .gx-footer-cols{display:none}
  .gx-footer-mini{display:flex;flex-wrap:wrap;justify-content:center;gap:8px 6px;width:100%;margin-top:2px}
  .gx-footer-mini a{
    display:inline-flex;align-items:center;height:28px;padding:0 12px;border-radius:999px;
    font-size:12px;color:var(--gx-t2);text-decoration:none;
    background:var(--gx-glass);border:1px solid var(--gx-line);
    transition:transform .2s,color .26s,background .26s
  }
  .gx-footer-mini a:active{transform:scale(.96)}
  .gx-footer-bar{margin-top:16px;padding-top:14px;flex-direction:column;align-items:center;text-align:center;gap:6px;font-size:11.8px}
  .gx-footer-legal{gap:6px 10px;justify-content:center;font-size:11.6px}
  .gx-footer-note{display:none}
}

/* ============================================================
   30. 页脚法律信息行 / 底栏广告位
   ============================================================ */
.gx-footer-copy{min-width:0}
.gx-footer-legal{display:flex;flex-wrap:wrap;align-items:center;gap:6px 14px;font-size:12.2px;color:var(--gx-t3);justify-content:flex-end}
.gx-footer-legal a{color:var(--gx-t3);text-decoration:none;transition:color .26s}
.gx-footer-legal a:hover{color:var(--gx-t1)}
.gx-footer-legal .gx-footer-note{opacity:.72}

.xh-ad-slot{
  margin:34px auto 0;max-width:1180px;padding:0 20px;box-sizing:border-box
}
.xh-ad-slot-inner{
  position:relative;display:flex;align-items:center;justify-content:center;gap:14px;
  padding:16px;border-radius:var(--gx-r-md,18px);
  background:var(--gx-glass-lo);border:1px solid var(--gx-line);overflow:hidden
}
.xh-ad-tag{
  position:absolute;top:0;left:0;padding:2px 8px;font-size:10px;letter-spacing:.08em;
  color:var(--gx-t3);background:var(--gx-glass-hi);border-radius:0 0 8px 0;line-height:1.6
}
.xh-ad-slot-inner img{max-width:100%;height:auto;border-radius:12px;display:block}

/* ============================================================
   31. 登录弹窗补齐：记住登录 / 扫码页链接 / 移动扫一扫入口
   ============================================================ */
.xhm-check{display:inline-flex;align-items:center;gap:8px;font-size:12.8px;color:var(--gx-t2);cursor:pointer;user-select:none}
.xhm-check input{
  appearance:none;-webkit-appearance:none;width:17px;height:17px;flex:none;margin:0;cursor:pointer;
  border-radius:6px;border:1px solid var(--gx-line-hi);background:var(--gx-glass-lo);
  position:relative;transition:background .24s,border-color .24s
}
.xhm-check input:checked{background:linear-gradient(135deg,var(--gx-iris-a),var(--gx-iris-b));border-color:transparent}
.xhm-check input:checked::after{
  content:"";position:absolute;left:5px;top:2px;width:5px;height:9px;
  border:2px solid #fff;border-top:0;border-left:0;transform:rotate(42deg)
}
.xhm-check:hover span{color:var(--gx-t1)}

.xhm-qr-link{display:inline-flex;align-items:center;gap:6px;margin-top:12px;font-size:12.8px;color:var(--gx-iris-b);text-decoration:none;transition:opacity .24s}
.xhm-qr-link:hover{opacity:.78;text-decoration:underline}

.xhm-scan-entry{
  display:flex;align-items:center;gap:12px;margin:0 0 16px;padding:12px 14px;
  border-radius:var(--gx-r-md,18px);text-decoration:none;
  background:linear-gradient(135deg,rgba(123,107,255,.18),rgba(37,215,255,.12));
  border:1px solid var(--gx-line);transition:transform .22s,border-color .24s
}
.xhm-scan-entry:active{transform:scale(.985)}
.xhm-scan-entry:hover{border-color:var(--gx-line-hi)}
.xhm-scan-ico{
  width:38px;height:38px;flex:none;display:grid;place-items:center;border-radius:12px;
  background:var(--gx-glass-hi);border:1px solid var(--gx-line)
}
.xhm-scan-ico svg{width:20px;height:20px;fill:var(--gx-t1)}
.xhm-scan-txt{display:flex;flex-direction:column;gap:3px;min-width:0}
.xhm-scan-txt strong{font-size:13.6px;color:var(--gx-t1);font-weight:650}
.xhm-scan-txt em{font-size:11.8px;color:var(--gx-t3);font-style:normal}
.xhm-scan-arrow{margin-left:auto;color:var(--gx-t3);display:grid;place-items:center}
.xhm-scan-arrow svg{width:18px;height:18px;stroke:currentColor;fill:none;stroke-width:1.9;stroke-linecap:round;stroke-linejoin:round}

/* ============================================================
   32. 登录卡片 / 表单输入框（与 login-modal.php 结构对齐）
   ============================================================ */
.xhm-card{position:relative;display:flex;align-items:stretch}
.xhm-pane{display:block}
.xhm-pane[hidden]{display:none!important}
.xhm-card .xhm-box{
  position:relative;display:flex;align-items:center;width:auto;max-height:none;
  border-radius:14px;background:var(--gx-glass-lo);border:1px solid var(--gx-line);
  padding:0 12px;min-height:46px;transition:border-color .26s,background .26s
}
.xhm-card .xhm-box:focus-within{border-color:var(--gx-line-hi);background:var(--gx-glass)}
.xhm-card .xhm-box input{
  flex:1;min-width:0;appearance:none;background:none;border:0;outline:0;
  padding:12px 6px 12px 30px;font:inherit;font-size:13.8px;color:var(--gx-t1);line-height:1.5
}
.xhm-card .xhm-box input::placeholder{color:var(--gx-t3)}
.xhm-card .xhm-ico{
  position:absolute;left:12px;right:auto;top:50%;transform:translateY(-50%);
  width:16px;height:16px;color:var(--gx-t3);pointer-events:none
}
.xhm-card .xhm-ico path{fill:currentColor}
.xhm-card .xhm-field > span{
  display:block;margin-bottom:7px;font-size:12.4px;font-weight:620;color:var(--gx-t2);letter-spacing:.01em
}
.xhm-card .xhm-eye{
  position:relative;right:auto;top:auto;transform:none;margin-left:4px;
  display:grid;place-items:center;color:var(--gx-t3)
}
.xhm-card .xhm-eye svg{width:17px;height:17px;fill:currentColor}
.xhm-card .xhm-code{
  flex:none;margin:0;padding:7px 10px;border-radius:10px;font-size:12.2px;font-weight:640;
  color:var(--gx-iris-b);background:var(--gx-glass-hi);border:1px solid var(--gx-line);
  white-space:nowrap;cursor:pointer;transition:opacity .24s
}
.xhm-card .xhm-code[disabled]{opacity:.5;cursor:not-allowed}
.xhm-tab svg{width:15px;height:15px;margin-right:5px;vertical-align:-2px;fill:currentColor}
.xhm-tabs .xhm-tab{display:inline-flex;align-items:center;justify-content:center;gap:2px}
@media(max-width:760px){
  .xhm-card .xhm-body{padding:22px 18px 20px}
  .xhm-head h2{font-size:18.5px}
  .xhm-tab{font-size:12.4px;padding:8px 0}
  .xhm-tab svg{width:14px;height:14px;margin-right:3px}
  .xhm-scan-entry{margin-bottom:14px}
  .xhm-qr{flex-direction:column;align-items:center;text-align:center}
  .xhm-qr-side{text-align:left}
}

/* ============================================================
   33. 广告位 · 内容区内嵌版（与 .gx-wrap 容器对齐，双主题自适应）
   ============================================================ */
.gx-wrap .xh-ad-slot,
.gx-ad-slot{
    max-width:none;margin:26px 0 0;padding:0
}
.gx-wrap .xh-ad-slot-inner{
    position:relative;display:flex;align-items:center;justify-content:center;gap:12px;
    padding:15px 16px;border-radius:var(--gx-r-md,18px);
    background:var(--gx-glass-lo);border:1px dashed var(--gx-line);
    -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px)
}
.gx-wrap .xh-ad-tag{
    position:absolute;top:0;left:0;padding:2px 8px;font-size:10px;letter-spacing:.08em;
    color:var(--gx-t3);background:var(--gx-glass-hi);border-radius:0 0 9px 0;line-height:1.6
}
.xh-ad-ph{font-size:13px;color:var(--gx-t3);letter-spacing:.01em}
.xh-ad-item{display:flex;align-items:center;justify-content:center;max-width:100%}
.xh-ad-link{display:block;max-width:100%}
@media(max-width:820px){
    .gx-wrap .xh-ad-slot{margin-top:20px}
    .gx-wrap .xh-ad-slot-inner{padding:13px 14px;border-radius:16px}
    .xh-ad-ph{font-size:12.2px}
}

/* ===== 响应式布局工具类（移动端单列 / 网格收敛） ===== */
.gx-split{display:grid;grid-template-columns:minmax(0,1fr) 300px;gap:24px;align-items:center}
.gx-split-side{border-radius:var(--gx-r-md);border:1px solid var(--gx-line);background:var(--gx-glass-lo);padding:18px}
.gx-quickgrid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:10px}
.gx-grid-2{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}
@media (max-width:820px){
  .gx-split{grid-template-columns:1fr;gap:18px}
  .gx-grid-2{grid-template-columns:1fr}
}
@media (max-width:560px){
  .gx-quickgrid{grid-template-columns:repeat(2,minmax(0,1fr))}
}


/* ===== 广告位：招租卡片（占据空槽位时的精装形态） ===== */
.xh-ad-rent{
  display:flex;align-items:center;gap:14px;width:100%;min-width:0;
  padding:4px 2px;text-align:left
}
.xh-ad-rent-ico{
  flex:none;width:46px;height:46px;border-radius:14px;display:grid;place-items:center;
  color:#8b7dff;background:linear-gradient(140deg,rgba(139,125,255,.22),rgba(255,180,92,.16));
  border:1px solid var(--gx-line-hi)
}
.xh-ad-rent-txt{min-width:0;display:flex;flex-direction:column;gap:3px}
.xh-ad-rent-txt b{font-size:14.6px;font-weight:740;letter-spacing:-.01em;color:var(--gx-t1)}
.xh-ad-rent-txt span{font-size:12.4px;line-height:1.55;color:var(--gx-t3)}
.xh-ad-rent-btn{
  flex:none;margin-left:auto;display:inline-flex;align-items:center;gap:6px;
  height:34px;padding:0 14px;border-radius:99px;text-decoration:none;white-space:nowrap;
  font-size:12.6px;font-weight:640;color:var(--gx-t1);
  background:var(--gx-glass-hi);border:1px solid var(--gx-line-hi);
  transition:transform .2s var(--gx-ease),background .2s var(--gx-ease)
}
.xh-ad-rent-btn:hover{transform:translateY(-1px);background:var(--gx-glass-lo)}
.xh-ad-item .ad-footer{
  display:inline-block;font-size:13px;color:var(--gx-t2);text-decoration:none;
  padding:6px 12px;border-radius:10px;border:1px solid var(--gx-line);background:var(--gx-glass-lo)
}
@media (max-width:640px){
  .xh-ad-slot{margin-top:26px}
  .xh-ad-slot-inner{padding:14px 13px}
  .xh-ad-rent{gap:11px;flex-wrap:wrap}
  .xh-ad-rent-ico{width:40px;height:40px;border-radius:12px}
  .xh-ad-rent-ico svg{width:22px;height:22px}
  .xh-ad-rent-txt b{font-size:13.8px}
  .xh-ad-rent-txt span{font-size:11.8px}
  .xh-ad-rent-btn{margin-left:0;height:32px;padding:0 12px;font-size:12px}
}

/* ===== 登录弹窗：手机端「扫一扫」tab 引导 ===== */
.xhm-scan-steps{
  margin:16px 0 0;padding:0;list-style:none;counter-reset:s;display:flex;flex-direction:column;gap:9px
}
.xhm-scan-steps li{
  position:relative;padding-left:28px;font-size:12.8px;line-height:1.6;color:var(--gx-t2);counter-increment:s
}
.xhm-scan-steps li::before{
  content:counter(s);position:absolute;left:0;top:1px;width:19px;height:19px;border-radius:50%;
  display:grid;place-items:center;font-size:11px;font-weight:700;color:#8b7dff;
  background:rgba(139,125,255,.14);border:1px solid var(--gx-line-hi)
}
@media (max-width:640px){
  .xhm-scan-entry{padding:15px 14px}
}


/* ============================================================
   34. 登录 / 注册弹窗视觉升级 v2（布局居中 · 双栏比例 · 细节质感）
   ============================================================ */
.xhm-card{
  box-shadow:0 42px 110px -34px rgba(0,0,0,.92), inset 0 1px 0 var(--gx-spec-in)
}
.xhm-card::after{
  content:"";position:absolute;left:0;right:0;top:0;height:1px;z-index:4;pointer-events:none;
  background:linear-gradient(90deg,transparent,rgba(255,255,255,.26),transparent)
}
.xhm-aside::after{
  content:"";position:absolute;right:-80px;bottom:-96px;width:230px;height:230px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.20),transparent 68%);pointer-events:none
}
/* 品牌标识双行 */
.xhm-brand > div{display:flex;flex-direction:column;gap:2px;line-height:1.2;min-width:0}
.xhm-brand b{font-size:14.8px;font-weight:760;letter-spacing:-.01em;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.xhm-brand span{font-size:9.4px;font-weight:750;letter-spacing:.18em;text-transform:uppercase;opacity:.58}
/* 左侧卖点列表（原 ul 无样式，默认圆点缩进不齐） */
.xhm-aside ul{list-style:none;margin:18px 0 0;padding:0;display:flex;flex-direction:column;gap:11px;position:relative}
.xhm-aside li{display:flex;align-items:flex-start;gap:9px;font-size:12.8px;line-height:1.6;color:var(--gx-t2)}
.xhm-aside li i{
  flex:none;width:16px;height:16px;margin-top:2px;border-radius:50%;position:relative;
  background:rgba(255,255,255,.20);border:1px solid rgba(255,255,255,.34)
}
.xhm-aside li i::after{
  content:"";position:absolute;left:5px;top:3px;width:4px;height:7px;
  border:1.6px solid #fff;border-top:0;border-left:0;transform:rotate(42deg);opacity:.94
}
html.gx-light .xhm-aside li{color:rgba(20,23,38,.72)}
html.gx-light .xhm-aside li i{background:rgba(20,23,38,.12);border-color:rgba(20,23,38,.22)}
html.gx-light .xhm-aside li i::after{border-color:#141726}
.xhm-aside .xhm-tip{margin-top:auto;padding-top:16px;font-size:12.2px;line-height:1.7;opacity:.86}

/* 输入框：统一高度与聚焦光晕 */
.xhm-card .xhm-box{min-height:48px;border-radius:14px}
.xhm-card .xhm-box:focus-within{
  border-color:rgba(123,107,255,.55);
  box-shadow:0 0 0 3px rgba(123,107,255,.14)
}
.xhm-card .xhm-box input{padding:13px 6px 13px 30px;font-size:14px}
.xhm-card .xhm-eye.is-on{color:var(--gx-iris-b)}

/* 扫码区：二维码居中留白 + 步骤序号 */
.xhm-qr{gap:24px;align-items:center}
.xhm-qr-frame{
  width:180px;height:180px;padding:10px;box-sizing:border-box;border-radius:20px;
  box-shadow:0 16px 36px -24px rgba(0,0,0,.9)
}
.xhm-qr-side h4{margin:0 0 10px;font-size:15.5px;font-weight:720}
.xhm-qr-side ol{list-style:none;counter-reset:xhq;margin:0;padding:0;display:flex;flex-direction:column;gap:8px}
.xhm-qr-side ol li{
  counter-increment:xhq;position:relative;padding-left:24px;
  font-size:12.8px;line-height:1.6;color:var(--gx-t3)
}
.xhm-qr-side ol li::before{
  content:counter(xhq);position:absolute;left:0;top:1px;width:17px;height:17px;border-radius:50%;
  display:grid;place-items:center;font-size:10px;font-weight:720;
  background:var(--gx-glass-hi);border:1px solid var(--gx-line);color:var(--gx-t2)
}
.xhm-qr-status{margin-top:14px}

/* 详情/协议勾选（注册页） */
.xhm-legal{display:flex;align-items:flex-start;gap:9px;margin:2px 0 18px;font-size:12.6px;line-height:1.75;color:var(--gx-t3);cursor:pointer}
.xhm-legal input{
  appearance:none;-webkit-appearance:none;flex:none;width:17px;height:17px;margin:3px 0 0;
  border-radius:6px;border:1px solid var(--gx-line-hi);background:var(--gx-glass-lo);
  position:relative;cursor:pointer;transition:background .24s,border-color .24s
}
.xhm-legal input:checked{background:linear-gradient(135deg,var(--gx-iris-a),var(--gx-iris-b));border-color:transparent}
.xhm-legal input:checked::after{
  content:"";position:absolute;left:5px;top:2px;width:5px;height:9px;
  border:2px solid #fff;border-top:0;border-left:0;transform:rotate(42deg)
}
.xhm-legal a{color:#9fb0ff;text-decoration:none}
.xhm-legal a:hover{text-decoration:underline}

/* 提示条（注册页错误 / 成功 / 公告） */
.xhm-alert{
  margin:0 0 16px;padding:11px 14px;border-radius:13px;font-size:12.9px;line-height:1.65;
  border:1px solid var(--gx-line);color:var(--gx-t2);background:var(--gx-glass-lo)
}
.xhm-alert.is-error{color:#ffb3b5;background:rgba(255,90,95,.12);border-color:rgba(255,90,95,.34)}
.xhm-alert.is-ok{color:#a9e8b8;background:rgba(60,200,120,.12);border-color:rgba(60,200,120,.32)}
html.gx-light .xhm-alert.is-error{color:#a01f24}
html.gx-light .xhm-alert.is-ok{color:#186b33}

/* 注册页：同一套悬浮窗视觉，落在页面内而不是遮罩层 */
.xhm-page{
  position:relative;inset:auto;z-index:1;display:flex;justify-content:center;align-items:flex-start;
  padding:clamp(24px,4.5vw,56px) clamp(16px,3vw,36px) 0;min-height:0
}
.xhm-page .xhm-card{width:min(944px,100%);max-height:none;animation:none}
.xhm-page .xhm-body{overflow:visible}
.xhm-page .xhm-head{margin-bottom:18px}

/* 手机端细化 */
@media(max-width:760px){
  .xhm-tabs{padding:4px;gap:4px;margin-bottom:18px}
  .xhm-tabs .xhm-tab{font-size:12.6px;padding:9px 4px}
  .xhm-tabs .xhm-tab svg{width:14px;height:14px;margin-right:3px}
  .xhm-card .xhm-box{min-height:46px}
  .xhm-submit{height:47px;font-size:14.6px}
  .xhm-field{margin-bottom:14px}
  .xhm-row{margin:0 0 16px}
  .xhm-foot{margin-top:18px}
  .xhm-qr-frame{width:168px;height:168px}
  .xhm-page{padding:14px 12px calc(18px + env(safe-area-inset-bottom,0px))}
  .xhm-page .xhm-card{border-radius:22px}
  .xhm-legal{font-size:12.2px}
}

/* 手机端页脚：品牌说明与链接区居中收拢，避免左右参差 */
@media(max-width:760px){
  .gx-footer{text-align:left}
  .gx-footer-brand{align-items:center;text-align:center;width:100%}
  .gx-footer-brand .gx-logo{margin:0 auto 10px}
  .gx-footer-cols{text-align:center}
  .gx-footer-cols > div{align-items:center}
  .gx-footer-bar{width:100%}
  .gx-footer-copy,.gx-footer-legal{justify-content:center;text-align:center;width:100%}
  .xhm-card .xhm-eye.is-on{color:var(--gx-iris-b)}
}


/* ==========================================================================
   31. 2026-11 全端缺陷修复层
   覆盖：手机端文字折行/竖排、触控热区、文字对比度、toast 与底栏重叠、焦点可见
   来源：375×812 与 1440×900 双视口实测（含浅/深两套主题）
   ========================================================================== */

/* 31.1 对比度：--gx-t3 原为 0.38/0.40 alpha，实测 2.36–2.39:1，低于 WCAG AA 4.5:1 */
:root{ --gx-t3: rgba(238,241,255,.62); }
html.gx-light{ --gx-t3: rgba(20,23,38,.56); --gx-t2: rgba(20,23,38,.72) }

/* 31.2 语义色：饱和度高的青/绿在浅底上必须加深，深底上提亮 */
.gx-notice a b{ color:#7fe3ff }
html.gx-light .gx-notice a b{ color:#0a6c8c }
.gx-ok{ color:#5ef0a6; font-weight:700 }
.gx-ok-soft{ color:#5ef0a6; font-weight:650 }
html.gx-light .gx-ok,
html.gx-light .gx-ok-soft{ color:#0d7a45 }

/* 31.3 折行治理：chip / 角标 / CTA / 元信息一律不参与压缩换行，靠父级 wrap 收行 */
.gx-chip,
.gx-pill,
.gx-get,
.gxc-topic,
.gxc-repo-top > span.gx-chip,
.gxc-repo-foot > span{ white-space:nowrap; flex:0 0 auto }
.gx-card-foot{ flex-wrap:wrap; row-gap:8px }
.gx-card-foot > .gx-get{ margin-left:auto }

/* 31.4 章节标题：容器给足宽度，标题不逐字断行 */
.gx-sec-head > div{ flex:1 1 auto; min-width:0 }
.gx-sec-head h2{ word-break:keep-all }

/* 31.5 手机端栅格与表格 */
@media (max-width:760px){
  .gx-quick{ grid-template-columns:repeat(4,1fr); gap:10px }
  .gx-quick a{ padding:16px 6px 14px; gap:8px }
  .gx-quick span{ font-size:12.2px; line-height:1.35; text-align:center }
  .gx-quick > a > small{ font-size:10.8px; line-height:1.3; text-align:center; color:var(--gx-t3) }

  .gx-sec-head{ flex-wrap:wrap; align-items:flex-start; gap:6px 12px }
  .gx-sec-head .gx-more{ flex:none; margin-left:auto }

  .gx-table{ font-size:12.5px }
  .gx-table th,
  .gx-table td{ padding:10px 11px; white-space:nowrap }
  .gx-table th:first-child,
  .gx-table td:first-child{ white-space:normal; min-width:92px }

  .gxc-repo-foot{ gap:10px }
}

/* 31.6 触控热区：可点击元素不小于 42×42，文字按钮补足到 44 高 */
@media (max-width:820px){
  .gx-theme,
  .gx-nav-toggle{ width:42px; height:42px; min-width:42px; min-height:42px }
  .gx-logo{ min-height:44px }
  .gx-btn-primary,
  .gx-btn-ghost{ min-height:44px; display:inline-flex; align-items:center; justify-content:center }
  .gx-tabbar > a,
  .gx-tabbar > button{ font-size:11.5px; min-height:46px }
  .xh-toast{ bottom:calc(96px + env(safe-area-inset-bottom,0px)); z-index:9998 }
  .gx-footer{ margin-bottom:calc(20px + env(safe-area-inset-bottom,0px)) }
}

/* 31.7 键盘焦点可见（原全局无 outline，键盘/无障碍不可用） */
:focus-visible{ outline:2px solid #7fe3ff; outline-offset:2px; border-radius:6px }
html.gx-light :focus-visible{ outline-color:#0a6c8c }
.gx-tabbar a:focus-visible,
.gx-tabbar button:focus-visible{ outline-offset:-2px }


/* 31.8 窄屏（≤360px）底栏与入口再做一次压缩，避免 1fr 被挤破 */
@media (max-width:360px){
  .gx-tabbar{ grid-template-columns:repeat(5,minmax(0,1fr)); padding:5px 6px }
  .gx-tabbar > a,
  .gx-tabbar > button{ font-size:10.5px }
  .gx-quick{ gap:8px }
  .gx-quick span{ font-size:11.4px }
}

/* 31.9 可横滑表格：右侧渐隐，提示内容未显示完（原 34px 余量在手机上完全看不出来） */
@media (max-width:760px){
  .gx-table-wrap{
    background-image:linear-gradient(to left, rgba(123,107,255,.16), rgba(123,107,255,0) 42px);
    background-repeat:no-repeat;
    background-position:right 0 top 0;
    background-size:42px 100%;
    background-attachment:local;
  }
}


/* ============================================================
   34. 交付补丁（2026-11）：禁缩放 / 广告横图 / 数字徽标 / 主题三态
   ============================================================ */

/* 34.1 手机端禁止缩放：锁死文字自动放大（iOS 横屏/放大字号导致版式错位） */
html{
  -webkit-text-size-adjust:100%;
  -moz-text-size-adjust:100%;
  text-size-adjust:100%
}
body{-webkit-tap-highlight-color:transparent;touch-action:manipulation}
@media (max-width:820px){
  /* 双击缩放已由 viewport(user-scalable=no) + touch-action:manipulation 双重压制 */
  .gx-wrap,.gx-sec,.gx-main,input,select,textarea,button{ -webkit-text-size-adjust:100%; text-size-adjust:100% }
}

/* 34.2 全站广告/横幅图统一横图：电脑 200×30（高度上限 40px），手机自适应更小但始终横向
   —— 强制 aspect-ratio + object-fit:cover，竖图会被裁成横条而不是拉成竖条 */
.xh-ad-slot-inner img.xh-ad-img,
.xh-ad-slot-inner .xh-ad-link > img,
.gx-ad img.xh-ad-img{
  display:block;
  width:200px;
  max-width:100%;
  height:auto;
  aspect-ratio:200 / 30;
  max-height:40px;
  object-fit:cover;
  object-position:center;
  border-radius:8px;
  background:var(--gx-glass-hi);
  margin:0;
}
.xh-ad-slot-inner .xh-ad-link,
.gx-ad .xh-ad-link{
  display:inline-flex;
  max-width:100%;
  border-radius:8px;
  overflow:hidden;
  line-height:0;
}
.xh-ad-slot-inner .xh-ad-item,
.gx-ad .xh-ad-item{ max-width:100%; min-width:0 }
/* 兼容旧类名 .gx-ad img 的满宽规则 */
.gx-ad img{ width:200px; max-width:100%; height:auto; aspect-ratio:200 / 30; max-height:40px; object-fit:cover; object-position:center; border-radius:8px }

/* 只有图片的广告位收成紧凑横条，避免 1180px 空卡片包着 200×30 小图 */
.xh-ad-slot-inner:has(img.xh-ad-img){
  width:-moz-fit-content;width:fit-content;max-width:100%;
  justify-content:flex-start;gap:8px;padding:9px 14px
}
.xh-ad-slot-inner:has(img.xh-ad-img) .xh-ad-tag{
  position:static;top:auto;left:auto;padding:0;border-radius:0;background:none;
  font-size:10px;opacity:.6;line-height:1
}
@media (max-width:820px){
  .xh-ad-slot-inner:has(img.xh-ad-img){ padding:8px 12px; gap:6px }
}

@media (max-width:820px){
  .xh-ad-slot-inner img.xh-ad-img,
  .xh-ad-slot-inner .xh-ad-link > img,
  .gx-ad img{ width:172px; max-height:34px; aspect-ratio:172 / 26; border-radius:7px }
  .xh-ad-slot-inner,
  .gx-wrap .xh-ad-slot-inner{ padding:13px 14px; gap:10px }
}
@media (max-width:420px){
  .xh-ad-slot-inner img.xh-ad-img,
  .xh-ad-slot-inner .xh-ad-link > img,
  .gx-ad img{ width:148px; max-height:30px; aspect-ratio:148 / 22 }
}

/* 34.3 裸数字徽标：分类数 / 条目数 / 访问数等孤立数字统一胶囊化（深浅主题同一形状） */
.gx-num,
.gx-tag b,
.gx-chip b{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:22px;
  height:19px;
  padding:0 7px;
  margin:0 1px;
  border-radius:999px;
  font-size:12px;
  font-weight:700;
  line-height:1;
  letter-spacing:0;
  font-variant-numeric:tabular-nums;
  vertical-align:middle;
  color:var(--gx-t2);
  background:var(--gx-glass-hi);
  border:1px solid var(--gx-line);
  box-shadow:inset 0 1px 0 var(--gx-spec-in);
  opacity:1;
  text-shadow:none;
  transition:color .24s,background .24s,border-color .24s;
}
html.gx-light .gx-num,
html.gx-light .gx-tag b,
html.gx-light .gx-chip b{
  color:#2a3050;
  background:rgba(20,23,38,.062);
  border-color:rgba(20,23,38,.14);
  box-shadow:none;
}
/* 标签内数字：与标签文字同一行、略紧凑 */
.gx-tag{ display:inline-flex; align-items:center; gap:5px; line-height:1.35 }
.gx-tag b{ height:18px; min-width:19px; font-size:11.2px; padding:0 6px; margin:0 }
/* 快捷入口 / 侧栏等小号场景 */
.gx-quick small .gx-num,
.gx-side small .gx-num,
.gx-card-foot .gx-num{ height:17px; min-width:19px; font-size:10.8px; padding:0 6px }
@media (max-width:420px){
  .gx-num,.gx-tag b{ height:18px; min-width:20px; font-size:11.2px; padding:0 6px }
}

/* 34.4 主题三态按钮图标联动（自动 / 浅色 / 深色） */
[data-gx-theme-toggle]{ position:relative }
[data-gx-theme-toggle] .gx-i-auto{ display:none }
html.gx-light [data-gx-theme-toggle] .gx-i-sun{ display:block }
html.gx-light [data-gx-theme-toggle] .gx-i-moon{ display:none }
html[data-gx-theme-mode="auto"] [data-gx-theme-toggle] .gx-i-moon,
html[data-gx-theme-mode="auto"] [data-gx-theme-toggle] .gx-i-sun{ display:none }
html[data-gx-theme-mode="auto"] [data-gx-theme-toggle] .gx-i-auto{ display:block }
/* 抽屉里的文字按钮：图标与「主题：自动」同排 */
.gx-drawer-foot [data-gx-theme-toggle]{ gap:8px }
.gx-drawer-foot [data-gx-theme-toggle] svg{
  width:16px;height:16px;flex:none;stroke:currentColor;fill:none;stroke-width:1.8;
  stroke-linecap:round;stroke-linejoin:round
}
.gx-drawer-foot .gx-theme-state{ color:var(--gx-t1); font-weight:640 }

/* ============================================================
   35. 鐢ㄦ埛绔€屾垜鐨勬枃浠躲€嶅瓨鍌ㄧ鐞嗭紙2026-11锛?   浣滅敤鍩熷叏閮ㄦ敹鍙ｅ湪 .mf-* 涓?#member 涔嬪锛屼笉褰卞搷鍏朵粬椤甸潰
   ============================================================ */
.mf-stats{ grid-template-columns:repeat(4,minmax(0,1fr)) }

/* 35.1 鍗犵敤缁熻 */
.mf-quota-head{ display:flex;align-items:baseline;gap:8px;flex-wrap:wrap }
.mf-quota-head b{ font-size:23px;font-weight:770;letter-spacing:-.03em;color:var(--gx-t1);font-variant-numeric:tabular-nums }
.mf-quota-head span{ font-size:12.4px;color:var(--gx-t3) }
.mf-quota-head em{ margin-left:auto;font-style:normal;font-size:12.4px;font-weight:660;color:#8b7dff;font-variant-numeric:tabular-nums }
.mf-bar{ height:8px;border-radius:99px;overflow:hidden;margin-top:10px;background:var(--gx-line) }
.mf-bar i{ display:block;height:100%;border-radius:99px;background:linear-gradient(90deg,#8b7dff,#5e7cff);transition:width .45s var(--gx-ease-out) }
.mf-catchips{ display:flex;gap:8px;flex-wrap:wrap;margin-top:12px }

/* 35.2 涓婁紶鍖?*/
.mf-form .mf-drop{
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;
  padding:22px 16px;border-radius:var(--gx-r-md);cursor:pointer;text-align:center;
  border:1.5px dashed rgba(139,125,255,.34);background:var(--gx-glass-lo);
  transition:border-color .25s,background .25s
}
.mf-form .mf-drop:hover,
.mf-form .mf-drop.is-hot{ border-color:rgba(139,125,255,.72);background:rgba(139,125,255,.12) }
.mf-drop input[type=file]{ display:none }
.mf-drop b{ font-size:14px;font-weight:700;color:var(--gx-t1) }
.mf-drop span{ font-size:12.2px;line-height:1.7;color:var(--gx-t3);max-width:420px }
.mf-drop em{ font-style:normal;font-size:12.2px;line-height:1.6;color:#8b7dff;word-break:break-all;max-width:100% }
.mf-upgrid{ display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.2fr) auto;gap:12px;align-items:end;margin-top:14px }
.mf-upgrid .gx-btn{ min-height:42px }
.mf-note{ margin:12px 0 0;font-size:12.4px;line-height:1.85;color:var(--gx-t3) }

/* 35.3 绛涢€?*/
.mf-filter{ display:grid;grid-template-columns:repeat(4,minmax(0,1fr)) auto;gap:12px;align-items:end }
.mf-filter-act{ display:flex;gap:8px;flex-wrap:wrap }

/* 35.4 鏂囦欢鍗＄墖鍒楄〃锛堣〃鏍煎湪绐勫睆涓嶅彲鐢紝缁熶竴鏀瑰崱鐗囷級 */
.mf-list{ display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:12px }
.mf-files h4 .gx-tag{ margin-left:2px }
.mf-item{
  display:grid;grid-template-columns:64px minmax(0,1fr);grid-template-areas:"thumb meta" "acts acts";
  gap:10px 12px;padding:13px;border-radius:var(--gx-r-md);min-width:0;
  border:1px solid rgba(139,125,255,.18);background:var(--gx-glass-lo);
  transition:border-color .25s,background .25s,transform .25s
}
.mf-item:hover{ border-color:rgba(139,125,255,.42);background:var(--gx-glass) }
.mf-thumb{ grid-area:thumb;width:64px;height:64px;border-radius:var(--gx-r-sm);overflow:hidden;display:flex;align-items:center;justify-content:center;background:rgba(139,125,255,.16);border:1px solid rgba(139,125,255,.2) }
.mf-thumb a{ display:block;width:100%;height:100% }
.mf-thumb img{ width:100%;height:100%;object-fit:cover;display:block }
.mf-thumb i{ font-style:normal;font-size:12px;font-weight:800;letter-spacing:.02em;color:#8b7dff;text-transform:uppercase;word-break:break-all;padding:0 4px;text-align:center;line-height:1.2 }
.mf-meta{ grid-area:meta;min-width:0 }
.mf-name{ font-size:13.2px;font-weight:680;line-height:1.45;color:var(--gx-t1);word-break:break-all }
.mf-sub{ margin-top:3px;font-size:11.8px;line-height:1.5;color:var(--gx-t3);word-break:break-all }
.mf-tags{ display:flex;gap:6px;flex-wrap:wrap;align-items:center;margin-top:7px }
.mf-dim{ font-size:11.6px;color:var(--gx-t3);font-variant-numeric:tabular-nums;white-space:nowrap }
.mf-acts{ grid-area:acts;display:flex;gap:8px;flex-wrap:wrap;align-items:flex-start }
.mf-acts > form,
.mf-acts > .mf-replace{ margin:0;min-width:0 }
.mf-acts .gx-btn{ padding:0 13px;min-height:36px;font-size:12.4px;border-radius:11px;cursor:pointer;border:1px solid rgba(139,125,255,.26);background:var(--gx-glass-lo);color:var(--gx-t1) }
.mf-acts .gx-btn:hover{ border-color:rgba(139,125,255,.6);background:rgba(139,125,255,.14) }
.mf-acts .mf-del{ color:#ff8b8b;border-color:rgba(255,139,139,.34) }
.mf-acts .mf-del:hover{ background:rgba(255,139,139,.14);border-color:rgba(255,139,139,.6) }
.mf-replace{ position:relative }
.mf-replace > summary{ list-style:none;display:inline-flex;align-items:center;justify-content:center }
.mf-replace > summary::-webkit-details-marker{ display:none }
.mf-replace[open] > summary{ border-color:rgba(139,125,255,.7);background:rgba(139,125,255,.16) }
.mf-replace > form{
  position:absolute;z-index:20;left:0;top:calc(100% + 8px);width:250px;max-width:74vw;
  display:flex;flex-direction:column;gap:9px;padding:12px;border-radius:var(--gx-r-md);
  background:var(--gx-bg-1);border:1px solid rgba(139,125,255,.34);box-shadow:var(--gx-shadow)
}
.mf-replace > form input[type=file]{ width:100%;font-size:11.8px;color:var(--gx-t2) }
.mf-replace > form .gx-btn{ min-height:36px;font-size:12.4px }

/* 35.5 杞绘彁绀?*/
.mf-toast{
  position:fixed;left:50%;bottom:calc(88px + env(safe-area-inset-bottom,0px));transform:translate(-50%,14px);
  padding:10px 18px;border-radius:99px;font-size:12.8px;font-weight:620;color:#fff;white-space:nowrap;
  max-width:calc(100vw - 40px);overflow:hidden;text-overflow:ellipsis;
  background:rgba(20,23,38,.92);border:1px solid rgba(139,125,255,.42);
  box-shadow:0 18px 40px -18px rgba(0,0,0,.7);opacity:0;pointer-events:none;z-index:9997;
  transition:opacity .22s,transform .22s
}
.mf-toast.is-show{ opacity:1;transform:translate(-50%,0) }

/* 35.6 鍝嶅簲寮忥細鈮?080 鍗＄墖鍗曞垪銆佺瓫閫変笁鍒?*/
@media (max-width:1080px){
  .mf-list{ grid-template-columns:1fr }
  .mf-filter{ grid-template-columns:repeat(2,minmax(0,1fr)) }
  .mf-filter-act{ grid-column:1 / -1 }
}
/* 鈮?20锛氬钩鏉?鎵嬫満锛屼笂浼犲尯涓庣瓫閫夊叏閮ㄥ爢鍙狅紝瑙︽帶鐑尯琛ヨ冻 */
@media (max-width:820px){
  .mf-stats{ grid-template-columns:repeat(2,minmax(0,1fr)) }
  .mf-upgrid{ grid-template-columns:1fr;gap:10px }
  .mf-upgrid .gx-btn{ width:100% }
  .mf-filter{ grid-template-columns:1fr }
  .mf-filter-act .gx-btn{ flex:1 1 auto;min-height:44px }
  .mf-acts .gx-btn,
  .mf-replace > summary{ min-height:44px }
  .mf-quota-head b{ font-size:21px }
}
/* 鈮?60锛氬皬灞忓啀鍘嬬缉锛屽崱鐗囨敼涓虹缉鐣ュ浘+淇℃伅涓婁笅缁撴瀯 */
@media (max-width:560px){
  .mf-item{ grid-template-columns:52px minmax(0,1fr);padding:12px }
  .mf-thumb{ width:52px;height:52px }
  .mf-name{ font-size:13px }
  .mf-acts{ gap:7px }
  .mf-acts .gx-btn{ flex:1 1 calc(50% - 4px);min-width:0;padding:0 8px }
  .mf-replace{ flex:1 1 calc(50% - 4px) }
  .mf-replace > summary{ width:100% }
  .mf-replace > form{ width:calc(100vw - 56px);max-width:320px;left:auto;right:0 }
  .mf-toast{ bottom:calc(96px + env(safe-area-inset-bottom,0px)) }
}
/* 35.7 娴呰壊涓婚涓嬬殑鎻忚竟鍔犳繁涓€妗ｏ紝閬垮厤鐧芥弿杈圭湅涓嶈 */
html.gx-light .mf-item{ border-color:rgba(90,72,200,.18);background:rgba(255,255,255,.72) }
html.gx-light .mf-item:hover{ border-color:rgba(90,72,200,.42);background:rgba(255,255,255,.92) }
html.gx-light .mf-acts .gx-btn{ border-color:rgba(90,72,200,.24);background:rgba(255,255,255,.78);color:#141726 }
html.gx-light .mf-toast{ background:rgba(24,28,48,.94) }


/* 35.8 touch targets: replace-confirm and delete keep >=44px height / >=64px width on phones */
@media (max-width:820px){
  .mf-replace > form .gx-btn{ min-height:44px }
  .mf-acts .mf-del{ min-width:64px }
}


/* ============================================================
   36. 移动端导航三件套重制（2026-11 全站 UI 修整）
   —— 头部：只保留 品牌 + 主题 + 抽屉菜单，注册/登录收进抽屉
   —— 底栏：5 项等分，取消错位换行，激活态改为柔和胶囊
   —— 页脚：收紧留白，快捷链接单行横滑，不再换行堆成一片
   ============================================================ */
@media (max-width:820px){

  /* 36.1 头部 -------------------------------------------------- */
  body .gx-nav{
    top:8px;margin-top:8px;
    width:calc(100% - 20px);
    gap:8px;
    padding:6px 7px 6px 12px;
    border-radius:18px;
    min-height:56px;
  }
  body .gx-nav .gx-logo{
    gap:8px;font-size:15.5px;min-height:0;min-width:0;
    overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  }
  body .gx-nav .gx-logo .gx-mark{width:28px;height:28px;border-radius:9px;flex:none}
  body .gx-nav-act{gap:6px;margin-left:auto;min-width:0}
  /* 注册 / 登录 按钮移入抽屉（抽屉内已有完整入口），头部不再拥挤 */
  body .gx-nav-act > .gx-btn{display:none}
  body .gx-nav-act .gx-user-name{display:none}
  body .gx-nav-act .gx-user-trigger{padding:4px;gap:0}
  body .gx-nav-act .gx-theme,
  body .gx-nav-act .gx-nav-toggle{
    width:40px;height:40px;min-width:40px;min-height:40px;border-radius:12px;
  }
  body .gx-nav-act .gx-nav-toggle{display:grid}
  body .gx-nav-act .gx-icon-btn{width:40px;height:40px;border-radius:12px}

  /* 36.2 底部导航：去掉一切多余占位，5 项严格等分 ------ */
  .gx-tabbar{
    left:8px;right:8px;
    bottom:calc(8px + env(safe-area-inset-bottom,0px));
    padding:5px;
    border-radius:20px;
    grid-template-columns:repeat(5,minmax(0,1fr));
    grid-auto-flow:column;grid-auto-rows:1fr;
    gap:0;
  }
  .gx-tabbar > svg{display:none}   /* 兜底：任何内联 svg 不参与栅格 */
  .gx-tabbar > a,
  .gx-tabbar > button{
    min-height:48px;min-width:0;
    padding:5px 1px 4px;
    gap:3px;
    border-radius:15px;
    font-size:10.5px;font-weight:560;letter-spacing:0;
  }
  .gx-tabbar > a svg,
  .gx-tabbar > button svg{width:22px;height:22px;stroke-width:1.75}
  .gx-tabbar > a.is-on,
  .gx-tabbar > button.is-on{
    color:var(--gx-t1);
    background:linear-gradient(180deg, rgba(123,107,255,.20), rgba(37,215,255,.10));
    box-shadow:inset 0 0 0 1px rgba(140,128,255,.34);
  }
  /* 激活指示：贴底 14px 细线，不再悬在顶部压住图标 */
  .gx-tabbar > a.is-on::after,
  .gx-tabbar > button.is-on::after{
    top:auto;bottom:2.5px;left:50%;transform:translateX(-50%);
    width:14px;height:2px;border-radius:2px;
  }
  body.gx-has-tabbar{padding-bottom:calc(78px + env(safe-area-inset-bottom,0px))}

  /* 36.3 页脚：收紧留白，快捷链接单行横滑 ---------------- */
  body .gx-footer{
    margin:32px 10px calc(10px + env(safe-area-inset-bottom,0px));
    padding:18px 14px 14px;
    border-radius:18px;
    font-size:12px;
  }
  body .gx-footer .gx-footer-top{gap:10px}
  body .gx-footer .gx-footer-brand .gx-logo{margin-bottom:6px;font-size:15px}
  body .gx-footer .gx-footer-brand p{font-size:12px;line-height:1.55;color:var(--gx-t3)}
  body .gx-footer .gx-footer-mini{
    display:flex;flex-wrap:nowrap;
    justify-content:flex-start;
    gap:6px;width:100%;
    margin-top:12px;
    overflow-x:auto;
    -webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding-bottom:2px;
  }
  body .gx-footer .gx-footer-mini::-webkit-scrollbar{display:none;height:0}
  body .gx-footer .gx-footer-mini a{flex:none;white-space:nowrap}
  body .gx-footer .gx-footer-bar{
    margin-top:12px;padding-top:11px;gap:5px;font-size:11.5px;
    border-top:1px solid var(--gx-line);
  }
  body .gx-footer .gx-footer-legal{gap:4px 10px;font-size:11.2px;line-height:1.6}
}

/* 36.4 超窄屏（≤380px）：站名让位给按钮，头部不换行 ---------- */
@media (max-width:380px){
  body .gx-nav .gx-logo{font-size:0}
  body .gx-nav .gx-logo .gx-mark{margin-right:0}
}


/* ============================================================
   37. 移动端控件对齐与内页首屏留白（2026-11）
   —— 搜索框按钮与输入区同一高度，不再一高一矮
   —— 内页大标题区收紧顶部留白，首屏不再空掉一半
   ============================================================ */
@media (max-width:820px){
  /* 37.1 搜索框：输入区与按钮等高（42），整体成一个规整药丸 */
  body .gx-search{
    margin-top:24px;
    padding:5px 5px 5px 15px;
    gap:8px;
    border-radius:999px;
  }
  body .gx-search input{height:42px;font-size:15px}
  body .gx-search .gx-btn,
  body .gx-search button{
    height:42px;min-height:42px;
    padding:0 18px;font-size:13.5px;
    border-radius:999px;flex:none;
  }
  body .gx-search .gx-mag svg,body .gx-search > svg{width:17px;height:17px}

  /* 37.2 内页首屏：压缩过大的顶部留白 */
  body .gx-pagehead{padding:32px 0 6px}
  body .gx-pagehead h1{font-size:26px;line-height:1.22}
  body .gx-pagehead p{margin-top:9px;font-size:13.8px;line-height:1.62}

  /* 37.3 首页 hero：标题与搜索框之间不再拉太开 */
  body .gx-hero{padding:26px 0 18px}
  body .gx-hero .gx-h1{font-size:27px}
  body .gx-sub{font-size:14px;margin-top:10px}
}


/* ============================================================
   38. 手机端首屏瘦身（2026-11）
   —— 统计条：从 2×2 大方块（约 200px 高）改为单行横滑胶囊（约 46px）
   —— 热词行：单行横滑，不再折成两行
   —— 广告位：压成细横条，不再在首屏挡出一大块
   ============================================================ */
@media (max-width:820px){
  /* 38.1 统计条 */
  body .gx-stats{
    display:flex;flex-wrap:nowrap;
    gap:8px;
    margin-top:16px;padding:0;
    background:none;border:0;box-shadow:none;
    border-radius:0;
    overflow-x:auto;-webkit-overflow-scrolling:touch;
    scrollbar-width:none;
  }
  body .gx-stats::-webkit-scrollbar{display:none;height:0}
  body .gx-stats .gx-stat{
    flex:0 0 auto;
    flex-direction:row;
    align-items:baseline;
    justify-content:center;
    gap:6px;
    min-height:0;
    padding:9px 14px;
    border-radius:14px;
    background:var(--gx-glass-lo);
    border:1px solid var(--gx-line);
    box-shadow:inset 0 1px 0 var(--gx-spec-in);
    white-space:nowrap;
  }
  body .gx-stats .gx-stat::before{display:none!important}
  body .gx-stats .gx-stat b{font-size:15.5px;letter-spacing:-.01em;line-height:1.1}
  body .gx-stats .gx-stat span{margin-top:0;font-size:11.8px;letter-spacing:0;line-height:1.1}
  /* 单独成行的 3 格 / 5 格统计（如客户端详情）不参与横滑折行 */
  body .gx-stats .gx-stat[style*="grid-column"]{grid-column:auto}

  /* 38.2 热词行：单行横滑 */
  body .gx-hotrow{
    flex-wrap:nowrap;
    justify-content:flex-start;
    gap:7px;
    margin-top:12px;
    overflow-x:auto;-webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    padding-bottom:2px;
  }
  body .gx-hotrow::-webkit-scrollbar{display:none;height:0}
  body .gx-hotrow .gx-tag{flex:none;white-space:nowrap;padding:6px 12px;font-size:12.4px}

  /* 38.3 广告位：压成细条 */
  body .xh-ad-slot-inner{padding:8px 12px!important;gap:8px!important;border-radius:14px!important}
  body .xh-ad-slot-inner:has(img.xh-ad-img){padding:7px 10px!important}
  body .xh-ad-rent{padding:0!important;gap:8px!important}
  body .gx-ad{margin:14px 0}
}


/* ============================================================
   39. 手机端降噪（2026-11）
   —— 空置广告位（无图，仅「广告位招租」占位）在手机上直接不展示
   —— 站内提示条压缩为两行以内的小条
   ============================================================ */
@media (max-width:820px){
  /* 39.1 无图广告位：手机端隐藏，有真实广告图才显示细横条 */
  body .xh-ad-slot:not(:has(img)),
  body .gx-ad:not(:has(img)){display:none!important}

  /* 39.2 提示条 */
  body .gx-alert{
    margin:14px 0;
    padding:12px 14px;
    border-radius:14px;
    font-size:12.4px;
    line-height:1.6;
  }
  body .gx-alert h4,body .gx-alert b{font-size:12.8px}
}


/* ============================================================
   40. 手机端页脚重排（2026-11）
   —— 版权 / 备案 / 公安网备 不再各行一条挤在一起，改为居中两行紧凑小字
   —— 隐藏营销性的说明句，只留必要信息
   ============================================================ */
@media (max-width:820px){
  body .gx-footer{padding:26px 0 18px}
  body .gx-footer-bar{
    display:flex;flex-direction:column;align-items:center;
    gap:7px;
    margin-top:12px;padding-top:14px;
    text-align:center;
  }
  body .gx-footer-copy{
    display:block;font-size:12.2px;line-height:1.5;
    color:var(--gx-t3);letter-spacing:0;
  }
  body .gx-footer-legal{
    display:flex;flex-wrap:wrap;align-items:center;justify-content:center;
    gap:4px 10px;
    font-size:11.8px;line-height:1.5;
  }
  body .gx-footer-legal a{
    font-size:11.8px;color:var(--gx-t3);opacity:.92;white-space:nowrap;
  }
  body .gx-footer-note{display:none}
  /* 页脚品牌区：小屏只留 logo + 一句 */
  body .gx-footer .gx-footer-sub{display:none}
  body .gx-footer-mini{
    display:flex;flex-wrap:nowrap;justify-content:flex-start;
    gap:8px;overflow-x:auto;-webkit-overflow-scrolling:touch;
    scrollbar-width:none;
    margin:2px 0 4px;padding:0 0 2px;
  }
  body .gx-footer-mini::-webkit-scrollbar{display:none;height:0}
  body .gx-footer-mini a{flex:none;white-space:nowrap;padding:6px 12px;font-size:12.2px;border-radius:999px}
}


/* ============================================================
   41. 页脚对齐修复（2026-11）
   —— 根因：.gx-footer 手机端 width 被固定成 calc(100%-48px) 且 margin 10px，
      而主内容 .gx-wrap 是 margin 14px / calc(100%-28px)，
      两者左差 4px、右差 28px，导致版权块整体偏左、右边对不齐
   —— 修法：页脚改用与 .gx-wrap 完全一致的 14px 外边距 + auto 宽度，
      内部统一 18px 内边距，与页面卡片内容左边缘对齐
   ============================================================ */
@media (max-width:820px){
  body .gx-footer{
    width:auto!important;
    max-width:none!important;
    margin:26px 14px 18px!important;
    padding:22px 18px 16px!important;
    border-radius:20px;
  }
  body .gx-footer > *{width:100%}
}

/* ============================================================
   42. 列表页模块化页头 / 工具栏（2026-11）
   —— 页头收成一张卡：标题 + 关键词胶囊 + 数字条，取代原来的一大段说明文字
   —— 搜索、分类、排序合并进同一张「工具栏卡」，不再散落三行
   ============================================================ */
.gx-lh{
  margin:4px 0 18px;
  padding:20px 22px;
  border-radius:22px;
  background:var(--gx-glass-lo);
  border:1px solid var(--gx-line);
  box-shadow:inset 0 1px 0 var(--gx-spec-in);
}
.gx-lh .gx-crumb{margin:0 0 12px}
.gx-lh-body{display:flex;align-items:flex-end;justify-content:space-between;gap:28px;flex-wrap:wrap}
.gx-lh-lead{min-width:0}
.gx-lh h1{margin:0;font-size:clamp(23px,2.3vw,30px);line-height:1.2;letter-spacing:-.02em}
.gx-lh-kw{display:flex;flex-wrap:wrap;gap:7px;margin-top:11px}
.gx-lh-kw span{
  padding:4px 11px;border-radius:999px;
  font-size:12px;font-weight:600;letter-spacing:.01em;
  color:var(--gx-t2);
  background:var(--gx-glass-lo);
  border:1px solid var(--gx-line);
}
.gx-lh-nums{display:flex;align-items:center;flex:none}
.gx-lh-num{padding:0 18px;border-left:1px solid var(--gx-line);text-align:center}
.gx-lh-num:first-child{border-left:0;padding-left:0}
.gx-lh-num:last-child{padding-right:0}
.gx-lh-num b{
  display:block;font-size:21px;font-weight:780;letter-spacing:-.03em;line-height:1.1;
  color:var(--gx-t1);
}
.gx-lh-num span{display:block;margin-top:4px;font-size:11.6px;font-weight:560;color:var(--gx-t3);white-space:nowrap}

/* 工具栏卡 */
.gx-tool{
  margin:0 0 20px;
  padding:14px;
  border-radius:20px;
  background:var(--gx-glass-lo);
  border:1px solid var(--gx-line);
  box-shadow:inset 0 1px 0 var(--gx-spec-in);
}
.gx-tool .gx-search{margin:0}
.gx-tool .gx-hotrow{margin:11px 0 0}
.gx-tool-foot{
  display:flex;align-items:center;justify-content:space-between;gap:12px;
  margin-top:12px;padding-top:11px;
  border-top:1px solid var(--gx-line);
  font-size:12.4px;color:var(--gx-t3);
}
.gx-tool-foot b{color:var(--gx-t1);font-weight:700}
.gx-tool-foot .gx-tabs,.gx-tool-foot .gx-tags{flex:none}

@media (max-width:820px){
  body .gx-lh{margin:2px 0 14px;padding:16px 16px 14px;border-radius:20px}
  body .gx-lh .gx-crumb{margin-bottom:9px}
  body .gx-lh-body{flex-direction:column;align-items:stretch;gap:13px}
  body .gx-lh h1{font-size:23px}
  body .gx-lh-kw{margin-top:9px;gap:6px}
  body .gx-lh-kw span{padding:4px 10px;font-size:11.4px}
  body .gx-lh-nums{
    display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
    padding-top:12px;border-top:1px solid var(--gx-line);
  }
  body .gx-lh-num{padding:0 4px;border-left:1px solid var(--gx-line)}
  body .gx-lh-num:first-child{padding-left:4px}
  body .gx-lh-num b{font-size:17px}
  body .gx-lh-num span{font-size:11px;margin-top:3px}

  body .gx-tool{margin:0 0 16px;padding:12px;border-radius:18px}
  body .gx-tool-foot{font-size:11.8px;margin-top:10px;padding-top:9px}
}


/* ============================================================
   43. 页脚内容与模块左缘对齐 + 内页数字强化（2026-11）
   —— 根因二：footer 左右内边距 36px（手机 18px），而内容卡片是 24px，
      于是页脚里的版权 / 备案文字比上方模块内缩 12px（手机 6px），
      右边看起来"没跟其他模块对齐"。这里统一到 24px，并改为左对齐。
   ============================================================ */
.gx-footer{padding:40px 24px 28px}

@media (max-width:820px){
  body .gx-footer{
    padding:22px 24px 16px!important;
    text-align:left;
  }
  body .gx-footer .gx-footer-top{align-items:flex-start;text-align:left;gap:14px}
  body .gx-footer .gx-footer-brand{align-items:flex-start;text-align:left;justify-content:flex-start}
  body .gx-footer .gx-footer-brand .gx-logo{margin:0 0 8px;justify-content:flex-start}
  body .gx-footer .gx-footer-mini{justify-content:flex-start;margin:10px 0 2px}
  body .gx-footer .gx-footer-bar{
    align-items:flex-start;text-align:left;
    justify-content:flex-start;
  }
  body .gx-footer .gx-footer-copy,
  body .gx-footer .gx-footer-legal{
    text-align:left;justify-content:flex-start;align-items:center;
  }
  body .gx-lh{padding:16px 18px 14px}
  body .gx-tool{padding:14px}
}

/* 数字条更清晰：数字加重、标签提亮 */
.gx-lh-num b{font-size:22px;font-weight:800;color:var(--gx-t1)}
.gx-lh-num span{color:var(--gx-t2)}
@media (max-width:820px){
  body .gx-lh-num b{font-size:18px;letter-spacing:-.02em}
  body .gx-lh-num span{color:var(--gx-t2);opacity:.92}
}
/* 工具栏内排序选中态加强 */
.gx-tool-foot .gx-tabs{padding:3px}
.gx-tool-foot .gx-tabs a{padding:7px 14px;font-size:12.6px}
.gx-tool-foot .gx-tabs .is-on{
  color:var(--gx-t1);font-weight:700;
  background:var(--gx-glass-hi);
  box-shadow:inset 0 1px 0 var(--gx-spec-in),0 6px 16px -10px rgba(0,0,0,.7);
}


/* ============================================================
   44. 内页模块水平内边距统一（与卡片内容左缘同一基准线）
   —— 目标：页头卡 / 工具栏卡 / 内容卡 / 页脚的文字左缘全部落在同一条竖线上
   ============================================================ */
.gx-lh{padding:20px 24px}
.gx-tool{padding:16px 20px}
@media (max-width:820px){
  body .gx-lh{padding:16px 24px 14px}
  body .gx-tool{padding:14px 20px}
  body .gx-tool .gx-search{padding-left:2px;padding-right:2px}
}

/* ============================================================
   45. 卡片列表模块化（下载 / 工具 / 书籍 / 导航 / 客户端）
   —— 统一四段结构：图标+标题元信息 / 两行摘要 / 胶囊标签 / 图标箭头
   ============================================================ */
/* 45.1 图标：线性 SVG + 分色底，替掉原先的文字首字母与扩展名 */
.gx-appicon svg{width:23px;height:23px;display:block}
.gx-appicon[data-tone="a"]{background:linear-gradient(140deg,#6d5cff,#9b7bff)}
.gx-appicon[data-tone="b"]{background:linear-gradient(140deg,#2f8fff,#22d3ee)}
.gx-appicon[data-tone="c"]{background:linear-gradient(140deg,#ff8a3d,#ff5a7a)}
.gx-appicon[data-tone="d"]{background:linear-gradient(140deg,#17b98a,#4ade80)}
.gx-appicon[data-tone="e"]{background:linear-gradient(140deg,#5b6b8c,#8a9ab8)}

/* 45.2 卡片本体：hover 抬升 + 一致性间距 */
.gx-card{transition:transform .34s var(--gx-ease),border-color .34s var(--gx-ease),box-shadow .34s var(--gx-ease)}
.gx-card:hover{transform:translateY(-2px);border-color:var(--gx-line-hi)}
.gx-card-desc{margin-top:12px;font-size:13.2px;line-height:1.6}
.gx-card-foot{margin-top:14px;gap:7px}
.gx-card-id p{font-size:12.4px}

/* 45.3 卡片尾部：标签收紧 + 图标箭头按钮 */
.gx-card .gx-chip{font-size:11.6px;padding:3.5px 10px;height:23px;display:inline-flex;align-items:center;gap:4px;white-space:nowrap}
.gx-get.is-icon{width:32px;height:32px;padding:0;display:grid;place-items:center;border-radius:999px}
.gx-get.is-icon svg{width:16px;height:16px}
.gx-card:hover .gx-get.is-icon{color:#fff}

/* 45.4 书籍卡（封面型）摘要与底部对齐 */
.gx-book-sum{margin:0 0 10px;font-size:11.8px;line-height:1.55;color:var(--gx-t3);
  min-height:36px;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.gx-book-title{margin:10px 0 5px;font-size:14px;font-weight:700;line-height:1.4;color:var(--gx-t1);
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}

/* 45.5 手机端：卡片内边距与图标收缩，信息量不变 */
@media (max-width:820px){
  body .gx-card{padding:16px 16px 14px}
  body .gx-appicon{width:44px;height:44px;border-radius:13px}
  body .gx-appicon svg{width:21px;height:21px}
  body .gx-card-desc{margin-top:10px;font-size:12.8px;line-height:1.58}
  body .gx-card-foot{margin-top:12px;gap:6px;row-gap:6px}
  body .gx-card .gx-chip{font-size:11.2px;height:22px;padding:3px 9px}
  body .gx-cards{gap:12px}
  body .gx-get.is-icon{width:30px;height:30px}
  body .gx-fmt{padding:12px}
  body .gx-book-title{font-size:13.2px;margin:9px 0 4px}
  body .gx-book-sum{font-size:11.4px;min-height:34px}
}
/* ============================================================
   46. 空状态模块化：图标胶囊 + 标题 + 一句说明 + 出口按钮
   ============================================================ */
.gx-empty{padding:44px 24px;display:flex;flex-direction:column;align-items:center;justify-content:center}
.gx-empty > svg{width:54px;height:54px;padding:15px;border-radius:18px;box-sizing:border-box;
  margin:0 0 14px;color:var(--gx-t2);
  background:var(--gx-glass-hi);border:1px solid var(--gx-line);
  box-shadow:inset 0 1px 0 var(--gx-spec-in)}
.gx-empty b{font-size:15.5px;font-weight:650}
.gx-empty span,.gx-empty p{margin-top:6px;font-size:13px;line-height:1.6;max-width:34em}
.gx-empty-acts{display:flex;flex-wrap:wrap;gap:8px;justify-content:center;margin-top:18px}
.gx-empty-acts a{font-size:12.6px;font-weight:600;padding:8px 16px;border-radius:999px;
  color:var(--gx-t1);background:var(--gx-glass);border:1px solid var(--gx-line);
  box-shadow:inset 0 1px 0 var(--gx-spec-in);transition:all .3s var(--gx-ease)}
.gx-empty-acts a:hover{color:#fff;border-color:transparent;
  background:linear-gradient(135deg,var(--gx-iris-a),var(--gx-iris-b))}
@media (max-width:820px){
  body .gx-empty{padding:34px 18px}
  body .gx-empty > svg{width:48px;height:48px;padding:13px;border-radius:16px;margin-bottom:12px}
  body .gx-empty b{font-size:14.6px}
  body .gx-empty span,body .gx-empty p{font-size:12.6px}
}
/* ============================================================
   47. 详情页页头模块化（下载详情 / 工具 / 书籍 / 外链共用）
   —— 与列表页 .gx-lh 同一套语言：图标块 + 标题 + 元信息 + 胶囊行 + 数字条，
      把原来内联写死的标题区收进一个模块，桌面与手机同构
   ============================================================ */
.gx-dh{
  margin:14px 0 18px;padding:20px 22px;
  border-radius:22px;
  background:var(--gx-glass-lo);
  border:1px solid var(--gx-line);
  box-shadow:inset 0 1px 0 var(--gx-spec-in);
}
.gx-dh .gx-crumb{margin:0 0 14px}
.gx-dh-main{display:flex;align-items:center;gap:15px;flex-wrap:wrap}
.gx-dh-ico{
  width:56px;height:56px;flex:none;border-radius:18px;
  display:grid;place-items:center;color:#fff;overflow:hidden;
  background:linear-gradient(140deg,var(--gx-iris-a),var(--gx-iris-b));
  box-shadow:0 10px 22px -12px rgba(90,80,255,.55);
}
.gx-dh-ico svg{width:24px;height:24px}
.gx-dh-ico img{width:100%;height:100%;object-fit:cover}
.gx-dh-ico[data-tone="a"]{background:linear-gradient(140deg,#6d5cff,#9b7bff);box-shadow:0 10px 22px -12px rgba(109,92,255,.6)}
.gx-dh-ico[data-tone="b"]{background:linear-gradient(140deg,#2f8fff,#22d3ee);box-shadow:0 10px 22px -12px rgba(47,143,255,.6)}
.gx-dh-ico[data-tone="c"]{background:linear-gradient(140deg,#ff8a3d,#ff5a7a);box-shadow:0 10px 22px -12px rgba(255,110,110,.6)}
.gx-dh-ico[data-tone="d"]{background:linear-gradient(140deg,#17b98a,#4ade80);box-shadow:0 10px 22px -12px rgba(23,185,138,.6)}
.gx-dh-id{min-width:0;flex:1 1 260px}
.gx-dh-id h1{margin:0;font-size:clamp(20px,2vw,25px);line-height:1.26;letter-spacing:-.025em;color:var(--gx-t1)}
.gx-dh-sub{
  display:flex;align-items:center;flex-wrap:wrap;gap:7px;
  margin:8px 0 0;font-size:12.8px;color:var(--gx-t3);
}
.gx-dh-sub i{font-style:normal;opacity:.5}
.gx-dh-chips{
  display:flex;align-items:center;flex-wrap:wrap;gap:7px;
  margin-top:14px;padding-top:13px;
  border-top:1px dashed var(--gx-line);
}
.gx-dh-chips:empty{display:none}
.gx-dh-nums{display:flex;align-items:center;flex:none}
.gx-dh-num{padding:0 16px;border-left:1px solid var(--gx-line);text-align:center}
.gx-dh-num:first-child{border-left:0;padding-left:0}
.gx-dh-num:last-child{padding-right:0}
.gx-dh-num b{display:block;font-size:19px;font-weight:780;letter-spacing:-.03em;line-height:1.15;color:var(--gx-t1)}
.gx-dh-num span{display:block;margin-top:4px;font-size:11.4px;font-weight:560;color:var(--gx-t3);white-space:nowrap}

@media (max-width:820px){
  body .gx-dh{margin:10px 0 14px;padding:16px 16px 14px;border-radius:20px}
  body .gx-dh .gx-crumb{margin-bottom:11px}
  body .gx-dh-main{gap:12px;align-items:flex-start;flex-wrap:nowrap}
  body .gx-dh-ico{width:48px;height:48px;border-radius:15px}
  body .gx-dh-ico svg{width:21px;height:21px}
  body .gx-dh-id h1{font-size:18.6px;line-height:1.32}
  body .gx-dh-sub{font-size:12px;margin-top:6px;gap:6px}
  body .gx-dh-chips{margin-top:12px;padding-top:11px;gap:6px}
  body .gx-dh-chips .gx-chip{font-size:11.2px;height:22px;padding:3px 9px}
  body .gx-dh-nums{
    width:100%;margin-top:12px;padding-top:12px;
    border-top:1px solid var(--gx-line);
    display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  }
  body .gx-dh-num{padding:0 4px}
  body .gx-dh-num b{font-size:16.5px}
  body .gx-dh-num span{font-size:10.8px}
}/* 47.2 详情页正文小标题 */
.gx-dh-sec{
  margin:0 0 12px;font-size:13px;font-weight:700;letter-spacing:.02em;
  color:var(--gx-t2);text-transform:none;
  display:flex;align-items:center;gap:8px;
}
.gx-dh-sec::before{content:"";width:3px;height:13px;border-radius:2px;
  background:linear-gradient(180deg,var(--gx-iris-a),var(--gx-iris-b))}/* 47.3 手机端修正：数字条换行到第二行，避免标题列被压成 0 宽 */
@media (max-width:820px){
  body .gx-dh-main{flex-wrap:wrap;align-items:flex-start}
  body .gx-dh-id{flex:1 1 calc(100% - 60px);min-width:0}
  body .gx-dh-nums{
    order:3;width:100%!important;margin-top:12px;padding-top:12px;
    border-top:1px solid var(--gx-line);
  }
}
/* ============================================================
   48. 快捷入口行（详情页底部「继续逛」）
   ============================================================ */
.gx-quickrow{display:flex;flex-wrap:wrap;gap:8px}
.gx-quickrow a{
  font-size:12.8px;font-weight:600;padding:8px 15px;border-radius:999px;
  color:var(--gx-t1);background:var(--gx-glass-lo);
  border:1px solid var(--gx-line);
  box-shadow:inset 0 1px 0 var(--gx-spec-in);
  transition:all .3s var(--gx-ease);
}
.gx-quickrow a:hover{color:#fff;border-color:transparent;
  background:linear-gradient(135deg,var(--gx-iris-a),var(--gx-iris-b))}
@media (max-width:820px){
  body .gx-quickrow a{font-size:12.2px;padding:7px 13px}
}