/* =========================
 * 筛选页面专用样式
 * ========================= */
.lingxyh-template-filter {
	--filter-red: #dd3333b3;
	--filter-line: rgb(0 0 0 / 12%);
	--filter-muted: #68727e;
}

.lingxyh-template-filter [hidden] {
	display: none !important;
}

/* 筛选入口 */
.lingxyh-filter-select {
	position: relative;
	z-index: 20;
}

.lingxyh-filter-select .filter-switch-mobile {
	display: none;
}

.lingxyh-template-filter .filter-switches,
.lingxyh-filter-tools .filter-tools-grid {
	display: grid;
	grid-template-columns: repeat(2, minmax(0, 1fr));
	gap: 6px;
}

.lingxyh-template-filter .filter-switch {
	min-height: 35px;
	padding: 0 10px;
	border: 1px solid rgb(0 0 0 / 10%);
	border-radius: 10px;
	background: rgb(255 255 255 / 66%);
	color: #555;
	cursor: pointer;
}

.lingxyh-template-filter .filter-switch:hover,
.lingxyh-template-filter .filter-switch.is-active {
	background: var(--filter-red);
	border-color: var(--filter-red);
	color: #fff;
}

.lingxyh-template-filter .filter-switch.has-filter:not(:hover) {
	border-color: var(--filter-red);
	color: #a33;
	font-weight: 700;
}

/* 标签筛选 */
.lingxyh-filter-tags {
	position: relative;
	overflow: visible;
}

.lingxyh-filter-tags.is-hidden {
	display: none;
}

.lingxyh-filter-tags .filter-tag-box,
.lingxyh-filter-tags .filter-tag-top,
.lingxyh-filter-tags .filter-tag-wrap {
	overflow: visible;
}

.lingxyh-filter-tags .filter-tag-top {
	display: flex;
	flex-wrap: wrap;
	gap: 7px;
}

.lingxyh-filter-tags .filter-tag-wrap {
	position: relative;
}

.lingxyh-filter-tags .filter-tag-button {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	min-height: 32px;
	padding: 0 10px;
	border: 1px solid var(--filter-line);
	border-radius: 8px;
	background: rgb(255 255 255 / 60%);
	color: #555;
	cursor: pointer;
	font-weight: 700;
}

.lingxyh-filter-tags .filter-tag-button:hover,
.lingxyh-filter-tags .filter-tag-button.is-open {
	background: rgb(221 51 51 / 10%);
	color: #a33;
}

.lingxyh-filter-tags .filter-tag-count {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	min-width: 18px;
	height: 18px;
	padding: 0 5px;
	border-radius: 10px;
	background: var(--filter-red);
	color: #fff;
	font-size: 10px;
}

.lingxyh-filter-tags .filter-tag-pop {
	position: absolute;
	z-index: 100;
	top: calc(100% + 7px);
	left: 0;
	width: 290px;
	padding: 10px;
	border: 1px solid var(--filter-line);
	border-radius: 12px;
	background: rgb(255 255 255 / 95%);
	box-shadow: 0 10px 30px rgb(0 0 0 / 18%);
	-webkit-backdrop-filter: blur(15px);
	backdrop-filter: blur(15px);
}

.lingxyh-filter-tags .filter-tag-title {
	padding: 0 2px 8px;
	border-bottom: 1px solid var(--filter-line);
	font-weight: 700;
}

.lingxyh-filter-tags .filter-tag-mid-list {
	display: grid;
	gap: 6px;
	margin-top: 8px;
}

.lingxyh-filter-tags .filter-tag-mid {
	border: 1px solid var(--filter-line);
	border-radius: 8px;
	overflow: hidden;
}

.lingxyh-filter-tags .filter-tag-mid > button {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	min-height: 34px;
	padding: 0 9px;
	border: 0;
	background: transparent;
	color: #555;
	cursor: pointer;
}

.lingxyh-filter-tags .filter-tag-mid-right {
	display: flex;
	align-items: center;
	gap: 6px;
}

.lingxyh-filter-tags .filter-tag-leaves {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	padding: 8px 9px 9px;
	border-top: 1px solid var(--filter-line);
}

.lingxyh-filter-tags .filter-tag-leaf {
	min-height: 30px;
	padding: 0 10px;
	border: 1px solid var(--filter-line);
	border-radius: 8px;
	background: rgb(255 255 255 / 65%);
	color: #555;
	cursor: pointer;
}

.lingxyh-filter-tags .filter-tag-leaf:hover,
.lingxyh-filter-tags .filter-tag-leaf.is-active {
	background: var(--filter-red);
	border-color: var(--filter-red);
	color: #fff;
}

/* 结果状态 */
.lingxyh-filter-status .filter-result-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 15px;
	padding-bottom: 10px;
	border-bottom: 1px solid var(--filter-line);
}

.lingxyh-filter-status .filter-result-title h2,
.lingxyh-filter-status .filter-result-title p {
	margin: 0;
}

.lingxyh-filter-status .filter-result-title p {
	margin-top: 5px;
}

.lingxyh-template-filter .filter-muted {
	color: var(--filter-muted);
	font-size: 12px;
}

.lingxyh-filter-status .filter-clear {
	min-height: 30px;
	padding: 0 10px;
	border: 1px solid var(--filter-red);
	border-radius: 15px;
	background: var(--filter-red);
	color: #fff;
	cursor: pointer;
}

.lingxyh-filter-status .filter-active-filters {
	display: flex;
	flex-wrap: wrap;
	align-items: flex-start;
	gap: 8px;
	margin-top: 10px;
}

.lingxyh-filter-status .filter-active-filters:empty {
	display: none;
}

.lingxyh-filter-status .filter-group {
	display: flex;
	align-items: flex-start;
	gap: 7px;
	max-width: 100%;
	padding: 6px 8px;
	border: 1px solid var(--filter-line);
	border-radius: 10px;
	background: rgb(255 255 255 / 35%);
}

.lingxyh-filter-status .filter-group-search {
	max-width: 33.333%;
	overflow: hidden;
}

.lingxyh-filter-status .filter-group-title {
	flex: 0 0 auto;
	padding-top: 5px;
	font-size: 11px;
	font-weight: 700;
	color: #59626e;
}

.lingxyh-filter-status .filter-group-items {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	gap: 6px;
	min-width: 0;
}

.lingxyh-filter-status .filter-chip {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	min-height: 27px;
	max-width: 100%;
	padding: 0 5px 0 9px;
	border: 1px solid var(--filter-line);
	border-radius: 14px;
	background: rgb(255 255 255 / 60%);
	font-size: 11px;
}

.lingxyh-filter-status .filter-chip-text {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}

.lingxyh-filter-status .filter-chip-remove {
	width: 20px;
	height: 20px;
	padding: 0;
	border: 0;
	border-radius: 50%;
	background: rgb(0 0 0 / 7%);
	color: #777;
	cursor: pointer;
}

.lingxyh-filter-status .filter-chip-remove:hover {
	background: var(--filter-red);
	color: #fff;
}

/* 结果列表 */
.lingxyh-filter-list .filter-grid {
	display: grid;
	grid-template-columns: repeat(3, minmax(0, 1fr));
	gap: 10px;
}

.lingxyh-filter-list .filter-entry-card {
	display: grid;
	grid-template-columns: 70px minmax(0, 1fr);
	align-items: center;
	gap: 10px;
	padding: 10px;
	border: 1px solid var(--filter-line);
	border-radius: 12px;
	background: rgb(255 255 255 / 45%);
	color: #333;
}

.lingxyh-filter-list .filter-entry-card img {
	width: 70px;
	height: 70px;
	border-radius: 50%;
	object-fit: cover;
}

.lingxyh-filter-list .filter-entry-card h3,
.lingxyh-filter-list .filter-entry-card p {
	margin: 0;
}

.lingxyh-filter-list .filter-entry-card p {
	margin-top: 5px;
	color: var(--filter-muted);
	font-size: 12px;
}

.lingxyh-filter-list .filter-empty {
	grid-column: 1 / -1;
	padding: 30px 10px;
	text-align: center;
	color: var(--filter-muted);
}

/* 侧栏局部 */
.lingxyh-filter-tools .filter-switch {
	min-width: 0;
}

.lingxyh-template-filter .filter-row {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 10px;
	padding: 10px 0;
	border-bottom: 1px solid var(--filter-line);
}

.lingxyh-template-filter .filter-row:last-child {
	border-bottom: 0;
}

.lingxyh-template-filter .filter-row h3 {
	margin: 0;
}

.lingxyh-template-filter .filter-btn-small {
	min-height: 30px;
	padding: 0 9px;
	font-size: 12px;
}

.lingxyh-template-filter .filter-btn-dark {
	background: rgb(30 35 42 / 80%);
	color: #fff;
}

.lingxyh-template-filter .filter-quote {
	margin-bottom: 0;
	font: 18px/1.8 KaiTi, STKaiti, serif;
}

/* 遮罩与抽屉 */
.lingxyh-filter-overlay {
	position: fixed;
	inset: 0;
	z-index: 9998;
	display: none;
	background: rgb(0 0 0 / 55%);
}

.lingxyh-filter-overlay.is-open {
	display: block;
}

.lingxyh-filter-drawer {
	position: fixed;
	z-index: 9999;
	top: 12px;
	bottom: 12px;
	width: min(430px, calc(100vw - 24px));
	display: flex;
	flex-direction: column;
	background: rgb(250 250 250 / 98%);
	border-radius: 15px;
	box-shadow: 0 15px 50px rgb(0 0 0 / 30%);
	transition: transform .3s ease;
	overflow: hidden;
}

.lingxyh-filter-drawer.filter-right {
	right: 12px;
	transform: translateX(calc(100% + 24px));
}

.lingxyh-filter-drawer.filter-left {
	left: 12px;
	transform: translateX(calc(-100% - 24px));
}

.lingxyh-filter-drawer.is-open {
	transform: translateX(0);
}

.lingxyh-filter-drawer .filter-drawer-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	min-height: 52px;
	padding: 0 15px;
	border-bottom: 1px solid var(--filter-line);
}

.lingxyh-filter-drawer .filter-close {
	width: 32px;
	height: 32px;
	padding: 0;
	border: 0;
	border-radius: 8px;
	background: #eee;
	cursor: pointer;
}

.lingxyh-filter-drawer .filter-drawer-body {
	flex: 1;
	overflow: auto;
	padding: 12px;
}

.lingxyh-filter-drawer .filter-drawer-foot {
	display: flex;
	gap: 8px;
	padding: 12px;
	border-top: 1px solid var(--filter-line);
}

.lingxyh-filter-drawer .filter-category-foot .lingxyh-btn {
	flex: 1;
}

.lingxyh-filter-drawer .filter-category-current {
	padding: 10px 14px;
	border-bottom: 1px solid var(--filter-line);
	background: rgb(245 247 250 / 90%);
	font-size: 12px;
}

.lingxyh-filter-drawer .filter-category-current p {
	margin: 5px 0 0;
	color: var(--filter-muted);
	font-size: 11px;
}

.lingxyh-filter-drawer #categoryCurrentText {
	color: #c33;
	font-weight: 700;
}

/* 分类 */
.lingxyh-filter-drawer .filter-category-mode + .filter-category-mode {
	margin-top: 14px;
}

.lingxyh-filter-drawer .filter-category-title {
	margin: 0 0 7px;
	font-size: 12px;
	color: #59626e;
}

.lingxyh-filter-drawer .filter-category-root {
	border: 1px solid var(--filter-line);
	border-radius: 10px;
	overflow: hidden;
}

.lingxyh-filter-drawer .filter-category-root + .filter-category-root {
	margin-top: 8px;
}

.lingxyh-filter-drawer .filter-category-root.has-selected-child > .filter-category-head {
	border-left: 3px solid var(--filter-red);
}

.lingxyh-filter-drawer .filter-category-head {
	display: flex;
	min-height: 40px;
	background: rgb(255 255 255 / 55%);
}

.lingxyh-filter-drawer .filter-category-select {
	flex: 1;
	min-width: 0;
	padding: 0 10px;
	border: 0;
	background: transparent;
	text-align: left;
	cursor: pointer;
}

.lingxyh-filter-drawer .filter-category-select:hover,
.lingxyh-filter-drawer .filter-category-select.is-selected,
.lingxyh-filter-drawer .filter-category-leaf:hover,
.lingxyh-filter-drawer .filter-category-leaf.is-selected {
	background: var(--filter-red);
	color: #fff;
}

.lingxyh-filter-drawer .filter-category-fold {
	flex: 0 0 38px;
	border: 0;
	border-left: 1px solid var(--filter-line);
	background: transparent;
	cursor: pointer;
}

.lingxyh-filter-drawer .filter-category-body {
	padding: 8px;
	border-top: 1px solid var(--filter-line);
}

.lingxyh-filter-drawer .filter-category-sub {
	border: 1px solid var(--filter-line);
	border-radius: 8px;
	overflow: hidden;
}

.lingxyh-filter-drawer .filter-category-sub + .filter-category-sub {
	margin-top: 6px;
}

.lingxyh-filter-drawer .filter-category-sub .filter-category-head {
	min-height: 35px;
	background: transparent;
}

.lingxyh-filter-drawer .filter-category-leaves {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	padding: 8px 9px 9px;
	border-top: 1px solid var(--filter-line);
}

.lingxyh-filter-drawer .filter-category-leaf {
	min-height: 30px;
	padding: 0 10px;
	border: 1px solid var(--filter-line);
	border-radius: 8px;
	background: rgb(255 255 255 / 65%);
	cursor: pointer;
}

/* 预选 */
.lingxyh-filter-drawer .filter-preset-group {
	border: 1px solid var(--filter-line);
	border-radius: 10px;
	overflow: hidden;
}

.lingxyh-filter-drawer .filter-preset-group + .filter-preset-group {
	margin-top: 8px;
}

.lingxyh-filter-drawer .filter-preset-head {
	display: flex;
	align-items: center;
	justify-content: space-between;
	width: 100%;
	min-height: 40px;
	padding: 0 10px;
	border: 0;
	background: rgb(255 255 255 / 55%);
	cursor: pointer;
	font-weight: 700;
}

.lingxyh-filter-drawer .filter-preset-body {
	padding: 8px;
	border-top: 1px solid var(--filter-line);
}

.lingxyh-filter-drawer .filter-preset-card {
	width: 100%;
	padding: 10px;
	border: 1px solid var(--filter-line);
	border-radius: 9px;
	background: rgb(255 255 255 / 55%);
	text-align: left;
	cursor: pointer;
}

.lingxyh-filter-drawer .filter-preset-card + .filter-preset-card {
	margin-top: 7px;
}

.lingxyh-filter-drawer .filter-preset-card:hover {
	background: rgb(221 51 51 / 8%);
}

.lingxyh-filter-drawer .filter-preset-card h3,
.lingxyh-filter-drawer .filter-preset-card p {
	margin: 0;
}

.lingxyh-filter-drawer .filter-preset-card p {
	margin-top: 4px;
	font-size: 11px;
	color: var(--filter-muted);
}

.lingxyh-filter-drawer .filter-preset-card .filter-preset-combo {
	color: #9a4b50;
	font-size: 10px;
}

/* 书籍 */
.lingxyh-filter-drawer .filter-book-group + .filter-book-group {
	margin-top: 12px;
}

.lingxyh-filter-drawer .filter-book-letter {
	margin: 0 0 6px;
	padding-bottom: 5px;
	border-bottom: 1px solid var(--filter-line);
	color: #c33;
	font-size: 12px;
}

.lingxyh-filter-drawer .filter-bookpick {
	width: 100%;
	padding: 10px;
	border: 1px solid var(--filter-line);
	border-radius: 9px;
	background: rgb(255 255 255 / 55%);
	text-align: left;
	cursor: pointer;
}

.lingxyh-filter-drawer .filter-bookpick + .filter-bookpick {
	margin-top: 6px;
}

.lingxyh-filter-drawer .filter-bookpick:hover,
.lingxyh-filter-drawer .filter-bookpick.is-selected {
	background: var(--filter-red);
	border-color: var(--filter-red);
	color: #fff;
}

.lingxyh-filter-drawer .filter-bookpick h3,
.lingxyh-filter-drawer .filter-bookpick p {
	margin: 0;
}

.lingxyh-filter-drawer .filter-bookpick p {
	margin-top: 3px;
	font-size: 11px;
	color: var(--filter-muted);
}

.lingxyh-filter-drawer .filter-bookpick:hover p,
.lingxyh-filter-drawer .filter-bookpick.is-selected p {
	color: rgb(255 255 255 / 80%);
}

@media screen and (max-width: 1025px) {
	.lingxyh-filter-select {
		display: grid;
		grid-template-columns: 150px minmax(0, 1fr);
		gap: 10px;
	}

	.lingxyh-filter-select .filter-switch-mobile {
		display: block;
		margin: 0;
	}

	.lingxyh-filter-select .filter-switches {
		height: 100%;
	}

	.lingxyh-filter-select .lingxyh-filter-tags {
		margin: 0;
	}

	.lingxyh-filter-select:has(.lingxyh-filter-tags.is-hidden) {
		display: block;
	}

	.lingxyh-filter-select:has(.lingxyh-filter-tags.is-hidden) .filter-switches {
		grid-template-columns: repeat(4, minmax(0, 1fr));
	}

	.lingxyh-filter-list .filter-grid {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}
}

@media screen and (max-width: 600px) {
	.lingxyh-filter-select {
		grid-template-columns: 125px minmax(0, 1fr);
	}

	.lingxyh-filter-select:has(.lingxyh-filter-tags.is-hidden) .filter-switches {
		grid-template-columns: repeat(2, minmax(0, 1fr));
	}

	.lingxyh-filter-tags .filter-tag-pop {
		width: min(290px, calc(100vw - 40px));
	}

	.lingxyh-filter-status .filter-result-head {
		align-items: flex-start;
	}

	.lingxyh-filter-status .filter-group-search {
		max-width: 100%;
	}

	.lingxyh-filter-list .filter-grid {
		grid-template-columns: 1fr;
	}

	.lingxyh-filter-drawer {
		top: 8px;
		bottom: 8px;
		width: min(430px, calc(100vw - 16px));
	}

	.lingxyh-filter-drawer.filter-right {
		right: 8px;
	}

	.lingxyh-filter-drawer.filter-left {
		left: 8px;
	}
}