/**
 * ============================================================
 * theme.css — 一美人派单 全站配色统一主题（方案C：靛蓝现代）
 * ------------------------------------------------------------
*/

/* --- 默认：靛蓝（无皮肤类时生效，沿用既有精确色值，0 视觉变化） --- */
:root {
    --ymr-primary: #5b6bf5;
    --ymr-primary-hover: #4353e6;
    --ymr-primary-active: #3a48c9;
    --ymr-primary-bg: #eef0fe;
    --ymr-primary-muted: #8b97f8;
    --ymr-primary-text: #5b6bf5;
    --ymr-primary-rgb: 91, 107, 245;
    --ymr-primary-fg: #ffffff;
    --ymr-shell: #4353c9;
    --ymr-shell-deep: #3d4cbb;
    --ymr-shell-rgb: 67, 83, 201;
    --ymr-select: #4c5ce8;
    --ymr-select-rgb: 76, 92, 232;
    --ymr-shell-fg: #ffffff;
    --ymr-select-fg: #ffffff;
}

/* --- 蓝（深底白字）--- */
body.skin-blue {
    --ymr-primary: #3c8dbc;
    --ymr-primary-hover: #357da6;
    --ymr-primary-active: #2e6d91;
    --ymr-primary-bg: #f2f7fa;
    --ymr-primary-muted: #5a9dc4;
    --ymr-primary-text: #3c8dbc;
    --ymr-primary-rgb: 60, 141, 188;
    --ymr-primary-fg: #ffffff;
    --ymr-shell: #307096;
    --ymr-shell-deep: #2b6587;
    --ymr-shell-rgb: 48, 112, 150;
    --ymr-select: #357da6;
    --ymr-select-rgb: 53, 125, 166;
    --ymr-shell-fg: #ffffff;
    --ymr-shell-hover: rgba(255, 255, 255, .14);
    --ymr-select-fg: #ffffff;
}

/* --- 绿（深底白字）--- */
body.skin-green {
    --ymr-primary: #00a65a;
    --ymr-primary-hover: #00934f;
    --ymr-primary-active: #008045;
    --ymr-primary-bg: #eefef7;
    --ymr-primary-muted: #08b867;
    --ymr-primary-text: #00a65a;
    --ymr-primary-rgb: 0, 166, 90;
    --ymr-primary-fg: #ffffff;
    --ymr-shell: #008448;
    --ymr-shell-deep: #007741;
    --ymr-shell-rgb: 0, 132, 72;
    --ymr-select: #008648;
    --ymr-select-rgb: 0, 134, 72;
    --ymr-shell-fg: #ffffff;
    --ymr-shell-hover: rgba(255, 255, 255, .14);
    --ymr-select-fg: #ffffff;
}

/* --- 紫（深底白字）--- */
body.skin-purple {
    --ymr-primary: #605ca8;
    --ymr-primary-hover: #545096;
    --ymr-primary-active: #494683;
    --ymr-primary-bg: #f4f4f9;
    --ymr-primary-muted: #7b78b3;
    --ymr-primary-text: #605ca8;
    --ymr-primary-rgb: 96, 92, 168;
    --ymr-primary-fg: #ffffff;
    --ymr-shell: #4b4887;
    --ymr-shell-deep: #43417a;
    --ymr-shell-rgb: 75, 72, 135;
    --ymr-select: #545096;
    --ymr-select-rgb: 84, 80, 150;
    --ymr-shell-fg: #ffffff;
    --ymr-shell-hover: rgba(255, 255, 255, .14);
    --ymr-select-fg: #ffffff;
}

/* --- 红（深底白字）--- */
body.skin-red {
    --ymr-primary: #dd4b39;
    --ymr-primary-hover: #d13724;
    --ymr-primary-active: #b7301f;
    --ymr-primary-bg: #fcf2f0;
    --ymr-primary-muted: #de7062;
    --ymr-primary-text: #dd4b39;
    --ymr-primary-rgb: 221, 75, 57;
    --ymr-primary-fg: #ffffff;
    --ymr-shell: #bd3220;
    --ymr-shell-deep: #aa2d1d;
    --ymr-shell-rgb: 189, 50, 32;
    --ymr-select: #d13724;
    --ymr-select-rgb: 209, 55, 36;
    --ymr-shell-fg: #ffffff;
    --ymr-shell-hover: rgba(255, 255, 255, .14);
    --ymr-select-fg: #ffffff;
}

/* --- 黄（亮底深字）--- */
body.skin-yellow {
    --ymr-primary: #f39c12;
    --ymr-primary-hover: #db8b0b;
    --ymr-primary-active: #c0790a;
    --ymr-primary-bg: #fdf8ef;
    --ymr-primary-muted: #edaa3f;
    --ymr-primary-text: #a26708;
    --ymr-primary-rgb: 243, 156, 18;
    --ymr-primary-fg: #3f2803;
    --ymr-shell: #f39c12;
    --ymr-shell-deep: #e08e0b;
    --ymr-shell-rgb: 243, 156, 18;
    --ymr-select: #f39c12;
    --ymr-select-rgb: 243, 156, 18;
    --ymr-shell-fg: #3f2803;
    --ymr-shell-hover: rgba(0, 0, 0, .08);
    --ymr-select-fg: #3f2803;
}

/* ---------- 二、覆盖 Inspinia 主题的按钮主色 ---------- */

/* 主按钮常态 */
.btn-primary {
    background-color: var(--ymr-primary);
    border-color: var(--ymr-primary);
    color: var(--ymr-primary-fg);
}

/* 主按钮 hover / focus / 按下 */
.btn-primary:hover,
.btn-primary:focus,
.btn-primary:active,
.btn-primary.active,
.open > .dropdown-toggle.btn-primary {
    background-color: var(--ymr-primary-hover);
    border-color: var(--ymr-primary-hover);
    color: var(--ymr-primary-fg);
}

/* 主按钮禁用态（原为比主色亮的绿 #1dc5a3，对应改浅靛蓝） */
.btn-primary.disabled,
.btn-primary.disabled:hover,
.btn-primary.disabled:focus,
.btn-primary.disabled:active,
.btn-primary.disabled.active,
.btn-primary[disabled],
.btn-primary[disabled]:hover,
.btn-primary[disabled]:focus,
.btn-primary[disabled]:active,
.btn-primary.active[disabled],
fieldset[disabled] .btn-primary,
fieldset[disabled] .btn-primary:hover,
fieldset[disabled] .btn-primary:focus,
fieldset[disabled] .btn-primary:active,
fieldset[disabled] .btn-primary.active {
    background-color: var(--ymr-primary-muted);
    border-color: var(--ymr-primary-muted);
}

/* 描边版主按钮（白底彩字） */
.btn-primary.btn-outline {
    color: var(--ymr-primary-text);
}

/* dim 立体阴影按钮（原为绿色阴影 #16987e） */
.btn-primary.dim {
    box-shadow: inset 0 0 0 var(--ymr-primary-active), 0px 5px 0 0 var(--ymr-primary-active), 0px 10px 5px #999;
}

.btn-primary.dim:active {
    box-shadow: inset 0 0 0 var(--ymr-primary-active), 0px 2px 0 0 var(--ymr-primary-active), 0px 5px 3px #999;
}

/* ---------- 三、全局链接与输入框聚焦色统一 ----------
   原全局链接色为 Inspinia 墨绿，统一为主色靛蓝。
   下拉菜单、ztree、分页等组件自带更具体的选择器，不受影响。 */
a {
    color: var(--ymr-primary-text);
}

a:hover,
a:focus {
    color: var(--ymr-primary-hover);
}

.form-control:focus {
    border-color: var(--ymr-primary);
}

/* ---------- 四、圆角微调（可选段，独立开关） ---------- */
.form-control {
    border-radius: 6px !important;
}

.btn-success {
    background-color: #2fa55e;
    border-color: #2fa55e;
    color: #fff
}

.btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .open .dropdown-toggle.btn-success {
    background-color: #27934f;
    border-color: #27934f;
    color: #fff
}

.btn-success.disabled, .btn-success.disabled:hover, .btn-success.disabled:focus, .btn-success.disabled:active, .btn-success.disabled.active, .btn-success[disabled], .btn-success[disabled]:hover, .btn-success[disabled]:focus, .btn-success[disabled]:active, .btn-success.active[disabled], fieldset[disabled] .btn-success, fieldset[disabled] .btn-success:hover, fieldset[disabled] .btn-success:focus, fieldset[disabled] .btn-success:active, fieldset[disabled] .btn-success.active {
    background-color: #68c28a;
    border-color: #68c28a
}

.btn-success.btn-outline {
    color: #2fa55e
}

button.btn-success.dim {
    box-shadow: inset 0 0 0 #1e7a41, 0px 5px 0 0 #1e7a41, 0px 10px 5px #999
}

button.btn-success.dim:active {
    box-shadow: inset 0 0 0 #1e7a41, 0px 2px 0 0 #1e7a41, 0px 5px 3px #999
}

.btn-info {
    background-color: #4aa3f0;
    border-color: #4aa3f0;
    color: #fff
}

.btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .open .dropdown-toggle.btn-info {
    background-color: #3a94e0;
    border-color: #3a94e0;
    color: #fff
}

.btn-info.disabled, .btn-info.disabled:hover, .btn-info.disabled:focus, .btn-info.disabled:active, .btn-info.disabled.active, .btn-info[disabled], .btn-info[disabled]:hover, .btn-info[disabled]:focus, .btn-info[disabled]:active, .btn-info.active[disabled], fieldset[disabled] .btn-info, fieldset[disabled] .btn-info:hover, fieldset[disabled] .btn-info:focus, fieldset[disabled] .btn-info:active, fieldset[disabled] .btn-info.active {
    background-color: #8ac2f7;
    border-color: #8ac2f7
}

.btn-info.btn-outline {
    color: #4aa3f0
}

button.btn-info.dim {
    box-shadow: inset 0 0 0 #2b7fc4, 0px 5px 0 0 #2b7fc4, 0px 10px 5px #999
}

button.btn-info.dim:active {
    box-shadow: inset 0 0 0 #2b7fc4, 0px 2px 0 0 #2b7fc4, 0px 5px 3px #999
}

.btn-warning {
    background-color: #e8a33d;
    border-color: #e8a33d;
    color: #fff
}

.btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .open .dropdown-toggle.btn-warning {
    background-color: #d99529;
    border-color: #d99529;
    color: #fff
}

.btn-warning.disabled, .btn-warning.disabled:hover, .btn-warning.disabled:focus, .btn-warning.disabled:active, .btn-warning.disabled.active, .btn-warning[disabled], .btn-warning[disabled]:hover, .btn-warning[disabled]:focus, .btn-warning[disabled]:active, .btn-warning.active[disabled], fieldset[disabled] .btn-warning, fieldset[disabled] .btn-warning:hover, fieldset[disabled] .btn-warning:focus, fieldset[disabled] .btn-warning:active, fieldset[disabled] .btn-warning.active {
    background-color: #f0c178;
    border-color: #f0c178
}

.btn-warning.btn-outline {
    color: #e8a33d
}

button.btn-warning.dim {
    box-shadow: inset 0 0 0 #c07f18, 0px 5px 0 0 #c07f18, 0px 10px 5px #999
}

button.btn-warning.dim:active {
    box-shadow: inset 0 0 0 #c07f18, 0px 2px 0 0 #c07f18, 0px 5px 3px #999
}

.btn-danger {
    background-color: #e05252;
    border-color: #e05252;
    color: #fff
}

.btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .open .dropdown-toggle.btn-danger {
    background-color: #cc3f3f;
    border-color: #cc3f3f;
    color: #fff
}

.btn-danger.disabled, .btn-danger.disabled:hover, .btn-danger.disabled:focus, .btn-danger.disabled:active, .btn-danger.disabled.active, .btn-danger[disabled], .btn-danger[disabled]:hover, .btn-danger[disabled]:focus, .btn-danger[disabled]:active, .btn-danger.active[disabled], fieldset[disabled] .btn-danger, fieldset[disabled] .btn-danger:hover, fieldset[disabled] .btn-danger:focus, fieldset[disabled] .btn-danger:active, fieldset[disabled] .btn-danger.active {
    background-color: #ef8f8f;
    border-color: #ef8f8f
}

.btn-danger.btn-outline {
    color: #e05252
}

button.btn-danger.dim {
    box-shadow: inset 0 0 0 #a32d2d, 0px 5px 0 0 #a32d2d, 0px 10px 5px #999
}

button.btn-danger.dim:active {
    box-shadow: inset 0 0 0 #a32d2d, 0px 2px 0 0 #a32d2d, 0px 5px 3px #999
}

/* ---------- 六、skin-purple 皮肤紫色系 → 靛蓝（自动生成，20260920） ----------；选择器与 skins.css 保持一致。回退：删除本段全部规则。 */
.skin-purple .navbar {
    background-color: var(--ymr-primary)
}

.skin-purple .navbar-default .nav > li.selected > a, .skin-purple .navbar-default .nav > li.selected > a:focus {
    background-color: var(--ymr-primary-hover);
    color: rgba(255, 255, 255, 1);
}

.skin-purple .navbar .sidebar-toggle:hover {
    background-color: var(--ymr-primary-active)
}

.skin-purple .logo {
    background-color: var(--ymr-primary-active);
    color: var(--ymr-primary-fg);
    border-bottom: 0 solid transparent
}

.skin-purple .logo:hover {
    background-color: var(--ymr-primary-hover)
}

.skin-purple li.user-header {
    background-color: var(--ymr-primary)
}

.skin-purple .nav:not(.navbar-toolbar) > li.active {
    color: #fff;
    background: #293846;
    border-left: 3px solid var(--ymr-primary);
}

.skin-purple .dropdown-menu > .active > a, .skin-purple .dropdown-menu > .active > a:hover, .skin-purple .dropdown-menu > .active > a:focus {
    color: var(--ymr-primary-fg) !important;
    text-decoration: none;
    outline: 0;
    background-color: var(--ymr-primary);
}

.theme-light.skin-purple .navbar-default .nav > li.active > a {
    color: var(--ymr-primary-hover);
}

.theme-light.skin-purple .navbar-default .nav > li.selected > a, .theme-light.skin-purple .navbar-default .nav > li.selected > a:focus {
    background-color: var(--ymr-primary-bg);
    color: var(--ymr-primary-hover);
}

.theme-blue.skin-purple .navbar-default .nav > li.active > a {
    color: var(--ymr-primary-hover);
}

.theme-blue.skin-purple .navbar-default .nav > li.selected > a, .theme-blue.skin-purple .navbar-default .nav > li.selected > a:focus {
    background-color: var(--ymr-primary-hover);
    color: rgba(255, 255, 255, 1);
}

.icheckbox-blue,
.iradio-blue {
    /* 必须用 background-image 而非 background 简写：简写会把 background-position */
    background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='20' viewBox='0 0 200 20'%3E%3Crect x='0.75' y='0.75' width='16.5' height='16.5' rx='2.7' fill='%23fff' stroke='%23c3c3c3' stroke-width='1.5'/%3E%3Crect x='20.75' y='0.75' width='16.5' height='16.5' rx='2.7' fill='%23fff' stroke='%235b6bf5' stroke-width='1.5'/%3E%3Crect x='40.75' y='0.75' width='16.5' height='16.5' rx='2.7' fill='%235b6bf5'/%3E%3Cpath d='M44.5 9.5L48 13L55.5 5' stroke='%23fff' stroke-width='2.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3Crect x='60.75' y='0.75' width='16.5' height='16.5' rx='2.7' fill='%23ececec' stroke='%23dcdcdc' stroke-width='1.5'/%3E%3Crect x='80.75' y='0.75' width='16.5' height='16.5' rx='2.7' fill='%238b97f8'/%3E%3Cpath d='M84.5 9.5L88 13L95.5 5' stroke='%23fff' stroke-width='2.5' fill='none' stroke-linecap='round' stroke-linejoin='round'/%3E%3Ccircle cx='109' cy='9' r='8.25' fill='%23fff' stroke='%23c3c3c3' stroke-width='1.5'/%3E%3Ccircle cx='129' cy='9' r='8.25' fill='%23fff' stroke='%235b6bf5' stroke-width='1.5'/%3E%3Ccircle cx='149' cy='9' r='8.25' fill='%235b6bf5'/%3E%3Ccircle cx='149' cy='9' r='3.5' fill='%23fff'/%3E%3Ccircle cx='169' cy='9' r='8.25' fill='%23ececec' stroke='%23dcdcdc' stroke-width='1.5'/%3E%3Ccircle cx='189' cy='9' r='8.25' fill='%238b97f8'/%3E%3Ccircle cx='189' cy='9' r='3.5' fill='%23fff'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    /* 显式声明雪碧图尺寸：SVG 作 CSS 背景时，若浏览器不认它的 */
    background-size: 200px 20px;
}

/* 各状态取位（20px 步进；0 ~ 80 = 方形区 checkbox，100 ~ 180 = 圆形区 radio）。
   显式声明一遍，与 ry-ui.css 保持一致，不再依赖两个文件的加载顺序。 */
.icheckbox-blue, .icheckbox-blue.static:hover {
    background-position: 0 0;
}

.icheckbox-blue.hover, .icheckbox-blue:hover {
    background-position: -20px 0;
}

.icheckbox-blue.checked {
    background-position: -40px 0;
}

.icheckbox-blue.disabled {
    background-position: -60px 0;
}

.icheckbox-blue.checked.disabled {
    background-position: -80px 0;
}

.iradio-blue, .iradio-blue.static:hover {
    background-position: -100px 0;
}

.iradio-blue.hover, .iradio-blue:hover {
    background-position: -120px 0;
}

.iradio-blue.checked {
    background-position: -140px 0;
}

.iradio-blue.disabled {
    background-position: -160px 0;
}

.iradio-blue.checked.disabled {
    background-position: -180px 0;
}

/* ---------- 八、style.min.css 残留绿清零（自动生成，20260920） ----------；回退：删除本段全部规则。 */
.navbar-default .special_link a {
    background: var(--ymr-primary);
    color: var(--ymr-primary-fg)
}

.navbar-default .special_link a:hover {
    background: var(--ymr-primary-hover) !important;
    color: var(--ymr-primary-fg)
}

.navbar-default .special_link a span.label {
    background: #fff;
    color: var(--ymr-primary-text)
}

.navbar-default .landing_link a {
    background: #7c89f7;
    color: white
}

.navbar-default .landing_link a:hover {
    background: var(--ymr-primary) !important;
    color: var(--ymr-primary-fg)
}

.navbar-default .landing_link a span.label {
    background: #fff;
    color: #7c89f7
}

body.mini-navbar .nav-header {
    padding: 0;
    background-color: var(--ymr-primary)
}

.top-navigation .navbar-nav .dropdown-menu > .active > a {
    background: white;
    color: var(--ymr-primary-text);
    font-weight: bold
}

.top-navigation .nav > li a:hover, .top-navigation .nav > li a:focus {
    background: #fff;
    color: var(--ymr-primary-text)
}

.top-navigation .nav > li.active > a {
    color: var(--ymr-primary-text)
}

.top-navigation .navbar-brand {
    background: var(--ymr-primary);
    color: var(--ymr-primary-fg);
    padding: 15px 25px
}

.navbar-toggle {
    background-color: var(--ymr-primary);
    color: var(--ymr-primary-fg);
    padding: 6px 12px;
    font-size: 14px
}

.btn-link:hover, .btn-link:focus, .btn-link:active, .btn-link.active, .open .dropdown-toggle.btn-link {
    color: var(--ymr-primary-text);
    text-decoration: none
}

.label-primary, .badge-primary {
    background-color: var(--ymr-primary);
    color: var(--ymr-primary-fg)
}

.onoffswitch-label {
    display: block;
    overflow: hidden;
    cursor: pointer;
    border: 2px solid var(--ymr-primary);
    border-radius: 2px
}

.onoffswitch-inner:before {
    content: "ON";
    padding-left: 10px;
    background-color: var(--ymr-primary);
    color: var(--ymr-primary-fg)
}

.onoffswitch-switch {
    width: 20px;
    margin: 0;
    background: #fff;
    border: 2px solid var(--ymr-primary);
    border-radius: 2px;
    position: absolute;
    top: 0;
    bottom: 0;
    right: 44px;
    -webkit-transition: all .3s ease-in 0s;
    transition: all .3s ease-in 0s
}

.fc-state-active {
    background-color: var(--ymr-primary);
    border-color: var(--ymr-primary);
    color: var(--ymr-primary-fg)
}

.fc-event, .fc-agenda .fc-event-time, .fc-event a {
    padding: 4px 6px;
    background-color: var(--ymr-primary);
    border-color: var(--ymr-primary)
}

a.list-group-item.active, a.list-group-item.active:hover, a.list-group-item.active:focus {
    background-color: var(--ymr-primary);
    border-color: var(--ymr-primary);
    color: var(--ymr-primary-fg);
    z-index: 2
}

.pace .pace-progress {
    background: var(--ymr-primary);
    position: fixed;
    z-index: 2000;
    top: 0;
    width: 100%;
    height: 2px
}

.has-success .form-control {
    border-color: var(--ymr-primary)
}

.has-success .control-label {
    color: var(--ymr-primary-text)
}

.noUi-connect {
    background: none repeat scroll 0 0 var(--ymr-primary);
    box-shadow: none
}

.onoffswitch-label {
    display: block;
    overflow: hidden;
    cursor: pointer;
    border: 2px solid var(--ymr-primary);
    border-radius: 3px
}

.onoffswitch-inner:before {
    content: "ON";
    padding-left: 7px;
    background-color: var(--ymr-primary);
    color: var(--ymr-primary-fg)
}

.onoffswitch-switch {
    display: block;
    width: 18px;
    margin: 0;
    background: #fff;
    border: 2px solid var(--ymr-primary);
    border-radius: 3px;
    position: absolute;
    top: 0;
    bottom: 0;
    right: 36px;
    -webkit-transition: all .3s ease-in 0s;
    transition: all .3s ease-in 0s
}

.toast {
    background-color: var(--ymr-primary)
}

.toast-success {
    background-color: var(--ymr-primary)
}

.forum-item.active .fa {
    color: var(--ymr-primary-text)
}

.forum-item.active a.forum-item-title {
    color: var(--ymr-primary-text)
}

.vertical-date small {
    color: var(--ymr-primary-text);
    font-weight: 400
}

.branding {
    float: left;
    color: var(--ymr-primary-fg);
    font-size: 18px;
    font-weight: 600;
    padding: 17px 20px;
    text-align: center;
    background-color: var(--ymr-primary)
}

.navy-bg {
    background-color: var(--ymr-primary);
    color: var(--ymr-primary-fg)
}

.panel-primary {
    border-color: var(--ymr-primary)
}

.panel-primary > .panel-heading {
    background-color: var(--ymr-primary);
    border-color: var(--ymr-primary)
}

.progress-bar {
    background-color: var(--ymr-primary)
}

.text-navy {
    color: var(--ymr-primary-text)
}

.category-list li a .text-navy {
    color: var(--ymr-primary-text)
}

.faq-question {
    font-size: 18px;
    font-weight: 600;
    color: var(--ymr-primary-text);
    display: block
}

.issue-tracker .btn-link {
    color: var(--ymr-primary-text)
}

.agile-list li.success-element {
    border-left: 3px solid var(--ymr-primary)
}

.open-small-chat {
    height: 38px;
    width: 38px;
    display: block;
    background: var(--ymr-primary);
    padding: 9px 8px;
    text-align: center;
    color: var(--ymr-primary-fg);
    border-radius: 50%
}

.open-small-chat:hover {
    color: var(--ymr-primary-fg);
    background: var(--ymr-primary)
}

.small-chat-box .content .chat-message.active {
    background: var(--ymr-primary);
    color: var(--ymr-primary-fg)
}

.sk-spinner-rotating-plane.sk-spinner {
    width: 30px;
    height: 30px;
    background-color: var(--ymr-primary);
    margin: 0 auto;
    -webkit-animation: sk-rotatePlane 1.2s infinite ease-in-out;
    animation: sk-rotatePlane 1.2s infinite ease-in-out
}

.sk-spinner-double-bounce .sk-double-bounce1, .sk-spinner-double-bounce .sk-double-bounce2 {
    width: 100%;
    height: 100%;
    border-radius: 50%;
    background-color: var(--ymr-primary);
    opacity: .6;
    position: absolute;
    top: 0;
    left: 0;
    -webkit-animation: sk-doubleBounce 2s infinite ease-in-out;
    animation: sk-doubleBounce 2s infinite ease-in-out
}

.sk-spinner-wave div {
    background-color: var(--ymr-primary);
    height: 100%;
    width: 6px;
    display: inline-block;
    -webkit-animation: sk-waveStretchDelay 1.2s infinite ease-in-out;
    animation: sk-waveStretchDelay 1.2s infinite ease-in-out
}

.sk-spinner-wandering-cubes .sk-cube1, .sk-spinner-wandering-cubes .sk-cube2 {
    background-color: var(--ymr-primary);
    width: 10px;
    height: 10px;
    position: absolute;
    top: 0;
    left: 0;
    -webkit-animation: sk-wanderingCubeMove 1.8s infinite ease-in-out;
    animation: sk-wanderingCubeMove 1.8s infinite ease-in-out
}

.sk-spinner-pulse.sk-spinner {
    width: 40px;
    height: 40px;
    margin: 0 auto;
    background-color: var(--ymr-primary);
    border-radius: 100%;
    -webkit-animation: sk-pulseScaleOut 1s infinite ease-in-out;
    animation: sk-pulseScaleOut 1s infinite ease-in-out
}

.sk-spinner-chasing-dots .sk-dot1, .sk-spinner-chasing-dots .sk-dot2 {
    width: 60%;
    height: 60%;
    display: inline-block;
    position: absolute;
    top: 0;
    background-color: var(--ymr-primary);
    border-radius: 100%;
    -webkit-animation: sk-chasingDotsBounce 2s infinite ease-in-out;
    animation: sk-chasingDotsBounce 2s infinite ease-in-out
}

.sk-spinner-three-bounce div {
    width: 18px;
    height: 18px;
    background-color: var(--ymr-primary);
    border-radius: 100%;
    display: inline-block;
    -webkit-animation: sk-threeBounceDelay 1.4s infinite ease-in-out;
    animation: sk-threeBounceDelay 1.4s infinite ease-in-out;
    -webkit-animation-fill-mode: both;
    animation-fill-mode: both
}

.sk-spinner-circle .sk-circle:before {
    content: '';
    display: block;
    margin: 0 auto;
    width: 20%;
    height: 20%;
    background-color: var(--ymr-primary);
    border-radius: 100%;
    -webkit-animation: sk-circleBounceDelay 1.2s infinite ease-in-out;
    animation: sk-circleBounceDelay 1.2s infinite ease-in-out;
    -webkit-animation-fill-mode: both;
    animation-fill-mode: both
}

.sk-spinner-cube-grid .sk-cube {
    width: 33%;
    height: 33%;
    background-color: var(--ymr-primary);
    float: left;
    -webkit-animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out;
    animation: sk-cubeGridScaleDelay 1.3s infinite ease-in-out
}

.sk-spinner-wordpress.sk-spinner {
    background-color: var(--ymr-primary);
    width: 30px;
    height: 30px;
    border-radius: 30px;
    position: relative;
    margin: 0 auto;
    -webkit-animation: sk-innerCircle 1s linear infinite;
    animation: sk-innerCircle 1s linear infinite
}

.sk-spinner-fading-circle .sk-circle:before {
    content: '';
    display: block;
    margin: 0 auto;
    width: 18%;
    height: 18%;
    background-color: var(--ymr-primary);
    border-radius: 100%;
    -webkit-animation: sk-circleFadeDelay 1.2s infinite ease-in-out;
    animation: sk-circleFadeDelay 1.2s infinite ease-in-out;
    -webkit-animation-fill-mode: both;
    animation-fill-mode: both
}

.bs-glyphicons li:hover {
    color: var(--ymr-primary-fg);
    background-color: var(--ymr-primary)
}

/* ---------- 九、左侧菜单激活项兜底绿条 → 靛蓝（20260920） ----------；独立开关：删除本段即恢复绿色指示条。 */
.nav > li.active {
    border-left-color: var(--ymr-primary);
}

/* ---------- 十、业务模板内联色统一（20260920，改的是 HTML 不是 CSS） ---------- */

/* ---------- 十一、旧语义色收敛到升级后色板（20260920，改的是 HTML 不是 CSS） ---------- */

/* ---------- 十二、语义组件全量归队（补第五/八段的遗漏，20260920） ----------；独立开关：删除本段即回到"徽章蓝/粉/青"的旧观感。 */

/* 徽章与标签 */
.label-success, .badge-success {
    background-color: #2fa55e;
    color: #fff
}

.label-info, .badge-info {
    background-color: #4aa3f0;
    color: #fff
}

.label-warning, .badge-warning {
    background-color: #e8a33d;
    color: #fff
}

.label-danger, .badge-danger {
    background-color: #e05252;
    color: #fff
}

/* 面板 */
.panel-success {
    border-color: #2fa55e
}

.panel-success > .panel-heading {
    background-color: #2fa55e;
    border-color: #2fa55e;
    color: #fff
}

.panel-info {
    border-color: #4aa3f0
}

.panel-info > .panel-heading {
    background-color: #4aa3f0;
    border-color: #4aa3f0;
    color: #fff
}

.panel-warning {
    border-color: #e8a33d
}

.panel-warning > .panel-heading {
    background-color: #e8a33d;
    border-color: #e8a33d;
    color: #fff
}

.panel-danger {
    border-color: #e05252
}

.panel-danger > .panel-heading {
    background-color: #e05252;
    border-color: #e05252;
    color: #fff
}

/* 进度条 */
.progress-bar-success {
    background-color: #2fa55e
}

.progress-bar-info {
    background-color: #4aa3f0
}

.progress-bar-warning {
    background-color: #e8a33d
}

.progress-bar-danger {
    background-color: #e05252
}

/* 语义文字色 */
.text-success {
    color: #2fa55e
}

.text-info {
    color: #4aa3f0
}

.text-warning {
    color: #e8a33d
}

.text-danger {
    color: #e05252
}

/* 分类列表内的语义文字（选择器更具体，须单独覆盖） */
.category-list li a .text-primary {
    color: var(--ymr-primary-text)
}

.category-list li a .text-info {
    color: #4aa3f0
}

.category-list li a .text-warning {
    color: #e8a33d
}

/* 提示条 */
.toast-info {
    background-color: #4aa3f0
}

.toast-warning {
    background-color: #e8a33d
}

.toast-error {
    background-color: #e05252
}

/* 表单校验态（含修正第八段把 has-success 当主色的两条） */
.has-success .form-control {
    border-color: #2fa55e
}

.has-success .control-label {
    color: #2fa55e
}

.has-warning .form-control {
    border-color: #e8a33d
}

.has-warning .control-label {
    color: #e8a33d
}

.has-error .form-control {
    border-color: #e05252
}

.has-error .control-label {
    color: #e05252
}

/* 列表左边框与滑块 */
.agile-list li.info-element {
    border-left: 3px solid #4aa3f0
}

.agile-list li.warning-element {
    border-left: 3px solid #e8a33d
}

.agile-list li.danger-element {
    border-left: 3px solid #e05252
}

.slider_red .noUi-connect {
    background: none repeat scroll 0 0 #e05252;
    box-shadow: none
}

/* 【第四轮改动，20260920】以下 十三 ~ 十六 段为"现代化观感"层；单段删除即单段回退。 */

/* ---------- 十三、中文字体栈（全局，一条规则生效） ----------；body 字体，必须显式列出，否则输入框里仍是宋体。；独立开关：删除本段即回到原字体栈。 */
body,
.wrapper-content,
.ibox-title, .ibox-content,
.form-control, input, select, textarea, button,
.btn, .dropdown-menu, .table, .label, .badge {
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
    "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue",
    Helvetica, Arial, sans-serif;
    -webkit-font-smoothing: antialiased;
    -moz-osx-font-smoothing: grayscale;
}

/* ---------- 十四、卡片现代化（.ibox，194 处在用） ----------；独立开关：删除本段即回到硬边直角卡片。 */
.ibox {
    border-radius: 10px;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .06), 0 4px 14px rgba(16, 24, 40, .06);
    background-color: #fff;
}

.ibox-title {
    border: none;
    border-radius: 10px 10px 0 0;
    padding: 15px 22px 11px;
    background-color: #fff;
}

.ibox-content {
    border-top: 1px solid #f0f1f5;
    border-radius: 0 0 10px 10px;
    padding: 18px 22px 22px;
}

/* 没有标题、只有内容的卡片：四角都要圆 */
.ibox > .ibox-content:first-child {
    border-top: none;
    border-radius: 10px;
}

/* 列表页的搜索区 / 表格区同属"卡片"，阴影统一成同一套柔和投影 */
.select-table, .search-collapse {
    box-shadow: 0 1px 2px rgba(16, 24, 40, .05), 0 4px 12px rgba(16, 24, 40, .05);
}

/* ---------- 十五、表格观感 ----------；注意：ry-ui.css 的这些声明带 !important，本段必须同步使用 */
.table-striped table > thead > tr > th,
.table-striped .table > thead > tr > th {
    padding: 12px 10px;
    background-color: #f7f8fa;
    border-bottom: 1px solid #ebeef5 !important;
    border-top: none !important;
    color: #4b5563;
    font-weight: 500;
}

.table-striped table > tbody > tr > td,
.table-striped .table > tbody > tr > td {
    padding: 11px 10px;
    border-top: 1px solid #f0f1f5 !important;
    border-bottom: none !important;
    color: #4b5563;
}

/* ---------- 十六、按钮尺寸与圆角收敛 ---------- */
.btn {
    border-radius: 6px;
}

.btn-sm {
    border-radius: 5px;
}

.btn-xs {
    border-radius: 4px;
    padding: 3px 7px;
    font-size: 12px;
}

/* 第五轮：P2 边角与插件组件现代化（20260920）；所以第一~四轮的覆盖层对它们完全无效，必须单独处理 —— 这正是；每一段都有独立开关，删段即回退该段。 */

/* ---------- 十七、分页器（bootstrap-table 生成，138 个列表页） ----------；独立开关：删除本段即回到原分页样式。 */
.pagination > li > a,
.pagination > li > span {
    padding: 5px 11px;
    border: 1px solid #e3e6ee;
    color: #4b5563;
    background-color: #fff;
    transition: color .15s, background-color .15s, border-color .15s;
}

.pagination > li > a:hover,
.pagination > li > span:hover,
.pagination > li > a:focus,
.pagination > li > span:focus {
    color: var(--ymr-primary-text);
    background-color: var(--ymr-primary-bg);
    border-color: #c9cefb;
}

.pagination > .active > a,
.pagination > .active > span,
.pagination > .active > a:hover,
.pagination > .active > span:hover,
.pagination > .active > a:focus,
.pagination > .active > span:focus {
    color: var(--ymr-primary-fg);
    background-color: var(--ymr-primary);
    border-color: var(--ymr-primary);
    cursor: default;
}

.pagination > .disabled > a,
.pagination > .disabled > span,
.pagination > .disabled > a:hover,
.pagination > .disabled > span:hover {
    color: #c0c4cc;
    background-color: #fff;
    border-color: #eef0f3;
    cursor: not-allowed;
}

.pagination > li:first-child > a,
.pagination > li:first-child > span {
    margin-left: 0;
    border-top-left-radius: 6px;
    border-bottom-left-radius: 6px;
}

.pagination > li:last-child > a,
.pagination > li:last-child > span {
    border-top-right-radius: 6px;
    border-bottom-right-radius: 6px;
}

/* ---------- 十八、select2 下拉（33 处在用） ----------；独立开关：删除本段即回到 select2 原亮蓝高亮。 */
.select2-container--default .select2-results__option--highlighted[aria-selected] {
    background-color: var(--ymr-primary);
    color: var(--ymr-primary-fg);
}

.select2-container--default .select2-results__option[aria-selected=true] {
    background-color: var(--ymr-primary-bg);
    color: var(--ymr-primary-active);
}

.select2-container--default.select2-container--focus .select2-selection--multiple,
.select2-container--default .select2-selection--single:focus {
    border-color: var(--ymr-primary);
}

.select2-dropdown {
    border-color: #e3e6ee;
    border-radius: 6px;
    box-shadow: 0 6px 20px rgba(16, 24, 40, .1);
}

/* ---------- 十九、layer 弹层与 laydate 日期控件主色归队（69 处弹层） ----------；⚠【本段的 !important 是必需的，不是偷懒】；独立开关：删除本段即回到 layui 蓝/青绿。 */
.layui-layer-btn .layui-layer-btn0 {
    border-color: var(--ymr-primary) !important;
    background-color: var(--ymr-primary) !important;
    color: var(--ymr-primary-fg) !important;
}

.layui-layer-btn a {
    border-radius: 6px !important;
    height: 30px !important;
    line-height: 28px !important;
}

.layui-layer-molv .layui-layer-title {
    background: var(--ymr-primary) !important;
    color: var(--ymr-primary-fg) !important;
}

.layui-layer-molv .layui-layer-btn a {
    background: var(--ymr-primary) !important;
    border-color: var(--ymr-primary) !important;
}

/* molv 的第二个按钮（取消）原本是灰绿 #92B8B1，改回中性白底，
   与"确定=主色实底 / 取消=中性描边"这套按钮语义一致。 */
.layui-layer-molv .layui-layer-btn .layui-layer-btn1 {
    background: #fff !important;
    border-color: #d9dde8 !important;
    color: #4b5563 !important;
}

.layui-laydate .layui-this {
    background-color: var(--ymr-primary) !important;
    color: var(--ymr-primary-fg) !important;
}

.laydate-theme-molv .layui-laydate-header {
    background-color: var(--ymr-primary) !important;
}

.laydate-theme-molv .layui-laydate-header i,
.laydate-theme-molv .layui-laydate-header span {
    color: #e6e9fe !important;
}

.laydate-theme-molv .layui-laydate-header i:hover,
.laydate-theme-molv .layui-laydate-header span:hover {
    color: #fff !important;
}

.laydate-theme-molv .layui-laydate-footer {
    border-color: #e3e6ee !important;
}

/* ---------- 二十、浮层组件：模态框 / 下拉菜单 / 气泡 ----------；独立开关：删除本段即回到原浮层样式。 */
.modal-content {
    border: none;
    border-radius: 10px;
    box-shadow: 0 12px 40px rgba(16, 24, 40, .16);
}

.modal-header {
    border-bottom: 1px solid #f0f1f5;
}

.modal-footer {
    border-top: 1px solid #f0f1f5;
}

.dropdown-menu {
    border-color: #e8eaf2;
    border-radius: 8px;
    box-shadow: 0 6px 22px rgba(16, 24, 40, .12);
    padding: 5px 0;
}

/* bootstrap-select 的下拉紧贴其按钮，顶部保持直角以免出现"断口" */
.bootstrap-select > .dropdown-menu,
.bootstrap-select .dropdown-menu {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
}

.dropdown-menu > li > a {
    border-radius: 6px;
    margin: 1px 5px;
    padding: 7px 14px;
}

/* 下拉里的"当前项"：原 style.min.css 为白底绿字 #1ab394 */
.dropdown-menu > .active > a,
.dropdown-menu > .active > a:hover,
.dropdown-menu > .active > a:focus {
    background-color: var(--ymr-primary);
    color: var(--ymr-primary-fg);
}

.tooltip-inner {
    background-color: #303133;
    border-radius: 6px;
    padding: 5px 10px;
    font-size: 12px;
}

.tooltip.top .tooltip-arrow {
    border-top-color: #303133;
}

.tooltip.right .tooltip-arrow {
    border-right-color: #303133;
}

.tooltip.bottom .tooltip-arrow {
    border-bottom-color: #303133;
}

.tooltip.left .tooltip-arrow {
    border-left-color: #303133;
}

.popover {
    border-color: #e8eaf2;
    border-radius: 8px;
    box-shadow: 0 6px 22px rgba(16, 24, 40, .12);
}

.popover-title {
    background-color: #f7f8fa;
    border-bottom-color: #eef0f4;
    border-radius: 8px 8px 0 0;
}

/* ---------- 二十一、表单控件与杂项 ----------；独立开关：删除本段即回到原状。 */
.form-control:focus {
    box-shadow: 0 0 0 3px rgba(var(--ymr-primary-rgb), .14);
}

.input-group-addon {
    border-radius: 6px;
    border-color: #e5e6e7;
    background-color: #fafbfc;
    color: #6b7280;
}

.nav-tabs > li.active > a,
.nav-tabs > li.active > a:hover,
.nav-tabs > li.active > a:focus {
    color: var(--ymr-primary-text);
    border-bottom: 2px solid var(--ymr-primary) !important;
}

/* list-group：原 style.min.css 去掉了左右下边框，只靠上边框分隔。
   这里只补圆角与边框色，不改它的边框方向逻辑。 */
.list-group-item {
    border-color: #eef0f4;
}

.list-group-item:first-child {
    border-top-left-radius: 8px;
    border-top-right-radius: 8px;
}

.list-group-item:last-child {
    border-bottom-left-radius: 8px;
    border-bottom-right-radius: 8px;
}

.panel-body {
    border-radius: 8px;
}

.panel-heading {
    border-radius: 8px 8px 0 0;
}

/* 第五轮结束。 */

/* 【第六轮改动，20260920】以下 二十二 ~ 二十七 段为"框架层焕新"。；每段独立开关，删段即回退该段。 */

/* ---------- 二十二、顶栏：品牌靛蓝实底（20260921 修订）----------；三处必须成对改，少一处就出问题：；1) 顶栏底色 —— 必须列全 5 种皮肤前缀。skins.css 给每种皮肤都铺了一整条；2) logo 块 —— 必须与顶栏同色。skins.css 给每种皮肤也各配了一个 logo 色；独立开关：删除本段即回到各皮肤自带的顶栏配色（skin-purple 为 #605ca8）。 */
.navbar-static-top,
.skin-blue .navbar, .skin-green .navbar, .skin-red .navbar,
.skin-yellow .navbar, .skin-purple .navbar {
    background-color: var(--ymr-shell);
    border-bottom: 1px solid var(--ymr-shell-deep);
    box-shadow: 0 2px 6px rgba(16, 24, 40, .10);
}

/* logo 块与顶栏同色（通配覆盖 5 种皮肤的 .skin-X .logo） */
.navbar-static-side .logo,
[class*="skin-"] .logo {
    background-color: var(--ymr-shell);
    color: var(--ymr-shell-fg);
    border-bottom: 1px solid var(--ymr-shell-deep);
}

.navbar-static-side .logo:hover,
[class*="skin-"] .logo:hover {
    background-color: var(--ymr-shell-deep);
}

/* 顶栏文字：跟着顶栏底色走 */
[class*="skin-"] .navbar-static-top .nav > li > a,
.navbar-static-top .nav > li > a {
    color: var(--ymr-shell-fg);
}

[class*="skin-"] .navbar-static-top .nav > li > a:hover,
[class*="skin-"] .navbar-static-top .nav > li > a:active,
[class*="skin-"] .navbar-static-top .nav > li > a:focus,
[class*="skin-"] .navbar-static-top .nav .open > a,
[class*="skin-"] .navbar-static-top .nav .open > a:hover,
[class*="skin-"] .navbar-static-top .nav .open > a:focus,
.navbar-static-top .nav > li > a:hover,
.navbar-static-top .nav > li > a:active,
.navbar-static-top .nav > li > a:focus {
    background-color: var(--ymr-shell-hover);
    color: var(--ymr-shell-fg);
}

.navbar-top-links li a {
    padding: 16px 12px;
    font-size: 13px;
}

.navbar-minimalize {
    color: var(--ymr-shell-fg) !important;
}

.navbar-minimalize:hover {
    color: var(--ymr-shell-fg) !important;
    background-color: var(--ymr-shell-hover);
}

/* 右上角用户下拉：面板本身仍是白底，但 skins.css 会把面板内文字设成白色 */
[class*="skin-"] .navbar-static-top .dropdown-menu li a {
    color: #4b5563;
}

[class*="skin-"] .navbar-static-top .dropdown-menu li a:hover,
[class*="skin-"] .navbar-static-top .dropdown-menu li a:focus {
    background-color: #f5f6fa;
    color: var(--ymr-primary-text);
}

.navbar-right > .user-menu > .dropdown-menu {
    border-radius: 0 0 10px 10px;
    border-color: #e8eaf2;
    box-shadow: 0 8px 24px rgba(16, 24, 40, .12);
}

.navbar-static-side .user-header,
[class*="skin-"] li.user-header {
    background-color: var(--ymr-shell);
}

/* ---------- 二十三、左侧菜单：对比度修复 + 层级重建（20260921 修订）----------；上会变成"整行铺满色 + 内容内缩"的双层错位。；故选中态与上级态的底色/字色用 !important —— 这是本文件里少数必须用它的地方。；独立开关：删除本段即回到上一轮的菜单样式。 */

/* 1) 先清掉皮肤给 li 加的实块，改由 <a> 承载选中块 */
[class*="skin-"] .navbar-static-side .nav > li.active,
[class*="skin-"] .navbar-static-side .nav > li.selected,
.theme-dark .navbar-static-side .nav > li.active,
.theme-blue .navbar-static-side .nav > li.active,
.theme-light .navbar-static-side .nav > li.active {
    background: transparent !important;
    border-left: 0 !important;
}

/* 2) 菜单条目：圆角 + 内缩留白 + 字号提到 14px */
.navbar-static-side .nav > li > a {
    border-radius: 8px;
    margin: 2px 10px;
    padding: 10px 12px;
    font-size: 14px;
    transition: background-color .15s ease, color .15s ease;
}

/* 3) 多级缩进逐级恢复（(0,3,2) 压过基础条的 (0,2,2)） */
.navbar-static-side .nav .nav-second-level li > a {
    padding-left: 46px;
    font-size: 13px;
}

.navbar-static-side .nav .nav-third-level li > a {
    padding-left: 62px;
    font-size: 13px;
}

.navbar-static-side .nav .nav-four-level li > a {
    padding-left: 78px;
    font-size: 13px;
}

/* 4) 常规字色：深色侧边栏提亮，浅色侧边栏用中性深灰 */
.theme-dark .navbar-static-side .nav > li > a,
.theme-blue .navbar-static-side .nav > li > a {
    color: #c8d0e0;
}

.theme-light .navbar-static-side .nav > li > a {
    color: #5a6478;
}

/* 5) 二/三/四级常规字色：比一级暗一档，保住"层级感" */
.theme-dark .navbar-static-side .nav .nav-second-level li > a,
.theme-dark .navbar-static-side .nav .nav-third-level li > a,
.theme-dark .navbar-static-side .nav .nav-four-level li > a,
.theme-blue .navbar-static-side .nav .nav-second-level li > a,
.theme-blue .navbar-static-side .nav .nav-third-level li > a,
.theme-blue .navbar-static-side .nav .nav-four-level li > a {
    color: #b3bdd0;
}

/* 6) 悬停反馈 */
.theme-dark .navbar-static-side .nav > li > a:hover,
.theme-dark .navbar-static-side .nav > li > a:focus,
.theme-blue .navbar-static-side .nav > li > a:hover,
.theme-blue .navbar-static-side .nav > li > a:focus {
    background-color: rgba(255, 255, 255, .09);
    color: #ffffff;
}

.theme-light .navbar-static-side .nav > li > a:hover,
.theme-light .navbar-static-side .nav > li > a:focus {
    background-color: #eef0f6;
    color: var(--ymr-shell);
}

/* 7) 当前所在页（li.selected）：不透明实底 + 纯白字 —— 全菜单唯一"最亮"的一条。
      排除 :not(.selected) 由下一段处理，避免同一个 li 两段互相覆盖。 */
[class*="skin-"] .navbar-static-side .nav > li.selected > a,
[class*="skin-"] .navbar-static-side .nav > li.selected > a:hover,
[class*="skin-"] .navbar-static-side .nav > li.selected > a:focus,
.navbar-static-side .nav > li.selected > a {
    background-color: var(--ymr-select) !important;
    color: var(--ymr-select-fg) !important;
    font-weight: 500;
}

/* 8) 上级目录（li.active，即当前页的父级）：浅一档的"分支"底。
      深色侧边栏用半透明靛蓝（叠在深底上仍是深色，白字可读）；
      浅色侧边栏改用主色浅底 + 深靛蓝字（浅底上不能压白字）。 */
[class*="skin-"] .navbar-static-side .nav > li.active:not(.selected) > a,
.navbar-static-side .nav > li.active:not(.selected) > a {
    background-color: rgba(var(--ymr-select-rgb), .32) !important;
    color: #ffffff !important;
    font-weight: 500;
}

[class*="skin-"].theme-light .navbar-static-side .nav > li.active:not(.selected) > a,
.theme-light .navbar-static-side .nav > li.active:not(.selected) > a {
    background-color: var(--ymr-primary-bg) !important;
    color: var(--ymr-primary-active) !important;
}

/* 9) 折叠态（70px）复位：去掉外边距与圆角，否则图标会被挤出 */
body.mini-navbar .navbar-static-side .nav > li > a,
body.canvas-menu.mini-navbar .navbar-static-side .nav > li > a {
    margin: 0;
    border-radius: 0;
    padding: 10px 12px;
}

/* 10) 二/三/四级容器：不要再叠一层底，与侧边栏同底，避免"块中块" */
.navbar-static-side .nav-second-level li,
.navbar-static-side .nav-third-level li,
.navbar-static-side .nav-four-level li {
    background-color: transparent;
    border-bottom: none !important;
}

/* ---------- 二十四、页签条胶囊化 ----------；独立开关：删除本段即回到 #fafafa 朴素横条。 */
[class*="skin-"] .content-tabs,
.content-tabs {
    height: 42px;
    line-height: 42px;
    background: #ffffff;
    border-bottom: 1px solid #e8eaf2;
}

.page-tabs a,
.menuTab {
    display: inline-block;
    height: 28px;
    line-height: 28px;
    padding: 0 14px;
    margin: 7px 4px 0 0;
    border-radius: 14px;
    font-size: 13px;
    color: #4b5563;
    transition: background-color .15s ease, color .15s ease;
}

.page-tabs a:hover {
    background-color: #f5f6fa;
    color: var(--ymr-primary-text);
}

.page-tabs a.active,
.menuTab.active,
.page-tabs-content .active {
    background-color: var(--ymr-primary-bg);
    color: var(--ymr-primary-active) !important;
    font-weight: 500;
}

.content-tabs .roll-nav {
    color: #909399;
    transition: color .15s ease, background-color .15s ease;
}

.content-tabs .roll-nav:hover {
    color: var(--ymr-primary-text);
    background: #f5f6fa;
}

.content-tabs button {
    height: 42px;
    background: transparent;
}

/* ---------- 二十五、内容区留白与页脚 ----------；独立开关：删除本段即回到原留白。 */
.wrapper-content {
    padding: 16px 20px 22px 20px;
}

.footer {
    background: transparent;
    border-top: 1px solid #eef0f4;
    color: #909399;
    font-size: 12px;
}

/* ---------- 二十六、登录页现代化（焕新最直观的一页） ----------；⚠ 背景图路径：本文件位于 static/yxpd/css/，图片在 static/img/，；独立开关：删除本段即回到玻璃态登录页。 */
body.signin {
    background: #171a2d url(../../img/login-background.jpg) no-repeat center fixed;
    background-size: cover;
}

/* 深色遮罩：固定层，位于卡片之下
   用单冒号 :before（IE8+ 兼容写法），与文件其余部分的老浏览器基调一致 */
body.signin:before {
    content: "";
    position: fixed;
    left: 0;
    top: 0;
    right: 0;
    bottom: 0;
    background: rgba(23, 26, 45, .72);
    z-index: 0;
}

.signinpanel {
    position: relative;
    z-index: 1;
}

.signinpanel form {
    background: #ffffff;
    border: none;
    border-radius: 14px;
    box-shadow: 0 24px 48px rgba(0, 0, 0, .22);
    padding: 32px 30px;
}

.signinpanel form h2 {
    color: #303133;
    font-size: 18px;
    font-weight: 600;
    line-height: 1.5;
}

.signinpanel form h2 strong {
    color: var(--ymr-primary-text);
}

.signinpanel .form-control {
    /* 高度/圆角/内边距三个属性必须带 !important：
       static/css/login.min.css 里 .form-control 用 !important 锁了 34px/1px/6px，
       不带 !important 会被它压掉（即原本 42px/8px 的写法从未生效，登录页一直停在 34px）。
       此处与全站 38px 口径（theme.css 第四十四段）统一。 */
    border-radius: 6px !important;
    height: 38px !important;
    padding: 8px 12px !important;
    font-size: 14px;
    margin-top: 14px;
}

/* 原生 select（公司下拉）：给定固定高度后，Chrome 会把文字顶到上方，
   必须把垂直内边距归零；同样带 !important 压过 login.min.css 的 padding。 */
.signinpanel select.form-control:not([multiple]):not([size]) {
    height: 38px !important;
    padding-top: 0 !important;
    padding-bottom: 0 !important;
}

.signinpanel .uname, .signinpanel .pword,
.signinpanel .company, .signinpanel .code {
    background-color: #ffffff;
    color: #303133;
}

.signinpanel .checkbox-custom label,
.signinpanel .checkbox-custom label:before {
    color: #606266;
}

/* 登录按钮：模板用的是 .btn-success，此处单独转为品牌主色 */
.signinpanel .btn-success,
.signinpanel .btn-block {
    background-color: var(--ymr-primary);
    border-color: var(--ymr-primary);
    border-radius: 8px;
    height: 44px;
    font-size: 15px;
    font-weight: 500;
    margin-top: 22px;
    transition: background-color .15s ease;
}

.signinpanel .btn-success:hover,
.signinpanel .btn-success:focus,
.signinpanel .btn-block:hover,
.signinpanel .btn-block:focus {
    background-color: var(--ymr-primary-hover);
    border-color: var(--ymr-primary-hover);
}

/* 左栏功能说明：白字置于深色遮罩之上 */
.signinpanel .signin-info ul li {
    color: rgba(255, 255, 255, .88);
    font-size: 13px;
    padding: 5px 0;
}

.signinpanel .signin-info strong {
    color: rgba(255, 255, 255, .8);
    font-size: 12px;
}

.signup-footer {
    border-top: 1px solid rgba(255, 255, 255, .18);
    color: rgba(255, 255, 255, .65);
    font-size: 12px;
}

/* ---------- 二十七、首页外部面板（BI iframe） ----------；独立开关：删除本段即回到 JS 硬算高度。 */
#iframeId {
    /* 先给固定高度作为老内核兜底（不支持 calc/100vh 时生效），
       再用视口高度覆盖 —— 后者优先级相同但写在后面，正常浏览器走它 */
    height: 720px;
    height: calc(100vh - 104px) !important;
    min-height: 520px;
    border-radius: 10px;
    background-color: #ffffff;
    box-shadow: 0 1px 2px rgba(16, 24, 40, .05);
}

/* 首页滚动公告容器（原为绝对像素定位，这里只收边距不动结构） */
.wrapper.wrapper-content {
    padding-top: 12px;
}

.logImg {
    border-radius: 6px;
    cursor: zoom-in;
}

/* ---------- 二十八、细节收尾（最后一公里） ----------；本段缩到 8px、圆角、浅灰，必须同步带 !important 才能覆盖；独立开关：删除本段即回到原状。 */
::-webkit-scrollbar {
    width: 8px !important;
    height: 8px !important;
}

::-webkit-scrollbar-track {
    background-color: #fafbfc !important;
}

::-webkit-scrollbar-thumb {
    border-radius: 8px;
    background-color: #cfd3da;
    border: 2px solid transparent;
    background-clip: padding-box;
}

::-webkit-scrollbar-thumb:hover {
    background-color: #b7bcc5;
    background-clip: padding-box;
}

::selection {
    background: rgba(var(--ymr-primary-rgb), .18);
}

::-webkit-input-placeholder {
    color: #a8abb2 !important;
}

:-moz-placeholder {
    color: #a8abb2 !important;
}

::-moz-placeholder {
    color: #a8abb2 !important;
}

:-ms-input-placeholder {
    color: #a8abb2 !important;
}

/* 表格空数据提示 */
.bootstrap-table .no-records-found td {
    color: #909399;
    padding: 30px 0 !important;
    text-align: center;
}

/* 跳页输入框与按钮 */
.pageGo input {
    border-radius: 6px;
    border-color: #e5e6e7;
}

.pageGo button {
    border-radius: 6px;
}

/* 树表展开箭头 */
.bootstrap-tree-table .treetable-expander {
    color: #909399;
}

.layui-layer {
    border-radius: 12px !important;
    box-shadow: 0 12px 40px rgba(16, 24, 40, .16), 0 2px 8px rgba(16, 24, 40, .06) !important;
}

/* skin:'layui-layer-rim' —— 3 个业务页在用（InviteUser / YxpdServiceInfor / */
.layui-layer-rim {
    border: none !important;
    border-radius: 12px !important;
    box-shadow: 0 12px 40px rgba(16, 24, 40, .16), 0 2px 8px rgba(16, 24, 40, .06) !important;
}

.layui-layer-title,
.layui-layer-molv .layui-layer-title {
    background-color: #f7f8fa !important;
    border-bottom: 1px solid #eef0f4 !important;
    color: #1f2430 !important;
    font-size: 15px !important;
    font-weight: 600 !important;
    border-radius: 12px 12px 0 0 !important;
}

.layui-layer-content {
    line-height: 1.7 !important;
    color: #4b5563 !important;
}

/* 按钮栏：只有带按钮的弹层才有 .layui-layer-btn（msg / loading 层没有） */
.layui-layer-btn {
    padding: 12px 20px !important;
    background-color: #fafbfc !important;
    border-top: 1px solid #f0f1f5 !important;
    border-radius: 0 0 12px 12px !important;
}

.layui-layer-btn a,
.layui-layer-lan .layui-layer-btn a,
.layui-layer-gray .layui-layer-btn a,
.layui-layer-molv .layui-layer-btn a {
    height: 32px !important;
    line-height: 30px !important;
    margin: 0 0 0 10px !important;
    padding: 0 18px !important;
    border-radius: 8px !important;
    font-size: 14px !important;
    background-color: #fff !important;
    border: 1px solid #d9dde8 !important;
    color: #4b5563 !important;
    transition: color .15s, background-color .15s, border-color .15s;
}

/* 确定按钮（layer 里序号为 0 的那个） */
.layui-layer-btn .layui-layer-btn0,
.layui-layer-lan .layui-layer-btn .layui-layer-btn0,
.layui-layer-gray .layui-layer-btn .layui-layer-btn0,
.layui-layer-molv .layui-layer-btn .layui-layer-btn0 {
    background-color: var(--ymr-primary) !important;
    border-color: var(--ymr-primary) !important;
    color: var(--ymr-primary-fg) !important;
}

/* 悬停反馈：确定按钮加深，取消按钮转浅底 */
.layui-layer-btn .layui-layer-btn0:hover {
    background-color: var(--ymr-primary-hover) !important;
    border-color: var(--ymr-primary-hover) !important;
}

.layui-layer-btn .layui-layer-btn1:hover {
    background-color: #f2f3f8 !important;
    border-color: #c3c8d6 !important;
    color: #1f2430 !important;
}

/* ① 消息提示 */
.layui-layer-msg {
    border: none !important;
    border-radius: 10px !important;
    box-shadow: 0 8px 24px rgba(16, 24, 40, .14) !important;
}

/* ② 遮罩层 */
.layui-layer-shade {
    background-color: #101828 !important;
}

/* ③ 加载层 */
.layui-layer-loading {
    background-color: #fff !important;
    border: none !important;
    border-radius: 12px !important;
    box-shadow: 0 8px 24px rgba(16, 24, 40, .14) !important;
}

.layui-layer-hui {
    background-color: rgba(16, 24, 40, .82) !important;
    border: none !important;
    border-radius: 10px !important;
}

/* ---------- 三十三、layer tips 气泡 ----------；+ 8px 圆角 + 更柔的投影。箭头必须同步换色 —— 只改气泡不改箭头，；独立开关：删除本段即回退。 */
.layui-layer-tips .layui-layer-content {
    background-color: #1f2430 !important;
    border-radius: 8px !important;
    padding: 8px 13px !important;
    line-height: 1.6 !important;
    box-shadow: 0 4px 16px rgba(16, 24, 40, .18) !important;
}

.layui-layer-tips i.layui-layer-TipsT,
.layui-layer-tips i.layui-layer-TipsB {
    border-right-color: #1f2430 !important;
}

.layui-layer-tips i.layui-layer-TipsR,
.layui-layer-tips i.layui-layer-TipsL {
    border-bottom-color: #1f2430 !important;
}

.loaderbox {
    min-width: 140px !important;
    padding: 16px 20px !important;
    color: #4b5563 !important;
    background-color: #fff !important;
    border: none !important;
    border-radius: 12px !important;
    box-shadow: 0 10px 30px rgba(16, 24, 40, .16) !important;
}

.loaderbox .loading-activity {
    border-top-color: var(--ymr-primary) !important;
    border-left-color: var(--ymr-primary) !important;
}

/* ① 输入框 / 文本框本体 */
.form-control {
    border-color: #dcdfe6;
    box-shadow: none;
    color: #303133;
    transition: border-color .15s, box-shadow .15s;
}

/* ② 禁用 / 只读 */
.form-control[disabled],
.form-control[readonly],
fieldset[disabled] .form-control {
    background-color: #f5f6f8;
    border-color: #e4e7ed;
    color: #9aa1b1;
    box-shadow: none;
}

/* ③ 原生下拉框（appearance 生效的浏览器才启用） */
@supports ((-webkit-appearance: none) or (appearance: none)) {
    select.form-control:not([multiple]):not([size]) {
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        /* 内联 SVG 箭头：不用图片资源，颜色随主题一起改 */
        background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 4.5L6 8l3.5-3.5' fill='none' stroke='%2399a1ae' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: right 10px center;
        background-size: 12px 12px;
        padding-right: 30px;
    }
}

/* ④ 多行文本框 */
textarea.form-control {
    resize: vertical;
    line-height: 1.6;
}

/* ⑤ 表单标签 */
.control-label {
    font-weight: 400;
    color: #4b5563;
}

/* 搜索区（.search-collapse）里有一条更具体的选择器把标签写成了 #333，
   这里单独压一层，保证搜索区标签与表单区一致。 */
.search-collapse .control-label,
.search-collapse .col-sm-6 .control-label {
    color: #4b5563;
}

/* 悬停 */
.datetimepicker table tr td.day:hover,
.datetimepicker table tr td.hour:hover,
.datetimepicker table tr td.minute:hover {
    background-color: #f2f3f8 !important;
    border-radius: 6px !important;
    cursor: pointer;
}

/* 非本月日期 */
.datetimepicker table tr td.old,
.datetimepicker table tr td.new {
    color: #c0c4cc !important;
}

/* 今天（放在选中态之前：今天若同时被选中，由 .active 覆盖） */
.datetimepicker table tr td.today,
.datetimepicker table tr td.today:hover,
.datetimepicker table tr td.today.disabled,
.datetimepicker table tr td.today.disabled:hover {
    background-color: var(--ymr-primary-bg) !important;
    background-image: none !important;
    filter: none !important;
    border-color: #c9cefb !important;
    color: var(--ymr-primary-active) !important;
    border-radius: 6px !important;
    text-shadow: none !important;
}

/* 选中日 */
.datetimepicker table tr td.active,
.datetimepicker table tr td.active:hover,
.datetimepicker table tr td.active.disabled,
.datetimepicker table tr td.active.disabled:hover {
    background-color: var(--ymr-primary) !important;
    background-image: none !important;
    filter: none !important;
    border-color: var(--ymr-primary) !important;
    color: var(--ymr-primary-fg) !important;
    border-radius: 6px !important;
    text-shadow: none !important;
}

/* 月 / 年选择面板 */
.datetimepicker table tr td span:hover {
    background-color: #f2f3f8 !important;
    border-radius: 6px !important;
}

.datetimepicker table tr td span.active,
.datetimepicker table tr td span.active:hover,
.datetimepicker table tr td span.active.disabled,
.datetimepicker table tr td span.active.disabled:hover {
    background-color: var(--ymr-primary) !important;
    background-image: none !important;
    filter: none !important;
    border-color: var(--ymr-primary) !important;
    color: var(--ymr-primary-fg) !important;
    text-shadow: none !important;
    border-radius: 6px !important;
}

/* 星期表头 */
.datetimepicker table tr th {
    color: #6b7280 !important;
    font-weight: 600 !important;
}

/* 小时 / 分钟粒度面板的小格子 */
.datetimepicker .datetimepicker-hours span,
.datetimepicker .datetimepicker-minutes span {
    border-radius: 6px !important;
}

/* ----------  summernote 富文本编辑器（18 个文件 113 处） ----------；⚠ 不给外框加 overflow:hidden：会把工具栏里的下拉浮层裁掉；独立开关：删除本段即回到半透明黑边框。 */
.note-editor.note-frame,
.note-editor.note-airframe {
    border: 1px solid #dcdfe6 !important;
    border-radius: 8px !important;
}

.note-editor .note-toolbar {
    background-color: #f7f8fa !important;
    border-bottom: 1px solid #eef0f4 !important;
    border-radius: 7px 7px 0 0 !important;
    padding: 4px 6px !important;
}

.note-editor .note-toolbar .note-btn {
    border-radius: 6px !important;
    border-color: transparent !important;
    background-color: transparent !important;
    color: #4b5563 !important;
    box-shadow: none !important;
}

.note-editor .note-toolbar .note-btn:hover,
.note-editor .note-toolbar .note-btn:focus {
    background-color: var(--ymr-primary-bg) !important;
    border-color: transparent !important;
    color: var(--ymr-primary-active) !important;
}

.note-editor .note-toolbar .note-btn.active,
.note-editor .note-toolbar .note-btn.active:hover {
    background-color: #e4e7fd !important;
    color: var(--ymr-primary-active) !important;
}

.note-editor .note-editing-area .note-editable {
    padding: 14px 16px !important;
    line-height: 1.75 !important;
    color: #303133 !important;
}

.note-editor.note-frame .note-statusbar {
    background-color: #f7f8fa !important;
    border-top: 1px solid #eef0f4 !important;
    border-bottom-left-radius: 8px !important;
    border-bottom-right-radius: 8px !important;
}

.note-editor.note-frame .note-statusbar .note-resizebar .note-icon-bar {
    border-top-color: #dfe3ea !important;
}

/* ----------  zTree 树选择（8 个文件 28 处） ----------；⚠ 不动 height / padding：树节点的展开箭头与复选框是皮肤雪碧图，；按 22px 行高对位的，改行高会让图标错位。；独立开关：删除本段即回到灰底黑字。 */
.ztree li a {
    border-radius: 6px;
    color: #4b5563;
}

.ztree li a:hover {
    background-color: #f2f3f8;
    color: #1f2430;
}

.ztree li a.curSelectedNode,
.ztree li a.curSelectedNode_Edit {
    background-color: var(--ymr-primary-bg) !important;
    color: var(--ymr-primary-active) !important;
    border-radius: 6px !important;
    border: 1px solid transparent !important;
}

.select2-container .select2-selection--single {
    height: 34px !important;
}

.select2-container--default .select2-selection--single {
    border-color: #dcdfe6;
    border-radius: 6px;
}

.select2-container--default .select2-selection--single .select2-selection__rendered {
    line-height: 32px;
    color: #303133;
}

.select2-container--default .select2-selection--single .select2-selection__arrow {
    height: 32px;
}

.select2-container--default .select2-selection--single .select2-selection__arrow b {
    border-color: #99a1ae transparent transparent transparent;
}

.select2-container--default .select2-selection--multiple {
    min-height: 34px;
    border-color: #dcdfe6;
    border-radius: 6px;
}

.select2-container--default.select2-container--focus .select2-selection--single,
.select2-container--default.select2-container--open .select2-selection--single {
    border-color: var(--ymr-primary);
}

/* bootstrap-select（2 个文件在用）的按钮高度 31px → 34px，与输入框持平 */
.bootstrap-select.form-control .btn-default {
    height: 34px;
    padding: 6px 12px;
    border-radius: 6px;
    border: 1px solid #dcdfe6;
}

/* 1) 内容面板（jquery.layout 的 center pane）不再整块滚动 */
body:has(.select-table) .ui-layout-center {
    overflow: hidden;
}

/* 2) 高度链：内容容器 → 行 → 表格卡片 */
body:has(.select-table) .container-div {
    display: flex;
    flex-direction: column;
    height: 100%;
    overflow: hidden;
}

body:has(.select-table) .container-div > .row {
    flex: 1 1 auto;
    min-height: 0;
    height: auto;
    display: flex;
    flex-direction: column;
}

/* 查询区、工具栏等保持自身高度，不参与压缩 */
body:has(.select-table) .container-div > .row > * {
    flex: 0 0 auto;
}

/* 表格卡片吃掉剩余高度。 */
body:has(.select-table) .container-div > .row > .select-table {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
    display: flex;
    flex-direction: column;
}

/* 3) 表格内部：工具栏 / 表头 / 分页栏固定，只有数据区滚 */
body:has(.select-table) .select-table > .bootstrap-table {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

body:has(.select-table) .bootstrap-table > .fixed-table-container {
    flex: 1 1 auto;
    min-height: 0;
    display: flex;
    flex-direction: column;
}

body:has(.select-table) .fixed-table-container > .fixed-table-header {
    flex: 0 0 auto;
}

/* 唯一的滚动容器：数据区 */
body:has(.select-table) .fixed-table-container > .fixed-table-body {
    flex: 1 1 auto;
    min-height: 0;
    overflow: auto;
}

body:has(.select-table) .fixed-table-container > .fixed-table-pagination {
    flex: 0 0 auto;
}

/* 4) 表头吸顶：数据区滚动时表头不跟着滚走
      背景沿用第十五段表头的 #f7f8fa（不透明，否则内容会透出来）；
      不需要本功能时删掉这一段即可。 */
body:has(.select-table) .fixed-table-body table > thead > tr > th {
    position: sticky;
    top: 0;
    z-index: 3;
}

/* ---- 1) 外壳高度链：#page-wrapper 纵向 flex，内容区自动吃剩余高度 ---- */
#page-wrapper {
    display: flex;
    flex-direction: column;
}

/* 顶栏所在行、页签栏、页脚保持自身高度，不参与空间分配 */
#page-wrapper > .row.border-bottom,
#page-wrapper > .content-tabs,
#page-wrapper > .footer {
    flex: 0 0 auto;
}

/* 内容区吃掉剩余高度。 */
#page-wrapper > #content-main {
    flex: 1 1 auto;
    height: auto;
    min-height: 0;
}

/* ---- 2) 数据列表页：表格卡片自身承担滚动 */
body .container-div > .row > .select-table {
    overflow: auto;
}

/* 树表容器保持自然高度，把溢出交给卡片滚动。
   （它在第四十段的 flex 容器里默认 flex-shrink:1，数据多了会被压扁） */
.container-div > .row > .select-table > .bootstrap-tree-table {
    flex: 0 0 auto;
}

/* ---- 3) 树表工具栏：原高度塌陷成 0（内部按钮是 float），会盖住表格内容 ---- */
.select-table > .bootstrap-tree-table > .treetable-bars {
    display: flow-root;
}

/* ---- 4) 树表表头吸顶（与第四十段 bootstrap-table 的表头吸顶对应）---- */
.container-div > .row > .select-table .treetable-thead > tr > th {
    position: sticky;
    top: 0;
    z-index: 3;
}

/* ① 表格单元格内多按钮（操作列）。
      :has(.btn + .btn) 精确要求"至少两个按钮"，单按钮单元格与状态标签列
      不会被匹配，因此表格行高不因本段改变。 */
.bootstrap-table .fixed-table-body td:has(.btn + .btn) .btn {
    margin-bottom: 4px;
}

/* ② 表格工具栏 / 搜索筛选区的按钮 */
.bootstrap-table .fixed-table-toolbar .btn,
.bs-bars .btn,
.search-collapse .btn,
.select-list .btn {
    margin-bottom: 4px;
}

/* ③ 左侧导航菜单：换行呼吸 + 条目间距拉开。 */
.navbar-static-side .nav li > a {
    line-height: 1.6;
}

.navbar-static-side .nav li > a {
    margin-top: 4px;
    margin-bottom: 4px;
}

/* ④ 表单里的复选框 / 单选框组：label 换行时上下留白。
      iCheck 会把 input 包成 18px 的 div，label 本身是行内块，窄列下会换行。 */
.radio-box label,
.check-box label {
    margin-bottom: 4px;
    line-height: 1.6;
}

/* ⑤ 表格之外：表单页、弹层底部的按钮成排位置。
      这些位置通常单行，加底部留白视觉更松；窄屏换行时才有真实间隙。 */
.main-content .btn,
.modal-footer .btn {
    margin-bottom: 4px;
}

body .context-menu-list {
    border: 1px solid #e8eaf2;
    border-radius: 8px;
    box-shadow: 0 6px 22px rgba(16, 24, 40, .12);
    padding: 5px 0;
    min-width: 130px;
    color: #303133;
    font-size: 13px;
}

body .context-menu-item {
    margin: 1px 5px;
    padding: 7px 14px 7px 34px;
    border-radius: 6px;
    color: #303133;
    font-size: 13px;
}

/* 菜单项 hover / 键盘选中 → 主色实底（与下拉菜单 .active 同源） */
body .context-menu-item.context-menu-hover {
    background-color: var(--ymr-primary);
    color: var(--ymr-primary-fg);
}

/* 图标：left/width 重排成"34px 图标区内居中"，
   原为 left:0 + width:26px（图标贴最左，与文字间距不匀） */
body .context-menu-icon::before,
body .context-menu-icon.context-menu-icon--fa::before {
    left: 6px;
    width: 22px;
    color: var(--ymr-primary-text);
}

body .context-menu-icon.context-menu-hover::before,
body .context-menu-icon.context-menu-icon--fa.context-menu-hover::before {
    color: var(--ymr-primary-fg);
}

/* 禁用项（本菜单暂无，但插件支持，一并归队，避免以后新增时又是个孤岛） */
body .context-menu-item.context-menu-disabled {
    background-color: transparent;
    color: #c0c4cc;
}

body .context-menu-icon.context-menu-disabled::before,
body .context-menu-icon.context-menu-icon--fa.context-menu-disabled::before {
    color: #c0c4cc;
}

/* 分隔符：改为与其上下的菜单项左对齐（项有 5px 左右外边距），线色也调淡 */
body .context-menu-separator {
    margin: 5px 5px;
    border-bottom: 1px solid #eef0f4;
}

/* ==================== 第四十四段：全站表单控件高度统一 38px【第十六轮】 ==================== */
/* ---------- ① .form-control 本体：34 → 38 ---------- */
.form-control {
    height: 38px;
    padding: 8px 12px;
}

/* 多行文本框：Bootstrap 原本就把它置为 height:auto（否则拖拽手柄失效），
   这里只需把内边距与单行框对齐，高度仍由 rows 决定。 */
textarea.form-control {
    height: auto;
    padding: 8px 12px;
}

/* ---------- ② 表单标签同步下移：7 → 9（公式见段首） ---------- */
/* 与 Bootstrap 同保留在 768px 媒体查询内，避免窄屏（标签转为块级）时多出 padding */
@media (min-width: 768px) {
    .form-horizontal .control-label {
        padding-top: 9px;
    }
}

/* 表单里的单选/复选组（对应截图"状态：正常/禁用/删除"那一行） */
.form-horizontal .radio,
.form-horizontal .checkbox,
.form-horizontal .radio-inline,
.form-horizontal .checkbox-inline {
    padding-top: 9px;
}

/* ⚠ 但若依的单选/复选组用的【不是】Bootstrap 的 .radio，而是 .radio-box / .check-box；必须【同时】把 box 的 padding-top 和圆点的 top 一起 +2（8→10）， */
.form-horizontal .radio-box,
.form-horizontal .check-box {
    padding-top: 10px;
}

.form-horizontal .radio-box .iradio-blue,
.form-horizontal .radio-box .icheckbox-blue,
.form-horizontal .check-box .iradio-blue,
.form-horizontal .check-box .icheckbox-blue {
    top: 10px;
}

/* 纯文本展示行（.form-control-static）也要跟着走，否则同一表单里它会矮 2px */
.form-control-static {
    padding-top: 9px;
    padding-bottom: 9px;
}

/* ---------- ③ 校验反馈图标：跟着控件走，否则图标贴不到垂直中心 ---------- */
.form-control-feedback {
    width: 38px;
    height: 38px;
    line-height: 38px;
}

/* ---------- ④ 原生下拉框 <select> ----------；⚠ 单独写 padding-top/bottom:0 的原因：Chrome 下给了固定高度后，；⚠ :not([multiple]):not([size]) 是 Bootstrap 本来就有的保护，多选 select；用它自己的高度规则，不能被这里压平。 */
select.form-control:not([multiple]):not([size]) {
    height: 38px;
    padding-top: 0;
    padding-bottom: 0;
}

/* ---------- ⑤ select2：28 → 38 ----------；⚠ 这里必须带 !important，原因是本轮实测发现的【第三十九段的隐性失效】： */
.select2-container .select2-selection--single {
    height: 38px !important;
}

.select2-container--default .select2-selection--single {
    border: 1px solid #dcdfe6 !important;
    border-radius: 6px !important;
}

.select2-container--default .select2-selection--single .select2-selection__rendered {
    line-height: 36px !important;
    color: #303133 !important;
    font-size: 14px !important;
}

.select2-container--default .select2-selection--single .select2-selection__arrow {
    height: 36px !important;
    top: 1px !important;
}

.select2-container--default .select2-selection--multiple {
    min-height: 38px !important;
    border: 1px solid #dcdfe6 !important;
    border-radius: 6px !important;
}

/* 聚焦态：与第三段的 .form-control:focus（边框转主色）+ 第二十一段的
   光圈（0 0 0 3px 主色 14%）逐项对齐，避免"输入框聚焦亮、下拉框聚焦不亮"。 */
.select2-container--default.select2-container--focus .select2-selection--single,
.select2-container--default.select2-container--open .select2-selection--single {
    border-color: var(--ymr-primary) !important;
    box-shadow: 0 0 0 3px rgba(var(--ymr-primary-rgb), .14) !important;
}

/* ---------- ⑥ bootstrap-select：31 → 38 ----------
   与第三十九段同样的选择器特异性 (0,3,0)，本段在其后，直接覆盖。 */
.bootstrap-select.form-control .btn-default {
    height: 38px;
    padding: 8px 12px;
}

/* ---------- ⑦ 搜索筛选区 .select-list：30 → 38 ---------- */
.select-list li input,
.select-list li select {
    height: 38px;
    border-color: #dcdfe6;
    border-radius: 6px;
    color: #303133;
    transition: border-color .15s, box-shadow .15s;
}

/* 搜索区输入框原来的左内边距是 5px（文字几乎贴着边框），
   向 .form-control 的 12px 靠拢但不取满 —— 搜索框宽 200px，
   左内边距过大会明显压缩可见文字。 */
.select-list li input {
    padding-left: 9px;
}

/* 搜索区原生下拉框：左内边距与 input 取齐（原为 0，文字直接顶格，
   与旁边 9px 的输入框并排时肉眼可见地不齐），
   右内边距留给下面那条自定义箭头。 */
.select-list li select {
    padding-left: 9px;
    padding-right: 30px;
    color: #303133;
}

/* 搜索区的 select 没有 .form-control 类，第三十五段的 appearance:none；独立开关：删除本块即回到系统原生箭头。 */
@supports ((-webkit-appearance: none) or (appearance: none)) {
    .select-list li select:not([multiple]) {
        -webkit-appearance: none;
        -moz-appearance: none;
        appearance: none;
        background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 4.5L6 8l3.5-3.5' fill='none' stroke='%2399a1ae' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E");
        background-repeat: no-repeat;
        background-position: right 10px center;
        background-size: 12px 12px;
    }
}

/* 搜索区的 bootstrap-select 按钮（ry-ui.css 里是 30px） */
.select-list .btn-default {
    height: 38px;
    border-color: #dcdfe6;
    border-radius: 6px;
}

/* 标签同步下移 5 → 9（公式见段首），保证与加高后的输入框仍然居中 */
.select-list li p,
.select-list li label:not(.radio-box) {
    margin-top: 9px;
}

/* 搜索区行距：控件从 30 长到 38，上下间距等量放开（5 → 7），
   否则三行搜索条件会显得"控件大了、行还挤着"，反而更挤。 */
.select-list li {
    margin-top: 7px;
    margin-bottom: 7px;
}

/* ---------- ⑧ 搜索区按钮：与同一行的输入框齐平 ---------- */
.select-list .btn.btn-sm {
    height: 38px;
    line-height: 36px;
    padding-top: 0;
    padding-bottom: 0;
}

.select-list .btn.btn-rounded {
    border-radius: 6px;
}

/* ==================== 第四十五段：组织机构树（zTree 3.5 / metro 皮肤）样式统一【第十九轮】 ==================== */
/* ---------- ① 面板留白 + 外框卡片化 ---------- */
.ui-layout-west {
    /* 让白卡片浮在 gray-bg 上 */
    padding: 8px !important;
}

.ui-layout-west .box-main {
    border: 1px solid #e8eaf2 !important;
    border-radius: 8px !important;
    box-shadow: 0 1px 3px rgba(16, 24, 40, .05) !important;
    overflow: hidden !important;
}

/* ---------- ② header：浅底 + 弹性居中 ---------- */
.ui-layout-west .box-main > .box-header {
    display: flex !important;
    align-items: center !important;
    height: 44px !important;
    padding: 0 8px 0 12px !important;
    background: #f7f8fc !important;
    border-bottom: 1px solid #e8eaf2 !important;
    /* 原 ry-ui.css 是 padding:12px 10px 2px 15px，高度靠内容撑；这里改定高，
       所以原本靠 top:-5px 对齐的 box-tools 必须一起归零 */
}

.ui-layout-west .box-main > .box-header .box-title {
    float: none !important;
    margin: 0 !important;
    /* ★flex 容器里 box-title 会被 box-tools 挤压缩窄，导致"组织机构"折成两行
       （实测标题高度 39.2px = 两行 19.6px）。nowrap + 不收缩才稳。 */
    flex: 0 0 auto !important;
    white-space: nowrap !important;
    font-size: 14px !important;
    font-weight: 600 !important;
    line-height: 1.4 !important;
    color: #1f2430 !important;
}

.ui-layout-west .box-main > .box-header .box-title .fa {
    margin-top: 0 !important;
    padding-right: 5px !important;
    font-size: 13px !important;
    color: var(--ymr-primary-text) !important;
}

.ui-layout-west .box-main > .box-header .box-tools {
    position: static !important;
    top: 0 !important;
    flex: 0 0 auto !important; /* 按钮组不被压缩 */
    white-space: nowrap !important;
    margin-left: auto !important; /* flex 容器里 float 失效，改用 auto 外边距右推 */
}

/* ---------- ③ 工具按钮：26×26 圆角方形 ---------- */
.ui-layout-west .box-main > .box-header .box-tools .btn-box-tool {
    width: 26px !important;
    height: 26px !important;
    padding: 0 !important;
    margin: 0 1px !important;
    border: 0 !important;
    border-radius: 6px !important;
    background: transparent !important;
    color: #8a92a6 !important;
    font-size: 13px !important;
    line-height: 26px !important;
    text-align: center !important;
}

.ui-layout-west .box-main > .box-header .box-tools .btn-box-tool:hover,
.ui-layout-west .box-main > .box-header .box-tools .btn-box-tool:focus {
    background: var(--ymr-primary-bg) !important;
    color: var(--ymr-primary-text) !important;
}

/* ---------- ④ 树容器与节点行 ---------- */
/* 树区左右内边距 10 → 6px：面板总宽 185px 很紧，省下的 8px 全给文字（深层节点容易顶到边） */
.ui-layout-west .ui-layout-content {
    padding: 8px 6px 12px !important;
}

.ztree {
    padding: 2px !important;
}

.ztree li {
    line-height: 30px !important; /* 21 → 30，给足呼吸感 */
}

.ztree li a {
    height: 30px !important;
    line-height: 30px !important; /* 行高必须与 li 一致，否则选中态底色会比行矮 */
    padding: 0 8px 0 2px !important;
    border-radius: 6px !important;
    font-size: 13px !important; /* 12 → 13 */
    color: #4b5563 !important;
}

/* 文字容器也要跟着抬行高（皮肤里写的是 21px） */
.ztree li span {
    line-height: 30px !important;
}

/* 缩进 18 → 20px */
.ztree li ul {
    padding-left: 20px !important;
}

/* 去掉老式虚线连接线（line_conn.png，11×2 的斜纹）——
   层级改由缩进 + 文件夹图标区分，与现代树组件（AntD / Element）一致。
   ★独立开关：删掉这条即恢复虚线。 */
.ztree li ul.line {
    background-image: none !important;
}

/* ---------- ⑤ 文件夹图标：sprite → FontAwesome ---------- */
.ztree li span.button.ico_open,
.ztree li span.button.ico_close,
.ztree li span.button.ico_docu {
    background-image: none !important;
    font-family: FontAwesome !important;
    font-size: 13px !important;
    height: 30px !important;
    /* ★皮肤里 span.button 是 line-height:0，直接继承什么都看不见，必须显式给行高 */
    line-height: 30px !important;
    text-align: center !important;
    vertical-align: middle !important;
    color: #b0b8cc !important;
}

.ztree li span.button.ico_open::before {
    content: "\f07c";
}

/* fa-folder-open */
.ztree li span.button.ico_close::before {
    content: "\f07b";
}

/* fa-folder */
.ztree li span.button.ico_docu::before {
    content: "\f15b";
}

/* fa-file-text-o */

/* ---------- ⑥ 展开箭头：sprite 方块 → FontAwesome 三角 ---------- */
.ztree li span.button.switch {
    background-image: none !important;
    font-family: FontAwesome !important;
    font-size: 12px !important;
    /* ⚠ width 保持 21px 不变 —— 它参与缩进几何，改了会整片错位 */
    height: 30px !important;
    line-height: 30px !important;
    text-align: center !important;
    vertical-align: middle !important;
    color: #9aa3b8 !important;
}

/* 展开态（有子节点且已展开）*/
.ztree li span.button.root_open::before,
.ztree li span.button.roots_open::before,
.ztree li span.button.center_open::before,
.ztree li span.button.bottom_open::before,
.ztree li span.button.noline_open::before {
    content: "\f0d7";
}

/* fa-caret-down */

/* 折叠态 */
.ztree li span.button.root_close::before,
.ztree li span.button.roots_close::before,
.ztree li span.button.center_close::before,
.ztree li span.button.bottom_close::before,
.ztree li span.button.noline_close::before {
    content: "\f0da";
}

/* fa-caret-right */

/* 叶子节点的占位符：只清背景（虚线拐角），★宽度 21px 必须保留，否则同级文字左边界不齐 */
.ztree li span.button.root_docu,
.ztree li span.button.roots_docu,
.ztree li span.button.center_docu,
.ztree li span.button.bottom_docu,
.ztree li span.button.noline_docu {
    background-image: none !important;
}

/* ---------- ⑦ 树区滚动条（部门多时出现）---------- */
.ui-layout-content::-webkit-scrollbar {
    width: 6px;
    height: 6px;
}

.ui-layout-content::-webkit-scrollbar-thumb {
    background: #d6dae6;
    border-radius: 3px;
}

.ui-layout-content::-webkit-scrollbar-thumb:hover {
    background: #c2c8d8;
}

.ui-layout-content::-webkit-scrollbar-track {
    background: transparent;
}

/* ==================== 第四十六段：zTree 勾选框 sprite → FontAwesome【第十九轮】 ==================== */
/* 基础盒：宽度保持 13px（参与缩进几何），高度对齐 30px 行高 */
.ztree li span.button.chk {
    background-image: none !important;
    font-family: FontAwesome !important;
    font-size: 13px !important;
    width: 13px !important;
    height: 30px !important;
    line-height: 30px !important;
    text-align: center !important;
    vertical-align: middle !important;
    color: #c3c9d8 !important;
}

/* 未选：空心方框（false_part 是"父节点自身未选、子节点也未全选"） */
.ztree li span.button.chk[class*="checkbox_false_full"]::before,
.ztree li span.button.chk[class*="checkbox_false_part"]::before {
    content: "\f096";
}

/* 已选：打勾方框 */
.ztree li span.button.chk[class*="checkbox_true_full"]::before {
    content: "\f046";
    color: var(--ymr-primary-text);
}

/* 半选：减号方框 */
.ztree li span.button.chk[class*="checkbox_true_part"]::before {
    content: "\f147";
    color: var(--ymr-primary-text);
}

/* 悬停态（_focus）：未选加深一档边框色，已选保持主色 */
.ztree li span.button.chk[class*="_full_focus"]::before,
.ztree li span.button.chk[class*="_part_focus"]::before {
    color: #8a94ad;
}

.ztree li span.button.chk[class*="checkbox_true"][class*="_focus"]::before {
    color: var(--ymr-primary-text);
}

/* 禁用态：同形但更淡 */
.ztree li span.button.chk[class*="checkbox_false_disable"]::before {
    content: "\f096";
    color: #e2e6ef;
}

.ztree li span.button.chk[class*="checkbox_true_disable"]::before {
    content: "\f046";
    color: #c9cfdf;
}

/* ==================== 第四十七段：下拉展开框统一（select2 面板精修）【第二十轮】 ==================== */
/* ---------- ① 面板：与选择框分离，完整圆角 ---------- */
.select2-dropdown {
    border: 1px solid #e3e6ee !important;
    border-radius: 8px !important;
    box-shadow: 0 8px 24px rgba(16, 24, 40, .12) !important;
    padding: 6px !important;
    background: #fff !important;
    overflow: hidden !important; /* 选项圆角不溢出面板 */
}

/* --above 是向上弹出：select2 用 top/bottom 定位，加 margin 即可留出间隙 */
.select2-dropdown--below {
    margin-top: 4px !important;
    border-top: 1px solid #e3e6ee !important; /* 撤销"无缝贴合"的上边线归零 */
    border-top-left-radius: 8px !important;
    border-top-right-radius: 8px !important;
}

.select2-dropdown--above {
    margin-bottom: 4px !important;
    border-bottom: 1px solid #e3e6ee !important;
    border-bottom-left-radius: 8px !important;
    border-bottom-right-radius: 8px !important;
}

/* ---------- ② 选项：34px 高 + 圆角 + 呼吸感 ---------- */
/* ⚠【第五十一轮 20260924】滚动能力修复：
   select2 的 overflow-y:auto 只挂在主题类上（select2.min.css 挂 --default/--classic，
   select2-bootstrap.min.css 挂 --bootstrap），common.js 全局 theme=bootstrap 时
   依赖库规则本可命中，但一旦页面换自定义主题或引入顺序变化就会全站失效——
   选项超出 288px 时被 .select2-dropdown 的 overflow:hidden 硬裁掉，无滚动条、
   滚轮无效（实测截图即此症状）。这里把"限高+可滚"显式声明，不再依赖库规则。
   ★只作用于最外层结果列表：分组(optgroup)产生的嵌套 ul 不能限高，
     否则每个分组各自出滚动条（select2 原生行为也是仅外层滚动）。 */
.select2-results__options {
    padding: 0 !important;
}

.select2-results > .select2-results__options {
    max-height: 288px !important; /* 原 200px，选项多时太早出滚动条 */
    overflow-y: auto !important;
    overscroll-behavior: contain !important; /* 滚到头不再带动背后页面滚动 */
}

.select2-results__option {
    padding: 7px 10px !important;
    line-height: 20px !important; /* 20 + 7*2 = 34px */
    font-size: 13px !important;
    color: #4b5563 !important;
    border-radius: 6px !important;
    margin-bottom: 2px !important;
    transition: background-color .12s, color .12s !important;
}

.select2-results__option:last-child {
    margin-bottom: 0 !important;
}

/* ---------- ③ 悬停/键盘高亮：浅主色底 + 主色字 ---------- */
.select2-container--default .select2-results__option--highlighted[aria-selected],
.select2-results__option--highlighted {
    background-color: var(--ymr-primary-bg) !important;
    color: var(--ymr-primary-text) !important;
}

/* ---------- ④ 选中项：主色字 + 加粗 + 右侧对勾 ---------- */
.select2-results__option[aria-selected=true] {
    background-color: transparent !important;
    color: var(--ymr-primary-text) !important;
    font-weight: 600 !important;
}

.select2-results__option[aria-selected=true]::after {
    content: "\f00c"; /* fa-check */
    font-family: FontAwesome !important;
    font-size: 12px !important;
    float: right !important;
    color: var(--ymr-primary-text) !important;
    line-height: 20px !important;
}

/* 选中 + 同时被高亮（悬停）时，底色仍按悬停那套 */
.select2-results__option--highlighted[aria-selected=true] {
    background-color: var(--ymr-primary-bg) !important;
}

/* ---------- ⑤ 收起态箭头：统一成原生 select 同一枚扁平 SVG ---------- */
/* 原状是 select2 自带的黑色实心三角（<b> 用 border 画的），；⚠ 选择器【不写 --default / --bootstrap 主题类】：gen/edit.html 里有一句 */
.select2-container .select2-selection--single .select2-selection__arrow {
    width: 30px !important;
    right: 0 !important;
    height: 36px !important;
    top: 1px !important;
    background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 12 12'%3E%3Cpath d='M2.5 4.5L6 8l3.5-3.5' fill='none' stroke='%2399a1ae' stroke-width='1.6' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E") !important;
    background-repeat: no-repeat !important;
    background-position: right 10px center !important;
    background-size: 12px 12px !important;
}

.select2-container .select2-selection--single .select2-selection__arrow b {
    display: none !important; /* 藏掉原来的实心三角 */
}

/* 文字左右内边距：表单区 12px（对齐 .form-control），搜索区 9px（对齐 .select-list li input） */
.select2-container .select2-selection--single .select2-selection__rendered {
    padding-left: 12px !important;
    padding-right: 30px !important; /* 给箭头让位 */
}

.select-list .select2-container .select2-selection--single .select2-selection__rendered {
    padding-left: 9px !important;
}

/* ---------- ⑤b 主题无关的兜底：高 / 边框 / 圆角 ---------- */
.select-list .select2-container .select2-selection--single {
    height: 38px !important;
}

.select2-container .select2-selection--single {
    height: 38px !important;
    border: 1px solid #dcdfe6 !important;
    border-radius: 6px !important;
}

/* 搜索区容器的宽度沿用 ry-ui.css 的 200px 规格（select2 用 width:'resolve' 取值） */
.select-list .select2-container {
    vertical-align: middle !important;
}

/* ---------- ⑥ 顶部搜索框 / 分组标题 / 无结果 / 滚动条 ---------- */
/* 选项超过 minimumResultsForSearch(10) 时 select2 会在面板顶部插一个输入框 */
.select2-search--dropdown {
    padding: 0 0 6px !important;
}

.select2-search--dropdown .select2-search__field {
    height: 34px !important;
    padding: 0 10px !important;
    border: 1px solid #dcdfe6 !important;
    border-radius: 6px !important;
    font-size: 13px !important;
    color: #303133 !important;
    outline: none !important;
}

.select2-search--dropdown .select2-search__field:focus {
    border-color: var(--ymr-primary) !important;
    box-shadow: 0 0 0 3px rgba(var(--ymr-primary-rgb), .14) !important;
}

/* 分组标题（<optgroup>） */
.select2-results__group {
    padding: 8px 10px 4px !important;
    font-size: 11px !important;
    font-weight: 600 !important;
    color: #9aa3b8 !important;
    cursor: default !important;
}

/* 无匹配结果 */
.select2-results__message {
    padding: 12px 10px !important;
    font-size: 13px !important;
    color: #9aa3b8 !important;
    text-align: center !important;
}

/* 禁用项 */
.select2-results__option[aria-disabled=true] {
    color: #c0c4cc !important;
    cursor: not-allowed !important;
}

/* 选项多时的滚动条（与第四十五段树区、第十二轮表格滚动条同一规格）
   【第五十一轮】6px 的 #d6dae6 在白底上几乎隐形，用户以为不能滚动 →
   加宽到 8px、拇指加深一档并留 2px 透明边做成胶囊形，肉眼可见 */
.select2-results__options::-webkit-scrollbar {
    width: 8px;
}

.select2-results__options::-webkit-scrollbar-thumb {
    background: #c3cad9;
    background-clip: padding-box;
    border: 2px solid transparent;
    border-radius: 4px;
}

.select2-results__options::-webkit-scrollbar-thumb:hover {
    background: #a8b1c7;
    background-clip: padding-box;
    border: 2px solid transparent;
}

.select2-results__options::-webkit-scrollbar-track {
    background: transparent;
}

/* ==================== 第四十八段：右上角用户下拉菜单【第二十一轮】 ==================== */
/* ---- ① 面板：与顶栏脱开，圆角卡片化 ---- */
.navbar-top-links .user-menu > .dropdown-menu {
    top: 100% !important; /* 锚点不变，用 margin 拉出间隙 */
    margin-top: 6px !important; /* 原状 0（贴死） */
    width: 184px !important; /* 原状 138/160px，放宽给 16px 定宽图标留位 */
    padding: 6px 4px !important; /* 原状 1px 0 0 0 */
    border: 1px solid #e8eaf2 !important; /* 原状 border-top-width:0 */
    border-radius: 10px !important; /* 原状 0 0 10px 10px */
    box-shadow: 0 12px 32px rgba(16, 24, 40, .14) !important;
    animation: ymr-drop-in .16s ease both;
}

@keyframes ymr-drop-in {
    from {
        opacity: 0;
        transform: translateY(-5px);
    }
    to {
        opacity: 1;
        transform: translateY(0);
    }
}

/* ---- ② 菜单项：34px 高、圆角、文字取齐 ---- */
/* 图标统一 16px 定宽居中：FontAwesome 图标本身宽 10~16px 不等，
   原状 margin-right:10px 定距不定宽 → 文字参差。定宽后五项文字左边线对齐。 */
.navbar-top-links .user-menu .dropdown-menu > li > a {
    display: block;
    margin: 1px 4px !important;
    padding: 8px 10px !important; /* 13px 字号 * 1.4 行高 + 16px ≈ 34px 行框 */
    border-radius: 6px !important;
    font-size: 13px !important;
    line-height: 1.4 !important;
    color: #4b5563 !important;
    white-space: nowrap;
}

.navbar-top-links .user-menu .dropdown-menu > li > a > .fa {
    width: 16px !important;
    margin-right: 8px !important;
    text-align: center !important;
    color: #8a93a6; /* 图标降一档灰，悬停随文字变主色 */
    transition: color .12s ease;
}

/* 悬停/焦点：浅主色底 + 主色字（覆盖 ry-ui.css 的老灰 #e1e3e9 与 skins 白字） */
.navbar-top-links .user-menu .dropdown-menu > li > a:hover,
.navbar-top-links .user-menu .dropdown-menu > li > a:focus {
    background-color: var(--ymr-primary-bg) !important;
    color: var(--ymr-primary-text) !important;
}

.navbar-top-links .user-menu .dropdown-menu > li > a:hover > .fa,
.navbar-top-links .user-menu .dropdown-menu > li > a:focus > .fa {
    color: var(--ymr-primary-text);
}

/* ---- ③ 退出登录：悬停红色警示（与"确定要退出吗"的语义一致）---- */
.navbar-top-links .user-menu .dropdown-menu > li:last-child > a:hover,
.navbar-top-links .user-menu .dropdown-menu > li:last-child > a:focus {
    background-color: #fdeeee !important;
    color: #d64545 !important;
}

.navbar-top-links .user-menu .dropdown-menu > li:last-child > a:hover > .fa,
.navbar-top-links .user-menu .dropdown-menu > li:last-child > a:focus > .fa {
    color: #d64545;
}

/* ---- ④ divider 与首行残留间距 ---- */
/* 原状 margin 9px 0 + 老灰 #eee；收窄融入 6px 内衬 */
.navbar-top-links .user-menu .dropdown-menu > .divider {
    margin: 5px 10px !important;
    background-color: #eef0f5 !important;
}

/* topnav 版首个 <li class="mt5"> 的补丁间距在 6px 内衬下是多余的 */
.navbar-top-links .user-menu .dropdown-menu > li.mt5 {
    margin-top: 0 !important;
}

/* ---- ⑤ 顶栏上的触发钮（头像+用户名）：补一个悬停反馈 ---- */
/* 原状悬停只变文字色（skins 规则），无底色反馈 */
.navbar-top-links .user-menu > a.dropdown-toggle:hover,
.navbar-top-links .user-menu.open > a.dropdown-toggle {
    background-color: rgba(255, 255, 255, .12) !important;
}

/* ==========================================================================
    第四十九段 · select2 收起态文字垂直居中（20260921，缩放下偏上 4px 根治）
   ==========================================================================  */
.select2-container .select2-selection--single {
    display: flex !important;
    align-items: center !important;
}

.select2-container .select2-selection--single .select2-selection__rendered {
    flex: 1 1 auto !important;
    min-width: 0 !important;
    line-height: normal !important;
    padding-top: .5px !important; /* 中文字形光学补偿：YaHei 基线偏上，0.5px 恰好居中（实测 1px 会过头） */
}
/* ==================== 第五十段：表头排序图标紧跟文字【第二十五轮】 ====================
   原状：bootstrap-table 1.19 的排序图标是 th-inner 的【背景图】，贴死列右缘
   （background-position:100% 50% + padding-right:30px）—— 列越宽图标离文字越远，
   且各列间距不一。背景图无法参与文字流，故改为 ::after 内联图标：
   去背景 + 收 padding(30→12) + FA 字符图标（f0dc 双向 / f0de 升序 / f0dd 降序），
   激活态转主色。回退：删除本段即恢复"背景图标贴右缘"。 */

.bootstrap-table .fixed-table-container .table thead th .th-inner.sortable {
    padding-right: 12px !important;      /* 原生 30px 是给贴右背景图留位的，图标内联后只需防贴边 */
    background-image: none !important;   /* 原生 data-uri PNG，19×19 */
}

.bootstrap-table .fixed-table-container .table thead th .th-inner.sortable::after {
    font-family: FontAwesome !important;
    font-size: 11px !important;
    font-weight: normal !important;
    margin-left: 3px !important;
    color: #99a1ae !important;           /* 与第四十四段原生 select 的箭头同色 */
    vertical-align: 1px !important;
}

/* 三种排序态的字符：双向 / 升序 / 降序 */
.bootstrap-table .fixed-table-container .table thead th .th-inner.sortable.both::after {
    content: "\f0dc" !important;
}
.bootstrap-table .fixed-table-container .table thead th .th-inner.sortable.asc::after {
    content: "\f0de" !important;
    color: var(--ymr-primary) !important;
}
.bootstrap-table .fixed-table-container .table thead th .th-inner.sortable.desc::after {
    content: "\f0dd" !important;
    color: var(--ymr-primary) !important;
}

/* 悬停反馈：可排序列的图标与文字轻微加深 */
.bootstrap-table .fixed-table-container .table thead th .th-inner.sortable:hover::after {
    color: var(--ymr-primary) !important;
}

/* ==================== 第五十段结束 ==================== */

/* ==========================================================================
 *  第五十二段：移动端 / iOS 适配降级【2026-10-08】
 * --------------------------------------------------------------------------
 *  用户反馈：样式升级后手机（尤其 iOS）适配退化，四类现象：
 *    ① 横向溢出、能左右拖动        ② 下拉/菜单错位或点不开
 *    ③ 点击后高亮粘住不回弹         ④ 点输入框页面被放大跳动
 *  根因：本覆盖层全桌面尺寸硬套、且全文件无 max-width 降级；iOS 还有两条
 *  特有行为——input font-size<16px 时聚焦整页缩放、:hover 触摸后不自动清除。
 *  本段只在窄屏（≤768px）生效，desktop 完全不受影响；覆盖本文件已加的
 *  !important 强规则时同样用 !important，靠"顺序在后"天然胜出。
 *  独立开关：删除本段（及第五十三段）即全部回到升级前的窄屏表现。
 * ========================================================================== */
@media (max-width: 768px) {

    /* ---- ④ 防 iOS 输入框聚焦整页缩放：所有可输入/可聚焦控件字号 ≥ 16px ----
       iOS Safari 在 input/select/textarea 的 computed font-size < 16px 时，
       聚焦即把整页放大跳动。原 select2 渲染层是 14px（第四十四段 !important），
       必须同步到 16px 才不触发。 */
    .form-control,
    input,
    select,
    textarea,
    .select-list li input,
    .select-list li select,
    .bootstrap-select .btn,
    .btn,
    .input-group .form-control,
    .input-group-addon {
        font-size: 16px !important;
    }
    /* select2 渲染层：原 14px（第四十四段 !important）。两种主题类都要覆盖到，
       因为 select2-bootstrap.min.css 存在时容器可能是 --bootstrap。 */
    .select2-container--default .select2-selection--single .select2-selection__rendered,
    .select2-container--bootstrap .select2-selection--single .select2-selection__rendered {
        font-size: 16px !important;   /* 覆盖 14px 的 !important，防 iOS 缩放 */
        line-height: 38px !important;
    }
    /* 下拉面板内的搜索框也是 input，聚焦同样会触发 iOS 整页缩放 */
    .select2-container .select2-search__field {
        font-size: 16px !important;
    }
    /* 触摸目标略放高（38 → 40），更易点中，不影响桌面 */
    .select2-container .select2-selection--single {
        height: 40px !important;
    }
    .select2-container--default .select2-selection--single .select2-selection__arrow,
    .select2-container--bootstrap .select2-selection--single .select2-selection__arrow {
        height: 38px !important;
    }

    /* ---- ① 防横向溢出：根容器横向不溢出，表格靠自身滚动容器 ----
       .select-table / .fixed-table-body 已有 overflow:auto（见 body:has 段），
       这里堵住"内容区被撑出横向滚动条"的其余来源。 */
    html, body {
        overflow-x: hidden;
    }
    #page-wrapper,
    .container-div,
    .wrapper-content,
    .content-wrapper {
        max-width: 100%;
        overflow-x: hidden;
    }

    /* ---- ① 搜索区：行内浮动改纵向堆叠，控件占满宽度 ----
       原 .select-list ul li 是 float 定宽，窄屏下固定宽 input 会顶出屏幕。 */
    .search-collapse .select-list ul {
        display: block;
    }
    .search-collapse .select-list ul li {
        float: none !important;
        width: 100% !important;
        margin: 0 0 10px 0 !important;
    }
    .search-collapse .select-list ul li label {
        display: block;
        margin-bottom: 4px;
    }
    .search-collapse .select-list li input,
    .search-collapse .select-list li select {
        width: 100% !important;
    }
    /* select2 在窄屏强制 100%：兜底 select-enhance 的 width:'resolve' 在 0 宽
       父级下塌成 0，导致"下拉框看不见、点不开"。 */
    .select-list .select2-container,
    .search-collapse .select2-container {
        width: 100% !important;
        max-width: 100%;
    }

    /* ---- ② 顶栏：窄屏隐藏次要入口，只留用户菜单，避免顶栏被撑出横向滚动 ----
       被隐藏的是 锁屏/全屏/公司切换 等桌面便利项；登出在用户菜单里保留。
       需要保留某项就把它加进 :not() 白名单。 */
    .navbar-top-links > li:not(.user-menu):not(.hidden-xs) {
        display: none !important;
    }

    /* ---- ② 右上角用户下拉：去死区、贴右不溢出（修复"错位 / 点不开"）--- */
    .navbar-top-links .user-menu > .dropdown-menu {
        width: auto !important;            /* 覆盖 184px 固定宽 */
        min-width: 160px;
        max-width: calc(100vw - 16px) !important;
        margin-top: 0 !important;          /* 覆盖 6px 间隙，消除触发钮与面板间的"死区" */
        right: 0 !important;
        left: auto !important;
    }

    /* ---- 表格卡片内边距收窄，给数据区多留横向空间 ---- */
    .ibox-content {
        padding: 10px 8px;
    }
    .wrapper-content {
        padding: 12px 10px;
    }
}

/* ==========================================================================
 *  第五十三段：iOS 触摸态——禁用"点击高亮粘住不回弹"【2026-10-08】
 * --------------------------------------------------------------------------
 *  iOS Safari 触摸后 :hover 不会随手指离开自动清除，于是按钮 / 表格行 /
 *  菜单项的高亮态会"粘"在屏幕上。本段只针对"无 hover 能力"的触摸设备，
 *  desktop（有鼠标）的 hover 视觉完全保留。
 *  独立开关：删除本段（及第五十二段）即回到升级前的触摸表现。
 * ========================================================================== */

/* 1) 去掉点击时的灰色高亮块（iOS 默认 -webkit-tap-highlight-color 会留下
      一块灰且不易消退）——只作用于触摸设备。 */
@media (hover: none) {
    a,
    button,
    .btn,
    .dropdown-menu > li > a,
    input,
    label,
    .table,
    .navbar-top-links li a {
        -webkit-tap-highlight-color: transparent;
    }
}

/* 2) 触摸设备上关闭"会改变背景/颜色"的 hover 视觉，改由 :active 瞬时反馈。
      .open 是类切换（非 hover），触摸下正常保留。 */
@media (hover: none) {
    .table-hover > tbody > tr:hover > td,
    .table-hover > tbody > tr:hover {
        background-color: transparent !important;
    }

    a:hover,
    .navbar-top-links li a:hover {
        color: inherit;
    }

    .navbar-top-links .user-menu > a.dropdown-toggle:hover {
        background-color: transparent !important;
    }

    .navbar-top-links .user-menu .dropdown-menu > li > a:hover,
    .navbar-top-links .user-menu .dropdown-menu > li > a:focus,
    .navbar-top-links .user-menu .dropdown-menu > li:last-child > a:hover {
        background-color: transparent !important;
        color: inherit !important;
    }
    .navbar-top-links .user-menu .dropdown-menu > li > a:hover > .fa,
    .navbar-top-links .user-menu .dropdown-menu > li:last-child > a:hover > .fa {
        color: inherit;
    }

    .page-tabs a:hover,
    .content-tabs .roll-nav:hover {
        background: transparent;
        color: inherit;
    }
}

/* 3) 触摸设备上的瞬时按压反馈（替代 hover） */
@media (hover: none) {
    .btn:active,
    .table-hover > tbody > tr:active > td,
    .navbar-top-links .user-menu .dropdown-menu > li > a:active {
        filter: brightness(.96);
    }
}
