/* ============================================================
   Quantum 主题 · 全站主题样式（v0.4 宝塔绿 · 简洁科技）
   由 build_quantum_theme.py 生成；经 layout/main.php 于 head 末加载，
   全 quantum 页面首帧即绿，根治「Frost 毛玻璃闪现」。
   组成：①主题令牌 ②custom_css ③首页 v0.4 ④内页 v0.4 ⑤frost 字面量中和
   ============================================================ */
:root{
  --brand:#20a53a; --brand-2:#188f30; --gold-rgb:32,165,58;
  --ink:#111827; --ink-2:rgba(17,24,39,.66); --ink-3:rgba(17,24,39,.4);
  --bg:#ffffff; --bg-0:#e9efe9; --bg-1:#f4f8f5;
  --glass:#ffffff; --glass-strong:#ffffff; --glass-card:#ffffff;
  --stroke:rgba(22,36,26,.1); --stroke-soft:rgba(22,36,26,.06);
  --border:rgba(22,36,26,.1);
  --radius:14px; --radius-sm:10px;
  --blur:blur(20px) saturate(180%);
  --shadow:0 22px 50px -22px rgba(40,48,66,.28);
  --serif:var(--q-sans);
  --accent:#20a53a; --accent-deep:#188f30; --accent-tint:#e8f5ee;
  --q-bg:#f7faf7; --q-surface:#ffffff; --q-surface2:#f1f6f2;
  --q-line:#e6ece8; --q-line-strong:#c9d8cd;
  --q-txt:#111827; --q-muted:#6f7b76;
  --q-grad:linear-gradient(135deg,#20a53a,#188f30);
  --q-glow:0 0 28px rgba(32,165,58,.18);
  --q-mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --q-sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
}
/* ── 自定义 CSS（theme_settings.custom_css） ── */
:root{
  --gold: #20a53a;
  --gold-deep: #188f30;
  --gold-soft: rgba(32,165,58,.14);
}
/* ===== ③ 首页 v0.4（home-quantum，通用类已按页作用域化） ===== */
/* ============================================================
   Quantum 主题 · 首页专属样式（v0.4 宝塔绿 · 简洁科技）
   - 令牌用 q- 前缀 + --accent*，避免被 theme.css(:root) 覆盖
   - 中和 frost 布局在首页的装饰(.sky/.blob/.hm-trust)与页头
   - 仅在 quantum 主题首页加载（index.php 引入），不影响其他主题/页面
   ============================================================ */
:root{
  --accent:#20a53a; --accent-deep:#188f30; --accent-tint:#e8f5ee;
  --q-bg:#f7faf7; --q-surface:#ffffff; --q-surface2:#f1f6f2;
  --q-line:#e6ece8; --q-line-strong:#c9d8cd;
  --q-txt:#111827; --q-muted:#6f7b76;
  --q-grad:linear-gradient(135deg,#20a53a,#188f30);
  --q-glow:0 0 28px rgba(32,165,58,.18);
  --q-mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --q-sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
}
*{box-sizing:border-box}
main.pg-index{padding:0!important;margin:0!important;max-width:none!important;background:transparent!important;display:block!important}
body{background:var(--q-bg)!important}
/* 中和 frost 首页装饰 */
.sky,.blob,.hm-trust,.ticker{display:none!important}
/* 网格 + 径向辉光底纹（自绘，替代被隐藏的 .sky/.blob） */
body::before{content:"";position:fixed;inset:0;z-index:-2;
  background:radial-gradient(820px 460px at 82% -8%,rgba(32,165,58,.07),transparent 60%),
    radial-gradient(600px 360px at 6% 4%,rgba(32,165,58,.05),transparent 55%),
    linear-gradient(var(--q-bg),#ffffff)}
body::after{content:"";position:fixed;inset:0;z-index:-1;opacity:.5;
  background-image:linear-gradient(rgba(32,165,58,.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(32,165,58,.05) 1px,transparent 1px);
  background-size:48px 48px;
  -webkit-mask-image:radial-gradient(circle at 50% 22%,#000,transparent 80%);
          mask-image:radial-gradient(circle at 50% 22%,#000,transparent 80%)}

.wrap{max-width:1200px;margin:0 auto;padding:0 22px}
a{text-decoration:none}
main.pg-index .mono{font-family:var(--q-mono);letter-spacing:.05em}
.label{display:inline-block;font-family:var(--q-mono);font-size:11.5px;letter-spacing:.26em;
  text-transform:uppercase;color:var(--accent-deep);margin-bottom:16px;
  padding:5px 12px;border:1px solid var(--q-line-strong);border-radius:999px;background:var(--accent-tint)}
.title{font-size:clamp(26px,3.4vw,40px);font-weight:800;letter-spacing:.01em;line-height:1.18;margin-bottom:14px;color:var(--q-txt)}
.secsub{color:var(--q-muted);font-size:16px;max-width:640px}
section{padding:80px 0}
.reveal{opacity:0;transform:translateY(22px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}

/* ---------- 页头（改造 frost .nav 为绿色正式风） ---------- */
.nav{background:rgba(255,255,255,.88)!important;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--q-line)!important;border-radius:0!important;box-shadow:none!important;
  position:sticky;top:0;z-index:50;height:64px;display:flex;align-items:center}
.nav .search,.nav .nav-lang{display:none!important}
.brand .mark,.brand .home-mark{background:var(--accent)!important;color:#fff!important;border-radius:8px!important;
  border:none!important;box-shadow:none!important;width:32px!important;height:32px!important;font-size:16px!important}
.brand .home-bt,.brand .bt{color:var(--q-txt)!important;font-family:var(--q-sans)!important;font-weight:700}
.nav-center{display:flex;gap:28px}
.nav-center .nav-link{color:var(--q-muted);font-size:14.5px;transition:color .2s;position:relative}
.nav-center .nav-link:hover,.nav-center .nav-link.active{color:var(--accent-deep)}
.nav-center .nav-link.active::after{background:var(--accent)!important;box-shadow:none!important}
.nav-login{border:1px solid var(--q-line-strong);background:#fff;color:var(--accent-deep);border-radius:9px;
  padding:9px 18px;font-weight:600;font-size:14.5px;box-shadow:none!important;background-image:none!important}
.nav-login:hover{border-color:var(--accent);background:var(--accent-tint)}
.nav-register{background:var(--accent);color:#fff;border-radius:9px;padding:9px 20px;font-weight:600;font-size:14.5px;
  box-shadow:var(--q-glow);background-image:none!important}
.nav-register:hover{background:var(--accent-deep);color:#fff}

/* ---------- 按钮（内容区用） ---------- */
.cta .btn,.cta-box .btn{display:inline-flex;align-items:center;gap:8px;padding:11px 20px;border-radius:9px;font-size:14.5px;
  font-weight:600;cursor:pointer;transition:.22s;border:1px solid transparent;font-family:var(--q-sans)}
.cta .btn-primary,.cta-box .btn-primary{background:var(--accent);color:#fff;box-shadow:var(--q-glow)}
.cta .btn-primary:hover,.cta-box .btn-primary:hover{transform:translateY(-1px);background:var(--accent-deep);box-shadow:0 0 40px rgba(32,165,58,.3)}
.cta .btn-ghost,.cta-box .btn-ghost{background:#fff;border-color:var(--q-line-strong);color:var(--accent-deep)}
.cta .btn-ghost:hover,.cta-box .btn-ghost:hover{border-color:var(--accent);background:var(--accent-tint)}

/* ---------- Hero ---------- */
.q-hero{padding:88px 0 64px}
.q-hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:52px;align-items:center}
.q-hero .badge{display:inline-flex;align-items:center;gap:9px;font-family:var(--q-mono);font-size:12px;letter-spacing:.16em;
  color:var(--accent-deep);padding:7px 14px;border:1px solid var(--q-line-strong);border-radius:999px;
  background:var(--accent-tint);margin-bottom:24px}
.q-hero .badge i{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px rgba(32,165,58,.5)}
.q-hero h1{font-size:clamp(34px,5vw,58px);font-weight:850;line-height:1.1;letter-spacing:-.01em;color:var(--q-txt)}
.q-hero h1 .hl{background:var(--q-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.q-hero .sub{color:var(--q-muted);font-size:17px;margin:22px 0 30px;max-width:520px}
.cta{display:flex;gap:14px;flex-wrap:wrap}
.trust-mini{display:flex;gap:26px;margin-top:32px;flex-wrap:wrap}
.trust-mini div{font-family:var(--q-mono);font-size:13px;color:var(--q-muted)}
.trust-mini b{color:var(--q-txt);font-size:19px;display:block}

/* 仿真面板仪表盘窗口 */
.win{background:#fff;border:1px solid var(--q-line-strong);border-radius:14px;overflow:hidden;box-shadow:0 24px 60px rgba(17,24,39,.10)}
.win-bar{display:flex;align-items:center;gap:7px;padding:11px 14px;border-bottom:1px solid var(--q-line);background:var(--q-surface2)}
.win-bar .dot{width:10px;height:10px;border-radius:50%;background:#d1d9d4}
.win-bar .dot:first-child{background:var(--accent)}
.win-bar .t{margin-left:8px;font-family:var(--q-mono);font-size:12px;color:var(--q-muted);letter-spacing:.08em}
.win-body{display:grid;grid-template-columns:48px 1fr}
.win-side{background:var(--q-surface2);border-right:1px solid var(--q-line);padding:16px 0;display:flex;flex-direction:column;gap:18px;align-items:center}
.win-side i{width:18px;height:18px;border:1.5px solid var(--q-line-strong);border-radius:5px}
.win-main{padding:18px}
.gauges{display:flex;gap:14px;justify-content:center;margin-bottom:16px}
.gauge{width:78px;height:78px;border-radius:50%;display:grid;place-items:center;position:relative}
.gauge::before{content:"";position:absolute;inset:8px;border-radius:50%;background:#fff}
.gauge b{position:relative;font-family:var(--q-mono);font-size:15px;color:var(--accent-deep)}
.gauge small{position:relative;display:block;text-align:center;font-family:var(--q-mono);font-size:10px;color:var(--q-muted);margin-top:4px;letter-spacing:.1em}
.win-list .lr{display:flex;justify-content:space-between;align-items:center;padding:9px 2px;border-bottom:1px solid var(--q-line);font-size:13px}
.win-list .lr:last-child{border-bottom:0}
.win-list .lr .s{font-family:var(--q-mono);color:var(--q-muted)}
.win-list .lr .ok{color:var(--accent-deep)}
main.pg-index .pulse{width:7px;height:7px;border-radius:50%;background:var(--accent);display:inline-block;margin-right:7px;animation:qp 1.8s infinite}
@keyframes qp{0%,100%{opacity:.35}50%{opacity:1}}
/* Hero 实时方案小条 */
.win-mini{margin-top:14px;background:#fff;border:1px solid var(--q-line);border-radius:12px;padding:14px 16px}
.win-mini-head{display:flex;justify-content:space-between;align-items:baseline;font-family:var(--q-mono);font-size:11.5px;
  letter-spacing:.16em;color:var(--q-muted);padding-bottom:10px;border-bottom:1px solid var(--q-line)}
.win-mini-head b{color:var(--accent-deep);font-size:14px;letter-spacing:0}
.wm-row{display:flex;justify-content:space-between;align-items:center;padding:9px 0;border-bottom:1px dashed var(--q-line);font-size:13.5px}
.wm-row:last-child{border-bottom:0}
.wm-row .pr{font-family:var(--q-mono);color:var(--q-txt);font-weight:600}
.wm-row .pr small{color:var(--q-muted);font-weight:400;font-size:11px}

/* ---------- 技术栈滚动条 ---------- */
.q-marquee{border-top:1px solid var(--q-line);border-bottom:1px solid var(--q-line);padding:20px 0;overflow:hidden;background:#fff}
.q-marquee .track{display:flex;gap:54px;white-space:nowrap;animation:qscroll 22s linear infinite;width:max-content}
.q-marquee .track span{font-family:var(--q-mono);font-size:14px;letter-spacing:.12em;color:var(--q-muted)}
@keyframes qscroll{from{transform:translateX(0)}to{transform:translateX(-50%)}}

/* ---------- Bento 能力 ---------- */
.bento{display:grid;grid-template-columns:repeat(6,1fr);gap:16px;margin-top:42px}
.bento .b{background:#fff;border:1px solid var(--q-line);border-radius:14px;padding:24px;transition:.25s;position:relative;overflow:hidden}
.bento .b:hover{border-color:var(--accent);transform:translateY(-3px);box-shadow:0 18px 40px rgba(17,24,39,.08)}
.bento .b1{grid-column:span 3;grid-row:span 2;display:flex;flex-direction:column;justify-content:space-between}
.bento .b2,.bento .b3{grid-column:span 3}
.bento .b4,.bento .b5,.bento .b6{grid-column:span 2}
.ico{width:44px;height:44px;border-radius:11px;display:grid;place-items:center;background:var(--accent-tint);
  border:1px solid var(--q-line-strong);margin-bottom:14px;color:var(--accent-deep)}
.ico svg{width:23px;height:23px}
.bento h3{font-size:17px;font-weight:700;margin-bottom:7px;letter-spacing:.01em;color:var(--q-txt)}
.bento h3 span{color:var(--accent-deep)}
.bento p{color:var(--q-muted);font-size:14px}
.b1 .big{font-family:var(--q-mono);font-size:13px;color:var(--accent-deep);margin-top:18px;letter-spacing:.06em}
.bars{display:flex;gap:8px;align-items:flex-end;height:54px;margin-top:14px}
.bars i{flex:1;background:var(--q-grad);border-radius:4px 4px 0 0;opacity:.85}

/* ---------- 统计带 ---------- */
.statband{border-top:1px solid var(--q-line);border-bottom:1px solid var(--q-line);background:#fff}
.statband .grid{display:grid;grid-template-columns:repeat(4,1fr)}
.statband .s{padding:40px 24px;text-align:center;border-right:1px solid var(--q-line)}
.statband .s:last-child{border-right:0}
.statband .s b{display:block;font-family:var(--q-mono);font-size:38px;font-weight:700;color:var(--accent-deep)}
.statband .s b em{font-style:normal;font-size:20px;color:var(--q-muted)}
.statband .s span{color:var(--q-muted);font-size:14px;margin-top:8px;display:block}

/* ---------- 横步进 ---------- */
.steps{display:grid;grid-template-columns:repeat(3,1fr);margin-top:44px;position:relative}
.steps::before{content:"";position:absolute;top:21px;left:16.6%;right:16.6%;height:1px;background:var(--q-line-strong)}
.step{text-align:center;padding:0 18px;position:relative}
.step-no{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;margin:0 auto 16px;
  font-family:var(--q-mono);font-weight:700;font-size:18px;color:#fff;background:var(--accent);
  box-shadow:var(--q-glow);position:relative;z-index:1}
.step h3{font-size:17px;margin-bottom:7px;color:var(--q-txt)}
.step p{color:var(--q-muted);font-size:14.5px}

/* ---------- 价格对比表 ---------- */
.toggle{display:inline-flex;border:1px solid var(--q-line-strong);border-radius:999px;overflow:hidden;margin:22px 0 28px}
.toggle button{background:#fff;border:0;color:var(--q-muted);padding:9px 22px;font-size:14px;font-weight:600;cursor:pointer;font-family:var(--q-sans)}
.toggle button.on{background:var(--accent);color:#fff}
.ptable{width:100%;border-collapse:separate;border-spacing:0;border:1px solid var(--q-line);border-radius:14px;overflow:hidden;background:#fff}
.ptable th,.ptable td{padding:15px 14px;text-align:center;border-bottom:1px solid var(--q-line);font-size:14.5px;color:var(--q-txt)}
.ptable thead th{background:var(--q-surface2);font-weight:700}
.ptable thead th.rec{background:var(--accent);color:#fff}
.ptable tbody td:first-child,.ptable thead th:first-child{text-align:left;color:var(--q-muted);font-weight:500}
.ptable tbody tr:last-child td{border-bottom:0}
.ptable .price{font-family:var(--q-mono);font-size:20px;color:var(--accent-deep);font-weight:700}
.ptable .price small{font-size:12px;color:var(--q-muted);font-weight:400}
.ptable .rec-col{background:var(--accent-tint)}
.ptable .chk{color:var(--accent)}
.ptable .chk svg{width:16px;height:16px;vertical-align:-2px}
.ptable .no{color:#a9b4ae}
.ptable .buy{display:inline-block;padding:9px 20px;border-radius:9px;border:1px solid var(--q-line-strong);
  font-weight:600;font-size:14px;transition:.2s;color:var(--accent-deep)}
.ptable .buy.rec{background:var(--accent);color:#fff;border-color:transparent}
.ptable .buy:hover{transform:translateY(-1px)}
.q-empty{padding:40px;text-align:center;color:var(--q-muted);border:1px dashed var(--q-line-strong);border-radius:14px}

/* ---------- FAQ ---------- */
.q-soft{background:var(--q-surface2)}
.faq{margin-top:36px;max-width:800px}
.faq-item{border:1px solid var(--q-line);border-radius:12px;margin-bottom:12px;background:#fff;overflow:hidden}
.faq-item summary{padding:17px 20px;cursor:pointer;font-weight:600;font-size:15.5px;list-style:none;
  display:flex;justify-content:space-between;align-items:center;color:var(--q-txt)}
.faq-item summary::-webkit-details-marker{display:none}
.faq-item summary::after{content:"+";font-family:var(--q-mono);color:var(--accent);font-size:20px;transition:.2s}
.faq-item[open] summary::after{transform:rotate(45deg)}
.faq-item p{padding:0 20px 18px;color:var(--q-muted);font-size:14.5px}

/* ---------- 底部 CTA ---------- */
.cta-box{padding:56px;border-radius:20px;text-align:center;position:relative;overflow:hidden;background:var(--q-grad);color:#fff}
.cta-box h2{font-size:clamp(24px,3vw,34px);font-weight:800;margin-bottom:12px;letter-spacing:.01em;color:#fff}
.cta-box p{color:rgba(255,255,255,.9);margin-bottom:26px}
.cta-box .cta{justify-content:center}
.cta-box .btn-primary{background:#fff;color:var(--accent-deep)}
.cta-box .btn-primary:hover{background:#eef4ef;color:var(--accent-deep)}
.cta-box .btn-ghost{background:transparent;border-color:rgba(255,255,255,.65);color:#fff}
.cta-box .btn-ghost:hover{background:rgba(255,255,255,.14);border-color:#fff}

/* ---------- 响应式 ---------- */
@media(max-width:920px){
  .q-hero-grid{grid-template-columns:1fr;gap:36px}
  .bento{grid-template-columns:repeat(2,1fr)}
  .bento .b1,.bento .b2,.bento .b3{grid-column:span 2}
  .bento .b4,.bento .b5,.bento .b6{grid-column:span 1}
  .steps{grid-template-columns:1fr;gap:28px}.steps::before{display:none}
  .statband .grid{grid-template-columns:repeat(2,1fr)}.statband .s:nth-child(2){border-right:0}
  .nav-center{display:none}
}
@media(max-width:560px){
  .bento{grid-template-columns:1fr}.bento .b1,.bento .b2,.bento .b3,.bento .b4,.bento .b5,.bento .b6{grid-column:span 1}
  .statband .grid{grid-template-columns:1fr}.statband .s{border-right:0;border-bottom:1px solid var(--q-line)}
}
@media(prefers-reduced-motion:reduce){.q-marquee .track,.pulse{animation:none!important}.reveal{opacity:1;transform:none}*{transition:none!important}}

/* ===== ④ 内页 v0.4（page-quantum） ===== */
/* ============================================================
   Quantum 主题 · 内页共享样式（host/support/about/help）
   与首页 home-quantum.css 同一 v0.4 设计语言（宝塔绿 · 简洁科技）
   - 令牌 q- 前缀 + --accent*，避免被 theme.css(:root) 覆盖
   - 含：绿色页头改造 + hero + 卡片/网格 + 表单 + FAQ + 时间线 + CTA 带
   仅 quantum 主题内页加载，不影响 frost 与其他主题
   ============================================================ */
:root{
  --accent:#20a53a; --accent-deep:#188f30; --accent-tint:#e8f5ee;
  --q-bg:#f7faf7; --q-surface:#ffffff; --q-surface2:#f1f6f2;
  --q-line:#e6ece8; --q-line-strong:#c9d8cd;
  --q-txt:#111827; --q-muted:#6f7b76;
  --q-grad:linear-gradient(135deg,#20a53a,#188f30);
  --q-glow:0 0 28px rgba(32,165,58,.18);
  --q-mono:ui-monospace,"SF Mono",Menlo,Consolas,monospace;
  --q-sans:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif;
}
*{box-sizing:border-box}
main.pg-product-host_list,main.pg-support,main.pg-pages-about,main.pg-pages-help{padding:0!important;margin:0!important;max-width:none!important;background:transparent!important;display:block!important}
body{background:var(--q-bg)!important}
.sky,.blob,.hm-trust,.ticker{display:none!important}
body::before{content:"";position:fixed;inset:0;z-index:-2;
  background:radial-gradient(820px 460px at 82% -8%,rgba(32,165,58,.07),transparent 60%),
    radial-gradient(600px 360px at 6% 4%,rgba(32,165,58,.05),transparent 55%),
    linear-gradient(var(--q-bg),#ffffff)}
body::after{content:"";position:fixed;inset:0;z-index:-1;opacity:.5;
  background-image:linear-gradient(rgba(32,165,58,.05) 1px,transparent 1px),
    linear-gradient(90deg,rgba(32,165,58,.05) 1px,transparent 1px);
  background-size:48px 48px;
  -webkit-mask-image:radial-gradient(circle at 50% 22%,#000,transparent 80%);
          mask-image:radial-gradient(circle at 50% 22%,#000,transparent 80%)}
a{text-decoration:none}
.qp-wrap{max-width:1180px;margin:0 auto;padding:0 22px}

/* ---------- 页头（改造 frost .nav 为绿色正式风，与首页一致） ---------- */
.nav{background:rgba(255,255,255,.88)!important;backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);
  border-bottom:1px solid var(--q-line)!important;border-radius:0!important;box-shadow:none!important;
  position:sticky;top:0;z-index:50;height:64px;display:flex;align-items:center}
.nav .search,.nav .nav-lang{display:none!important}
.brand .mark,.brand .home-mark{background:var(--accent)!important;color:#fff!important;border-radius:8px!important;
  border:none!important;box-shadow:none!important;width:32px!important;height:32px!important;font-size:16px!important}
.brand .home-bt,.brand .bt{color:var(--q-txt)!important;font-family:var(--q-sans)!important;font-weight:700}
.nav-center{display:flex;gap:28px}
.nav-center .nav-link{color:var(--q-muted);font-size:14.5px;transition:color .2s;position:relative}
.nav-center .nav-link:hover,.nav-center .nav-link.active{color:var(--accent-deep)}
.nav-center .nav-link.active::after{background:var(--accent)!important;box-shadow:none!important}
.nav-login{border:1px solid var(--q-line-strong);background:#fff;color:var(--accent-deep);border-radius:9px;
  padding:9px 18px;font-weight:600;font-size:14.5px;box-shadow:none!important;background-image:none!important}
.nav-login:hover{border-color:var(--accent);background:var(--accent-tint)}
.nav-register{background:var(--accent);color:#fff;border-radius:9px;padding:9px 20px;font-weight:600;font-size:14.5px;
  box-shadow:var(--q-glow);background-image:none!important}
.nav-register:hover{background:var(--accent-deep);color:#fff}

/* ---------- 按钮 ---------- */
.qp-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:11px 20px;border-radius:9px;
  font-size:14.5px;font-weight:600;cursor:pointer;transition:.22s;border:1px solid transparent;font-family:var(--q-sans)}
.qp-btn-primary{background:var(--accent);color:#fff;box-shadow:var(--q-glow)}
.qp-btn-primary:hover{transform:translateY(-1px);background:var(--accent-deep);box-shadow:0 0 40px rgba(32,165,58,.3)}
.qp-btn-ghost{background:#fff;border-color:var(--q-line-strong);color:var(--accent-deep)}
.qp-btn-ghost:hover{border-color:var(--accent);background:var(--accent-tint)}
.qp-btn-line{background:#fff;border-color:var(--q-line-strong);color:var(--q-txt)}
.qp-btn-line:hover{border-color:var(--accent);color:var(--accent-deep)}

/* ---------- Hero（内页） ---------- */
.qp-hero{padding:76px 0 56px}
.qp-hero .badge{display:inline-flex;align-items:center;gap:9px;font-family:var(--q-mono);font-size:12px;letter-spacing:.16em;
  color:var(--accent-deep);padding:7px 14px;border:1px solid var(--q-line-strong);border-radius:999px;
  background:var(--accent-tint);margin-bottom:22px}
.qp-hero .badge i{width:6px;height:6px;border-radius:50%;background:var(--accent);box-shadow:0 0 8px rgba(32,165,58,.5)}
.qp-hero h1{font-size:clamp(30px,4.4vw,50px);font-weight:850;line-height:1.12;letter-spacing:-.01em;color:var(--q-txt)}
.qp-hero h1 .hl{background:var(--q-grad);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent}
.qp-hero .sub{color:var(--q-muted);font-size:17px;margin-top:18px;max-width:640px}
.qp-hero .sub a{color:var(--accent-deep);font-weight:600}
.qp-trust{display:flex;gap:22px;margin-top:24px;flex-wrap:wrap}
.qp-trust span{font-size:14px;color:var(--q-muted)}
.qp-trust b{color:var(--accent-deep);margin-right:5px}

/* ---------- 区块/标题 ---------- */
.qp-section{padding:56px 0}
.qp-label{display:inline-block;font-family:var(--q-mono);font-size:11.5px;letter-spacing:.26em;text-transform:uppercase;
  color:var(--accent-deep);margin-bottom:14px;padding:5px 12px;border:1px solid var(--q-line-strong);
  border-radius:999px;background:var(--accent-tint)}
.qp-h2{font-size:clamp(22px,3vw,32px);font-weight:800;letter-spacing:.01em;line-height:1.2;margin-bottom:12px;color:var(--q-txt)}
.qp-lead{color:var(--q-muted);font-size:15.5px;max-width:640px}
.reveal{opacity:0;transform:translateY(20px);transition:opacity .7s ease,transform .7s ease}
.reveal.in{opacity:1;transform:none}

/* ---------- 主机页：筛选 + 产品网格 ---------- */
.qp-filter{background:#fff;border:1px solid var(--q-line);border-radius:14px;padding:18px 20px;margin:8px 0 30px;
  display:flex;flex-wrap:wrap;gap:16px;align-items:center}
.qp-filter .fg{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--q-muted)}
.qp-filter select{border:1px solid var(--q-line-strong);border-radius:9px;padding:8px 12px;background:#fff;color:var(--q-txt);font-size:13.5px;font-family:var(--q-sans)}
.qp-filter .chk{display:inline-flex;align-items:center;gap:6px;cursor:pointer;color:var(--q-txt);font-size:13.5px}
.qp-filter .chk input{accent-color:var(--accent);width:15px;height:15px}
.qp-filter .spacer{flex:1}
.qp-filter .reset{border:1px solid var(--q-line-strong);background:#fff;color:var(--accent-deep);border-radius:999px;
  padding:6px 14px;font-size:12.5px;font-weight:600;cursor:pointer}
.qp-filter .reset:hover{border-color:var(--accent);background:var(--accent-tint)}
.qp-filter .cnt{font-size:13px;color:var(--q-muted)}
.qp-filter .cnt b{color:var(--accent-deep)}
.qp-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.qp-card{background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:24px;display:flex;flex-direction:column;
  position:relative;transition:.25s}
.qp-card:hover{border-color:var(--accent);transform:translateY(-4px);box-shadow:0 18px 44px rgba(17,24,39,.08)}
.qp-card.rec{border-color:var(--accent);box-shadow:0 0 34px rgba(32,165,58,.14)}
.qp-card .rec-badge{position:absolute;top:14px;right:14px;font-family:var(--q-mono);font-size:11px;letter-spacing:.1em;
  color:#fff;background:var(--accent);padding:3px 10px;border-radius:999px;font-weight:700}
.qp-card .nm{font-size:19px;font-weight:700;color:var(--q-txt)}
.qp-card .desc{color:var(--q-muted);font-size:13.5px;margin:6px 0 14px;min-height:38px}
.qp-card .price{font-family:var(--q-mono);font-size:30px;font-weight:700;color:var(--q-txt)}
.qp-card .price small{font-size:13px;color:var(--q-muted)}
.qp-card .yearly{font-family:var(--q-mono);font-size:12.5px;color:var(--accent-deep);margin:4px 0 14px}
.qp-card .specs{list-style:none;margin:0 0 18px;flex:1}
.qp-card .specs li{display:flex;justify-content:space-between;font-size:13.5px;color:var(--q-muted);padding:7px 0;border-bottom:1px solid var(--q-line)}
.qp-card .specs li:last-child{border-bottom:0}
.qp-card .specs .bar{height:6px;border-radius:3px;background:var(--q-line);flex:0 0 90px;margin-left:12px;align-self:center;overflow:hidden}
.qp-card .specs .bar i{display:block;height:100%;background:var(--q-grad)}
.qp-card .specs .ck{color:var(--accent-deep);font-weight:600}
.qp-empty{padding:44px;text-align:center;color:var(--q-muted);border:1px dashed var(--q-line-strong);border-radius:16px}
.qp-guarantee{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin-top:36px}
.qp-guarantee .g{background:#fff;border:1px solid var(--q-line);border-radius:14px;padding:24px;text-align:center}
.qp-guarantee .g .ic{width:46px;height:46px;border-radius:12px;display:grid;place-items:center;margin:0 auto 14px;
  background:var(--accent-tint);border:1px solid var(--q-line-strong);color:var(--accent-deep)}
.qp-guarantee .g h3{font-size:16px;color:var(--q-txt);margin-bottom:6px}
.qp-guarantee .g p{color:var(--q-muted);font-size:13.5px}

/* ---------- 支持页：表单 + 侧栏 ---------- */
.qp-support{display:grid;grid-template-columns:1.6fr .9fr;gap:22px;margin-top:-38px;position:relative;z-index:2}
.qp-card-form{background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:28px;box-shadow:0 20px 50px rgba(17,24,39,.06)}
.qp-field{margin-bottom:18px}
.qp-field label{display:block;font-size:13.5px;font-weight:600;color:var(--q-txt);margin-bottom:7px}
.qp-field label .req{color:#dc2626}
.qp-field input[type=text],.qp-field input[type=email],.qp-field textarea{
  width:100%;border:1px solid var(--q-line-strong);border-radius:10px;padding:11px 14px;font-size:14px;
  font-family:var(--q-sans);color:var(--q-txt);background:#fff;transition:border-color .2s}
.qp-field input:focus,.qp-field textarea:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(32,165,58,.12)}
.qp-field textarea{resize:none}
.qp-2col{display:grid;grid-template-columns:1fr 1fr;gap:16px}
.qp-chips{display:flex;gap:10px;flex-wrap:wrap}
.qp-chips label{display:inline-flex;align-items:center;gap:7px;border:1px solid var(--q-line-strong);border-radius:999px;
  padding:8px 14px;cursor:pointer;font-size:13px;color:var(--q-txt);transition:.2s;margin:0}
.qp-chips label:hover{border-color:var(--accent)}
.qp-chips input{accent-color:var(--accent)}
.qp-chips .dot{width:8px;height:8px;border-radius:50%;display:inline-block}
.qp-alert{display:none;margin-bottom:18px;padding:14px 16px;border-radius:12px;background:var(--accent-tint);
  border:1px solid var(--accent);color:var(--accent-deep);font-size:13.5px}
.qp-alert b{font-family:var(--q-mono)}
.qp-aside{background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:24px;align-self:start}
.qp-aside h3{font-size:16px;color:var(--q-txt);margin-bottom:16px}
.qp-aside .row{padding:12px 0;border-bottom:1px solid var(--q-line);font-size:13.5px}
.qp-aside .row:last-child{border-bottom:0}
.qp-aside .row b{display:block;color:var(--q-muted);font-size:12px;font-weight:600;margin-bottom:3px}
.qp-aside .row span{color:var(--q-txt)}
.qp-aside .online{display:inline-flex;align-items:center;gap:7px;color:var(--accent-deep);font-weight:600}
.qp-aside .online i{width:8px;height:8px;border-radius:50%;background:var(--accent);animation:qp 1.8s infinite}
@keyframes qp{0%,100%{opacity:.35}50%{opacity:1}}

/* ---------- 关于页 ---------- */
.qp-stats{display:grid;grid-template-columns:repeat(3,1fr);gap:18px;margin:6px 0 10px}
.qp-stats .st{background:#fff;border:1px solid var(--q-line);border-top:1px solid var(--q-line-strong);border-radius:14px;
  padding:28px;text-align:center}
.qp-stats .st .num{font-family:var(--q-mono);font-size:34px;font-weight:700;color:var(--accent-deep)}
.qp-stats .st .lab{color:var(--q-muted);font-size:14px;margin-top:6px}
.qp-about{display:grid;grid-template-columns:1fr 1fr;gap:18px;margin-top:8px}
.qp-about .card{background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:26px;transition:.25s}
.qp-about .card:hover{border-color:var(--accent);transform:translateY(-3px);box-shadow:0 18px 40px rgba(17,24,39,.07)}
.qp-about .card .ic{font-size:26px;margin-bottom:12px}
.qp-about .card h2{font-size:18px;color:var(--q-txt);margin-bottom:10px}
.qp-about .card p{color:var(--q-muted);font-size:14px;margin-bottom:8px}
.qp-about .card ul{list-style:none}
.qp-about .card ul li{color:var(--q-muted);font-size:14px;padding:6px 0;border-bottom:1px solid var(--q-line)}
.qp-about .card ul li:last-child{border-bottom:0}
.qp-timeline{grid-column:span 2;background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:28px}
.qp-timeline h2{font-size:18px;color:var(--q-txt);margin-bottom:20px}
.qp-timeline .track{position:relative;padding-left:26px}
.qp-timeline .track::before{content:"";position:absolute;left:7px;top:4px;bottom:4px;width:2px;background:var(--q-line-strong)}
.qp-timeline .item{position:relative;padding:0 0 22px}
.qp-timeline .item:last-child{padding-bottom:0}
.qp-timeline .item::before{content:"";position:absolute;left:-24px;top:4px;width:12px;height:12px;border-radius:50%;
  background:var(--accent);box-shadow:0 0 0 4px var(--accent-tint)}
.qp-timeline .item .yr{font-family:var(--q-mono);font-size:13px;color:var(--accent-deep);font-weight:700}
.qp-timeline .item p{color:var(--q-muted);font-size:14px;margin-top:4px}

/* ---------- 帮助页 ---------- */
.qp-help-search{display:flex;align-items:center;gap:12px;background:#fff;border:1px solid var(--q-line-strong);
  border-radius:14px;padding:14px 18px;margin-bottom:22px}
.qp-help-search .si{color:var(--accent-deep);font-size:18px}
.qp-help-search input{flex:1;border:0;outline:none;font-size:15px;font-family:var(--q-sans);color:var(--q-txt);background:transparent}
.qp-popular{background:#fff;border:1px solid var(--q-line);border-radius:14px;padding:18px 20px;margin-bottom:26px}
.qp-popular .t{font-family:var(--q-mono);font-size:12px;letter-spacing:.14em;color:var(--accent-deep);margin-bottom:12px}
.qp-popular .links{display:flex;flex-wrap:wrap;gap:10px}
.qp-popular .links a{border:1px solid var(--q-line-strong);border-radius:999px;padding:7px 15px;font-size:13px;color:var(--q-txt);cursor:pointer;transition:.2s}
.qp-popular .links a:hover{border-color:var(--accent);color:var(--accent-deep);background:var(--accent-tint)}
.qp-help-group{margin-bottom:30px}
.qp-help-group h2{font-size:17px;color:var(--q-txt);margin-bottom:14px;display:flex;align-items:center;gap:9px}
.qp-help-group h2 .e{color:var(--accent-deep)}
.qp-faq details{background:#fff;border:1px solid var(--q-line);border-radius:12px;margin-bottom:10px;overflow:hidden}
.qp-faq details summary{padding:15px 18px;cursor:pointer;font-weight:600;font-size:14.5px;list-style:none;
  display:flex;justify-content:space-between;align-items:center;color:var(--q-txt)}
.qp-faq details summary::-webkit-details-marker{display:none}
.qp-faq details summary::after{content:"+";font-family:var(--q-mono);color:var(--accent);font-size:19px;transition:.2s}
.qp-faq details[open] summary::after{transform:rotate(45deg)}
.qp-faq details .ans{padding:0 18px 16px;color:var(--q-muted);font-size:14px;line-height:1.7}
.qp-help-empty{display:none;padding:20px;text-align:center;color:var(--q-muted)}
.qp-help-empty a{color:var(--accent-deep);font-weight:600}

/* ---------- CTA 带（跨页，与首页一致的绿渐变） ---------- */
.qp-cta{margin:10px 0 70px}
.qp-cta .box{padding:52px;border-radius:20px;text-align:center;background:var(--q-grad);color:#fff}
.qp-cta .box h3{font-size:clamp(22px,3vw,32px);font-weight:800;color:#fff;margin-bottom:10px}
.qp-cta .box p{color:rgba(255,255,255,.9);margin-bottom:24px}
.qp-cta .box .act{display:flex;gap:14px;justify-content:center;flex-wrap:wrap}
.qp-cta .box .act .primary{background:#fff;color:var(--accent-deep);border:0}
.qp-cta .box .act .primary:hover{background:#eef4ef}
.qp-cta .box .act .ghost{background:transparent;border:1px solid rgba(255,255,255,.65);color:#fff}
.qp-cta .box .act .ghost:hover{background:rgba(255,255,255,.14);border-color:#fff}

/* ---------- 页脚微调（确保绿主题下可读） ---------- */
.foot{background:#fff;border-top:1px solid var(--q-line)}
.foot a:hover{color:var(--accent-deep)}

/* ---------- 响应式 ---------- */
@media(max-width:920px){
  .qp-grid,.qp-about{grid-template-columns:1fr}
  .qp-timeline{grid-column:span 1}
  .qp-support{grid-template-columns:1fr}
  .qp-stats,.qp-guarantee{grid-template-columns:1fr}
  .nav-center{display:none}
}
@media(max-width:560px){.qp-2col{grid-template-columns:1fr}}
@media(prefers-reduced-motion:reduce){.qp-aside .online i{animation:none!important}.reveal{opacity:1;transform:none}*{transition:none!important}}

/* ===== ④-B Batch2 页面组件（认证/法务/联系/详情/用户横幅） ===== */
/* ============================================================
   Quantum 主题 · Batch2 页面组件（v0.4 宝塔绿）
   认证(登录/注册/找回/重置/验证) · 法务(terms/privacy) · 联系 · 主机详情 · 用户中心横幅
   由 build_quantum_theme.py 合并进 theme.css（head 末加载，无 FOUC）
   ============================================================ */

/* ---------- 认证页 ---------- */
.qp-auth{min-height:72vh;display:flex;align-items:center;justify-content:center;padding:48px 22px}
.qp-auth-card{width:100%;max-width:460px;background:#fff;border:1px solid var(--q-line);border-radius:18px;
  padding:36px;box-shadow:0 24px 60px rgba(17,24,39,.08)}
.qp-auth-brand{display:flex;align-items:center;gap:12px;justify-content:center;margin-bottom:24px}
.qp-auth-brand .mark{width:42px;height:42px;border-radius:12px;background:var(--q-grad);color:#fff;
  display:grid;place-items:center;font-weight:700;font-size:19px;box-shadow:var(--q-glow)}
.qp-auth-brand .name{font-size:19px;font-weight:750;color:var(--q-txt)}
.qp-auth-card h1{font-size:23px;font-weight:800;color:var(--q-txt);margin-bottom:6px}
.qp-auth-card .sub{color:var(--q-muted);font-size:14px;margin-bottom:24px}
.qp-auth .qp-field{margin-bottom:18px;position:relative}
.qp-auth .qp-field label{display:block;font-size:13.5px;font-weight:600;color:var(--q-txt);margin-bottom:7px}
.qp-auth .qp-field input{width:100%;border:1px solid var(--q-line-strong);border-radius:10px;
  padding:11px 14px;font-size:14px;font-family:var(--q-sans);color:var(--q-txt);background:#fff;transition:border-color .2s}
.qp-auth .qp-field input:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(32,165,58,.12)}
.qp-auth .qp-field.has-icon input{padding-left:40px}
.qp-auth .qp-field .ic{position:absolute;left:13px;top:37px;color:var(--q-muted);pointer-events:none;display:flex}
.qp-auth .qp-field .ic svg{width:17px;height:17px}
.qp-auth .qp-field .pwd-wrap{position:relative}
.qp-auth .qp-field .pwd-wrap .ic{top:50%;transform:translateY(-50%)}
.qp-auth .qp-field .hint{font-size:12px;color:var(--q-muted);margin-top:5px}
.qp-auth .qp-field .eye{position:absolute;right:8px;top:50%;transform:translateY(-50%);background:none;border:none;cursor:pointer;color:var(--q-muted);padding:4px;display:flex}
.qp-auth .qp-cap{display:flex;gap:10px;align-items:center}
.qp-auth .qp-cap input{flex:1}
.qp-auth .qp-cap img{height:38px;border-radius:8px;cursor:pointer;border:1px solid var(--q-line-strong)}
.qp-auth .qp-row{display:flex;align-items:center;justify-content:space-between;gap:12px;margin-bottom:18px;font-size:13.5px;flex-wrap:wrap}
.qp-auth .qp-row label{display:inline-flex;align-items:center;gap:7px;color:var(--q-muted);cursor:pointer}
.qp-auth .qp-row input[type=checkbox]{accent-color:var(--accent);width:15px;height:15px;cursor:pointer}
.qp-auth .qp-row a,.qp-auth .qp-terms a{color:var(--accent-deep);font-weight:600}
.qp-auth .qp-btn{width:100%}
.qp-auth .qp-alt{margin-top:20px;padding-top:18px;border-top:1px solid var(--q-line);text-align:center;font-size:13.5px;color:var(--q-muted)}
.qp-auth .qp-alt a{color:var(--accent-deep);font-weight:600}
.qp-auth .qp-msg{margin-top:14px;font-size:13.5px;text-align:center;min-height:18px}
.qp-auth .qp-msg.ok{color:var(--accent-deep)}
.qp-auth .qp-msg.err{color:#dc2626}
.qp-auth-note{background:var(--accent-tint);border:1px solid var(--q-line-strong);border-radius:12px;padding:14px 16px;margin-bottom:20px}
.qp-auth-note .t{display:flex;align-items:center;gap:8px;font-size:13px;font-weight:600;color:var(--accent-deep);margin-bottom:8px}
.qp-auth-note .t svg{width:15px;height:15px;flex:none}
.qp-auth-note ul{margin:0;padding:0;list-style:none}
.qp-auth-note li{position:relative;padding-left:14px;font-size:12.5px;line-height:1.9;color:var(--q-muted)}
.qp-auth-note li::before{content:"";position:absolute;left:0;top:.72em;width:5px;height:5px;border-radius:50%;background:var(--accent)}
.qp-auth-ic{width:72px;height:72px;margin:6px auto 18px;border-radius:50%;display:grid;place-items:center;
  background:var(--accent-tint);border:1px solid var(--q-line-strong);color:var(--accent-deep)}
.qp-auth-ic svg{width:32px;height:32px}
.qp-auth-closed{text-align:center}
.qp-auth-acts{display:flex;gap:12px}
.qp-auth-acts .qp-btn{flex:1}
.qp-auth .qp-terms{display:flex;gap:9px;align-items:flex-start;font-size:13px;color:var(--q-muted);margin-bottom:18px;cursor:pointer}
.qp-auth .qp-terms input{accent-color:var(--accent);width:15px;height:15px;cursor:pointer;margin-top:2px;flex:none}

/* ---------- 邮箱验证态 ---------- */
.qp-verify-ic{width:64px;height:64px;margin:0 auto 18px;border-radius:50%;display:grid;place-items:center}
.qp-verify-ic.ok{background:var(--accent-tint);border:1px solid var(--accent);color:var(--accent-deep)}
.qp-verify-ic.ok svg{stroke:var(--accent-deep)}
.qp-verify-ic.bad{background:rgba(220,38,38,.07);border:1px solid rgba(220,38,38,.35);color:#dc2626}
.qp-verify-ic.bad svg{stroke:#dc2626}
.qp-verify-ic.mail{background:var(--accent-tint);border:1px solid var(--q-line-strong);color:var(--accent-deep)}
.qp-verify-ic.mail svg{stroke:var(--accent-deep)}
.qp-verify-card .msg{color:var(--q-muted);font-size:14.5px;line-height:1.8;margin-bottom:20px}
.qp-verify-card .email-display{font-family:var(--q-mono);color:var(--q-txt);font-weight:600}
.qp-alert{border-radius:12px;padding:14px 16px;margin-bottom:18px;font-size:13.5px}
.qp-alert.warn{background:rgba(224,146,47,.08);border:1px solid rgba(224,146,47,.35);color:#8a5a12}
.qp-alert.tip{background:var(--q-surface2);border:1px solid var(--q-line);color:var(--q-muted)}
.qp-alert strong{display:block;color:var(--q-txt);margin-bottom:6px}
.qp-alert ul{margin:6px 0 0;padding-left:18px}
.qp-alert li{line-height:1.8}
.qp-verify-acts{display:flex;gap:12px;flex-wrap:wrap}
.qp-verify-acts .qp-btn{flex:1;min-width:150px}

/* ---------- 法务页（terms/privacy） ---------- */
.qp-legal{padding:70px 0 60px}
.qp-legal .qp-wrap{max-width:840px}
.qp-legal-hero{text-align:center;margin-bottom:38px}
.qp-legal-hero .ic{width:66px;height:66px;border-radius:19px;background:var(--accent-tint);
  border:1px solid var(--q-line-strong);display:grid;place-items:center;margin:0 auto 20px;color:var(--accent-deep)}
.qp-legal-hero .ic svg{width:32px;height:32px}
.qp-legal-hero h1{font-size:clamp(28px,4vw,40px);font-weight:850;color:var(--q-txt)}
.qp-legal-hero .sub{color:var(--q-muted);margin-top:10px;font-size:14px}
.qp-legal-card{background:#fff;border:1px solid var(--q-line);border-radius:18px;padding:clamp(24px,4vw,44px)}
.qp-legal-card h2{font-size:19px;font-weight:750;color:var(--q-txt);margin:36px 0 14px;
  display:flex;align-items:center;gap:10px}
.qp-legal-card h2:first-child{margin-top:0}
.qp-legal-card h2::before{content:"";width:4px;height:18px;border-radius:2px;background:var(--q-grad);flex:none}
.qp-legal-card h3{font-size:15.5px;font-weight:700;color:var(--q-txt);margin:22px 0 10px}
.qp-legal-card p{color:var(--q-muted);font-size:14.5px;line-height:1.9;margin-bottom:12px}
.qp-legal-card ul{list-style:none;margin:0 0 12px;padding:0}
.qp-legal-card li{color:var(--q-muted);font-size:14.5px;line-height:1.9;padding:5px 0 5px 24px;position:relative}
.qp-legal-card li::before{content:"✓";position:absolute;left:0;top:5px;color:var(--accent);font-weight:700}
.qp-legal-card strong{color:var(--q-txt)}
.qp-legal-card a{color:var(--accent-deep);font-weight:600}
.qp-legal-card a:hover{text-decoration:underline}

/* ---------- 联系页（复用 qp-support 栅格） ---------- */
.qp-contact-info{display:grid;gap:18px}
.qp-contact-info .ci{display:flex;gap:14px;align-items:flex-start}
.qp-contact-info .ci .ic{width:42px;height:42px;border-radius:12px;background:var(--accent-tint);
  border:1px solid var(--q-line-strong);display:grid;place-items:center;color:var(--accent-deep);flex:none;font-size:18px}
.qp-contact-info .ci h3{font-size:14.5px;font-weight:700;color:var(--q-txt);margin-bottom:3px}
.qp-contact-info .ci p{font-size:13.5px;color:var(--q-muted)}
.qp-contact-info .ci .dim{font-size:12px;color:var(--q-muted);opacity:.85;margin-top:2px}
.qp-contact-faq{margin-top:22px;padding-top:18px;border-top:1px solid var(--q-line)}
.qp-contact-faq h3{font-size:13.5px;font-weight:700;color:var(--q-txt);margin-bottom:10px}
.qp-contact-faq a{display:block;font-size:13.5px;color:var(--q-muted);padding:5px 0}
.qp-contact-faq a:hover{color:var(--accent-deep)}
.qp-field select{width:100%;border:1px solid var(--q-line-strong);border-radius:10px;padding:11px 14px;
  font-size:14px;font-family:var(--q-sans);color:var(--q-txt);background:#fff;transition:border-color .2s}
.qp-field select:focus{outline:none;border-color:var(--accent);box-shadow:0 0 0 3px rgba(32,165,58,.12)}

/* ---------- 主机详情页 ---------- */
.qp-detail{padding:36px 0 64px}
.qp-crumb{display:flex;align-items:center;gap:8px;font-size:13.5px;color:var(--q-muted);margin-bottom:22px;flex-wrap:wrap}
.qp-crumb a{color:var(--q-muted)}
.qp-crumb a:hover{color:var(--accent-deep)}
.qp-crumb .sep{color:var(--q-line-strong)}
.qp-crumb .cur{color:var(--q-txt);font-weight:600}
.qp-detail-grid{display:grid;grid-template-columns:1.6fr .92fr;gap:22px;align-items:start}
.qp-dpanel{background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:clamp(22px,3vw,30px)}
.qp-dpanel h1{font-size:clamp(24px,3.4vw,32px);font-weight:800;color:var(--q-txt)}
.qp-dpanel .desc{color:var(--q-muted);font-size:15px;margin:10px 0 8px}
.qp-dpanel h2.dt{font-size:17px;font-weight:750;color:var(--q-txt);margin:32px 0 14px;display:flex;align-items:center;gap:9px}
.qp-dpanel h2.dt .e{color:var(--accent-deep)}
.qp-feats{list-style:none;display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:0;padding:0}
.qp-feats li{display:flex;gap:9px;align-items:flex-start;font-size:14px;color:var(--q-txt);
  background:var(--q-surface2);border:1px solid var(--q-line);border-radius:10px;padding:11px 13px}
.qp-feats li svg{color:var(--accent);flex:none;margin-top:3px;width:16px;height:16px}
.qp-spec{border:1px solid var(--q-line);border-radius:12px;overflow:hidden}
.qp-spec .row{display:flex;justify-content:space-between;gap:12px;padding:12px 16px;font-size:14px;border-bottom:1px solid var(--q-line)}
.qp-spec .row:last-child{border-bottom:0}
.qp-spec .row:nth-child(odd){background:var(--q-surface2)}
.qp-spec .lab{color:var(--q-muted)}
.qp-spec .val{color:var(--q-txt);font-weight:600;text-align:right}
.qp-spec .val.yes{color:var(--accent-deep)}
.qp-spec .val.no{color:#b0b8b3}
.qp-tags{display:flex;flex-wrap:wrap;gap:8px}
.qp-tags .tag{border:1px solid var(--q-line-strong);background:var(--accent-tint);color:var(--accent-deep);
  border-radius:999px;padding:6px 14px;font-size:12.5px;font-weight:600}
.qp-prose{color:var(--q-muted);font-size:14.5px;line-height:1.9}
.qp-prose h2,.qp-prose h3{color:var(--q-txt);font-weight:700}
.qp-prose a{color:var(--accent-deep)}
.qp-order{background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:24px;
  position:sticky;top:84px;box-shadow:0 20px 50px rgba(17,24,39,.06)}
.qp-period{display:grid;gap:10px;margin-bottom:6px}
.qp-period label{display:flex;align-items:center;justify-content:space-between;gap:10px;
  border:1px solid var(--q-line-strong);border-radius:11px;padding:12px 15px;cursor:pointer;transition:.2s;font-size:14px}
.qp-period label:hover{border-color:var(--accent)}
.qp-period label.active{border-color:var(--accent);background:var(--accent-tint);box-shadow:0 0 0 3px rgba(32,165,58,.10)}
.qp-period input{accent-color:var(--accent)}
.qp-period .pn{font-weight:600;color:var(--q-txt);display:flex;align-items:center;gap:8px}
.qp-period .save{font-family:var(--q-mono);font-size:11px;background:var(--accent);color:#fff;
  border-radius:999px;padding:2px 8px;font-weight:700}
.qp-period .pp{font-family:var(--q-mono);font-weight:700;color:var(--q-txt);white-space:nowrap}
.qp-period .pp small{color:var(--q-muted);font-weight:400;font-size:11.5px}
.qp-total{display:flex;align-items:baseline;justify-content:space-between;padding:16px 0 18px;
  border-top:1px dashed var(--q-line-strong);margin-top:14px;margin-bottom:16px}
.qp-total .tl{color:var(--q-muted);font-size:13px}
.qp-total .tv{font-family:var(--q-mono);font-size:30px;font-weight:750;color:var(--accent-deep)}
.qp-perks{margin-top:18px;display:grid;gap:9px}
.qp-perks .pk{display:flex;gap:9px;align-items:center;font-size:13px;color:var(--q-muted)}
.qp-perks .pk svg{color:var(--accent);flex:none;width:14px;height:14px}
.qp-auto-note{margin-top:14px;font-size:12.5px;color:var(--q-muted);text-align:center}

/* ---------- 用户中心公共横幅（_hero.php） ---------- */
.qp-uhero{background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:26px 28px;
  margin-bottom:24px;box-shadow:0 18px 44px rgba(17,24,39,.05)}
.qp-uhero-inner{display:flex;align-items:center;gap:20px;flex-wrap:wrap}
.qp-uhero-avatar{width:54px;height:54px;border-radius:15px;background:var(--q-grad);color:#fff;
  display:grid;place-items:center;font-size:22px;font-weight:600;flex:none}
.qp-uhero-info{flex:1;min-width:0}
.qp-uhero-title{font-size:clamp(19px,2.6vw,24px);font-weight:750;color:var(--q-txt);margin:0 0 4px}
.qp-uhero-sub{font-size:13px;color:var(--q-muted);margin:0}
.qp-uhero-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:16px}
.qp-uhero-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 16px;border-radius:999px;
  font-size:13px;text-decoration:none;background:#fff;color:var(--accent-deep);
  border:1px solid var(--q-line-strong);transition:.2s;font-weight:500}
.qp-uhero-btn:hover{border-color:var(--accent);background:var(--accent-tint)}
.qp-uhero-btn.primary{background:var(--accent);color:#fff;border-color:transparent;font-weight:600;box-shadow:var(--q-glow)}
.qp-uhero-btn.active{background:var(--accent-tint);color:var(--accent-deep);border-color:var(--accent);font-weight:600}
@media(max-width:640px){.qp-uhero{padding:20px}.qp-uhero-actions{justify-content:center}}

/* ---------- 响应式 ---------- */
@media(max-width:920px){
  .qp-detail-grid{grid-template-columns:1fr}
  .qp-order{position:static}
  .qp-feats{grid-template-columns:1fr}
}
@media(max-width:560px){
  .qp-auth-card{padding:28px 22px}
  .qp-auth-acts{flex-direction:column}
  .qp-verify-acts{flex-direction:column}
}

/* ===== ④-C Batch4 用户中心组件（qp-u） ===== */
/* ============================================================
   Quantum 用户中心 v0.4 组件库（qp-u 前缀）
   经 build_quantum_theme.py 并入 theme.css（head 末加载）
   覆盖：统计卡/面板/列表行/主机卡/订单卡/工单行/徽章/进度条/
        告警/空态/筛选 tabs/弹窗/表单/上传/回复/分页/骨架屏
   令牌全部来自 theme.css :root（--accent/--q-*），不引入金棕字面量
   ============================================================ */
.qp-u{
  --u-green:#16a34a; --u-green-bg:#e9f6ee;
  --u-red:#dc2626; --u-red-bg:#fdeeee;
  --u-orange:#ea8600; --u-orange-bg:#fdf3e2;
  --u-yellow:#ca8a04; --u-yellow-bg:#fdf9e7;
  --u-blue:#2563eb; --u-blue-bg:#ebf1fe;
  --u-gray:#6b7280; --u-gray-bg:#f3f4f6;
}
.qp-u{font-family:var(--q-sans);color:var(--q-txt);line-height:1.6}
.qp-u a{text-decoration:none;color:inherit}
.qp-u-container{max-width:1100px;margin:0 auto;padding:28px 24px 72px}
.qp-u-container.narrow{max-width:900px}

/* ── 备份列表项 ── */
.qp-u-bk-item{display:flex;align-items:center;gap:15px;padding:16px 22px;border-bottom:1px solid var(--q-line);transition:background .18s}
.qp-u-bk-item:last-child{border-bottom:none}
.qp-u-bk-item:hover{background:var(--q-surface2)}
.qp-u-bk-icon{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;
  background:var(--accent-tint);border:1px solid rgba(32,165,58,.15)}
.qp-u-bk-icon svg{width:19px;height:19px;color:var(--accent-deep)}
.qp-u-bk-info{flex:1;min-width:0}
.qp-u-bk-name{font-size:14px;font-weight:600;color:var(--q-txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qp-u-bk-actions{display:flex;align-items:center;gap:10px;flex-shrink:0;flex-wrap:wrap}

/* ============================================================
   控制台 hc 家族全局中和（host_control/file_manager/domains/siteconfig/backups）
   v3.css 的 hc 体系：金/青光斑 + 玻璃顶栏 + 透明墨卡 → 固态白卡 + 净色
   ============================================================ */
.hc-bg{background:var(--q-bg)!important}
.hc-bg::before,.hc-bg::after,.hc-bg .hc-blob{display:none!important}
.hc .hc-glass,.hc-glass{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  border:1px solid var(--q-line)!important;box-shadow:0 14px 34px rgba(17,24,39,.05)!important}
.hc-topbar{background:rgba(255,255,255,.94)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  border-bottom:1px solid var(--q-line)!important}
.hc-card,.hc-bottom-card{background:#fff!important;border:1px solid var(--q-line)!important;
  box-shadow:0 14px 34px rgba(17,24,39,.05)!important}
.hc-foot{background:#fff!important;border-top:1px solid var(--q-line)!important}
.hc-sidebar .hc-brand{border-bottom:1px solid var(--q-line)!important}
.hc-sidebar .hc-brand-logo{background:var(--q-grad)!important;color:#fff!important}
.hc-nav-item.active,.hc-anchor.active{color:var(--accent-deep)!important;background:var(--accent-tint)!important;border-left-color:var(--accent)!important}
.hc-nav-item:hover,.hc-anchor:hover{background:var(--accent-tint)!important;color:var(--accent-deep)!important}
.hc-crumbs a:hover{color:var(--accent-deep)!important}
.hc-card-head h2 svg,.hc-card-head .more{color:var(--accent-deep)!important}
.hc-card-head .more:hover{color:var(--accent)!important}

/* ── hc 外壳 shim：v3.css 的 hc 体系引用了一批 frost 令牌（--r/--glass-border/
   --green-bg/--blur/--body-bg…），量子 :root 未定义 → 仅在 .hc 作用域补齐量子值。
   同时注入语义色板，使 .hc 页面不依赖 .qp-u 类也能用 --u-* */
.hc{
  --r:16px; --r-sm:10px;
  --glass-bg:#fff; --glass-strong:#fff;
  --glass-border:var(--q-line); --glass-shadow:0 18px 44px rgba(17,24,39,.06);
  --blur:0px; --body-bg:var(--q-bg);
  --green:#16a34a; --green-bg:#e9f6ee;
  --red:#dc2626; --red-bg:#fdeeee;
  --u-green:#16a34a; --u-green-bg:#e9f6ee;
  --u-red:#dc2626; --u-red-bg:#fdeeee;
  --u-orange:#ea8600; --u-orange-bg:#fdf3e2;
  --u-yellow:#ca8a04; --u-yellow-bg:#fdf9e7;
  --u-blue:#2563eb; --u-blue-bg:#ebf1fe;
  --u-gray:#6b7280; --u-gray-bg:#f3f4f6;
}

/* ── hc 旧名侧边栏（仅 host_domains/host_siteconfig 使用；host_control 已换新名）──
   白卡侧栏 + 量子令牌；原模板内联补丁样式（引 frost 令牌）已删除，统一定义于此 */
.hc .hc-sidebar{width:208px;flex-shrink:0;position:sticky;top:86px;align-self:flex-start;
  background:#fff;border:1px solid var(--q-line);border-radius:var(--r);padding:8px;
  margin:26px 0 60px 28px;box-shadow:0 14px 34px rgba(17,24,39,.05)}
.hc .hc-sidebar .hc-brand{display:flex;align-items:center;gap:9px;padding:12px 12px 14px;
  border-bottom:1px solid var(--q-line);margin-bottom:6px}
.hc .hc-sidebar .hc-brand-logo{width:30px;height:30px;border-radius:9px;background:var(--q-grad);
  color:#fff;font-weight:800;font-size:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.hc .hc-sidebar .hc-brand-name{font-size:13.5px;font-weight:700;color:var(--q-txt);line-height:1.25;min-width:0}
.hc .hc-sidebar .hc-brand-name small{display:block;font-size:10.5px;font-weight:500;color:var(--q-muted)}
.hc .hc-sidebar .hc-nav-label{padding:10px 13px 5px;font-size:10.5px;font-weight:700;
  letter-spacing:.06em;color:var(--q-muted);text-transform:uppercase}
.hc .hc-nav-item{display:flex;align-items:center;gap:9px;width:100%;padding:9px 13px;font-size:13px;
  font-weight:500;color:var(--q-muted);background:transparent;border:none;border-left:2px solid transparent;
  border-radius:10px;text-align:left;text-decoration:none;cursor:pointer;transition:.16s;
  font-family:inherit;box-sizing:border-box}
.hc .hc-nav-item svg{width:15px;height:15px;flex-shrink:0}
.hc .hc-nav-item:hover{color:var(--accent-deep);background:var(--accent-tint)}
.hc .hc-nav-item.active{color:var(--accent-deep);font-weight:700;background:var(--accent-tint);
  border-left-color:var(--accent)}

/* ── hc 按钮修正：v3 的 .hc-btn.danger 误用品牌绿渐变（frost 遗留 bug）→ 红色；
   brand/ghost 同步量子化；补 .sm 尺寸 */
.hc .hc-btn.brand{background:var(--q-grad);color:#fff;box-shadow:0 8px 20px -8px rgba(32,165,58,.45)}
.hc .hc-btn.brand:hover{transform:translateY(-1px);box-shadow:0 12px 26px -8px rgba(32,165,58,.5)}
.hc .hc-btn.danger{background:var(--u-red);color:#fff;border:none;box-shadow:0 8px 20px -8px rgba(220,38,38,.4)}
.hc .hc-btn.danger:hover{transform:translateY(-1px);filter:brightness(1.07)}
.hc .hc-btn.ghost{border:1px solid var(--q-line-strong);color:var(--q-muted);background:#fff}
.hc .hc-btn.ghost:hover{color:var(--accent-deep);border-color:var(--accent);background:var(--accent-tint)}
.hc .hc-btn.sm{padding:6px 14px;font-size:12px;border-radius:9px}

/* ── 站点配置面板（host_siteconfig；JS 依赖 .hc-config-item 类名与 #configFormBody）── */
.hc .hc-config-panel{display:flex;border-radius:var(--r);background:#fff;
  border:1px solid var(--q-line);box-shadow:0 14px 34px rgba(17,24,39,.05);overflow:hidden;min-height:480px}
.hc .hc-config-list{width:220px;flex-shrink:0;border-right:1px solid var(--q-line);
  padding:8px;overflow-y:auto;background:var(--q-surface2)}
.hc .hc-config-item{display:flex;align-items:center;gap:8px;padding:10px 12px;border-radius:10px;
  cursor:pointer;font-size:13px;color:var(--q-muted);transition:.18s}
.hc .hc-config-item:hover{background:#fff;color:var(--q-txt)}
.hc .hc-config-item.active{background:#fff;color:var(--accent-deep);font-weight:700;
  box-shadow:0 2px 8px rgba(17,24,39,.07)}
.hc .hc-config-item.danger{color:var(--u-red)}
.hc .hc-config-item.danger:hover{background:var(--u-red-bg);color:var(--u-red)}
.hc .hc-config-item.danger.active{background:var(--u-red-bg);color:var(--u-red)}
.hc .hc-config-item svg{width:16px;height:16px;flex-shrink:0}
.hc .hc-config-form{flex:1;padding:24px;overflow-y:auto;background:#fff;min-width:0}
.hc .hc-config-form-head{display:flex;align-items:center;gap:12px;margin-bottom:20px;
  padding-bottom:16px;border-bottom:1px solid var(--q-line)}
.hc .hc-config-form-icon{width:40px;height:40px;border-radius:10px;background:var(--accent-tint);
  display:flex;align-items:center;justify-content:center;color:var(--accent-deep);flex-shrink:0}
.hc .hc-config-form-icon svg{width:20px;height:20px}
.hc .hc-config-form-title{font-size:16px;font-weight:700;color:var(--q-txt)}
.hc .hc-config-form-desc{font-size:12px;color:var(--q-muted);margin-top:2px}
.hc .hc-config-form-body{min-height:200px}

/* ── AJAX 配置表单片段（服务端渲染：hc-tip/hc-field/hc-form/hc-modal-foot/hc-danger-note）── */
.hc .hc-field{margin-bottom:16px}
.hc .hc-field label{display:block;font-size:13px;font-weight:600;color:var(--q-txt);margin-bottom:6px}
.hc .hc-field input,.hc .hc-field select,.hc .hc-field textarea{width:100%;padding:10px 13px;
  border-radius:10px;border:1px solid var(--q-line-strong);background:#fff;color:var(--q-txt);
  font-size:14px;font-family:inherit;outline:none;transition:.18s}
.hc .hc-field input:focus,.hc .hc-field select:focus,.hc .hc-field textarea:focus{
  border-color:var(--accent);box-shadow:0 0 0 3px rgba(32,165,58,.15)}
.hc .hc-field textarea{resize:vertical;line-height:1.6}
.hc .hc-tip{display:flex;align-items:flex-start;gap:10px;padding:12px 16px;border-radius:12px;
  margin-bottom:16px;font-size:13px;line-height:1.7;background:var(--u-blue-bg);
  border:1px solid rgba(37,99,235,.2);color:var(--q-txt)}
.hc .hc-tip svg{width:17px;height:17px;flex-shrink:0;color:var(--u-blue);margin-top:2px}
.hc .hc-danger-note{display:flex;align-items:flex-start;gap:10px;padding:12px 16px;border-radius:12px;
  margin-bottom:16px;font-size:13px;line-height:1.7;background:var(--u-red-bg);
  border:1px solid rgba(220,38,38,.22);color:var(--u-red)}
.hc .hc-danger-note svg{width:17px;height:17px;flex-shrink:0;margin-top:2px}
.hc .hc-modal-foot{display:flex;gap:10px;justify-content:flex-end;padding-top:16px;
  border-top:1px solid var(--q-line);margin-top:20px}

/* ── hc 外壳响应式（侧边栏横躺 / 配置面板堆叠）── */
@media(max-width:800px){
  .hc .hc-sidebar{position:static;width:auto;flex:none;display:flex;flex-wrap:wrap;
    margin:14px 14px 0;padding:8px}
  .hc .hc-sidebar .hc-brand{width:100%}
  .hc .hc-nav-item{width:auto;padding:7px 12px;font-size:12px;border-left:none;margin:2px}
  .hc .hc-nav-item.active{border-left:none}
  .hc .hc-sidebar .hc-nav-label{width:100%;padding:8px 14px 2px}
}
@media(max-width:768px){
  .hc .hc-config-panel{flex-direction:column;min-height:0}
  .hc .hc-config-list{width:auto;border-right:none;border-bottom:1px solid var(--q-line);
    display:flex;flex-wrap:wrap;gap:4px;padding:10px}
  .hc .hc-config-item{padding:8px 10px;font-size:12px}
}

/* ============================================================
   账户设置 st- 家族量子化（settings/api_keys/pay_result/host_renew 共用）
   原模板内联「金棕玻璃」整段删除，类名与 JS 100% 保留，仅换视觉：
   白卡 + 宝塔绿 + 无衬线；JS 内引用的 --c-* 语义色在 .st 作用域补齐
   ============================================================ */
.st{
  --c-red:#dc2626; --c-red-bg:#fdeeee;
  --c-green:#16a34a; --c-green-bg:#e9f6ee;
  --c-blue:#2563eb; --c-orange:#ea8600; --c-yellow:#ca8a04;
}
:root{--c-red:#dc2626;--c-red-bg:#fdeeee;--c-green:#16a34a;--c-green-bg:#e9f6ee;--c-blue:#2563eb;--c-orange:#ea8600;--c-yellow:#ca8a04;}

.st .st-page{max-width:1100px;margin:0 auto;padding:28px 24px 72px}
.st .st-breadcrumb{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--q-muted);margin-bottom:20px}
.st .st-breadcrumb a{color:var(--accent-deep);text-decoration:none;font-weight:600;transition:color .2s}
.st .st-breadcrumb a:hover{color:var(--accent)}
.st .st-breadcrumb span:last-child{color:var(--q-txt);font-weight:600}

/* Tab 导航（对齐 qp-u-tabs 视觉） */
.st .st-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:22px}
.st .st-tab{position:relative;padding:9px 18px;border-radius:10px;font-size:13px;font-weight:600;
  background:#fff;border:1px solid var(--q-line-strong);color:var(--q-muted);cursor:pointer;
  font-family:inherit;transition:.18s}
.st .st-tab:hover{color:var(--accent-deep);border-color:var(--accent);background:var(--accent-tint)}
.st .st-tab.on{background:var(--q-grad);color:#fff;border-color:transparent;
  box-shadow:0 4px 12px -4px rgba(32,165,58,.45)}

/* 面板与卡片 */
.st .st-panel{display:none}
.st .st-panel.active{display:block;animation:stFade .25s ease}
@keyframes stFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
.st .st-card{background:#fff;border:1px solid var(--q-line);border-radius:16px;
  padding:24px 26px;margin-bottom:18px;box-shadow:0 14px 34px rgba(17,24,39,.05)}
.st .st-card.st-danger{border-color:rgba(220,38,38,.25);background:linear-gradient(180deg,#fffafa,#fff)}
.st .st-card-head{display:flex;align-items:center;gap:10px;margin-bottom:18px}
.st .st-card-head svg{color:var(--accent-deep);flex-shrink:0}
.st .st-card-title{font-size:15px;font-weight:700;color:var(--q-txt);margin:0}

/* 表单行 */
.st .st-row{margin-bottom:16px}
.st .st-row label{display:block;font-size:13px;font-weight:600;color:var(--q-txt);margin-bottom:6px}
.st .st-row input,.st .st-row select,.st .st-row textarea,
.st .st-form-input{width:100%;padding:10px 13px;border-radius:10px;border:1px solid var(--q-line-strong);
  background:#fff;color:var(--q-txt);font-size:14px;font-family:inherit;outline:none;transition:.18s;box-sizing:border-box}
.st .st-row input:focus,.st .st-row select:focus,.st .st-row textarea:focus,
.st .st-form-input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(32,165,58,.15)}
.st .st-row input[readonly]{background:var(--q-surface2);color:var(--q-muted)}
.st .st-row input.valid{border-color:var(--c-green)}
.st .st-row input.invalid{border-color:var(--c-red)}
.st .hint{font-size:12px;color:var(--q-muted);margin-top:6px;line-height:1.6}
.st .hint a{color:var(--accent-deep);font-weight:600}
.st .error{display:none;font-size:12px;color:var(--c-red);margin-top:6px}

/* 密码可见性 */
.st .st-pwd-wrap{position:relative}
.st .st-pwd-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:none;
  background:none;color:var(--q-muted);cursor:pointer;padding:6px;border-radius:8px;display:flex}
.st .st-pwd-toggle:hover{color:var(--accent-deep);background:var(--accent-tint)}
.st .st-strength{height:6px;background:var(--q-surface2);border-radius:99px;margin-top:8px;overflow:hidden}
.st .st-strength-bar{height:100%;width:0;border-radius:99px;transition:width .3s}
.st .st-strength-text{font-size:11px;color:var(--q-muted);margin-top:5px}

/* 按钮（对齐 qp-u-btn，含 loading spinner 机制） */
.st .st-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;padding:10px 20px;
  border-radius:11px;font-size:13.5px;font-weight:600;border:1px solid transparent;cursor:pointer;
  font-family:inherit;transition:.18s;text-decoration:none;box-sizing:border-box}
.st .st-btn svg{width:15px;height:15px;flex-shrink:0}
.st .st-btn.primary{background:var(--q-grad);color:#fff;box-shadow:0 8px 20px -8px rgba(32,165,58,.45)}
.st .st-btn.primary:hover{transform:translateY(-1px);box-shadow:0 12px 26px -8px rgba(32,165,58,.5)}
.st .st-btn.ghost{background:#fff;border-color:var(--q-line-strong);color:var(--q-txt)}
.st .st-btn.ghost:hover{border-color:var(--accent);color:var(--accent-deep);background:var(--accent-tint)}
.st .st-btn.danger{background:var(--c-red);color:#fff;box-shadow:0 8px 20px -8px rgba(220,38,38,.4)}
.st .st-btn.danger:hover{filter:brightness(1.07)}
.st .st-btn.sm{padding:6px 14px;font-size:12px;border-radius:9px}
.st .st-btn:disabled{opacity:.6;cursor:not-allowed;transform:none}
.st .st-btn .spinner{display:none;width:14px;height:14px;border:2px solid rgba(255,255,255,.35);
  border-top-color:#fff;border-radius:50%;animation:stSpin .7s linear infinite}
.st .st-btn.ghost .spinner{border-color:rgba(32,165,58,.25);border-top-color:var(--accent)}
.st .st-btn.loading .spinner{display:block}
.st .st-btn.loading span{display:none}
@keyframes stSpin{to{transform:rotate(360deg)}}
.st .no-underline{text-decoration:none}

/* 头像 / 未验证标记 */
.st .st-avatar{width:64px;height:64px;border-radius:16px;background:var(--q-grad);color:#fff;
  font-size:24px;font-weight:800;display:grid;place-items:center;cursor:pointer;flex-shrink:0;
  transition:.18s;user-select:none}
.st .st-avatar:hover{transform:scale(1.04);box-shadow:0 12px 28px -8px rgba(32,165,58,.4)}
.st .st-unverified{font-size:11px;padding:2px 9px;border-radius:99px;background:var(--u-orange-bg,#fdf3e2);
  color:var(--c-orange);font-weight:600;text-decoration:none}
.st .st-unverified:hover{background:var(--c-orange);color:#fff}

/* 开关 / 通知行 */
.st .st-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:14px 0;border-bottom:1px solid var(--q-line)}
.st .st-toggle-row:last-of-type{border-bottom:none}
.st .st-toggle-label{font-size:14px;font-weight:600;color:var(--q-txt)}
.st .st-toggle-desc{font-size:12px;color:var(--q-muted);margin-top:3px}
.st .st-toggle{position:relative;width:46px;height:26px;border-radius:99px;background:var(--q-line-strong);
  cursor:pointer;transition:.2s;flex-shrink:0}
.st .st-toggle::after{content:'';position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;
  background:#fff;box-shadow:0 2px 6px rgba(17,24,39,.2);transition:.2s}
.st .st-toggle.on{background:var(--accent)}
.st .st-toggle.on::after{left:23px}

/* 信息网格 */
.st .st-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}
.st .st-info-item{background:var(--q-surface2);border-radius:12px;padding:14px 16px}
.st .st-info-item span{display:block;font-size:12px;color:var(--q-muted)}
.st .st-info-item b{display:block;font-size:14px;font-weight:600;color:var(--q-txt);margin-top:4px}

/* 表格（含 JS 动态生成的 st-table） */
.st .st-table{width:100%;border-collapse:collapse}
.st .st-table th{text-align:left;font-size:12px;font-weight:600;color:var(--q-muted);
  padding:10px 12px;border-bottom:1px solid var(--q-line);white-space:nowrap}
.st .st-table td{font-size:13px;color:var(--q-txt);padding:11px 12px;border-bottom:1px solid var(--q-line)}
.st .st-table tbody tr:last-child td{border-bottom:none}
.st .st-table tbody tr:hover{background:var(--q-surface2)}
.st .st-table .mono,.st .mono{font-family:var(--q-mono);font-size:11px}

/* 分页 */
.st .st-pager{display:flex;align-items:center;justify-content:center;gap:12px;margin-top:14px}
.st .st-pager button{padding:6px 14px;font-size:12px;font-weight:600;border-radius:9px;
  border:1px solid var(--q-line-strong);background:#fff;color:var(--q-txt);cursor:pointer;font-family:inherit}
.st .st-pager button:hover{border-color:var(--accent);color:var(--accent-deep);background:var(--accent-tint)}

/* 会话卡片（JS 动态生成） */
.st .st-session{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--q-line);
  border-radius:12px;margin-bottom:10px;background:#fff}
.st .st-session.current{border-color:rgba(32,165,58,.35);background:var(--accent-tint)}
.st .st-session .icon{width:38px;height:38px;border-radius:10px;background:var(--q-surface2);
  display:grid;place-items:center;color:var(--q-muted);flex-shrink:0}
.st .st-session .info{flex:1;min-width:0}
.st .st-session .device{font-size:14px;font-weight:600;color:var(--q-txt)}
.st .st-session .meta{font-size:12px;color:var(--q-muted);margin-top:3px}

/* 充值 Tab */
.st .st-rc-balance{display:flex;align-items:baseline;gap:10px;padding:16px 20px;border-radius:14px;
  background:var(--q-surface2);border:1px solid var(--q-line);margin-bottom:20px}
.st .st-rc-balance b{font-size:26px;font-weight:800;color:var(--accent-deep);font-variant-numeric:tabular-nums}
.st .st-rc-balance span{font-size:12px;color:var(--q-muted)}
.st .st-rc-amounts{display:grid;grid-template-columns:repeat(auto-fill,minmax(86px,1fr));gap:10px;margin-bottom:12px}
.st .st-rc-amt{padding:13px 8px;border-radius:12px;background:#fff;border:2px solid var(--q-line-strong);
  font-size:14px;font-weight:700;color:var(--q-txt);text-align:center;cursor:pointer;transition:.18s;user-select:none}
.st .st-rc-amt:hover{border-color:var(--accent);background:var(--accent-tint)}
.st .st-rc-amt.active{border-color:var(--accent);background:var(--accent-tint);color:var(--accent-deep)}
.st .st-rc-methods{display:flex;flex-wrap:wrap;gap:10px}
.st .st-rc-method{padding:10px 18px;border-radius:11px;background:#fff;border:2px solid var(--q-line-strong);
  font-size:13px;font-weight:600;color:var(--q-muted);cursor:pointer;transition:.18s;user-select:none}
.st .st-rc-method:hover{border-color:var(--accent);color:var(--accent-deep)}
.st .st-rc-method.active{border-color:var(--accent);background:var(--accent-tint);color:var(--accent-deep)}
.st .st-rc-status{display:inline-flex;padding:3px 10px;border-radius:99px;font-size:11px;font-weight:600}
.st .st-rc-status.s0{background:var(--q-surface2);color:var(--q-muted)}
.st .st-rc-status.s1{background:var(--c-green-bg);color:var(--c-green)}
.st .st-rc-status.s2{background:#fdf3e2;color:var(--c-orange)}
.st .st-rc-status.s3{background:var(--c-red-bg);color:var(--c-red)}
.st .st-rc-status.s4{background:var(--q-surface2);color:var(--q-muted)}

/* 远程支付弹窗 */
.st .rc-modal-mask{position:fixed;inset:0;background:rgba(17,24,39,.5);z-index:1000;
  display:flex;align-items:center;justify-content:center;padding:20px}
.st .rc-modal{position:relative;background:#fff;border-radius:16px;width:100%;max-width:420px;
  padding:28px;box-shadow:0 30px 70px rgba(17,24,39,.25)}
.st .rc-modal-close{position:absolute;top:12px;right:14px;border:none;background:none;
  font-size:22px;color:var(--q-muted);cursor:pointer;line-height:1;padding:6px;border-radius:8px}
.st .rc-modal-close:hover{color:var(--q-txt);background:var(--q-surface2)}
.st .rc-modal-title{font-size:16px;font-weight:700;color:var(--q-txt);margin:0 0 4px;text-align:center}
.st .rc-modal-amount{font-size:30px;font-weight:800;color:var(--accent-deep);text-align:center;
  margin:8px 0 14px;font-variant-numeric:tabular-nums}
.st .rc-qr-box{background:#fff;border:1px solid var(--q-line);border-radius:12px;padding:12px;
  width:fit-content;margin:0 auto}
.st .rc-qr-box img{width:180px;height:180px;display:block}
.st .rc-modal-tip{font-size:13px;color:var(--q-muted);text-align:center;margin:12px 0 18px;line-height:1.6}
.st .rc-voucher-box{border:2px dashed var(--q-line-strong);border-radius:12px;padding:28px 16px;
  text-align:center;cursor:pointer;transition:.18s;color:var(--q-muted);font-size:13px;line-height:1.7}
.st .rc-voucher-box:hover{border-color:var(--accent);background:var(--accent-tint)}
.st .rc-voucher-box img{max-width:100%;max-height:220px;border-radius:8px;display:block;margin:0 auto}
.st #rcVoucherRemark{width:100%;padding:10px 13px;border-radius:10px;border:1px solid var(--q-line-strong);
  font-size:14px;font-family:inherit;margin-top:12px;outline:none;box-sizing:border-box}
.st #rcVoucherRemark:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(32,165,58,.15)}
.st .rc-done-icon{width:56px;height:56px;border-radius:50%;background:var(--c-green-bg);color:var(--c-green);
  display:grid;place-items:center;margin:0 auto 14px}
@media(max-width:640px){
  .st .st-page{padding:18px 14px 56px}
  .st .st-card{padding:18px}
}
/* ===== 账户设置 qp-u-set 家族（settings，与 qp-u 同源；专有控件 qp-u-set-*） ===== */
.qp-u-set-panel{display:none}
.qp-u-set-panel.active{display:block;animation:stFade .25s ease}
@keyframes stFade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}

.qp-u-set-hint{font-size:12px;color:var(--q-muted);margin-top:6px;line-height:1.6}
.qp-u-set-hint a{color:var(--accent-deep);font-weight:600}
.qp-u-set-error{display:none;font-size:12px;color:var(--c-red);margin-top:6px}
.qp-u-set-no-underline{text-decoration:none}
/* 表单 valid/invalid 补充（qp-u-form-row + qp-u-input 已覆盖基础样式） */
.qp-u-form-row input.valid{border-color:var(--c-green)}
.qp-u-form-row input.invalid{border-color:var(--c-red)}

.qp-u-set-avatar{width:64px;height:64px;border-radius:16px;background:var(--q-grad);color:#fff;
  display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:700;cursor:pointer;
  transition:transform .18s,box-shadow .18s;overflow:hidden;flex-shrink:0}
.qp-u-set-avatar:hover{transform:scale(1.04);box-shadow:0 12px 28px -8px rgba(32,165,58,.4)}

.qp-u-set-pwd-wrap{position:relative}
.qp-u-set-pwd-toggle{position:absolute;right:8px;top:50%;transform:translateY(-50%);border:none;
  background:transparent;color:var(--q-muted);cursor:pointer;padding:6px;border-radius:8px;display:flex;align-items:center}
.qp-u-set-pwd-toggle:hover{color:var(--accent-deep);background:var(--accent-tint)}
.qp-u-set-strength{height:6px;background:var(--q-surface2);border-radius:99px;margin-top:8px;overflow:hidden}
.qp-u-set-strength-bar{height:100%;width:0;border-radius:99px;transition:width .3s}
.qp-u-set-strength-text{font-size:11px;color:var(--q-muted);margin-top:5px}

.qp-u-set-toggle-row{display:flex;align-items:center;justify-content:space-between;gap:16px;
  padding:15px 0;border-bottom:1px solid var(--q-line)}
.qp-u-set-toggle-row:last-of-type{border-bottom:none}
.qp-u-set-toggle-label{font-size:14px;font-weight:600;color:var(--q-txt)}
.qp-u-set-toggle-desc{font-size:12px;color:var(--q-muted);margin-top:3px}
.qp-u-set-toggle{position:relative;width:46px;height:26px;border-radius:99px;background:var(--q-line-strong);
  cursor:pointer;transition:background .2s;flex-shrink:0}
.qp-u-set-toggle::after{content:'';position:absolute;top:3px;left:3px;width:20px;height:20px;border-radius:50%;
  background:#fff;transition:left .2s;box-shadow:0 1px 3px rgba(0,0,0,.2)}
.qp-u-set-toggle.on{background:var(--accent)}
.qp-u-set-toggle.on::after{left:23px}

.qp-u-set-info-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(160px,1fr));gap:14px}
.qp-u-set-info-item{background:var(--q-surface2);border-radius:12px;padding:14px 16px}
.qp-u-set-info-item span{display:block;font-size:12px;color:var(--q-muted)}
.qp-u-set-info-item b{display:block;font-size:14px;font-weight:600;color:var(--q-txt);margin-top:4px}

.qp-u-set-table{width:100%;border-collapse:collapse}
.qp-u-set-table th{text-align:left;font-size:12px;font-weight:600;color:var(--q-muted);
  padding:10px 12px;border-bottom:1px solid var(--q-line)}
.qp-u-set-table td{font-size:13px;color:var(--q-txt);padding:11px 12px;border-bottom:1px solid var(--q-line)}
.qp-u-set-table tbody tr:last-child td{border-bottom:none}
.qp-u-set-table tbody tr:hover{background:var(--q-surface2)}
.qp-u-set-table .mono{font-family:var(--q-mono);font-size:11px}

.qp-u-set-session{display:flex;align-items:center;gap:14px;padding:14px 16px;border:1px solid var(--q-line);
  border-radius:12px;margin-bottom:12px}
.qp-u-set-session.current{border-color:rgba(32,165,58,.35);background:var(--accent-tint)}
.qp-u-set-session .icon{width:38px;height:38px;border-radius:10px;background:var(--q-surface2);
  display:flex;align-items:center;justify-content:center;flex-shrink:0}
.qp-u-set-session .info{flex:1;min-width:0}
.qp-u-set-session .device{font-size:14px;font-weight:600;color:var(--q-txt)}
.qp-u-set-session .meta{font-size:12px;color:var(--q-muted);margin-top:3px}

.qp-u-set-danger{border-color:rgba(220,38,38,.25);background:linear-gradient(180deg,#fffafa,#fff)}

.qp-u-set-rc-balance{display:flex;align-items:baseline;gap:10px;padding:16px 20px;border-radius:14px;
  background:var(--accent-tint);margin-bottom:18px}
.qp-u-set-rc-balance b{font-size:26px;font-weight:800;color:var(--accent-deep);font-variant-numeric:tabular-nums}
.qp-u-set-rc-balance span{font-size:12px;color:var(--q-muted)}
.qp-u-set-rc-methods{display:flex;flex-wrap:wrap;gap:10px}
.qp-u-set-rc-method{padding:10px 18px;border-radius:11px;background:#fff;border:2px solid var(--q-line-strong);
  cursor:pointer;font-size:14px;font-weight:600;color:var(--q-txt);transition:.15s}
.qp-u-set-rc-method:hover{border-color:var(--accent);color:var(--accent-deep)}
.qp-u-set-rc-method.active{border-color:var(--accent);background:var(--accent-tint);color:var(--accent-deep)}
.qp-u-set-rc-status{display:inline-flex;padding:3px 10px;border-radius:99px;font-size:11px;font-weight:600}
.qp-u-set-rc-status.s0{background:var(--q-surface2);color:var(--q-muted)}
.qp-u-set-rc-status.s1{background:var(--c-green-bg);color:var(--c-green)}
.qp-u-set-rc-status.s2{background:#fdf3e2;color:var(--c-orange)}
.qp-u-set-rc-status.s3{background:var(--c-red-bg);color:var(--c-red)}
.qp-u-set-rc-status.s4{background:var(--q-surface2);color:var(--q-muted)}

/* 远程支付弹窗（settings 专用，全局作用域） */
.rc-modal-mask{position:fixed;inset:0;background:rgba(17,24,39,.5);z-index:1000;
  display:none;align-items:center;justify-content:center;padding:16px}
.rc-modal{position:relative;background:#fff;border-radius:16px;width:100%;max-width:420px;
  padding:26px 24px;box-shadow:0 30px 70px rgba(17,24,39,.3)}
.rc-modal-close{position:absolute;top:12px;right:14px;border:none;background:none;
  font-size:22px;line-height:1;color:var(--q-muted);cursor:pointer;padding:4px 8px;border-radius:8px}
.rc-modal-close:hover{color:var(--q-txt);background:var(--q-surface2)}
.rc-modal-title{font-size:16px;font-weight:700;color:var(--q-txt);margin:0 0 4px;text-align:center}
.rc-modal-amount{font-size:30px;font-weight:800;color:var(--accent-deep);text-align:center;
  font-variant-numeric:tabular-nums;margin-bottom:14px}
.rc-qr-box{background:#fff;border:1px solid var(--q-line);border-radius:12px;padding:12px;
  display:flex;justify-content:center;margin-bottom:14px}
.rc-qr-box img{width:180px;height:180px;display:block}
.rc-modal-tip{font-size:13px;color:var(--q-muted);text-align:center;margin:12px 0 18px;line-height:1.6}
.rc-voucher-box{border:2px dashed var(--q-line-strong);border-radius:12px;padding:28px 16px;
  text-align:center;cursor:pointer;color:var(--q-muted);transition:.15s}
.rc-voucher-box:hover{border-color:var(--accent);background:var(--accent-tint)}
.rc-voucher-box img{max-width:100%;max-height:220px;border-radius:8px;display:block;margin:0 auto}
#rcVoucherRemark{width:100%;padding:10px 13px;border-radius:10px;border:1px solid var(--q-line-strong);
  margin-top:12px;font-family:var(--q-sans);font-size:13px;color:var(--q-txt)}
#rcVoucherRemark:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(32,165,58,.15)}
.rc-done-icon{width:56px;height:56px;border-radius:50%;background:var(--c-green-bg);color:var(--c-green);
  display:grid;place-items:center;margin:0 auto 14px}

@media(max-width:640px){
  .qp-u-container{padding:18px 14px 56px}
  .qp-u-card{padding:18px}
}


/* ============================================================
   layout 遗留玻璃/金棕中和（quantum/layout/main.php 内联 <style> 非 !important）
   覆盖：语言下拉 / 用户头像下拉菜单 / 公告栏 / toast（cssText 已改纯白）
   ============================================================ */
.nav-lang-menu{border:1px solid var(--q-line)!important}
.nav-lang-menu a:hover{background:var(--accent-tint)!important;color:var(--accent-deep)!important}
.nav-lang-menu a.active{color:var(--accent-deep)!important;font-weight:600;background:var(--accent-tint)!important}
.nav-lang-mobile .nav-link{border:1px solid var(--q-line-strong)!important}
.nav-lang-mobile .nav-link.active{border-color:var(--accent)!important;color:var(--accent-deep)!important}
.nav-lang-btn{border:1px solid var(--q-line-strong)!important}
.nav-user .avatar:hover{box-shadow:0 6px 18px -4px rgba(32,165,58,.45)!important}
.nav-user .avatar:focus-visible{outline:2px solid var(--accent)!important}
.nav-user-menu{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  border:1px solid var(--q-line)!important;box-shadow:0 18px 44px rgba(17,24,39,.13)!important}
.nav-user-menu a:hover{background:var(--accent-tint)!important;color:var(--accent-deep)!important}
.nav-user-logout:hover{background:var(--u-red-bg)!important}
.ticker-bar{background:linear-gradient(90deg,#188f30,#20a53a)!important}
.ticker-bar>i{background:#d7f3e0!important}


/* ===== 推介看板 qp-u-aff 家族（专有控件；通用卡/钮/表单/表/提示复用 real qp-u） ===== */
.qp-u-aff-link{display:flex;gap:10px;margin-top:10px}
.qp-u-aff-link input{flex:1;background:var(--q-surface2);border:1px solid var(--q-line-strong);border-radius:10px;
  padding:10px 13px;font-size:13px;color:var(--q-txt)}
.qp-u-aff-link input:focus{border-color:var(--accent);box-shadow:0 0 0 3px rgba(32,165,58,.15)}
.qp-u-aff-row{display:grid;grid-template-columns:1fr 1fr;gap:14px;align-items:end}
.qp-u-aff-stats{display:grid;grid-template-columns:repeat(4,1fr);gap:14px;margin-bottom:20px}
.qp-u-aff-stat{background:#fff;border:1px solid var(--q-line);border-radius:14px;padding:18px;
  box-shadow:0 14px 34px rgba(17,24,39,.05)}
.qp-u-aff-stat .v{font-size:26px;font-weight:800;color:var(--accent-deep);font-variant-numeric:tabular-nums}
.qp-u-aff-stat .k{font-size:13px;color:var(--q-muted);margin-top:2px}
.qp-u-aff-amt{font-weight:700;color:var(--accent-deep)}
.qp-u-card.qp-u-aff-mode{background:var(--accent-tint);border-color:rgba(32,165,58,.25)}
/* 消息胶囊（affToast 动态生成 .qp-u-aff-toast/.ico/.tt/.x，关键帧沿用下方 @keyframes） */
.qp-u-aff-toast{pointer-events:auto;display:flex;gap:9px;align-items:center;background:#fff;border:1px solid var(--q-line);
  border-radius:12px;padding:11px 14px;box-shadow:0 18px 44px rgba(17,24,39,.16);max-width:min(380px,calc(100vw - 48px));
  animation:affToastPop .2s ease-out both}
.qp-u-aff-toast.out{animation:affToastOut .18s ease-in both}
.qp-u-aff-toast .ico{flex-shrink:0;display:flex;align-items:center;justify-content:center}
.qp-u-aff-toast .tt{font-size:13.5px;font-weight:500;color:var(--q-txt);line-height:1.5}
.qp-u-aff-toast .x{margin-left:auto;flex-shrink:0;width:24px;height:24px;border:none;background:transparent;cursor:pointer;
  color:var(--q-muted);border-radius:8px;display:flex;align-items:center;justify-content:center}
.qp-u-aff-toast .x:hover{opacity:1;background:var(--q-surface2)}
/* 关键帧（原 aff 块内的 affToastPop/affToastOut，随块迁移，避免删块丢失） */
@keyframes affToastPop{from{opacity:0;transform:scale(.9) translateY(10px)}to{opacity:1;transform:scale(1) translateY(0)}}
@keyframes affToastOut{to{opacity:0;transform:scale(.94) translateY(6px)}}

.aff-l-wrap{max-width:1080px;margin:0 auto;
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI","PingFang SC","Microsoft YaHei",sans-serif}
.aff-l-hero{position:relative;overflow:hidden;background:linear-gradient(135deg,#0d2818 0%,#14532d 45%,#1a7a42 100%);
  color:#fff;border-radius:18px;padding:56px 40px;margin-bottom:28px}
.aff-l-hero::after{content:"";position:absolute;inset:0;
  background:radial-gradient(600px 300px at 82% -10%,rgba(32,165,58,.28),transparent 60%),
             radial-gradient(500px 280px at 0% 120%,rgba(32,165,58,.18),transparent 60%)}
.aff-l-hero>*{position:relative;z-index:1}
.aff-l-badge{display:inline-flex;align-items:center;gap:8px;font-size:13px;padding:6px 14px;border-radius:999px;
  background:rgba(255,255,255,.12);border:1px solid rgba(255,255,255,.22);margin-bottom:16px}
.aff-l-hero h1{font-size:40px;line-height:1.18;font-weight:800;letter-spacing:-.5px;margin:0}
.aff-l-hero p{margin-top:14px;font-size:17px;color:rgba(255,255,255,.82);max-width:560px}
.aff-l-cta{margin-top:26px;display:flex;gap:14px;flex-wrap:wrap}
.aff-l-btn{display:inline-flex;align-items:center;gap:6px;padding:12px 22px;border-radius:12px;font-weight:700;
  font-size:15px;border:none;cursor:pointer;text-decoration:none}
.aff-l-btn.gold{background:linear-gradient(135deg,#34c759,#1a9e42);color:#fff;box-shadow:0 8px 20px rgba(26,158,66,.4)}
.aff-l-btn.gold:hover{filter:brightness(1.07)}
.aff-l-btn.line{background:rgba(255,255,255,.1);color:#fff;border:1px solid rgba(255,255,255,.3)}
.aff-l-btn.line:hover{background:rgba(255,255,255,.18)}
.aff-l-sec{margin:36px 0}
.aff-l-ey{font-size:13px;font-weight:700;letter-spacing:2px;color:var(--accent-deep);text-align:center}
.aff-l-sec h2{font-size:28px;font-weight:800;text-align:center;margin:8px 0 24px;color:var(--q-txt)}
.aff-l-steps{display:grid;grid-template-columns:repeat(3,1fr);gap:18px}
.aff-l-step{background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:24px;
  box-shadow:0 14px 34px rgba(17,24,39,.05)}
.aff-l-step .n{width:40px;height:40px;border-radius:11px;background:var(--q-grad);color:#fff;
  display:grid;place-items:center;font-weight:800;margin-bottom:14px}
.aff-l-step h3{font-size:18px;margin:0 0 6px;color:var(--q-txt)}
.aff-l-step p{color:var(--q-muted);font-size:14px;margin:0;line-height:1.7}
.aff-l-rules{display:grid;grid-template-columns:repeat(4,1fr);gap:16px}
.aff-l-rule{background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:24px;text-align:center;
  box-shadow:0 14px 34px rgba(17,24,39,.05)}
.aff-l-rule .v{font-size:30px;font-weight:800;color:var(--accent-deep)}
.aff-l-rule .k{color:var(--q-muted);font-size:14px;margin-top:4px}
.aff-l-faq{max-width:760px;margin:0 auto}
.aff-l-qa{background:#fff;border:1px solid var(--q-line);border-radius:12px;padding:18px 20px;margin-bottom:12px;
  box-shadow:0 14px 34px rgba(17,24,39,.05)}
.aff-l-qa h4{font-size:16px;margin:0 0 6px;color:var(--q-txt)}
.aff-l-qa p{color:var(--q-muted);font-size:14px;margin:0;line-height:1.7}
@media(max-width:760px){.aff-l-hero{padding:40px 22px}.aff-l-hero h1{font-size:30px}.aff-l-steps,.aff-l-rules{grid-template-columns:1fr 1fr}}

/* ── 面包屑 ── */
.qp-u-crumbs{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--q-muted);margin-bottom:20px}
.qp-u-crumbs a{color:var(--accent-deep);font-weight:600}
.qp-u-crumbs a:hover{text-decoration:underline}
.qp-u-crumbs svg{width:14px;height:14px;opacity:.5}

/* ── 页头（仪表盘） ── */
.qp-u-head{background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:28px 32px;margin-bottom:24px;
  box-shadow:0 18px 44px rgba(17,24,39,.06);position:relative;overflow:hidden}
.qp-u-head::before{content:"";position:absolute;inset:0;background:linear-gradient(120deg,rgba(32,165,58,.07),transparent 55%);pointer-events:none}
.qp-u-head-inner{position:relative;display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.qp-u-avatar{width:56px;height:56px;border-radius:16px;flex-shrink:0;display:flex;align-items:center;justify-content:center;
  background:var(--q-grad);color:#fff;font-size:24px;font-weight:700;box-shadow:var(--q-glow)}
.qp-u-head-info{flex:1;min-width:0}
.qp-u-head-title{font-size:clamp(20px,3vw,26px);font-weight:700;color:var(--q-txt);margin:0 0 4px;line-height:1.3}
.qp-u-head-sub{font-size:14px;color:var(--q-muted);margin:0}
.qp-u-head-sub b{color:var(--accent-deep)}
.qp-u-head-actions{position:relative;display:flex;gap:10px;flex-wrap:wrap;margin-top:18px}

/* ── 按钮 ── */
.qp-u-btn{display:inline-flex;align-items:center;gap:8px;padding:11px 22px;border-radius:12px;font-size:14px;font-weight:600;
  cursor:pointer;transition:all .22s;border:1px solid transparent;background:none;font-family:var(--q-sans)}
.qp-u-btn svg{width:16px;height:16px;flex-shrink:0}
.qp-u-btn.primary{background:var(--q-grad);color:#fff;box-shadow:0 8px 20px -8px rgba(32,165,58,.45)}
.qp-u-btn.primary:hover{transform:translateY(-2px);box-shadow:0 12px 26px -8px rgba(32,165,58,.5)}
.qp-u-btn.primary:disabled{opacity:.6;cursor:not-allowed;transform:none}
.qp-u-btn.ghost{background:#fff;border-color:var(--q-line-strong);color:var(--q-txt)}
.qp-u-btn.ghost:hover{border-color:var(--accent);color:var(--accent-deep);background:var(--accent-tint)}
.qp-u-btn.danger{background:var(--u-red);color:#fff}
.qp-u-btn.danger:hover{filter:brightness(1.08)}
.qp-u-btn.sm{padding:7px 15px;font-size:12px;border-radius:9px}
.qp-u-btn .spinner{width:15px;height:15px;border:2px solid rgba(255,255,255,.35);border-top-color:#fff;border-radius:50%;
  animation:qp-u-spin .6s linear infinite;display:none;flex-shrink:0}
.qp-u-btn.loading .spinner{display:block}
.qp-u-btn.loading span{display:none}
@keyframes qp-u-spin{to{transform:rotate(360deg)}}

/* ── 统计卡 ── */
.qp-u-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px;margin-bottom:24px}
.qp-u-stat{display:block;background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:20px;
  box-shadow:0 14px 34px rgba(17,24,39,.05);transition:all .22s;position:relative}
.qp-u-stat:hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 20px 44px rgba(17,24,39,.09)}
.qp-u-stat-icon{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;margin-bottom:14px}
.qp-u-stat-icon svg{width:20px;height:20px}
.qp-u-stat-num{font-size:30px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.qp-u-stat-label{font-size:13px;color:var(--q-muted);margin-top:6px;font-weight:500}
.qp-u-stat-link{font-size:12px;color:var(--accent-deep);margin-top:10px;display:inline-flex;align-items:center;gap:4px;font-weight:600}
.qp-u-stat-link svg{width:12px;height:12px}
.qp-u-stat:hover .qp-u-stat-link svg{transform:translateX(2px)}

/* ── 告警条 ── */
.qp-u-alert{display:flex;align-items:center;gap:12px;padding:14px 18px;border-radius:14px;margin-bottom:14px;font-size:14px;border:1px solid}
.qp-u-alert svg{width:18px;height:18px;flex-shrink:0}
.qp-u-alert-text{flex:1;min-width:0}
.qp-u-alert-link{font-weight:600;font-size:13px;white-space:nowrap}
.qp-u-alert-link:hover{text-decoration:underline}
.qp-u-alert-close{background:none;border:none;cursor:pointer;font-size:18px;line-height:1;opacity:.5;padding:4px}
.qp-u-alert-close:hover{opacity:1}
.qp-u-alert.err{background:var(--u-red-bg);border-color:rgba(220,38,38,.25);color:var(--u-red)}
.qp-u-alert.err .qp-u-alert-link{color:var(--u-red)}
.qp-u-alert.warn{background:var(--u-orange-bg);border-color:rgba(234,134,0,.28);color:var(--u-orange)}
.qp-u-alert.warn .qp-u-alert-link{color:var(--u-orange)}
.qp-u-alert.ok{background:var(--u-green-bg);border-color:rgba(22,163,74,.25);color:var(--u-green)}
.qp-u-alert.ok .qp-u-alert-link{color:var(--u-green)}
.qp-u-alert.info{background:var(--u-blue-bg);border-color:rgba(37,99,235,.22);color:var(--u-blue)}
.qp-u-alert.info .qp-u-alert-link{color:var(--u-blue)}
.qp-u-alert b{font-weight:700}

/* ── 面板 ── */
.qp-u-panel{background:#fff;border:1px solid var(--q-line);border-radius:16px;
  box-shadow:0 14px 34px rgba(17,24,39,.05);overflow:hidden}
.qp-u-panel-head{display:flex;align-items:center;justify-content:space-between;gap:12px;
  padding:18px 22px;border-bottom:1px solid var(--q-line)}
.qp-u-panel-title{display:flex;align-items:center;gap:9px;font-size:15px;font-weight:700;color:var(--q-txt);margin:0}
.qp-u-panel-title svg{width:16px;height:16px;color:var(--accent-deep)}
.qp-u-panel-title .count{color:var(--q-muted);font-weight:500;font-size:13px}
.qp-u-panel-more{display:inline-flex;align-items:center;gap:4px;font-size:13px;color:var(--accent-deep);font-weight:600}
.qp-u-panel-more:hover{text-decoration:underline}
.qp-u-panel-more svg{width:12px;height:12px}
.qp-u-grid2{display:grid;grid-template-columns:1fr 1fr;gap:18px}

/* ── 列表行（仪表盘主机/订单） ── */
.qp-u-row{display:flex;align-items:center;gap:14px;padding:15px 22px;border-bottom:1px solid var(--q-line);transition:background .18s;cursor:pointer}
.qp-u-row:last-child{border-bottom:none}
.qp-u-row:hover{background:var(--q-surface2)}
.qp-u-row-dot{width:9px;height:9px;border-radius:50%;flex-shrink:0}
.qp-u-row-info{flex:1;min-width:0}
.qp-u-row-name{font-size:14px;font-weight:600;color:var(--q-txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qp-u-row-meta{font-size:12px;color:var(--q-muted);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qp-u-row-right{display:flex;align-items:center;gap:10px;flex-shrink:0}
.qp-u-row-days{font-size:11px;font-weight:700;padding:3px 10px;border-radius:99px;background:var(--u-red-bg);color:var(--u-red)}
.qp-u-row-amount{font-size:15px;font-weight:800;color:var(--q-txt);font-variant-numeric:tabular-nums}
.qp-u-row-pay{font-size:12px;font-weight:700;color:var(--accent-deep);padding:5px 13px;border-radius:8px;background:var(--accent-tint);border:1px solid rgba(32,165,58,.25)}
.qp-u-row-pay:hover{background:var(--accent);color:#fff}
.qp-u-row-refund{font-size:12px;font-weight:600;color:var(--q-muted);background:none;border:none;cursor:pointer;padding:5px 8px;border-radius:8px}
.qp-u-row-refund:hover{color:var(--u-red);background:var(--u-red-bg)}
.qp-u-view-all{display:block;text-align:center;padding:13px;font-size:13px;font-weight:600;color:var(--accent-deep);border-top:1px solid var(--q-line)}
.qp-u-view-all:hover{background:var(--accent-tint)}

/* ── 徽章 ── */
.qp-u-badge{display:inline-flex;align-items:center;gap:6px;padding:4px 12px;border-radius:99px;font-size:12px;font-weight:600;white-space:nowrap}
.qp-u-badge .dot{width:6px;height:6px;border-radius:50%;background:currentColor;flex-shrink:0}
.qp-u-badge.green{background:var(--u-green-bg);color:var(--u-green);border:1px solid rgba(22,163,74,.22)}
.qp-u-badge.yellow{background:var(--u-yellow-bg);color:var(--u-yellow);border:1px solid rgba(202,138,4,.22)}
.qp-u-badge.orange{background:var(--u-orange-bg);color:var(--u-orange);border:1px solid rgba(234,134,0,.25)}
.qp-u-badge.red{background:var(--u-red-bg);color:var(--u-red);border:1px solid rgba(220,38,38,.22)}
.qp-u-badge.blue{background:var(--u-blue-bg);color:var(--u-blue);border:1px solid rgba(37,99,235,.22)}
.qp-u-badge.gray{background:var(--u-gray-bg);color:var(--u-gray);border:1px solid rgba(107,114,128,.2)}

/* ── 空态 ── */
.qp-u-empty{background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:56px 32px;text-align:center;
  box-shadow:0 14px 34px rgba(17,24,39,.05)}
.qp-u-empty-icon{width:76px;height:76px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  margin:0 auto 18px;background:var(--accent-tint);border:1px solid rgba(32,165,58,.18)}
.qp-u-empty-icon svg{width:34px;height:34px;color:var(--accent-deep)}
.qp-u-empty-title{font-size:18px;font-weight:700;color:var(--q-txt);margin:0 0 8px}
.qp-u-empty-desc{font-size:14px;color:var(--q-muted);margin:0 0 22px}

/* ── 筛选 tabs ── */
.qp-u-tabs{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:20px}
.qp-u-tab{padding:8px 17px;border-radius:10px;font-size:13px;font-weight:600;background:#fff;
  border:1px solid var(--q-line-strong);color:var(--q-muted);cursor:pointer;transition:all .2s;font-family:var(--q-sans)}
.qp-u-tab:hover{color:var(--accent-deep);border-color:var(--accent);background:var(--accent-tint)}
.qp-u-tab.active{background:var(--q-grad);color:#fff;border-color:transparent;box-shadow:0 4px 12px -4px rgba(32,165,58,.45)}

/* ── 主机卡（hosts 页） ── */
.qp-u-hostgrid{display:grid;grid-template-columns:repeat(auto-fill,minmax(330px,1fr));gap:18px}
.qp-u-hostcard{background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:22px;
  box-shadow:0 14px 34px rgba(17,24,39,.05);transition:all .25s;display:flex;flex-direction:column;gap:14px}
.qp-u-hostcard:hover{transform:translateY(-3px);box-shadow:0 22px 48px rgba(17,24,39,.1);border-color:var(--q-line-strong)}
.qp-u-hostcard-top{display:flex;align-items:flex-start;justify-content:space-between;gap:12px}
.qp-u-host-info{flex:1;min-width:0}
.qp-u-host-name-row{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.qp-u-host-name{font-size:16px;font-weight:700;color:var(--q-txt);margin:0;line-height:1.4}
.qp-u-host-name a:hover{color:var(--accent-deep)}
.qp-u-host-product{font-size:13px;color:var(--q-muted);margin:4px 0 0}
.qp-u-host-domain{display:flex;align-items:center;gap:7px;font-size:13px;margin-top:8px;min-width:0}
.qp-u-host-domain svg{width:14px;height:14px;color:var(--q-muted);flex-shrink:0}
.qp-u-host-domain a{color:var(--accent-deep);font-weight:500;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qp-u-host-domain a:hover{text-decoration:underline}
.qp-u-copy{background:none;border:none;cursor:pointer;color:var(--q-muted);padding:3px;border-radius:6px;flex-shrink:0;display:inline-flex}
.qp-u-copy:hover{color:var(--accent-deep);background:var(--accent-tint)}
.qp-u-copy svg{width:13px;height:13px}
.qp-u-expire{text-align:right;flex-shrink:0}
.qp-u-expire-label{display:block;font-size:11px;color:var(--q-muted)}
.qp-u-expire-date{display:block;font-size:13px;font-weight:600;color:var(--q-txt);margin-top:2px}
.qp-u-expire-days{display:block;font-size:11px;color:var(--q-muted);margin-top:2px}
.text-red{color:var(--u-red)!important}
.qp-u-progress{height:6px;background:var(--q-surface2);border-radius:99px;overflow:hidden}
.qp-u-progress-fill{height:100%;border-radius:99px;transition:width .4s}
.qp-u-progress-fill.prog-green{background:var(--q-grad)}
.qp-u-progress-fill.prog-yellow{background:linear-gradient(90deg,#f0b429,#e09800)}
.qp-u-progress-fill.prog-red{background:linear-gradient(90deg,#f87171,#dc2626)}
.qp-u-actions{display:flex;gap:8px;flex-wrap:wrap;padding-top:14px;border-top:1px solid var(--q-line);margin-top:auto}
.qp-u-action{display:inline-flex;align-items:center;gap:6px;padding:7px 14px;border-radius:9px;font-size:12px;font-weight:600;
  border:1px solid var(--q-line-strong);background:#fff;color:var(--q-txt);transition:all .2s}
.qp-u-action svg{width:13px;height:13px}
.qp-u-action:hover{border-color:var(--accent);color:var(--accent-deep);background:var(--accent-tint)}
.qp-u-action.renew{border-color:rgba(234,134,0,.35);color:var(--u-orange);background:var(--u-orange-bg)}
.qp-u-action.renew:hover{background:var(--u-orange);color:#fff;border-color:transparent}
.qp-u-action[style*="not-allowed"]{opacity:.55}
.qp-u-host-meta{font-size:12px;color:var(--q-muted)}

/* ── 订单卡（orders 页） ── */
.qp-u-orders{display:flex;flex-direction:column;gap:14px}
.qp-u-order{position:relative;background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:22px 26px;
  box-shadow:0 14px 34px rgba(17,24,39,.05);transition:all .25s;overflow:hidden}
.qp-u-order:hover{transform:translateY(-3px);box-shadow:0 22px 48px rgba(17,24,39,.1)}
.qp-u-order-top{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;margin-bottom:14px}
.qp-u-order-no{font-family:var(--q-mono);font-size:12px;color:var(--q-muted);background:var(--q-surface2);
  padding:4px 12px;border-radius:99px;border:1px solid var(--q-line)}
.qp-u-order-body{display:grid;grid-template-columns:1fr auto;gap:20px;align-items:center}
.qp-u-order-product{font-size:16px;font-weight:600;color:var(--q-txt)}
.qp-u-order-meta{display:flex;align-items:center;gap:16px;flex-wrap:wrap;margin-top:8px}
.qp-u-order-meta-item{display:flex;align-items:center;gap:6px;font-size:13px;color:var(--q-muted)}
.qp-u-order-meta-item svg{width:14px;height:14px}
.qp-u-order-amount{text-align:right}
.qp-u-order-price{font-size:24px;font-weight:800;color:var(--accent-deep);line-height:1;font-variant-numeric:tabular-nums}
.qp-u-order-period{font-size:12px;color:var(--q-muted);margin-top:5px}
.qp-u-order-foot{display:flex;align-items:center;justify-content:space-between;gap:12px;flex-wrap:wrap;
  margin-top:16px;padding-top:16px;border-top:1px solid var(--q-line)}
.qp-u-order-time{font-size:12px;color:var(--q-muted)}
.qp-u-order-actions{display:flex;gap:10px;flex-wrap:wrap}
.qp-u-order-btn{display:inline-flex;align-items:center;gap:6px;padding:8px 17px;border-radius:10px;font-size:13px;font-weight:600;transition:all .2s}
.qp-u-order-btn svg{width:14px;height:14px}
.qp-u-order-btn.detail{background:var(--accent-tint);color:var(--accent-deep);border:1px solid rgba(32,165,58,.22)}
.qp-u-order-btn.detail:hover{background:rgba(32,165,58,.2)}
.qp-u-order-btn.pay{background:var(--q-grad);color:#fff;box-shadow:0 4px 12px -4px rgba(32,165,58,.45)}
.qp-u-order-btn.pay:hover{transform:translateY(-1px);box-shadow:0 8px 18px -4px rgba(32,165,58,.5)}
.qp-u-order.hidden{display:none}

/* ── 工单行（tickets 页） ── */
.qp-u-tickets{background:#fff;border:1px solid var(--q-line);border-radius:16px;overflow:hidden;
  box-shadow:0 14px 34px rgba(17,24,39,.05)}
.qp-u-tktrow{display:flex;align-items:flex-start;gap:15px;padding:18px 22px;cursor:pointer;
  border-bottom:1px solid var(--q-line);transition:background .18s}
.qp-u-tktrow:last-child{border-bottom:none}
.qp-u-tktrow:hover{background:var(--q-surface2)}
.qp-u-tktrow:hover .qp-u-tkt-title{color:var(--accent-deep)}
.qp-u-tkt-icon{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;flex-shrink:0;
  background:var(--accent-tint);border:1px solid rgba(32,165,58,.15)}
.qp-u-tkt-icon svg{width:18px;height:18px;color:var(--accent-deep)}
.qp-u-tkt-icon.open{background:var(--u-yellow-bg);border-color:rgba(202,138,4,.2)}
.qp-u-tkt-icon.open svg{color:var(--u-yellow)}
.qp-u-tkt-icon.progress{background:var(--u-blue-bg);border-color:rgba(37,99,235,.18)}
.qp-u-tkt-icon.progress svg{color:var(--u-blue)}
.qp-u-tkt-icon.closed{background:var(--u-gray-bg);border-color:rgba(107,114,128,.15)}
.qp-u-tkt-icon.closed svg{color:var(--u-gray)}
.qp-u-tkt-body{flex:1;min-width:0}
.qp-u-tkt-head{display:flex;align-items:center;gap:10px;flex-wrap:wrap;margin-bottom:7px}
.qp-u-tkt-no{font-size:11px;font-family:var(--q-mono);color:var(--q-muted);background:var(--q-surface2);
  padding:2px 8px;border-radius:6px;border:1px solid var(--q-line)}
.qp-u-tkt-time{font-size:11px;color:var(--q-muted);margin-left:auto}
.qp-u-tkt-title{font-size:15px;font-weight:600;color:var(--q-txt);transition:color .18s}
.qp-u-tkt-preview{font-size:13px;color:var(--q-muted);margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* ── 工单详情 ── */
.qp-u-tk-status{display:flex;align-items:center;gap:12px;margin-bottom:18px;flex-wrap:wrap}
.qp-u-tk-title{font-size:19px;font-weight:700;color:var(--q-txt);margin:0 0 14px;line-height:1.4}
.qp-u-tk-content{font-size:14px;color:var(--q-txt);line-height:1.8;white-space:pre-wrap;padding:18px;
  background:var(--q-surface2);border-radius:14px;border:1px solid var(--q-line)}
.qp-u-tk-time{font-size:12px;color:var(--q-muted);margin-top:12px;display:flex;align-items:center;gap:8px}
.qp-u-tk-time svg{width:14px;height:14px;color:var(--accent-deep)}
.qp-u-replies-head{font-size:15px;font-weight:700;color:var(--q-txt);margin:24px 0 14px;display:flex;align-items:center;gap:10px}
.qp-u-replies-head::before{content:"";width:4px;height:14px;background:var(--q-grad);border-radius:2px}
.qp-u-replies-head .count{font-size:12px;color:var(--q-muted);font-weight:400;background:var(--q-surface2);padding:2px 10px;border-radius:20px}
.qp-u-reply{padding:15px 17px;border-radius:14px;margin-bottom:11px;position:relative}
.qp-u-reply.admin{background:var(--u-blue-bg);border:1px solid rgba(37,99,235,.14)}
.qp-u-reply.admin::before{content:"";position:absolute;top:15px;left:0;width:3px;height:20px;background:var(--u-blue);border-radius:0 2px 2px 0}
.qp-u-reply.user{background:var(--accent-tint);border:1px solid rgba(32,165,58,.14)}
.qp-u-reply.user::before{content:"";position:absolute;top:15px;left:0;width:3px;height:20px;background:var(--accent);border-radius:0 2px 2px 0}
.qp-u-reply-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:9px}
.qp-u-reply-author{font-size:13px;font-weight:600;display:flex;align-items:center;gap:6px}
.qp-u-reply-author.admin{color:var(--u-blue)}
.qp-u-reply-author.admin::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--u-blue)}
.qp-u-reply-author.user{color:var(--accent-deep)}
.qp-u-reply-author.user::before{content:"";width:6px;height:6px;border-radius:50%;background:var(--accent)}
.qp-u-reply-time{font-size:11px;color:var(--q-muted);font-family:var(--q-mono)}
.qp-u-reply-content{font-size:13px;color:var(--q-txt);line-height:1.7;white-space:pre-wrap}

/* ── 弹窗 ── */
.qp-u-overlay{display:none;position:fixed;inset:0;z-index:100;background:rgba(15,20,18,.5);
  align-items:center;justify-content:center;padding:20px;animation:qp-u-fade .28s ease}
@keyframes qp-u-fade{from{opacity:0}to{opacity:1}}
.qp-u-modal{position:relative;background:#fff;border-radius:18px;width:100%;max-width:540px;max-height:85vh;
  overflow:hidden;display:flex;flex-direction:column;box-shadow:0 32px 80px -20px rgba(17,24,39,.35);
  animation:qp-u-pop .35s cubic-bezier(.16,1,.3,1)}
@keyframes qp-u-pop{from{opacity:0;transform:translateY(20px) scale(.97)}to{opacity:1;transform:translateY(0) scale(1)}}
.qp-u-modal-head{display:flex;align-items:center;justify-content:space-between;padding:20px 26px 16px;border-bottom:1px solid var(--q-line)}
.qp-u-modal-title{font-size:18px;font-weight:700;color:var(--q-txt);margin:0;display:flex;align-items:center;gap:10px}
.qp-u-modal-title::before{content:"";width:4px;height:17px;background:var(--q-grad);border-radius:2px}
.qp-u-modal-close{width:34px;height:34px;border-radius:10px;background:var(--q-surface2);border:1px solid var(--q-line);
  font-size:17px;color:var(--q-muted);cursor:pointer;transition:all .2s;display:flex;align-items:center;justify-content:center}
.qp-u-modal-close:hover{background:var(--u-red-bg);border-color:rgba(220,38,38,.22);color:var(--u-red);transform:rotate(90deg)}
.qp-u-modal-body{padding:22px 26px;overflow-y:auto;flex:1}
.qp-u-modal-foot{display:flex;justify-content:flex-end;gap:12px;padding:16px 26px;border-top:1px solid var(--q-line);background:var(--q-surface2)}

/* ── 表单 ── */
.qp-u-form-row{margin-bottom:18px}
.qp-u-form-row label{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--q-txt);margin-bottom:9px}
.qp-u-form-row label::before{content:"";width:3px;height:3px;border-radius:50%;background:var(--accent);flex-shrink:0}
.qp-u-form-row label .hint{font-size:11px;color:var(--q-muted);font-weight:400}
.qp-u-input{width:100%;font-family:var(--q-sans);font-size:13px;color:var(--q-txt);background:#fff;
  border:1px solid var(--q-line-strong);border-radius:12px;padding:11px 15px;outline:none;transition:all .22s;box-sizing:border-box}
.qp-u-input:focus{border-color:var(--accent);box-shadow:0 0 0 4px rgba(32,165,58,.1)}
.qp-u-input::placeholder{color:var(--q-muted)}
.qp-u-input[readonly]{background:var(--q-surface2);color:var(--q-muted);border-style:dashed}
.qp-u-input[type=file]{display:none}
textarea.qp-u-input{resize:vertical;min-height:100px;line-height:1.7}
select.qp-u-input{cursor:pointer;appearance:none;padding-right:34px;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%2320a53a' stroke-width='2'%3E%3Cpath d='M6 9l6 6 6-6'/%3E%3C/svg%3E");
  background-position:calc(100% - 13px) center;background-size:13px;background-repeat:no-repeat}
.qp-u-form-grid{display:grid;grid-template-columns:1fr 1fr;gap:14px}

/* ── 附件上传 ── */
.qp-u-upload{border:2px dashed var(--q-line-strong);border-radius:14px;padding:26px 18px;text-align:center;cursor:pointer;
  transition:all .25s;background:var(--q-surface2);position:relative}
.qp-u-upload:hover{border-color:var(--accent);background:var(--accent-tint)}
.qp-u-upload.dragover{border-color:var(--accent);background:var(--accent-tint);transform:scale(1.01)}
.qp-u-upload>svg{color:var(--accent-deep);margin-bottom:9px}
.qp-u-upload-text{font-size:13px;color:var(--q-txt);font-weight:500}
.qp-u-upload-hint{font-size:11px;color:var(--q-muted);margin-top:5px}
.qp-u-file-list{margin-top:13px;display:flex;flex-direction:column;gap:8px;text-align:left}
.qp-u-file-item{display:flex;align-items:center;gap:10px;padding:9px 13px;border-radius:10px;background:#fff;
  border:1px solid var(--q-line);font-size:12px}
.qp-u-file-item svg{width:15px;height:15px;color:var(--accent-deep);flex-shrink:0}
.qp-u-file-name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:500}
.qp-u-file-size{color:var(--q-muted);flex-shrink:0;font-family:var(--q-mono)}
.qp-u-file-remove{color:var(--u-red);background:none;border:none;cursor:pointer;font-size:11px;font-weight:600;padding:4px 8px;border-radius:6px}
.qp-u-file-remove:hover{background:var(--u-red-bg)}

/* ── 分页 ── */
.qp-u-pager{display:flex;justify-content:center;align-items:center;gap:10px;margin-top:22px;flex-wrap:wrap}
.qp-u-pager button,.qp-u-pager a,.qp-u-pager .page-btn{padding:8px 17px;border-radius:10px;font-size:13px;font-weight:600;background:#fff;
  border:1px solid var(--q-line-strong);color:var(--q-muted);cursor:pointer;transition:all .2s;font-family:var(--q-sans);text-decoration:none}
.qp-u-pager button:hover:not(:disabled),.qp-u-pager a:hover,.qp-u-pager .page-btn:hover{color:var(--accent-deep);border-color:var(--accent);background:var(--accent-tint)}
.qp-u-pager .page-btn.active,.qp-u-pager .page-btn.cur{background:var(--q-grad);color:#fff;border-color:transparent}
.qp-u-pager .page-btn.disabled,.qp-u-pager button:disabled{opacity:.4;cursor:not-allowed}
.qp-u-pager .info,.qp-u-pager .page-info{font-size:12px;color:var(--q-muted);font-variant-numeric:tabular-nums}

/* ── 订单时间线 ── */
.qp-u-timeline{position:relative;padding-left:44px;margin-bottom:28px}
.qp-u-timeline::before{content:"";position:absolute;left:16px;top:8px;bottom:8px;width:2px;background:var(--q-line);border-radius:2px}
.qp-u-step{position:relative;padding-bottom:24px}
.qp-u-step:last-child{padding-bottom:0}
.qp-u-step-dot{position:absolute;left:-44px;top:2px;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;z-index:2;background:#fff;border:2px solid var(--q-line-strong)}
.qp-u-step-dot svg{width:16px;height:16px;color:var(--q-muted)}
.qp-u-step-dot.green{background:var(--q-grad);border-color:transparent;box-shadow:0 4px 12px rgba(32,165,58,.3)}
.qp-u-step-dot.green svg{color:#fff}
.qp-u-step-dot.blue{background:linear-gradient(135deg,#3b82f6,#2563eb);border-color:transparent;box-shadow:0 4px 12px rgba(37,99,235,.3)}
.qp-u-step-dot.blue svg{color:#fff}
.qp-u-step-dot.red{background:linear-gradient(135deg,#f87171,#dc2626);border-color:transparent;box-shadow:0 4px 12px rgba(220,38,38,.28)}
.qp-u-step-dot.red svg{color:#fff}
.qp-u-step-dot .pulse{animation:qp-u-blink 1.6s ease-in-out infinite}
@keyframes qp-u-blink{0%,100%{opacity:1}50%{opacity:.45}}
.qp-u-step-dot .hollow{width:11px;height:11px;border-radius:50%;background:var(--q-line-strong)}
.qp-u-step-content{background:#fff;border:1px solid var(--q-line);border-radius:14px;padding:18px 22px;
  box-shadow:0 10px 26px rgba(17,24,39,.04)}
.qp-u-step-title{font-size:15px;font-weight:700;color:var(--q-txt);margin:0 0 6px}
.qp-u-step-desc{font-size:13.5px;color:var(--q-muted);margin:0 0 6px;line-height:1.6}
.qp-u-step-desc.err{color:var(--u-red)}
.qp-u-step-desc.info{color:var(--u-blue)}
.qp-u-step-time{font-size:12px;color:var(--q-muted);margin:0}
.qp-u-step-time.err{color:var(--u-red)}
.qp-u-step-link{display:inline-flex;align-items:center;gap:6px;font-size:13px;font-weight:600;color:var(--accent-deep);
  text-decoration:none;margin-top:10px;padding:6px 14px;border-radius:99px;background:var(--accent-tint);
  border:1px solid rgba(32,165,58,.22);transition:all .2s}
.qp-u-step-link:hover{background:rgba(32,165,58,.18);transform:translateY(-1px)}
.qp-u-step-link svg{width:13px;height:13px}

/* ── 信息卡（订单详情） ── */
.qp-u-cards{display:grid;grid-template-columns:repeat(auto-fit,minmax(300px,1fr));gap:18px;margin-bottom:28px}
.qp-u-card{background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:24px;
  box-shadow:0 14px 34px rgba(17,24,39,.05);transition:all .25s}
.qp-u-card:hover{transform:translateY(-3px);box-shadow:0 20px 44px rgba(17,24,39,.09)}
.qp-u-card-head{display:flex;align-items:center;gap:12px;margin-bottom:18px;padding-bottom:15px;border-bottom:1px solid var(--q-line)}
.qp-u-card-icon{width:42px;height:42px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  background:var(--q-grad);box-shadow:0 8px 18px -6px rgba(32,165,58,.4);flex-shrink:0}
.qp-u-card-icon svg{width:21px;height:21px;color:#fff}
.qp-u-card-title{font-size:16px;font-weight:700;color:var(--q-txt);margin:0}
.qp-u-card-body{display:flex;flex-direction:column;gap:13px}
.qp-u-card-row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:6px 0;border-bottom:1px solid var(--q-line)}
.qp-u-card-row:last-child{border-bottom:none}
.qp-u-card-label{font-size:13px;color:var(--q-muted);font-weight:500;flex-shrink:0}
.qp-u-card-value{font-size:14px;font-weight:600;color:var(--q-txt);text-align:right}
.qp-u-card-value.mono{font-family:var(--q-mono);font-size:13px}
.qp-u-card-value.amount{font-size:24px;font-weight:800;color:var(--accent-deep);font-variant-numeric:tabular-nums}

/* ── 产品规格格 ── */
.qp-u-specs{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;margin-top:14px}
.qp-u-spec{background:var(--q-surface2);border:1px solid var(--q-line);border-radius:12px;padding:14px;text-align:center;transition:all .2s}
.qp-u-spec:hover{background:var(--accent-tint);border-color:rgba(32,165,58,.25)}
.qp-u-spec-label{font-size:11px;color:var(--q-muted);font-weight:600;letter-spacing:.5px;margin-bottom:5px}
.qp-u-spec-value{font-size:17px;font-weight:700;color:var(--q-txt)}

/* ── 返回链接 ── */
.qp-u-back{display:inline-flex;align-items:center;gap:6px;margin-bottom:20px;font-size:14px;color:var(--q-muted);transition:color .2s}
.qp-u-back:hover{color:var(--accent-deep)}
.qp-u-back svg{width:16px;height:16px}

/* ── 瘦英雄区（列表页：标题 + 副题 + 右侧计数） ── */
.qp-u-hero{background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:30px 32px;margin-bottom:26px;
  box-shadow:0 18px 44px rgba(17,24,39,.06);position:relative;overflow:hidden}
.qp-u-hero::before{content:"";position:absolute;inset:0;background:linear-gradient(120deg,rgba(32,165,58,.07),transparent 55%);pointer-events:none}
.qp-u-hero-top{position:relative;display:flex;align-items:flex-end;justify-content:space-between;flex-wrap:wrap;gap:14px}
.qp-u-hero-title{font-size:clamp(22px,3vw,28px);font-weight:700;color:var(--q-txt);margin:0 0 6px;line-height:1.3}
.qp-u-hero-sub{font-size:14px;color:var(--q-muted);margin:0}
.qp-u-hero-total{font-size:13px;font-weight:600;color:var(--accent-deep);background:var(--accent-tint);
  border:1px solid rgba(32,165,58,.2);padding:7px 16px;border-radius:99px;white-space:nowrap}

/* ── 操作卡栅格（余额页） ── */
.qp-u-acts{display:grid;grid-template-columns:repeat(auto-fit,minmax(220px,1fr));gap:16px;margin-bottom:30px}
.qp-u-act{display:flex;align-items:center;gap:16px;padding:20px 22px;border-radius:16px;background:#fff;
  border:1px solid var(--q-line);box-shadow:0 14px 34px rgba(17,24,39,.05);transition:all .25s}
.qp-u-act:hover{transform:translateY(-3px);border-color:var(--accent);box-shadow:0 22px 48px rgba(17,24,39,.1)}
.qp-u-act-icon{width:48px;height:48px;border-radius:14px;display:flex;align-items:center;justify-content:center;flex-shrink:0}
.qp-u-act-icon svg{width:23px;height:23px}
.qp-u-act-icon.recharge{background:var(--accent-tint);border:1px solid rgba(32,165,58,.2)}
.qp-u-act-icon.recharge svg{color:var(--accent-deep)}
.qp-u-act-icon.logs{background:var(--u-blue-bg);border:1px solid rgba(37,99,235,.18)}
.qp-u-act-icon.logs svg{color:var(--u-blue)}
.qp-u-act-icon.orders{background:var(--u-green-bg);border:1px solid rgba(22,163,74,.2)}
.qp-u-act-icon.orders svg{color:var(--u-green)}
.qp-u-act-text{flex:1;min-width:0}
.qp-u-act-title{font-size:15px;font-weight:600;color:var(--q-txt)}
.qp-u-act-desc{font-size:12px;color:var(--q-muted);margin-top:3px}

/* ── 余额记录行 ── */
.qp-u-logs{display:flex;flex-direction:column;gap:12px}
.qp-u-log{display:flex;align-items:center;gap:16px;padding:16px 20px;border-radius:14px;background:#fff;
  border:1px solid var(--q-line);box-shadow:0 10px 26px rgba(17,24,39,.04);transition:all .22s}
.qp-u-log:hover{transform:translateY(-2px);box-shadow:0 16px 36px rgba(17,24,39,.08)}
.qp-u-log-icon{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;
  flex-shrink:0;font-size:18px;font-weight:800}
.qp-u-log-icon.plus{background:var(--u-green-bg);border:1px solid rgba(22,163,74,.2);color:var(--u-green)}
.qp-u-log-icon.minus{background:var(--u-red-bg);border:1px solid rgba(220,38,38,.2);color:var(--u-red)}
.qp-u-log-info{flex:1;min-width:0}
.qp-u-log-top{display:flex;align-items:center;gap:10px;flex-wrap:wrap}
.qp-u-log-type{font-size:12px;font-weight:700;padding:3px 10px;border-radius:7px;background:var(--q-surface2);
  border:1px solid var(--q-line);color:var(--q-muted);white-space:nowrap}
.qp-u-log-type.recharge{background:var(--u-green-bg);border-color:rgba(22,163,74,.22);color:var(--u-green)}
.qp-u-log-type.deduct{background:var(--u-red-bg);border-color:rgba(220,38,38,.22);color:var(--u-red)}
.qp-u-log-type.refund{background:var(--u-blue-bg);border-color:rgba(37,99,235,.2);color:var(--u-blue)}
.qp-u-log-type.admin_adjust{background:var(--u-yellow-bg);border-color:rgba(202,138,4,.22);color:var(--u-yellow)}
.qp-u-log-remark{font-size:14px;font-weight:600;color:var(--q-txt);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.qp-u-log-meta{display:flex;align-items:center;gap:14px;flex-wrap:wrap;margin-top:5px;font-size:12px;color:var(--q-muted)}
.qp-u-log-meta span{display:inline-flex;align-items:center;gap:5px}
.qp-u-log-meta svg{width:13px;height:13px;opacity:.7}
.qp-u-log-amount{text-align:right;flex-shrink:0}
.qp-u-log-amount .val{font-size:18px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.qp-u-log-amount .val.plus{color:var(--u-green)}
.qp-u-log-amount .val.minus{color:var(--u-red)}
.qp-u-log-amount .bal{font-size:11px;color:var(--q-muted);margin-top:4px}

/* ── 充值金额选择 ── */
.qp-u-amts{display:grid;grid-template-columns:repeat(3,1fr);gap:12px;margin-bottom:20px}
.qp-u-amt{padding:15px;border-radius:14px;background:#fff;border:2px solid var(--q-line);cursor:pointer;
  transition:all .22s;text-align:center;user-select:none}
.qp-u-amt:hover{border-color:var(--accent);background:var(--accent-tint)}
.qp-u-amt.active{border-color:var(--accent);background:var(--accent-tint);box-shadow:0 0 0 3px rgba(32,165,58,.12)}
.qp-u-amt-val{font-size:23px;font-weight:800;color:var(--accent-deep);line-height:1;font-variant-numeric:tabular-nums}
.qp-u-amt-label{font-size:12px;color:var(--q-muted);margin-top:5px}
.qp-u-custom{display:flex;align-items:center;gap:10px;margin-bottom:22px}
.qp-u-custom-prefix{font-size:24px;font-weight:800;color:var(--accent-deep);flex-shrink:0}
.qp-u-custom .qp-u-input{flex:1;font-size:17px;font-weight:600;padding:13px 16px}

/* ── 支付方式 ── */
.qp-u-pays{display:flex;flex-direction:column;gap:12px;margin-bottom:24px}
.qp-u-pay{display:flex;align-items:center;gap:14px;padding:15px 19px;border-radius:14px;background:#fff;
  border:2px solid var(--q-line);cursor:pointer;transition:all .22s;user-select:none}
.qp-u-pay:hover{border-color:var(--accent)}
.qp-u-pay.active{border-color:var(--accent);background:var(--accent-tint);box-shadow:0 0 0 3px rgba(32,165,58,.12)}
.qp-u-pay-icon{width:40px;height:40px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;font-size:19px}
.qp-u-pay-icon.wechat{background:rgba(7,193,96,.1);border:1px solid rgba(7,193,96,.2)}
.qp-u-pay-icon.alipay{background:rgba(0,160,233,.1);border:1px solid rgba(0,160,233,.2)}
.qp-u-pay-name{font-size:15px;font-weight:600;color:var(--q-txt)}
.qp-u-pay-check{margin-left:auto;width:22px;height:22px;border-radius:50%;border:2px solid var(--q-line-strong);
  display:flex;align-items:center;justify-content:center;transition:all .2s;flex-shrink:0}
.qp-u-pay.active .qp-u-pay-check{border-color:var(--accent);background:var(--accent)}
.qp-u-pay.active .qp-u-pay-check svg{opacity:1}
.qp-u-pay-check svg{width:13px;height:13px;color:#fff;opacity:0;transition:opacity .2s}

/* ── 全宽提交钮 ── */
.qp-u-submit{width:100%;padding:15px;border-radius:14px;font-size:16px;font-weight:700;cursor:pointer;
  transition:all .25s;border:none;background:var(--q-grad);color:#fff;box-shadow:0 8px 22px -8px rgba(32,165,58,.45);font-family:var(--q-sans)}
.qp-u-submit:hover{transform:translateY(-2px);box-shadow:0 12px 28px -8px rgba(32,165,58,.5)}
.qp-u-submit:disabled{opacity:.5;cursor:not-allowed;transform:none;box-shadow:none}

/* ── 消息条 / 提示条 ── */
.qp-u-msg{padding:12px 18px;border-radius:13px;margin-bottom:16px;font-size:14px;font-weight:600;display:none}
.qp-u-msg.success{display:block;background:var(--u-green-bg);color:var(--u-green);border:1px solid rgba(22,163,74,.22)}
.qp-u-msg.error{display:block;background:var(--u-red-bg);color:var(--u-red);border:1px solid rgba(220,38,38,.22)}
.qp-u-tip{display:flex;align-items:flex-start;gap:10px;padding:14px 18px;border-radius:13px;
  background:var(--accent-tint);border:1px solid rgba(32,165,58,.15);margin-top:16px}
.qp-u-tip svg{width:18px;height:18px;color:var(--accent-deep);flex-shrink:0;margin-top:1px}
.qp-u-tip p{margin:0;font-size:13px;color:var(--q-txt);line-height:1.6;opacity:.85}

/* ── 余额 hero 统计带 ── */
.qp-u-hero-stats{position:relative;display:flex;gap:28px;flex-wrap:wrap;margin-top:20px}
.qp-u-hero-stat{text-align:left}
.qp-u-hero-stat-num{font-size:27px;font-weight:800;line-height:1;font-variant-numeric:tabular-nums}
.qp-u-hero-stat-num.gold{color:var(--accent-deep)}
.qp-u-hero-stat-num.green{color:var(--u-green)}
.qp-u-hero-stat-num.red{color:var(--u-red)}
.qp-u-hero-stat-label{font-size:11px;color:var(--q-muted);font-weight:600;letter-spacing:.5px;margin-top:5px}

/* ── 区块标题 ── */
.qp-u-sectitle{font-size:17px;font-weight:700;color:var(--q-txt);margin:0 0 15px;display:flex;align-items:center;gap:8px}
.qp-u-sectitle svg{width:19px;height:19px;color:var(--accent-deep)}

/* ── 列表操作条 ── */
.qp-u-listbar{display:flex;justify-content:flex-end;margin-bottom:20px}

/* ── Toast 挂点 ── */
.qp-u-toast{position:fixed;top:24px;right:24px;z-index:9999;padding:14px 22px;border-radius:14px;color:#fff;
  font-size:13px;font-weight:600;box-shadow:0 12px 32px rgba(0,0,0,.25);transform:translateX(120%);
  transition:transform .4s cubic-bezier(.16,1,.3,1);display:flex;align-items:center;gap:10px}
.qp-u-toast.show{transform:translateX(0)}

/* ── 骨架屏（仪表盘） ── */
.qp-u-sk{display:flex;flex-direction:column;gap:18px}
.qp-u-sk-panel{background:#fff;border:1px solid var(--q-line);border-radius:16px;padding:22px;
  box-shadow:0 14px 34px rgba(17,24,39,.05)}
.qp-u-sk-head{display:flex;align-items:center;gap:16px;margin-bottom:20px}
.qp-u-sk-actions{display:flex;gap:10px;margin-top:20px}
.qp-u-sk-stats{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:14px}
.qp-u-sk-rows{display:flex;flex-direction:column;gap:14px;margin-top:18px}
.qp-u-sk-row{display:flex;align-items:center;gap:12px}

/* ── 响应式 ── */
@media(max-width:860px){
  .qp-u-grid2{grid-template-columns:1fr}
}
@media(max-width:640px){
  .qp-u-container{padding:18px 14px 56px}
  .qp-u-head{padding:22px 20px}
  .qp-u-head-actions .qp-u-btn{flex:1;justify-content:center}
  .qp-u-hero{padding:22px 20px}
  .qp-u-hero-stats{gap:18px}
  .qp-u-hero-stat-num{font-size:22px}
  .qp-u-acts{grid-template-columns:1fr}
  .qp-u-log{flex-wrap:wrap}
  .qp-u-log-amount{text-align:left;margin-top:6px}
  .qp-u-amts{grid-template-columns:repeat(2,1fr)}
  .qp-u-order{padding:18px}
  .qp-u-order-body{grid-template-columns:1fr}
  .qp-u-order-amount{text-align:left}
  .qp-u-order-foot{flex-direction:column;align-items:flex-start}
  .qp-u-order-actions{width:100%}
  .qp-u-order-btn{flex:1;justify-content:center}
  .qp-u-form-grid{grid-template-columns:1fr}
  .qp-u-hostgrid{grid-template-columns:1fr}
  .qp-u-modal{max-width:100%;margin:0 6px;border-radius:16px}
  .qp-u-modal-head{padding:17px 19px 13px}
  .qp-u-modal-body{padding:18px 19px}
  .qp-u-modal-foot{padding:13px 19px}
  .qp-u-tktrow{padding:15px 16px}
}

/* ============================================================
   D4：v3 品牌金工具类 → 量子绿（order_expired / voucher_upload 等全站前台受益）
   v3 的 .bg-primary-600 等是 frost 金棕渐变，量子主题下统一换绿
   ============================================================ */
.bg-primary-500,.bg-primary-600,.bg-primary-700{background:var(--q-grad);color:#fff}
.bg-primary-50{background:var(--accent-tint)}
.hover\:bg-primary-50:hover{background:rgba(32,165,58,.14)}
.hover\:bg-primary-700:hover{background:var(--accent-deep);color:#fff}
.peer:checked ~ .peer-checked\:bg-primary-600{background:var(--q-grad);color:#fff}
.text-primary-500,.text-primary-600,.text-primary-700{color:var(--accent-deep)}
.hover\:text-primary-600:hover{color:var(--accent-deep)}
.border-primary-400,.border-primary-500{border-color:var(--accent)}
.hover\:border-primary-400:hover,.focus\:border-primary-400:focus{border-color:var(--accent)}
.from-primary-500{--tw-gradient-from:var(--accent);--tw-gradient-stops:var(--tw-gradient-from),var(--tw-gradient-to,rgba(32,165,58,0))}
.to-primary-700{--tw-gradient-to:var(--accent-deep)}

/* ============================================================
   D4：支付等待页（pay_waiting，原 2.9KB 内联 frost style 移植量子化）
   全部作用域限定在 .pay-waiting-page 下，避免误伤通用类名
   ============================================================ */
.pay-waiting-page{max-width:500px;margin:0 auto;padding:40px 20px;min-height:60vh;
  display:flex;align-items:center;justify-content:center}
.pay-waiting-card{background:#fff;border:1px solid var(--q-line);border-radius:20px;
  padding:40px;text-align:center;box-shadow:0 8px 32px rgba(40,48,66,.08);width:100%}
.pay-waiting-page .waiting-icon{margin-bottom:24px;color:var(--accent-deep)}
.pay-waiting-page .waiting-icon svg{animation:spin 2s linear infinite}
.pay-waiting-page .waiting-title{font-size:24px;font-weight:700;color:var(--ink);margin:0 0 8px}
.pay-waiting-page .waiting-desc{font-size:14px;color:var(--ink-faint);margin:0 0 32px}
.pay-waiting-page .waiting-info{background:var(--q-surface2);border-radius:12px;
  padding:20px;margin-bottom:24px;text-align:left}
.pay-waiting-page .info-item{display:flex;justify-content:space-between;align-items:center;padding:8px 0}
.pay-waiting-page .info-item:not(:last-child){border-bottom:1px solid var(--q-line)}
.pay-waiting-page .info-label{font-size:13px;color:var(--ink-faint)}
.pay-waiting-page .info-value{font-size:14px;font-weight:600;color:var(--ink)}
.pay-waiting-page .info-value.mono{font-family:var(--q-mono,monospace)}
.pay-waiting-page .info-value.price{color:var(--accent-deep);font-size:16px}
.pay-waiting-page .waiting-progress{margin-bottom:24px}
.pay-waiting-page .progress-bar{height:6px;background:var(--q-surface2);border-radius:3px;
  overflow:hidden;margin-bottom:8px}
.pay-waiting-page .progress-fill{height:100%;background:var(--q-grad);border-radius:3px;
  width:0%;transition:width 1s linear}
.pay-waiting-page .progress-text{font-size:12px;color:var(--ink-faint)}
.pay-waiting-page .waiting-actions{display:flex;gap:12px;justify-content:center;margin-bottom:24px}
.pay-waiting-page .btn-primary{padding:12px 24px;background:var(--q-grad);color:#fff;border:none;
  border-radius:12px;font-size:14px;font-weight:600;cursor:pointer;transition:all .2s}
.pay-waiting-page .btn-primary:hover{transform:translateY(-2px);box-shadow:0 4px 12px rgba(32,165,58,.3)}
.pay-waiting-page .btn-ghost{padding:12px 24px;background:#fff;color:var(--ink);
  border:2px solid var(--q-line-strong);border-radius:12px;font-size:14px;font-weight:600;
  text-decoration:none;transition:all .2s}
.pay-waiting-page .btn-ghost:hover{border-color:var(--accent);color:var(--accent-deep)}
.pay-waiting-page .waiting-tips{font-size:12px;color:var(--ink-faint);line-height:1.8}
.pay-waiting-page .waiting-tips p{margin:0}

/* ============================================================
   D4：支付结果页补中（v3 残留 gold-deep 的价格与文字链接；
   选择器层级与 v3 一致，靠 theme.css 后加载胜出）
   ============================================================ */
.pg-user-pay_result .result-info-grid .info-val.price{color:var(--accent-deep)}
.pg-user-pay_result .text-link{color:var(--accent-deep)}

/* ============================================================
   D9：用户中心仪表盘「更饱满」布局新增组件
   ── 快捷服务宫格图标变体（host / manage / aff） ── */
.qp-u-act-icon.host{background:var(--accent-tint);border:1px solid rgba(32,165,58,.2)}
.qp-u-act-icon.host svg{color:var(--accent-deep)}
.qp-u-act-icon.manage{background:var(--u-gray-bg);border:1px solid rgba(107,114,128,.18)}
.qp-u-act-icon.manage svg{color:var(--u-gray)}
.qp-u-act-icon.aff{background:#eef2ff;border:1px solid rgba(79,70,229,.18)}
.qp-u-act-icon.aff svg{color:#4f46e5}
/* ── 推荐位横幅（绿渐变 CTA） ── */
.qp-u-promo{position:relative;overflow:hidden;display:flex;align-items:center;justify-content:space-between;
  flex-wrap:wrap;gap:18px;margin-bottom:28px;padding:26px 30px;border-radius:18px;
  background:var(--q-grad);box-shadow:0 20px 46px -16px rgba(32,165,58,.5)}
.qp-u-promo::after{content:"";position:absolute;right:-40px;top:-40px;width:180px;height:180px;border-radius:50%;
  background:rgba(255,255,255,.12);pointer-events:none}
.qp-u-promo-info{position:relative;z-index:1;color:#fff;min-width:0}
.qp-u-promo-title{font-size:19px;font-weight:800;margin:0 0 6px;letter-spacing:.3px}
.qp-u-promo-desc{font-size:13px;color:rgba(255,255,255,.86);margin:0;line-height:1.6}
.qp-u-promo-cta{position:relative;z-index:1;display:inline-flex;align-items:center;gap:8px;
  padding:12px 22px;border-radius:12px;background:#fff;color:var(--accent-deep);
  font-size:14px;font-weight:700;text-decoration:none;white-space:nowrap;transition:all .2s}
.qp-u-promo-cta:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(0,0,0,.18)}
/* ── D9b：快捷服务宫格强制一排（不折行，窄屏横滑） ── */
.qp-u-acts-row{display:flex;flex-wrap:nowrap;overflow-x:auto;gap:16px;margin-bottom:30px;padding-bottom:4px}
.qp-u-acts-row .qp-u-act{flex:1 1 0;min-width:160px}
.qp-u-promo-cta svg{width:17px;height:17px}

/* ===== ⑤-B frost 字面量全局中和（程序化生成） ===== */
/* ============================================================
   ⑤-B frost 字面量全局中和（extract 生成）— v3/dashboard/user-center 的
   字面量玻璃底 / 字面量 blur / 字面量金色，未逐页重写的用户中心页兜底
   ============================================================ */
.auth-card,
.auth-logo,
.auth-submit,
.db,
.db .db-alert,
.db .db-hero::before,
.db .db-host,
.db .db-order,
.focus\:ring-2:focus,
.g-card,
.g-card-strong,
.gtable th{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border:1px solid var(--q-line)!important;box-shadow:0 18px 44px rgba(17,24,39,.07)!important}
.newsletter,
.pager .cur,
.pager a,
.pager span,
.pe-product-card.recommend,
.pg-admin-blog-article_edit .ae-att-ico,
.pg-admin-blog-article_edit .ae-att-item,
.pg-admin-blog-article_edit .ae-attach-drop,
.pg-admin-blog-article_edit .ae-cover-drop,
.pg-admin-blog-article_edit .wp-content blockquote,
.pg-admin-blog-article_edit .wp-editor,
.pg-admin-blog-article_edit .wp-toolbar{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border:1px solid var(--q-line)!important;box-shadow:0 18px 44px rgba(17,24,39,.07)!important}
.pg-admin-blog-attachments .att-check,
.pg-admin-login .al-head-mark,
.pg-admin-login .auth-card,
.pg-product-checkout .checkout-card,
.pg-product-checkout .pay-method,
.pg-product-checkout .pay-method.active,
.pg-user-dashboard .expiring-item,
.pg-user-dashboard .stat-alert,
.pg-user-dashboard .welcome-card,
.pg-user-hosts .host-card,
.pg-user-hosts .hosts-empty,
.pg-user-hosts .stat-card{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border:1px solid var(--q-line)!important;box-shadow:0 18px 44px rgba(17,24,39,.07)!important}
.pg-user-hosts .ui-card,
.pg-user-pay_result .pay-result-card,
.pg-user-pay_result .pending-method,
.pg-user-pay_result .qrcode-box,
.pg-user-pay_result .result-info-grid,
.ring-2,
.ticker,
.uc,
.uc .uc-alert,
.uc .uc-hero::before,
.uc .uc-list-item,
.uc .uc-tab.on{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border:1px solid var(--q-line)!important;box-shadow:0 18px 44px rgba(17,24,39,.07)!important}
.uc .uc-tabs,
.ui-card,
0%,
100%,
50%,
::selection,
:root{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border:1px solid var(--q-line)!important;box-shadow:0 18px 44px rgba(17,24,39,.07)!important}
.badge.gold,
.page-head .kicker,
.pe-node-tag,
.pg-admin-blog-article_edit .ae-tag,
.pg-admin-blog-article_edit .ae-tags,
.pg-product-checkout .coupon-tag.tag-fixed,
.verify-banner{background:var(--accent-tint)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border:1px solid var(--q-line-strong)!important;color:var(--accent-deep)!important;box-shadow:none!important}
.btn-submit,
.btn.ghost,
.btn.gold,
.db .db-btn.ghost,
.db-modal-btn.cancel,
.g-btn,
.pe-action-btn,
.pe-page-btn,
.pg-admin-blog-article_edit .ae-btn,
.pg-admin-blog-article_edit .wp-toolbar button,
.pg-product-checkout .checkout-pay-btn,
.pg-user-dashboard .btn-ghost{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border:1px solid var(--q-line-strong)!important;color:var(--accent-deep)!important;box-shadow:none!important;background-image:none!important}
.pg-user-hosts .action-btn,
.pg-user-hosts .action-manage,
.pg-user-hosts .btn-buy,
.pg-user-pay_result .btn-ghost,
.pg-user-pay_result .btn-primary,
.pg-user-pay_result .refresh-btn,
.socials a,
.uc .uc-btn.ghost,
.uc .uc-modal-btn.cancel,
.ui-btn--ghost,
.verify-banner .btn{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border:1px solid var(--q-line-strong)!important;color:var(--accent-deep)!important;box-shadow:none!important;background-image:none!important}
.auth-card input:focus,
.auth-card input[type=email],
.auth-card input[type=password],
.auth-card input[type=text],
.db-modal-body select,
.db-modal-body select:focus,
.db-modal-body textarea,
.db-modal-body textarea:focus,
.g-input,
.input,
.input:focus,
.newsletter input{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border:1px solid var(--q-line-strong)!important;color:var(--q-txt)!important;box-shadow:none!important}
.newsletter input:focus,
.pg-admin-blog-article_edit .wp-select,
.pg-product-checkout .coupon-input,
.select,
.select:focus,
.textarea,
.textarea:focus,
.uc .uc-form-input,
.uc .uc-form-input:focus,
.uc .uc-modal-body select,
.uc .uc-modal-body select:focus,
.uc .uc-modal-body textarea{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border:1px solid var(--q-line-strong)!important;color:var(--q-txt)!important;box-shadow:none!important}
.uc .uc-modal-body textarea:focus,
.ui-input,
input:focus,
input[type=date],
input[type=email],
input[type=number],
input[type=password],
input[type=search],
input[type=tel],
input[type=text],
input[type=url],
select{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border:1px solid var(--q-line-strong)!important;color:var(--q-txt)!important;box-shadow:none!important}
select:focus,
textarea,
textarea:focus{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border:1px solid var(--q-line-strong)!important;color:var(--q-txt)!important;box-shadow:none!important}
.btn-submit:hover,
.btn.ghost:hover,
.db .db-btn.ghost:hover,
.db .db-host:hover,
.db .db-order:hover,
.db-modal-btn.cancel:hover,
.gtable tbody tr:hover,
.hover\:bg-blue-100:hover,
.hover\:bg-blue-50:hover,
.hover\:bg-gray-100:hover,
.hover\:bg-gray-200:hover,
.hover\:bg-gray-50:hover{background:var(--accent-tint)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border-color:var(--accent)!important;color:var(--accent-deep)!important}
.hover\:bg-primary-50:hover,
.hover\:bg-primary-700:hover,
.hover\:border-blue-200:hover,
.hover\:border-primary-400:hover,
.pager a:hover,
.pe-action-btn:hover,
.pe-modal-close:hover,
.pe-page-btn:hover,
.pg-admin-blog-article_edit .ae-attach-drop.ae-drag,
.pg-admin-blog-article_edit .ae-attach-drop:hover,
.pg-admin-blog-article_edit .ae-btn:hover,
.pg-admin-blog-article_edit .ae-cover-drop.ae-drag{background:var(--accent-tint)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border-color:var(--accent)!important;color:var(--accent-deep)!important}
.pg-admin-blog-article_edit .ae-cover-drop:hover,
.pg-admin-blog-article_edit .ae-tag-ava-item:hover,
.pg-admin-blog-article_edit .wp-toolbar button:hover,
.pg-admin-login .al-head-nav a:hover,
.pg-product-checkout .checkout-pay-btn:hover,
.pg-product-checkout .coupon-item:hover,
.pg-product-checkout .pay-method:hover,
.pg-user-dashboard .btn-ghost:hover,
.pg-user-dashboard .btn-primary:hover,
.pg-user-dashboard .host-action-btn:hover,
.pg-user-dashboard .host-item:hover,
.pg-user-dashboard .order-item:hover{background:var(--accent-tint)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border-color:var(--accent)!important;color:var(--accent-deep)!important}
.pg-user-hosts .action-btn:hover,
.pg-user-hosts .action-manage:hover,
.pg-user-hosts .btn-buy:hover,
.pg-user-hosts .host-card:hover,
.pg-user-pay_result .btn-ghost:hover,
.pg-user-pay_result .btn-primary:hover,
.pg-user-pay_result .refresh-btn:hover,
.socials a:hover,
.uc .uc-btn.ghost:hover,
.uc .uc-list-item:hover,
.uc .uc-modal-btn.cancel:hover,
.uc .uc-tab:hover{background:var(--accent-tint)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border-color:var(--accent)!important;color:var(--accent-deep)!important}
.ui-btn--ghost:hover:not(:disabled){background:var(--accent-tint)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border-color:var(--accent)!important;color:var(--accent-deep)!important}
.g-modal,
.pe-modal-head{background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;border:1px solid var(--q-line)!important;box-shadow:0 24px 60px rgba(17,24,39,.12)!important}
.bg-primary-100,
.bg-primary-50,
.bg-primary-500,
.bg-primary-600,
.bg-primary-700,
.from-primary-500,
.peer:checked ~ .peer-checked\:bg-primary-600{background:var(--accent)!important;background-image:var(--q-grad)!important;border-color:transparent!important;color:#fff!important;box-shadow:var(--q-glow)!important}
.border-primary-200,
.border-primary-400,
.focus\:border-primary-400:focus{border-color:var(--accent)!important}
input[type=text],input[type=password],input[type=email],input[type=number],input[type=search],input[type=url],input[type=tel],input[type=date],textarea,select{
  background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  border:1px solid var(--q-line-strong)!important;color:var(--q-txt)!important}
input:focus,textarea:focus,select:focus{border-color:var(--accent)!important;box-shadow:0 0 0 3px rgba(32,165,58,.12)!important;outline:none!important}
/* 字面量金色按钮/徽章 → 绿 */
.btn.gold,.g-btn.primary,.db-btn.primary{background:var(--q-grad)!important;background-image:var(--q-grad)!important;
  color:#fff!important;border-color:transparent!important;box-shadow:var(--q-glow)!important}
.badge.gold{background:var(--accent-tint)!important;color:var(--accent-deep)!important;border-color:var(--q-line-strong)!important}
.pager a:hover,.pager .cur{border-color:var(--accent)!important}

/* ============================================================
   ⑤ frost 字面量中和段 — v3.css / dashboard.css / user-center.css / 模板内联 / layout 内联
   目的：未逐页重写的页（用户中心/认证/详情/法务）也立即去毛玻璃、去金棕、去衬线
   ============================================================ */
/* 用户中心/仪表盘作用域令牌覆写（.db/.uc 自带金棕 :root 且 body 晚加载，须 !important 抢回） */
.db,.uc{
  --brand:#20a53a!important;--brand-2:#188f30!important;
  --gold:#20a53a!important;--gold-deep:#188f30!important;--gold-soft:rgba(32,165,58,.14)!important;
  --ink:#111827!important;--ink-2:rgba(17,24,39,.66)!important;--ink-3:rgba(17,24,39,.4)!important;
  --stroke:rgba(22,36,26,.1)!important;--stroke-soft:rgba(22,36,26,.06)!important;
  --glass:#ffffff!important;--glass-strong:#ffffff!important;
  --blur:blur(0px)!important;
  --serif:var(--q-sans)!important;
  --shadow:0 18px 44px rgba(17,24,39,.07)!important;
  --radius:16px!important;--radius-sm:10px!important;
}
/* 玻璃卡片族 → 固态白卡（auth/详情/订单/订阅/表格/空态/弹窗/欢迎卡/用户横幅） */
.auth-card,.detail-main,.order-card,.newsletter,.gcard,.gtable,.empty-state,.modal-card,
.pg-user-dashboard .welcome-card,.user-hero{
  background:#fff!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;
  border:1px solid var(--q-line)!important;box-shadow:0 18px 44px rgba(17,24,39,.07)!important}
.pg-user-dashboard .welcome-card{background:var(--accent-tint)!important;border-color:var(--accent)!important}
.user-hero{border-radius:16px!important}
/* 衬线标题 → 无衬线 */
.user-hero-title,.auth-card h1,.page-head h1,.newsletter h3,.db-hero-title,
.pg-user-dashboard .welcome-content h1{font-family:var(--q-sans)!important;color:var(--q-txt)!important}
.user-hero-sub,.db-hero-sub,.pg-user-dashboard .welcome-content p{color:var(--q-muted)!important}
.pg-user-dashboard .welcome-stat-value{color:var(--accent-deep)!important}
/* 用户横幅（_hero.php 内联玻璃/金） */
.user-hero-avatar{background:linear-gradient(135deg,var(--accent),var(--accent-deep))!important}
.user-hero-btn{background:#fff!important;border:1px solid var(--q-line-strong)!important;color:var(--accent-deep)!important;
  border-radius:9px!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.user-hero-btn:hover{border-color:var(--accent)!important;background:var(--accent-tint)!important;color:var(--accent-deep)!important}
.user-hero-btn.primary{background:var(--accent)!important;color:#fff!important;border-color:transparent!important;
  box-shadow:var(--q-glow)!important}
.user-hero-btn.active{background:var(--accent-tint)!important;color:var(--accent-deep)!important;border-color:var(--accent)!important}
/* 页头 kicker / 分页 / 面包屑 */
.page-head .kicker{background:var(--accent-tint)!important;border:1px solid var(--q-line-strong)!important;
  color:var(--accent-deep)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.pager a,.pager span{background:#fff!important;border:1px solid var(--q-line-strong)!important;
  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;color:var(--q-muted)!important;border-radius:9px!important}
.pager a:hover,.pager .cur{color:var(--accent-deep)!important;border-color:var(--accent)!important}
.pager .cur{background:var(--accent-tint)!important;font-weight:700}
.crumbs a:hover{color:var(--accent-deep)!important}
/* 邮箱未验证条（frost 橙 → 绿） */
.verify-banner{background:var(--accent-tint)!important;border-bottom:1px solid var(--accent)!important;
  color:var(--accent-deep)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important}
.verify-banner .btn{background:var(--accent)!important;box-shadow:none!important}
.verify-banner a{color:var(--accent-deep)!important}
/* frost 金按钮/焦点环/英雄区金光字面量 */
.btn.gold{background:var(--q-grad)!important;box-shadow:var(--q-glow)!important}
.db-modal-body select:focus,.db-modal-body textarea:focus{border-color:var(--accent)!important;box-shadow:0 0 0 4px rgba(32,165,58,.12)!important}
.db .db-hero::before{background:linear-gradient(120deg,rgba(32,165,58,.08),transparent 55%)!important}
/* 页脚辉光（金/青 radial → 绿） */
.foot::before{background:radial-gradient(800px 400px at 20% 120%,rgba(32,165,58,.07),transparent 60%),
  radial-gradient(800px 420px at 85% 120%,rgba(32,165,58,.05),transparent 60%)!important}
/* layout 内联 style 中和：公告条/语言菜单/头像菜单（均非 !important，被本段压制） */
.ticker-bar{background:linear-gradient(90deg,#188f30,#20a53a)!important}
.ticker-bar>i{background:#d9ffd0!important;box-shadow:0 0 0 3px rgba(217,255,208,.25)!important}
.nav-lang-menu a:hover,.nav-lang-menu a.active{background:var(--accent-tint)!important;color:var(--accent-deep)!important}
.nav-user-menu a:hover{background:var(--accent-tint)!important;color:var(--accent-deep)!important}
.nav-user-logout:hover{background:rgba(220,38,38,.08)!important;color:#dc2626!important}
