/*
 * Bootstrap 3 → 5 兼容样式
 *
 * 视图已按增量方式补上 BS5 类名（保留 BS3 类名作为 JS/自定义 CSS 的钩子），
 * 这里只放 BS5 已移除、无法用类名映射表达的部分。新页面请直接使用 BS5 写法。
 */

/* BS3 基础字号 14px；BS5 组件以 rem 计量，根字号设为 14px 以保持原有界面密度 */
html {
	font-size: 14px;
}

/* 链接：BS3 默认无下划线、悬停时显示；BS5 默认带下划线 */
a {
	text-decoration: none;
}
a:hover,
a:focus {
	text-decoration: underline;
}
.btn:hover,
.nav-link:hover,
.dropdown-item:hover,
.navbar-brand:hover,
.page-link:hover {
	text-decoration: none;
}

/* 模态框：BS3 的关闭按钮写在标题之前，BS5 依靠 margin-left:auto 放在右侧 */
.modal-header .btn-close {
	order: 2;
}

/* JS 动态生成的 <select class="form-control">（未带 .form-select）：BS5 的 .form-control 隐藏了原生箭头，补上 .form-select 的箭头样式 */
select.form-control:not([multiple]):not([size]):not(.form-select) {
	padding-right: 2.25rem;
	/* 与 bootstrap 5.3.8 .form-select 的箭头相同（该变量只定义在 .form-select 上，这里取字面值） */
	background-image: url("data:image/svg+xml,%3csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 16 16'%3e%3cpath fill='none' stroke='%23343a40' stroke-linecap='round' stroke-linejoin='round' stroke-width='2' d='m2 5 6 6 6-6'/%3e%3c/svg%3e");
	background-repeat: no-repeat;
	background-position: right .75rem center;
	background-size: 16px 12px;
}

/* 表单校验状态（JS 中仍使用 has-error / has-success） */
.has-error .form-control,
.has-error .form-select {
	border-color: var(--bs-form-invalid-border-color);
}
.has-error .control-label,
.has-error .help-block,
.has-error .form-text {
	color: var(--bs-form-invalid-color);
}
.has-success .form-control,
.has-success .form-select {
	border-color: var(--bs-form-valid-border-color);
}
.has-success .control-label {
	color: var(--bs-form-valid-color);
}

/* input-group-btn 包裹层：BS5 中按钮直接作为 input-group 子元素 */
.input-group-btn {
	display: contents;
}

/* BS3 data-toggle="buttons"：隐藏按钮组中的原生单选/复选框（.active 切换见 lib/bootstrap/bootstrap.js） */
[data-toggle="buttons"] > .btn input[type="radio"],
[data-toggle="buttons"] > .btn input[type="checkbox"],
[data-toggle="buttons"] > .btn-group > .btn input[type="radio"],
[data-toggle="buttons"] > .btn-group > .btn input[type="checkbox"] {
	position: absolute;
	clip: rect(0, 0, 0, 0);
	pointer-events: none;
}

/* .checkbox 包裹层（BS5 为 .form-check） */
.checkbox {
	display: block;
	margin-bottom: .5rem;
}
.checkbox label {
	cursor: pointer;
	font-weight: normal;
}
.checkbox input[type="checkbox"] {
	margin-right: .25rem;
}

/* media 对象（BS5 已移除） */
.media {
	display: flex;
	align-items: flex-start;
}
.media-body {
	flex: 1;
	min-width: 0;
}
.media-left {
	padding-right: 10px;
}
.media-right {
	padding-left: 10px;
}
.media-heading {
	margin-top: 0;
	margin-bottom: 5px;
}

/* jumbotron（BS5 已移除） */
.jumbotron {
	padding: 2rem 1rem;
	margin-bottom: 2rem;
	background-color: var(--bs-tertiary-bg);
	border-radius: .5rem;
}

/* BS3 导航条结构：.container(-fluid) 内的自定义包裹层与 .navbar-header 需参与 flex 布局 */
.navbar > .container > .content,
.navbar > .container-fluid > .content {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: space-between;
	width: 100%;
}
.navbar-header {
	display: flex;
	align-items: center;
}
.navbar-toggler .icon-bar {
	display: block;
	width: 22px;
	height: 2px;
	margin: 4px 0;
	border-radius: 1px;
	background-color: currentColor;
}

/* 下拉菜单：BS3 的分隔线与未加 .dropdown-item 的菜单项（如 PHP 字符串拼接生成的） */
.dropdown-menu > li.divider {
	height: 0;
	margin: var(--bs-dropdown-divider-margin-y) 0;
	overflow: hidden;
	border-top: 1px solid var(--bs-dropdown-divider-bg);
}
.dropdown-menu > li > a:not(.dropdown-item) {
	display: block;
	width: 100%;
	padding: var(--bs-dropdown-item-padding-y) var(--bs-dropdown-item-padding-x);
	clear: both;
	color: var(--bs-dropdown-link-color);
	white-space: nowrap;
	text-decoration: none;
}
.dropdown-menu > li > a:not(.dropdown-item):hover {
	color: var(--bs-dropdown-link-hover-color);
	background-color: var(--bs-dropdown-link-hover-bg);
}

/* BS3 导航条中 .navbar-nav > li > a 未加 .nav-link 的情况 */
.navbar-nav > li > a:not(.nav-link):not(.dropdown-item) {
	display: block;
	padding: var(--bs-nav-link-padding-y) var(--bs-navbar-nav-link-padding-x);
	color: var(--bs-navbar-color);
	text-decoration: none;
}

/* 行内表单（搜索栏）：标签不换行 */
.form-inline label {
	white-space: nowrap;
	margin-bottom: 0;
}

/* 富文本编辑器容器（app/common/editor.js） */
.m-editor {
	border: 1px solid var(--bs-border-color);
	border-radius: var(--bs-border-radius);
	overflow: hidden;
}
.m-editor-toolbar {
	border-bottom: 1px solid var(--bs-border-color);
}
.m-editor-text {
	overflow-y: auto;
}

/* 标签默认粗体（BS3 label{font-weight:700}） */
label {
	font-weight: 700;
}
.form-check-label,
.checkbox label,
.btn {
	font-weight: normal;
}

/* bootstrap-table 工具栏中的 BS3 形态按钮 */
.fixed-table-toolbar .btn-default {
	--bs-btn-border-color: var(--bs-border-color);
}

/* 斑马纹：BS3 奇数行 #f9f9f9；BS5 默认 5% 黑色叠加，略深 */
.table-striped {
	--bs-table-striped-bg: #f9f9f9;
}
