/* ==========================================================================
   亮色绿色全局主题 (Light Green Theme)
   覆盖范围：Layui / LayuiAdmin / Bootstrap / Yii 默认 / 自定义组件
   主色调：极浅绿灰 #f2f7f4 | 主色绿 #15803d | 青绿 #1c766e | 白 #ffffff
   ========================================================================== */

/* CSS 变量 */
:root {
  --ft-bg: #f2f7f4;
  --ft-bg-light: #ffffff;
  --ft-bg-lighter: #eef5f0;
  --ft-bg-card: #ffffff;
  --ft-border: #d8e6dc;
  --ft-border-strong: #b8d4c2;
  --ft-primary: #15803d;
  --ft-primary-dim: #e8f5ec;
  --ft-secondary: #1c766e;
  --ft-secondary-dim: rgba(28, 118, 110, 0.12);
  --ft-accent: #1c766e;
  --ft-accent-dim: rgba(28, 118, 110, 0.12);
  --ft-text: #1c2c21;
  --ft-text-muted: #4b5563;
  --ft-text-dark: #6b7280;
  --ft-danger: #dc2626;
  --ft-warning: #d97706;
  --ft-success: #15803d;
  --ft-radius: 8px;
  --ft-radius-lg: 14px;
  --ft-shadow: 0 1px 3px rgba(0, 0, 0, 0.08);
  --ft-shadow-lg: 0 8px 24px rgba(0, 0, 0, 0.1);
  --ft-glow: 0 1px 3px rgba(0, 0, 0, 0.08);
}

/* 全局背景与字体 */
html,
body,
.layui-layout-body,
.layui-layout-admin,
#LAY_app,
.layadmin-tabsbody-item,
.layadmin-iframe,
.layout-main,
.wrap,
.wrap > .container,
.demoTable {
  background-color: var(--ft-bg) !important;

  font-family: "Segoe UI", "Microsoft YaHei", "PingFang SC", Arial, sans-serif;
}

/* 极浅绿色网格背景 */
body::before {
  content: "";
  position: fixed;
  top: 0;
  left: 0;
  width: 100vw;
  height: 100vh;
  pointer-events: none;
  z-index: 9999;
  background-image:
    linear-gradient(rgba(21, 128, 61, 0.04) 1px, transparent 1px),
    linear-gradient(90deg, rgba(21, 128, 61, 0.04) 1px, transparent 1px);
  background-size: 40px 40px;
  opacity: 0.6;
}

/* 滚动条 */
::-webkit-scrollbar {
  width: 8px;
  height: 8px;
}
::-webkit-scrollbar-track {
  background: var(--ft-bg-lighter);
}
::-webkit-scrollbar-thumb {
  background: rgba(21, 128, 61, 0.3);
  border-radius: 4px;
}
::-webkit-scrollbar-thumb:hover {
  background: rgba(21, 128, 61, 0.5);
}

/* 文字颜色 */
body,
h1, h2, h3, h4, h5, h6,
.layui-text,
.layui-form-label,
.layui-input,
.layui-textarea,
.layui-select,
.layui-table tbody tr td,
.layui-table thead tr th,
.layui-breadcrumb > * {

}

.layui-text-muted,
.layui-form-mid,
.layui-word-aux,
.hint-block {
  color: var(--ft-text-muted) !important;
}

a,
a:link,
a:visited,
a:hover,
a:active,
.layui-breadcrumb a,
.layui-table tbody tr td a {
  color: var(--ft-primary) !important;
}
a:hover {
  color: #166534 !important;
}

/* ========================= LayuiAdmin 主框架 ========================= */

/* 顶部导航 */
.layui-layout-admin .layui-header {
  height: 64px;
  background: #ffffff !important;
  border-bottom: 1px solid var(--ft-border) !important;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08) !important;
}

.layui-layout-admin .layui-header .layui-nav {
  background: transparent !important;
}

.layui-layout-admin .layui-header .layui-nav .layui-nav-item > a,
.layui-layout-admin .layui-header .layui-nav .layui-nav-item > a:hover,
.layui-layout-admin .layui-header .layui-nav .layui-this > a {

  font-size: 15px;
}

.layui-layout-admin .layui-header .layui-nav .layui-nav-item > a:hover,
.layui-layout-admin .layui-header .layui-nav .layui-this > a {
  color: #147a3a;
  background: var(--ft-primary-dim) !important;
}

.layui-layout-admin .layui-header .layui-nav-more {

}
.layui-layout-admin .layui-header .layui-nav-mored {
  border-color: transparent transparent var(--ft-text) !important;
}

.layui-nav-img {
  border: 2px solid var(--ft-primary) !important;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
}

/* 侧边栏 */
.layui-layout-admin .layui-side,
.layui-layout-admin .layui-side-menu,
.layui-side-menu {
  width: 220px !important;
  background: #ffffff !important;
  border-right: 1px solid var(--ft-border) !important;
  box-shadow: 1px 0 3px rgba(0, 0, 0, 0.06) !important;
}

.layui-layout-admin .layui-logo,
.layui-side-menu .layui-logo {
  height: 64px;
  line-height: 64px;
  background-color: #ffffff !important;
  color: var(--ft-primary) !important;
  border-bottom: 1px solid var(--ft-border) !important;
  font-size: 18px;
  font-weight: 700;
  letter-spacing: 1px;
  box-shadow: none !important;
}
.layui-logo img {
  vertical-align: middle;
  margin-right: 8px;
}

.layui-side-menu .layui-side-scroll,
.layui-side-menu .layui-nav {
  width: 220px !important;
  background: transparent !important;
}

.layui-side-menu .layui-nav-tree .layui-nav-item {
  margin: 4px 10px;
  border-radius: var(--ft-radius);
  overflow: hidden;
}

.layui-side-menu .layui-nav-tree .layui-nav-item > a {
  color: var(--ft-text-muted) !important;
  font-weight: 500;
  border-radius: var(--ft-radius) !important;
}

.layui-side-menu .layui-nav-tree .layui-nav-item > a:hover,
.layui-side-menu .layui-nav-tree .layui-nav-item.layui-this > a,
.layui-side-menu .layui-nav-tree .layui-nav-itemed > a {
  color: #147a3a;
  background: linear-gradient(90deg, var(--ft-primary-dim) 0%, transparent 100%) !important;
  box-shadow: inset 2px 0 0 var(--ft-primary);
}

.layui-side-menu .layui-nav-tree .layui-nav-item > a > i,
.layui-side-menu .layui-nav-tree .layui-nav-item > a > .layui-icon,
.layui-side-menu .layui-nav-tree .layui-nav-item > a .fa,
.layui-side-menu .layui-nav-tree .layui-nav-item > a .iconfont {
  color: var(--ft-primary) !important;
}

.layui-side-menu .layui-nav-child {
  background: var(--ft-bg-lighter) !important;
}

.layui-side-menu .layui-nav-child dd a {
  color: var(--ft-text-muted) !important;
  border-radius: var(--ft-radius) !important;
}

.layui-side-menu .layui-nav-child dd.layui-this a,
.layui-side-menu .layui-nav-child dd a:hover {
  color: var(--ft-primary) !important;
  background: #dcfce7 !important;
}

.layui-side-menu .layui-nav-tree .layui-nav-item > a:before {
  background: var(--ft-primary) !important;
  box-shadow: none;
 color: #ffffff !important;}

.layui-side-menu .layui-nav-tree .layui-nav-item > a:after {
  border-color: var(--ft-text-muted) !important;
}
.layui-side-menu .layui-nav-tree .layui-nav-itemed:not(.side-home) > a:after {
  border-color: var(--ft-primary) !important;
}

/* 收缩菜单 */
.layadmin-side-shrink .layui-layout-admin .layui-side,
.layadmin-side-shrink .layui-layout-admin .layui-side-menu {
  width: 60px !important;
  background: #ffffff !important;
}
.layadmin-side-shrink .layui-layout-admin .layui-logo {
  width: 60px !important;
  color: var(--ft-primary) !important;
}
.layadmin-side-shrink .layui-side-menu .layui-nav > .layui-nav-item:hover > .layui-nav-child {
  background: #ffffff !important;
  border: 1px solid var(--ft-border) !important;
  box-shadow: var(--ft-shadow) !important;
}

/* 主体区域 */
.layui-layout-admin .layui-body {
  left: 220px;
  top: 112px;
  background: var(--ft-bg) !important;
}

.layui-layout-admin .layui-header .layui-layout-left,
.layui-layout-admin .layui-body,
.layui-layout-admin .layadmin-pagetabs {
  left: 220px;
}

/* 标签页 */
.layadmin-pagetabs,
.layui-layout-admin .layadmin-pagetabs {
  top: 64px;
  height: 48px;
  background: #ffffff !important;
  border-top: 1px solid var(--ft-border) !important;
  border-bottom: 1px solid var(--ft-border) !important;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.06) !important;
}

.layadmin-pagetabs .layadmin-tabs-control {
  border-left: 1px solid var(--ft-border) !important;
  color: var(--ft-text-muted) !important;
  background: transparent !important;
}
.layadmin-pagetabs .layadmin-tabs-control:hover {
  color: #147a3a;
  background: var(--ft-primary-dim) !important;
}

.layadmin-pagetabs .layui-tab-title {
  border: 0 !important;
}
.layadmin-pagetabs .layui-tab-title li {
  color: var(--ft-text-muted) !important;
  background: transparent !important;
}
.layadmin-pagetabs .layui-tab-title li.layui-this {
  color: #166534 !important;
  font-weight: 700;
  background: var(--ft-primary-dim) !important;
}
.layadmin-pagetabs .layui-tab-title li.layui-this:before {
  background: var(--ft-primary) !important;
  box-shadow: none;
 color: #166534 !important;}
.layadmin-pagetabs .layui-tab-title li.layui-this i,
.layadmin-pagetabs .layui-tab-title li.layui-this .layui-icon,
.layadmin-pagetabs .layui-tab-title li.layui-this .layui-tab-close {
  color: #166534 !important;
}
.layadmin-pagetabs .layui-tab-title li .layui-tab-close:hover {
  color: #ffffff !important;
  background: var(--ft-primary) !important;
}

.layadmin-tabsbody-item {
  background: var(--ft-bg) !important;
}
.layadmin-iframe {
  background: var(--ft-bg) !important;
}

/* ========================= 卡片与面板 ========================= */
.layui-card,
.layui-panel,
.layui-elem-field,
.layui-field-box,
.layui-collapse,
.layui-colla-item,
.layui-colla-content {
  background: var(--ft-bg-card) !important;
  border: 1px solid var(--ft-border) !important;
  border-radius: var(--ft-radius-lg) !important;
  box-shadow: var(--ft-shadow) !important;
}

.layui-card-header,
.layui-elem-field legend,
.layui-colla-title {
  color: var(--ft-primary) !important;
  border-bottom: 1px solid var(--ft-border) !important;
  background: transparent !important;
  font-weight: 600;
}

.layui-card-body {
  background: transparent !important;
}

/* 表格 */
.layui-table-view,
.layui-table-box,
.layui-table-header,
.layui-table-body,
.layui-table,
.layui-table-tool {
  background: transparent !important;
  border-color: var(--ft-border) !important;
}

.layui-table thead tr,
.layui-table-header thead tr {
  background: linear-gradient(90deg, #e8f5ec 0%, #eef5f0 100%) !important;
}

.layui-table thead tr th,
.layui-table-header th {
  color: #147a3a;
  border-bottom: 1px solid var(--ft-border) !important;
  font-weight: 600;
}

.layui-table tbody tr {
  background: transparent !important;
  transition: all 0.2s ease;
}
.layui-table tbody tr:hover,
.layui-table tbody tr.layui-table-hover {
  background: rgba(21, 128, 61, 0.06) !important;
}
.layui-table tbody tr td {
  border-bottom: 1px solid #e5ede8 !important;
}
.layui-table tbody tr:nth-child(even) {
  background: #f8fbf9 !important;
}

/* 固定列（操作列）与亮色主题保持一致 */
.layui-table-fixed,
.layui-table-fixed-r,
.layui-table-fixed-l,
.layui-table-fixed-r .layui-table,
.layui-table-fixed-l .layui-table,
.layui-table-fixed-r .layui-table thead tr,
.layui-table-fixed-l .layui-table thead tr,
.layui-table-fixed-r .layui-table thead tr th,
.layui-table-fixed-l .layui-table thead tr th,
.layui-table-fixed-r .layui-table tbody tr,
.layui-table-fixed-l .layui-table tbody tr,
.layui-table-fixed-r .layui-table tbody tr td,
.layui-table-fixed-l .layui-table tbody tr td,
.layui-table-mend,
.layui-table-col-set {
  background: #ffffff !important;
  border-color: var(--ft-border) !important;
}

.layui-table-fixed-r .layui-table tbody tr:nth-child(even),
.layui-table-fixed-l .layui-table tbody tr:nth-child(even) {
  background: #f8fbf9 !important;
}

.layui-table-fixed-r .layui-table tbody tr:hover,
.layui-table-fixed-l .layui-table tbody tr:hover,
.layui-table-fixed-r .layui-table tbody tr.layui-table-hover,
.layui-table-fixed-l .layui-table tbody tr.layui-table-hover,
.layui-table-fixed-r .layui-table tbody tr.layui-table-click,
.layui-table-fixed-l .layui-table tbody tr.layui-table-click {
  background: rgba(21, 128, 61, 0.08) !important;
}

.layui-table-fixed-r .layui-table tbody tr td,
.layui-table-fixed-l .layui-table tbody tr td,
.layui-table-fixed-r .layui-table thead tr th,
.layui-table-fixed-l .layui-table thead tr th {

}

.layui-table-page {
  background: transparent !important;
  border-top: 1px solid var(--ft-border) !important;
}

.layui-laypage a,
.layui-laypage span,
.layui-laypage button,
.layui-laypage input,
.layui-laypage select {
  background: #ffffff !important;
  border-color: var(--ft-border) !important;
  color: var(--ft-text-muted) !important;
}
.layui-laypage .layui-laypage-curr .layui-laypage-em {
  background: var(--ft-primary) !important;
  color: #ffffff !important;
}
.layui-laypage .layui-laypage-curr {
  color: #1f2937;
}
.layui-laypage a:hover {
  color: var(--ft-primary) !important;
  border-color: var(--ft-primary) !important;
}

/* ========================= 表单 ========================= */
.layui-input,
.layui-textarea,
.layui-select,
.layui-form-select,
.layui-form-select .layui-input,
.layui-form-select dl,
.layui-form-select dl dd,
input[type="text"],
input[type="password"],
input[type="number"],
input[type="email"],
input[type="tel"],
select,
textarea {
  background: #ffffff !important;
  border: 1px solid var(--ft-border) !important;

  border-radius: var(--ft-radius) !important;
  transition: all 0.2s ease;
}

/* 原生 select 下拉弹层由系统渲染为白底,选项必须用深色字 */
select option {
  background: #ffffff !important;
  color: #333333 !important;
}

.layui-input:focus,
.layui-textarea:focus,
.layui-select:focus,
.layui-form-select .layui-input:focus,
input:focus,
select:focus,
textarea:focus {
  border-color: var(--ft-primary) !important;
  box-shadow: 0 0 0 3px rgba(21, 128, 61, 0.15) !important;
}

.layui-form-label,
.layui-form-pane .layui-form-label {
  background: var(--ft-primary-dim) !important;
  border-color: var(--ft-border) !important;
  color: #147a3a;
  border-radius: var(--ft-radius) 0 0 var(--ft-radius) !important;
}

.layui-form-pane .layui-input-block {
  border-color: var(--ft-border) !important;
}

.layui-form-select dl {
  background: #ffffff !important;
  border: 1px solid var(--ft-border) !important;
  box-shadow: var(--ft-shadow) !important;
}
.layui-form-select dl dd,
.layui-form-select dl dd.layui-disabled {
  background: #ffffff !important;

}
.layui-form-select dl dd:hover,
.layui-form-select dl dd.layui-this {
  background: var(--ft-primary-dim) !important;
  color: #147a3a;
}

/* checkbox / radio 亮色风格 */
.layui-form-checkbox,
.layui-form-checkbox > span,
.layui-form-checkbox > i,
.layui-form-radio,
.layui-form-radio > i {
  background: #ffffff !important;
  border-color: var(--ft-border) !important;

}

.layui-form-checkbox > span,
.layui-form-checkbox > div {

}

/* 主复选框：> i 是勾选方块 */
.layui-form-checkbox[lay-skin="primary"] > i,
.layui-form-checkbox[lay-skin="primary"] > span:empty,
.layui-form-checkbox[lay-skin="primary"] > div:empty {
  background: #ffffff !important;
  border: 1px solid var(--ft-border) !important;
  color: transparent !important;
  box-shadow: none !important;
}

/* 选中态：方块变主色，图标显示 */
.layui-form-checked[lay-skin="primary"] > i,
.layui-form-checked .layui-form-checkbox[lay-skin="primary"] > i,
.layui-form-checkbox[lay-skin="primary"]:hover > i {
  background: var(--ft-primary) !important;
  border-color: var(--ft-primary) !important;
  color: #ffffff !important;
  box-shadow: 0 0 0 2px rgba(21, 128, 61, 0.15) !important;
}

/* 普通（非 primary）复选框 */
.layui-form-checkbox,
.layui-form-checkbox > i,
.layui-form-checkbox > span {
  background: #ffffff !important;
  border-color: var(--ft-border) !important;

}
.layui-form-checked .layui-form-checkbox,
.layui-form-checked .layui-form-checkbox > i,
.layui-form-checked .layui-form-checkbox > span,
.layui-form-checkbox:hover > i,
.layui-form-checkbox:hover > span {
  background: var(--ft-primary) !important;
  border-color: var(--ft-primary) !important;
  color: #ffffff !important;
}

/* radio */
.layui-form-radio,
.layui-form-radio > i {
  background: transparent !important;
  border-color: var(--ft-border) !important;

}
.layui-form-radioed .layui-form-radio > i,
.layui-form-radio:hover > i {
  background: var(--ft-primary) !important;
  border-color: var(--ft-primary) !important;
  color: #ffffff !important;
  box-shadow: 0 0 0 2px rgba(21, 128, 61, 0.15) !important;
}

.layui-form-checkbox > i,
.layui-form-radio > i,
.layui-form-checkbox[lay-skin="primary"] > i {
  box-shadow: none;
}

.layui-form-checked .layui-form-checkbox > i,
.layui-form-radioed .layui-form-radio > i,
.layui-form-checked[lay-skin="primary"] > i {
  box-shadow: 0 0 0 2px rgba(21, 128, 61, 0.15);
 color: #ffffff !important;}

.layui-form-switch {
  background: var(--ft-bg-lighter) !important;
  border-color: var(--ft-border) !important;
}
.layui-form-onswitch {
  background: var(--ft-primary) !important;
  border-color: var(--ft-primary) !important;
  box-shadow: 0 0 0 2px rgba(21, 128, 61, 0.15);
 color: #ffffff !important;}

/* xm-select 多选 - 亮色绿色协调 */
.xm-select-parent {
  display: inline-block;
  vertical-align: middle;
}

.xm-select-parent .xm-select,
.xm-select-parent .xm-select-default {
  background: transparent !important;
}

.xm-select-parent .xm-select-title,
.xm-select-parent .xm-select-title:hover,
.xm-select-parent .xm-select-title:focus,
.xm-select-parent .xm-select-default,
.xm-select-parent .xm-select-default:hover,
.xm-select-parent .xm-select-default:focus {
  background: #ffffff !important;
  border: 1px solid var(--ft-border) !important;

  border-radius: var(--ft-radius) !important;
  box-shadow: none !important;
  transition: all 0.2s ease;
}

.xm-select-parent .xm-select-title:hover,
.xm-select-parent .xm-select-title:focus,
.xm-select-parent .xm-select-default:hover,
.xm-select-parent .xm-select-default:focus,
.xm-select-parent .xm-select-active .xm-select-title,
.xm-select-parent .xm-select-active .xm-select-default {
  border-color: var(--ft-primary) !important;
  box-shadow: 0 0 0 3px rgba(21, 128, 61, 0.15) !important;
}

.xm-select-parent .xm-select-disabled,
.xm-select-parent .xm-select-disabled .xm-select-title,
.xm-select-parent .xm-select-disabled .xm-select-default {
  background: var(--ft-bg-lighter) !important;
  border-color: var(--ft-border) !important;
  color: #1f2937;
  cursor: not-allowed !important;
  opacity: 0.7;
}

.xm-select-parent .xm-select-label {
  background: transparent !important;
}

.xm-select-parent .xm-select-label span,
.xm-select-parent .xm-select-label .xm-select-tag {
  background: var(--ft-primary) !important;
  border: 1px solid var(--ft-primary) !important;
  color: #ffffff !important;
  border-radius: 4px !important;
  box-shadow: none !important;
  font-weight: 500;
}

.xm-select-parent .xm-select-label span .xm-select-icon,
.xm-select-parent .xm-select-label span .xm-select-sj,
.xm-select-parent .xm-select-label .xm-select-tag .xm-select-icon {
  color: #ffffff !important;
  background: transparent !important;
  border: 0 !important;
}

.xm-select-parent .xm-select-label span .xm-select-icon:hover,
.xm-select-parent .xm-select-label .xm-select-tag .xm-select-icon:hover {
  color: #ffffff !important;
  background: rgba(21, 128, 61, 0.15) !important;
  border-radius: 50%;
}

.xm-select-parent .xm-select-sj {
  color: var(--ft-primary) !important;
  border-top-color: var(--ft-primary) !important;
}

.xm-select-parent .xm-select-icon {
  color: var(--ft-primary) !important;
}

.xm-select-parent .xm-select-body {
  background: #ffffff !important;
  border: 1px solid var(--ft-border) !important;
  border-radius: var(--ft-radius) !important;
  box-shadow: var(--ft-shadow) !important;
  overflow: hidden;
}

.xm-select-parent .xm-select-body .xm-select-tree {
  background: transparent !important;
  border: 0 !important;
}

.xm-select-parent .xm-select-search,
.xm-select-parent .xm-select-search-input {
  background: #ffffff !important;
  border-color: var(--ft-border) !important;

}

.xm-select-parent .xm-select-search-input:focus {
  border-color: var(--ft-primary) !important;
  box-shadow: 0 0 0 2px rgba(21, 128, 61, 0.15) !important;
}

.xm-select-parent .xm-select-tree .xm-select-group,
.xm-select-parent .xm-select-tree .xm-select-item {
  background: transparent !important;

  border: 0 !important;
}

.xm-select-parent .xm-select-tree .xm-select-group-name,
.xm-select-parent .xm-select-tree .xm-select-item-group {
  color: #147a3a;
  font-weight: 600;
  background: var(--ft-primary-dim) !important;
}

.xm-select-parent .xm-select-tree .xm-select-item .xm-select-item-name,
.xm-select-parent .xm-select-tree .xm-select-item .xm-select-item-icon {

  background: transparent !important;
}

.xm-select-parent .xm-select-tree .xm-select-item:hover,
.xm-select-parent .xm-select-tree .xm-select-item.xm-select-this {
  background: var(--ft-primary-dim) !important;
  color: #147a3a;
}

.xm-select-parent .xm-select-tree .xm-select-item:hover .xm-select-item-name,
.xm-select-parent .xm-select-tree .xm-select-item.xm-select-this .xm-select-item-name,
.xm-select-parent .xm-select-tree .xm-select-item:hover .xm-select-item-icon,
.xm-select-parent .xm-select-tree .xm-select-item.xm-select-this .xm-select-item-icon {
  color: #147a3a;
}

.xm-select-parent .xm-select-tree .xm-select-item.xm-select-disabled {
  color: #1f2937;
  background: transparent !important;
  cursor: not-allowed;
  opacity: 0.6;
}

.xm-select-parent .xm-select-empty {
  color: var(--ft-text-muted) !important;
}

.xm-select-parent .xm-select-dispicker,
.xm-select-parent .xm-select-dispicker * {
  background: transparent !important;

}

.xm-select-parent .xm-select-tips {
  color: var(--ft-text-muted) !important;
  border-color: var(--ft-border) !important;
  background: #ffffff !important;
}

.xm-select-parent .xm-select-cz,
.xm-select-parent .xm-select-cz-group {
  background: #ffffff !important;
  border-color: var(--ft-border) !important;
}

.xm-select-parent .xm-select-cz-item {
  color: var(--ft-primary) !important;
  background: transparent !important;
  border: 1px solid var(--ft-border) !important;
  border-radius: var(--ft-radius) !important;
}

.xm-select-parent .xm-select-cz-item:hover {
  background: var(--ft-primary-dim) !important;
  border-color: var(--ft-primary) !important;
}

/* xm-select 下拉面板（本站 xmselect/xm-select.js 在运行时注入黑色背景样式，
   其中 .xm-search 带 !important 且在文档中后注入，需用更高优先级选择器覆盖） */
xm-select > .xm-body,
.xm-body,
.xm-body.relative {
  background-color: #ffffff !important;
  border-color: var(--ft-border) !important;

}
.xm-body .xm-search.xm-search {
  background-color: #ffffff !important;
}
.xm-body .xm-search-input {
  background-color: #ffffff !important;

  border-bottom-color: var(--ft-border) !important;
}
.xm-body .xm-search > i {
  color: var(--ft-text-muted) !important;
}
.xm-body .xm-select-empty {
  color: var(--ft-text-muted) !important;
}
/* 下拉选项选中态统一为主题绿（部分页面未传 theme.color，默认是蓝色） */
.xm-body .xm-option.selected,
.xm-body .xm-option[style*="background"] {
  background-color: var(--ft-primary) !important;
}
.xm-body .xm-option.selected .xm-option-content,
.xm-body .xm-option[style*="background"] .xm-option-content {
  color: #ffffff !important;
}
/* 选中行左侧单选/多选圆圈图标：xm-select 会把图标色设成主题绿，与绿色行背景撞色，改为白色 */
.xm-body .xm-option.selected .xm-option-icon,
.xm-body .xm-option[style*="background"] .xm-option-icon {
  color: #ffffff !important;
  border-color: #ffffff !important;
}
.xm-body .xm-option:hover:not(.selected):not([style*="background"]) {
  background-color: var(--ft-primary-dim) !important;
}

.xm-select-parent .xm-select-radio,
.xm-select-parent .xm-select-checkbox {
  background: #ffffff !important;
  border: 1px solid var(--ft-border) !important;
  border-radius: 3px !important;
  box-shadow: none !important;
}

.xm-select-parent .xm-select-this .xm-select-radio,
.xm-select-parent .xm-select-this .xm-select-checkbox {
  background: var(--ft-primary) !important;
  border-color: var(--ft-primary) !important;
  color: #ffffff !important;
  box-shadow: 0 0 0 2px rgba(21, 128, 61, 0.15) !important;
}

.xm-select-parent .xm-select-radio {
  border-radius: 50% !important;
}

.xm-select-parent .xm-select-body ::-webkit-scrollbar,
.xm-select-parent .xm-select-tree ::-webkit-scrollbar {
  width: 6px;
  height: 6px;
}

.xm-select-parent .xm-select-body ::-webkit-scrollbar-track,
.xm-select-parent .xm-select-tree ::-webkit-scrollbar-track {
  background: var(--ft-bg-lighter);
}

.xm-select-parent .xm-select-body ::-webkit-scrollbar-thumb,
.xm-select-parent .xm-select-tree ::-webkit-scrollbar-thumb {
  background: rgba(21, 128, 61, 0.3);
  border-radius: 3px;
}

/* ========================= 按钮 ========================= */
.layui-btn,
.layui-btn-sm,
.layui-btn-xs,
button[type="submit"],
input[type="submit"],
input[type="button"] {
  background: var(--ft-primary) !important;
  border: 1px solid var(--ft-primary) !important;
  color: #ffffff !important;
  font-weight: 600;
  border-radius: var(--ft-radius) !important;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08) !important;
  transition: all 0.2s ease;
}

.layui-btn:hover {
  transform: translateY(-1px);
  background: #b6ffda !important;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12) !important;
  color: #147a3a !important;
}
/* 悬停变浅绿底后，按钮里带内联白色样式的 a/i（如"导入模板下载"）要同步变深绿，否则白字看不见 */
.layui-btn:hover a,
.layui-btn:hover i {
  color: #147a3a !important;
}

.layui-btn-primary,
.layui-btn-primary[lay-skin="primary"] {
  background: transparent !important;
  border: 1px solid var(--ft-border) !important;
  color: var(--ft-primary) !important;
  box-shadow: none !important;
}
.layui-btn-primary:hover {
  /*background: var(--ft-primary-dim) !important;*/
  color: #147a3a !important;
  background: #b6ffda !important;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08) !important;
}

.layui-btn-danger {
  background: var(--ft-danger) !important;
  border-color: var(--ft-danger) !important;
  color: #ffffff !important;
}

.layui-btn-normal {
  background: var(--ft-secondary) !important;
  border-color: var(--ft-secondary) !important;
  color: #ffffff !important;
}

.layui-btn-disabled,
.layui-btn-disabled:hover {
  background: var(--ft-bg-lighter) !important;
  border-color: var(--ft-border) !important;
  color: #1f2937;
  box-shadow: none !important;
}

/* ========================= Tab ========================= */
.layui-tab,
.layui-tab-title {
  border-color: var(--ft-border) !important;
}
.layui-tab-title li {
  color: var(--ft-text-muted) !important;
}
/* layui 的 li:after 是「选中态指示条」:绝对定位、100% 宽、41px 高的整块。
   绝不能给它加不透明底色 —— 它会整片盖在文字上方,导致选中的 tab 文字看不见
   (历史 bug:photo/info/view 等非 brief 页签)。选中态统一改成
   「透明背景 + 主题绿下划线」。 */
.layui-tab-title li:after {
  background: transparent !important;
}
.layui-tab-title li.layui-this {
  color: var(--ft-primary) !important;
}
.layui-tab-title li.layui-this:after {
  background: transparent !important;
  border: none !important;
  border-bottom: 2px solid var(--ft-primary) !important;
  border-radius: 0 !important;
  box-shadow: none !important;
  pointer-events: none;
}
/* brief 型页签(卡片内,如设备管理):admin.css 会把选中项 :after 拉成整条高,
   同样保持透明,选中态只留主题绿下划线 */
.layui-tab-brief > .layui-tab-title li.layui-this:after {
  background: transparent !important;
  border: none !important;
  border-bottom: 3px solid var(--ft-primary) !important;
}
/* 卡片型页签(区域/街巷详情):选中项同样不能用不透明底色(:after 在文字之上),
   统一走透明背景 + 主题绿下划线 */
.layui-tab-card > .layui-tab-title li.layui-this:after {
  background: transparent !important;
  border: none !important;
  border-bottom: 2px solid var(--ft-primary) !important;
  border-radius: 0 !important;
}
/* 后台顶部「页面标签页」是 admin.css 自带的 3px 指示条,不能被上面的通用规则改掉
   (admin 模块 iframe.php 另有 display:none + :before 的实现,同样不受影响) */
.layadmin-pagetabs .layui-tab-title li.layui-this:after {
  background-color: var(--ft-primary) !important;
  height: 3px !important;
  border: none !important;
  border-bottom: none !important;
}
.layui-tab-content {
  background: transparent !important;

}

/* ========================= 弹窗 / Layer ========================= */
.layui-layer,
.layui-layer-page .layui-layer-content,
.layui-layer-iframe,
.layui-layer-dialog,
.layui-layer-msg,
.layui-layer-tips,
.layui-layer-rim {
  background: #ffffff !important;
  border: 1px solid var(--ft-border) !important;
  box-shadow: var(--ft-shadow-lg) !important;
  border-radius: var(--ft-radius-lg) !important;

}

.layui-layer-title {
  background: linear-gradient(90deg, var(--ft-primary-dim) 0%, transparent 100%) !important;
  border-bottom: 1px solid var(--ft-border) !important;
  color: #147a3a;
  font-weight: 600;
}

.layui-layer-btn {
  border-top: 1px solid var(--ft-border) !important;
  background: transparent !important;
}
.layui-layer-btn .layui-layer-btn0 {
  background: var(--ft-primary) !important;
  border-color: var(--ft-primary) !important;
  color: #ffffff !important;
}
.layui-layer-btn .layui-layer-btn1 {
  background: transparent !important;
  border-color: var(--ft-border) !important;
  color: var(--ft-primary) !important;
}

.layui-layer-msg {
  background: #ffffff !important;
  border: 1px solid var(--ft-border) !important;

}

/* laydate */
.layui-laydate,
.layui-laydate-header,
.layui-laydate-content td,
.layui-laydate-list li {
  background: #ffffff !important;
  color: var(--ft-text) !important;
  border-color: var(--ft-border) !important;
}
.layui-laydate .layui-this,
.layui-laydate .layui-laydate-list li.layui-this {
  background: var(--ft-primary) !important;
  color: #ffffff !important;
}
.layui-laydate-content td:hover {
  background: var(--ft-primary-dim) !important;
  color: #147a3a !important;
}
.layui-laydate-header i,
.layui-laydate-header span {
  color: var(--ft-text) !important;
}
/* laydate 底部按钮 / 提示 / 快捷项（统一为白底深字） */
.layui-laydate-footer,
.layui-laydate-hint {
  background: #ffffff !important;
  border-color: var(--ft-border) !important;

}
.layui-laydate-footer span {
  background: transparent !important;
  border-color: var(--ft-border) !important;

}
.layui-laydate-footer span:hover {
  background: var(--ft-primary-dim) !important;
  color: #147a3a;
}
.layui-laydate-footer span[lay-type="date"],
.layui-laydate-footer span[lay-type="time"],
.layui-laydate-footer span[lay-type="datetime"] {
  color: var(--ft-secondary) !important;
}
.layui-laydate-content td.laydate-day-prev > div,
.layui-laydate-content td.laydate-day-next > div,
.layui-laydate-content .laydate-day-prev,
.layui-laydate-content .laydate-day-next {
  color: var(--ft-text-muted) !important;
}
.layui-laydate-content td > div:hover,
.layui-laydate-list li:hover,
.layui-laydate-shortcut > li:hover {
  background: var(--ft-primary-dim) !important;
  color: #147a3a !important;
}
.layui-laydate-shortcut + .layui-laydate-main,
.laydate-time-list li ol {
  border-color: var(--ft-border) !important;
}

/* ========================= 菜单 / 导航 ========================= */
.layui-nav {
  background: transparent !important;
}
.layui-nav .layui-nav-item a {

}
.layui-nav .layui-nav-item a:hover,
.layui-nav .layui-this a,
.layui-nav-child dd.layui-this a {
  color: #147a3a;
  background: var(--ft-primary-dim) !important;
}
.layui-nav-child {
  background: #ffffff !important;
  border: 1px solid var(--ft-border) !important;
  box-shadow: var(--ft-shadow) !important;
}
.layui-nav-child dd a:hover {
  background: var(--ft-primary-dim) !important;
}
.layui-nav-bar {
  background: var(--ft-primary) !important;
  box-shadow: none;
 color: #ffffff !important;}

/* ========================= 旧版后台布局 (base.php) ========================= */
.layui-layout-admin .layui-side.layui-bg-black,
.layui-bg-black {
  background: #ffffff !important;
}
.layui-layout-admin .layui-footer {
  background: #ffffff !important;
  border-top: 1px solid var(--ft-border) !important;
  color: var(--ft-text-muted) !important;
}

/* ========================= 搜索区域 ========================= */
.demoTable {
  background: var(--ft-bg-card) !important;
  border: 1px solid var(--ft-border) !important;
  border-radius: var(--ft-radius) !important;
  padding: 15px !important;
  margin-bottom: 15px !important;
}

.yubyform {
  background: var(--ft-bg-card) !important;
  border: 1px solid var(--ft-border) !important;
  border-radius: var(--ft-radius) !important;
  padding: 15px !important;
}

.layui-form-item.serch-line > span {
  color: var(--ft-primary) !important;
  font-weight: 500;
}

/* ========================= 登录页玻璃拟态 ========================= */
.loginbox,
.panel.loginbox,
#bind .panel.loginbox {
  background: rgba(255, 255, 255, 0.9) !important;
  backdrop-filter: blur(16px) !important;
  border: 1px solid var(--ft-border) !important;
  border-radius: var(--ft-radius-lg) !important;
  box-shadow: var(--ft-shadow-lg) !important;
}

.login-title h1,
.login-title h2,
.login-subtitle,
.login-label,
.login-meta,
.remember-row span,
.forgot-link {

}
.login-subtitle {
  color: var(--ft-primary) !important;
}
.login-subtitle:before,
.login-subtitle:after {
  background: linear-gradient(90deg, transparent, var(--ft-primary), transparent) !important;
}

.login-control {
  background: var(--ft-bg) !important;
  border-color: var(--ft-border) !important;

  border-radius: var(--ft-radius) !important;
}
.login-control:focus-within {
  border-color: var(--ft-primary) !important;
  box-shadow: 0 0 0 3px rgba(21, 128, 61, 0.15) !important;
}
.login-control input,
.login-control input::placeholder,
.input-code,
.input-code::placeholder {

  background: transparent !important;
}
.login-control .icon,
.login-eye {
  color: var(--ft-primary) !important;
}
.code {
  background: var(--ft-bg) !important;
  border-color: var(--ft-border) !important;
  color: var(--ft-primary) !important;
}
.code:after {
  background: var(--ft-bg-lighter) !important;
  color: var(--ft-primary) !important;
  border-left: 1px solid var(--ft-border) !important;
}
#J_tj.new-button,
.new-button {
  background: var(--ft-primary) !important;
  color: #ffffff !important;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.08) !important;
  border-radius: var(--ft-radius) !important;
  border: 0 !important;
  font-weight: 700;
}
#J_tj.new-button:hover {
  transform: translateY(-2px);
  background: #166534 !important;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12) !important;
 color: #ffffff !important;}
.forgot-link {
  color: var(--ft-primary) !important;
}
.remember-row input {
  accent-color: var(--ft-primary);
}

/* ========================= 功能导览首页 ========================= */
body.home-body,
.mod,
.group,
.hang,
.container-item-1-1,
.wrapper-2,
.entry-pic-wrapper {
  background: transparent !important;
}

.organization {
  color: var(--ft-primary) !important;
  font-size: 42px;
  letter-spacing: 2px;
}
.organization-next {
  color: var(--ft-secondary) !important;
  text-transform: uppercase;
  letter-spacing: 4px;
}

.module-box {
  background: #ffffff !important;
  border: 1px solid var(--ft-border) !important;
  border-radius: var(--ft-radius-lg) !important;
  padding: 15px !important;
  backdrop-filter: blur(8px);
  box-shadow: var(--ft-shadow);
}
.com-title {
  color: var(--ft-primary) !important;
  border-left: 3px solid var(--ft-primary);
  padding-left: 10px;
  font-weight: 600;
}
.com-items {
  background: linear-gradient(135deg, #e8f5ec 0%, #eef5f0 100%) !important;
  border: 1px solid var(--ft-border) !important;
  border-radius: var(--ft-radius) !important;
  box-shadow: none !important;
  transition: all 0.3s ease;
}
.com-items:hover {
  transform: translateY(-4px) !important;
  border-color: var(--ft-primary) !important;
  box-shadow: 0 4px 12px rgba(0, 0, 0, 0.08) !important;
  background: linear-gradient(135deg, #dcfce7 0%, #e8f5ec 100%) !important;
}
.com-items span {

  font-weight: 500;
}

.wrapper-2,
.entry-pic-wrapper {
  background: #ffffff !important;
  border: 1px solid var(--ft-border) !important;
  border-radius: var(--ft-radius-lg) !important;
  padding: 15px;
  margin-bottom: 15px;
  backdrop-filter: blur(8px);
}
.group-8 .tag-9,
.group-8 .more,
.empty .info,
.empty a {

}
.group-8 .tag-9 {
  color: var(--ft-primary) !important;
  font-weight: 600;
}
.empty {
  border-bottom: 1px solid #e5ede8 !important;
}
.empty:hover {
  background: var(--ft-primary-dim) !important;
}

#message,
#user {
  color: var(--ft-primary) !important;
}

/* ========================= 详情页 fieldset ========================= */
.layui-elem-field {
  border-color: var(--ft-border) !important;
  background: #ffffff !important;
}
.layui-elem-field legend {
  color: var(--ft-primary) !important;
  padding: 0 15px;
  font-weight: 600;
}
.layui-field-box {
  border: 0 !important;
  background: transparent !important;
}

/* ========================= 消息提示 ========================= */
.layui-layer-msg .layui-layer-content,
.layui-layer-hui .layui-layer-content,
.layui-layer-hui {
  background: #ffffff !important;

  border: 1px solid var(--ft-border) !important;
}
.layui-layer-msg .layui-layer-content .layui-layer-ico {
  filter: drop-shadow(0 1px 2px rgba(0, 0, 0, 0.2));
}

/* ========================= Bootstrap 覆盖 ========================= */
.jumbotron {
  background: var(--ft-bg-card) !important;
  border: 1px solid var(--ft-border) !important;
  border-radius: var(--ft-radius-lg) !important;

}
.footer {
  background: #ffffff !important;
  border-top: 1px solid var(--ft-border) !important;
  color: var(--ft-text-muted) !important;
}
.container {

}

/* ========================= 通用亮色辅助类 ========================= */
.ft-glow-text {
  color: var(--ft-primary) !important;
}
.ft-panel {
  background: var(--ft-bg-card) !important;
  border: 1px solid var(--ft-border) !important;
  border-radius: var(--ft-radius-lg) !important;
  box-shadow: var(--ft-shadow) !important;
  padding: 20px;
}
.ft-corner {
  position: relative;
}
.ft-corner::before,
.ft-corner::after {
  content: "";
  position: absolute;
  width: 12px;
  height: 12px;
  border: 2px solid var(--ft-primary);
  transition: all 0.3s ease;
}
.ft-corner::before {
  top: -1px;
  left: -1px;
  border-right: 0;
  border-bottom: 0;
}
.ft-corner::after {
  bottom: -1px;
  right: -1px;
  border-left: 0;
  border-top: 0;
}

/* ========================= 动画 ========================= */
@keyframes ft-pulse {
  0%, 100% { box-shadow: 0 0 0 0 rgba(21, 128, 61, 0.15); }
  50% { box-shadow: 0 0 0 6px rgba(21, 128, 61, 0.08); }
}
.ft-pulse {
  animation: ft-pulse 2.5s ease-in-out infinite;
}

@keyframes ft-scanline {
  0% { transform: translateY(-100%); }
  100% { transform: translateY(100%); }
}

/* ========================= 更多 Layui 组件 ========================= */
.layui-badge,
.layui-badge-dot,
.layui-badge-rim {
  background: var(--ft-primary) !important;
  color: #ffffff !important;
  box-shadow: none !important;
}
.layui-badge-rim {
  background: transparent !important;
  color: var(--ft-primary) !important;
  border-color: var(--ft-primary) !important;
}

.layui-timeline {

}
.layui-timeline-axis {
  color: var(--ft-primary) !important;
  background: var(--ft-bg) !important;
  border-color: var(--ft-primary) !important;
  box-shadow: none;
}
.layui-timeline-title {
  color: var(--ft-primary) !important;
}
.layui-timeline-content {
  color: var(--ft-text-muted) !important;
}

.layui-progress {
  background: var(--ft-bg-lighter) !important;
  border-radius: var(--ft-radius) !important;
}
.layui-progress-bar {
  background: linear-gradient(90deg, var(--ft-primary) 0%, var(--ft-secondary) 100%) !important;
  box-shadow: none;
}
.layui-progress-text {

}

.layui-tree {

}
.layui-tree-icon,
.layui-tree-iconClick,
.layui-tree-txt {
  color: var(--ft-text-muted) !important;
}
.layui-tree-entry:hover,
.layui-tree-line-ext > .layui-tree-entry {
  background: rgba(21, 128, 61, 0.06) !important;
}
.layui-tree-txt:hover {
  color: var(--ft-primary) !important;
}

.layui-upload-drag,
.layui-upload-list {
  background: var(--ft-bg-card) !important;
  border: 1px dashed var(--ft-border) !important;

  border-radius: var(--ft-radius) !important;
}
.layui-upload-drag:hover {
  border-color: var(--ft-primary) !important;
  background: var(--ft-primary-dim) !important;
}

.layui-slider {
  background: var(--ft-bg-lighter) !important;
}
.layui-slider-bar {
  background: var(--ft-primary) !important;
  box-shadow: none;
 color: #ffffff !important;}
.layui-slider-wrap-btn {
  background: var(--ft-primary) !important;
  border-color: var(--ft-primary) !important;
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1);
 color: #ffffff !important;}

.layui-colorpicker {
  background: #ffffff !important;
  border-color: var(--ft-border) !important;
}

.layui-rate,
.layui-rate > i {
  color: var(--ft-primary) !important;
}

.layui-step {
  background: var(--ft-bg-lighter) !important;
}
.layui-step-active .layui-step-title,
.layui-step-active .layui-step-number {
  color: var(--ft-primary) !important;
}
.layui-step-active .layui-step-line,
.layui-step-active .layui-step-number {
  background: var(--ft-primary) !important;
  box-shadow: none;
 color: #ffffff !important;}

.layui-menu {
  background: #ffffff !important;
  border-color: var(--ft-border) !important;
  box-shadow: var(--ft-shadow) !important;
}
.layui-menu li:hover,
.layui-menu .layui-menu-item-checked,
.layui-menu .layui-menu-item-group > .layui-menu-body-title {
  background: var(--ft-primary-dim) !important;
  color: #147a3a;
}

/* ========================= 响应式 ========================= */
@media (max-width: 768px) {
  .layui-layout-admin .layui-side,
  .layui-layout-admin .layui-side-menu {
    background: var(--ft-bg) !important;
  }
}

/* ========================= 全局文字颜色兜底 ========================= */
/* 针对后台亮色主题下仍被内联或旧样式覆盖的文字，统一置为深色 */
body * {

}

/* 重新声明需要保持特殊语义色的元素 */
body a,
body a:link,
body a:visited,
body a:hover,
body a:active,
body .layui-breadcrumb a,
body .layui-table tbody tr td a,
body .layui-text-primary,
body .ft-glow-text,
body .layui-card-header,
body .layui-elem-field legend,
body .layui-colla-title,
body .layui-timeline-title,
body .layui-timeline-axis,
body .layui-step-active .layui-step-title,
body .layui-step-active .layui-step-number,
body .layui-menu .layui-menu-item-group > .layui-menu-body-title,
body .layui-menu .layui-menu-item-checked,
body .com-title,
body .group-8 .tag-9,
body .organization,
body .organization-next,
body #message,
body #user,
body .layui-form-label {
 /* color: var(--ft-primary) !important;*/
}

/* 表格行内按钮悬停时背景变为深绿，文字必须保持白色（否则被上面的链接绿色覆盖） */
body .layui-table tbody tr td a.layui-btn:hover,
body .layui-table-cell .layui-btn:hover,
body .layui-table tbody tr td a.layui-btn:hover i,
body .layui-table-cell .layui-btn:hover i {
  color: #ffffff !important;
  background-color: #15803d !important;
}

body .layui-text-success {
  color: var(--ft-secondary) !important;
}

body .layui-text-danger {
  color: #b91c1c !important;
}

/* 徽章为绿底, 文字必须为白色(此前为红字, 红绿亮度接近导致完全不可见) */
body .layui-badge {
  color: #ffffff !important;
}

body .layui-text-warning {
  color: #a35904 !important;
}

body .layui-text-muted,
body .layui-timeline-content,
body .layui-tree-txt,
body .layui-tree-icon,
body .layui-tree-iconClick,
body .layui-word-aux,
body .layui-form-mid,
body .hint-block,
body .footer {
  color: var(--ft-text-muted) !important;
}

body .layui-badge-rim {
  color: var(--ft-primary) !important;
}

body .layui-badge-dot,
body .layui-badge {
  color: #ffffff !important;
}

body .layui-btn,
body button[type="submit"],
body input[type="submit"],
body input[type="button"] {
  color: #ffffff !important;
}

body .layui-btn-primary,
body .layui-btn-primary[lay-skin="primary"],
body .layui-layer-btn .layui-layer-btn1 {
  color: var(--ft-primary) !important;
}

body .layui-btn-danger {
  color: #ffffff !important;
}

body .layui-btn-normal {
  color: #ffffff !important;
}

body .layui-btn-disabled,
body .layui-btn-disabled:hover {
  color: #1f2937;
}

/* 常见深色文字类兜底 */
.text-dark,
.text-black,
.text-gray,
.text-secondary,
.color-333,
.color-666,
.color-999 {

}

/* 隐藏水印背景图片，改用浅色网格 */
html, body,
.layout-main,
.layadmin-tabsbody-item,
.layadmin-iframe {
  background-image: none !important;
}
