/**
 * 子比二次元登录页美化 - 前台弹窗样式 (ZAL v2.1.0)
 *
 * v2.4 说明：应“去毛玻璃”需求，全屏背景原图直出（零模糊）、卡片为半透明
 *           实色（微透出背景）、立绘图纯净清晰。
 *
 * v2.0 精准适配子比真实弹窗结构（对照 meirl.cn 参考站抓包确认）：
 *   #u_sign > .modal-dialog > .sign-content > .sign-img（左侧立绘，absolute + padding-right:40%）
 *                                  + .sign（右侧表单卡，zib-widget blur-bg）
 *   输入框：.line-form > .line-form-input + .scale-placeholder（浮动标签）+ .line-form-line
 *   按钮：.but.radius.jb-blue.signsubmit-loader（type=button，ajax 提交）
 *
 * 三条美化路径（JS 自动判定）：
 *   .zal-zibll —— 子比 sign 结构（弹窗 + user-sign 独立页）
 *   .zal-bs    —— Bootstrap .modal-content 通用结构（其它主题 / 旧结构兜底）
 *
 * 悬停动态：卡片 3D 倾斜（JS 控制 transform）+ 左侧立绘反向微视差。
 */

/* ===== 0. 变量 ===== */
body {
	--zal-accent: #4f8cff;
	--zal-accent-deep: #3d6ef7;
	--zal-accent-grad: linear-gradient(135deg, #5b8cff 0%, #3d6ef7 100%);
	--zal-accent-soft: rgba(79, 140, 255, 0.16);
	--zal-ink: #3b4a6b;
	--zal-ink-2: #8b96b3;
	--zal-line: rgba(160, 175, 210, 0.45);
	--zal-card-bg: rgba(255, 255, 255, 0.65);
}

/* ===== 1. 遮罩层：全屏清晰背景图（登录弹窗打开时）=====
 * v2.4 说明：应“背景不要毛玻璃”需求，背景图原图直出（零模糊），
 * 仅叠一层极轻暗化渐变防止背景过亮影响前景阅读。 */
body.zal-modal-active .modal-backdrop {
	background: transparent !important;
	opacity: 1 !important;
}
body.zal-modal-active .modal-backdrop::before {
	content: "";
	position: absolute;
	inset: -42px;
	background-image: var(--zal-bg-image, linear-gradient(160deg, #ffe3c2 0%, #ffd1d8 26%, #c9d8ff 62%, #aee3ff 100%));
	background-size: cover;
	background-position: center center;
	background-repeat: no-repeat;
}
/* 极轻暗化，保持背景清晰明亮的同时保证前景对比 */
body.zal-modal-active .modal-backdrop::after {
	content: "";
	position: absolute;
	inset: 0;
	background: linear-gradient(160deg, rgba(255, 245, 230, 0.03) 0%, rgba(24, 34, 64, 0.08) 55%, rgba(24, 34, 64, 0.16) 100%);
}
body.zal-sign-page {
	background-color: #9db9f2 !important;
	background-image: var(--zal-bg-image, linear-gradient(160deg, #ffe3c2 0%, #ffd1d8 26%, #c9d8ff 62%, #aee3ff 100%)) !important;
	background-size: cover !important;
	background-position: center center !important;
	background-repeat: no-repeat !important;
	background-attachment: fixed !important;
}

/* ===== 2. 子比结构路径：u_sign 弹窗（重点）===== */

/* 2.1 弹窗尺寸 */
.modal.zal-modal-ok.zal-zibll .modal-dialog {
	width: min(880px, calc(100vw - 32px)) !important;
	max-width: calc(100vw - 32px) !important;
	margin: 6vh auto !important;
}

/* 2.2 整体卡片：半透明白 + 大圆角 + 光晕（v2.4 去毛玻璃，微透出背景）*/
.modal.zal-modal-ok.zal-zibll .sign-content,
.zal-page-sign.zal-zibll.sign-content {
	position: relative;
	padding: 0 !important;
	border-radius: 26px;
	border: 1px solid rgba(255, 255, 255, 0.85) !important;
	background: var(--zal-card-bg) !important;
	box-shadow:
		inset 0 1px 0 rgba(255, 255, 255, 0.9),
		0 24px 70px rgba(20, 30, 90, 0.42) !important;
	overflow: hidden;
	transition: transform 0.35s cubic-bezier(0.22, 0.9, 0.36, 1);
	will-change: transform;
}
/* 悬停倾斜进行中：快速跟随；离开后用上面的慢速回正 */
.modal.zal-modal-ok.zal-zibll .sign-content.zal-tilting {
	transition-duration: 0.08s;
}

/* 2.3 左侧立绘区 */
.modal.zal-modal-ok.zal-zibll .sign-img {
	position: absolute !important;
	left: 0 !important;
	top: 0 !important;
	bottom: 0 !important;
	width: 40% !important;
	padding: 0 !important;
	z-index: 0;
	overflow: hidden;
	transition: transform 0.45s cubic-bezier(0.22, 0.9, 0.36, 1);
	will-change: transform;
}
/* 插件图层：超界填充，视差位移不露边 */
.modal.zal-modal-ok.zal-zibll .sign-img::after {
	content: "";
	position: absolute;
	top: -14px;
	bottom: -14px;
	left: -14px;
	right: -14px;
	z-index: 2;
	background-image: var(--zal-side-image, none);
	background-size: cover;
	background-position: center top;
	background-repeat: no-repeat;
	pointer-events: none;
}
/* 子比原生图：插件配置了左图时隐藏，未配置时正常显示（body.zal-side-on 控制） */
body.zal-side-on .modal.zal-modal-ok.zal-zibll .sign-img img {
	opacity: 0 !important;
}
/* 插件注入的立绘容器：无图时显示二次元渐变兜底 */
.modal.zal-modal-ok.zal-zibll .sign-img.zal-sign-img::after {
	background-image: var(--zal-side-image, linear-gradient(160deg, #ffd9e8 0%, #e3d6ff 42%, #cdd9ff 68%, #bce4ff 100%));
}
/* 立绘区与表单区直切衔接（v2.5：应用户要求去除渐隐过渡层，立绘必须显示原图，
 * 与参考站 meirl.cn 的硬切衔接一致）；卡片更透（65% 白），透出背景。 */

/* 2.4 右侧表单区：透明化，与整体卡一体 */
.modal.zal-modal-ok.zal-zibll .sign,
.zal-page-sign.zal-zibll .sign {
	position: relative;
	z-index: 2;
	margin-left: 45% !important;
	margin-right: 0 !important;
	max-width: unset !important;
	padding: 26px 34px 24px !important;
	background: transparent !important;
	box-shadow: none !important;
	border-radius: 0 !important;
	min-height: 500px;
	display: flex;
	flex-direction: column;
	justify-content: center;
}
/* user-sign 独立页时保持原始布局由页面控制 */
.zal-page-sign.zal-zibll .sign {
	margin-left: 0 !important;
	min-height: 0;
}

/* 2.5 关闭按钮：圆形毛玻璃，绝对定位右上角（flex 布局下不受影响）*/
.modal.zal-modal-ok.zal-zibll .close {
	position: absolute !important;
	top: 12px !important;
	right: 12px !important;
	z-index: 6;
	float: none !important;
	width: 36px !important;
	height: 36px !important;
	margin: 0 !important;
	padding: 0 !important;
	border: 1px solid rgba(255, 255, 255, 0.9) !important;
	border-radius: 50% !important;
	background: rgba(255, 255, 255, 0.92) !important;
	box-shadow: 0 4px 14px rgba(120, 140, 200, 0.32) !important;
	opacity: 1 !important;
	text-shadow: none !important;
	cursor: pointer;
	display: flex;
	align-items: center;
	justify-content: center;
	transition: transform 0.22s, background 0.22s;
}
.modal.zal-modal-ok.zal-zibll .close svg,
.modal.zal-modal-ok.zal-zibll .close i {
	width: 16px;
	height: 16px;
	color: #6a7694 !important;
	margin: 0 !important;
}
.modal.zal-modal-ok.zal-zibll .close span,
.modal.zal-modal-ok.zal-zibll .close i {
	font-size: 18px !important;
	line-height: 34px !important;
	color: #6a7694 !important;
}
@media (hover: hover) {
	.modal.zal-modal-ok.zal-zibll .close:hover {
		transform: rotate(90deg) scale(1.08);
		background: rgba(255, 214, 224, 0.92) !important;
		opacity: 1 !important;
	}
	.modal.zal-modal-ok.zal-zibll .close:hover svg,
	.modal.zal-modal-ok.zal-zibll .close:hover span,
	.modal.zal-modal-ok.zal-zibll .close:hover i {
		color: #d96483 !important;
	}
}

/* 2.6 logo 与标题 */
.modal.zal-modal-ok.zal-zibll .sign-logo img {
	max-width: 150px !important;
	max-height: 46px !important;
}
.modal.zal-modal-ok.zal-zibll .title-h-left,
.zal-page-sign.zal-zibll .title-h-left {
	font-size: 21px !important;
	font-weight: 800 !important;
	color: var(--zal-ink) !important;
	letter-spacing: 0.5px;
	margin: 6px 0 !important;
}
/* 隐藏子比主题色装饰短线（不同站点主题色各异，弹窗内统一去除更干净）*/
.modal.zal-modal-ok.zal-zibll .title-h-left:before,
.zal-page-sign.zal-zibll .title-h-left:before {
	display: none !important;
}
/* 标题与引导链接居中，对齐参考站 */
.modal.zal-modal-ok.zal-zibll .box-body,
.zal-page-sign.zal-zibll .box-body {
	text-align: center;
}
.modal.zal-modal-ok.zal-zibll .title-h-left a,
.modal.zal-modal-ok.zal-zibll .title-h-left ~ a {
	font-size: 12.5px;
	color: var(--zal-ink-2) !important;
}
.modal.zal-modal-ok.zal-zibll .title-h-left a:hover,
.modal.zal-modal-ok.zal-zibll .title-h-left ~ a:hover {
	color: var(--zal-accent-deep) !important;
}

/* 2.7 line-form 输入框 → 参考图圆角输入框 + 前置图标
 * 仅美化 .line-form.zal-if（JS 判断含输入框的行），
 * 子比「记住登录」行也在 .line-form 内，避免误伤导致排版错乱。 */
.modal.zal-modal-ok.zal-zibll .line-form.zal-if,
.zal-page-sign.zal-zibll .line-form.zal-if {
	position: relative;
	margin: 0 0 14px !important;
	padding: 0 !important;
	height: 46px;
	border: 1px solid var(--zal-line) !important;
	border-radius: 13px !important;
	background: #ffffff !important;
	box-shadow: 0 2px 8px rgba(120, 140, 200, 0.12) !important;
	transition: border-color 0.22s, box-shadow 0.22s, background 0.22s;
}
.modal.zal-modal-ok.zal-zibll .line-form.zal-if:focus-within,
.zal-page-sign.zal-zibll .line-form.zal-if:focus-within {
	border-color: var(--zal-accent) !important;
	background: #ffffff !important;
	box-shadow: 0 0 0 4px var(--zal-accent-soft), 0 2px 10px rgba(63, 110, 242, 0.18) !important;
}
/* 输入框本体 */
.modal.zal-modal-ok.zal-zibll .line-form.zal-if .line-form-input,
.modal.zal-modal-ok.zal-zibll .line-form.zal-if input,
.zal-page-sign.zal-zibll .line-form.zal-if .line-form-input,
.zal-page-sign.zal-zibll .line-form.zal-if input {
	display: block;
	width: 100%;
	height: 44px;
	margin: 0 !important;
	padding: 0 14px !important;
	border: none !important;
	outline: 0 !important;
	background: transparent !important;
	box-shadow: none !important;
	color: var(--zal-ink) !important;
	font-size: 15px !important;
	opacity: 1 !important;
	box-sizing: border-box;
}
.modal.zal-modal-ok.zal-zibll .line-form.zal-if input::placeholder {
	color: #aab3c9 !important;
	opacity: 1 !important;
}
/* 隐藏子比浮动标签与下划线 */
.modal.zal-modal-ok.zal-zibll .scale-placeholder,
.modal.zal-modal-ok.zal-zibll .line-form-line,
.zal-page-sign.zal-zibll .scale-placeholder,
.zal-page-sign.zal-zibll .line-form-line {
	display: none !important;
}
/* 右侧内嵌元素（眼睛 / 发送验证码）：保持子比定位，仅统一样式 */
.modal.zal-modal-ok.zal-zibll .line-form.zal-if .abs-right,
.zal-page-sign.zal-zibll .line-form.zal-if .abs-right {
	margin-top: 0 !important;
	top: 50% !important;
	transform: translateY(-50%);
	z-index: 3;
}
.modal.zal-modal-ok.zal-zibll .line-form.zal-if input[type="text"],
.modal.zal-modal-ok.zal-zibll .line-form.zal-if input[type="password"],
.modal.zal-modal-ok.zal-zibll .line-form.zal-if input[type="email"] {
	padding-right: 5em !important;
}

/* 前置图标（JS 标记 .zal-f-box / .zal-f-user / .zal-f-pass / .zal-f-mail）*/
.modal.zal-modal-ok.zal-zibll .zal-f-box::before,
.zal-page-sign.zal-zibll .zal-f-box::before {
	content: "";
	position: absolute;
	left: 14px;
	top: 50%;
	width: 18px;
	height: 18px;
	transform: translateY(-50%);
	z-index: 3;
	pointer-events: none;
	background-repeat: no-repeat;
	background-position: center;
	background-size: contain;
	opacity: 0.75;
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%238b96b3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M20 21v-2a4 4 0 0 0-4-4H8a4 4 0 0 0-4 4v2'/%3E%3Ccircle cx='12' cy='7' r='4'/%3E%3C/svg%3E");
}
.modal.zal-modal-ok.zal-zibll .zal-f-box.zal-f-pass::before,
.zal-page-sign.zal-zibll .zal-f-box.zal-f-pass::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%238b96b3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='3' y='11' width='18' height='11' rx='2' ry='2'/%3E%3Cpath d='M7 11V7a5 5 0 0 1 10 0v4'/%3E%3C/svg%3E");
}
.modal.zal-modal-ok.zal-zibll .zal-f-box.zal-f-mail::before,
.zal-page-sign.zal-zibll .zal-f-box.zal-f-mail::before {
	background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='%238b96b3' stroke-width='2' stroke-linecap='round' stroke-linejoin='round'%3E%3Crect x='2' y='4' width='20' height='16' rx='2'/%3E%3Cpath d='m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7'/%3E%3C/svg%3E");
}
/* 前置图标行的文字留白：高特异性确保压过基础 padding 规则，
 * 否则图标会叠在占位文字上（v2.1 的“田户名或邮箱”问题根因）*/
.modal.zal-modal-ok.zal-zibll .line-form.zal-if.zal-f-box input,
.zal-page-sign.zal-zibll .line-form.zal-if.zal-f-box input {
	padding-left: 44px !important;
}
.modal.zal-modal-ok.zal-zibll .form-group.zal-f-box input,
.modal.zal-modal-ok.zal-zibll .input-group.zal-f-box input,
.zal-page-sign.zal-zibll .form-group.zal-f-box input {
	padding-left: 44px !important;
}

/* 2.8 勾选框 / 链接 */
.modal.zal-modal-ok.zal-zibll .form-checkbox,
.zal-page-sign.zal-zibll .form-checkbox {
	display: inline-flex;
	align-items: center;
	gap: 7px;
	color: var(--zal-ink-2) !important;
	font-size: 13px;
}
.modal.zal-modal-ok.zal-zibll input[type="checkbox"] {
	width: 16px;
	height: 16px;
	accent-color: var(--zal-accent);
	cursor: pointer;
}
.modal.zal-modal-ok.zal-zibll .sign a,
.zal-page-sign.zal-zibll .sign a {
	color: var(--zal-accent-deep) !important;
	text-decoration: none !important;
	transition: color 0.2s;
}
.modal.zal-modal-ok.zal-zibll .sign a:hover,
.zal-page-sign.zal-zibll .sign a:hover {
	color: var(--zal-accent) !important;
}

/* 2.9 登录 / 注册按钮（子比 .signsubmit-loader，type=button ajax）*/
.modal.zal-modal-ok.zal-zibll .signsubmit-loader,
.modal.zal-modal-ok.zal-zibll .but.jb-blue,
.zal-page-sign.zal-zibll .signsubmit-loader {
	height: 46px !important;
	padding: 0 22px !important;
	border: none !important;
	border-radius: 13px !important;
	background: var(--zal-accent-grad) !important;
	box-shadow: 0 10px 24px rgba(63, 110, 242, 0.35) !important;
	color: #fff !important;
	font-size: 15.5px !important;
	font-weight: 700 !important;
	letter-spacing: 2px;
	text-shadow: none !important;
	cursor: pointer;
	transition: transform 0.16s, box-shadow 0.16s, filter 0.16s;
}
@media (hover: hover) {
	.modal.zal-modal-ok.zal-zibll .signsubmit-loader:hover,
	.modal.zal-modal-ok.zal-zibll .but.jb-blue:hover,
	.zal-page-sign.zal-zibll .signsubmit-loader:hover {
		transform: translateY(-2px);
		box-shadow: 0 14px 30px rgba(63, 110, 242, 0.45) !important;
		filter: saturate(1.12);
		color: #fff !important;
	}
}

/* 2.10 社交登录（子比自带圆形小钮，放大并强化反馈）*/
.modal.zal-modal-ok.zal-zibll .social-separator,
.zal-page-sign.zal-zibll .social-separator {
	color: #a6b0c8 !important;
	font-size: 12px !important;
	letter-spacing: 1px;
}
.modal.zal-modal-ok.zal-zibll .social_loginbar,
.zal-page-sign.zal-zibll .social_loginbar {
	display: flex;
	justify-content: center;
	gap: 8px;
	margin-top: 14px;
}
.modal.zal-modal-ok.zal-zibll .social-login-item,
.zal-page-sign.zal-zibll .social-login-item {
	width: 40px !important;
	height: 40px !important;
	line-height: 40px !important;
	font-size: 19px !important;
	border-radius: 50% !important;
	box-shadow: 0 6px 16px rgba(120, 140, 200, 0.3);
	transition: transform 0.18s, box-shadow 0.18s;
}
@media (hover: hover) {
	.modal.zal-modal-ok.zal-zibll .social-login-item:hover,
	.zal-page-sign.zal-zibll .social-login-item:hover {
		transform: translateY(-3px) scale(1.05);
		box-shadow: 0 10px 22px rgba(120, 140, 200, 0.4);
	}
}

/* 2.11 弹窗内提示 / 错误（ajax 返回提示）*/
.modal.zal-modal-ok.zal-zibll .alert,
.modal.zal-modal-ok.zal-zibll .error-tips,
.modal.zal-modal-ok.zal-zibll .modal-body .tips {
	border: none !important;
	border-left: 4px solid #ff8f8f !important;
	border-radius: 12px !important;
	background: rgba(255, 238, 238, 0.92) !important;
	color: #b04141 !important;
	font-size: 13px !important;
	box-shadow: 0 6px 18px rgba(255, 120, 120, 0.16) !important;
}

/* ===== 3. 粒子层 =====
 * v2.5：应“立绘必须显示原图”要求，弹窗内不再注入任何装饰粒子，
 * 左侧立绘区 100% 纯净原图展示。 */

/* ===== 4. 下弹跳入场动画（后台开关控制）===== */
body.zal-anim-on .modal.zal-modal-ok.in .modal-dialog {
	animation: zal-modal-bounce-up 0.9s cubic-bezier(0.22, 0.9, 0.36, 1) both;
}
@keyframes zal-modal-bounce-up {
	0% {
		opacity: 0;
		transform: translate3d(0, 40vh, 0) scale(0.94);
	}
	52% {
		opacity: 1;
		transform: translate3d(0, -22px, 0) scale(1.01);
	}
	70% {
		transform: translate3d(0, 12px, 0) scale(1);
	}
	84% {
		transform: translate3d(0, -7px, 0) scale(1);
	}
	94% {
		transform: translate3d(0, 3px, 0) scale(1);
	}
	100% {
		opacity: 1;
		transform: translate3d(0, 0, 0) scale(1);
	}
}

/* ===== 5. Bootstrap 通用结构路径（zal-bs：其它主题 / 旧结构兜底）===== */
.modal.zal-modal-ok.zal-bs .modal-dialog {
	width: min(840px, calc(100vw - 32px));
	margin: 7vh auto;
	max-width: calc(100vw - 32px);
}
.modal.zal-modal-ok.zal-bs .modal-content {
	position: relative;
	min-height: 430px;
	padding-left: 42% !important;
	border: 1px solid rgba(255, 255, 255, 0.85) !important;
	border-radius: 24px !important;
	background: var(--zal-card-bg) !important;
	box-shadow:
		inset 0 1px 0 rgba(255, 255, 255, 0.9),
		0 24px 70px rgba(20, 30, 90, 0.42) !important;
	overflow: hidden;
	box-sizing: border-box;
	transition: transform 0.35s cubic-bezier(0.22, 0.9, 0.36, 1);
}
.modal.zal-modal-ok.zal-bs .modal-content.zal-tilting {
	transition-duration: 0.08s;
}
.modal.zal-modal-ok.zal-bs .modal-content::before {
	content: "";
	position: absolute;
	left: 0;
	top: 0;
	bottom: 0;
	width: 42%;
	z-index: 0;
	background-image:
		radial-gradient(circle at 22% 14%, rgba(255, 255, 255, 0.5) 0%, rgba(255, 255, 255, 0) 48%),
		var(--zal-side-image, none),
		linear-gradient(160deg, #ffd9e8 0%, #e3d6ff 42%, #cdd9ff 68%, #bce4ff 100%);
	background-size: cover;
	background-position: center top;
	background-repeat: no-repeat;
	pointer-events: none;
}
/* v2.5：立绘区直切衔接，无渐隐层（立绘必须显示原图） */
.modal.zal-modal-ok.zal-bs .modal-header,
.modal.zal-modal-ok.zal-bs .modal-body,
.modal.zal-modal-ok.zal-bs .modal-footer,
.modal.zal-modal-ok.zal-bs form,
.modal.zal-modal-ok.zal-bs .modal-content > *:not(.zal-m-particles) {
	position: relative;
	z-index: 2;
}
/* 通用路径输入框 / 按钮 / 关闭钮 */
.modal.zal-modal-ok.zal-bs input.form-control,
.modal.zal-modal-ok.zal-bs input[type="text"],
.modal.zal-modal-ok.zal-bs input[type="email"],
.modal.zal-modal-ok.zal-bs input[type="tel"],
.modal.zal-modal-ok.zal-bs input[type="password"],
.modal.zal-modal-ok.zal-bs select.form-control {
	width: 100%;
	height: 46px !important;
	padding: 0 14px !important;
	border: 1px solid var(--zal-line) !important;
	border-radius: 13px !important;
	background: #ffffff !important;
	box-shadow: 0 2px 8px rgba(120, 140, 200, 0.12) !important;
	color: var(--zal-ink) !important;
	font-size: 15px !important;
	box-sizing: border-box;
	transition: border-color 0.22s, box-shadow 0.22s, background 0.22s;
}
.modal.zal-modal-ok.zal-bs input:focus {
	outline: none !important;
	border-color: var(--zal-accent) !important;
	background: #ffffff !important;
	box-shadow: 0 0 0 4px var(--zal-accent-soft), 0 2px 10px rgba(63, 110, 242, 0.18) !important;
}
.modal.zal-modal-ok.zal-bs button[type="submit"],
.modal.zal-modal-ok.zal-bs input[type="submit"],
.modal.zal-modal-ok.zal-bs .btn-primary {
	height: 46px !important;
	padding: 0 22px !important;
	border: none !important;
	border-radius: 13px !important;
	background: var(--zal-accent-grad) !important;
	box-shadow: 0 10px 24px rgba(63, 110, 242, 0.35) !important;
	color: #fff !important;
	font-size: 15.5px !important;
	font-weight: 700 !important;
	letter-spacing: 2px;
	cursor: pointer;
	transition: transform 0.16s, box-shadow 0.16s;
}
@media (hover: hover) {
	.modal.zal-modal-ok.zal-bs button[type="submit"]:hover,
	.modal.zal-modal-ok.zal-bs .btn-primary:hover {
		transform: translateY(-2px);
		box-shadow: 0 14px 30px rgba(63, 110, 242, 0.45) !important;
		color: #fff !important;
	}
}
.modal.zal-modal-ok.zal-bs .close,
.modal.zal-modal-ok.zal-bs [data-dismiss="modal"] {
	position: relative;
	z-index: 5;
	width: 36px !important;
	height: 36px !important;
	margin: 10px !important;
	border: 1px solid rgba(255, 255, 255, 0.9) !important;
	border-radius: 50% !important;
	background: rgba(255, 255, 255, 0.62) !important;
	box-shadow: 0 4px 14px rgba(120, 140, 200, 0.32) !important;
	color: #6a7694 !important;
	font-size: 19px !important;
	line-height: 34px !important;
	text-align: center;
	opacity: 1 !important;
	cursor: pointer;
	transition: transform 0.22s, background 0.22s;
}
.modal.zal-modal-ok.zal-bs .close:hover {
	transform: rotate(90deg) scale(1.08);
	background: rgba(255, 214, 224, 0.92) !important;
}
/* v2.5：弹窗内不再注入粒子，此块仅作兼容保留空位 */

/* ===== 6. 降级（v2.4 已全面去除毛玻璃，卡片为半透明实色，无需兼容降级） ===== */

/* ===== 7. 多端适配（子比结构：手机端立绘变顶部横幅）===== */
@media (max-width: 767px) {
	.modal.zal-modal-ok.zal-zibll .modal-dialog {
		width: calc(100vw - 24px) !important;
		max-width: calc(100vw - 24px) !important;
		margin: 4vh auto !important;
	}
	.modal.zal-modal-ok.zal-zibll .sign-content,
	.zal-page-sign.zal-zibll.sign-content {
		border-radius: 20px;
	}
	.modal.zal-modal-ok.zal-zibll .sign-img {
		position: relative !important;
		width: 100% !important;
		height: 130px !important;
	}
	/* 子比原生可能用 hide-sm 隐藏立绘 → 恢复为顶部横幅展示 */
	.modal.zal-modal-ok.zal-zibll .sign-img.hide-sm {
		display: block !important;
	}
	.modal.zal-modal-ok.zal-zibll .sign-img::after {
		background-position: center 20%;
	}
	.modal.zal-modal-ok.zal-zibll .sign {
		margin-left: 0 !important;
		padding: 22px 22px 18px !important;
		min-height: 0;
	}
	/* v2.5：去除立绘底部渐隐，手机端立绘同样纯净原图 */
	.modal.zal-modal-ok.zal-zibll .close {
		width: 32px !important;
		height: 32px !important;
		top: 8px !important;
		right: 8px !important;
	}
	.modal.zal-modal-ok.zal-bs .modal-content {
		padding-left: 0 !important;
		padding-top: 128px !important;
		min-height: 0;
	}
	.modal.zal-modal-ok.zal-bs .modal-content::before {
		width: 100%;
		bottom: auto;
		height: 128px;
	}
	/* v2.5：立绘直切，无渐隐层 */
}
@media (max-width: 400px) {
	.modal.zal-modal-ok.zal-zibll .sign-img {
		height: 106px !important;
	}
	.modal.zal-modal-ok.zal-bs .modal-content {
		padding-top: 104px !important;
	}
	.modal.zal-modal-ok.zal-bs .modal-content::before {
		height: 104px;
	}
}
@media (max-height: 560px) {
	.modal.zal-modal-ok.zal-zibll .modal-dialog {
		margin: 2vh auto !important;
	}
	.modal.zal-modal-ok.zal-zibll .sign {
		min-height: 0;
	}
}

/* ===== 8. 无障碍：减少动态效果偏好 ===== */
@media (prefers-reduced-motion: reduce) {
	body.zal-anim-on .modal.zal-modal-ok.in .modal-dialog {
		animation: none;
	}
	.modal.zal-modal-ok.zal-zibll .sign-content,
	.modal.zal-modal-ok.zal-zibll .sign-img,
	.modal.zal-modal-ok.zal-bs .modal-content {
		transition: none;
	}
}
