/* ============================================================================
   Glass Skin — 浅色玻璃拟态科技风（全局皮肤层）
   用法：在 tokens.css 与所有业务样式之后引入；仅做层叠覆盖，不改业务 HTML/JS。
   回退：删除 index.html 中本文件的 <link> 即恢复原界面。
   ========================================================================== */

/* --------------------------------------------------------------- 1. 令牌重映射 */
:root {
  /* 主色：蓝 → 青（对齐样板） */
  --color-primary: #3b82f6;
  --color-primary-hover: #60a5fa;
  --color-primary-active: #2563eb;
  --color-primary-500: #93c5fd;
  --color-primary-700: #bfdbfe;
  --color-primary-800: #dbeafe;
  --color-primary-100: #eff6ff;

  /* 成功 / 警告 / 危险（微调为玻璃板色阶） */
  --color-success: #10b981;
  --color-success-hover: #34d399;
  --color-success-active: #059669;
  --color-success-100: #ecfdf5;
  --color-warning: #f59e0b;
  --color-warning-hover: #fbbf24;
  --color-warning-active: #d97706;
  --color-warning-100: #fffbeb;
  --color-danger: #f43f5e;
  --color-danger-hover: #fb7185;
  --color-danger-active: #e11d48;
  --color-danger-100: #fff1f2;
  --color-info: #64748b;
  --color-info-hover: #94a3b8;
  --color-info-active: #475569;
  --color-info-100: #f1f5f9;

  /* 文字（浅色玻璃，保持高对比） */
  --color-text-primary: #0f172a;
  --color-text-regular: #334155;
  --color-text-secondary: #64748b;
  --color-text-placeholder: #94a3b8;
  --color-text-on-primary: #ffffff;
  --color-text-inverse: #ffffff;

  /* 边框（半透明，玻璃感） */
  --color-border: rgba(148, 163, 184, 0.40);
  --color-border-light: rgba(226, 232, 240, 0.65);
  --color-border-lighter: rgba(241, 245, 249, 0.75);
  --color-border-extra-light: rgba(248, 250, 252, 0.85);

  /* 页面底透明，让 body 渐变光斑透出；填充改为半透明白 */
  --color-bg-page: transparent;
  --color-bg-card: rgba(255, 255, 255, 0.6);
  --color-bg-overlay: rgba(255, 255, 255, 0.85);
  --color-bg-fill: rgba(255, 255, 255, 0.5);
  --color-bg-fill-hover: rgba(255, 255, 255, 0.72);
  --color-bg-mask: rgba(15, 23, 42, 0.32);

  /* 字体 */
  --font-sans: "Fira Sans", Inter, -apple-system, BlinkMacSystemFont, "Segoe UI",
    "PingFang SC", "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
  --font-mono: "Fira Code", "JetBrains Mono", Menlo, Consolas, monospace;

  /* 圆角加大 */
  --radius-sm: 6px;
  --radius-base: 10px;
  --radius-md: 12px;
  --radius-lg: 16px;
  --radius-xl: 20px;

  /* 柔和彩色阴影 */
  --shadow-xs: 0 1px 2px rgba(31, 41, 99, 0.06);
  --shadow-sm: 0 4px 18px rgba(37, 99, 235, 0.08);
  --shadow-md: 0 10px 30px rgba(37, 99, 235, 0.12);
  --shadow-lg: 0 20px 50px rgba(37, 99, 235, 0.18);
  --shadow-xl: 0 26px 64px rgba(37, 99, 235, 0.24);

  --focus-ring: 0 0 0 3px rgba(59, 130, 246, 0.28);
  --focus-ring-danger: 0 0 0 3px rgba(244, 63, 94, 0.25);
}

/* --------------------------------------------------------------- 2. 背景：渐变 + 光斑 + 网格（对齐样板） */
html { background: #e9f0ff; }
body {
  background: transparent;
  color: #0f172a;
  font-family: var(--font-sans);
}
/* 基础浅色渐变（最底层 z-3） */
body::before {
  content: ""; position: fixed; inset: 0; z-index: -3; pointer-events: none;
  background:
    radial-gradient(1200px 600px at 80% -10%, #dfe9ff 0%, transparent 60%),
    linear-gradient(160deg, #eef3ff 0%, #e6eeff 40%, #e3f2fb 100%);
}
/* 细网格（光斑之上 z-1） */
body::after {
  content: ""; position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background-image:
    linear-gradient(rgba(59, 130, 246, 0.06) 1px, transparent 1px),
    linear-gradient(90deg, rgba(59, 130, 246, 0.06) 1px, transparent 1px);
  background-size: 44px 44px;
  -webkit-mask-image: radial-gradient(ellipse 90% 80% at 50% 0%, #000 30%, transparent 75%);
          mask-image: radial-gradient(ellipse 90% 80% at 50% 0%, #000 30%, transparent 75%);
}
/* 4 个独立漂浮光斑（借用现有容器伪元素；容器无 filter/transform，fixed 相对视口） z-2 */
.main-wrapper::before, .main-wrapper::after,
.content::before, .content::after {
  content: ""; position: fixed; border-radius: 50%;
  filter: blur(70px); pointer-events: none; z-index: -2;
}
.main-wrapper::before {
  width: 520px; height: 520px; top: -160px; left: -120px;
  background: #7fb0ff; opacity: .55; animation: glassBlob 18s ease-in-out infinite;
}
.main-wrapper::after {
  width: 460px; height: 460px; top: 10%; right: -140px;
  background: #b9a7ff; opacity: .55; animation: glassBlob 18s ease-in-out infinite -6s;
}
.content::before {
  width: 420px; height: 420px; bottom: -160px; left: 25%;
  background: #7fe7f5; opacity: .55; animation: glassBlob 18s ease-in-out infinite -11s;
}
.content::after {
  width: 300px; height: 300px; bottom: 8%; right: 18%;
  background: #f6b8e6; opacity: .40; animation: glassBlob 18s ease-in-out infinite -3s;
}
@keyframes glassBlob {
  0%, 100% { transform: translate(0, 0) scale(1); }
  50%      { transform: translate(30px, -30px) scale(1.08); }
}
@media (prefers-reduced-motion: reduce) {
  .main-wrapper::before, .main-wrapper::after,
  .content::before, .content::after { animation: none; }
}

/* --------------------------------------------------------------- 3. 顶栏：浅色玻璃 */
.header {
  background: rgba(255, 255, 255, 0.62) !important;
  -webkit-backdrop-filter: blur(20px) saturate(180%);
          backdrop-filter: blur(20px) saturate(180%);
  top: 14px !important; left: 264px !important; right: 14px !important;
  border: 1px solid rgba(255, 255, 255, 0.72) !important;
  border-radius: 18px !important;
  box-shadow: 0 12px 40px rgba(31, 52, 110, 0.14) !important;
  overflow: visible !important;
}
/* 我的群 / 超管 / 我的机器人（无侧边栏）：顶栏贴左 */
body.no-sidebar .header { left: 14px !important; }
.header-logo span { color: #0f172a !important; }
.header-nav a { color: #475569 !important; }
.header-nav a:hover { color: #2563eb !important; background: transparent !important; }
.header-nav a.active {
  color: #2563eb !important;
  background: rgba(59, 130, 246, 0.14) !important;
}
.header-user { color: #334155 !important; }
.header-user .avatar {
  background: linear-gradient(135deg, #3b82f6, #06b6d4) !important;
  color: #fff !important;
}

/* 用户下拉菜单玻璃化 */
.dropdown-menu {
  background: rgba(255, 255, 255, 0.88) !important;
  -webkit-backdrop-filter: blur(18px);
          backdrop-filter: blur(18px);
  border: 1px solid rgba(255, 255, 255, 0.75) !important;
  box-shadow: var(--shadow-lg) !important;
}
.dropdown-item { color: #334155 !important; }
.dropdown-item:hover { background: rgba(59, 130, 246, 0.14) !important; color: #2563eb !important; }

/* --------------------------------------------------------------- 4. 侧边栏：玻璃 */
.sidebar {
  left: 14px !important; top: 14px !important; bottom: 14px !important;
  width: 236px !important;
  background: rgba(255, 255, 255, 0.5) !important;
  -webkit-backdrop-filter: blur(20px) saturate(180%);
          backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid rgba(255, 255, 255, 0.7) !important;
  border-radius: 18px !important;
  box-shadow: 0 12px 40px rgba(31, 52, 110, 0.14) !important;
  overflow: hidden !important;
  display: flex !important; flex-direction: column !important;
}
/* 顶部机器人名固定，菜单区在浮动卡片内部滚动 */
.group-breadcrumb { flex: 0 0 auto !important; }
.menu-list {
  flex: 1 1 auto !important;
  overflow-y: auto !important; overflow-x: hidden !important;
}
/* 浮动布局让位：主区域顶部为浮动顶栏留位 */
.main-wrapper {
  margin-top: 84px !important;
  min-height: calc(100vh - 98px) !important;
}
/* 内容左边：进入管理让位浮动侧边栏；我的群贴左；右侧统一留 14 对齐顶栏 */
body:not(.no-sidebar) .content {
  margin-left: 264px !important;
  padding: 0 14px 18px 0 !important;
}
body.no-sidebar .content {
  margin-left: 14px !important;
  padding: 0 14px 18px 0 !important;
}
/* 无侧边栏页面：强制隐藏浮动侧边栏（覆盖 .sidebar 的 display:flex !important） */
body.no-sidebar .sidebar { display: none !important; }
/* 侧边栏滚动条美化 */
.menu-list::-webkit-scrollbar { width: 6px; }
.menu-list::-webkit-scrollbar-thumb { background: rgba(59, 130, 246, .25); border-radius: 6px; }
.group-breadcrumb {
  background: transparent !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.5) !important;
}
.group-breadcrumb .group-name { color: #2563eb !important; }
.menu-item:hover { background: rgba(255, 255, 255, 0.6) !important; }
.menu-item.active {
  background: linear-gradient(135deg, rgba(59, 130, 246, 0.20), rgba(59, 130, 246, 0.12)) !important;
  color: #2563eb !important;
  font-weight: 600 !important;
}

/* --------------------------------------------------------------- 5. 玻璃容器（卡片 / 区块 / 弹窗） */
.card, .section-card, .form-section, .super-admin-card,
.modal, .modal-content, .modal-dialog {
  background: rgba(255, 255, 255, 0.60) !important;
  -webkit-backdrop-filter: blur(18px) saturate(165%);
          backdrop-filter: blur(18px) saturate(165%);
  border: 1px solid rgba(255, 255, 255, 0.70) !important;
  box-shadow: 0 10px 34px rgba(37, 99, 235, 0.12) !important;
}

/* 弹窗遮罩：深色压暗 + 轻模糊，层级 2000 高于侧边栏（含手机抽屉 1050） */
.modal-overlay, .modal-mask {
  background: rgba(15, 23, 42, 0.30) !important;
  -webkit-backdrop-filter: blur(4px);
          backdrop-filter: blur(4px);
  z-index: 2000 !important;
}

/* 子弹窗（WBU 按钮编辑 / EBtn 类型·链接·文字·内置）必须高于被上面提到 2000 的 .modal-overlay 父弹窗，否则会被父弹窗遮挡 */
#wbu-btn-edit-modal,
#ca-btn-edit-modal,
#ebtn-type-overlay, #ebtn-link-overlay, #ebtn-text-overlay, #ebtn-sys-overlay {
  z-index: 2010 !important;
}

/* 按钮的「编辑/删除」「更多」等临时操作菜单（append 到 body）须高于弹窗 2000 与子弹窗 2010 */
.ebtn-ctx, .mi-ctx, .t-btn-ctx-menu, .ca-more-menu, .pqr-btn-menu {
  z-index: 2020 !important;
}

/* 问号悬浮提示气泡（portal 到 body 的 fixed）须高于所有弹窗/菜单，否则被压到遮罩下 */
.jv-tip-bubble, .jv-global-tip {
  z-index: 2100 !important;
}

/* ---------- 5a. 统一弹窗结构（对齐样板玻璃语言：强玻璃卡片 + 固定头尾 + body 内滚） ---------- */
.modal {
  display: flex !important;
  flex-direction: column !important;
  max-height: 86vh !important;
  border-radius: 18px !important;
  background: rgba(255, 255, 255, 0.80) !important;
  -webkit-backdrop-filter: blur(26px) saturate(185%);
          backdrop-filter: blur(26px) saturate(185%);
  border: 1px solid rgba(255, 255, 255, 0.75) !important;
  box-shadow: 0 28px 80px rgba(31, 52, 110, 0.30) !important;
  overflow: hidden !important;
}
.modal-header {
  flex: 0 0 auto !important;
  display: flex !important; align-items: center !important; justify-content: space-between !important;
  padding: 15px 20px !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.65) !important;
  background: linear-gradient(180deg, rgba(255,255,255,0.55), rgba(255,255,255,0)) !important;
}
.modal-title { font-size: 16px !important; font-weight: 600 !important; color: #0b1426 !important; letter-spacing: .2px; }
.modal-close {
  flex: 0 0 auto !important;
  width: 32px !important; height: 32px !important; border-radius: 10px !important; padding: 0 !important;
  display: inline-flex !important; align-items: center !important; justify-content: center !important;
  background: rgba(255,255,255,0.55) !important; border: 1px solid rgba(255,255,255,0.70) !important;
  color: #5b6b86 !important; font-size: 18px !important; line-height: 1 !important; cursor: pointer; transition: all .18s;
}
.modal-close:hover { background: rgba(239,68,68,0.12) !important; color: #dc2626 !important; border-color: rgba(239,68,68,0.35) !important; }
.modal-body {
  flex: 1 1 auto !important; overflow-y: auto !important; overflow-x: hidden !important;
  padding: 20px !important; color: #2b3a55 !important; font-size: 14px !important; line-height: 1.6;
}
.modal-footer {
  flex: 0 0 auto !important;
  display: flex !important; justify-content: flex-end !important; gap: 10px !important;
  padding: 14px 20px !important;
  border-top: 1px solid rgba(255,255,255,0.65) !important;
  background: linear-gradient(0deg, rgba(255,255,255,0.50), rgba(255,255,255,0)) !important;
}
.modal-footer > .btn, .modal-footer > button {
  min-height: 38px !important; border-radius: 10px !important; padding: 0 20px !important; font-size: 14px !important;
}

/* 弹窗内浅底区块（jv-section）改更淡的玻璃 */
.jv-section {
  background: rgba(255, 255, 255, 0.45) !important;
  border: 1px solid rgba(255, 255, 255, 0.6) !important;
}
.jv-section-title { color: #2563eb !important; }

/* --------------------------------------------------------------- 5b. KPI 独立玻璃卡（对齐样板） */
.stats-grid {
  display: grid !important;
  grid-template-columns: repeat(3, 1fr) !important;
  gap: 14px !important;
  background: transparent !important;
  border: none !important; border-radius: 0 !important;
  overflow: visible !important;
  margin-bottom: 18px !important;
}
.stat-card {
  padding: 18px !important;
  border: 1px solid rgba(255, 255, 255, 0.70) !important;
  border-radius: 18px !important;
  background: rgba(255, 255, 255, 0.60) !important;
  -webkit-backdrop-filter: blur(18px) saturate(165%);
          backdrop-filter: blur(18px) saturate(165%);
  box-shadow: 0 10px 30px rgba(31, 52, 110, 0.10) !important;
  transition: transform .25s ease, box-shadow .25s ease;
}
.stat-card:hover {
  transform: translateY(-3px);
  box-shadow: 0 16px 40px rgba(31, 52, 110, 0.16) !important;
}
.stat-label { font-size: 13px !important; color: #5b6b86 !important; margin-bottom: 10px !important; }
.stat-value {
  font-size: 28px !important; font-weight: 600 !important;
  color: #0b1426 !important;
  font-family: var(--font-mono) !important;
  letter-spacing: -.5px !important; line-height: 1.1 !important;
}
.stat-sub { font-size: 12px !important; margin-top: 10px !important; }
.stat-sub .sub-value { font-family: var(--font-mono) !important; }

/* --------------------------------------------------------------- 6. 按钮：渐变 */
.btn-primary, .btn-primary:hover, button.primary, button[class*="primary"] {
  background: linear-gradient(135deg, #3b82f6, #06b6d4) !important;
  border: 1px solid transparent !important;
  color: #fff !important;
  box-shadow: 0 8px 20px rgba(59, 130, 246, 0.32) !important;
}
.btn-primary:hover {
  background: linear-gradient(135deg, #60a5fa, #22d3ee) !important;
}
.btn-success, .btn-success:hover {
  background: linear-gradient(135deg, #10b981, #059669) !important;
  border: 1px solid transparent !important;
  color: #fff !important;
  box-shadow: 0 8px 20px rgba(16, 185, 129, 0.30) !important;
}
.btn-danger, .btn-danger:hover {
  background: linear-gradient(135deg, #f43f5e, #e11d48) !important;
  border: 1px solid transparent !important;
  color: #fff !important;
  box-shadow: 0 8px 20px rgba(244, 63, 94, 0.30) !important;
}
.btn-warning, .btn-warning:hover {
  background: linear-gradient(135deg, #f59e0b, #d97706) !important;
  border: 1px solid transparent !important;
  color: #fff !important;
}
.btn-default, .btn-default:hover {
  background: rgba(255, 255, 255, 0.7) !important;
  border: 1px solid rgba(148, 163, 184, 0.45) !important;
  color: #334155 !important;
  box-shadow: none !important;
}
.btn-outline, .btn-outline:hover, .btn-outline-primary {
  background: rgba(255, 255, 255, 0.6) !important;
  border: 1px solid #3b82f6 !important;
  color: #2563eb !important;
}
.btn-outline:hover { background: rgba(59, 130, 246, 0.12) !important; }

/* --------------------------------------------------------------- 7. 表单：玻璃输入 */
input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]),
select, textarea {
  background: rgba(255, 255, 255, 0.62) !important;
  border: 1px solid rgba(148, 163, 184, 0.42) !important;
  color: #0f172a !important;
  border-radius: var(--radius-base) !important;
}
input:not([type="checkbox"]):not([type="radio"]):not([type="range"]):not([type="color"]):not([type="file"]):focus,
select:focus, textarea:focus {
  background: rgba(255, 255, 255, 0.9) !important;
  border-color: #3b82f6 !important;
  box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.22) !important;
  outline: none !important;
}
select option { background: #ffffff; color: #0f172a; }

/* ---------- 7b. 通用容器玻璃化：表单卡 / 搜索条 / 提示条（对齐样板） ---------- */
.form-container {
  background: rgba(255,255,255,0.58) !important;
  border: 1px solid rgba(255,255,255,0.70) !important;
  border-radius: 16px !important;
  -webkit-backdrop-filter: blur(18px) saturate(165%);
          backdrop-filter: blur(18px) saturate(165%);
  box-shadow: 0 10px 30px rgba(31,52,110,0.10) !important;
}
.search-bar {
  background: rgba(255,255,255,0.55) !important;
  border: 1px solid rgba(255,255,255,0.68) !important;
  border-radius: 14px !important;
  -webkit-backdrop-filter: blur(16px) saturate(160%);
          backdrop-filter: blur(16px) saturate(160%);
}
.tip-bar {
  background: rgba(59,130,246,0.08) !important;
  border: 1px solid rgba(59,130,246,0.22) !important;
  color: #1e40af !important; border-radius: 12px !important;
}
.tip-bar.success { background: rgba(34,197,94,0.10) !important; border-color: rgba(34,197,94,0.28) !important; color: #15803d !important; }
.tip-bar.warn    { background: rgba(245,158,11,0.10) !important; border-color: rgba(245,158,11,0.28) !important; color: #b45309 !important; }
.tip-bar.danger  { background: rgba(239,68,68,0.10) !important; border-color: rgba(239,68,68,0.28) !important; color: #b91c1c !important; }

/* --------------------------------------------------------------- 8. 表格：玻璃 */
th {
  background: rgba(255, 255, 255, 0.55) !important;
  color: #334155 !important;
  border-bottom: 1px solid rgba(255, 255, 255, 0.7) !important;
}
td { border-bottom: 1px solid rgba(226, 232, 240, 0.55) !important; }
tr:hover { background: rgba(255, 255, 255, 0.45) !important; }

/* ---------- 8b. 分页：玻璃页码（对齐样板玻璃语言） ---------- */
.pagination { gap: 6px !important; }
.page-btn {
  min-width: 34px !important; height: 34px !important;
  background: rgba(255,255,255,0.55) !important;
  border: 1px solid rgba(255,255,255,0.75) !important;
  border-radius: 10px !important;
  color: #334155 !important; font-size: 13px !important;
  box-shadow: 0 2px 8px rgba(31,52,110,0.06) !important;
  transition: all .16s !important;
}
.page-btn:hover:not(.active):not(.disabled) {
  background: rgba(255,255,255,0.88) !important;
  border-color: rgba(59,130,246,0.45) !important;
  color: #2563eb !important; transform: translateY(-1px);
}
.page-btn.active {
  background: linear-gradient(135deg, #3b82f6, #06b6d4) !important;
  border-color: transparent !important; color: #fff !important;
  box-shadow: 0 6px 16px rgba(37,99,235,0.32) !important; font-weight: 600 !important;
}
.page-btn.disabled, .page-btn.disabled:hover {
  background: rgba(255,255,255,0.30) !important;
  border-color: rgba(255,255,255,0.50) !important;
  color: #94a3b8 !important; cursor: not-allowed !important;
  box-shadow: none !important; transform: none !important;
}

/* --------------------------------------------------------------- 9. 徽章 / 状态（柔和玻璃语义色） */
.status-enabled, .badge-success {
  background: rgba(16, 185, 129, 0.14) !important;
  color: #059669 !important;
  border: 1px solid rgba(16, 185, 129, 0.30) !important;
}
.status-disabled, .badge-danger {
  background: rgba(244, 63, 94, 0.12) !important;
  color: #e11d48 !important;
  border: 1px solid rgba(244, 63, 94, 0.28) !important;
}

/* --------------------------------------------------------------- 10. Toast：深色玻璃 */
.toast {
  background: rgba(15, 23, 42, 0.88) !important;
  -webkit-backdrop-filter: blur(14px);
          backdrop-filter: blur(14px);
  color: #fff !important;
  border: 1px solid rgba(255, 255, 255, 0.12) !important;
}

/* --------------------------------------------------------------- 11. 硬编码 #409eff 交互态统一改主色 */
.section-title { border-left-color: #3b82f6 !important; color: #0f172a !important; }
.cc-tab.active, .kb-tab.active { color: #2563eb !important; border-bottom-color: #3b82f6 !important; }
.rte-toolbar button:hover, .cc-rte-toolbar button:hover { border-color: #3b82f6 !important; color: #2563eb !important; }
.rte-var-btn {
  border: 1px dashed #3b82f6 !important;
  background: rgba(59, 130, 246, 0.10) !important;
  color: #2563eb !important;
}
.rte-var-btn:hover { background: rgba(59, 130, 246, 0.20) !important; }
.rte-editor:focus { border-color: #3b82f6 !important; box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.18) !important; }

/* --------------------------------------------------------------- 12. EBtn 统一按钮组件 */
.ebtn-chip.c-blue { background: linear-gradient(135deg, #3b82f6, #06b6d4) !important; }
.ebtn-add-inline { background: linear-gradient(135deg, #3b82f6, #06b6d4) !important; }
.ebtn-add-inline:hover { background: linear-gradient(135deg, #60a5fa, #22d3ee) !important; }
.ebtn-add-row:hover { border-color: #3b82f6 !important; color: #2563eb !important; }
.ebtn-swatch.sel { border-color: #3b82f6 !important; }
.ebtn-sys-opt.sel { background: linear-gradient(135deg, #3b82f6, #06b6d4) !important; color: #fff !important; }
.ebtn-ctx div:hover { background: #3b82f6 !important; }
.ebtn-type-card:hover { border-color: #3b82f6 !important; background: rgba(59, 130, 246, 0.08) !important; }
.ebtn-type-icon { color: #2563eb !important; }

/* --------------------------------------------------------------- 13. 手机端：玻璃效果延续 */
@media (max-width: 768px) {
  /* 手机端：恢复常驻固定左侧窄图标栏（不用浮动宽卡/抽屉），主页面占满剩余宽度 */
  .sidebar {
    left: 0 !important; top: 52px !important; bottom: 0 !important;
    width: 56px !important;
    border-radius: 0 !important;
    border: 0 !important;
    border-right: 1px solid rgba(255, 255, 255, 0.7) !important;
    background: rgba(255, 255, 255, 0.72) !important;
    -webkit-backdrop-filter: blur(22px) saturate(180%);
            backdrop-filter: blur(22px) saturate(180%);
    box-shadow: 2px 0 14px rgba(31, 52, 110, 0.10) !important;
  }
  body:not(.no-sidebar) .content {
    margin-left: 56px !important;
    padding: 0 10px 16px 10px !important;
  }
  body.no-sidebar .content {
    margin-left: 0 !important;
    padding: 0 10px 16px 10px !important;
  }
  /* header 手机端贴顶全宽，不悬空 */
  .header {
    top: 0 !important; left: 0 !important; right: 0 !important;
    border-radius: 0 !important;
    background: rgba(255, 255, 255, 0.72) !important;
  }
  .main-wrapper {
    margin-top: 52px !important;
    min-height: calc(100vh - 52px) !important;
  }
  table .jv-text-btn { min-height: 36px !important; padding: 7px 9px !important; display: inline-flex !important; align-items: center; }
}

/* --------------------------------------------------------------- 14. fzm 弹窗玻璃化 */
.fzm {
  background: rgba(15, 23, 42, 0.30) !important;
  -webkit-backdrop-filter: blur(3px) saturate(160%);
          backdrop-filter: blur(3px) saturate(160%);
}
.fzm-panel {
  background: rgba(255, 255, 255, 0.72) !important;
  -webkit-backdrop-filter: blur(20px) saturate(180%);
          backdrop-filter: blur(20px) saturate(180%);
  border: 1px solid rgba(255, 255, 255, 0.7) !important;
}

/* --------------------------------------------------------------- 15. TinyMCE 富文本玻璃化 */
.tox-tinymce {
  background: rgba(255, 255, 255, 0.12) !important;
  border: 1px solid rgba(148, 163, 184, 0.42) !important;
  border-radius: var(--radius-base) !important;
  overflow: hidden;
}
.tox .tox-toolbar,
.tox .tox-toolbar__primary,
.tox .tox-toolbar__overflow {
  background: rgba(255, 255, 255, 0.20) !important;
  background-image: none !important;
  border-bottom: 1px solid rgba(148, 163, 184, 0.30) !important;
}
.tox .tox-edit-area,
.tox .tox-edit-area__iframe { background: transparent !important; border: 0 !important; }
.tox .tox-tbtn { background: transparent !important; }
.tox .tox-tbtn svg { fill: #334155 !important; }
.tox .tox-tbtn:hover { background: rgba(59, 130, 246, 0.16) !important; }
.tox .tox-tbtn--enabled,
.tox .tox-tbtn--enabled:hover { background: rgba(59, 130, 246, 0.24) !important; }
.tox .tox-statusbar {
  background: rgba(255, 255, 255, 0.14) !important;
  border-top: 1px solid rgba(148, 163, 184, 0.30) !important;
}
.tox .tox-statusbar a,
.tox .tox-statusbar__path-item,
.tox .tox-statusbar__wordcount { color: #64748b !important; }
.tox .tox-tbtn[aria-disabled="true"] svg { fill: #cbd5e1 !important; }
.fz-editor-wrap { background: transparent !important; }

/* --------------------------------------------------------------- 16. 我的群控制台（.glc 命名空间，1:1 对齐 tech-glass-admin） */
.glc{font-family:'Fira Sans',-apple-system,'PingFang SC','Microsoft YaHei',sans-serif;}
.glc *{box-sizing:border-box;}
.glc .hello{display:flex;align-items:center;gap:14px;margin:6px 0 18px;flex-wrap:wrap;}
.glc .hello h2{font-size:21px;color:#0b1426;font-weight:700;}
.glc .hello p{font-size:13px;color:#5b6b86;margin-top:2px;}
.glc .pill{display:inline-flex;align-items:center;gap:6px;font-size:12px;font-family:'Fira Code',monospace;
  background:rgba(34,197,94,.13);color:#16a34a;border:1px solid rgba(34,197,94,.3);padding:4px 11px;border-radius:20px;}
.glc .pill .live{width:7px;height:7px;border-radius:50%;background:#22c55e;animation:glcPulse 1.8s infinite;}
@keyframes glcPulse{0%{box-shadow:0 0 0 0 rgba(34,197,94,.55)}70%{box-shadow:0 0 0 8px rgba(34,197,94,0)}100%{box-shadow:0 0 0 0 rgba(34,197,94,0)}}
.glc .spacer{margin-left:auto;}
.glc .btn-ghost{padding:9px 16px;border-radius:11px;font-size:13px;font-weight:600;color:#2563eb;
  background:rgba(255,255,255,.6);border:1px solid rgba(59,130,246,.3);transition:.2s;display:inline-flex;align-items:center;gap:7px;}
.glc .btn-ghost:hover{background:#fff;transform:translateY(-1px);}
.glc .btn-ghost svg{width:15px;height:15px;stroke:#3b82f6;}
.glc .cards{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-bottom:16px;}
.glc .kpi{border-radius:18px;padding:18px;position:relative;overflow:hidden;transition:.25s;
  background:rgba(255,255,255,.62);backdrop-filter:blur(20px) saturate(170%);-webkit-backdrop-filter:blur(20px) saturate(170%);
  border:1px solid rgba(255,255,255,.72);box-shadow:0 12px 40px rgba(31,52,110,.14);}
.glc .kpi:hover{transform:translateY(-3px);box-shadow:0 18px 44px rgba(31,52,110,.2);}
.glc .kpi .top{display:flex;align-items:center;gap:11px;margin-bottom:14px;}
.glc .kpi .ic{width:40px;height:40px;border-radius:12px;display:flex;align-items:center;justify-content:center;}
.glc .kpi .ic svg{width:20px;height:20px;}
.glc .kpi .lbl{font-size:13px;color:#5b6b86;font-weight:500;}
.glc .kpi .val{font-size:28px;font-weight:700;font-family:'Fira Code',monospace;color:#0b1426;letter-spacing:-.5px;}
.glc .kpi .trend{font-size:12px;font-family:'Fira Code',monospace;margin-top:5px;display:flex;align-items:center;gap:5px;}
.glc .up{color:#16a34a;}.glc .down{color:#ef4444;}
.glc .kpi .spark{position:absolute;right:14px;bottom:14px;opacity:.85;}
.glc .ic.blue{background:linear-gradient(135deg,rgba(59,130,246,.2),rgba(59,130,246,.08));color:#2563eb;}
.glc .ic.cyan{background:linear-gradient(135deg,rgba(6,182,212,.22),rgba(6,182,212,.08));color:#0891b2;}
.glc .ic.violet{background:linear-gradient(135deg,rgba(139,92,246,.22),rgba(139,92,246,.08));color:#7c3aed;}
.glc .ic.green{background:linear-gradient(135deg,rgba(34,197,94,.22),rgba(34,197,94,.08));color:#16a34a;}
.glc .row2{display:grid;grid-template-columns:1.9fr 1fr;gap:16px;margin-bottom:16px;}
.glc .panel{border-radius:18px;padding:18px;background:rgba(255,255,255,.62);
  backdrop-filter:blur(20px) saturate(170%);-webkit-backdrop-filter:blur(20px) saturate(170%);
  border:1px solid rgba(255,255,255,.72);box-shadow:0 12px 40px rgba(31,52,110,.14);}
.glc .panel-head{display:flex;align-items:center;margin-bottom:16px;flex-wrap:wrap;gap:4px;}
.glc .panel-head b{font-size:15px;color:#0b1426;}
.glc .panel-head span{font-size:12px;color:#8494ad;margin-left:8px;}
.glc .seg{margin-left:auto;display:flex;background:rgba(255,255,255,.55);border-radius:9px;padding:3px;border:1px solid rgba(255,255,255,.7);}
.glc .seg button{font-size:12px;padding:5px 12px;border-radius:7px;color:#5b6b86;font-weight:500;}
.glc .seg button.on{background:linear-gradient(135deg,#3b82f6,#06b6d4);color:#fff;}
.glc .legend{display:flex;gap:16px;margin-top:10px;flex-wrap:wrap;}
.glc .legend i{display:inline-flex;align-items:center;gap:6px;font-size:12px;color:#5b6b86;font-style:normal;}
.glc .legend i::before{content:'';width:10px;height:10px;border-radius:3px;}
.glc .legend .l1::before{background:#3b82f6;}.glc .legend .l2::before{background:#06b6d4;}
.glc .donut-wrap{display:flex;align-items:center;gap:18px;flex-wrap:wrap;justify-content:center;}
.glc .donut-legend{flex:1;min-width:140px;display:flex;flex-direction:column;gap:11px;}
.glc .dl-item{display:flex;align-items:center;gap:9px;font-size:13px;color:#2b3a55;}
.glc .dl-item i{width:9px;height:9px;border-radius:3px;flex:none;}
.glc .dl-item b{margin-left:auto;font-family:'Fira Code',monospace;font-size:13px;color:#0b1426;}
.glc .grad-btn{background:linear-gradient(135deg,#3b82f6,#06b6d4);color:#fff;border-radius:12px;font-weight:600;
  box-shadow:0 8px 20px rgba(37,99,235,.32);transition:.25s;}
.glc .grad-btn:hover{transform:translateY(-2px);box-shadow:0 12px 26px rgba(37,99,235,.42);}
.glc .tbl{width:100%;border-collapse:collapse;}
.glc .tbl th{text-align:left;font-size:12px;color:#5b6b86;font-weight:600;padding:0 12px 11px;border-bottom:1px solid rgba(255,255,255,.7);}
.glc .tbl td{padding:12px;font-size:13.5px;border-bottom:1px solid rgba(255,255,255,.55);color:#2b3a55;}
.glc .tbl tr:last-child td{border-bottom:none;}
.glc .tbl tbody tr{transition:.18s;}
.glc .tbl tbody tr:hover{background:rgba(255,255,255,.5);}
.glc .gname{display:flex;align-items:center;gap:10px;font-weight:600;color:#0b1426;}
.glc .g-ic{width:32px;height:32px;border-radius:9px;display:flex;align-items:center;justify-content:center;font-size:12px;font-weight:700;color:#fff;flex:none;}
.glc .tag-mono{font-family:'Fira Code',monospace;font-size:12px;color:#5b6b86;}
.glc .badge{font-size:11.5px;padding:3px 10px;border-radius:20px;font-weight:600;font-family:'Fira Code',monospace;}
.glc .badge.ok{background:rgba(34,197,94,.15);color:#16a34a;}
.glc .badge.warn{background:rgba(245,158,11,.16);color:#d97706;}
.glc .badge.off{background:rgba(148,163,184,.2);color:#64748b;}
.glc .act-btns{display:flex;gap:6px;}
.glc .mini{width:30px;height:30px;border-radius:9px;background:rgba(255,255,255,.6);border:1px solid rgba(255,255,255,.75);
  display:flex;align-items:center;justify-content:center;transition:.2s;}
.glc .mini:hover{background:#fff;transform:translateY(-1px);}
.glc .mini svg{width:15px;height:15px;stroke:#5b6b86;}
@media(max-width:1024px){.glc .cards{grid-template-columns:repeat(2,1fr);}.glc .row2{grid-template-columns:1fr;}}
@media(max-width:560px){.glc .cards{grid-template-columns:repeat(2,1fr);gap:12px;}.glc .kpi .val{font-size:22px;}.glc .hello h2{font-size:18px;}.glc .spacer{display:none;}}

/* ============================================================
   17. 主菜单容器统一玻璃化（模板：进群验证页）
   统一主卡片：全宽 / 圆角18 / 半透玻璃 blur18 / 淡边 / 柔影
   ============================================================ */
.table-container,
.unified-glass-card {
  background: rgba(255,255,255,0.55) !important;
  border: 1px solid rgba(255,255,255,0.68) !important;
  border-radius: 18px !important;
  -webkit-backdrop-filter: blur(18px) saturate(165%);
          backdrop-filter: blur(18px) saturate(165%);
  box-shadow: 0 10px 30px rgba(31,52,110,0.10) !important;
}
.card, .form-container { border-radius: 18px !important; }

/* 进群验证专用分页 .jv-pg-btn 对齐通用玻璃分页 */
.jv-pg-btn {
  min-width: 34px !important; height: 34px !important; padding: 0 10px !important;
  background: rgba(255,255,255,0.55) !important;
  border: 1px solid rgba(255,255,255,0.75) !important;
  border-radius: 10px !important;
  color: #334155 !important; font-size: 13px !important;
  box-shadow: 0 2px 8px rgba(31,52,110,0.06) !important;
  transition: all .16s !important; cursor: pointer !important;
}
.jv-pg-btn:hover:not(.active) {
  background: rgba(255,255,255,0.88) !important;
  border-color: rgba(59,130,246,0.45) !important; color: #2563eb !important;
}
.jv-pg-btn.active {
  background: linear-gradient(135deg,#3b82f6,#06b6d4) !important;
  border-color: transparent !important; color: #fff !important;
  box-shadow: 0 6px 16px rgba(37,99,235,0.32) !important; font-weight: 600 !important;
}

/* TinyMCE 新版结构补漏（header / sidebar / view-wrap） */
.tox .tox-editor-header,
.tox .tox-sidebar,
.tox .tox-view-wrap,
.tox .tox-view-wrap__slot-container,
.tox .tox-dialog__header,
.tox .tox-dialog__footer {
  background: rgba(255,255,255,0.18) !important;
  background-image: none !important;
  border-color: rgba(148,163,184,0.30) !important;
}

/* ============================================================
   18. 全站白底自动收口（配合 glassify.js）
   ============================================================ */
/* 数据表格本体透明，玻璃质感由外层卡片承载 */
.ca-table, .ml-table, .ss-table, .lottery-detail-table {
  background: transparent !important;
}
.ca-table th, .ml-table th, .ss-table th, .lottery-detail-table th {
  background: rgba(255,255,255,0.40) !important;
  background-image: none !important;
}
.ca-table tr:hover, .ml-table tr:hover, .ss-table tr:hover {
  background: rgba(59,130,246,0.08) !important;
}

/* 自动玻璃化容器（JS 给白底大容器加 .auto-glass） */
.auto-glass {
  background: rgba(255,255,255,0.55) !important;
  border: 1px solid rgba(255,255,255,0.68) !important;
  border-radius: 16px !important;
  -webkit-backdrop-filter: blur(18px) saturate(165%);
          backdrop-filter: blur(18px) saturate(165%);
  box-shadow: 0 10px 30px rgba(31,52,110,0.10) !important;
}

/* 新增行虚线按钮玻璃化 */
.mi-add-row, .pqr-add-row, .wbu-add-row {
  background: rgba(255,255,255,0.40) !important;
  border: 1px dashed rgba(59,130,246,0.45) !important;
  color: #2563eb !important;
}

/* 我的群操作图标按钮：实底 + 强制图标描边，确保可见 */
.glc .mini {
  background: rgba(255,255,255,0.85) !important;
  border: 1px solid rgba(255,255,255,0.95) !important;
  color: #475569 !important;
}
.glc .mini:hover { background: #ffffff !important; }
.glc .mini svg {
  width: 16px !important; min-width: 16px !important;
  height: 16px !important; flex: 0 0 16px !important;
}
.glc .mini svg,
.glc .mini svg path,
.glc .mini svg line,
.glc .mini svg polyline,
.glc .mini svg circle,
.glc .mini svg rect { stroke: #475569 !important; }

/* 加载占位与富文本编辑器外壳玻璃化 */
.fz-loading {
  background: rgba(255,255,255,0.50) !important;
  border: 1px solid rgba(255,255,255,0.60) !important;
  border-radius: 14px !important;
}
.ap-rte {
  background: rgba(255,255,255,0.50) !important;
  border: 1px solid rgba(255,255,255,0.65) !important;
  border-radius: 12px !important;
}
