/*!
 * Copyright &copy; 2012-2013 <a href="https://github.com/thinkgem/jeesite">JeeSite</a> All rights reserved.
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 */
html,body {scrollbar-face-color:#ffffff;scrollbar-highlight-color:#ffffff;scrollbar-darkshadow-color:#ffffff;padding:0 0 0 0;}
img {max-width:auto;} h1 {font-size:30px;} h1, h2, h3, h4, h5, h6 {margin:0;} h4 {padding: 10px;}a {outline: none;} a:active {star:expression(this.onFocus=this.blur());}
body,label,input,button,select,textarea,.uneditable-input,.navbar-search .search-query {font-family:Helvetica, Georgia, Arial, sans-serif, emoji;font-size:13px;_font-size:12px;}
.input-append .add-on,.input-prepend .add-on,.input-append .btn,.input-prepend .btn,.input-append .btn-group > .dropdown-toggle,.input-prepend .btn-group > .dropdown-toggle {vertical-align: middle;}
label {display:inline-block;margin-bottom:0;} input[type="radio"],input[type="checkbox"] {margin:-2px 3px;*margin-top:1px;}
input[disabled],select[disabled],textarea[disabled],input[readonly],select[readonly],textarea[readonly] {cursor:auto;background-color:#ffffff;color:#475569;border-color:#d7dee7;box-shadow:none;}
.input-prepend input,.input-append input,.input-prepend select,.input-append select,.input-prepend .uneditable-input,.input-append .uneditable-input {position:static;}
legend {margin:10px 0;*left:-7px;*position:relative;color:#0088CC;*width:99.5%}

.collapse {*display:none;_position:static;} .collapse.in {*display:block;}
.close {opacity:0.3;filter:alpha(opacity=30);} .close:hover {opacity:0.8;filter:alpha(opacity=80);}

a.btn, button.btn {*padding:4px 10px 4px;*border:1px solid #cccccc;filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#fefefe', endColorstr='#e6e6e6', GradientType=0);}
a.btn-primary,a.btn-primary:hover,a.btn-warning,a.btn-warning:hover,a.btn-danger,a.btn-danger:hover,a.btn-success,a.btn-success:hover,
	a.btn-info,a.btn-info:hover,a.btn-inverse,a.btn-inverse:hover {*padding:4px 10px 3px;}
button.btn{*padding:3px 10px 2px;*background-color:transparent;}
.btn-group a.btn,.btn-group button.btn,.btn-group button.btn:hover {position:static;}
.btn-group a.btn + a.btn,.btn-group button.btn + button.btn {margin-left:-2px;}
/*
input.btn {filter:progid:DXImageTransform.Microsoft.gradient(startColorstr='#eeeeee', endColorstr='#cccccc', GradientType=0);*color:#555555}
input.btn:hover {*color:#333333}
*/
.nav, .breadcrumb {margin-bottom:8px;}
/*.nav-list li a {margin-top:5px;margin-bottom:5px;_padding-top:6px;} */.nav-list li a i{_margin-top:-1px;}

.table {margin-bottom:8px;background-color:#fdfdfd;}
.table th, .table td {vertical-align:middle;}
.table td i{margin:0 2px;}
.table-striped tbody>tr:nth-child(odd)>td, .table-striped tbody>tr:nth-child(odd)>th{background-color:#F5F5F5}
.table-nowrap td {width:200px;max-width:175px;overflow: hidden;white-space: nowrap;text-overflow: ellipsis;}

.sort-column{color:#0663A2;cursor:pointer;}

.supcan {border:1px #d3d3d3 solid;height:300px;}

.control-group {padding-bottom:8px;margin-bottom:0;border-bottom:1px dotted #dddddd;} legend + .control-group {margin-top:8px;}
.controls .lbl {display:inline-block;padding-top:5px;margin-bottom:0;vertical-align:middle;}
.measure-input {background:url("../images/ruler.gif") repeat-x scroll 0 bottom transparent;}
.input-min{width:30px;} .input-mini{width:90px;} .input-small{width:120px;} .input-medium {width:163px;}.input-xxlarge {width:460px;}
.help-block,.help-inline {color:#aaaaaa;} .alert {margin-bottom:10px;}

.form-search label{margin-left:10px;}
.form-search span label{margin-left:0;}
.form-search .ul-form {margin:0;overflow:hidden;}
.form-search .ul-form li{float:left;list-style:none;height:35px;line-height:35px;padding: 5px 0px}
.form-search .ul-form li label{width:120px;text-align:right;}
.form-search .ul-form li span label{width:auto;}
.form-search .ul-form li.clearfix{float:none;}
.form-search .ul-form li.btns{padding-left:10px;}
.form-search .ul-form li.btns .btn{margin-right:5px;}

.form-horizontal {margin:0 10px;} .form-horizontal .control-group {margin-bottom:8px;}
.form-horizontal .control-label {padding-top:3px;} .form-horizontal .controls {text-align:left;overflow-x:auto;overflow-y:hidden;}
.form-horizontal .controls label.error {background-position:0 2px;}

.form-horizontal .table-form{width:100%;border-color:#dddddd;}
.form-horizontal .table-form, .form-horizontal .table-form td{border:1px solid #ddd;background-color:#fdfdfd;padding:4px;} 
.form-horizontal .table-form td.tit{background:#fafafa;text-align:center;padding-right:8px;white-space:nowrap;}
.form-horizontal .form-actions{margin-bottom:0;}

.form-horizontal fieldset .row-fluid {margin-bottom:10px;}

.pagination {margin:8px 0;} .pagination .controls a{border:0;}
.pagination .controls input{border: 1px solid #999;color:#999;border-radius: 3px;width:30px;padding:0;margin:-3px   0 0 0;text-align:center;}

.modal-backdrop {background-color:#ffffff;}
.modal-backdrop,.modal-backdrop.fade.in {opacity:0.5;filter:alpha(opacity=50);}
.modal.tree {width:300px;margin:-250px 0 0 -180px;*margin:-200px 0 0 -150px;}
.modal.tree .modal-body {height:260px;padding:20px 25px;}

.accordion-heading,.table th {white-space:nowrap;background-color:#f5f5f5;
	background-image:-moz-linear-gradient(top,#ffffff,#f5f5f5);background-image:-ms-linear-gradient(top,#ffffff,#f5f5f5);
	background-image:-webkit-gradient(linear, 0 0, 0 100%, from(#FAFAF9), to(#f5f5f5));background-image:-webkit-linear-gradient(top,#ffffff,#f5f5f5);
	background-image:-o-linear-gradient(top,#ffffff,#f5f5f5);background-image:linear-gradient(top,#ffffff,#f5f5f5);
	background-repeat:repeat-x;}
/*.accordion-heading {filter:progid:dximagetransform.microsoft.gradient(startColorstr='#fefefe', endColorstr='#f5f5f5', GradientType=0);
	float:inherit;width:100%;-webkit-border-radius:3px 3px 0 0;-moz-border-radius:3px 3px 0 0;border-radius:3px 3px 0 0;}*/
.accordion-heading a:hover,.dropdown a:hover {text-decoration:none;background:none;}
.accordion-heading .accordion-toggle {font-family:emoji;font-size:14px;_padding-top:10px;_padding-bottom:8px;}
.accordion-inner {padding:3px 8px 3px 8px;}
.accordion-inner .nav-list {margin-bottom:4px;}
.accordion-inner .nav-list li a {padding:8px 1px 8px 8px;}
.accordion-inner .nav-list.hide li a{padding-left: 20px;color: #777;}
#left,#right/*,#openClose*/ {float:left;} /*#openClose {width:10px;margin:0 1px;cursor:pointer;}*/
/*#openClose,#openClose.close {background:#efefef url("../images/openclose.png") no-repeat -29px center;}
#openClose.close {background-position:1px center;opacity:0.5;filter:alpha(opacity=50)}*/
.ant-tsim{
	background-color: rgb(112, 81, 163);
	color: white;
	font-size: 12px;
	display: inline-block;
	height: auto;
	margin-right: 8px;
	padding: 0 7px;
	font-size: 12px;
	line-height: 20px;
	border: 1px solid #d9d9d9;
	border-radius: 2px;
}
.ant-tgt{
	background-color:#409eff;
	color: white;
	font-size: 12px;
	display: inline-block;
	height: auto;
	margin-right: 8px;
	padding: 0 7px;
	font-size: 12px;
	line-height: 20px;
	border: 1px solid #d9d9d9;
	border-radius: 2px;
}
.ant-giga{
	background-color:#00d1b2;
	color: white;
	font-size: 12px;
	display: inline-block;
	height: auto;
	margin-right: 8px;
	padding: 0 8px;
	font-size: 12px;
	line-height: 20px;
	border: 1px solid #d9d9d9;
	border-radius: 2px;
}
.ant-fastmove{
	background-color:#5cb85c;
	color: white;
	font-size: 12px;
	display: inline-block;
	height: auto;
	margin-right: 8px;
	padding: 0 8px;
	font-size: 12px;
	line-height: 20px;
	border: 1px solid #d9d9d9;
	border-radius: 2px;
}
.ant-cxtravel{
	background-color:#16baaa;
	color: white;
	font-size: 12px;
	display: inline-block;
	height: auto;
	margin-right: 8px;
	padding: 0 8px;
	font-size: 12px;
	line-height: 20px;
	border: 1px solid #d9d9d9;
	border-radius: 2px;
}
.ant-tsimpool{
	background-color:#d35400;
	color: white;
	font-size: 12px;
	display: inline-block;
	height: auto;
	margin-right: 8px;
	padding: 0 8px;
	font-size: 12px;
	line-height: 20px;
	border: 1px solid #d9d9d9;
	border-radius: 2px;
}
.ant-microesim{
	color: #3a5da2;
	font-size: 16px;
}
.ant-abeastesim{
	color: #48c26d;
	font-size: 16px;
}
.truncate {
	max-width: 160px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.full-content {
	white-space: normal !important;
	word-break: break-all !important;
	min-width: 200px !important;
	max-width: none !important;
	overflow: visible !important;
	text-overflow: clip !important;
}
.sortable {
	cursor: pointer;
	align-items: center;
}

.sortable i {
	margin-left: 3px;
}
.sortable i:hover {
	color: #56c568;
}
#overlay {
	position: fixed;
	display: none;
	width: 100%;
	height: 100%;
	top: 0;
	left: 0;
	right: 0;
	bottom: 0;
	background-color: rgba(0, 0, 0, 0.2);
	z-index: 2;
	cursor: not-allowed;
}
#refreshSubmit {
	background-color: #DF0037;
}
/* 搜索下拉框（两个变体共用基础样式）*/
.results-dropdown,
.code-results-dropdown {
	position: absolute;
	top: 100%;
	left: 0;
	overflow-y: auto;
	overflow-x: hidden;
	box-sizing: border-box;
	z-index: 9999;
	border-radius: 6px;
	background: #fff;
	border: 1px solid #e2e8f0;
	box-shadow: 0 4px 12px rgba(0,0,0,0.10);
}
/* 各自尺寸差异 */
.results-dropdown {
	max-width: 520px;
	max-height: 270px;
}
.code-results-dropdown {
	min-width: 100%;
	width: max-content;
	max-width: 400px;
	max-height: 230px;
}

.results-dropdown div,
.code-results-dropdown div {
	padding: 6px 10px;
	cursor: pointer;
	background: #fff;
	white-space: nowrap;
	overflow: hidden;
	text-overflow: ellipsis;
	font-size: 12px;
	color: #374151;
	border-bottom: 1px solid #f1f5f9;
}
.results-dropdown div:last-child,
.code-results-dropdown div:last-child { border-bottom: none; }

.results-dropdown div:hover,
.code-results-dropdown div:hover {
	background-color: #54b4eb;
	font-weight: bold;
	color: #222;
}

.results-dropdown::-webkit-scrollbar-track { background: #f1f1f1; }
.results-dropdown::-webkit-scrollbar-thumb { background: #A7C7E7; }
.results-dropdown::-webkit-scrollbar-thumb:hover { background: #54b4eb; }

.info-tooltip {
	position: relative;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	cursor: pointer;
	overflow: visible;
	z-index: 20;
	vertical-align: middle;
	margin-left: 4px;
}

.info-tooltip:hover {
	z-index: 10020;
}

.info-tooltip .fa-question-circle,
.info-tooltip .icon-question-sign {
	display: inline-block;
	font-size: 14px;
	line-height: 1;
	color: #7c8da6;
}

.info-tooltip .tooltiptext,
.tooltiptext {
	visibility: hidden;
	width: 320px;
	background-color: #fff;
	color: #555;
	border-radius: 6px;
	padding: 8px;
	position: absolute;
	z-index: 10021;
	bottom: 125%;
	left: 50%;
	right: 0;
	transform: translateX(-35%);
	opacity: 0;
	transition: opacity 0.3s;
	white-space: normal;
	word-wrap: break-word;
	text-align: left;
	line-height: 1.5;
	pointer-events: none;
	box-shadow: 0 2px 8px rgba(0, 0, 0, 0.15);
	border: 1px solid #dbe5f0;
	font-size: 12px;
}

.info-tooltip:hover .tooltiptext {
	visibility: visible;
	opacity: 1;
}

/* 手机端：点击展开/收起 tooltip */
@media (max-width: 768px) {
	.info-tooltip:hover .tooltiptext {
		visibility: hidden;
		opacity: 0;
	}
	.info-tooltip.tooltip-open .tooltiptext {
		visibility: visible;
		opacity: 1;
	}
	.info-tooltip.tooltip-open {
		z-index: 10020;
	}
}

.table th .info-tooltip,
.table td .info-tooltip,
.form-search .info-tooltip,
.controls .info-tooltip {
	overflow: visible;
}

#customConfirmBox {
	border-radius: 10px;
	box-shadow: 0 0 15px rgba(0, 0, 0, 0.2);
	text-align: center;
	display: none;
	position: fixed;
	left: 45%;
	top: 45%;
	transform: translate(-50%, -50%);
	background: white;
	padding: 20px;
	border: 1px solid #ccc;
	z-index: 1000;
}

#customConfirmBox button {
	margin: 10px;
	padding: 5px 15px;
}
#confirmMessage {
	text-align: center;
	font-weight: bold;
}
/* reset 按钮基础样式 */
.btn-reset {
	background-color: #f3f4f6;
	background-image: none;
	color: #374151;
	border: 1px solid #d1d5db;
	text-shadow: none;
}
/* hover 效果 */
.btn-search:hover,
.btn-primary:hover,
.btn-reset:hover,
.notice-header .btn:hover {
	transform: scale(1.08);
	box-shadow: 0 4px 10px rgba(0, 0, 0, 0.15);
}
.btn-reset:hover {
	background-color: #e5e7eb;
	border-color: #9ca3af;
	color: #111827;
}
.no-active-button{
	border: #DF0037 !important;
	background-color: #DF0037!important;
	border-radius: 5px!important;
}
body.loading-lang,body.loading-lang-body {
	visibility: hidden;
}

.erp-form-card {
	background: #ffffff;
	border: 1px solid #dbe3ee;
	border-radius: 18px;
	box-shadow: 0 18px 42px rgba(15, 23, 42, 0.08);
	max-width: 1180px;
	margin: 0 auto 24px;
	padding: 24px 28px;
}

.erp-form-card .control-group {
	padding: 14px 0;
	border-bottom: 1px solid #edf2f7;
}

.erp-form-card .control-group:last-of-type {
	border-bottom: 0;
}

.erp-form-card .control-label {
	width: 180px;
	padding-top: 7px;
	color: #475569;
	font-weight: 600;
	text-align: left;
}

.erp-form-card .controls {
	margin-left: 200px;
	overflow: visible;
	padding: 0 !important;
	border: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
}

.erp-form-card .input-xlarge,
.erp-form-card .input-xxlarge,
.erp-form-card textarea.input-xlarge,
.erp-form-card textarea.input-xxlarge,
.erp-form-card select.input-xlarge,
.erp-form-card select.input-xxlarge,
.erp-form-card .uneditable-input {
	width: min(760px, 100%);
	min-height: 38px;
	padding: 8px 12px;
	border: 1px solid #d6dee8;
	border-radius: 10px;
	box-sizing: border-box;
	background: #fff;
	box-shadow: none !important;
	-webkit-box-shadow: none !important;
	transition: border-color 0.18s ease, box-shadow 0.18s ease, background-color 0.18s ease;
}

.erp-form-card textarea.input-xlarge,
.erp-form-card textarea.input-xxlarge {
	min-height: 74px;
	line-height: 1.6;
	resize: vertical;
}

.erp-form-card input:focus,
.erp-form-card select:focus,
.erp-form-card textarea:focus {
	border-color: #3b82f6 !important;
	box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.10) !important;
	outline: none;
}

.erp-form-card.readonly-gray input[readonly],
.erp-form-card.readonly-gray textarea[readonly],
.erp-form-card.readonly-gray select[readonly],
.erp-form-card.readonly-gray .uneditable-input {
	background: #f3f4f6 !important;
	color: #475569;
	border-color: #dde5ef !important;
}

.erp-form-card .help-inline {
	display: inline-flex;
	align-items: center;
	min-height: 24px;
	margin-left: 10px;
	padding: 0 10px;
	border-radius: 999px;
	background: #fff1f2;
	color: #be123c !important;
	font-size: 12px;
	font-weight: 600;
}

.erp-form-card .help-inline font {
	color: inherit !important;
}

.erp-form-card .form-actions {
	margin: 24px 0 0;
	padding: 18px 0 0;
	border-top: 1px solid #e6edf5;
	background: transparent;
}
.c_time{
	 width: 125px;
	 background-color: white !important;
 }
.remarks-alert {
	display: none;
	position: fixed;
	top: 0;
	right: 0;
	left: 50%;
	width: 100%;
	height: 100%;
	transform: translateX(-50%);
	background-color: rgba(0, 0, 0, 0.2);
	color: white;
	padding: 10px;
	z-index: 9999;
	border-radius: 5px;
}
.remarks-alert-content {
	position: relative;
	top: 50%;
	left: 10%;
	width: 800px;
	transform: translate(30%, -70%);
	background-color: #f1f1f1;
	padding: 20px;
	border: 1px solid #ccc;
	border-radius: 5px;
	font-weight: 550;
	box-shadow: 0 0 10px rgba(0, 0, 0, 0.2);
}
.remarks-alert-title {
	margin-bottom: 10px;
	color: #779ACA;
	font-size: 16px;
	font-weight: bold;
}
.textarea-length {
	color: #779ACA;
}
.remarks-alert-header {
	font-weight: bold;
	margin: 10px 0px;
	padding: 10px 15px;
}
.remarks-alert-close-button {
	position: absolute;
	top: 5px;
	right: 8px;
	font-size: 25px;
	cursor: pointer;
	color: #779ACA;
}
.remarks-alert-close-button:hover {
	color: #0056b3;
}
.remarks-textarea {
	font-size: 16px;
	height: 94px;
	min-height: 94px;
	max-height: 178px;
	overflow-y: hidden;
	width: 760px
}
/* 手机端 Remarks 弹窗响应式 */
@media (max-width: 768px) {
	.remarks-alert-content {
		width: calc(100vw - 40px) !important;
		left: 0 !important;
		top: 50% !important;
		transform: translateY(-50%) !important;
		box-sizing: border-box;
	}
	.remarks-textarea {
		width: 100% !important;
		box-sizing: border-box;
	}
}

.remarks-space-item {
	display: flex;
	justify-content: flex-end;
	margin-top: 20px;
}
.remarks-space-item .ant-space-item button {
	border: 1px solid #779ACA;
	border-radius: 5px;
	padding: 5px 15px;
	cursor: pointer;
	transition: background-color 0.3s, color 0.3s;
}
.cancel_remark {
	background-color: white;
	color: #779ACA;
	margin-right: 25px;
}
.confirm_remark {
	background-color: #0056b3;
	color: white;
}
.remarks-space-item .ant-space-item button:hover {
	background-color: #779ACA;
	color: white;
}

/* ==========================================================================
   MicroEsim ERP — 现代化全局样式系统
   eSIM 采购管理平台专属视觉升级 v2.0
   覆盖 Bootstrap 2.3.1 基础样式 + 新增布局组件
   ========================================================================== */

/* --------------------------------------------------------------------------
   1. CSS 变量系统（全局色彩 & 间距令牌）
   -------------------------------------------------------------------------- */
:root {
    /* 品牌主色 — 科技蓝 */
    --esim-primary:       #2563eb;
    --esim-primary-dark:  #1d4ed8;
    --esim-primary-light: #eff6ff;
    /* 状态色 */
    --esim-success:       #10b981;
    --esim-success-light: #ecfdf5;
    --esim-warning:       #f59e0b;
    --esim-warning-light: #fffbeb;
    --esim-danger:        #ef4444;
    --esim-danger-light:  #fef2f2;
    --esim-info:          #6366f1;
    --esim-info-light:    #eef2ff;
    --esim-purple:        #8b5cf6;
    --esim-teal:          #14b8a6;
    /* 中性色 */
    --esim-bg:            #f1f5f9;
    --esim-bg-dark:       #e2e8f0;
    --esim-card:          #ffffff;
    --esim-border:        #e2e8f0;
    --esim-border-dark:   #cbd5e1;
    --esim-text:          #1e293b;
    --esim-text-sub:      #475569;
    --esim-text-muted:    #94a3b8;
    /* 圆角 & 阴影 */
    --esim-radius-sm:     6px;
    --esim-radius:        10px;
    --esim-radius-lg:     14px;
    --esim-shadow:        0 1px 3px rgba(0,0,0,.08), 0 1px 2px rgba(0,0,0,.04);
    --esim-shadow-md:     0 4px 12px rgba(0,0,0,.08), 0 2px 6px rgba(0,0,0,.05);
    --esim-shadow-lg:     0 10px 24px rgba(0,0,0,.10), 0 4px 8px rgba(0,0,0,.06);
    /* 渐变 */
    --esim-grad-primary:  linear-gradient(135deg, #2563eb 0%, #1d4ed8 100%);
    --esim-grad-teal:     linear-gradient(135deg, #14b8a6 0%, #0d9488 100%);
    --esim-grad-purple:   linear-gradient(135deg, #8b5cf6 0%, #7c3aed 100%);
    --esim-grad-success:  linear-gradient(135deg, #10b981 0%, #059669 100%);
    --esim-grad-orange:   linear-gradient(135deg, #f59e0b 0%, #d97706 100%);
}

/* --------------------------------------------------------------------------
   2. 全局基础覆盖（Bootstrap 2.3.1 重置）
   -------------------------------------------------------------------------- */
html, body {
    background-color: var(--esim-bg) !important;
    color: var(--esim-text);
    font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
                 "Hiragino Sans GB", "Microsoft YaHei", sans-serif;
    font-size: 13px;
    scrollbar-width: thin;
    scrollbar-color: #cbd5e1 #f1f5f9;
}

/* 滚动条美化 */
::-webkit-scrollbar { width: 6px; height: 6px; }
::-webkit-scrollbar-track { background: #f1f5f9; }
::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 3px; }
::-webkit-scrollbar-thumb:hover { background: #94a3b8; }

/* 全局链接 */
a { color: var(--esim-primary); }
a:hover { color: var(--esim-primary-dark); text-decoration: none; }

/* --------------------------------------------------------------------------
   3. Bootstrap 按钮覆盖 — 现代扁平风
   -------------------------------------------------------------------------- */
.btn {
    border-radius: var(--esim-radius-sm) !important;
    font-size: 13px;
    font-weight: 500;
    border: none;
    padding: 5px 14px;
    transition: all .18s ease;
    text-shadow: none !important;
    box-shadow: none !important;
    filter: none !important;
    background-image: none !important;
}
.btn:hover { transform: translateY(-1px); box-shadow: var(--esim-shadow-md) !important; }
.btn:active { transform: translateY(0); }

.btn-primary {
    background-color: var(--esim-primary) !important;
    color: #fff !important;
}
.btn-primary:hover { background-color: var(--esim-primary-dark) !important; }

.btn-success {
    background-color: var(--esim-success) !important;
    color: #fff !important;
}
.btn-warning {
    background-color: var(--esim-warning) !important;
    color: #fff !important;
}
.btn-danger {
    background-color: var(--esim-danger) !important;
    color: #fff !important;
}
.btn-info {
    background-color: var(--esim-info) !important;
    color: #fff !important;
}
.btn-inverse {
    background-color: #334155 !important;
    color: #fff !important;
}
/* 重置按钮保持红色轮廓 */
#btnReset {
    background-color: #fff !important;
    color: var(--esim-danger) !important;
    border: 1.5px solid var(--esim-danger) !important;
    text-shadow: none !important;
}
#btnReset:hover {
    background-color: var(--esim-danger-light) !important;
}

/* --------------------------------------------------------------------------
   4. Bootstrap 表单控件覆盖
   -------------------------------------------------------------------------- */
input[type="text"],
input[type="number"],
input[type="email"],
input[type="password"],
input[type="date"],
select,
textarea {
    border: 1.5px solid var(--esim-border-dark) !important;
    border-radius: var(--esim-radius-sm) !important;
    box-shadow: none !important;
    transition: border-color .15s, box-shadow .15s;
    background-color: #fff !important;
    color: var(--esim-text);
    padding: 5px 10px !important;
}
input[type="text"]:focus,
input[type="number"]:focus,
input[type="email"]:focus,
input[type="date"]:focus,
select:focus,
textarea:focus {
    border-color: var(--esim-primary) !important;
    box-shadow: 0 0 0 3px rgba(37,99,235,.12) !important;
    outline: none;
}

/* --------------------------------------------------------------------------
   5. Bootstrap 表格覆盖
   -------------------------------------------------------------------------- */
.table {
    border-radius: var(--esim-radius) !important;
    overflow: visible !important;
    border: 1px solid var(--esim-border) !important;
    background: #fff !important;
    box-shadow: var(--esim-shadow);
}

.table thead,
.table tbody,
.table tr,
.table th,
.table th,
.table td {
	position: relative;
}
.table th {
    background: #dbeafe !important;
    background-image: none !important;
    color: #1e40af !important;
    font-weight: 600 !important;
    font-size: 12px !important;
    text-transform: uppercase;
    letter-spacing: .03em;
    border-bottom: 2px solid #93c5fd !important;
    padding: 10px 12px !important;
    white-space: nowrap;
}

.table th[style*="#DF0037"],
.table th[style*="#df0037"],
.table td[style*="#DF0037"],
.table td[style*="#df0037"] {
    color: #DF0037 !important;
}

.table th[style*="#DF0037"],
.table th[style*="#df0037"] {
    background: #fff1f2 !important;
    background-image: none !important;
    border-bottom-color: #fecdd3 !important;
}
.table td {
	padding: 9px 12px !important;
	border-top: 1px solid var(--esim-border) !important;
	color: var(--esim-text);
	vertical-align: middle !important;
	white-space: nowrap;
	max-width: 200px;
	overflow: hidden !important;
	text-overflow: ellipsis !important;
}
/* 点击展开 - 覆盖默认截断 */
.table td.cell-expanded {
    white-space: normal !important;
    max-width: none !important;
    overflow: visible !important;
    background: #fffbeb !important;
}
.table-striped tbody > tr:nth-child(odd) > td,
.table-striped tbody > tr:nth-child(odd) > th {
    background-color: #f8fafc;
}
.table tbody tr:hover td {
    background-color: var(--esim-primary-light) !important;
}

/* --------------------------------------------------------------------------
   6. Bootstrap 导航/侧边栏覆盖
   -------------------------------------------------------------------------- */
.accordion-heading {
    background: #fff !important;
    background-image: none !important;
    border-bottom: 1px solid var(--esim-border) !important;
}
.accordion-heading .accordion-toggle {
    color: var(--esim-text-sub) !important;
    font-weight: 600;
    font-size: 14px !important;
}
.accordion-heading .accordion-toggle:hover {
    color: var(--esim-primary) !important;
    background: var(--esim-primary-light) !important;
}
.accordion-inner .nav-list li {
    border-top: none !important;
    border-bottom: none !important;
}
.accordion-inner .nav-list li a {
    border-top: none !important;
    border-radius: var(--esim-radius-sm);
    color: var(--esim-text-sub) !important;
    font-size: 13px;
    transition: all .15s;
}
.accordion-inner .nav-list li a:hover,
.accordion-inner .nav-list li.active a {
    background-color: var(--esim-primary-light) !important;
    color: var(--esim-primary) !important;
}

/* 保护侧边栏深色主题：防止上方通用 accordion 样式渗入 #left */
#left .accordion-heading {
    background: transparent !important;
    background-image: none !important;
    border-bottom: none !important;
    border-radius: 0px !important;
    transition: background-color .15s ease, box-shadow .15s ease;
}
#left .accordion-heading .accordion-toggle {
    display: block;
    width: 100%;
    box-sizing: border-box;
    color: rgba(255,255,255,0.78) !important;
    border-radius: 8px !important;
    padding: 10px 12px 10px 8px !important;
}
#left .accordion-heading:hover,
#left .accordion-heading:has(+ .accordion-body.in) {
    background-color: rgba(255,255,255,0.15) !important;
}
#left .accordion-heading:hover .accordion-toggle,
#left .accordion-heading:has(+ .accordion-body.in) > .accordion-toggle {
    color: #fff !important;
}
#left .accordion-inner {
    background: rgba(0,0,0,0.12) !important;
}
#left .accordion-inner .nav-list li a {
    color: rgba(255,255,255,0.78) !important;
    background-color: transparent !important;
    border-radius: 0 !important;
    padding-left: 18px !important;
}
#left .accordion-inner .nav-list li a:hover,
#left .accordion-inner .nav-list li.active a {
    background-color: rgba(255,255,255,0.07) !important;
    color: #fff !important;
}
#left .accordion-inner .nav-list > li > ul.nav-list li a {
    color: rgba(255,255,255,0.45) !important;
    background-color: transparent !important;
}
#left .accordion-inner .nav-list > li > ul.nav-list li a:hover,
#left .accordion-inner .nav-list > li > ul.nav-list li.active a {
    background-color: rgba(255,255,255,0.07) !important;
    color: #fff !important;
}

/* 分页 */
.pagination ul > li > a,
.pagination ul > li > span {
    border-radius: var(--esim-radius-sm) !important;
    margin: 0 2px;
    color: var(--esim-text-sub);
    border: 1px solid var(--esim-border) !important;
    background: #fff;
    transition: all .15s;
}
.pagination ul > .active > a,
.pagination ul > .active > span {
    background-color: var(--esim-primary) !important;
    border-color: var(--esim-primary) !important;
    color: #fff !important;
    background-image: none !important;
}
.pagination ul > li > a:hover {
    background-color: var(--esim-primary-light) !important;
    color: var(--esim-primary) !important;
}

/* --------------------------------------------------------------------------
   7. 页面 Header 组件（.page-header）
   -------------------------------------------------------------------------- */
.page-header {
    background: var(--esim-grad-primary);
    color: #fff;
    padding: 18px 24px;
    border-radius: var(--esim-radius-lg);
    margin-bottom: 18px;
    box-shadow: var(--esim-shadow-md);
    display: flex;
    align-items: center;
    justify-content: space-between;
    flex-wrap: wrap;
    gap: 12px;
    border: none !important;
    border-bottom: none !important;
}
.page-header .page-title {
    display: flex;
    align-items: center;
    gap: 14px;
}
.page-header .page-title-icon {
    width: 44px;
    height: 44px;
    background: rgba(255,255,255,.2);
    border-radius: var(--esim-radius);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    flex-shrink: 0;
}
.page-header h1 {
    font-size: 20px !important;
    font-weight: 700;
    margin: 0 !important;
    color: #fff;
    line-height: 1.3;
}
.page-header .page-subtitle {
    font-size: 12px;
    opacity: .8;
    margin-top: 2px;
}
.page-header .header-actions {
    display: flex;
    gap: 8px;
    flex-wrap: wrap;
}
.page-header .btn {
    background: rgba(255,255,255,.2) !important;
    color: #fff !important;
    border: 1.5px solid rgba(255,255,255,.4) !important;
    backdrop-filter: blur(4px);
}
.page-header .btn:hover {
    background: rgba(255,255,255,.35) !important;
    border-color: rgba(255,255,255,.7) !important;
}
.page-header .btn-primary-solid {
    background: #fff !important;
    color: var(--esim-primary) !important;
    border: none !important;
    font-weight: 600;
}
.page-header .btn-primary-solid:hover {
    background: var(--esim-primary-light) !important;
}

/* Header 颜色变体 */
.page-header.header-teal   { background: var(--esim-grad-teal); }
.page-header.header-purple { background: var(--esim-grad-purple); }
.page-header.header-success{ background: var(--esim-grad-success); }
.page-header.header-orange { background: var(--esim-grad-orange); }

/* --------------------------------------------------------------------------
   8. 搜索过滤卡片（.filter-card）
   -------------------------------------------------------------------------- */
.filter-card {
    background: var(--esim-card);
    border: 1px solid var(--esim-border);
    border-radius: var(--esim-radius);
    padding: 16px 20px;
    margin-bottom: 16px;
    box-shadow: var(--esim-shadow);
}
.filter-card .filter-title {
    font-size: 13px;
    font-weight: 600;
    color: var(--esim-text-sub);
    margin-bottom: 14px;
    display: flex;
    align-items: center;
    gap: 6px;
}
.filter-card .filter-title i {
    color: var(--esim-primary);
}
.filter-grid {
    display: flex;
    flex-wrap: wrap;
    gap: 12px 16px;
    align-items: flex-end;
}
.filter-item {
    display: flex;
    flex-direction: column;
    gap: 4px;
    min-width: 180px;
}
.filter-item label {
    font-size: 12px;
    color: var(--esim-text-sub);
    font-weight: 500;
    margin-bottom: 0;
}
.filter-item input,
.filter-item select {
    height: 26px;
    font-size: 12px;
    padding: 0 8px;
    box-sizing: border-box;
}
/* ===== 全局 select 新版样式 ===== */
select,
.filter-item select,
select.form-ctrl,
.form-search .ul-form li select,
.input-medium[multiple=false],
select.input-medium,
select.input-small,
select.input-xlarge {
    -webkit-appearance: none !important;
    -moz-appearance: none !important;
    appearance: none !important;
    height: 26px !important;
    padding: 0 32px 0 8px !important;
    font-size: 12px !important;
    line-height: 24px;
    border: 1.5px solid #d1d5db !important;
    border-radius: 6px !important;
    /* 右侧模拟按钮区域：浅灰底 + 竖线分隔 + 箭头图标 */
    background:
        url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 5'%3E%3Cpath d='M0 0l4 5 4-5z' fill='%236b7280'/%3E%3C/svg%3E") no-repeat right 10px center,
        linear-gradient(to left, #f3f4f6 30px, transparent 30px) !important;
    background-size: 8px 5px, 100% !important;
    color: #374151 !important;
    cursor: pointer;
    transition: border-color 0.15s, box-shadow 0.15s;
    box-sizing: border-box;
    vertical-align: middle;
}
select:hover,
.filter-item select:hover,
select.form-ctrl:hover {
    border-color: #9ca3af !important;
    background:
        url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 5'%3E%3Cpath d='M0 0l4 5 4-5z' fill='%236b7280'/%3E%3C/svg%3E") no-repeat right 10px center,
        linear-gradient(to left, #e9ecf1 30px, transparent 30px) !important;
    background-size: 8px 5px, 100% !important;
}
select:focus,
.filter-item select:focus,
select.form-ctrl:focus,
.form-search .ul-form li select:focus {
    border-color: #2563eb !important;
    box-shadow: 0 0 0 2px rgba(37,99,235,0.1) !important;
    outline: none !important;
    background:
        url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 5'%3E%3Cpath d='M8 5l-4-5-4 5z' fill='%232563eb'/%3E%3C/svg%3E") no-repeat right 10px center,
        linear-gradient(to left, #eff6ff 30px, transparent 30px) !important;
    background-size: 8px 5px, 100% !important;
}
/* ===== Select2 插件样式覆盖（与原生 select 风格统一）===== */
.select2-container .select2-choice {
    height: 26px !important;
    line-height: 24px !important;
    border: 1.5px solid #d1d5db !important;
    border-radius: 6px !important;
    background: #fff !important;
    background-image: none !important;
    filter: none !important;
    color: #374151 !important;
    font-size: 12px !important;
    padding: 0 34px 0 8px !important;
    box-sizing: border-box !important;
    position: relative !important;
}
.select2-container .select2-choice .select2-arrow {
    width: 28px !important;
    position: absolute !important;
    right: 0 !important;
    top: 0 !important;
    height: 100% !important;
    background: #f3f4f6 url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 10 6'%3E%3Cpath d='M0 0l5 6 5-6z' fill='%239ca3af'/%3E%3C/svg%3E") no-repeat center center !important;
    background-size: 10px 6px !important;
    border-left: 1.5px solid #e5e7eb !important;
    border-radius: 0 5px 5px 0 !important;
    filter: none !important;
}
.select2-container .select2-choice .select2-arrow:after {
    content: none !important;
}
.select2-container .select2-choice .select2-arrow b {
    background: none !important;
    display: none !important;
}
/* 展开时箭头区域颜色同步 */
.select2-dropdown-open .select2-choice .select2-arrow {
    background: #e9ecf1 url("data:image/svg+xml;charset=utf-8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 8 5'%3E%3Cpath d='M8 5l-4-5-4 5z' fill='%236b7280'/%3E%3C/svg%3E") no-repeat center center !important;
    background-size: 8px 5px !important;
    border-left-color: #d1d5db !important;
}
.select2-dropdown-open .select2-choice .select2-arrow:after {
    margin-top: -2px !important;
    transform: rotate(225deg) !important;
}
.select2-container.select2-dropdown-open .select2-choice {
    border-color: #2563eb !important;
    box-shadow: 0 0 0 2px rgba(37,99,235,0.1) !important;
}
.select2-drop {
    border: 1.5px solid #d1d5db !important;
    border-radius: 0 0 6px 6px !important;
    box-shadow: 0 4px 12px rgba(0,0,0,0.10) !important;
    font-size: 12px !important;
    color: #374151 !important;
}
.select2-results .select2-highlighted {
    background-color: #2563eb !important;
    color: #fff !important;
}
.select2-container .select2-choice:hover { border-color: #9ca3af !important; }

#header .brand {
    display: inline-flex;
    align-items: center;
    gap: 10px;
}

#header .brand .brand-logo-placeholder {
    display: inline-block;
    width: 18px;
    height: 18px;
    flex: 0 0 18px;
}

/* Shopee 橙红色按钮 */
.btn-shopee {
    background-color: #ee4d2d !important;
    color: #fff !important;
    border: none !important;
}
.filter-item.filter-item-wide { min-width: 240px; }
.filter-item.filter-item-date { min-width: 140px; }

/* ===== 快速时间选择按钮组 ===== */
.quick-filter-group {
    display: inline-flex !important;
    flex-wrap: wrap;
    gap: 4px;
    align-items: center;
}
/* orderTotalList.jsp 已有 quick-filter-group，在 li 内对齐 */
.form-search .ul-form li.quick-select-li {
    flex-direction: row !important;
    align-items: center;
    gap: 6px;
    flex-wrap: wrap;
}
.quick-filter-group .btn.btn-default,
.form-search .ul-form li .btn.btn-default {
    height: 26px !important;
    padding: 0 10px !important;
    font-size: 12px !important;
    line-height: 24px !important;
    border-radius: 4px !important;
    background: #f3f4f6 !important;
    color: #374151 !important;
    border: 1.5px solid #d1d5db !important;
    box-shadow: none !important;
    text-shadow: none !important;
    font-weight: 500;
    min-width: 52px;
    transition: all 0.15s;
}
.quick-filter-group .btn.btn-default:hover,
.quick-filter-group .btn.btn-default.highlight,
.form-search .ul-form li .btn.btn-default:hover,
.form-search .ul-form li .btn.btn-default.highlight {
    background: #2563eb !important;
    color: #fff !important;
    border-color: #2563eb !important;
    transform: none !important;
}

.filter-actions {
    display: flex;
    gap: 8px;
    align-items: center;
    flex-wrap: wrap;
    margin-top: 14px;
    padding-top: 14px;
    border-top: 1px dashed var(--esim-border);
}
.filter-quick-btns {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    margin-left: auto;
}
/* 搜索按钮 */
.btn-search {
    background-color: var(--esim-primary) !important;
    color: #fff !important;
    border: none !important;
    padding: 5px 18px;
    font-weight: 500;
}
.btn-search:hover { background-color: var(--esim-primary-dark) !important; }

/* --------------------------------------------------------------------------
   9. 统计卡片网格（.stats-grid / .stat-card）
   -------------------------------------------------------------------------- */
.stats-grid {
    display: grid;
    grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
    gap: 14px;
    margin-bottom: 16px;
}
.stat-card {
    background: var(--esim-card);
    border: 1px solid var(--esim-border);
    border-radius: var(--esim-radius);
    padding: 16px;
    display: flex;
    align-items: center;
    gap: 14px;
    box-shadow: var(--esim-shadow);
    transition: box-shadow .2s, transform .2s;
}
.stat-card:hover {
    box-shadow: var(--esim-shadow-md);
    transform: translateY(-2px);
}
.stat-icon {
    width: 46px;
    height: 46px;
    border-radius: var(--esim-radius);
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 20px;
    color: #fff;
    flex-shrink: 0;
}
.stat-icon.ic-blue   { background: var(--esim-grad-primary); }
.stat-icon.ic-teal   { background: var(--esim-grad-teal); }
.stat-icon.ic-green  { background: var(--esim-grad-success); }
.stat-icon.ic-orange { background: var(--esim-grad-orange); }
.stat-icon.ic-purple { background: var(--esim-grad-purple); }

.stat-body { flex: 1; min-width: 0; }
.stat-value {
    font-size: 22px;
    font-weight: 700;
    color: var(--esim-text);
    line-height: 1.2;
}
.stat-label {
    font-size: 12px;
    color: var(--esim-text-muted);
    margin-top: 2px;
}
.stat-trend {
    font-size: 11px;
    margin-top: 4px;
}
.stat-trend.up   { color: var(--esim-success); }
.stat-trend.down { color: var(--esim-danger); }

/* --------------------------------------------------------------------------
   10. 数据表格卡片（.table-card / .data-table）
   -------------------------------------------------------------------------- */
.table-card {
    background: var(--esim-card);
    border: 1px solid var(--esim-border);
    border-radius: var(--esim-radius);
    box-shadow: var(--esim-shadow);
    overflow: hidden;
}
.table-toolbar {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    border-bottom: 1px solid var(--esim-border);
    flex-wrap: wrap;
    gap: 8px;
    background: #fafcff;
}
.record-count {
    font-size: 13px;
    color: var(--esim-text-sub);
}
.record-count strong {
    color: var(--esim-primary);
    font-size: 15px;
}
.toolbar-actions {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
}
.table-wrapper { overflow-x: auto; }

/* data-table：比 .table 更精致 */
.data-table {
    width: 100%;
    border-collapse: collapse;
    font-size: 13px;
}
.data-table thead th {
    background: #f8fafc;
    color: var(--esim-text-sub);
    font-weight: 600;
    font-size: 12px;
    text-transform: uppercase;
    letter-spacing: .04em;
    padding: 10px 14px;
    border-bottom: 2px solid var(--esim-border-dark);
    white-space: nowrap;
    position: sticky;
    top: 0;
    z-index: 1;
}
.data-table thead th.col-action { text-align: center; min-width: 100px; }
.data-table tbody td {
    padding: 9px 14px;
    border-bottom: 1px solid var(--esim-border);
    color: var(--esim-text);
    vertical-align: middle;
}
.data-table tbody tr:last-child td { border-bottom: none; }
.data-table tbody tr:hover td { background: var(--esim-primary-light); }
.data-table tbody tr:nth-child(even) td { background: #f8fafc; }
.data-table tbody tr:nth-child(even):hover td { background: var(--esim-primary-light); }

/* 空数据行 */
.empty-row { text-align: center; padding: 40px !important; color: var(--esim-text-muted) !important; }
.empty-row i { font-size: 32px; display: block; margin-bottom: 8px; opacity: .4; }

/* 分页包裹 */
.pagination-wrapper {
    padding: 10px 16px;
    border-top: 1px solid var(--esim-border);
    background: #fafcff;
}

/* --------------------------------------------------------------------------
   11. 状态徽章（.badge-*）
   -------------------------------------------------------------------------- */
.badge {
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 3px 9px;
    border-radius: 20px;
    font-size: 11px;
    font-weight: 600;
    line-height: 1.4;
    white-space: nowrap;
}
.badge-blue    { background: var(--esim-primary-light); color: var(--esim-primary); }
.badge-green   { background: var(--esim-success-light); color: var(--esim-success); }
.badge-warning { background: var(--esim-warning-light); color: #b45309; }
.badge-red     { background: var(--esim-danger-light);  color: var(--esim-danger); }
.badge-purple  { background: #f3f0ff; color: var(--esim-purple); }
.badge-teal    { background: #f0fdfa; color: var(--esim-teal); }
.badge-gray    { background: #f1f5f9; color: var(--esim-text-muted); }
/* eSIM 状态专用 */
.badge-active    { background: var(--esim-success-light); color: var(--esim-success); }
.badge-expired   { background: #f1f5f9; color: var(--esim-text-muted); }
.badge-pending   { background: var(--esim-warning-light); color: #b45309; }
.badge-cancelled { background: var(--esim-danger-light);  color: var(--esim-danger); }
/* 平台徽章 */
.badge-microesim { background: #eff6ff; color: #2563eb; }
.badge-abestesim { background: #ecfdf5; color: #059669; }
.badge-asimgo    { background: #fff7ed; color: #c2410c; }
.badge-shopee    { background: #fff0e6; color: #d9480f; }
.badge-lazada    { background: #f3f0ff; color: #6d28d9; }
/* 渠道文字颜色（用于列表 td） */
.source-1 { color: #3a5da2; } /* microesim */
.source-2 { color: #ee4d2d; } /* shopee */
.source-3 { color: #0246ff; } /* lazada */
.source-4 { color: #059669; } /* abestesim */
.source-5 { color: #ee4d2d; } /* shopee malaysia */
.source-6 { color: #0246ff; } /* lazada malaysia */
.source-7 { color: #c2410c; } /* asimgo */
/* 可点击的 td：整个单元格充当链接 */
td.td-link { padding: 0 !important; }
td.td-link > a {
    display: block;
    padding: 8px;
    color: inherit;
    text-decoration: none;
    font-weight: 610;
}
td.td-link > a:hover { background: rgba(0,0,0,.04); }

/* --------------------------------------------------------------------------
   12. 操作按钮组（.action-btn）
   -------------------------------------------------------------------------- */
.action-cell { text-align: center; white-space: nowrap; }
.action-btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    width: 28px;
    height: 28px;
    border-radius: var(--esim-radius-sm);
    font-size: 13px;
    transition: all .15s;
    text-decoration: none !important;
    border: none;
    cursor: pointer;
    margin: 0 1px;
}
.action-btn.view-btn   { background: var(--esim-primary-light); color: var(--esim-primary); }
.action-btn.edit-btn   { background: var(--esim-success-light); color: var(--esim-success); }
.action-btn.delete-btn { background: var(--esim-danger-light);  color: var(--esim-danger); }
.action-btn.warn-btn   { background: var(--esim-warning-light); color: #b45309; }
.action-btn.info-btn   { background: #eef2ff; color: var(--esim-info); }
.action-btn:hover { transform: scale(1.18); box-shadow: var(--esim-shadow-md); }

/* --------------------------------------------------------------------------
   13. 左树右列 分栏布局（.split-layout）
   -------------------------------------------------------------------------- */
.split-layout {
    display: flex;
    gap: 16px;
    align-items: flex-start;
}
.tree-panel {
    width: 240px;
    flex-shrink: 0;
    background: var(--esim-card);
    border: 1px solid var(--esim-border);
    border-radius: var(--esim-radius);
    box-shadow: var(--esim-shadow);
    overflow: hidden;
    transition: width .25s ease;
}
.tree-panel.collapsed { width: 48px; }
.tree-panel-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 14px;
    background: var(--esim-grad-primary);
    color: #fff;
    font-weight: 600;
    font-size: 13px;
}
.tree-panel-header i { margin-right: 6px; }
.tree-toggle-btn {
    background: rgba(255,255,255,.2);
    border: none;
    color: #fff;
    width: 24px;
    height: 24px;
    border-radius: 4px;
    cursor: pointer;
    display: flex;
    align-items: center;
    justify-content: center;
    font-size: 11px;
    transition: background .15s;
}
.tree-toggle-btn:hover { background: rgba(255,255,255,.35); }

.tree-search-box {
    padding: 10px 12px;
    border-bottom: 1px solid var(--esim-border);
}
.tree-search-input {
    width: 100%;
    height: 30px;
    border: 1.5px solid var(--esim-border-dark) !important;
    border-radius: var(--esim-radius-sm) !important;
    padding: 0 10px !important;
    font-size: 12px;
    box-sizing: border-box;
}
.tree-list {
    list-style: none;
    margin: 0;
    padding: 8px;
    max-height: 600px;
    overflow-y: auto;
}
.tree-node {
    display: flex;
    align-items: center;
    gap: 8px;
    padding: 8px 10px;
    border-radius: var(--esim-radius-sm);
    cursor: pointer;
    font-size: 13px;
    color: var(--esim-text-sub);
    transition: all .15s;
    user-select: none;
}
.tree-node:hover { background: var(--esim-primary-light); color: var(--esim-primary); }
.tree-node.active {
    background: var(--esim-primary);
    color: #fff;
    font-weight: 600;
}
.tree-node i { font-size: 13px; flex-shrink: 0; }
.tree-node .tree-count {
    margin-left: auto;
    background: rgba(0,0,0,.06);
    border-radius: 10px;
    font-size: 11px;
    padding: 1px 7px;
    font-weight: 600;
}
.tree-node.active .tree-count { background: rgba(255,255,255,.25); }

/* 子节点缩进 */
.tree-node.tree-child { padding-left: 28px; font-size: 12px; }
.tree-divider { border: none; border-top: 1px dashed var(--esim-border); margin: 6px 0; }

.main-panel { flex: 1; min-width: 0; }

/* --------------------------------------------------------------------------
   14. 通用卡片（.erp-card）
   -------------------------------------------------------------------------- */
.erp-card {
    background: var(--esim-card);
    border: 1px solid var(--esim-border);
    border-radius: var(--esim-radius);
    box-shadow: var(--esim-shadow);
    margin-bottom: 16px;
}
.erp-card-header {
    display: flex;
    align-items: center;
    justify-content: space-between;
    padding: 12px 16px;
    border-bottom: 1px solid var(--esim-border);
    font-weight: 600;
    font-size: 14px;
    color: var(--esim-text);
    background: #fafcff;
    border-radius: var(--esim-radius) var(--esim-radius) 0 0;
}
.erp-card-header i { color: var(--esim-primary); margin-right: 7px; }
.erp-card-body { padding: 16px; }

/* 左侧色条强调 */
.erp-card.accent-blue   { border-left: 4px solid var(--esim-primary); }
.erp-card.accent-green  { border-left: 4px solid var(--esim-success); }
.erp-card.accent-orange { border-left: 4px solid var(--esim-warning); }
.erp-card.accent-red    { border-left: 4px solid var(--esim-danger); }

/* --------------------------------------------------------------------------
   15. 快捷筛选标签栏（.quick-tabs）
   -------------------------------------------------------------------------- */
.quick-tabs {
    display: flex;
    gap: 6px;
    flex-wrap: wrap;
    padding: 12px 16px;
    border-bottom: 1px solid var(--esim-border);
    background: #fafcff;
}
.quick-tab {
    display: inline-flex;
    align-items: center;
    gap: 5px;
    padding: 4px 12px;
    border-radius: 20px;
    font-size: 12px;
    font-weight: 500;
    cursor: pointer;
    border: 1.5px solid var(--esim-border-dark);
    background: #fff;
    color: var(--esim-text-sub);
    transition: all .15s;
    text-decoration: none !important;
}
.quick-tab:hover {
    border-color: var(--esim-primary);
    color: var(--esim-primary);
    background: var(--esim-primary-light);
}
.quick-tab.active {
    background: var(--esim-primary);
    border-color: var(--esim-primary);
    color: #fff;
}
.quick-tab .tab-count {
    background: rgba(0,0,0,.08);
    border-radius: 10px;
    padding: 0 6px;
    font-size: 11px;
}
.quick-tab.active .tab-count { background: rgba(255,255,255,.25); }

/* --------------------------------------------------------------------------
   16. 通知/提示横幅（.notice-banner）
   -------------------------------------------------------------------------- */
.notice-banner {
    display: flex;
    align-items: center;
    gap: 10px;
    padding: 10px 16px;
    border-radius: var(--esim-radius);
    margin-bottom: 14px;
    font-size: 13px;
    font-weight: 500;
}
.notice-banner i { font-size: 15px; flex-shrink: 0; }
.notice-banner.info    { background: var(--esim-primary-light); color: var(--esim-primary); border-left: 4px solid var(--esim-primary); }
.notice-banner.success { background: var(--esim-success-light); color: var(--esim-success); border-left: 4px solid var(--esim-success); }
.notice-banner.warning { background: var(--esim-warning-light); color: #b45309; border-left: 4px solid var(--esim-warning); }
.notice-banner.danger  { background: var(--esim-danger-light);  color: var(--esim-danger); border-left: 4px solid var(--esim-danger); }

/* --------------------------------------------------------------------------
   17. 页面容器包裹（.erp-page）
   -------------------------------------------------------------------------- */
.erp-page {
    padding: 18px 20px;
    max-width: 1920px;
}
/* 兼容 JeeSite 原有 iframe 场景的内边距 */
body > .erp-page { padding: 18px 20px 18px 15px; }

/* --------------------------------------------------------------------------
   18. 响应式适配
   -------------------------------------------------------------------------- */
@media (max-width: 1200px) {
    .stats-grid { grid-template-columns: repeat(2, 1fr); }
    .tree-panel { width: 200px; }
}
@media (max-width: 768px) {
    .split-layout { flex-direction: column; }
    .tree-panel { width: 100%; }
    .stats-grid { grid-template-columns: 1fr 1fr; }
    .filter-grid { flex-direction: column; }
    .filter-item { min-width: 100%; }
    .page-header { flex-direction: column; align-items: flex-start; }
}
@media (max-width: 480px) {
    .stats-grid { grid-template-columns: 1fr; }
}

/* ==========================================================================
   19. 通用列表页自动美化
   让所有使用 .breadcrumb.form-search + .ul-form 的老式 JSP 页面
   无需修改 HTML，自动获得卡片式搜索栏 + 现代表格外观
   ========================================================================== */

/* ---- 搜索表单卡片化（覆盖 Bootstrap .breadcrumb 原始样式）---- */
form.breadcrumb.form-search,
.breadcrumb.form-search {
    background: var(--esim-card) !important;
    background-image: none !important;
    border: 1px solid var(--esim-border) !important;
    border-radius: var(--esim-radius) !important;
    padding: 16px 20px 12px !important;
    margin-bottom: 14px !important;
    box-shadow: var(--esim-shadow);
    list-style: none;
}

/* ---- ul-form 改为 flex wrap 布局（覆盖 float 布局）---- */
.form-search .ul-form {
    display: flex !important;
    flex-wrap: wrap;
    gap: 10px 16px;
    align-items: flex-end;
    overflow: visible !important;
    margin: 0 !important;
}

.form-search .ul-form li {
    display: flex !important;
    flex-direction: column;
    gap: 4px;
    float: none !important;
    height: auto !important;
    line-height: 1 !important;
    padding: 0 !important;
    list-style: none;
    min-width: 160px;
}

/* 日期 li 窄一些 */
.form-search .ul-form li:has(input.c_time),
.form-search .ul-form li.filter-item-date {
    min-width: 120px;
}

/* ===== 日期区间选择器 - 上标签下输入框纵排模板 ===== */

/* li 纵排：标签一行，日期选择器一行 */
.form-search .ul-form li.date-range-li,
.form-search .ul-form li.form-group-date-range {
    display: inline-flex !important;
    flex-direction: column !important;
    align-items: flex-start !important;
    align-self: center !important;
    height: auto !important;
    float: left !important;
    padding: 2px 4px 0px 4px!important;
    gap: 2px !important;
    min-width: 0 !important;
}
.form-search .ul-form li.date-range-li > label,
.form-search .ul-form li.form-group-date-range > label {
    display: block !important;
    margin-bottom: 0 !important;
    white-space: nowrap;
    flex-shrink: 0;
    line-height: 18px;
    font-size: 12px;
    color: #6b7280;
}

/* 容器本身 */
.date-range-wrap {
    display: inline-flex;
    flex-direction: row;
    align-items: center;
    border: 1.5px solid #d1d5db;
    border-radius: 6px;
    background: #fff;
    padding: 0 6px;
    gap: 2px;
    height: 28px;
    vertical-align: middle;
    box-sizing: border-box;
    transition: border-color 0.15s, box-shadow 0.15s;
}
.date-range-wrap:hover { border-color: #b0b9c8; }
.date-range-wrap:focus-within {
    border-color: #2563eb;
    box-shadow: 0 0 0 2px rgba(37,99,235,0.1);
}

/* date-range-wrap 内的时间输入框：共用基础样式 */
.date-range-wrap .c_time {
    border: none !important;
    background: transparent !important;
    outline: none !important;
    box-shadow: none !important;
    width: 84px !important;
    height: 22px !important;
    line-height: 22px !important;
    font-size: 12px;
    color: #374151;
    padding: 0;
    margin: 0;
    vertical-align: middle;
    cursor: pointer;
}
/* type=date 原生日期选择器稍宽 */
.date-range-wrap input[type="date"].c_time {
    width: 120px !important;
    padding: 0 2px;
}

.date-range-wrap .date-range-sep {
    color: #9ca3af;
    font-size: 13px;
    flex-shrink: 0;
    padding: 0 2px;
    line-height: 1;
    align-self: center;
}
.date-range-wrap .date-range-cal {
    display: block;
    flex-shrink: 0;
    opacity: 0.5;
    margin-right: 2px;
    pointer-events: none;
    align-self: center;
}

.bclient-input-wrap {
    position: relative;
    display: inline-block;
    vertical-align: middle;
}

.bclient-input-wrap #bClientInput {
    padding-right: 28px !important;
}

.bclient-input-wrap #bInputIcon,
.bclient-input-wrap .input-icon {
    position: absolute;
    right: 8px;
    top: 50%;
    transform: translateY(-50%);
    line-height: 1;
    color: #94a3b8;
    cursor: pointer;
}

.form-search .ul-form li label {
    font-size: 12px !important;
    color: var(--esim-text-sub) !important;
    font-weight: 500 !important;
    width: auto !important;
    text-align: left !important;
    margin: 0 !important;
    white-space: nowrap;
}

/* 按钮 li 横排 */
.form-search .ul-form li.btns {
    flex-direction: row !important;
    align-items: flex-end;
    gap: 6px;
    min-width: auto;
    padding-left: 0 !important;
}
.form-search .ul-form li.btns .btn {
    margin-right: 0 !important;
    padding: 2px 12px !important;
    font-size: 12px !important;
    height: 26px !important;
    line-height: 21px !important;
    box-sizing: border-box;
}

/* clearfix li 隐藏，不再需要 */
.form-search .ul-form li.clearfix { display: none !important; }

/* 日期范围中间的连字符 */
.form-search .ul-form li span { line-height: 22px; }

/* 搜索表单里的输入框高度统一 */
.form-search .ul-form li input[type="text"],
.form-search .ul-form li input[type="number"],
.form-search .ul-form li input[type="email"],
.form-search .ul-form li input[type="date"],
.form-search .ul-form li select {
    height: 26px !important;
    padding: 0 8px !important;
    font-size: 12px !important;
    line-height: 24px;
    box-sizing: border-box;
}

/* ---- 表格外层留白 + 分页间距 ---- */
#contentTable.table,
.table.table-striped.table-bordered.table-condensed {
    margin-top: 0 !important;
}

.pagination {
    margin: 10px 0 6px !important;
}

/* ---- 列表页 body 内边距（适用于 iframe 内容页）---- */
body > form.breadcrumb.form-search:first-child,
body > .breadcrumb.form-search:first-child {
    margin-top: 0 !important;
}

/* ---- 提示文本样式 ---- */
.help-block {
    font-size: 12px;
    color: var(--esim-text-muted) !important;
    margin: -6px 0 10px;
    padding: 6px 12px;
    background: var(--esim-warning-light);
    border-left: 3px solid var(--esim-warning);
    border-radius: 0 var(--esim-radius-sm) var(--esim-radius-sm) 0;
    display: block;
}

/* ---- alert 美化 ---- */
.alert.alert-danger {
    border-radius: var(--esim-radius-sm) !important;
    border-left: 4px solid var(--esim-danger) !important;
    background: var(--esim-danger-light) !important;
    color: var(--esim-danger) !important;
    border-top: none !important;
    border-right: none !important;
    border-bottom: none !important;
    margin-bottom: 10px;
}

/* ---- 全局手型光标 ---- */
a, button, input[type="button"], input[type="submit"], input[type="reset"],
label[for], .btn { cursor: pointer !important; }

/* ---- 可点击排序列样式 ---- */
.sortable { cursor: pointer; user-select: none; }
.sortable:hover { color: var(--esim-primary) !important; }
.sortable .fas.fa-sort { font-size: 10px; opacity: .5; margin-left: 3px; }

/* ---- 表格 td 点击展开提示 ---- */
.table td[title] { cursor: pointer; }
.table td[title]:hover::after {
    content: ' ↔';
    font-size: 10px;
    color: var(--esim-primary);
    opacity: 0.6;
}

/* ---- 通用搜索结果下拉（results-dropdown 全局统一样式）---- */
.results-dropdown {
    position: absolute;
    top: 100%;
    left: 0;
    min-width: 100%;
    box-sizing: border-box;
    z-index: 9999;
    border-radius: 3px;
    max-height: 270px;
    overflow-y: auto;
    background: #fff;
    border: 1px solid #ccc;
    box-shadow: 0 2px 8px rgba(0,0,0,0.15);
}
.results-dropdown div,
.results-dropdown li {
    padding: 6px 10px;
    cursor: pointer;
    white-space: nowrap;
}
.results-dropdown div:hover,
.results-dropdown li:hover {
    background: #e8f0fe;
}
