/* ============================================================
   ui-dark-components.css —— 内容页 layui 组件「macOS 深色」覆盖层
   ------------------------------------------------------------
   用途：把 ui-theme.css（浅色 · macOS 系统设置语言）里**硬编码的颜色值**
        逐段翻译成深色等价规则；不新增任何功能、不动任何布局尺寸。
   作用域：所有规则都挂 `html.gd-dark` 前缀 —— 浅色模式零影响。
   令牌：var(--g-*) 由 ui-dark.css（T1）在 html.gd-dark 内整体重定义，
        因此 ui-theme.css 里走令牌的规则（背景/文字/发丝线）会自动变深，
        本文件**只写**那些写死了 #FFFFFF / rgba(255,255,255,.x) /
        rgba(60,60,67,.x) / #C6CBD4 / #F7F7F9 之类浅色值的规则。
   加载顺序：必须排在 ui-theme.css、ui-frame.css、ui-glass-anim.css、
        ui-dark.css **之后**（同为覆盖层：靠后 + 更高特异性 + !important 生效）。
   对照蓝本：同目录 ui-theme.css（1260 行），各段注释标注对应行号区间。
   统一深色色板：画布 #1C1C1E｜卡片与面板 #2C2C2E｜嵌入面/输入底
        rgba(255,255,255,.055)~#3A3A3C｜文字 #F5F5F7 与
        rgba(235,235,245,.85/.6/.32)｜发丝线 rgba(255,255,255,.09)｜
        边框 rgba(255,255,255,.16)｜hover 填充 rgba(120,120,128,.26)｜
        行选中 rgba(10,132,255,.10)｜主蓝 #0A84FF / 亮 #3395FF｜
        绿 #30D158｜橙 #FF9F0A｜红 #FF453A｜遮罩 rgba(0,0,0,.6)。
   仅展示层：不改 DOM / id / 事件 / 接口；不改浅色。
   ============================================================ */

/* ================= 0. 画布兜底（对应 ui-theme.css 120–137） ================= */
/* layui.css 的 body 无底色，但个别业务页/嵌套容器仍会露出白底；这里兜底一次 */
html.gd-dark body{background:var(--g-bg-mid)!important;background-image:none!important;}

/* ================= 1. 全局滚动条（对应 138–147） ================= */
/* 浅色：#C6CBD4；深色：半透明白（thumb 主体 .22 / hover .32 / active .42） */
html.gd-dark ::-webkit-scrollbar{background-color:transparent;}
html.gd-dark ::-webkit-scrollbar-thumb{background-color:rgba(235,235,245,.22);border-radius:8px;border:2px solid transparent;}
html.gd-dark ::-webkit-scrollbar-thumb:hover{background-color:rgba(235,235,245,.32);}
html.gd-dark ::-webkit-scrollbar-thumb:active{background-color:rgba(235,235,245,.42);}
html.gd-dark ::-webkit-scrollbar-track{background-color:transparent;}
html.gd-dark ::-webkit-scrollbar-corner{background-color:transparent;}
/* 非 WebKit（Firefox 等）走标准属性 */
html.gd-dark *{scrollbar-width:thin;scrollbar-color:rgba(235,235,245,.22) transparent;}

/* ================= 2. 卡片（对应 176–210） ================= */
/* 卡头图标底座走 var(--g-brand-tint)（令牌），深色自动生效，此处不重复 */
html.gd-dark .layui-card{background:#2C2C2E!important;}
html.gd-dark .glc-hover:hover,html.gd-dark .gl-hoverable:hover,html.gd-dark .glc-float:hover{
  box-shadow:0 8px 24px rgba(0,0,0,.45)!important;   /* 浅色 rgba(0,0,0,.08) */
}

/* ================= 3. 筛选工具栏（对应 212–225） ================= */
html.gd-dark .layui-form.toolbar{background:#2C2C2E!important;}

/* ================= 4. 按钮（对应 227–294） ================= */
html.gd-dark .layui-btn{box-shadow:0 1px 2px rgba(0,0,0,.35);}                       /* 浅色 rgba(0,0,0,.08) */
html.gd-dark .layui-btn:hover{box-shadow:0 3px 10px rgba(10,132,255,.32);}           /* 浅色 rgba(0,122,255,.24) */
/* 次要按钮：透明底 + 白边 + 白字（深色下不再铺白面） */
html.gd-dark .layui-btn-primary{
  background:transparent!important;
  border:1px solid rgba(255,255,255,.16)!important;
  color:#F5F5F7!important;
}
html.gd-dark .layui-btn-primary:hover{
  background:rgba(120,120,128,.26)!important;color:#fff!important;border-color:rgba(255,255,255,.16)!important;
}
html.gd-dark .layui-btn-normal:hover{background:rgba(10,132,255,.26)!important;}     /* 浅色 rgba(0,122,255,.16) */
html.gd-dark .layui-btn-warm{color:var(--g-warn)!important;}                         /* 浅色 #B26A00（深底上太暗） */
html.gd-dark .layui-btn-warm:hover{background:rgba(255,159,10,.22)!important;}
html.gd-dark .layui-btn-danger:hover{background:#FF6961!important;box-shadow:0 3px 10px rgba(255,69,58,.30);}
html.gd-dark .layui-btn-disabled,html.gd-dark .layui-btn-disabled:hover{
  background:rgba(120,120,128,.26)!important;   /* 浅色 rgba(120,120,128,.12) */
}
/* 表格内图标按钮：底色透明，悬停浅品牌蓝（令牌）——无需覆盖 */
/* 语义图标 / 链接 / 状态文字（浅色写死了深色墨迹，深色下换成亮色语义色） */
html.gd-dark .text-success{color:var(--g-ok)!important;}
html.gd-dark .text-warning,html.gd-dark .text-waring{color:var(--g-warn)!important;}
html.gd-dark .ui-status-ok{color:var(--g-ok);}
html.gd-dark .ui-status-fail{color:var(--g-danger);}
html.gd-dark .ui-status-pending{color:var(--g-warn);}
html.gd-dark .layui-table-cell .layui-table-link{color:var(--g-brand)!important;}    /* layui 原生 #01AAED */
/* layui 原生 a{color:#333} 在深底上不可读；顶栏/侧栏的 <a> 各自有更高特异性的
   框架规则（.layui-nav .layui-nav-item a、.layui-side .layui-nav-tree …），不受影响 */
html.gd-dark a{color:var(--g-brand);}

/* ================= 5. 表单控件（对应 303–399） ================= */
html.gd-dark .layui-input,html.gd-dark .layui-textarea,html.gd-dark .layui-form-select .layui-input{
  background:rgba(255,255,255,.055)!important;
  border-color:rgba(255,255,255,.16)!important;
  color:var(--g-txt)!important;
}
html.gd-dark .layui-input:hover,html.gd-dark .layui-textarea:hover{border-color:rgba(255,255,255,.26)!important;}
html.gd-dark .layui-input:focus,html.gd-dark .layui-textarea:focus{
  border-color:var(--g-brand)!important;
  box-shadow:0 0 0 3.5px rgba(10,132,255,.35)!important;
}
html.gd-dark .layui-input[readonly]{background:rgba(255,255,255,.055)!important;color:var(--g-txt)!important;}
html.gd-dark .layui-input[disabled]{
  background:rgba(120,120,128,.20)!important;color:var(--g-faint)!important;border-color:transparent!important;
}
html.gd-dark .layui-input::placeholder,html.gd-dark .layui-textarea::placeholder{color:rgba(235,235,245,.35)!important;}

/* 下拉面板（layui-anim-upbit）：白面 → 卡片面；分组标题/提示项灰字提亮 */
html.gd-dark .layui-form-select dl{background:#2C2C2E!important;}
html.gd-dark .layui-form-select dl dt,
html.gd-dark .layui-form-select dl dd.layui-select-tips,
html.gd-dark .layui-select-none{color:var(--g-faint)!important;}
/* 选项 hover / 选中（令牌 var(--g-brand)）由 ui-theme.css 自动变蓝 —— 不重复 */

/* 勾选框 / 单选框
   · primary 皮肤（方框/圆圈）才是画出来的形态 → 底 rgba(255,255,255,.14)、描边提亮
   · 默认皮肤是字体图标画的圈/勾，只改颜色，绝不加 border/background（会叠成双圈） */
html.gd-dark .layui-form-checkbox[lay-skin=primary] i,
html.gd-dark .layui-form-radio[lay-skin=primary] i{
  border-color:rgba(255,255,255,.22)!important;background:rgba(255,255,255,.14)!important;
}
html.gd-dark .layui-form-checked[lay-skin=primary] i,
html.gd-dark .layui-form-radioed[lay-skin=primary] i{
  background:var(--g-brand)!important;border-color:var(--g-brand)!important;color:#fff!important;
}
html.gd-dark .layui-form-checkbox[lay-skin=primary] span,
html.gd-dark .layui-form-radio[lay-skin=primary] span{background:transparent!important;color:var(--g-txt-body)!important;}
/* 选中态也必须保持标签透明（否则 primary 皮肤的文字块会变成一块蓝底） */
html.gd-dark .layui-form-checked[lay-skin=primary] span,
html.gd-dark .layui-form-radioed[lay-skin=primary] span{background:transparent!important;color:var(--g-txt)!important;}
/* 默认皮肤的文字块（layui 原生浅灰底 / 选中青绿底）→ 深色中性底 / 品牌蓝底 */
html.gd-dark .layui-form-checkbox span{background:rgba(255,255,255,.14)!important;color:var(--g-txt-body)!important;}
html.gd-dark .layui-form-checkbox:hover span{background:rgba(255,255,255,.20)!important;}
html.gd-dark .layui-form-checked span,html.gd-dark .layui-form-checked:hover span{
  background:var(--g-brand)!important;color:#fff!important;
}
html.gd-dark .layui-form-radio>i{color:rgba(235,235,245,.35)!important;}              /* 原生 #c2c2c2 */

/* iOS 开关：off 半透明灰轨 + 亮色文字；on 与浅色一致走品牌蓝（切主题不变色） */
html.gd-dark .layui-form-switch{background:rgba(120,120,128,.32)!important;border:none!important;}
html.gd-dark .layui-form-switch em{color:rgba(235,235,245,.60)!important;}
html.gd-dark .layui-form-onswitch{background:var(--g-brand)!important;border:none!important;}
html.gd-dark .layui-form-onswitch em{color:#fff!important;}

/* 弹窗内表单底栏（浅色 #F7F7F9 → 嵌入面） */
html.gd-dark .form-group-bottom{background:rgba(255,255,255,.055)!important;}

/* form-pane 变体 / 标签 / fieldset legend（边框色来自 layui 的 #e6e6e6 汇总规则） */
html.gd-dark .layui-form-pane .layui-form-label{
  background:rgba(255,255,255,.055)!important;border-color:rgba(255,255,255,.16)!important;color:var(--g-txt-body)!important;
}
html.gd-dark .layui-form-pane .layui-form-item[pane]{border-color:rgba(255,255,255,.16)!important;}
html.gd-dark .layui-form-mid{color:var(--g-txt-body);}
html.gd-dark .layui-elem-field,html.gd-dark .layui-field-title,html.gd-dark .layui-quote-nm{
  border-color:rgba(255,255,255,.12)!important;
}
html.gd-dark .layui-elem-field legend{color:var(--g-txt);}

/* ================= 6. 表格全家（对应 401–524） ================= */
html.gd-dark .layui-table{background-color:transparent;color:var(--g-txt-body);}       /* 原生是白底 + 灰字 */
html.gd-dark .layui-table-view{background:#2C2C2E;}
html.gd-dark .layui-table thead tr{background:rgba(255,255,255,.045)!important;}      /* 浅色 #F7F7F9 */
html.gd-dark .layui-table tbody td{color:var(--g-txt-body);}
html.gd-dark .layui-table[lay-even] tbody tr:nth-child(even){background:rgba(255,255,255,.03)!important;}
/* 行 hover（浅色 #F5F5F7）；行选中 .layui-table-click 走 var(--g-brand-tint) 令牌，不重复 */
html.gd-dark .layui-table tbody tr:hover,html.gd-dark .layui-table-hover{background:rgba(10,132,255,.10)!important;}
/* 排序箭头（var(--g-brand-soft)/var(--g-brand)）已是令牌 —— 不重复 */
/* 表格线：浅色 #e6e6e6 / 令牌发丝线，统一到白系半透明 */
html.gd-dark .layui-table td,html.gd-dark .layui-table th,
html.gd-dark .layui-table-col-set,html.gd-dark .layui-table-fixed-r,html.gd-dark .layui-table-grid-down,
html.gd-dark .layui-table-header,html.gd-dark .layui-table-mend,html.gd-dark .layui-table-page,
html.gd-dark .layui-table-patch,html.gd-dark .layui-table-tool,html.gd-dark .layui-table-total,
html.gd-dark .layui-table-view{border-color:rgba(255,255,255,.09)!important;}
/* 固定列浮层必须不透明（否则滑到最右时固定列与主表副本叠成"两份操作栏"） */
html.gd-dark .layui-table-view .layui-table-fixed{background:#2C2C2E!important;}
/* 单元格「展开」箭头：浅色白底 → 深色浮层底 */
html.gd-dark .layui-table-grid-down{background:rgba(44,44,46,.92)!important;color:var(--g-brand)!important;}
html.gd-dark .layui-table-grid-down:hover{background:var(--g-brand-tint)!important;}
/* 表头工具条 / 分页条 / 合计行 / 加载占位（浅色均为白面或 #FAFBFD） */
html.gd-dark .layui-table-tool{background:#2C2C2E;}
html.gd-dark .layui-table-page{background:#2C2C2E;}
html.gd-dark .layui-table-view .layui-table-total{background:rgba(255,255,255,.045)!important;}
html.gd-dark .layui-table-init{background:rgba(255,255,255,.045)!important;}
html.gd-dark .layui-table-init .layui-icon{color:var(--g-faint)!important;}
/* 表头工具条右侧的图标按钮 / 列筛选面板（layui 原生白底灰边） */
html.gd-dark .layui-table-tool .layui-inline[lay-event]{color:var(--g-sub);border-color:rgba(255,255,255,.16);}
html.gd-dark .layui-table-tool .layui-inline[lay-event]:hover{border-color:rgba(255,255,255,.30);}
html.gd-dark .layui-table-tool-panel{background:#2C2C2E;border-color:rgba(255,255,255,.12);}
html.gd-dark .layui-table-tool-panel li:hover{background:rgba(120,120,128,.26);}
/* 空数据态（浅色白底 + 深灰图标） */
html.gd-dark .layui-none,html.gd-dark .layui-table .layui-none{background:#2C2C2E!important;color:var(--g-faint)!important;}
html.gd-dark .layui-none::before{color:rgba(255,255,255,.22);}                       /* 浅色 rgba(60,60,67,.22) */
/* 单元格展开浮层内容框（layui 原生白底 #666 字） */
html.gd-dark .layui-table-tips .layui-table-tips-c:hover{background-color:#3395FF!important;}
html.gd-dark .layui-table-tips-main{background:#2C2C2E!important;color:#F5F5F7!important;box-shadow:0 6px 20px rgba(0,0,0,.55)!important;}

/* ================= 7. 分段控件 / 内容页页签（对应 526–558） ================= */
html.gd-dark .layui-fluid .layui-tab-title{background:rgba(120,120,128,.26)!important;}  /* 浅色 rgba(120,120,128,.12) */
html.gd-dark .layui-fluid .layui-tab-title .layui-this a{
  background:#3A3A3C!important;color:var(--g-txt)!important;
  box-shadow:0 1px 3px rgba(0,0,0,.40),0 0 0 .5px rgba(255,255,255,.04);
}
html.gd-dark .layui-tab-card>.layui-tab-title{background:rgba(255,255,255,.045)!important;}  /* 浅色 #F7F7F9 */
html.gd-dark .layui-tab-card>.layui-tab-title .layui-this{background:#3A3A3C;}
/* layui 原生页签（非 .layui-fluid 形态，如弹窗内 tab）：标题条底 / 选中字 / 下划线 / 关闭钮 */
html.gd-dark .layui-tab-title li{color:var(--g-txt-body);}
html.gd-dark .layui-tab-title .layui-this{color:var(--g-txt);}
html.gd-dark .layui-tab-title .layui-this:after{
  border-color:rgba(255,255,255,.12);border-bottom-color:#2C2C2E;                     /* 原生底部白线 */
}
html.gd-dark .layui-tab-more li.layui-this:after{border-bottom-color:rgba(255,255,255,.12);}
html.gd-dark .layui-tab-brief>.layui-tab-title .layui-this{color:var(--g-brand)!important;}
html.gd-dark .layui-tab-brief>.layui-tab-title .layui-this:after,
html.gd-dark .layui-tab-brief>.layui-tab-more li.layui-this:after{
  border-bottom:2px solid var(--g-brand)!important;                                   /* 选中下划线 → 品牌蓝 */
}
html.gd-dark .layui-tab-bar{background:#2C2C2E;border-color:rgba(255,255,255,.12);}
html.gd-dark .layui-tab-title li .layui-tab-close{color:rgba(235,235,245,.32);}
html.gd-dark .layui-tab-title li .layui-tab-close:hover{background-color:var(--g-danger);color:#fff;}

/* ================= 8. 徽章 / 胶囊 / 状态点（对应 560–588） ================= */
html.gd-dark .layui-badge-dot{background-color:var(--g-danger);}                     /* 原生 #FF5722 */
html.gd-dark .layui-badge-rim{background:#2C2C2E;color:var(--g-sub);border-color:rgba(255,255,255,.16);}
html.gd-dark .layui-badge.layui-bg-green{color:var(--g-ok)!important;}               /* 浅色 #1E8E3E */
html.gd-dark .layui-badge.layui-bg-red{color:var(--g-danger)!important;}             /* 浅色 #D70015 */
html.gd-dark .layui-badge.layui-bg-orange{color:var(--g-warn)!important;}            /* 浅色 #B26A00 */
html.gd-dark .layui-badge.layui-bg-gray{background:rgba(120,120,128,.26)!important;}
/* layui 原生实心色块（业务页当标签用，框架侧未使用）：换成 Apple 深色语义色。
   ⚠ 必须 :not(.layui-badge)：徽章是「浅 tint 底 + 同色文字」，若被这里的实心色覆盖
   就会变成「红底红字 / 绿底绿字」（真机渲染自检发现的坑） */
html.gd-dark .layui-bg-red:not(.layui-badge){background-color:#FF453A!important;}
html.gd-dark .layui-bg-orange:not(.layui-badge){background-color:#FF9F0A!important;}
html.gd-dark .layui-bg-green:not(.layui-badge){background-color:#30D158!important;}
html.gd-dark .layui-bg-blue:not(.layui-badge){background-color:#0A84FF!important;}
html.gd-dark .layui-bg-black:not(.layui-badge){background-color:#48484A!important;}
html.gd-dark .layui-bg-gray:not(.layui-badge){background-color:rgba(120,120,128,.30)!important;color:var(--g-sub)!important;}
/* gl-chip / gl-dot 家族：底色走令牌 tint（自动深色），文字色浅色写死了深墨迹 → 换亮语义色 */
html.gd-dark .gl-chip-ok{color:var(--g-ok);}
html.gd-dark .gl-chip-warn{color:var(--g-warn);}
html.gd-dark .gl-chip-bad{color:var(--g-danger);}
html.gd-dark .gl-chip-gray{background:rgba(120,120,128,.26);}

/* ================= 9. 指标卡（对应 590–610） ================= */
html.gd-dark .gl-metric{background:#2C2C2E;}
html.gd-dark .gl-metric-trend.up{color:var(--g-ok);}
html.gd-dark .gl-metric-trend.down{color:var(--g-danger);}

/* ================= 10. 其它元素 / 加载态（对应 612–623） ================= */
html.gd-dark .layui-progress{background:rgba(255,255,255,.14)!important;}            /* 浅色 rgba(120,120,128,.16) */
html.gd-dark .layui-progress-text{color:var(--g-sub);}                               /* 原生 #666 */
html.gd-dark .gl-shimmer{background:linear-gradient(90deg,rgba(255,255,255,.05) 25%,rgba(255,255,255,.09) 50%,rgba(255,255,255,.05) 75%);}
/* 页面加载遮罩：admin.css 的白底 → 深色画布（半透明，避免"白闪"） */
html.gd-dark .page-loading{background-color:rgba(28,28,30,.86)!important;}
/* 代码块 / 提示块（layui 原生 #F2F2F2 底 + #333 字） */
html.gd-dark .layui-code{background-color:rgba(255,255,255,.055);border-color:rgba(255,255,255,.09);color:var(--g-txt-body);}
/* 折叠面板（layui 原生 #f2f2f2 标题条 + #333 字） */
html.gd-dark .layui-colla-title{background-color:rgba(255,255,255,.045);color:var(--g-txt);}
html.gd-dark .layui-colla-content{color:var(--g-txt-body);}
html.gd-dark .layui-collapse,html.gd-dark .layui-colla-content,html.gd-dark .layui-colla-item{
  border-color:rgba(255,255,255,.12);
}
/* 上传拖拽区（layui 原生白底虚线框 + #999 字） */
html.gd-dark .layui-upload-drag{background-color:rgba(255,255,255,.055);border-color:rgba(255,255,255,.16);color:var(--g-faint);}
html.gd-dark .layui-upload-drag .layui-icon{color:var(--g-brand);}
html.gd-dark .layui-upload-choose{color:var(--g-faint);}                              /* 原生 #999 */
/* layui tree（非 ztree）：悬停底 + 文字 */
html.gd-dark .layui-tree-entry:hover{background-color:rgba(120,120,128,.26);}
html.gd-dark .layui-tree-txt{color:var(--g-txt-body);}

/* ================= 11. 弹窗 layer 全家（对应 625–784） ================= */
html.gd-dark .layui-layer{
  background:#2C2C2E!important;
  border:1px solid rgba(255,255,255,.10)!important;
  box-shadow:0 24px 60px rgba(0,0,0,.60)!important;                                   /* 浅色 var(--g-shadow-lg) */
}
html.gd-dark .layui-layer iframe{background:#1C1C1E;}
html.gd-dark .layui-layer-title{
  background:transparent!important;                                                   /* 浅色 #F7F7F9 */
  color:var(--g-txt)!important;
  border-bottom:1px solid rgba(255,255,255,.09)!important;
}
html.gd-dark .layui-layer-content{background:#2C2C2E;color:var(--g-txt-body);}
html.gd-dark .layui-layer-page .layui-layer-content{background:#2C2C2E!important;}
html.gd-dark .layui-layer-iframe .layui-layer-content{background:#1C1C1E!important;}   /* = var(--g-bg-mid) */
html.gd-dark .layui-layer-btn{
  background:transparent!important;                                                   /* 浅色 #F7F7F9 */
  border-top:1px solid rgba(255,255,255,.09)!important;
}
html.gd-dark .layui-layer-btn a{
  background:#3A3A3C!important;color:#F5F5F7!important;border-color:transparent!important;
}
html.gd-dark .layui-layer-btn a:hover{background:#48484A!important;color:#fff!important;}
/* 主按钮（.layui-layer-btn0）走 var(--g-brand) / hover var(--g-brand-strong)，令牌自动生效 */
html.gd-dark .layui-layer-admin{background:#2C2C2E!important;}
html.gd-dark .layui-layer-admin .layui-layer-title{background:transparent!important;}
html.gd-dark .layui-layer-admin .layui-layer-content{background:#2C2C2E!important;}
/* 右上角控制按钮 */
html.gd-dark .layui-layer-setwin a{background-color:rgba(120,120,128,.26)!important;}  /* 浅色 rgba(120,120,128,.12) */
html.gd-dark .layui-layer-setwin .layui-layer-min:hover{background-color:rgba(120,120,128,.38)!important;}
/* 关闭钮 hover 红为 var(--g-danger)（令牌已变 #FF453A）；最小化/放大自绘线条用 --g-sub（令牌） */
/* 遮罩：浅色 rgba(0,0,0,.28) → 深色 0.6 */
html.gd-dark .layui-layer-shade{background-color:rgba(0,0,0,.60)!important;}
/* 气泡提示（layui 原生纯黑底 + 箭头同色） */
html.gd-dark .layui-layer-tips .layui-layer-content{background-color:#3A3A3C;color:#F5F5F7;box-shadow:0 6px 20px rgba(0,0,0,.5);}
html.gd-dark .layui-layer-tips i.layui-layer-TipsB,
html.gd-dark .layui-layer-tips i.layui-layer-TipsT{border-right-color:#3A3A3C;}
html.gd-dark .layui-layer-tips i.layui-layer-TipsL,
html.gd-dark .layui-layer-tips i.layui-layer-TipsR{border-bottom-color:#3A3A3C;}
/* 消息框（浅色为近白浮层） */
html.gd-dark .layui-layer-msg .layui-layer-content{
  background:rgba(44,44,46,.97)!important;color:var(--g-txt)!important;
  border:1px solid rgba(255,255,255,.10)!important;
  box-shadow:0 14px 40px rgba(0,0,0,.60),0 2px 6px rgba(0,0,0,.40)!important;
}
html.gd-dark .layui-layer-dialog .layui-layer-content{color:var(--g-txt)!important;}
/* 深色风格弹窗变体 / 拖拽层 / 加载遮罩底（layui 原生白底、#eee） */
html.gd-dark .layui-layer-hui{background-color:rgba(0,0,0,.75);color:#fff;}
html.gd-dark .layui-layer-load{background-color:#2C2C2E;}
html.gd-dark .layui-layer-move{background-color:#2C2C2E;}
html.gd-dark .layui-layer-tab .layui-layer-title span.layui-this{background-color:#2C2C2E;border-color:rgba(255,255,255,.09);}
html.gd-dark .layui-layer-prompt .layui-layer-input{
  background:rgba(255,255,255,.055);border-color:rgba(255,255,255,.16);color:var(--g-txt);
}

/* ================= 12. laydate 日期面板（对应 786–800） ================= */
html.gd-dark .layui-laydate,html.gd-dark .layui-laydate-hint{
  background-color:#2C2C2E;                                                           /* 原生是白底 */
  border:1px solid rgba(255,255,255,.09)!important;
}
html.gd-dark .layui-laydate{color:var(--g-txt-body);}
html.gd-dark .layui-laydate-hint{color:var(--g-danger);}                              /* 原生 #FF5722 提示红 */
html.gd-dark .layui-laydate .layui-laydate-header{background:transparent!important;}
html.gd-dark .layui-laydate .layui-laydate-content th{color:var(--g-sub);}
html.gd-dark .layui-laydate .layui-laydate-content td{color:var(--g-txt-body);}        /* 原生 #666 */
html.gd-dark .layui-laydate .layui-laydate-content td:hover,
html.gd-dark .layui-laydate .layui-laydate-list li:hover{background:var(--g-brand-tint)!important;color:var(--g-brand)!important;}
html.gd-dark .layui-laydate td.laydate-selected{background:var(--g-brand)!important;color:#fff!important;}
/* 「今天」：layui 原生 .layui-this 是青绿实心 → 品牌蓝实心 */
html.gd-dark .layui-laydate .layui-this{background-color:var(--g-brand)!important;color:#fff!important;}
/* 跨月日期（原生 #d2d2d2 / 选中 #f8f8f8） */
html.gd-dark .layui-laydate .laydate-day-next,html.gd-dark .layui-laydate .laydate-day-prev{color:rgba(235,235,245,.25);}
html.gd-dark .laydate-selected.laydate-day-next,html.gd-dark .laydate-selected.laydate-day-prev{
  background-color:rgba(255,255,255,.06)!important;
}
html.gd-dark .layui-laydate .laydate-disabled,
html.gd-dark .layui-laydate .laydate-disabled:hover{color:rgba(235,235,245,.22)!important;}
/* 月份/年份/时间选择面板（原生白底） */
html.gd-dark .layui-laydate-list{background-color:#2C2C2E;}
html.gd-dark .laydate-time-list li ol{border-color:rgba(255,255,255,.12);}
html.gd-dark .laydate-day-mark::after{background-color:var(--g-ok);}
/* 底部：快捷「今天」字 + 按钮组（原生白底灰边） */
html.gd-dark .layui-laydate-footer,
html.gd-dark .layui-laydate .laydate-footer{background:rgba(255,255,255,.045);border-top:1px solid rgba(255,255,255,.09);}
html.gd-dark .layui-laydate-footer span[lay-type=date],
html.gd-dark .layui-laydate-footer span:hover{color:var(--g-brand)!important;}
html.gd-dark .laydate-footer-btns span{background:#3A3A3C!important;border-color:transparent!important;color:var(--g-txt)!important;}
html.gd-dark .laydate-footer-btns span:hover{background:#48484A!important;color:#fff!important;}
html.gd-dark .laydate-footer-btns .laydate-btns-confirm,
html.gd-dark .layui-laydate .laydate-footer .laydate-btns-confirm{
  background:var(--g-brand)!important;color:#fff!important;border-color:transparent!important;
}

/* ================= 13. 分页 laypage（对应 490–505） ================= */
html.gd-dark .layui-laypage{background:transparent!important;}
/* 页码：与浅色同结构（透明底 + 正文色），仅把 layui 原生白底 #333 字换掉 */
html.gd-dark .layui-laypage a,html.gd-dark .layui-laypage span,html.gd-dark .layui-laypage button{
  background:transparent;color:var(--g-txt-body);
}
html.gd-dark .layui-laypage a:hover{background:rgba(120,120,128,.26)!important;color:var(--g-txt)!important;}
html.gd-dark .layui-laypage .layui-laypage-curr em,
html.gd-dark .layui-laypage .layui-laypage-curr .layui-laypage-em{background:var(--g-brand)!important;color:#fff!important;}
html.gd-dark .layui-laypage .layui-laypage-skip,
html.gd-dark .layui-laypage .layui-laypage-spr{color:var(--g-sub);}                    /* 总页数/跳转文字 原生 #999 */
/* 计数/每页条数/刷新等「非页码」元素不铺页码底 */
html.gd-dark .layui-laypage .layui-laypage-count,
html.gd-dark .layui-laypage .layui-laypage-limits,
html.gd-dark .layui-laypage .layui-laypage-refresh,
html.gd-dark .layui-laypage .layui-laypage-skip{background:transparent!important;color:var(--g-sub)!important;}
html.gd-dark .layui-laypage input,html.gd-dark .layui-laypage select{border-color:rgba(255,255,255,.16);}
html.gd-dark .layui-laypage .layui-laypage-refresh i{color:var(--g-sub);}

/* ================= 14. 下拉组件 xm-select（对应 802–865） ================= */
/* 新组件 xm-select：白面输入壳 + 近白下拉面板，深色统一到嵌入面/卡片面 */
html.gd-dark xm-select{background:rgba(255,255,255,.055)!important;}
html.gd-dark xm-select:hover{border-color:rgba(255,255,255,.26)!important;}            /* 浅色 rgba(60,60,67,.30) */
html.gd-dark xm-select > .xm-body{background:#2C2C2E!important;}                       /* 浅色为近白浮层 */
html.gd-dark xm-select > .xm-label .xm-label-block.disabled{background:rgba(120,120,128,.26)!important;}
html.gd-dark .xm-select-parent .xm-input,
html.gd-dark .xm-select-parent .xm-select--suffix .xm-input{background:rgba(255,255,255,.055)!important;}
html.gd-dark .xm-select-parent .xm-form-select dl{background:#2C2C2E!important;}       /* 浅色为近白浮层 */

/* ================= 15. ztree（对应 867–869） ================= */
html.gd-dark .ztree{color:var(--g-txt-body);}
html.gd-dark .ztree li a{color:var(--g-txt-body);}                                    /* zTreeStyle 原生 #333 */
html.gd-dark .ztree li a.curSelectedNode,
html.gd-dark .ztree li a.curSelectedNode_Edit{
  background-color:var(--g-brand-tint);color:var(--g-txt);border-color:transparent;    /* 原生橙底黑字 #FFE6B0 */
}
html.gd-dark .ztree li a.tmpTargetNode_inner{background-color:var(--g-brand);color:#fff;border-color:transparent;}

/* ================= 16. 表格视觉细节（对应 871–894） ================= */
/* fixed 列发丝线、合计行等已在第 6 段统一处理；此处只补浅色 #FAFBFD 底残留 */
html.gd-dark .layui-table-view .layui-table-init{background:rgba(255,255,255,.045)!important;}

/* ================= 17. 图标选择器 iconpicker（对应 953–1049） ================= */
html.gd-dark .layui-iconpicker .layui-anim{background:#2C2C2E!important;}              /* 浅色为近白浮层 */
html.gd-dark .layui-iconpicker .layui-iconpicker-list{background:#2C2C2E!important;}
html.gd-dark .layui-iconpicker-item{background:#2C2C2E;}
html.gd-dark .layui-iconpicker .layui-iconpicker-icon-item{background:rgba(120,120,128,.20);}
html.gd-dark .layui-iconpicker .layui-iconpicker-icon-item:hover{
  border-color:rgba(255,255,255,.20)!important;box-shadow:0 2px 8px rgba(0,0,0,.45);
}
/* 已选中图标：蓝底白标不变，蓝色光晕加深以适配深色 */
html.gd-dark .layui-iconpicker .layui-iconpicker-icon-item.layui-this,
html.gd-dark .layui-iconpicker .layui-iconpicker-icon-item.active{box-shadow:0 2px 10px rgba(10,132,255,.45);}
html.gd-dark .layui-iconpicker-page-operate i,
html.gd-dark .layui-iconpicker-page-operate .layui-icon{background:rgba(120,120,128,.26);}
/* 8 色循环：浅色用的是深墨迹色，深底上换成亮语义色（背景 tint 保留） */
html.gd-dark .layui-iconpicker .layui-iconpicker-icon-item:nth-child(8n+2) i{color:#30D158;}
html.gd-dark .layui-iconpicker .layui-iconpicker-icon-item:nth-child(8n+3) i{color:#FF9F0A;}
html.gd-dark .layui-iconpicker .layui-iconpicker-icon-item:nth-child(8n+4) i{color:#FF453A;}
html.gd-dark .layui-iconpicker .layui-iconpicker-icon-item:nth-child(8n+5) i{color:#BF5AF2;}
html.gd-dark .layui-iconpicker .layui-iconpicker-icon-item:nth-child(8n+6) i{color:#40C8E0;}
html.gd-dark .layui-iconpicker .layui-iconpicker-icon-item:nth-child(8n+7) i{color:#7D7AFF;}
html.gd-dark .layui-iconpicker .layui-iconpicker-icon-item:nth-child(8n+8){background:rgba(120,120,128,.20);}
html.gd-dark .layui-iconpicker .layui-iconpicker-icon-item:nth-child(8n+8) i{color:var(--g-faint);}

/* ================= 18. 树形表格图标（对应 1051–1079） ================= */
/* 父级文件夹蓝底白标走令牌；仅把浅色蓝色投影改深 */
html.gd-dark .layui-icon-layer{box-shadow:0 1px 2px rgba(10,132,255,.40);}

/* ================= 19. 下拉菜单（layui dropdown / easyweb 版，对应 1081–1189） ================= */
html.gd-dark .layui-dropdown{
  background:rgba(44,44,46,.92)!important;                                            /* 浅色为近白浮层 */
  border:1px solid rgba(255,255,255,.09)!important;
  box-shadow:0 16px 44px rgba(0,0,0,.55),0 2px 6px rgba(0,0,0,.40)!important;
}
html.gd-dark .layui-menu li:hover .layui-icon{background:rgba(255,255,255,.26)!important;}
html.gd-dark .dropdown-menu-nav{
  background:rgba(44,44,46,.92)!important;border:1px solid rgba(255,255,255,.09)!important;
  box-shadow:0 16px 44px rgba(0,0,0,.55),0 2px 6px rgba(0,0,0,.40)!important;
}

/* ================= 20. 弹窗表单容器 / iframe 内容页（对应 1230–1260） ================= */
/* 容器页白底是"防首帧白闪"用的；深色下换成画布色，白闪变成深闪（同样无缝）
   注：iframe 弹窗的 .layui-layer-content 已在第 11 段统一为 #1C1C1E */
html.gd-dark body.g-form-body{background:#1C1C1E!important;}
html.gd-dark body.g-form-body .form-group-bottom{background:rgba(255,255,255,.055)!important;}
html.gd-dark .layui-layer-iframe iframe{background:#1C1C1E;}

/* ================= 21. 打印（对应 928–932） ================= */
/* 打印恒为浅色，不做深色覆盖 —— 保持 ui-theme.css 原样 */

/* ================= 22. 独立页面深色补丁（T3：console/stat/AS 等不走 _container 的页面内联浅色） ================= */
/* 只覆盖颜色/背景/边框/阴影，不动任何尺寸与布局；一律挂 html.gd-dark + !important，
   用来压制这些页面 <style> 里写死的浅色与 Element-UI 默认白底。
   选择器范围：.el-*（仅 sms-list / system/config / agreement 三页引入 element-ui）
   与页面特征类名（.stat-merchant / .box-card / .err-box / #bar / #parent）。
   播放器画布页（webrtc_monitor 等）只补注入，不在此列。 */

/* ---- 22.1 Element-UI 基础件（sms-list.html / system/config.html / agreement.html） ---- */
html.gd-dark .el-card{background:#2C2C2E!important;border-color:rgba(255,255,255,.16)!important;}
html.gd-dark .el-card__header{border-bottom-color:rgba(255,255,255,.09)!important;}
html.gd-dark .el-input__inner,html.gd-dark .el-textarea__inner{background-color:rgba(255,255,255,.055)!important;border-color:rgba(255,255,255,.16)!important;color:#F5F5F7!important;}
html.gd-dark .el-input__inner::placeholder,html.gd-dark .el-textarea__inner::placeholder{color:rgba(235,235,245,.32)!important;}
html.gd-dark .el-input__inner:hover,html.gd-dark .el-textarea__inner:hover{border-color:rgba(255,255,255,.26)!important;}
html.gd-dark .el-input.is-disabled .el-input__inner,html.gd-dark .el-textarea.is-disabled .el-textarea__inner{background-color:rgba(255,255,255,.03)!important;border-color:rgba(255,255,255,.09)!important;color:rgba(235,235,245,.32)!important;}
html.gd-dark .el-input .el-input__count,html.gd-dark .el-input .el-input__count .el-input__count-inner{background:transparent!important;color:rgba(235,235,245,.6)!important;}
html.gd-dark .el-input-group__append,html.gd-dark .el-input-group__prepend{background-color:rgba(255,255,255,.055)!important;border-color:rgba(255,255,255,.16)!important;color:rgba(235,235,245,.85)!important;}
html.gd-dark .el-input-number__decrease,html.gd-dark .el-input-number__increase{background-color:rgba(255,255,255,.055)!important;border-color:rgba(255,255,255,.16)!important;color:rgba(235,235,245,.85)!important;}
html.gd-dark .el-form-item__label{color:rgba(235,235,245,.85)!important;}
html.gd-dark .el-dialog{background:#2C2C2E!important;box-shadow:0 16px 48px rgba(0,0,0,.58),0 3px 8px rgba(0,0,0,.40)!important;}
html.gd-dark .el-dialog__header{background:linear-gradient(180deg,#2C2C2E,#242426)!important;border-bottom-color:rgba(255,255,255,.09)!important;}
html.gd-dark .el-dialog__title{color:#F5F5F7!important;}
html.gd-dark .el-dialog__body{color:rgba(235,235,245,.85)!important;}
html.gd-dark .el-dialog__headerbtn .el-dialog__close{color:rgba(235,235,245,.6)!important;}
html.gd-dark .el-select-dropdown,html.gd-dark .el-popover{background:#2C2C2E!important;border-color:rgba(255,255,255,.09)!important;box-shadow:0 16px 44px rgba(0,0,0,.55)!important;}
html.gd-dark .el-select-dropdown__item{color:rgba(235,235,245,.85)!important;}
html.gd-dark .el-select-dropdown__item.hover,html.gd-dark .el-select-dropdown__item:hover{background-color:rgba(120,120,128,.26)!important;}
html.gd-dark .el-select-dropdown__item.selected{color:#0A84FF!important;}
html.gd-dark .el-table,html.gd-dark .el-table tr,html.gd-dark .el-table td{background-color:transparent!important;border-color:rgba(255,255,255,.09)!important;color:rgba(235,235,245,.85)!important;}
html.gd-dark .el-table th{background:linear-gradient(180deg,#333335,#2C2C2E)!important;border-color:rgba(255,255,255,.09)!important;color:rgba(235,235,245,.85)!important;}
html.gd-dark .el-table--striped .el-table__body tr.el-table__row--striped td{background-color:rgba(255,255,255,.03)!important;}
html.gd-dark .el-table__body tr:hover>td,html.gd-dark .el-table--enable-row-hover .el-table__body tr:hover>td{background-color:rgba(255,255,255,.055)!important;}
html.gd-dark .el-table::before,html.gd-dark .el-table--border::after,html.gd-dark .el-table--group::after{background-color:rgba(255,255,255,.09)!important;}
html.gd-dark .el-table__empty-text{color:rgba(235,235,245,.32)!important;}
html.gd-dark .el-pagination{color:rgba(235,235,245,.85)!important;}
html.gd-dark .el-pagination button,html.gd-dark .el-pager li{background-color:rgba(255,255,255,.055)!important;color:rgba(235,235,245,.85)!important;}
html.gd-dark .el-pagination.is-background .el-pager li{border:1px solid rgba(255,255,255,.09)!important;}
html.gd-dark .el-pagination.is-background .el-pager li:not(.disabled).active{background-color:#0A84FF!important;border-color:transparent!important;color:#fff!important;}
html.gd-dark .el-pagination button:disabled{background-color:rgba(255,255,255,.03)!important;color:rgba(235,235,245,.32)!important;}
html.gd-dark .el-tag{background-color:rgba(255,255,255,.055)!important;border-color:rgba(255,255,255,.16)!important;color:rgba(235,235,245,.85)!important;}
html.gd-dark .el-button--default{background-color:rgba(255,255,255,.055)!important;border-color:rgba(255,255,255,.16)!important;color:rgba(235,235,245,.85)!important;}
html.gd-dark .el-button--default:hover{background-color:rgba(120,120,128,.26)!important;border-color:rgba(255,255,255,.26)!important;color:#F5F5F7!important;}
html.gd-dark .el-button--text{color:#0A84FF!important;}
html.gd-dark .el-checkbox__inner{background-color:rgba(255,255,255,.055)!important;border-color:rgba(255,255,255,.16)!important;}
html.gd-dark .el-checkbox__label{color:rgba(235,235,245,.85)!important;}
html.gd-dark .el-checkbox__input.is-checked .el-checkbox__inner{background-color:#0A84FF!important;border-color:#0A84FF!important;}
html.gd-dark .el-checkbox__input.is-checked .el-checkbox__inner::after{border-color:#fff!important;}
html.gd-dark .el-switch__core{border-color:rgba(255,255,255,.16)!important;background-color:rgba(255,255,255,.09)!important;}
html.gd-dark .el-switch.is-checked .el-switch__core{background-color:#30D158!important;border-color:#30D158!important;}
html.gd-dark .el-message-box{background:#2C2C2E!important;border-color:rgba(255,255,255,.09)!important;box-shadow:0 16px 48px rgba(0,0,0,.58)!important;}
html.gd-dark .el-message-box__title{color:#F5F5F7!important;}
html.gd-dark .el-message-box__content{color:rgba(235,235,245,.85)!important;}
html.gd-dark .el-link.el-link--default{color:rgba(235,235,245,.85)!important;}

/* ---- 22.2 stat/comprehensive/dashboard.html：页内 #FBFCFE 面与白色渐隐遮罩 ---- */
html.gd-dark .stat-merchant{background:#2C2C2E!important;}
html.gd-dark .stat-merchant.wx{background:linear-gradient(160deg,var(--g-ok-tint),#2C2C2E)!important;}
html.gd-dark .stat-merchant.zfb{background:linear-gradient(160deg,var(--g-brand-tint),#2C2C2E)!important;}
html.gd-dark .stat-rt-summary .cell{background:#2C2C2E!important;}
html.gd-dark .col-data-stat-consume .data-stat-block{background:#2C2C2E!important;}
html.gd-dark .stat-feed::after{background:linear-gradient(transparent,rgba(28,28,30,.95))!important;}
html.gd-dark .stat-feed::before{background:linear-gradient(rgba(28,28,30,.95),transparent)!important;}

/* ---- 22.3 system/config.html 与 agreement/agreement.html：.box-card 白色描边 ---- */
html.gd-dark .box-card{border-color:rgba(255,255,255,.16)!important;}

/* ---- 22.4 appconfig/readfileerror.html：错误卡面（保留顶部红色装饰条） ---- */
html.gd-dark .err-box{background:rgba(44,44,46,.94)!important;color:#F5F5F7!important;border-left-color:rgba(255,255,255,.09)!important;border-right-color:rgba(255,255,255,.09)!important;border-bottom-color:rgba(255,255,255,.09)!important;box-shadow:0 8px 24px rgba(0,0,0,.42)!important;}

/* ---- 22.5 AS/yl_sys.html：cornsilk 工具条与运行期注入的斑马纹 ---- */
html.gd-dark #bar{background-color:rgba(44,44,46,.94)!important;}
html.gd-dark table#parent tbody{background-color:transparent!important;}

/* ================= 23. 深色一致性与动态模板兜底（T4） ================= */
/* 起因（用户线上实测的三类渲染问题）：
   ① 筛选条输入框（用户ID/昵称/账号/手机号）与下拉框观感不一致 —— 浅色版用的是
      实色 #FFFFFF!important（ui-theme.css 303 行），深色版原为半透明
      rgba(255,255,255,.055)，叠在不同底色上会「发灰不均、没有填满框」；
   ② 「编辑昵称」类弹窗整体白卡、文字看不清 —— DOM 是 JS 拼 HTML 动态生成的，
      类名/id 不在任何 CSS 文件里；
   ③ 用户列表「用户」列（头像+昵称+ID+包名）文字看不清 —— 列模板是 JS 字符串里的
      内联 style（如 color:blue），纯蓝 #0000FF 在 #2C2C2E 上对比度仅约 1.6:1。
   本段只做三件事：输入框实色化、动态弹窗兜底、表格结构兜底。
   写法约定：全部挂 html.gd-dark 前缀；用 !important 对抗内联 style
   （作者 !important 能压过「非 !important」的内联声明）；
   不用通配选择器；属性选择器只匹配代码里**实际出现过**的内联取值，
   并限定在弹窗内容层 / iframe 表单容器 / 表格内，不外溢到普通页面。 */

/* ---- 23.1 输入框实色化统一（浅色 #FFFFFF 实色 → 深色 #38383A 实色） ---- */
/* 注：与第 5 段（本文件 80–94 行）选择器相同、位置更靠后，属**有意覆盖**，不是冲突。 */
html.gd-dark .layui-input,
html.gd-dark .layui-textarea,
html.gd-dark .layui-form-select .layui-input{
  background:#38383A!important;
  border-color:rgba(255,255,255,.16)!important;
  color:#F5F5F7!important;
}
html.gd-dark .layui-input::placeholder,
html.gd-dark .layui-textarea::placeholder{color:rgba(235,235,245,.38)!important;}
html.gd-dark .layui-input:hover,
html.gd-dark .layui-textarea:hover,
html.gd-dark .layui-form-select .layui-input:hover{border-color:rgba(255,255,255,.28)!important;}
html.gd-dark .layui-input:focus,
html.gd-dark .layui-textarea:focus,
html.gd-dark .layui-form-select .layui-input:focus{
  border-color:#0A84FF!important;
  box-shadow:0 0 0 3.5px rgba(10,132,255,.35)!important;
}
/* 下拉箭头：layui 原生 border-top-color:#c2c2c2（为浅色底设计），深底上太暗 */
html.gd-dark .layui-form-select .layui-edge{border-top-color:rgba(235,235,245,.6)!important;}
html.gd-dark .layui-select-disabled .layui-edge{border-top-color:rgba(235,235,245,.28)!important;}
/* 向上弹出的下拉框变体：空间不足时 layui 给 .layui-form-select 追加 -up 类，
   输入壳 DOM 为 .layui-form-selectup .layui-select-title > input（见 lay/modules/form.js） */
html.gd-dark .layui-form-selectup .layui-select-title .layui-input,
html.gd-dark .layui-form-selectup .layui-select-title input{
  background:#38383A!important;
  border-color:rgba(255,255,255,.16)!important;
  color:#F5F5F7!important;
}
html.gd-dark .layui-form-selectup .layui-select-title .layui-input:hover,
html.gd-dark .layui-form-selectup .layui-select-title input:hover{border-color:rgba(255,255,255,.28)!important;}
/* 只读：浅色 ui-theme.css 给的是 #FFFFFF 实色 → 深色实色，比普通输入浅一档 */
html.gd-dark .layui-input[readonly]{
  background:#3A3A3C!important;
  color:#F5F5F7!important;
  border-color:rgba(255,255,255,.16)!important;
}

/* ---- 23.2 动态弹窗（layer.open / layer.prompt / func.open）深色兜底 ---- */
/* 作用域说明：type:1 弹窗的内容在父页 .layui-layer-content 里；type:2 弹窗的内容在
   iframe 自己的文档里（body 为 .g-form-body，见 pages/common/_form.html），故两者都挂。
   以下选择器全部来自「代码里实际存在的类名 / id」。 */
/* ① layui prompt 输入框：layer.js 生成 <input class="layui-layer-input">，
      layer.css 写死 border #e6e6e6 / color #333，且无背景色 */
html.gd-dark .layui-layer-input{
  background:#38383A!important;
  border-color:rgba(255,255,255,.16)!important;
  color:#F5F5F7!important;
}
html.gd-dark .layui-layer-input::placeholder{color:rgba(235,235,245,.38)!important;}
html.gd-dark .layui-layer-input:focus{
  border-color:#0A84FF!important;
  box-shadow:0 0 0 3.5px rgba(10,132,255,.35)!important;
}
/* ② 弹窗内容层与按钮（补第 11 段：内容层文字色 + 按钮 !important 一致性） */
html.gd-dark .layui-layer-content{color:rgba(235,235,245,.85)!important;}
html.gd-dark .layui-layer .layui-layer-btn a{
  background:#3A3A3C!important;
  color:#F5F5F7!important;
  border-color:transparent!important;
}
html.gd-dark .layui-layer .layui-layer-btn a:hover{background:#48484A!important;color:#fff!important;}
/* ③ 「编辑昵称」浮层：expand_common.js:1672 / 1749 注入
      <div id="editNickname_{userId}" style="...background: white; border: 1px solid #ccc...">
      —— 只有 id 前缀没有类名，内部 <p>/<input> 也没有类名，必须一起兜底 */
html.gd-dark [id^="editNickname_"]{
  background:#2C2C2E!important;
  border-color:rgba(255,255,255,.16)!important;
  color:var(--g-txt)!important;
  box-shadow:0 16px 48px rgba(0,0,0,.58)!important;
}
html.gd-dark [id^="editNickname_"] p{color:var(--g-txt)!important;}
html.gd-dark [id^="editNickname_"] input{
  background:#38383A!important;
  border:1px solid rgba(255,255,255,.16)!important;
  border-radius:6px!important;
  color:#F5F5F7!important;
}
/* ④ 充值限额「全屏详情」弹窗：rechargeLimit.js:193–330 把一段 <style> 拼进 layer content，
      类名 .fullscreen-detail 家族（白卡 #fff / 标签 #666 / 值 #333 / 底栏 #fafafa / 分隔线 #f0f0f0） */
html.gd-dark .fullscreen-detail{
  background:#2C2C2E!important;
  box-shadow:0 16px 48px rgba(0,0,0,.58)!important;
}
html.gd-dark .fullscreen-detail .detail-item{border-bottom-color:rgba(255,255,255,.09)!important;}
html.gd-dark .fullscreen-detail .item-label{color:var(--g-sub)!important;}
html.gd-dark .fullscreen-detail .item-value{color:var(--g-txt-body)!important;}
html.gd-dark .fullscreen-detail .detail-footer{
  background-color:rgba(255,255,255,.045)!important;
  border-top-color:rgba(255,255,255,.09)!important;
}
/* ⑤ 表格选择浮层：tableSelect.js:36 把 <div class="tableSelect"> 直接 append 到 body，
      内联 background-color:#fff / border #d2d2d2 */
html.gd-dark .tableSelect{
  background-color:#2C2C2E!important;
  border-color:rgba(255,255,255,.16)!important;
  box-shadow:0 16px 44px rgba(0,0,0,.55)!important;
}
/* ⑥ 表格行内下拉菜单：tableX.js:575–613 运行时注入 <style>，
      .tbx-dropdown-menu 白底 / 选项 #555 / hover #eeeeee */
html.gd-dark .tbx-dropdown-menu{
  background:#2C2C2E!important;
  border-color:rgba(255,255,255,.16)!important;
  box-shadow:0 16px 44px rgba(0,0,0,.55)!important;
}
html.gd-dark .tbx-dropdown-menu .tbx-dropdown-menu-item{color:var(--g-txt-body)!important;}
html.gd-dark .tbx-dropdown-menu .tbx-dropdown-menu-item:hover{background-color:rgba(120,120,128,.26)!important;}
/* ⑦ 包名下拉列表：config2003.js:35 动态拼 <a style="color:#3A4A66">（深底上不可读） */
html.gd-dark #packageList li a,
html.gd-dark #packageList li a div{color:var(--g-txt-body)!important;}
html.gd-dark #packageList li.layui-this a,
html.gd-dark #packageList li.layui-this a div,
html.gd-dark #packageList li a:hover div{color:var(--g-brand)!important;}
/* ⑧ 弹窗 / iframe 表单内的「内联浅底 + 深字」：JS 拼字符串写死，无法按类覆盖，
      取值全部来自代码扫描（清单见交付报告），用属性选择器精确匹配，
      范围限定在弹窗内容层与 iframe 表单容器内。 */
html.gd-dark .layui-layer-content [style*="background:#f5f5f5"],
html.gd-dark .layui-layer-content [style*="background: #f5f5f5"],
html.gd-dark .layui-layer-content [style*="background:#f8f9fb"],
html.gd-dark .layui-layer-content [style*="background: #f8f9fb"],
html.gd-dark .layui-layer-content [style*="background:#f6ffed"],
html.gd-dark .layui-layer-content [style*="background: #f6ffed"],
html.gd-dark .layui-layer-content [style*="background:#fff;"],
html.gd-dark .layui-layer-content [style*="background: #fff;"],
html.gd-dark .layui-layer-content [style*="background:#ffffff"],
html.gd-dark .layui-layer-content [style*="background-color: #fff;"],
html.gd-dark .layui-layer-content [style*="background-color:#fff;"],
html.gd-dark body.g-form-body [style*="background:#f5f5f5"],
html.gd-dark body.g-form-body [style*="background: #f5f5f5"],
html.gd-dark body.g-form-body [style*="background:#f8f9fb"],
html.gd-dark body.g-form-body [style*="background:#f6ffed"],
html.gd-dark body.g-form-body [style*="background: #f6ffed"],
html.gd-dark body.g-form-body [style*="background-color: #fff;"],
html.gd-dark body.g-form-body [style*="background-color:#fff;"]{
  background:#3A3A3C!important;
}
html.gd-dark .layui-layer-content [style*="color:#333"],
html.gd-dark .layui-layer-content [style*="color: #333"],
html.gd-dark .layui-layer-content [style*="color:#555"],
html.gd-dark .layui-layer-content [style*="color: #555"],
html.gd-dark .layui-layer-content [style*="color:#3A4A66"],
html.gd-dark .layui-layer-content [style*="color: #3A4A66"],
html.gd-dark body.g-form-body [style*="color:#333"],
html.gd-dark body.g-form-body [style*="color: #333"],
html.gd-dark body.g-form-body [style*="color:#555"],
html.gd-dark body.g-form-body [style*="color: #555"]{
  color:var(--g-txt-body)!important;
}
html.gd-dark .layui-layer-content [style*="color:#666"],
html.gd-dark .layui-layer-content [style*="color: #666"],
html.gd-dark .layui-layer-content [style*="color:#999"],
html.gd-dark .layui-layer-content [style*="color: #999"],
html.gd-dark .layui-layer-content [style*="color:#888"],
html.gd-dark .layui-layer-content [style*="color: #888"],
html.gd-dark .layui-layer-content [style*="color:#6E6E73"],
html.gd-dark .layui-layer-content [style*="color: #6E6E73"],
html.gd-dark body.g-form-body [style*="color:#666"],
html.gd-dark body.g-form-body [style*="color: #666"],
html.gd-dark body.g-form-body [style*="color:#999"],
html.gd-dark body.g-form-body [style*="color: #999"]{
  color:var(--g-sub)!important;
}
html.gd-dark .layui-layer-content [style*="border-bottom:1px solid #f0f0f0"],
html.gd-dark .layui-layer-content [style*="border-bottom: 1px solid #f0f0f0"]{
  border-bottom-color:rgba(255,255,255,.09)!important;
}
/* ⑨ 弹窗内「更多操作」按钮：user.js:2277 的 .more-operation-item 带内联
      background-color:#0A84FF / color:white，却被本文件第 4 段的
      .layui-btn-primary{background:transparent!important} 反压成透明底 —— 此处还原作者意图 */
html.gd-dark .more-operation-item,
html.gd-dark .more-operation-item.layui-btn-primary{
  background-color:#0A84FF!important;
  border-color:transparent!important;
  color:#fff!important;
}
html.gd-dark .more-operation-item:hover,
html.gd-dark .more-operation-item.layui-btn-primary:hover{background-color:#3395FF!important;color:#fff!important;}

/* ---- 23.3 表格列模板（laytpl / templet）结构兜底 ---- */
/* 内联 style 由 JS 字符串输出，无法按类覆盖；这里只对**确定结构**写规则：
     · 单元格链接：laytpl 里大量 <a style="color:blue"> / color:red，纯蓝 #0000FF 在
       深底上对比度约 1.6:1 —— 统一提到品牌亮蓝；:not(.layui-btn) 避开操作按钮，
       避免把按钮文字一起染色。
     · 「用户」列（expand_common.js:1618 / 1696 的 portraitObjFormat /
       portraitObjFormatWithRemark）：昵称是 <span style="color:blue">，有备注时
       变量输出 color:red；.special-info 类名确定，用属性选择器精确匹配内联值，
       保留「红=有备注」的语义区分。
     · 表格内链接/徽章的结构性色值（其余 JS 内联色不做猜测，清单见交付报告）。 */
html.gd-dark .layui-table td a:not(.layui-btn){color:var(--g-brand-bright)!important;}
html.gd-dark .layui-table .special-info span[style*="color:blue"]{color:var(--g-brand-bright)!important;}
html.gd-dark .layui-table .special-info span[style*="color:red"]{color:var(--g-danger)!important;}
html.gd-dark .layui-table td .layui-badge-rim{
  color:var(--g-sub)!important;
  border-color:rgba(255,255,255,.22)!important;
}

/* 23.x 主控裁决补充：表格内联彩色文字深色兜底（内联 style 属性选择器，限定表格作用域） */
html.gd-dark .layui-table td [style*="color:blue"],
html.gd-dark .layui-table td [style*="color:#0000FF"],
html.gd-dark .layui-table td [style*="color:#0000ff"]{color:var(--g-brand-bright)!important;}
html.gd-dark .layui-table td [style*="color:red"],
html.gd-dark .layui-table td [style*="color:#FF0000"],
html.gd-dark .layui-table td [style*="color:#ff0000"]{color:#FF6961!important;}
/* 新人标签浅橙底 → 深色琥珀底（expand_common.js 新人标签） */
html.gd-dark [style*="background:#FFF3E0"],
html.gd-dark [style*="background: #FFF3E0"],
html.gd-dark [style*="background:#fff3e0"]{background:rgba(255,159,10,.18)!important;color:#FFD60A!important;}

/* ================= 24. clearable 输入框与下拉层级修复（T5：线上实机取证后定向修复） ================= */
/* 24.1 带 clearable 属性的输入框（expand_common.js 会把 input 改造成「无边框+宽85%+外层1px #E6E6E6 边框」，
        深色下外层是亮白边、input 只占 85% —— 用户看到的「白边框、灰色没填满框」即此）。
        用 :has() 结构选择器（Edge 105+ 支持）+ 属性选择器双保险，把外层框统一成一个完整深色输入框 */
html.gd-dark .layui-inline:has(> .input-clear-div),
html.gd-dark .layui-input-block:has(> .input-clear-div),
html.gd-dark .layui-inline[style*="rgb(230, 230, 230)"],
html.gd-dark .layui-input-block[style*="rgb(230, 230, 230)"]{
  border:1px solid rgba(255,255,255,.16)!important;
  border-radius:8px!important;
  background:#38383A!important;
  box-sizing:border-box!important;
}
html.gd-dark .layui-inline:has(> .input-clear-div) .layui-input,
html.gd-dark .layui-input-block:has(> .input-clear-div) .layui-input{
  background:transparent!important;
  border:none!important;
  width:85%!important;
}
html.gd-dark .input-clear-div{background:transparent!important;}
html.gd-dark .input-clear-div .input-clear-div-icon,
html.gd-dark .layui-inline:has(> .input-clear-div) .input-clear-div-icon{color:rgba(235,235,245,.45)!important;background:transparent!important;}
html.gd-dark .input-clear-div .input-clear-div-icon:hover{color:#F5F5F7!important;}

/* 24.2 表单内 select 下拉面板被 fixed 底栏（z-index:9999）盖住 → 下拉最后一项选不到。
        layui 下拉面板默认 z-index 899，提到 10000（远低于 layer 弹窗 19891014，不会越权） */
html.gd-dark .layui-form-select dl{z-index:10000!important;}
html.gd-dark .layui-anim-upbit{z-index:10000!important;}

/* 24.3 密码展示徽章（password-display）显式深色兜底：深蓝底 + 亮蓝字 + 蓝边 */
html.gd-dark .password-display{
  background:rgba(10,132,255,.14)!important;
  border:1px solid rgba(10,132,255,.35)!important;
  color:#64B5FF!important;
}

/* 24.4 用户详情页（info_common.js / user_detail.js 运行时注入 + user_bag 硬编码渐变）*/
/* label 格：JS 给偶数格刷的 #E7EEF8（jQuery 序列化为 rgb 形式，两种都枚举）→ 深色 label 格 */
html.gd-dark .user-detail-table td[style*="rgb(231, 238, 248)"],
html.gd-dark .user-table-info td[style*="rgb(231, 238, 248)"],
html.gd-dark .user-detail-table td[style*="#E7EEF8"],
html.gd-dark .user-table-info td[style*="#E7EEF8"],
html.gd-dark tr > td[style*="rgb(231, 238, 248)"],
html.gd-dark tr > td[style*="#E7EEF8"]{background:#3A3A3C!important;color:#F5F5F7!important;}
/* 道具信息页静态表头浅蓝渐变 → 深色表头 */
html.gd-dark .gl-bag-head td{background:#3A3A3C!important;color:#F5F5F7!important;}
/* 道具信息页空数据态浅蓝渐变 → 深色 */
html.gd-dark .layui-table tbody td[colspan]{background:#2C2C2E!important;color:rgba(235,235,245,.32)!important;}

/* ================= 25. 侧栏选中双层色 + 快捷日期胶囊（线上实机取证后定向修复） ================= */
/* 25.1 侧栏选中项 li 背景是旧主题深靛蓝 #1B47D2（layui 残留），与内部亮蓝胶囊形成双色叠层 → li 透明化 */
html.gd-dark .layui-side .layui-nav-tree .layui-this,
html.gd-dark .layui-side .layui-nav-tree .layui-this:hover,
html.gd-dark .layui-side .layui-nav-tree .layui-nav-item.layui-this{background:transparent!important;}
/* 子菜单展开容器同理（若 li 有选中底色） */
html.gd-dark .layui-side .layui-nav-tree .layui-nav-child dd.layui-this{background:transparent!important;}

/* 25.2 快捷日期胶囊（expand_common.js 内联写死浅色时代配色）：
   未选中项 color:#26314B 深藏青（深底上不可见）→ 提亮；边框 #E6EDF6 → 深色发丝线；
   选中项 color/border #1B47D2 深靛蓝 → 深色品牌蓝胶囊。jQuery 序列化为 rgb 形式，两种格式都枚举 */
html.gd-dark .inline-quick-date li[style*="color:#26314B"],
html.gd-dark .inline-quick-date li[style*="color: #26314B"],
html.gd-dark .inline-quick-date li[style*="rgb(38, 49, 75)"]{
  color:rgba(235,235,245,.62)!important;
  border-color:rgba(255,255,255,.16)!important;
}
html.gd-dark .inline-quick-date li[style*="color:#1B47D2"],
html.gd-dark .inline-quick-date li[style*="color: #1B47D2"],
html.gd-dark .inline-quick-date li[style*="rgb(27, 71, 210)"]{
  color:#64B5FF!important;
  border-color:rgba(10,132,255,.55)!important;
  background:rgba(10,132,255,.16)!important;
}

/* ================= 26. 树容器页（系统用户管理等 _tree_container）+ xm-select 深色（线上实机取证） ================= */
/* 26.1 左树布局容器白底 → 深色（.ui-layout-* 来自 expand/style.css 的经典布局） */
html.gd-dark .ui-layout-west,
html.gd-dark .ui-layout-west .box-main,
html.gd-dark .ui-layout-west .ui-layout-content,
html.gd-dark .ui-layout-center,
html.gd-dark #deptTree{background:transparent!important;box-shadow:none!important;}
/* 26.2 ztree 深色：文字/悬停/选中/连线 */
html.gd-dark .ztree li a{color:rgba(235,235,245,.85)!important;background-color:transparent!important;}
html.gd-dark .ztree li a:hover{background:rgba(120,120,128,.26)!important;}
html.gd-dark .ztree li a.curSelectedNode,
html.gd-dark .ztree li a.curSelectedNode_Edit{background:rgba(10,132,255,.22)!important;color:#64B5FF!important;border:1px solid rgba(10,132,255,.45)!important;opacity:1!important;}
html.gd-dark .ztree li ul.line{background:none!important;}
html.gd-dark .ztree li span.button.ico_open,
html.gd-dark .ztree li span.button.ico_close,
html.gd-dark .ztree li span.button.ico_docu{filter:invert(.82) hue-rotate(180deg)!important;}
/* 26.3 xm-select（编辑用户弹窗 app 多选树）面板/搜索框/选项深色 */
html.gd-dark .xm-select-parent .xm-body,
html.gd-dark .xm-body{background:#2C2C2E!important;border:1px solid rgba(255,255,255,.16)!important;box-shadow:0 12px 34px rgba(0,0,0,.55)!important;}
html.gd-dark .xm-body input,
html.gd-dark .xm-select input.xm-input{background:#38383A!important;color:#F5F5F7!important;border:1px solid rgba(255,255,255,.16)!important;}
html.gd-dark .xm-body input::placeholder{color:rgba(235,235,245,.35)!important;}
html.gd-dark .xm-option-content,
html.gd-dark .xm-tree span{color:rgba(235,235,245,.85)!important;}
html.gd-dark .xm-select .xm-label .xm-label-block,
html.gd-dark .xm-label-block{background:rgba(120,120,128,.32)!important;color:#F5F5F7!important;}
html.gd-dark .xm-search,
html.gd-dark .xm-toolbar,
html.gd-dark .xm-paging,
html.gd-dark .xm-select-empty{color:rgba(235,235,245,.6)!important;background:transparent!important;}
html.gd-dark .xm-iconfont{color:rgba(235,235,245,.7)!important;}

/* ================= 26.4 xm-select 全组件深色（高特异性：与组件注入样式表同路径选择器，压过其 #FFF/#333/#666 写法） ================= */
html.gd-dark xm-select{background-color:#38383A!important;border-color:rgba(255,255,255,.16)!important;}
html.gd-dark xm-select:hover,html.gd-dark xm-select:focus{border-color:rgba(255,255,255,.32)!important;}
html.gd-dark xm-select>.xm-tips{color:rgba(235,235,245,.4)!important;}
html.gd-dark xm-select>.xm-icon{border-top-color:rgba(235,235,245,.6)!important;}
html.gd-dark xm-select>.xm-label .xm-label-block{background-color:rgba(120,120,128,.32)!important;}
html.gd-dark xm-select>.xm-label .xm-label-block>span,
html.gd-dark xm-select>.xm-label .xm-label-block>i{color:#F5F5F7!important;}
html.gd-dark xm-select>.xm-label .xm-label-block.disabled{background-color:rgba(120,120,128,.2)!important;}
html.gd-dark xm-select>.xm-body{background-color:#2C2C2E!important;border-color:rgba(255,255,255,.16)!important;box-shadow:0 12px 34px rgba(0,0,0,.55)!important;}
html.gd-dark xm-select>.xm-body .scroll-body::-webkit-scrollbar-track{background-color:transparent!important;}
html.gd-dark xm-select>.xm-body .scroll-body::-webkit-scrollbar-thumb{background-color:rgba(235,235,245,.25)!important;}
html.gd-dark xm-select>.xm-body .xm-group-item{color:rgba(235,235,245,.45)!important;}
html.gd-dark xm-select>.xm-body .xm-option-content{color:rgba(235,235,245,.85)!important;}
html.gd-dark xm-select>.xm-body .xm-option:hover .xm-option-content{color:#F5F5F7!important;}
html.gd-dark xm-select>.xm-body .xm-option-icon{border-color:rgba(255,255,255,.35)!important;background-color:transparent!important;}
html.gd-dark xm-select>.xm-body .xm-option.selected .xm-option-content{color:#64B5FF!important;}
html.gd-dark xm-select>.xm-body .xm-option.selected .xm-option-icon{color:#64B5FF!important;border-color:#64B5FF!important;}
html.gd-dark xm-select>.xm-body .xm-option.selected[style*="background"]{background-color:rgba(10,132,255,.18)!important;}
html.gd-dark xm-select>.xm-body .xm-select-empty{color:rgba(235,235,245,.4)!important;}
html.gd-dark xm-select>.xm-body .disabled:hover{background-color:transparent!important;}
html.gd-dark xm-select>.xm-body .disabled .xm-option-content{color:rgba(235,235,245,.3)!important;}
html.gd-dark xm-select>.xm-body .xm-search{background-color:#2C2C2E!important;}
html.gd-dark xm-select>.xm-body .xm-search>i{color:rgba(235,235,245,.5)!important;}
html.gd-dark xm-select>.xm-body .xm-search-input{border-bottom-color:rgba(255,255,255,.16)!important;background-color:transparent!important;color:#F5F5F7!important;}
html.gd-dark xm-select>.xm-body .xm-paging>span{background-color:#3A3A3C!important;color:rgba(235,235,245,.85)!important;border-color:rgba(255,255,255,.16)!important;}
html.gd-dark xm-select>.xm-body .xm-toolbar{background-color:#2C2C2E!important;}
html.gd-dark xm-select>.xm-body .xm-toolbar .toolbar-tag{color:rgba(235,235,245,.7)!important;}
html.gd-dark xm-select>.xm-body .xm-cascader-box{background-color:#2C2C2E!important;border-color:rgba(255,255,255,.16)!important;}
html.gd-dark xm-select>.xm-body .xm-cascader-box::before{border-right-color:rgba(255,255,255,.16)!important;}
html.gd-dark xm-select>.xm-body .xm-cascader-box::after{border-right-color:#2C2C2E!important;}
html.gd-dark xm-select>.xm-body .xm-tree .left-line,
html.gd-dark xm-select>.xm-body .xm-tree .top-line{border-color:rgba(255,255,255,.18)!important;}
html.gd-dark xm-select .xm-input{background-color:#38383A!important;color:#F5F5F7!important;border-color:rgba(255,255,255,.16)!important;}
html.gd-dark xm-select .xm-select-disabled{background-color:rgba(28,28,30,.6)!important;}
html.gd-dark xm-select .item--divided{border-top-color:rgba(255,255,255,.12)!important;}
html.gd-dark xm-select .xm-right-arrow{color:rgba(235,235,245,.5)!important;}
html.gd-dark xm-select .loading{background-color:rgba(28,28,30,.7)!important;}

/* ================= 27. 三方组件深色全覆盖（T5 全组件巡检） ================= */
/* 起因（用户铁律「举一反三」，2026-09-22）：xm-select 的工具栏/搜索框/选中项连漏三轮 ——
   三方组件各自带一套写死浅色的样式（多为运行时注入 <style>，且常带 !important），
   「报一处修一处」必然继续漏。本段把 assets/common/module 下**全部有 UI 的三方组件**
   一次性覆盖到位。
   方法：① 逐组件读 JS 内嵌 <style> 字符串与配套 CSS，枚举所有写死的浅色背景
         （#FFF/#fff/white/rgba(255,255,255,x)/#F5F8FE 系）与深色文字（#333/#555/#666/#999 系）；
        ② 覆盖一律用「组件真实 DOM 类名路径 + html.gd-dark 前缀 + !important」，
           特异性恒高于组件原规则（原规则多在 (0,1,0)~(0,4,1)，本段为原规则 +1 类 +1~2 元素）；
        ③ 只写颜色/背景/边框/阴影/图标色，零布局尺寸改动。
   不重复：26.4/26.3（xm-select 全家）、26.2/15（zTree 常规节点）、22（tableSelect/tableX/
   用户详情表）、19（dropdown 浮层底）、11–13（layer/laydate/laypage/表单控件）、
   1（滚动条）、24.1（clearable 输入框）已覆盖者不再写；本段只补它们遗漏的细节
   （逐条特异性对照见交付报告）。
   跳过（不写规则，理由）：ckeditor 内容区（用户数据不该强制深色，含 contents.css 与
   代码高亮主题）、Player.js / videojs / ueditor / svga（铁律 10：播放器与画布容器不动）、
   printer.js（打印窗口恒为浅色，见第 21 段）、QRCode.js / ClipboardJS.js / md5 /
   mousewheel.js / Split.js(仅布局) / formX.js / lay.js / index.js / treeSelect.css /
   treetable.css（无任何写死的浅色或深色文字）。 */

/* ---- 27.1 cascader 级联选择器（cascader.css：.ew-cascader-*，原色 #fff/#d2d2d2/#555/#666/#999/#f3f3f3） ---- */
html.gd-dark .ew-cascader-dropdown{background:#2C2C2E!important;border-color:rgba(255,255,255,.16)!important;box-shadow:0 12px 34px rgba(0,0,0,.55)!important;}
html.gd-dark .ew-cascader-dropdown-list{border-right-color:rgba(255,255,255,.09)!important;}
html.gd-dark .ew-cascader-dropdown-list-item{color:rgba(235,235,245,.85)!important;}
html.gd-dark .ew-cascader-dropdown-list-item:hover{background-color:rgba(120,120,128,.26)!important;color:#F5F5F7!important;}
html.gd-dark .ew-cascader-dropdown-list-item.active{background-color:rgba(10,132,255,.22)!important;color:#64B5FF!important;}
html.gd-dark .ew-cascader-dropdown-list-item .ew-icon-right,
html.gd-dark .ew-cascader-dropdown-list-item .ew-icon-loading{color:rgba(235,235,245,.6)!important;}
html.gd-dark .ew-cascader-dropdown-list-item.active .ew-icon-right{color:#64B5FF!important;}
html.gd-dark .ew-cascader-dropdown-list-item.ew-cascader-disabled{color:rgba(235,235,245,.32)!important;}
html.gd-dark .ew-cascader-dropdown-list-item.ew-cascader-disabled .ew-icon-right{color:rgba(235,235,245,.24)!important;}
html.gd-dark .ew-cascader-input-group>.ew-icon-arrow,
html.gd-dark .ew-cascader-input-group>.ew-icon-loading{color:rgba(235,235,245,.6)!important;}
html.gd-dark .ew-cascader-input-group>.ew-icon-clear{color:rgba(235,235,245,.45)!important;}
html.gd-dark .ew-cascader-input-group.show-search .ew-cascader-input{color:rgba(235,235,245,.85)!important;}
html.gd-dark .ew-cascader-input-group.have-value .ew-cascader-input-search{background-color:rgba(255,255,255,.055)!important;}
html.gd-dark .ew-cascader-search-list{background:#2C2C2E!important;border-color:rgba(255,255,255,.16)!important;box-shadow:0 12px 34px rgba(0,0,0,.55)!important;}
html.gd-dark .ew-cascader-search-list-item{color:rgba(235,235,245,.85)!important;}
html.gd-dark .ew-cascader-search-list-item:hover{background-color:rgba(120,120,128,.26)!important;color:#F5F5F7!important;}
html.gd-dark .ew-cascader-search-list-item .search-keyword{color:#FF6B60!important;}
html.gd-dark .ew-cascader-search-list-item.ew-cascader-disabled{color:rgba(235,235,245,.32)!important;}
html.gd-dark .ew-cascader-search-list-item.ew-cascader-disabled .search-keyword{color:#FF453A!important;}
html.gd-dark .ew-cascader-search-list-empty{color:rgba(235,235,245,.6)!important;}

/* ---- 27.2 city-picker 城市选择器（city-picker.css：.city-picker-* / .city-select*，原色 #fff/#e6e6e6/#f0f0f0/#333） ---- */
html.gd-dark .city-picker-span{border-color:rgba(255,255,255,.16)!important;background-color:#38383A!important;color:rgba(235,235,245,.85)!important;}
html.gd-dark .city-picker-span>.placeholder{color:rgba(235,235,245,.32)!important;}
html.gd-dark .city-picker-span.open{border-bottom-color:rgba(10,132,255,.55)!important;}
html.gd-dark .city-picker-span>.title>span{color:#F5F5F7!important;}
html.gd-dark .city-picker-span>.title>span:hover{background-color:rgba(10,132,255,.18)!important;}
html.gd-dark .city-picker-span>.arrow{filter:invert(.82) hue-rotate(180deg)!important;}
html.gd-dark .city-select-wrap{background:#2C2C2E!important;border-color:rgba(255,255,255,.16)!important;box-shadow:0 16px 44px rgba(0,0,0,.55)!important;}
html.gd-dark .city-select-tab{border-bottom-color:rgba(255,255,255,.09)!important;background:rgba(255,255,255,.055)!important;}
html.gd-dark .city-select-tab>a{border-left-color:rgba(255,255,255,.09)!important;color:rgba(235,235,245,.85)!important;}
html.gd-dark .city-select-tab>a.active{background:#2C2C2E!important;border-bottom-color:#2C2C2E!important;color:#64B5FF!important;}
html.gd-dark .city-select-tab>a:last-child.active{border-right-color:rgba(255,255,255,.09)!important;}
html.gd-dark .city-select-content{background-color:#2C2C2E!important;}
html.gd-dark .city-select a{color:rgba(235,235,245,.85)!important;}
html.gd-dark .city-select a:hover,
html.gd-dark .city-select a:focus{background-color:rgba(10,132,255,.18)!important;color:#64B5FF!important;}
html.gd-dark .city-select a.active{background-color:rgba(10,132,255,.85)!important;color:#fff!important;}

/* ---- 27.3 dtree 树（dtree.css：.dtree-*，原规则全部带 !important，覆盖必须同带 !important 且特异性更高） ---- */
html.gd-dark .dtree-toolbar{background-color:#2C2C2E!important;}
html.gd-dark .dtree-theme-item-this{background-color:rgba(10,132,255,.22)!important;}
html.gd-dark .dtree-theme-item:hover{background-color:rgba(120,120,128,.26)!important;}
html.gd-dark .dtree-theme-item:hover cite{color:#64B5FF!important;}
html.gd-dark .dtree-theme-ficon{color:rgba(235,235,245,.85)!important;}
html.gd-dark .dtree-theme-icon{color:#FF9F0A!important;}
html.gd-dark .dtree-theme-checkbox:hover{color:#64B5FF!important;}
html.gd-dark .dtree-theme-choose{color:#64B5FF!important;}
html.gd-dark .dtree-layui-item-this{background-color:rgba(10,132,255,.22)!important;}
html.gd-dark .dtree-layui-item:hover{background-color:rgba(120,120,128,.26)!important;}
html.gd-dark .dtree-layui-item:hover cite{color:#64B5FF!important;}
html.gd-dark .dtree-layui-ficon,
html.gd-dark .dtree-layui-icon{color:rgba(235,235,245,.85)!important;}
html.gd-dark .dtree-layui-checkbox:hover{color:#64B5FF!important;}
html.gd-dark .dtree-layui-choose{color:#64B5FF!important;}

/* ---- 27.4 formSelects 下拉多选（formSelects-v4.css，被 user_add/user_edit/dept_add 等 7 处实际引用）----
   注：ui-theme.css 已用令牌覆盖 .xm-input / .xm-form-select dl / dl dd / dl dd:hover /
   dl dd.xm-select-this / .xm-tips / label span（含 skin 变体），26.3 已覆盖 .xm-body；
   这里只补它们**没有**覆盖的硬编码残留。 */
html.gd-dark .xm-select-parent .xm-form-select dl dt{color:rgba(235,235,245,.32)!important;}
html.gd-dark .layui-select-disabled .xm-dis-disabled{border-color:rgba(255,255,255,.09)!important;}
html.gd-dark .xm-form-checkbox>i{border-color:rgba(255,255,255,.35)!important;}
html.gd-dark .xm-form-checkbox>span{background-color:transparent!important;color:rgba(235,235,245,.85)!important;}
html.gd-dark .xm-select-parent .xm-form-select dl dd.xm-dis-disabled{background-color:transparent!important;}
html.gd-dark .xm-select-dis .xm-select--suffix+div{background-color:rgba(28,28,30,.6)!important;}
html.gd-dark .xm-select-disabled,
html.gd-dark .xm-select-disabled:hover{background-color:rgba(255,255,255,.03)!important;color:rgba(235,235,245,.32)!important;}
html.gd-dark .xm-select-none:hover{background-color:transparent!important;}
html.gd-dark div[xm-select-skin=primary] dl dd:not(.xm-dis-disabled) i,
html.gd-dark div[xm-select-skin=normal] dl dd:not(.xm-dis-disabled) i{border-color:rgba(255,255,255,.35)!important;}
html.gd-dark div[xm-select-skin=primary] dl dd.xm-select-this:not(.xm-dis-disabled) i,
html.gd-dark div[xm-select-skin=normal] dl dd.xm-select-this:not(.xm-dis-disabled) i{color:#64B5FF!important;}
html.gd-dark .xm-select-parent dd>.xm-cz-group{border-right-color:rgba(255,255,255,.16)!important;}
html.gd-dark .xm-select-parent dd .xm-cz:hover,
html.gd-dark div[xm-select-skin=primary] dd .xm-cz:hover,
html.gd-dark div[xm-select-skin=normal] dd .xm-cz:hover{color:#64B5FF!important;}
html.gd-dark .xm-select-tips .xm-input{border-bottom-color:rgba(255,255,255,.16)!important;}
html.gd-dark .xm-select-tips[style]:hover{background-color:transparent!important;}
html.gd-dark .xm-select-linkage li.xm-select-this span{border-left-color:rgba(10,132,255,.55)!important;color:#64B5FF!important;}
html.gd-dark .xm-select-linkage-group li:hover{border-left-color:rgba(10,132,255,.55)!important;}
/* 级联面板 4 层：原 #F5F5F5 → #FAFAFA → #FFFFFF 逐层变亮，深色下改为逐层变浅 */
html.gd-dark .xm-select-linkage-group:nth-child(4n+1) li.xm-select-active{background-color:rgba(255,255,255,.03)!important;}
html.gd-dark .xm-select-linkage-group:nth-child(4n+2){background-color:rgba(255,255,255,.045)!important;}
html.gd-dark .xm-select-linkage-group:nth-child(4n+3){background-color:rgba(255,255,255,.055)!important;}
html.gd-dark .xm-select-linkage-group:nth-child(4n+3) li.xm-select-active{background-color:rgba(255,255,255,.075)!important;}
html.gd-dark .xm-select-linkage-group:nth-child(4n+4){background-color:rgba(255,255,255,.09)!important;}
html.gd-dark div[xm-select-skin='primary'] .xm-select-linkage li.xm-select-this span,
html.gd-dark div[xm-select-skin='normal'] .xm-select-linkage li.xm-select-this span{border-left-color:rgba(10,132,255,.55)!important;color:#64B5FF!important;}
html.gd-dark div[xm-select-skin='primary'] .xm-select-linkage-group li:hover,
html.gd-dark div[xm-select-skin='normal'] .xm-select-linkage-group li:hover{border-left-color:rgba(10,132,255,.55)!important;}
/* admin.css:1508 的 body div[xm-select-skin=default] label>span{color:#888} 特异性高于 ui-theme 的令牌规则，单独提亮 */
html.gd-dark body div[xm-select-skin=default] .xm-select-title div.xm-select-label>span{color:#64B5FF!important;}

/* ---- 27.5 tagsInput 标签输入框（tagsInput.css：div.tagsinput / .tagsinput-tip-list，原色 #FFF/#e6e6e6/#666） ---- */
html.gd-dark div.tagsinput{border-color:rgba(255,255,255,.16)!important;background:transparent!important;}
html.gd-dark div.tagsinput:hover{border-color:rgba(255,255,255,.26)!important;}
html.gd-dark div.tagsinput input{color:#F5F5F7!important;}
html.gd-dark div.tagsinput span.tag{background:rgba(10,132,255,.75)!important;color:#fff!important;}
html.gd-dark .tagsinput.tagsinput-default span.tag{background:rgba(120,120,128,.2)!important;border-color:rgba(255,255,255,.16)!important;color:rgba(235,235,245,.85)!important;}
html.gd-dark .tagsinput.tagsinput-default span.tag a{color:rgba(235,235,245,.45)!important;}
html.gd-dark .tagsinput.tagsinput-default input{border-color:rgba(255,255,255,.16)!important;}
html.gd-dark .tagsinput.tagsinput-default input:focus{border-color:rgba(255,255,255,.26)!important;}
html.gd-dark .tagsinput-tip-list{background:#2C2C2E!important;border-color:rgba(255,255,255,.16)!important;box-shadow:0 12px 34px rgba(0,0,0,.55)!important;}
html.gd-dark .tagsinput-tip-list li{color:rgba(235,235,245,.85)!important;}
html.gd-dark .tagsinput-tip-list li:hover{background:rgba(120,120,128,.26)!important;}

/* ---- 27.6 step-lay 步骤条（step.css：.lay-step / .step-item*，原色 #ffffff/#555555/#aaaaaa） ---- */
html.gd-dark .step-item-tail i{background:#3A3A3C!important;}
html.gd-dark .step-item-tail .step-item-tail-done{background:#0A84FF!important;}
html.gd-dark .step-item-head{color:#64B5FF!important;border-color:rgba(10,132,255,.55)!important;background:#38383A!important;}
html.gd-dark .step-item-head.step-item-head-active{background:#0A84FF!important;border-color:#0A84FF!important;color:#ffffff!important;}
html.gd-dark .step-item-main-title{color:#F5F5F7!important;}
html.gd-dark .step-item-main-desc{color:rgba(235,235,245,.32)!important;}

/* ---- 27.7 notice 消息通知 iziToast（notice.css：.iziToast 白卡 + 深色标题字） ---- */
html.gd-dark .iziToast{background:#2C2C2E!important;border-color:rgba(255,255,255,.09)!important;box-shadow:0 12px 34px rgba(0,0,0,.55)!important;color:rgba(235,235,245,.85)!important;}
html.gd-dark .iziToast>.iziToast-progressbar{background:rgba(255,255,255,.09)!important;}
html.gd-dark .iziToast>.iziToast-progressbar>div{background:rgba(255,255,255,.24)!important;}
html.gd-dark .iziToast>.iziToast-body .iziToast-title{color:#F5F5F7!important;}
html.gd-dark .iziToast>.iziToast-body .iziToast-message{color:rgba(235,235,245,.85)!important;}
html.gd-dark .iziToast>.iziToast-body .iziToast-buttons>a,
html.gd-dark .iziToast>.iziToast-body .iziToast-buttons>button,
html.gd-dark .iziToast>.iziToast-body .iziToast-buttons>input:not([type=checkbox]):not([type=radio]){background:rgba(255,255,255,.12)!important;color:rgba(235,235,245,.85)!important;}
html.gd-dark .iziToast>.iziToast-body .iziToast-buttons>a:hover,
html.gd-dark .iziToast>.iziToast-body .iziToast-buttons>button:hover,
html.gd-dark .iziToast>.iziToast-body .iziToast-buttons>input:not([type=checkbox]):not([type=radio]):hover{background:rgba(255,255,255,.2)!important;}
html.gd-dark .iziToast>.iziToast-body .iziToast-buttons>a:focus,
html.gd-dark .iziToast>.iziToast-body .iziToast-buttons>button:focus,
html.gd-dark .iziToast>.iziToast-body .iziToast-buttons>input:not([type=checkbox]):not([type=radio]):focus{box-shadow:0 0 0 1px rgba(10,132,255,.55)!important;}

/* ---- 27.8 introJs 新手引导（introJs.css：挖空层 + 白色气泡 + 白色箭头 + 灰按钮） ---- */
html.gd-dark .introjs-helperLayer{background-color:#2C2C2E!important;}
html.gd-dark .introjs-disableInteraction{background-color:transparent!important;}
html.gd-dark .introjs-tooltip{background-color:#2C2C2E!important;color:rgba(235,235,245,.85)!important;}
html.gd-dark .introjs-arrow.top,
html.gd-dark .introjs-arrow.top-right,
html.gd-dark .introjs-arrow.top-middle{border-bottom-color:#2C2C2E!important;}
html.gd-dark .introjs-arrow.right,
html.gd-dark .introjs-arrow.right-bottom{border-left-color:#2C2C2E!important;}
html.gd-dark .introjs-arrow.bottom,
html.gd-dark .introjs-arrow.bottom-right,
html.gd-dark .introjs-arrow.bottom-middle{border-top-color:#2C2C2E!important;}
html.gd-dark .introjs-arrow.left,
html.gd-dark .introjs-arrow.left-bottom{border-right-color:#2C2C2E!important;}
html.gd-dark .introjs-button{border-color:rgba(255,255,255,.16)!important;background-color:#3A3A3C!important;background-image:none!important;color:#F5F5F7!important;text-shadow:none!important;box-shadow:none!important;}
html.gd-dark .introjs-button:hover{border-color:rgba(255,255,255,.26)!important;background-color:rgba(120,120,128,.38)!important;}
html.gd-dark .introjs-button:focus,
html.gd-dark .introjs-button:active{background-image:none!important;box-shadow:0 0 0 2px rgba(10,132,255,.45)!important;}
html.gd-dark .introjs-skipbutton{color:rgba(235,235,245,.6)!important;}
html.gd-dark .introjs-disabled,
html.gd-dark .introjs-disabled:hover,
html.gd-dark .introjs-disabled:focus{color:rgba(235,235,245,.32)!important;border-color:rgba(255,255,255,.09)!important;background-color:rgba(255,255,255,.055)!important;}
html.gd-dark .introjs-bullets ul li a{background:rgba(235,235,245,.24)!important;}
html.gd-dark .introjs-bullets ul li a:hover,
html.gd-dark .introjs-bullets ul li a.active{background:#64B5FF!important;}
html.gd-dark .introjs-progress{background-color:rgba(255,255,255,.09)!important;}
html.gd-dark .introjs-hint-pulse{border-color:rgba(235,235,245,.35)!important;background-color:rgba(235,235,245,.2)!important;}
html.gd-dark .introjs-hint:hover>.introjs-hint-pulse{border-color:rgba(235,235,245,.6)!important;}

/* ---- 27.9 dropdown 下拉菜单补充（dropdown.css；19 段已覆盖浮层底/边框/阴影，此处补选项、分隔线、小箭头） ---- */
html.gd-dark .dropdown-menu-nav>li>a{color:rgba(235,235,245,.85)!important;}
html.gd-dark .dropdown-menu-nav>li>a:hover{background-color:rgba(120,120,128,.26)!important;color:#F5F5F7!important;}
html.gd-dark .dropdown-menu-nav>li.disabled>a,
html.gd-dark .dropdown-menu-nav>li.disabled>a:hover{color:rgba(235,235,245,.32)!important;}
html.gd-dark .dropdown-menu-nav>li.title{color:rgba(235,235,245,.32)!important;}
html.gd-dark .dropdown-menu-nav>hr{background-color:rgba(255,255,255,.09)!important;}
/* 小箭头：外三角 8px 走发丝线色、内三角 7px 走面板底色（逐方向覆盖非透明的"可见边"，不能改 border-color 简写，否则方向透明会被压掉） */
html.gd-dark .dropdown-menu-nav.dropdown-bottom-left .dropdown-anchor,
html.gd-dark .dropdown-menu-nav.dropdown-bottom-right .dropdown-anchor,
html.gd-dark .dropdown-menu-nav.dropdown-bottom-center .dropdown-anchor{border-bottom-color:rgba(255,255,255,.16)!important;}
html.gd-dark .dropdown-menu-nav.dropdown-bottom-left .dropdown-anchor:after,
html.gd-dark .dropdown-menu-nav.dropdown-bottom-right .dropdown-anchor:after,
html.gd-dark .dropdown-menu-nav.dropdown-bottom-center .dropdown-anchor:after{border-bottom-color:#2C2C2E!important;}
html.gd-dark .dropdown-menu-nav.dropdown-top-left .dropdown-anchor,
html.gd-dark .dropdown-menu-nav.dropdown-top-right .dropdown-anchor,
html.gd-dark .dropdown-menu-nav.dropdown-top-center .dropdown-anchor{border-top-color:rgba(255,255,255,.16)!important;}
html.gd-dark .dropdown-menu-nav.dropdown-top-left .dropdown-anchor:after,
html.gd-dark .dropdown-menu-nav.dropdown-top-right .dropdown-anchor:after,
html.gd-dark .dropdown-menu-nav.dropdown-top-center .dropdown-anchor:after{border-top-color:#2C2C2E!important;}
html.gd-dark .dropdown-menu-nav.dropdown-left-top .dropdown-anchor,
html.gd-dark .dropdown-menu-nav.dropdown-left-bottom .dropdown-anchor,
html.gd-dark .dropdown-menu-nav.dropdown-left-center .dropdown-anchor{border-left-color:rgba(255,255,255,.16)!important;}
html.gd-dark .dropdown-menu-nav.dropdown-left-top .dropdown-anchor:after,
html.gd-dark .dropdown-menu-nav.dropdown-left-bottom .dropdown-anchor:after,
html.gd-dark .dropdown-menu-nav.dropdown-left-center .dropdown-anchor:after{border-left-color:#2C2C2E!important;}
html.gd-dark .dropdown-menu-nav.dropdown-right-top .dropdown-anchor,
html.gd-dark .dropdown-menu-nav.dropdown-right-bottom .dropdown-anchor,
html.gd-dark .dropdown-menu-nav.dropdown-right-center .dropdown-anchor{border-right-color:rgba(255,255,255,.16)!important;}
html.gd-dark .dropdown-menu-nav.dropdown-right-top .dropdown-anchor:after,
html.gd-dark .dropdown-menu-nav.dropdown-right-bottom .dropdown-anchor:after,
html.gd-dark .dropdown-menu-nav.dropdown-right-center .dropdown-anchor:after{border-right-color:#2C2C2E!important;}

/* ---- 27.10 contextMenu 右键菜单（contextMenu.js 运行时注入 .ctxMenu/.ctxMenu-sub，原色 white/#666/#f2f2f2） ---- */
html.gd-dark .ctxMenu,
html.gd-dark .ctxMenu-sub{background:#2C2C2E!important;border-color:rgba(255,255,255,.16)!important;box-shadow:0 16px 44px rgba(0,0,0,.55)!important;}
html.gd-dark .ctxMenu-item>a{color:rgba(235,235,245,.85)!important;}
html.gd-dark .ctxMenu-item>a:hover{background:rgba(120,120,128,.26)!important;color:#F5F5F7!important;}
html.gd-dark .ctxMenu-item>a>.icon-more,
html.gd-dark .ctxMenu-item>a>.ctx-icon{color:rgba(235,235,245,.6)!important;}
html.gd-dark .ctxMenu hr{background-color:rgba(255,255,255,.09)!important;}

/* ---- 27.11 dataGrid 数据网格（dataGrid.js 注入 .ew-datagrid-*，原色 #666/rgba(0,0,0,.03)/#C3C3C3） ---- */
html.gd-dark .ew-datagrid-loadmore{color:rgba(235,235,245,.85)!important;}
html.gd-dark .ew-datagrid-loadmore>div:hover{background-color:rgba(255,255,255,.055)!important;}
html.gd-dark .ew-datagrid-loading:before{color:rgba(235,235,245,.45)!important;}

/* ---- 27.12 soulTable 表格增强（固定列合计行内联 background-color:#fff；子表 tab 卡 jQuery 内联 background:white） ---- */
html.gd-dark .layui-table-total-fixed[style*="#fff"],
html.gd-dark .layui-table-total-fixed[style*="#FFF"]{background-color:#2C2C2E!important;}
html.gd-dark .layui-table-fixed .layui-tab-card{background:#2C2C2E!important;}

/* ---- 27.13 zTree 拖拽/遮罩/复选（expand/plugins/ztree/zTreeStyle.css 扩展部分；26.2/15 已覆盖常规节点） ---- */
html.gd-dark ul.ztree.zTreeDragUL{background-color:rgba(44,44,46,.94)!important;border-color:rgba(10,132,255,.55)!important;}
html.gd-dark ul.tmpTargetzTree{background-color:rgba(10,132,255,.18)!important;}
html.gd-dark .zTreeMask{background-color:#000!important;}
html.gd-dark .ztree li span.button.chk{filter:invert(.82) hue-rotate(180deg)!important;}

/* ---- 27.14 Cropper 图片裁剪（Cropper.css；只改外框/虚线/棋盘格与拖拽面，裁剪线 #39f 等语义色与图片本体不动） ---- */
html.gd-dark .cropper-drag-box{background-color:#2C2C2E!important;}
html.gd-dark .cropper-dashed{border-color:rgba(235,235,245,.55)!important;}
html.gd-dark .cropper-center:before,
html.gd-dark .cropper-center:after{background-color:rgba(235,235,245,.55)!important;}
html.gd-dark .cropper-face{background-color:#F5F5F7!important;}
html.gd-dark .cropper-bg{filter:invert(1) hue-rotate(180deg)!important;}

/* ---- 27.15 Split 分割面板（Split.css：.gutter 浅灰面 #f8f8f9 + 浅灰握把 #dcdee2） ---- */
html.gd-dark .gutter{background-color:#2C2C2E!important;border-color:rgba(255,255,255,.09)!important;}
html.gd-dark .gutter.gutter-horizontal:before,
html.gd-dark .gutter.gutter-horizontal:after,
html.gd-dark .gutter.gutter-vertical:before,
html.gd-dark .gutter.gutter-vertical:after{border-color:rgba(255,255,255,.16)!important;}

/* ---- 27.16 CircleProgress 圆形进度（JS 用 SVG 属性写死 stroke/fill；CSS 声明优先于表现属性） ---- */
html.gd-dark .circle-progress-circle{stroke:rgba(255,255,255,.14)!important;}
html.gd-dark .circle-progress-text{fill:rgba(235,235,245,.85)!important;}
html.gd-dark .circle-progress-text-value,
html.gd-dark .circle-progress-text-max{fill:rgba(235,235,245,.85)!important;}
html.gd-dark .circle-progress-text-separator{fill:rgba(235,235,245,.32)!important;}

/* ---- 27.17 fileChoose 文件选择器（fileChoose.html 内嵌 <style>：整页 #fff 底 + #333 文件名 + #eee 缩略图底） ---- */
html.gd-dark .file-choose-dialog{background:#1C1C1E!important;}
html.gd-dark .file-choose-dialog .file-choose-top-bar{background-color:#1C1C1E!important;}
html.gd-dark .file-choose-dialog .file-choose-bottom-bar{background-color:#1C1C1E!important;border-top-color:rgba(255,255,255,.09)!important;}
html.gd-dark .file-choose-dialog .file-choose-list-item:hover{background-color:rgba(255,255,255,.055)!important;}
html.gd-dark .file-choose-dialog .file-choose-list-item-img{background-color:rgba(255,255,255,.055)!important;}
html.gd-dark .file-choose-dialog .file-choose-list-item-name{color:rgba(235,235,245,.85)!important;}

/* ---- 27.18 EasyWeb admin.css 组件级残留（地图选点 / 上传块 / 表情面板 / 禁用输入 / 徽章 / 表格工具条） ----
   注：admin.css 的框架外壳（header/side/footer/body tab）由 ui-theme.css 令牌 + ui-dark.css 负责，
   已核对覆盖，不在本段重复；这里只收组件级硬编码。 */
html.gd-dark input.layui-disabled,
html.gd-dark input.layui-disabled:hover{background-color:rgba(255,255,255,.055)!important;color:rgba(235,235,245,.32)!important;}
html.gd-dark .ew-map-select-search-list-item{border-bottom-color:rgba(255,255,255,.09)!important;}
html.gd-dark .ew-map-select-search-list-item:hover{background:rgba(120,120,128,.26)!important;}
html.gd-dark .ew-map-select-search-list-item .ew-map-select-search-list-item-title{color:rgba(235,235,245,.85)!important;}
html.gd-dark .ew-map-select-search-list-item .ew-map-select-search-list-item-address{color:rgba(235,235,245,.6)!important;}
html.gd-dark .ew-map-select-search-list-item-icon-search .layui-icon{color:rgba(235,235,245,.32)!important;}
html.gd-dark #ew-map-select-tips{background:#2C2C2E!important;border-color:rgba(255,255,255,.16)!important;color:rgba(235,235,245,.85)!important;}
html.gd-dark .table-tool-mini .layui-table-tool{border-color:rgba(255,255,255,.09)!important;}
html.gd-dark .table-tool-mini.full-table .layui-table-tool:before{background-color:rgba(255,255,255,.045)!important;border-color:rgba(255,255,255,.09)!important;}
html.gd-dark .layui-badge-list .layui-badge{background-color:rgba(255,255,255,.055)!important;border-color:rgba(255,255,255,.16)!important;}
html.gd-dark .layui-laydate-range .laydate-main-list-1 .layui-laydate-header{border-top-color:rgba(255,255,255,.09)!important;}
html.gd-dark .layui-tree-spread>div>div>span>.layui-tree-iconArrow:after{border-color:rgba(235,235,245,.45) transparent transparent transparent!important;}
html.gd-dark body .layui-util-face .layui-layer-content{background-color:#2C2C2E!important;}
html.gd-dark .slide-block-upload{border-color:rgba(255,255,255,.16)!important;color:rgba(235,235,245,.32)!important;}
html.gd-dark .layui-layer.layui-layer-admin .layui-layer-setwin a{color:rgba(235,235,245,.6)!important;}
html.gd-dark .layui-layer.layui-layer-admin .layui-layer-setwin .layui-layer-min cite{background-color:rgba(235,235,245,.6)!important;}
html.gd-dark .lay-big-font{color:rgba(235,235,245,.6)!important;}
html.gd-dark .bg-white{background-color:#2C2C2E!important;}
html.gd-dark .btn-circle{background:#0A84FF!important;color:#ffffff!important;}
html.gd-dark .text-primary,
html.gd-dark .text-info{color:#0A84FF!important;}
html.gd-dark .layui-text a:not(.layui-btn){color:#409CFF!important;}

/* ================= 27.19 退款订单页（refundOrder.html，随 c5cdd9eb 新增）浅色内联兜底 ================= */
html.gd-dark .rf-money-ok{color:#30D158!important;}
html.gd-dark .rf-diff,
html.gd-dark .rf-warn{color:#FFD60A!important;}
html.gd-dark .rf-formula{color:#FFD60A!important;border-color:rgba(255,214,10,.35)!important;background:rgba(255,214,10,.08)!important;}
html.gd-dark .rf-formula-source{background:rgba(255,214,10,.16)!important;color:#FFD60A!important;}

/* ================= 27.20 通知面板数字角标（用户实测：彩色背景看不清 → 去背景只留数字） ================= */
/* 2026-09-22 用户反馈：浅色模式下同样要去背景，且数字颜色统一红色 */
.layui-nav-child .layui-badge{
  background-color:transparent!important;
  border:none!important;box-shadow:none!important;outline:none!important;
  color:#FF3B30!important;
  padding:0 3px!important;
  font-weight:600!important;
  font-size:12px!important;
  text-shadow:none!important;
}
/* 27.21/27.22 铃铛面板角标最终版（2026-09-22 用户要求：只留数字、颜色统一红）
   ⚠ 2026-09-22 二次修正（同日）：失效根因：面板真实类名是 .sys_msg_tips，**不是** .sys_ms。
     来源：assets/common/js/index-notification.js 的 dropdown.render({className:'sys_msg_tips'})
           与 pages/index.html 中 dropdown.reload("sys_msg",{className:'sys_msg_tips'})；
           实测渲染 DOM：.layui-dropdown.layui-panel.sys_msg_tips > ul.layui-menu > li > .layui-menu-body-title > a > span.layui-badge
     `.sys_ms` 在全仓库没有任何元素使用（只被旧 CSS 自己引用过），所以旧规则从未命中，
     角标一直显示 layui 原始的实心胶囊（青/红/绿/橙/蓝底 + 白字）。
   特异性核算（双方都带 !important，只能靠特异性决胜；本文件在 ui-theme.css 之后加载）：
     · layui.css     .layui-bg-cyan{background-color:#2F4056!important}                 (0,1,0)
     · ui-theme.css  .layui-badge.layui-bg-green{background:var(--g-ok-tint)!important} (0,2,0)
     · 深色按色规则   html.gd-dark .layui-badge.layui-bg-red{color:...!important}       (0,3,1)
     · ui-theme.css  .layui-menu li:hover .layui-badge{background:rgba(255,255,255,.3)} (0,3,1)
   故用 "html body .sys_msg_tips ..." 前缀把特异性抬到 (0,3,2)，一条规则同时压过浅色、深色与 hover。 */
html body .sys_msg_tips .layui-badge,
html body .sys_msg_tips .layui-badge[style*="background"],
html body .sys_msg_tips .layui-badge[class*="layui-bg"],
html body .sys_msg_tips span[class*="layui-bg"]{
  background:transparent!important;
  background-color:transparent!important;
  border:none!important;
  box-shadow:none!important;
  outline:none!important;
  color:#FF3B30!important;
  padding:0 3px!important;
  font-weight:600!important;
  font-size:12px!important;
  text-shadow:none!important;
}
/* 悬停：行底色翻成品牌蓝，红字在蓝底上对比不足 → 沿用 ui-theme 的“反色”思路，
   只去掉它那层白色半透明底（用户要求：不要背景框），文字保持白色 (0,4,3) 压过通用规则。 */
html body .sys_msg_tips .layui-menu li:hover .layui-badge{
  background:transparent!important;
  background-color:transparent!important;
  color:#fff!important;
}

/* ================= 28. 通知提示（layer.msg）苹果化微调（浅色+深色共用段，无前缀；ui-theme 为禁改既有文件故置于此） ================= */
/* 浅色：毛玻璃纯白面 + 中性阴影（去掉发蓝的旧阴影，与深色毛玻璃同构） */
.layui-layer-msg .layui-layer-content{
  background:rgba(255,255,255,.80)!important;
  -webkit-backdrop-filter:blur(24px) saturate(180%)!important;
  backdrop-filter:blur(24px) saturate(180%)!important;
  border:1px solid rgba(0,0,0,.05)!important;
  box-shadow:0 8px 28px rgba(0,0,0,.12),0 1px 3px rgba(0,0,0,.06)!important;
  font-size:15px!important;font-weight:600!important;
}
/* 深色：同构毛玻璃（透明度从 .97 调成 .80 + blur，质感统一） */
html.gd-dark .layui-layer-msg .layui-layer-content{
  background:rgba(44,44,46,.80)!important;
  -webkit-backdrop-filter:blur(24px) saturate(180%)!important;
  backdrop-filter:blur(24px) saturate(180%)!important;
}
/* 图标：统一 28px、垂直居中（浅深一致） */
.layui-layer-msg .layui-layer-ico,
html.gd-dark .layui-layer-msg .layui-layer-ico{width:28px!important;height:28px!important;left:16px!important;margin-top:-14px!important;top:50%!important;}

/* ================= 29. 弹窗图标苹果化（用户要求：图标底透明，CSS 重绘符号；msg + dialog/confirm 全覆盖） ================= */
/* 去掉 layui 雪碧图位图底，透明容器 + 圆环描边 + 居中符号 */
.layui-layer-msg .layui-layer-ico,
.layui-layer-dialog .layui-layer-ico,
.layui-layer .layui-layer-ico0,
.layui-layer .layui-layer-ico1,
.layui-layer .layui-layer-ico2,
.layui-layer .layui-layer-ico3{
  background:none!important;
  width:28px!important;height:28px!important;
  border-radius:50%!important;
  display:flex!important;align-items:center!important;justify-content:center!important;
  font-size:15px!important;font-weight:700!important;
  font-family:var(--g-font,"Inter",-apple-system,"PingFang SC",sans-serif)!important;
}
/* 成功 icon1：绿圆环 + ✓ */
.layui-layer .layui-layer-ico1{
  border:2px solid rgba(48,209,88,.5)!important;color:#30D158!important;
}
.layui-layer .layui-layer-ico1::after{content:'✓';}
/* 错误 icon2：红圆环 + ✕ */
.layui-layer .layui-layer-ico2{
  border:2px solid rgba(255,69,58,.5)!important;color:#FF453A!important;
}
.layui-layer .layui-layer-ico2::after{content:'✕';}
/* 问号 icon3 / icon0：黄圆环 + ?（confirm 询问语义） */
.layui-layer .layui-layer-ico3,
.layui-layer .layui-layer-ico0{
  border:2px solid rgba(255,214,10,.55)!important;color:#FFD60A!important;
}
.layui-layer .layui-layer-ico3::after,
.layui-layer .layui-layer-ico0::after{content:'?';}
/* dialog 弹窗图标保持 layui 原生定位（标题左上），仅继承透明化绘制 */

/* ================= 27.23 layui 原生浅色类漏网补齐（全量扫描 layui.css 后统一补漏；含用户实测的固定列 patch 白块） ================= */
/* 固定列补丁块（layui 原生 #F2F2F2 → 透明，露出卡片底） */
html.gd-dark .layui-table-patch,
html.gd-dark .layui-table-patch .layui-table-cell{background:transparent!important;}
/* 通用面板/组件面：#fff / #F2F2F2 → 深色面板 */
html.gd-dark .layui-elem-quote,
html.gd-dark .layui-colla-title,
html.gd-dark .layui-panel,
html.gd-dark .layui-panel-window,
html.gd-dark .layui-table-tool-panel,
html.gd-dark .layui-transfer-box,
html.gd-dark .layui-tab-bar,
html.gd-dark .layui-tab-card>.layui-tab-title,
html.gd-dark .layui-code,
html.gd-dark .layui-colorpicker-main,
html.gd-dark .layui-colorpicker-side-slider,
html.gd-dark .layui-colorpicker-alpha-slider,
html.gd-dark .layui-slider-step,
html.gd-dark .layui-slider-wrap-btn,
html.gd-dark .layui-menu,
html.gd-dark .layui-nav-child,
html.gd-dark body .layui-util-face .layui-layer-content,
html.gd-dark .layui-util-face ul,
html.gd-dark .layui-carousel,
html.gd-dark .layui-carousel>[carousel-item]>*{background-color:#2C2C2E!important;}
/* 上述组件的悬停/选中行 → 深灰面 */
html.gd-dark .layui-menu li:hover,
html.gd-dark .layui-table-tool-panel li:hover,
html.gd-dark .layui-transfer-data li:hover,
html.gd-dark .layui-nav .layui-nav-child a:hover{background:rgba(120,120,128,.26)!important;}
html.gd-dark .layui-tab-card>.layui-tab-title .layui-this{background:#3A3A3C!important;}
html.gd-dark .layui-menu .layui-menu-item-checked,
html.gd-dark .layui-menu .layui-menu-item-checked2{background:rgba(10,132,255,.18)!important;}
/* 表情面板悬停浅黄 → 深色琥珀 */
html.gd-dark .layui-util-face ul li:hover{background:rgba(255,159,10,.14)!important;}
/* 边框徽章（白底）→ 透明底浅字 */
html.gd-dark .layui-badge-rim{background:transparent!important;color:rgba(235,235,245,.85)!important;}
/* 主皮肤复选框的白色内格 */
html.gd-dark .layui-form-checkbox[lay-skin=primary] i{background:transparent!important;}

/* ================= 30. 通知面板行内间距（用户要求：图标与名称贴着，浅深通用） ================= */
/* 视觉间距的真相：图标底座 28px 方块，字形墨迹仅约 14px 居中 → 底座右侧约 7px 是空白，
   所以盒间距即使为 0 仍有 ~7px 视觉空隙（用户反馈"离得还是很远"两次）。
   做法：gap 归零 + 图标负右外边距让文字咬进底座空白区，图标尺寸不变、文字不压字形。
   仅作用于通知面板 .sys_msg_tips，不影响顶栏用户菜单/页签菜单等其它下拉。 */
html body .sys_msg_tips .layui-menu li>a,
html body .sys_msg_tips .layui-menu-body-title a{gap:0!important;}
html body .sys_msg_tips .layui-menu li>a>.layui-icon,
html body .sys_msg_tips .layui-menu li .layui-menu-body-title a>.layui-icon{
  /* 视觉间距的算法：图标底座 28px 方块，字形墨迹实测 14px 居中 ⇒ 底座右侧本身就有约 7px 空白。
     所以「视觉间距 ≈ margin-right + 7px」，据此定值（无头浏览器实测）：
       -5px → 视觉 2px（反馈"挤在一起"）、-2px → 视觉 5px（仍反馈"挨着了"）、
       +1px → 视觉 8px（✅ 采纳，实测 8.0px，既不挤也不远）。
     行内 gap 已在上面归零，图标与文字的间距只由这一条给。 */
  margin-right:1px!important;
}

/* ================= 31. 通知面板数字紧跟名称（用户要求：数字提示离名称太远，凑近点、靠着） ================= */
/* 原因：ui-theme.css 1159 行给下拉徽章写了 margin-left:auto —— flex 会把数字顶到整行最右端；
   同时 min-width:22px 让数字在 22px 盒子里居中，又凭空多出一截空白，于是"名称 …… 数字"隔一大段。
   改法：margin-left 由 auto 改为固定 6px（贴着名称、留一口气），min-width 归零 + 左对齐，
        免得 22px 的居中留白再把数字推远。行内 gap 已被第 30 段归零，故间距由这里给。
   特异性 (0,3,3) > ui-theme 的 (0,3,1)，可直接压过（ui-theme 是禁改的基座文件）。 */
html body .sys_msg_tips .layui-menu li .layui-badge{
  margin-left:6px!important;
  margin-right:0!important;
  min-width:0!important;
  text-align:left!important;
}

/* ================= 32. 通知面板整体收窄（用户反馈：内容挤在左边、右侧大片留白） ================= */
/* 面板原宽约 430px（内容仅约 150px），收窄到贴合内容；行内是 flex 且数字紧跟名称，不依赖面板宽度。 */
/* 用户要求「跟图标左边一样、两边对称」；最终采纳值 128px（2026-09-22 用户确认"可以了"）。
   演进：190px（右侧留白 37px 不对称）→ 128px（左右各约 10-12px，视觉对称，用户确认）
   → 163px 为推算备选值，未采纳（用户已认可 128px，不改变已验收效果）。 */
html body .sys_msg_tips{
  width:128px!important;
  min-width:0!important;
  max-width:128px!important;
}



/* ================= 33. 「媒体」列多图横向排列（用户反馈：动态管理相册竖排，应为横排） ================= */
/* 成因：expand_common.js 的 imgObjFormat/imgArrayFormat 把每张图包在 <div class="div-media-img">，
   而全仓 CSS 从未给该类定义 display → 块级元素逐张垂直堆叠（竖排）。
   admin.css 里给"多图紧凑"留的 .multi-pic 规则是历史遗弃代码（JS 已不产出该类），无法生效。
   处理：让图片组横向排列（一行放不下自动换行），保持 50×50 方图与 2px 间距；浅深通用。
   作用面：所有使用 mediaBar 模板的页面（动态管理、各类审核、意见反馈等）一次生效。 */
.layui-table-cell .div-media-img,
.layui-layer-content .div-media-img{
  display:inline-block!important;
  vertical-align:middle;
  margin:0 1px!important;
}
.layui-table-cell .div-media-img>.show-img,
.layui-table-cell .div-media-img .i-violation{display:inline-block!important;vertical-align:middle;}
