/* ==========================================================================
   认证页面（登录 / 注册 / 找回密码）
   浅色商务风格 / 企业蓝 #1677FF
   ========================================================================== */

:root {
	--bg:        #F5F7FA;
	--surface:   #FFFFFF;
	--surface-2: #F7F9FC;
	--surface-3: #EFF3F8;
	--brand:     #1677FF;
	--brand-d:   #0B5FD0;
	--brand-l:   #EAF2FF;
	--brand-l2:  #F5F9FF;
	--green:     #12B76A;
	--green-d:   #0E8F55;
	--green-l:   #E7F7EF;
	--red:       #F04438;
	--red-l:     #FEECEB;
	--gold:      #F79009;
	--gold-l:    #FEF4E6;
	--ink:       #101828;
	--ink-2:     #4A5568;
	--ink-3:     #8A94A6;
	--ink-4:     #A9B2C0;
	--line:      #E4E8EE;
	--line-2:    #EFF2F6;
	--radius:    12px;
	--radius-sm: 8px;
	--shadow:    0 1px 3px rgba(16, 24, 40, .06), 0 1px 2px rgba(16, 24, 40, .04);
	--shadow-md: 0 8px 28px rgba(16, 24, 40, .08);
}

.au-body {
	margin: 0;
	padding: 0;
	background: var(--surface);
	color: var(--ink-2);
	font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", "PingFang SC",
	             "Hiragino Sans GB", "Microsoft YaHei", "Helvetica Neue", Arial, sans-serif;
	font-size: 15px;
	line-height: 1.7;
	-webkit-font-smoothing: antialiased;
	-moz-osx-font-smoothing: grayscale;
}
.au-body *, .au-body *::before, .au-body *::after { box-sizing: border-box; }
.au-body a { color: inherit; text-decoration: none; }

.au-shell {
	display: grid;
	grid-template-columns: 1.02fr .98fr;
	min-height: 100vh;
}

/* --------------------------------------------------------------------------
   左侧品牌面板
   -------------------------------------------------------------------------- */
.au-aside {
	position: relative;
	display: flex;
	flex-direction: column;
	justify-content: space-between;
	gap: 40px;
	min-height: 100vh;
	padding: 46px 52px;
	background: linear-gradient(160deg, #EEF5FF 0%, #E4EEFF 100%);
	border-right: 1px solid var(--line);
	overflow: hidden;
}
.au-grid { display: none; }

.au-brand {
	display: inline-flex;
	align-items: center;
	gap: 10px;
	color: var(--ink);
	font-size: 17px;
	font-weight: 600;
	letter-spacing: -.01em;
}
.au-brand-mark {
	display: grid;
	place-items: center;
	width: 32px; height: 32px;
	border-radius: 8px;
	background: var(--brand);
	color: #fff;
	box-shadow: 0 2px 6px rgba(22, 119, 255, .26);
}
.au-brand-mark svg { width: 17px; height: 17px; }

.au-aside-body { max-width: 460px; }
.au-kicker {
	display: inline-block;
	margin-bottom: 16px;
	padding: 4px 12px;
	border: 1px solid #CFE1FF;
	border-radius: 99px;
	background: rgba(255, 255, 255, .72);
	color: var(--brand-d);
	font-size: 12.5px;
	font-weight: 600;
}
.au-aside-body h2 {
	margin: 0 0 14px;
	color: var(--ink);
	font-size: 1.95rem;
	font-weight: 700;
	line-height: 1.34;
	letter-spacing: -.025em;
}
.au-aside-body h2 em { color: var(--brand); font-style: normal; }
.au-aside-body > p {
	margin: 0 0 28px;
	color: var(--ink-2);
	font-size: 14.6px;
	line-height: 1.85;
}

.au-perks { display: grid; gap: 14px; }
.au-perk {
	display: flex;
	align-items: flex-start;
	gap: 12px;
	padding: 13px 15px;
	background: rgba(255, 255, 255, .74);
	border: 1px solid rgba(255, 255, 255, .9);
	border-radius: var(--radius-sm);
}
.au-perk-ico {
	display: grid;
	place-items: center;
	width: 30px; height: 30px;
	flex: 0 0 30px;
	border-radius: 7px;
	background: var(--brand-l);
	color: var(--brand);
}
.au-perk-ico svg { width: 15px; height: 15px; }
.au-perk b { display: block; color: var(--ink); font-size: 14px; font-weight: 600; }
.au-perk span { display: block; margin-top: 2px; color: var(--ink-3); font-size: 12.8px; line-height: 1.6; }

.au-aside-foot { display: flex; flex-wrap: wrap; gap: 8px; }
.au-chip {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 6px 11px;
	border: 1px solid #D6E6FF;
	border-radius: 99px;
	background: rgba(255, 255, 255, .78);
	color: var(--ink-2);
	font-size: 12.3px;
}
.au-chip svg { width: 13px; height: 13px; color: var(--brand); }

/* --------------------------------------------------------------------------
   右侧表单区
   -------------------------------------------------------------------------- */
.au-main {
	position: relative;
	display: flex;
	flex-direction: column;
	align-items: center;
	justify-content: center;
	min-height: 100vh;
	padding: 46px 28px;
	background: var(--bg);
}

.au-card {
	width: 100%;
	max-width: 432px;
	padding: 34px 34px 30px;
	background: var(--surface);
	border: 1px solid var(--line);
	border-radius: var(--radius);
	box-shadow: var(--shadow-md);
}
.au-card-head { margin-bottom: 26px; }
.au-card-head h1 {
	margin: 0 0 8px;
	color: var(--ink);
	font-size: 1.62rem;
	font-weight: 700;
	letter-spacing: -.02em;
}
.au-card-head p { margin: 0; color: var(--ink-3); font-size: .92rem; }

.au-back {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	margin-bottom: 22px;
	color: var(--ink-3);
	font-size: .875rem;
	transition: color .18s ease;
}
.au-back:hover { color: var(--brand); }
.au-back svg { width: 14px; height: 14px; }

/* 登录方式切换 */
.au-tabs {
	display: flex;
	gap: 4px;
	padding: 4px;
	margin-bottom: 20px;
	border-radius: var(--radius-sm);
	background: var(--surface-3);
}
.au-tab {
	flex: 1 1 50%;
	height: 36px;
	line-height: 36px;
	text-align: center;
	border-radius: 6px;
	color: var(--ink-3);
	font-size: 14px;
	font-weight: 500;
	transition: background .18s ease, color .18s ease, box-shadow .18s ease;
}
.au-tab:hover { color: var(--ink); }
.au-tab.is-active { background: var(--surface); color: var(--brand); box-shadow: var(--shadow); }

.au-alert {
	display: none;
	align-items: flex-start;
	gap: 8px;
	margin-bottom: 18px;
	padding: 11px 14px;
	border: 1px solid #FBD3D0;
	border-radius: var(--radius-sm);
	background: var(--red-l);
	color: #B42318;
	font-size: 13.5px;
	line-height: 1.65;
}
.au-alert.is-show { display: flex; }

/* 字段 */
.au-field { position: relative; margin-bottom: 16px; }
.au-field > label {
	display: block;
	margin-bottom: 7px;
	color: var(--ink-2);
	font-size: 13.5px;
	font-weight: 500;
}
.au-input-wrap { position: relative; }
.au-field:has(> label) svg.au-ico,
.au-field:has(> label) .au-eye { top: calc(50% + 14px); }
.au-field svg.au-ico {
	position: absolute;
	left: 13px;
	top: 50%;
	transform: translateY(-50%);
	width: 16px; height: 16px;
	color: var(--ink-4);
	pointer-events: none;
}
.au-field.has-ico .au-input { padding-left: 38px; }
.au-input, .au-select {
	width: 100%;
	height: 44px;
	padding: 0 13px;
	border: 1px solid #D5DCE6;
	border-radius: var(--radius-sm);
	background: var(--surface);
	color: var(--ink);
	font-family: inherit;
	font-size: 14.5px;
	outline: 0;
	transition: border-color .16s ease, box-shadow .16s ease;
}
.au-input::placeholder { color: var(--ink-4); }
.au-input:focus, .au-select:focus {
	border-color: var(--brand);
	box-shadow: 0 0 0 3px rgba(22, 119, 255, .12);
}
.au-select {
	-webkit-appearance: none;
	appearance: none;
	padding-right: 34px;
	background-image: url("data:image/svg+xml;charset=utf8,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%238A94A6' stroke-width='2.4' stroke-linecap='round'%3E%3Cpath d='m6 9 6 6 6-6'/%3E%3C/svg%3E");
	background-repeat: no-repeat;
	background-position: right 12px center;
	background-size: 14px 14px;
}
.au-select option { background: #fff; color: var(--ink); }

/* 验证码行 */
.au-code-row { display: flex; gap: 10px; }
.au-code-row .au-input-wrap { flex: 1 1 auto; }
.au-code-btn {
	flex: 0 0 auto;
	min-width: 116px;
	height: 44px;
	padding: 0 15px;
	border: 1px solid var(--brand);
	border-radius: var(--radius-sm);
	background: var(--brand-l);
	color: var(--brand-d);
	font-family: inherit;
	font-size: 13.8px;
	font-weight: 500;
	cursor: pointer;
	white-space: nowrap;
	transition: background .16s ease, color .16s ease;
}
.au-code-btn:hover:not(:disabled) { background: #DCEAFF; }
.au-code-btn:disabled { border-color: var(--line); background: var(--surface-3); color: var(--ink-4); cursor: not-allowed; }

/* 密码可见切换 */
.au-field.has-eye .au-input { padding-right: 44px; }
.au-eye {
	position: absolute;
	right: 6px;
	top: 50%;
	transform: translateY(-50%);
	display: grid;
	place-items: center;
	width: 34px; height: 34px;
	border: 0;
	border-radius: 6px;
	background: transparent;
	color: var(--ink-4);
	cursor: pointer;
}
.au-eye:hover { color: var(--ink-2); background: var(--surface-2); }
.au-eye svg { width: 16px; height: 16px; }

.au-check {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	margin: 4px 0 20px;
	color: var(--ink-2);
	font-size: 13.5px;
	line-height: 1.65;
	cursor: pointer;
}
.au-check input { margin: 3px 0 0; accent-color: var(--brand); flex: 0 0 auto; }
.au-check a { color: var(--brand); }
.au-check a:hover { text-decoration: underline; }

/* 按钮 */
.au-btn {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 8px;
	width: 100%;
	height: 46px;
	border: 1px solid transparent;
	border-radius: var(--radius-sm);
	font-family: inherit;
	font-size: 15px;
	font-weight: 500;
	cursor: pointer;
	transition: background .16s ease, border-color .16s ease, color .16s ease;
}
.au-btn svg { width: 16px; height: 16px; }
.au-btn-primary {
	background: var(--brand);
	border-color: var(--brand);
	color: #fff;
}
.au-btn-primary:hover { background: var(--brand-d); border-color: var(--brand-d); }
.au-btn-ghost {
	margin-top: 10px;
	background: var(--surface);
	border-color: #D5DCE6;
	color: var(--ink-2);
}
.au-btn-ghost:hover { border-color: var(--brand); color: var(--brand); background: var(--brand-l2); }

/* 分割线 + 第三方 */
.au-divider {
	display: flex;
	align-items: center;
	gap: 12px;
	margin: 24px 0 16px;
	color: var(--ink-4);
	font-size: 12.5px;
}
.au-divider::before, .au-divider::after {
	content: "";
	flex: 1 1 auto;
	height: 1px;
	background: var(--line);
}
.au-social { display: flex; justify-content: center; gap: 12px; }
.au-social a, .au-social button {
	display: grid;
	place-items: center;
	width: 44px; height: 44px;
	border: 1px solid var(--line);
	border-radius: var(--radius-sm);
	background: var(--surface);
	cursor: pointer;
	transition: border-color .18s ease, background .18s ease;
}
.au-social a:hover, .au-social button:hover { border-color: #C7DAFB; background: var(--brand-l2); }
.au-social img { width: 21px; height: 21px; border-radius: 50%; }
.au-social i { font-size: 19px; }
.au-social svg { width: 20px; height: 20px; }

/* 底部链接 */
.au-foot {
	margin-top: 22px;
	padding-top: 18px;
	border-top: 1px solid var(--line-2);
	display: flex;
	align-items: center;
	justify-content: space-between;
	flex-wrap: wrap;
	gap: 10px 14px;
	font-size: .875rem;
	color: var(--ink-3);
}
.au-foot a { color: var(--brand); font-weight: 500; }
.au-foot a:hover { text-decoration: underline; }

.au-copyright {
	margin-top: 22px;
	text-align: center;
	color: var(--ink-4);
	font-size: .8rem;
	line-height: 1.8;
}
.au-copyright a { color: var(--ink-3); }
.au-copyright a:hover { color: var(--brand); }

/* 验证码图片 */
.au-captcha {
	display: flex;
	align-items: center;
	gap: 10px;
}
.au-captcha img {
	height: 44px;
	border: 1px solid var(--line);
	border-radius: var(--radius-sm);
	cursor: pointer;
	background: var(--surface-2);
}
.au-captcha-loading { color: var(--ink-3); font-size: 13px; }

/* 提示条 */
.au-note {
	display: flex;
	align-items: flex-start;
	gap: 8px;
	margin-bottom: 18px;
	padding: 11px 14px;
	border: 1px solid #CFE1FF;
	border-radius: var(--radius-sm);
	background: var(--brand-l);
	color: var(--brand-d);
	font-size: 13.5px;
	line-height: 1.65;
}
.au-note svg { width: 15px; height: 15px; flex: 0 0 auto; margin-top: 2px; }

/* --------------------------------------------------------------------------
   深色弹窗适配 → 浅色
   -------------------------------------------------------------------------- */
.au-body .modal-content { background: var(--surface); border: 0; border-radius: var(--radius); box-shadow: 0 24px 60px rgba(16, 24, 40, .18); }
.au-body .modal-header { border-bottom: 1px solid var(--line-2); }
.au-body .modal-title { color: var(--ink); }
.au-body .modal-body { color: var(--ink-2); }
.au-body .modal-footer { border-top: 1px solid var(--line-2); }
.au-body .modal-backdrop.in { opacity: .45; }

/* 富文本内容兜底 */
.au-body .modal-body img { max-width: 100%; height: auto; }
.au-body .modal-body p { margin: 0 0 10px; }
.au-body .modal-body a { color: var(--brand); }

/* --------------------------------------------------------------------------
   响应式
   -------------------------------------------------------------------------- */
@media (max-width: 1080px) {
	.au-shell { grid-template-columns: 1fr; }
	.au-aside {
		min-height: auto;
		justify-content: flex-start;
		padding: 34px 36px 36px;
		gap: 22px;
		border-right: 0;
		border-bottom: 1px solid var(--line);
	}
	.au-aside-body h2 { font-size: 1.72rem; }
	.au-aside-body > p { margin-bottom: 20px; }
	.au-perks { grid-template-columns: repeat(3, minmax(0, 1fr)); display: grid; gap: 12px; }
	.au-perk { flex-direction: column; gap: 9px; padding: 14px; }
	.au-aside-foot { padding-top: 4px; }
	.au-main { min-height: auto; padding: 40px 28px 54px; }
}

@media (max-width: 640px) {
	.au-aside { padding: 24px 20px 26px; gap: 16px; }
	.au-aside-body h2 { font-size: 1.48rem; }
	.au-aside-body > p { margin-bottom: 0; font-size: .9rem; }
	.au-perks { display: none; }
	.au-aside-body { max-width: none; }
	.au-aside-foot { display: none; }
	.au-main { padding: 26px 16px 40px; }
	.au-card { max-width: none; padding: 24px 20px 22px; border-radius: var(--radius-sm); }
	.au-card-head h1 { font-size: 1.42rem; }
	.au-code-btn { min-width: 104px; padding: 0 12px; font-size: 13px; }
	.au-foot { flex-wrap: wrap; justify-content: center; gap: 6px 14px; }
	.au-foot a { text-align: left; }
}

@media (prefers-reduced-motion: reduce) {
	* { animation-duration: .001ms !important; transition-duration: .001ms !important; }
}
