/**
 * EasyUI + Font Awesome 5 图标映射
 *
 * 职责：仅定义图标样式，这是唯一允许覆盖 EasyUI 的文件
 * 原因：EasyUI 默认使用背景图片作为图标，必须用 !important 覆盖
 */

/* ========== 0. 图标公共基础样式 ========== */
/* 所有 EasyUI 图标共用的 FA 字体基础样式，统一覆盖背景图片 */

.icon.icon-nav,
.l-btn-icon.icon-add,
.l-btn-icon.icon-search,
.l-btn-icon.icon-ok,
.l-btn-icon.icon-cancel,
.l-btn-icon.icon-no,
.l-btn-icon.icon-remove,
.l-btn-icon.icon-edit,
.l-btn-icon.icon-copy,
.l-btn-icon.icon-reload,
.l-btn-icon.icon-help,
.l-btn-icon.icon-lock,
.l-btn-icon.icon-unlock,
.l-btn-icon.icon-exit,
.l-btn-icon.icon-import,
.l-btn-icon.icon-login,
span.icon-help,
.l-btn-text.icon-ok,
.l-btn-text.icon-no,
.panel-icon.icon-add,
.panel-icon.icon-edit,
.panel-icon.icon-ok,
.panel-icon.icon-lock,
.panel-icon.icon-unlock,
.panel-icon.icon-help,
.panel-icon.icon-copy,
.panel-icon.icon-login,
.panel-icon.icon-import,
.menu-icon.icon-reload,
.menu-icon.icon-lock,
.menu-icon.icon-exit,
.messager-icon,
.tabs-icon[class*="tab-icon-"],
.tree-icon.tree-folder,
.tree-icon.tree-folder.tree-folder-open,
.tree-icon.tree-file,
.icon-menu,
.icon-system,
.icon-function,
.icon-user,
.icon-role,
.icon-application,
.icon-exit,
.icon-theme,
.icon-controller,
.icon-setting,
.icon-department,
.icon-dict,
.icon-category,
.panel-icon.fa,
.tree-icon.fa,
.tabs-icon.fa,
.menu-icon.fa,
.accordion-icon.fa,
.window-icon.fa,
.menu-icon.icon-fa,
.icon-choose-column {
    background: none !important;
    background-image: none !important;
    font-family: var(--font-family-icon) !important;
    font-weight: 900 !important;
}

/* ========== 1. 左侧菜单子项图标 ========== */

.icon.icon-nav {
    font-size: 12px;
    padding: 0 8px 0 2px;
}

.icon.icon-nav:before {
    content: "\f0c1";
    color: #909399;
}

/* ========== 2. 工具栏按钮图标 ========== */

.l-btn-icon.icon-add,
.l-btn-icon.icon-search,
.l-btn-icon.icon-ok,
.l-btn-icon.icon-cancel,
.l-btn-icon.icon-no,
.l-btn-icon.icon-remove,
.l-btn-icon.icon-edit,
.l-btn-icon.icon-copy,
.l-btn-icon.icon-reload,
.l-btn-icon.icon-help,
.l-btn-icon.icon-lock,
.l-btn-icon.icon-unlock,
.l-btn-icon.icon-exit,
.l-btn-icon.icon-import,
.l-btn-icon.icon-login,
span.icon-help {
    font-size: 12px;
    text-align: center;
    line-height: 16px;
}

/* ========== 2. 工具栏图标映射 ========== */

.l-btn-icon.icon-add:before { content: "\f067"; color: var(--icon-success); }
.l-btn-icon.icon-search:before { content: "\f002"; color: var(--icon-primary); }
.l-btn-icon.icon-ok:before { content: "\f00c"; color: var(--icon-success); }
.l-btn-icon.icon-cancel:before { content: "\f00d"; color: var(--icon-gray); }
.l-btn-icon.icon-no:before { content: "\f05e"; color: var(--icon-danger); }
.l-btn-icon.icon-remove:before { content: "\f2ed"; color: var(--icon-danger); }
.l-btn-icon.icon-edit:before { content: "\f044"; color: var(--icon-warning); }
.l-btn-icon.icon-copy:before { content: "\f0c5"; color: var(--icon-primary); }
.l-btn-icon.icon-reload:before { content: "\f2f1"; color: var(--icon-primary); }
.l-btn-icon.icon-help:before,
span.icon-help:before { content: "\f059"; color: var(--icon-gray); }
.l-btn-icon.icon-lock:before { content: "\f023"; color: var(--icon-warning); }
.l-btn-icon.icon-unlock:before { content: "\f09c"; color: var(--icon-success); }
.l-btn-icon.icon-exit:before { content: "\f2f5"; color: var(--icon-danger); }
.l-btn-icon.icon-import:before { content: "\f019"; color: var(--icon-purple); }
.l-btn-icon.icon-login:before { content: "\f2f6"; color: var(--icon-primary); }

/* ========== 3. 数据表格状态图标 ========== */

.l-btn-text.icon-ok,
.l-btn-text.icon-no {
    font-size: 12px;
    padding-left: 0 !important;
}

.l-btn-text.icon-ok:before { content: "\f058"; color: var(--icon-success); }
.l-btn-text.icon-no:before { content: "\f057"; color: var(--icon-danger); }

/* ========== 4. 弹窗标题栏图标 ========== */

.panel-icon.icon-add,
.panel-icon.icon-edit,
.panel-icon.icon-ok,
.panel-icon.icon-lock,
.panel-icon.icon-unlock,
.panel-icon.icon-help,
.panel-icon.icon-copy,
.panel-icon.icon-login,
.panel-icon.icon-import {
    font-size: 14px;
    text-align: center;
    line-height: 16px;
    width: 16px;
}

.panel-icon.icon-add:before { content: "\f067"; color: var(--icon-success); }
.panel-icon.icon-edit:before { content: "\f044"; color: var(--icon-warning); }
.panel-icon.icon-ok:before { content: "\f00c"; color: var(--icon-success); }
.panel-icon.icon-lock:before { content: "\f023"; color: var(--icon-warning); }
.panel-icon.icon-unlock:before { content: "\f09c"; color: var(--icon-success); }
.panel-icon.icon-help:before { content: "\f059"; color: var(--icon-gray); }
.panel-icon.icon-copy:before { content: "\f0c5"; color: var(--icon-primary); }
.panel-icon.icon-login:before { content: "\f2f6"; color: var(--icon-primary); }
.panel-icon.icon-import:before { content: "\f019"; color: var(--icon-purple); }

/* ========== 5. 下拉菜单图标 ========== */

.menu-icon.icon-reload,
.menu-icon.icon-lock,
.menu-icon.icon-exit {
    font-size: 12px;
    text-align: center;
}

.menu-icon.icon-reload:before { content: "\f2f1"; color: var(--icon-primary); }
.menu-icon.icon-lock:before { content: "\f023"; color: var(--icon-warning); }
.menu-icon.icon-exit:before { content: "\f2f5"; color: var(--icon-danger); }

/* ========== 6. EasyUI Messager 弹窗图标 ========== */

.messager-icon {
    font-size: 32px;
    line-height: 32px;
    width: 32px;
    height: 32px;
}

.messager-icon.messager-info:before { content: "\f05a"; color: var(--icon-primary); }
.messager-icon.messager-error:before { content: "\f057"; color: var(--icon-danger); }
.messager-icon.messager-warning:before { content: "\f071"; color: var(--icon-warning); }
.messager-icon.messager-question:before { content: "\f059"; color: var(--icon-primary); }

.messager-window .panel-title:before {
    font-family: var(--font-family-icon);
    font-weight: 900;
    font-size: 14px;
    margin-right: 6px;
    content: "\f05a";
    color: var(--icon-primary);
}

/* ========== 7. Tab 页签图标 ========== */

.tabs-icon[class*="tab-icon-"] {
    font-size: 12px;
    text-align: center;
    line-height: 16px;
    width: 16px;
}

/* 系统/设置类 - 蓝色 */
.tabs-icon.tab-icon-cog:before { content: "\f013"; color: var(--icon-primary); }
.tabs-icon.tab-icon-cogs:before { content: "\f085"; color: var(--icon-primary); }
.tabs-icon.tab-icon-bars:before { content: "\f0c9"; color: var(--icon-primary); }
.tabs-icon.tab-icon-th:before { content: "\f00a"; color: var(--icon-primary); }
.tabs-icon.tab-icon-th-large:before { content: "\f009"; color: var(--icon-cyan); }
.tabs-icon.tab-icon-desktop:before { content: "\f108"; color: var(--icon-cyan); }
.tabs-icon.tab-icon-sliders-h:before { content: "\f1de"; color: var(--icon-primary); }
.tabs-icon.tab-icon-toolbox:before { content: "\f552"; color: var(--icon-primary); }
.tabs-icon.tab-icon-wrench:before { content: "\f0ad"; color: var(--icon-primary); }

/* 用户/权限类 - 绿色 */
.tabs-icon.tab-icon-user:before { content: "\f007"; color: var(--icon-success); }
.tabs-icon.tab-icon-users:before { content: "\f0c0"; color: var(--icon-success); }
.tabs-icon.tab-icon-user-tag:before { content: "\f507"; color: var(--icon-purple); }
.tabs-icon.tab-icon-user-shield:before { content: "\f505"; color: var(--icon-success); }
.tabs-icon.tab-icon-user-cog:before { content: "\f4fe"; color: var(--icon-success); }
.tabs-icon.tab-icon-user-tie:before { content: "\f508"; color: var(--icon-success); }
.tabs-icon.tab-icon-id-card:before { content: "\f2c2"; color: var(--icon-purple); }
.tabs-icon.tab-icon-address-card:before { content: "\f2bb"; color: var(--icon-purple); }

/* 编辑/操作类 - 橙色 */
.tabs-icon.tab-icon-edit:before { content: "\f044"; color: var(--icon-warning); }
.tabs-icon.tab-icon-pencil-alt:before { content: "\f303"; color: var(--icon-warning); }
.tabs-icon.tab-icon-plus:before { content: "\f067"; color: var(--icon-success); }
.tabs-icon.tab-icon-plus-circle:before { content: "\f055"; color: var(--icon-success); }
.tabs-icon.tab-icon-minus:before { content: "\f068"; color: var(--icon-danger); }
.tabs-icon.tab-icon-trash:before { content: "\f1f8"; color: var(--icon-danger); }
.tabs-icon.tab-icon-trash-alt:before { content: "\f2ed"; color: var(--icon-danger); }
.tabs-icon.tab-icon-copy:before { content: "\f0c5"; color: var(--icon-primary); }
.tabs-icon.tab-icon-cut:before { content: "\f0c4"; color: var(--icon-gray); }
.tabs-icon.tab-icon-clipboard:before { content: "\f328"; color: var(--icon-warning); }
.tabs-icon.tab-icon-save:before { content: "\f0c7"; color: var(--icon-success); }

/* 文件/文档类 */
.tabs-icon.tab-icon-file:before { content: "\f15b"; color: var(--icon-gray); }
.tabs-icon.tab-icon-file-alt:before { content: "\f15c"; color: var(--icon-gray); }
.tabs-icon.tab-icon-folder:before { content: "\f07b"; color: var(--icon-warning); }
.tabs-icon.tab-icon-folder-open:before { content: "\f07c"; color: var(--icon-warning); }
.tabs-icon.tab-icon-file-pdf:before { content: "\f1c1"; color: var(--icon-danger); }
.tabs-icon.tab-icon-file-word:before { content: "\f1c2"; color: var(--icon-primary); }
.tabs-icon.tab-icon-file-excel:before { content: "\f1c3"; color: var(--icon-success); }
.tabs-icon.tab-icon-file-image:before { content: "\f1c5"; color: var(--icon-purple); }
.tabs-icon.tab-icon-file-archive:before { content: "\f1c6"; color: var(--icon-warning); }
.tabs-icon.tab-icon-file-code:before { content: "\f1c9"; color: var(--icon-warning); }

/* 上传/下载类 */
.tabs-icon.tab-icon-upload:before { content: "\f093"; color: var(--icon-cyan); }
.tabs-icon.tab-icon-download:before { content: "\f019"; color: var(--icon-purple); }
.tabs-icon.tab-icon-arrow-alt-circle-down:before { content: "\f358"; color: var(--icon-cyan); }
.tabs-icon.tab-icon-arrow-alt-circle-up:before { content: "\f35b"; color: var(--icon-purple); }
.tabs-icon.tab-icon-cloud-upload-alt:before { content: "\f382"; color: var(--icon-cyan); }
.tabs-icon.tab-icon-cloud-download-alt:before { content: "\f381"; color: var(--icon-purple); }

/* 数据/统计类 - 蓝色 */
.tabs-icon.tab-icon-database:before { content: "\f1c0"; color: var(--icon-primary); }
.tabs-icon.tab-icon-chart-bar:before { content: "\f080"; color: var(--icon-primary); }
.tabs-icon.tab-icon-chart-line:before { content: "\f201"; color: var(--icon-primary); }
.tabs-icon.tab-icon-chart-pie:before { content: "\f200"; color: var(--icon-primary); }
.tabs-icon.tab-icon-chart-area:before { content: "\f1fe"; color: var(--icon-primary); }
.tabs-icon.tab-icon-table:before { content: "\f0ce"; color: var(--icon-gray); }
.tabs-icon.tab-icon-list:before { content: "\f03a"; color: var(--icon-success); }
.tabs-icon.tab-icon-list-ul:before { content: "\f0ca"; color: var(--icon-success); }
.tabs-icon.tab-icon-list-ol:before { content: "\f0cb"; color: var(--icon-success); }

/* 通知/消息类 */
.tabs-icon.tab-icon-bell:before { content: "\f0f3"; color: var(--icon-warning); }
.tabs-icon.tab-icon-envelope:before { content: "\f0e0"; color: var(--icon-success); }
.tabs-icon.tab-icon-comment:before { content: "\f075"; color: var(--icon-cyan); }
.tabs-icon.tab-icon-comments:before { content: "\f086"; color: var(--icon-cyan); }
.tabs-icon.tab-icon-inbox:before { content: "\f01c"; color: var(--icon-cyan); }
.tabs-icon.tab-icon-paper-plane:before { content: "\f1d8"; color: var(--icon-cyan); }

/* 时间/日期类 - 橙色 */
.tabs-icon.tab-icon-clock:before { content: "\f017"; color: var(--icon-warning); }
.tabs-icon.tab-icon-calendar:before { content: "\f133"; color: var(--icon-warning); }
.tabs-icon.tab-icon-calendar-alt:before { content: "\f073"; color: var(--icon-warning); }
.tabs-icon.tab-icon-calendar-check:before { content: "\f274"; color: var(--icon-warning); }
.tabs-icon.tab-icon-history:before { content: "\f1da"; color: var(--icon-gray); }
.tabs-icon.tab-icon-hourglass:before { content: "\f254"; color: var(--icon-warning); }

/* 搜索/查看类 - 蓝色 */
.tabs-icon.tab-icon-search:before { content: "\f002"; color: var(--icon-primary); }
.tabs-icon.tab-icon-search-plus:before { content: "\f00e"; color: var(--icon-primary); }
.tabs-icon.tab-icon-search-minus:before { content: "\f010"; color: var(--icon-primary); }
.tabs-icon.tab-icon-eye:before { content: "\f06e"; color: var(--icon-primary); }
.tabs-icon.tab-icon-eye-slash:before { content: "\f070"; color: var(--icon-primary); }
.tabs-icon.tab-icon-filter:before { content: "\f0b0"; color: var(--icon-primary); }

/* 刷新/同步类 - 蓝色 */
.tabs-icon.tab-icon-sync:before { content: "\f021"; color: var(--icon-primary); }
.tabs-icon.tab-icon-sync-alt:before { content: "\f2f1"; color: var(--icon-primary); }
.tabs-icon.tab-icon-redo:before { content: "\f01e"; color: var(--icon-primary); }
.tabs-icon.tab-icon-undo:before { content: "\f0e2"; color: var(--icon-warning); }

/* 安全/锁定类 */
.tabs-icon.tab-icon-lock:before { content: "\f023"; color: var(--icon-warning); }
.tabs-icon.tab-icon-unlock:before { content: "\f09c"; color: var(--icon-success); }
.tabs-icon.tab-icon-key:before { content: "\f084"; color: var(--icon-warning); }
.tabs-icon.tab-icon-shield-alt:before { content: "\f3ed"; color: var(--icon-danger); }

/* 状态/标记类 */
.tabs-icon.tab-icon-check:before { content: "\f00c"; color: var(--icon-success); }
.tabs-icon.tab-icon-check-circle:before { content: "\f058"; color: var(--icon-success); }
.tabs-icon.tab-icon-times:before { content: "\f00d"; color: var(--icon-danger); }
.tabs-icon.tab-icon-times-circle:before { content: "\f057"; color: var(--icon-danger); }
.tabs-icon.tab-icon-exclamation-triangle:before { content: "\f071"; color: var(--icon-warning); }
.tabs-icon.tab-icon-exclamation-circle:before { content: "\f06a"; color: var(--icon-warning); }
.tabs-icon.tab-icon-question-circle:before { content: "\f059"; color: var(--icon-gray); }
.tabs-icon.tab-icon-info-circle:before { content: "\f05a"; color: var(--icon-primary); }
.tabs-icon.tab-icon-ban:before { content: "\f05e"; color: var(--icon-danger); }

/* 商业/金融类 - 紫色 */
.tabs-icon.tab-icon-shopping-cart:before { content: "\f07a"; color: var(--icon-purple); }
.tabs-icon.tab-icon-credit-card:before { content: "\f09d"; color: var(--icon-purple); }
.tabs-icon.tab-icon-money-bill:before { content: "\f0d6"; color: var(--icon-purple); }
.tabs-icon.tab-icon-dollar-sign:before { content: "\f155"; color: var(--icon-purple); }
.tabs-icon.tab-icon-yen-sign:before { content: "\f157"; color: var(--icon-purple); }
.tabs-icon.tab-icon-box:before { content: "\f466"; color: var(--icon-warning); }
.tabs-icon.tab-icon-boxes:before { content: "\f468"; color: var(--icon-warning); }
.tabs-icon.tab-icon-truck:before { content: "\f0d1"; color: var(--icon-cyan); }
.tabs-icon.tab-icon-tag:before { content: "\f02b"; color: var(--icon-warning); }
.tabs-icon.tab-icon-tags:before { content: "\f02c"; color: var(--icon-warning); }

/* 网络/链接类 - 蓝色 */
.tabs-icon.tab-icon-link:before { content: "\f0c1"; color: var(--icon-primary); }
.tabs-icon.tab-icon-unlink:before { content: "\f127"; color: var(--icon-primary); }
.tabs-icon.tab-icon-globe:before { content: "\f0ac"; color: var(--icon-cyan); }
.tabs-icon.tab-icon-wifi:before { content: "\f1eb"; color: var(--icon-primary); }
.tabs-icon.tab-icon-server:before { content: "\f233"; color: var(--icon-primary); }
.tabs-icon.tab-icon-share-alt:before { content: "\f1e0"; color: var(--icon-primary); }

/* 组织/架构类 - 橙色 */
.tabs-icon.tab-icon-sitemap:before { content: "\f0e8"; color: var(--icon-purple); }
.tabs-icon.tab-icon-building:before { content: "\f1ad"; color: var(--icon-warning); }
.tabs-icon.tab-icon-handshake:before { content: "\f2b5"; color: var(--icon-warning); }
.tabs-icon.tab-icon-briefcase:before { content: "\f0b1"; color: var(--icon-warning); }

/* 任务/流程类 */
.tabs-icon.tab-icon-tasks:before { content: "\f0ae"; color: var(--icon-warning); }
.tabs-icon.tab-icon-clipboard-list:before { content: "\f46d"; color: var(--icon-gray); }
.tabs-icon.tab-icon-list-alt:before { content: "\f022"; color: var(--icon-primary); }
.tabs-icon.tab-icon-project-diagram:before { content: "\f542"; color: var(--icon-cyan); }
.tabs-icon.tab-icon-stream:before { content: "\f550"; color: var(--icon-cyan); }

/* 其他常用类 */
.tabs-icon.tab-icon-home:before { content: "\f015"; color: var(--icon-primary); }
.tabs-icon.tab-icon-bookmark:before { content: "\f02e"; color: var(--icon-success); }
.tabs-icon.tab-icon-star:before { content: "\f005"; color: var(--icon-success); }
.tabs-icon.tab-icon-heart:before { content: "\f004"; color: var(--icon-success); }
.tabs-icon.tab-icon-heartbeat:before { content: "\f21e"; color: var(--icon-danger); }
.tabs-icon.tab-icon-flag:before { content: "\f024"; color: var(--icon-gray); }
.tabs-icon.tab-icon-thumbs-up:before { content: "\f164"; color: var(--icon-success); }
.tabs-icon.tab-icon-trophy:before { content: "\f091"; color: var(--icon-purple); }
.tabs-icon.tab-icon-gift:before { content: "\f06b"; color: var(--icon-purple); }
.tabs-icon.tab-icon-image:before { content: "\f03e"; color: var(--icon-purple); }
.tabs-icon.tab-icon-video:before { content: "\f03d"; color: var(--icon-purple); }
.tabs-icon.tab-icon-music:before { content: "\f001"; color: var(--icon-purple); }
.tabs-icon.tab-icon-phone:before { content: "\f095"; color: var(--icon-gray); }
.tabs-icon.tab-icon-mobile-alt:before { content: "\f3cd"; color: var(--icon-gray); }
.tabs-icon.tab-icon-map-marker-alt:before { content: "\f3c5"; color: var(--icon-cyan); }
.tabs-icon.tab-icon-print:before { content: "\f02f"; color: var(--icon-primary); }
.tabs-icon.tab-icon-qrcode:before { content: "\f029"; color: var(--icon-cyan); }
.tabs-icon.tab-icon-barcode:before { content: "\f02a"; color: var(--icon-cyan); }
.tabs-icon.tab-icon-plug:before { content: "\f1e6"; color: var(--icon-primary); }

/* ========== 8. EasyUI Tree 图标 ========== */

.tree-icon.tree-folder,
.tree-icon.tree-file {
    font-size: 14px !important;
    display: inline-block !important;
    width: 16px !important;
    height: 16px !important;
    line-height: 16px !important;
    text-align: center !important;
}

.tree-icon.tree-folder:before {
    content: "\f07b" !important;
    color: var(--icon-warning) !important;
}

.tree-icon.tree-folder.tree-folder-open:before {
    content: "\f07c" !important;
    color: var(--icon-warning) !important;
}

.tree-icon.tree-file:before {
    content: "\f15b" !important;
    color: var(--icon-primary) !important;
}

/* ========== 9. 菜单图标（icon-xxx 系列） ========== */
/* 基础样式已在第0节定义 */

.icon-menu:before { content: "\f0c9" !important; color: var(--icon-primary); }
.icon-system:before { content: "\f085" !important; color: var(--icon-primary); }
.icon-function:before { content: "\f12e" !important; color: var(--icon-warning); }
.icon-user:before { content: "\f007" !important; color: var(--icon-success); }
.icon-role:before { content: "\f0c0" !important; color: var(--icon-success); }
.icon-application:before { content: "\f108" !important; color: var(--icon-cyan); }
.icon-exit:before { content: "\f2f5" !important; color: var(--icon-danger); }
.icon-theme:before { content: "\f53f" !important; color: var(--icon-pink); }
.icon-controller:before { content: "\f11b" !important; color: var(--icon-gray); }
.icon-setting:before { content: "\f013" !important; color: var(--icon-primary); }
.icon-department:before { content: "\f1ad" !important; color: var(--icon-warning); }
.icon-dict:before { content: "\f02d" !important; color: var(--icon-cyan); }
.icon-category:before { content: "\f03a" !important; color: var(--icon-success); }

/* ========== 10. EasyUI + FA 桥接（.fa 类支持） ========== */

.panel-icon.fa,
.tree-icon.fa,
.tabs-icon.fa,
.menu-icon.fa,
.accordion-icon.fa,
.window-icon.fa {
    font-style: normal;
    font-size: 14px;
    line-height: 16px;
    display: inline-block;
    width: 16px;
    height: 16px;
    text-align: center;
    -moz-osx-font-smoothing: grayscale;
    -webkit-font-smoothing: antialiased;
}

.l-btn-icon.fa {
    font-style: normal;
    font-size: 14px;
    line-height: 16px;
    display: inline-block;
    width: 16px;
    height: 16px;
    text-align: center;
    -moz-osx-font-smoothing: grayscale;
    -webkit-font-smoothing: antialiased;
}

.l-btn-icon.fa:before,
.l-btn-text .fa:before,
.panel-icon.fa:before,
.tree-icon.fa:before,
.tabs-icon.fa:before,
.menu-icon.fa:before,
.accordion-icon.fa:before,
.window-icon.fa:before {
    display: inline-block;
}

.l-btn-icon.fa:before,
.l-btn-text .fa:before {
    transform: scale(var(--l-btn-icon-glyph-scale, 1));
    transform-origin: center center;
}

.l-btn-icon.fa.fa-cogs,
.l-btn-icon.fa.fa-microphone-slash,
.l-btn-icon.fa.fa-user-times,
.l-btn-icon.fa.fa-user-cog,
.l-btn-icon.fa.fa-user-shield,
.l-btn-icon.fa.fa-user-tag,
.l-btn-icon.fa.fa-project-diagram,
.l-btn-icon.fa.fa-robot,
.l-btn-icon.fa.fa-shipping-fast,
.l-btn-icon.fa.fa-sitemap,
.l-btn-icon.fa.fa-cloud,
.l-btn-icon.fa.fa-cloud-download-alt,
.l-btn-icon.fa.fa-cloud-upload-alt,
.l-btn-icon.fa.fa-code,
.l-btn-icon.fa.fa-laptop,
.l-btn-icon.fa.fa-terminal,
.l-btn-icon.fa.fa-truck,
.l-btn-icon.fa.fa-users,
.l-btn-icon.fa.fa-wifi,
.l-btn-text .fa.fa-cogs,
.l-btn-text .fa.fa-microphone-slash,
.l-btn-text .fa.fa-user-times,
.l-btn-text .fa.fa-user-cog,
.l-btn-text .fa.fa-user-shield,
.l-btn-text .fa.fa-user-tag,
.l-btn-text .fa.fa-project-diagram,
.l-btn-text .fa.fa-robot,
.l-btn-text .fa.fa-shipping-fast,
.l-btn-text .fa.fa-sitemap,
.l-btn-text .fa.fa-cloud,
.l-btn-text .fa.fa-cloud-download-alt,
.l-btn-text .fa.fa-cloud-upload-alt,
.l-btn-text .fa.fa-code,
.l-btn-text .fa.fa-laptop,
.l-btn-text .fa.fa-terminal,
.l-btn-text .fa.fa-truck,
.l-btn-text .fa.fa-users,
.l-btn-text .fa.fa-wifi {
    --l-btn-icon-glyph-scale: .8;
}

.l-btn-icon.fa.fa-edit,
.l-btn-icon.fa.fa-eye,
.l-btn-icon.fa.fa-eye-slash,
.l-btn-icon.fa.fa-home,
.l-btn-icon.fa.fa-folder-open,
.l-btn-icon.fa.fa-exclamation-triangle,
.l-btn-icon.fa.fa-comments,
.l-btn-icon.fa.fa-shopping-cart,
.l-btn-icon.fa.fa-address-card,
.l-btn-icon.fa.fa-boxes,
.l-btn-icon.fa.fa-credit-card,
.l-btn-icon.fa.fa-desktop,
.l-btn-icon.fa.fa-id-card,
.l-btn-icon.fa.fa-inbox,
.l-btn-icon.fa.fa-tachometer-alt,
.l-btn-icon.fa.fa-trophy,
.l-btn-icon.fa.fa-video,
.l-btn-icon.fa.fa-chart-pie,
.l-btn-text .fa.fa-edit,
.l-btn-text .fa.fa-eye,
.l-btn-text .fa.fa-eye-slash,
.l-btn-text .fa.fa-home,
.l-btn-text .fa.fa-folder-open,
.l-btn-text .fa.fa-exclamation-triangle,
.l-btn-text .fa.fa-comments,
.l-btn-text .fa.fa-shopping-cart,
.l-btn-text .fa.fa-address-card,
.l-btn-text .fa.fa-boxes,
.l-btn-text .fa.fa-credit-card,
.l-btn-text .fa.fa-desktop,
.l-btn-text .fa.fa-id-card,
.l-btn-text .fa.fa-inbox,
.l-btn-text .fa.fa-tachometer-alt,
.l-btn-text .fa.fa-trophy,
.l-btn-text .fa.fa-video,
.l-btn-text .fa.fa-chart-pie {
    --l-btn-icon-glyph-scale: .9;
}

.l-btn-icon.fa.fa-microphone,
.l-btn-icon.fa.fa-angle-double-down,
.l-btn-icon.fa.fa-angle-double-up,
.l-btn-text .fa.fa-microphone,
.l-btn-text .fa.fa-angle-double-down,
.l-btn-text .fa.fa-angle-double-up {
    --l-btn-icon-glyph-scale: 1.08;
}

/* ========== 11. 菜单扩展图标（icon-fa-xxx 系列） ========== */

.menu-icon.icon-fa {
    font-size: 12px;
    display: inline-flex;
    align-items: center;
    justify-content: center;
}

.menu-icon.icon-fa-sync::before { content: "\f2f1"; color: var(--icon-primary); }
.menu-icon.icon-fa-lock::before { content: "\f023"; color: var(--icon-warning); }
.menu-icon.icon-fa-exit::before { content: "\f2f5"; color: var(--icon-danger); }
.menu-icon.icon-fa-close::before { content: "\f00d"; color: #909399; }
.menu-icon.icon-fa-close-other::before { content: "\f24d"; color: var(--icon-warning); }
.menu-icon.icon-fa-close-all::before { content: "\f00d"; color: var(--icon-danger); }

/* ========== 12. 选择列弹窗图标 ========== */

.icon-choose-column {
    font-size: 14px;
    display: inline-flex !important;
    align-items: center;
    justify-content: center;
}

.icon-choose-column::before {
    content: "\f0db";
    color: #2196F3;
}

/* ========== 13. Textbox 图标扩展 ========== */

.textbox .textbox-icon {
    display: flex;
    align-items: center;
    justify-content: center;
    width: 26px;
}
/* spinner 按钮修复 */
.textbox .textbox-icon.spinner-button-updown {
    display: inline-block;
}
.textbox .textbox-icon.spinner-button-updown:hover {
    background-color: transparent !important;
}
.spinner-button-updown .spinner-arrow {
    display: block !important;
    height: 50% !important;
    width: 100%;
    overflow: hidden;
}
.spinner-arrow-up, .spinner-arrow-down {
    opacity: 0.4 !important;
    width: 18px !important;
    height: 100% !important;
    margin: 0 auto;
    transition: opacity 0.15s;
}
.spinner-arrow:hover .spinner-arrow-up,
.spinner-arrow:hover .spinner-arrow-down {
    opacity: 1 !important;
}
.spinner-button-updown .spinner-arrow {
    display: block;
    height: 50%;
    overflow: hidden;
    text-decoration: none;
}

.textbox .textbox-icon .fa {
    color: #999;
    font-size: 14px;
    transition: color 0.2s;
}

/* 密码显示/隐藏切换 */
.textbox .textbox-icon.icon-pwd-toggle {
    cursor: pointer;
}

.textbox .textbox-icon.icon-pwd-toggle:hover .fa {
    color: #666;
}

/* 清除按钮 */
.textbox .textbox-icon.icon-clear {
    cursor: pointer;
}

.textbox .textbox-icon.icon-clear:hover .fa {
    color: var(--icon-danger);
}

/* 搜索按钮 */
.textbox .textbox-icon.icon-search {
    cursor: pointer;
}

.textbox .textbox-icon.icon-search:hover .fa {
    color: var(--icon-primary);
}

/* 只读图标 */
.textbox .textbox-icon.icon-user .fa,
.textbox .textbox-icon.icon-email .fa,
.textbox .textbox-icon.icon-phone .fa,
.textbox .textbox-icon.icon-lock .fa {
    color: #999;
}

/* ========== 14. 全局 FA 图标语义色 ========== */
/* 适用于所有使用 fa-xxx 类名的图标，包括工具栏、弹窗、下拉框等 */
/* 使用 .fa.fa-xxx 格式提高选择器优先级 */

/* 系统/设置/查看 - 蓝色 #409EFF */
.fa.fa-cog, .fa.fa-cogs, .fa.fa-bars, .fa.fa-th, .fa.fa-sliders-h,
.fa.fa-toolbox, .fa.fa-wrench, .fa.fa-database,
.fa.fa-chart-bar, .fa.fa-chart-line, .fa.fa-chart-pie, .fa.fa-chart-area,
.fa.fa-search, .fa.fa-search-plus, .fa.fa-search-minus,
.fa.fa-eye, .fa.fa-eye-slash, .fa.fa-filter,
.fa.fa-sync, .fa.fa-sync-alt, .fa.fa-redo, .fa.fa-refresh,
.fa.fa-link, .fa.fa-unlink, .fa.fa-sign-in-alt,
.fa.fa-home, .fa.fa-wifi, .fa.fa-server, .fa.fa-share-alt, .fa.fa-print,
.fa.fa-info-circle, .fa.fa-file-word, .fa.fa-copy, .fa.fa-clone,
.fa.fa-plug, .fa.fa-list-alt {
    color: #409EFF !important;
}

/* 创建/新增/成功/启用 - 绿色 #67C23A */
.fa.fa-plus, .fa.fa-plus-circle, .fa.fa-plus-square,
.fa.fa-check, .fa.fa-check-circle,
.fa.fa-user, .fa.fa-user-shield, .fa.fa-user-cog, .fa.fa-user-tie, .fa.fa-users,
.fa.fa-envelope, .fa.fa-list, .fa.fa-list-ul, .fa.fa-list-ol,
.fa.fa-unlock, .fa.fa-unlock-alt,
.fa.fa-thumbs-up, .fa.fa-heart, .fa.fa-star, .fa.fa-bookmark, .fa.fa-save,
.fa.fa-file-excel {
    color: #67C23A !important;
}

/* 编辑/修改/警告/业务 - 橙色 #E6A23C */
.fa.fa-edit, .fa.fa-pencil-alt, .fa.fa-clipboard,
.fa.fa-box, .fa.fa-boxes, .fa.fa-handshake, .fa.fa-tasks,
.fa.fa-clock, .fa.fa-calendar, .fa.fa-calendar-alt, .fa.fa-calendar-check, .fa.fa-hourglass,
.fa.fa-bell, .fa.fa-key, .fa.fa-folder, .fa.fa-folder-open, .fa.fa-building,
.fa.fa-broom, .fa.fa-eraser,
.fa.fa-exclamation-triangle, .fa.fa-exclamation-circle,
.fa.fa-lock, .fa.fa-lock-alt, .fa.fa-briefcase,
.fa.fa-tag, .fa.fa-tags, .fa.fa-undo,
.fa.fa-file-archive, .fa.fa-file-code, .fa.fa-puzzle-piece {
    color: #E6A23C !important;
}

/* 删除/移除/错误/禁用 - 红色 #F56C6C */
.fa.fa-trash, .fa.fa-trash-alt,
.fa.fa-times, .fa.fa-times-circle, .fa.fa-ban,
.fa.fa-shield-alt, .fa.fa-sign-out-alt, .fa.fa-minus,
.fa.fa-file-pdf, .fa.fa-heartbeat {
    color: #F56C6C !important;
}

/* 权限/支付/下载 - 紫色 #9C27B0 */
.fa.fa-user-tag, .fa.fa-sitemap,
.fa.fa-credit-card, .fa.fa-shopping-cart, .fa.fa-money-bill, .fa.fa-dollar-sign, .fa.fa-yen-sign,
.fa.fa-download, .fa.fa-arrow-alt-circle-up, .fa.fa-cloud-download-alt,
.fa.fa-id-card, .fa.fa-address-card,
.fa.fa-trophy, .fa.fa-gift,
.fa.fa-file-image, .fa.fa-image, .fa.fa-video, .fa.fa-music {
    color: #9C27B0 !important;
}

/* 应用/队列/上传/国际化 - 青色 #00BCD4 */
.fa.fa-th-large, .fa.fa-desktop, .fa.fa-stream, .fa.fa-project-diagram,
.fa.fa-upload, .fa.fa-arrow-alt-circle-down, .fa.fa-cloud-upload-alt,
.fa.fa-globe, .fa.fa-comment, .fa.fa-comments, .fa.fa-inbox, .fa.fa-paper-plane,
.fa.fa-truck, .fa.fa-qrcode, .fa.fa-barcode, .fa.fa-map-marker-alt,
.fa.fa-book {
    color: #00BCD4 !important;
}

/* 文档/日志/取消/帮助 - 深灰色 #606266 */
.fa.fa-file, .fa.fa-file-alt, .fa.fa-clipboard-list,
.fa.fa-gamepad, .fa.fa-history, .fa.fa-question-circle,
.fa.fa-table, .fa.fa-cut, .fa.fa-paste, .fa.fa-flag,
.fa.fa-phone, .fa.fa-mobile-alt {
    color: #606266 !important;
}

/* 主题/调色板 - 粉色 #FF4081 */
.fa.fa-palette {
    color: #FF4081 !important;
}
