/**
 * Standup 管理后台 · 登录页样式
 * 与 templates/login.html 配套（左侧品牌区 + 右侧登录表单）。
 *
 * 兼容性策略：
 * 1. 设计令牌集中在 :root，规则采用「字面量兜底 + var() 增强」双声明，
 *    老内核（360 兼容模式 / IE11）丢弃 var() 声明后仍回退到字面量，页面不破。
 * 2. 复杂背景（多层渐变、阴影）直接写字面量，避免 var() 失效导致整条声明被丢弃。
 * 3. standup-ui.css 在本文件之后加载，校验错误样式通过更高选择器特异性覆盖：
 *    .form-field label.error (0,2,1) > label.error (0,1,1)
 *    .form-field input.error (0,2,1) > input.error (0,1,1)
 *
 * 注意：register.html 也引用 login.min.css，其旧版 .signinpanel 结构不由本文件负责，
 * 本文件仅保证 body.signin 基础样式不回归。
 */

/* ============ 设计令牌 ============ */
:root {
	/* 品牌与基底 */
	--seed-bg: #e9f6f1;
	--seed-surface: #ffffff;
	--seed-fg: #22313c;
	--seed-primary: #1ab394;
	--seed-accent: #7ce8cb;
	/* 语义色 */
	--fg: #22313c;
	--fg-muted: #5b676f;
	--fg-faint: #979ea3;
	--border: #e2e4e6;
	--field-bg: #f6fcfb;
	--primary: #1ab394;
	--primary-ink: #127a65;
	--primary-check: #158f76;
	--ring: rgba(26, 179, 148, 0.22);
	--aside-a: #11735f;
	--aside-b: #0a483b;
	--btn-from: #106f5c;
	--btn-to: #0a4438;
	--btn-shadow: rgba(26, 179, 148, 0.42);
	--danger: #d64550;
	--danger-bg: #fcf2f3;
	--danger-ring: rgba(214, 69, 80, 0.18);
	--spark: #f2bd45;
	/* 圆角与间距 */
	--radius-card: 22px;
	--radius-ctrl: 11px;
	--radius-chip: 13px;
	--sp-1: 8px;
	--sp-2: 16px;
	--sp-3: 24px;
	--sp-4: 40px;
	/* 字体与阴影 */
	--font-body: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
	--shadow-card: 0 24px 70px rgba(32, 78, 79, 0.42);
}

/* ============ 基础 ============ */
*,
*::before,
*::after {
	box-sizing: border-box;
}

html, body.signin {
	height: 100%;
	margin: 0;
}

body.signin {
	font-family: "PingFang SC", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
	font-family: var(--font-body);
	color: #22313c;
	color: var(--fg);
	min-height: 100vh;
	min-height: 100svh;
	display: -webkit-flex;
	display: flex;
	-webkit-align-items: center;
	align-items: center;
	-webkit-justify-content: center;
	justify-content: center;
	padding: 28px 16px;
	padding: calc(var(--sp-3) + 4px) var(--sp-2);
	overflow-x: hidden;
	overflow-y: auto;
	background-color: #127a65;
	background-image:
		radial-gradient(640px 520px at 12% -6%, rgba(124, 232, 203, 0.46), rgba(124, 232, 203, 0) 68%),
		radial-gradient(720px 620px at 96% 108%, rgba(124, 232, 203, 0.46), rgba(124, 232, 203, 0) 70%),
		linear-gradient(142deg, #127a65 0%, #1ab394 50%, #49ccae 100%);
	background-attachment: fixed;
	-webkit-font-smoothing: antialiased;
}

/* ============ 卡片容器 ============ */
.signin-shell {
	position: relative;
	z-index: 1;
	display: -webkit-flex;
	display: flex;
	width: 940px;
	max-width: 100%;
	min-height: 600px;
	background: #fff;
	background: var(--seed-surface);
	border-radius: 22px;
	border-radius: var(--radius-card);
	overflow: hidden;
	box-shadow: 0 24px 70px rgba(32, 78, 79, 0.42);
	box-shadow: var(--shadow-card);
	-webkit-animation: shellIn 0.55s cubic-bezier(0.22, 0.9, 0.3, 1) both;
	animation: shellIn 0.55s cubic-bezier(0.22, 0.9, 0.3, 1) both;
}

@keyframes shellIn {
	from {
		opacity: 0;
		-webkit-transform: translateY(22px) scale(0.99);
		transform: translateY(22px) scale(0.99);
	}
	to {
		opacity: 1;
		-webkit-transform: translateY(0) scale(1);
		transform: translateY(0) scale(1);
	}
}

/* ============ 左侧品牌区 ============ */
.signin-aside {
	width: 44%;
	padding: 40px 32px 28px;
	padding: var(--sp-4) calc(var(--sp-3) + 8px) calc(var(--sp-3) + 4px);
	color: #fff;
	display: -webkit-flex;
	display: flex;
	-webkit-flex-direction: column;
	flex-direction: column;
	-webkit-align-items: center;
	align-items: center;
	text-align: center;
	position: relative;
	overflow: hidden;
	background: linear-gradient(168deg, #11735f 0%, #0a483b 100%);
	background: linear-gradient(168deg, var(--aside-a) 0%, var(--aside-b) 100%);
}

.signin-aside::before {
	content: "";
	position: absolute;
	top: 0;
	right: 0;
	bottom: 0;
	left: 0;
	background: radial-gradient(320px 260px at 50% 8%, rgba(124, 232, 203, 0.26), rgba(124, 232, 203, 0) 72%);
	pointer-events: none;
}

.aside-hero {
	position: relative;
	width: 178px;
	height: 178px;
	margin: 2px 0 18px;
	margin: 2px 0 calc(var(--sp-2) + 2px);
	display: -webkit-flex;
	display: flex;
	-webkit-align-items: center;
	align-items: center;
	-webkit-justify-content: center;
	justify-content: center;
}

.aside-glow {
	position: absolute;
	top: -26px;
	right: -26px;
	bottom: -26px;
	left: -26px;
	border-radius: 50%;
	background: radial-gradient(circle, rgba(255, 255, 255, 0.3) 0%, rgba(255, 255, 255, 0.1) 46%, rgba(255, 255, 255, 0) 72%);
}

.aside-sparks {
	position: absolute;
	top: -16px;
	left: 50%;
	-webkit-transform: translateX(-50%);
	transform: translateX(-50%);
	display: -webkit-flex;
	display: flex;
	z-index: 2;
}

.aside-sparks i {
	display: block;
	width: 3.5px;
	border-radius: 3px;
	background: #f2bd45;
	background: var(--spark);
	opacity: 0.95;
}

.aside-sparks i + i {
	margin-left: 9px;
}

.aside-sparks i:nth-child(1) {
	height: 11px;
	-webkit-transform: rotate(-24deg);
	transform: rotate(-24deg);
}

.aside-sparks i:nth-child(2) {
	height: 16px;
}

.aside-sparks i:nth-child(3) {
	height: 11px;
	-webkit-transform: rotate(24deg);
	transform: rotate(24deg);
}

.aside-medal {
	position: relative;
	z-index: 1;
	width: 164px;
	height: 164px;
	border-radius: 50%;
	overflow: hidden;
	border: 1px solid rgba(255, 255, 255, 0.46);
	box-shadow: 0 18px 34px rgba(10, 72, 59, 0.74), inset 0 0 0 5px rgba(255, 255, 255, 0.14);
	-webkit-animation: medalFloat 4.6s ease-in-out infinite;
	animation: medalFloat 4.6s ease-in-out infinite;
}

@keyframes medalFloat {
	0%, 100% {
		-webkit-transform: translateY(0);
		transform: translateY(0);
	}
	50% {
		-webkit-transform: translateY(-7px);
		transform: translateY(-7px);
	}
}

.aside-mascot {
	width: 100%;
	height: 100%;
	object-fit: cover;
	display: block;
}

.aside-name {
	margin: 2px 0 6px;
	font-size: 26px;
	font-weight: 600;
	letter-spacing: 0.08em;
	text-indent: 0.08em;
	color: #fff;
}

.aside-tag {
	margin: 0 0 22px;
	margin: 0 0 calc(var(--sp-3) - 2px);
	font-size: 12.5px;
	letter-spacing: 0.06em;
	color: rgba(255, 255, 255, 0.9);
}

.aside-features {
	list-style: none;
	margin: 0;
	padding: 0;
	width: 100%;
	display: -webkit-flex;
	display: flex;
	-webkit-flex-direction: column;
	flex-direction: column;
}

.aside-features li {
	display: -webkit-flex;
	display: flex;
	-webkit-align-items: center;
	align-items: center;
	text-align: left;
	padding: 11px 14px;
	padding: calc(var(--sp-1) + 3px) calc(var(--sp-2) - 2px);
	border-radius: 13px;
	border-radius: var(--radius-chip);
	background: rgba(10, 72, 59, 0.34);
	border: 1px solid rgba(255, 255, 255, 0.15);
	-webkit-transition: background 0.2s ease, -webkit-transform 0.2s ease;
	transition: background 0.2s ease, transform 0.2s ease;
}

.aside-features li + li {
	margin-top: 12px;
	margin-top: calc(var(--sp-2) - 4px);
}

.aside-features li:hover {
	background: rgba(10, 72, 59, 0.52);
	-webkit-transform: translateX(3px);
	transform: translateX(3px);
}

.feat-ic {
	-webkit-flex: 0 0 auto;
	flex: 0 0 auto;
	width: 34px;
	height: 34px;
	margin-right: 13px;
	display: -webkit-flex;
	display: flex;
	-webkit-align-items: center;
	align-items: center;
	-webkit-justify-content: center;
	justify-content: center;
	border-radius: 9px;
	border-radius: calc(var(--radius-chip) * 0.72);
	background: rgba(255, 255, 255, 0.15);
	color: #fff;
}

.feat-ic svg {
	width: 19px;
	height: 19px;
}

.aside-features strong {
	display: block;
	font-size: 14px;
	font-weight: 600;
	letter-spacing: 0.02em;
	margin-bottom: 1px;
	color: #fff;
}

.aside-features li span.desc {
	font-size: 12px;
	letter-spacing: 0.01em;
	color: rgba(255, 255, 255, 0.8);
}

.aside-foot-wrap {
	margin: auto 0 0;
	padding-top: 24px;
	padding-top: var(--sp-3);
	width: 100%;
}

.aside-foot {
	margin: 0;
	font-size: 12px;
	letter-spacing: 0.02em;
	color: rgba(255, 255, 255, 0.7);
}

/* ============ 右侧表单区 ============ */
.signin-main {
	-webkit-flex: 1;
	flex: 1;
	display: -webkit-flex;
	display: flex;
	-webkit-align-items: center;
	align-items: center;
	-webkit-justify-content: center;
	justify-content: center;
	padding: 40px 44px;
	padding: var(--sp-4) calc(var(--sp-4) + 4px);
}

.signin-panel {
	width: 100%;
	max-width: 346px;
}

.panel-head {
	text-align: center;
	margin-bottom: 26px;
	margin-bottom: calc(var(--sp-3) + 2px);
}

.panel-eyebrow {
	margin: 0 0 8px;
	font-size: 11px;
	font-weight: 600;
	text-transform: uppercase;
	letter-spacing: 0.14em;
	color: #1d8776;
}

.panel-title {
	margin: 0 0 5px;
	font-size: 23px;
	font-weight: 600;
	letter-spacing: 0.01em;
	color: #22313c;
	color: var(--fg);
}

.panel-sub {
	margin: 0;
	font-size: 13px;
	color: #5b676f;
	color: var(--fg-muted);
}

/* ============ 输入控件 ============ */
.form-field {
	position: relative;
	margin-bottom: 16px;
	margin-bottom: var(--sp-2);
}

.field-icon {
	position: absolute;
	left: 14px;
	/* 锚定到输入框中线（输入框固定 46px），避免校验 label 撑高后图标跟随 .form-field 下移 */
	top: 23px;
	-webkit-transform: translateY(-50%);
	transform: translateY(-50%);
	width: 17px;
	height: 17px;
	color: #979ea3;
	color: var(--fg-faint);
	-webkit-transition: color 0.18s ease;
	transition: color 0.18s ease;
	pointer-events: none;
}

.form-field input {
	width: 100%;
	height: 46px;
	border-radius: 11px;
	border-radius: var(--radius-ctrl);
	border: 1px solid #e2e4e6;
	border: 1px solid var(--border);
	background: #f6fcfb;
	background: var(--field-bg);
	padding: 0 14px 0 42px;
	font-size: 14px;
	font-family: inherit;
	color: #22313c;
	color: var(--fg);
	-webkit-transition: border-color 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
	transition: border-color 0.18s ease, box-shadow 0.18s ease, background 0.18s ease;
}

.form-field input::placeholder {
	color: #979ea3;
	color: var(--fg-faint);
}

.form-field input::-webkit-input-placeholder {
	color: #979ea3;
}

.form-field input:-ms-input-placeholder {
	color: #979ea3;
}

.form-field input:hover {
	border-color: #96d1c7;
}

.form-field input:focus {
	outline: none;
	border-color: #1ab394;
	border-color: var(--primary);
	background: #fff;
	background: var(--seed-surface);
	box-shadow: 0 0 0 3px rgba(26, 179, 148, 0.22);
	box-shadow: 0 0 0 3px var(--ring);
}

.form-field input:focus ~ .field-icon,
.form-field:focus-within .field-icon {
	color: #127a65;
	color: var(--primary-ink);
}

/* 校验错误态：jquery.validate 会给未通过校验的 input 加 .error，并在其后插入 label.error */
.form-field input.error {
	border-color: #d64550;
	border-color: var(--danger);
	background: #fcf2f3;
	background: var(--danger-bg);
	color: #22313c;
	color: var(--fg);
}

.form-field input.error:focus {
	box-shadow: 0 0 0 3px rgba(214, 69, 80, 0.18);
	box-shadow: 0 0 0 3px var(--danger-ring);
}

.form-field input.error ~ .field-icon {
	color: #d64550;
	color: var(--danger);
}

/* standup-ui.css 的 label.error 为绝对定位浮在输入框右上角，
   登录页改回常规行内提示；特异性 (0,2,1) 高于 standup-ui 的 (0,1,1)，不受加载顺序影响 */
.form-field label.error {
	position: static;
	right: auto;
	top: auto;
	z-index: auto;
	display: block;
	width: auto;
	margin: 6px 2px 0;
	padding: 0;
	font-size: 12px;
	font-weight: 400;
	letter-spacing: 0.01em;
	text-align: left;
	color: #d64550;
	color: var(--danger);
	background: none;
}

/* ============ 验证码 ============ */
.captcha-row {
	display: -webkit-flex;
	display: flex;
	-webkit-align-items: stretch;
	align-items: stretch;
}

.captcha-row .form-field {
	-webkit-flex: 1;
	flex: 1;
	margin-bottom: 0;
}

.captcha-box {
	-webkit-flex: 0 0 138px;
	flex: 0 0 138px;
	height: 46px;
	margin-left: 10px;
	padding: 0;
	border-radius: 11px;
	border-radius: var(--radius-ctrl);
	border: 1px solid #e2e4e6;
	border: 1px solid var(--border);
	background: #effaf8;
	cursor: pointer;
	overflow: hidden;
	display: -webkit-flex;
	display: flex;
	-webkit-align-items: center;
	align-items: center;
	-webkit-justify-content: center;
	justify-content: center;
	-webkit-transition: border-color 0.18s ease, box-shadow 0.18s ease, -webkit-transform 0.12s ease;
	transition: border-color 0.18s ease, box-shadow 0.18s ease, transform 0.12s ease;
}

.captcha-box:hover {
	border-color: #1ab394;
	border-color: var(--primary);
	box-shadow: 0 0 0 3px rgba(26, 179, 148, 0.22);
	box-shadow: 0 0 0 3px var(--ring);
}

.captcha-box:active {
	-webkit-transform: scale(0.985);
	transform: scale(0.985);
}

.captcha-box:focus {
	outline: none;
}

.captcha-box:focus-visible {
	outline: 2px solid #127a65;
	outline-offset: 2px;
}

/* 服务端验证码图片（/captcha/captchaImage），点击刷新由 login.js 绑定在 .imgcode 上 */
.captcha-box .imgcode {
	display: block;
	width: 100%;
	height: 100%;
	object-fit: cover;
	border: none;
	cursor: pointer;
}

.captcha-hint {
	margin: 8px 2px 16px;
	margin: 8px 2px var(--sp-2);
	font-size: 12px;
	letter-spacing: 0.01em;
	color: #979ea3;
	color: var(--fg-faint);
}

.captcha-hint .refresh-ic {
	width: 12px;
	height: 12px;
	vertical-align: -1.5px;
	margin-right: 4px;
	color: #127a65;
	color: var(--primary-ink);
}

/* ============ 记住我 / 注册 ============ */
.signin-extra {
	display: -webkit-flex;
	display: flex;
	-webkit-align-items: center;
	align-items: center;
	-webkit-justify-content: space-between;
	justify-content: space-between;
	margin: 2px 0 22px;
	margin: 2px 0 calc(var(--sp-3) - 2px);
	font-size: 13px;
}

.checkbox-custom {
	display: -webkit-inline-flex;
	display: inline-flex;
	-webkit-align-items: center;
	align-items: center;
	margin: 0;
	font-weight: 400;
	cursor: pointer;
	-webkit-user-select: none;
	-moz-user-select: none;
	-ms-user-select: none;
	user-select: none;
	color: #5b676f;
	color: var(--fg-muted);
}

.checkbox-custom input {
	position: absolute;
	opacity: 0;
	width: 0;
	height: 0;
	margin: 0;
}

.checkbox-box {
	-webkit-flex: 0 0 auto;
	flex: 0 0 auto;
	width: 17px;
	height: 17px;
	margin-right: 8px;
	border-radius: 5px;
	border: 1.5px solid #bdc1c5;
	background: #fff;
	background: var(--seed-surface);
	display: -webkit-inline-flex;
	display: inline-flex;
	-webkit-align-items: center;
	align-items: center;
	-webkit-justify-content: center;
	justify-content: center;
	color: #fff;
	-webkit-transition: background 0.16s ease, border-color 0.16s ease;
	transition: background 0.16s ease, border-color 0.16s ease;
}

.checkbox-box svg {
	width: 11px;
	height: 11px;
	opacity: 0;
	-webkit-transform: scale(0.6);
	transform: scale(0.6);
	-webkit-transition: opacity 0.16s ease, -webkit-transform 0.16s ease;
	transition: opacity 0.16s ease, transform 0.16s ease;
}

.checkbox-custom input:checked + .checkbox-box {
	background: #158f76;
	background: var(--primary-check);
	border-color: #158f76;
	border-color: var(--primary-check);
}

.checkbox-custom input:checked + .checkbox-box svg {
	opacity: 1;
	-webkit-transform: scale(1);
	transform: scale(1);
}

.checkbox-custom input:focus-visible + .checkbox-box {
	outline: 2px solid #127a65;
	outline-offset: 2px;
}

.checkbox-custom:hover .checkbox-box {
	border-color: #1ab394;
	border-color: var(--primary);
}

.signin-register {
	color: #127a65;
	color: var(--primary-ink);
	font-weight: 500;
	letter-spacing: 0.02em;
	text-decoration: none;
	border-radius: 4px;
}

.signin-register:hover,
.signin-register:focus {
	color: #127a65;
	color: var(--primary-ink);
	text-decoration: underline;
}

.signin-register:focus-visible {
	outline: 2px solid #127a65;
	outline-offset: 2px;
}

/* ============ 登录按钮 ============ */
/* .btn.btn-submit 双类选择器用于覆盖 Bootstrap .btn / .btn:hover 的默认样式 */
.btn.btn-submit {
	position: relative;
	display: block;
	width: 100%;
	height: 48px;
	padding: 0;
	margin: 0;
	border: none;
	border-radius: 11px;
	border-radius: var(--radius-ctrl);
	font-family: inherit;
	font-size: 16px;
	font-weight: 600;
	letter-spacing: 0.5em;
	text-indent: 0.5em;
	line-height: 48px;
	color: #fff;
	cursor: pointer;
	background-color: #106f5c;
	background-image: linear-gradient(135deg, #106f5c 0%, #0a4438 100%);
	background-image: linear-gradient(135deg, var(--btn-from) 0%, var(--btn-to) 100%);
	box-shadow: 0 10px 24px rgba(26, 179, 148, 0.42);
	box-shadow: 0 10px 24px var(--btn-shadow);
	-webkit-transition: box-shadow 0.18s ease, -webkit-transform 0.12s ease;
	transition: box-shadow 0.18s ease, transform 0.12s ease;
}

.btn.btn-submit:hover,
.btn.btn-submit:focus {
	color: #fff;
	background-image: linear-gradient(135deg, #117964 0%, #0b4a3d 100%);
	box-shadow: 0 13px 30px rgba(26, 179, 148, 0.5);
}

.btn.btn-submit:active:not(:disabled) {
	-webkit-transform: translateY(1px);
	transform: translateY(1px);
	box-shadow: 0 6px 16px rgba(26, 179, 148, 0.42);
}

.btn.btn-submit:focus {
	outline: none;
}

.btn.btn-submit:focus-visible {
	outline: 2px solid #127a65;
	outline-offset: 3px;
}

.btn.btn-submit:disabled {
	cursor: default;
	opacity: 0.92;
}

.panel-slogan {
	margin: 22px 0 0;
	margin: calc(var(--sp-3) - 2px) 0 0;
	text-align: center;
	font-size: 12.5px;
	letter-spacing: 0.2em;
	text-indent: 0.2em;
	color: #979ea3;
	color: var(--fg-faint);
}

/* ============ layer 轻提示样式（沿用原有覆盖） ============ */
body .layer-ext-moon-msg[type="dialog"] {
	min-width: 100px !important;
}

body .layer-ext-moon-msg {
	background-color: rgba(0, 0, 0, 0.6);
	color: #fff;
	border: none;
}

body .layer-ext-moon-msg .layui-layer-content {
	padding: 12px 25px;
	text-align: center;
}

/* ============ 响应式 ============ */
@media screen and (max-width: 900px) {
	body.signin {
		-webkit-align-items: flex-start;
		align-items: flex-start;
		padding: 16px;
		padding: var(--sp-2);
	}

	.signin-shell {
		-webkit-flex-direction: column;
		flex-direction: column;
		width: 100%;
		min-height: 0;
		border-radius: 16.5px;
		border-radius: calc(var(--radius-card) * 0.75);
	}

	.signin-aside {
		width: 100%;
		padding: 16px 16px 18px;
		padding: var(--sp-2) var(--sp-2) calc(var(--sp-2) + 2px);
		-webkit-flex-direction: row;
		flex-direction: row;
		-webkit-flex-wrap: wrap;
		flex-wrap: wrap;
		-webkit-align-items: center;
		align-items: center;
		text-align: left;
	}

	.aside-hero {
		width: 58px;
		height: 58px;
		margin: 0 14px 0 0;
	}

	.aside-medal {
		width: 54px;
		height: 54px;
		-webkit-animation: none;
		animation: none;
	}

	.aside-glow {
		top: -6px;
		right: -6px;
		bottom: -6px;
		left: -6px;
	}

	.aside-sparks {
		display: none;
	}

	.aside-name {
		font-size: 20px;
		margin: 0;
	}

	.aside-tag {
		display: none;
	}

	.aside-features {
		width: 100%;
		margin-top: 10px;
		-webkit-flex-direction: row;
		flex-direction: row;
		-webkit-flex-wrap: wrap;
		flex-wrap: wrap;
	}

	.aside-features li {
		-webkit-flex: 1 1 calc(50% - 8px);
		flex: 1 1 calc(50% - 8px);
		padding: 8px 10px;
		margin-right: 8px;
		margin-bottom: 8px;
	}

	.aside-features li + li {
		margin-top: 0;
	}

	.aside-features li:hover {
		-webkit-transform: none;
		transform: none;
	}

	.feat-ic {
		width: 29px;
		height: 29px;
		margin-right: 9px;
	}

	.feat-ic svg {
		width: 16px;
		height: 16px;
	}

	.aside-features strong {
		font-size: 13px;
	}

	.aside-features li span.desc {
		font-size: 11px;
	}

	.aside-foot-wrap {
		display: none;
	}

	.signin-main {
		padding: 26px 24px 36px;
		padding: calc(var(--sp-3) + 2px) var(--sp-3) calc(var(--sp-4) - 4px);
	}

	.panel-avatar {
		display: none;
	}

	.panel-head {
		margin-bottom: 16px;
		margin-bottom: var(--sp-2);
	}
}

@media screen and (max-width: 480px) {
	.signin-aside {
		padding: 16px;
		padding: var(--sp-2);
	}

	.aside-features li {
		-webkit-flex-basis: 100%;
		flex-basis: 100%;
		margin-right: 0;
	}

	.signin-main {
		padding: 24px 16px 28px;
		padding: var(--sp-3) var(--sp-2) calc(var(--sp-3) + 4px);
	}

	/* 窄屏仍保持一行：验证码框固定宽度横排在输入框右侧，避免折行后横向裁切导致看不全 */
	.captcha-row {
		-webkit-flex-wrap: nowrap;
		flex-wrap: nowrap;
	}

	.captcha-box {
		-webkit-flex: 0 0 116px;
		flex: 0 0 116px;
		height: 46px;
		margin-left: 10px;
	}
}

/* ============ 动效偏好 ============ */
@media (prefers-reduced-motion: reduce) {
	*,
	*::before,
	*::after {
		-webkit-animation: none !important;
		animation: none !important;
		-webkit-transition: none !important;
		transition: none !important;
	}
}
