/**
 * 验证码 chip 通用 MD3 样式
 * 用于 template/responsive/chip/captcha.htm 输出的 .mdc-captcha 结构
 * 在 FAQ、登录、注册等引用 {template 'captcha', 'chip'} 的页面引入此样式即可
 */
.mdc-captcha {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 12px;
	padding: 0;
	background-color: transparent;
	border: none;
}
.mdc-captcha .mdc-captcha-wrap {
	display: flex;
	align-items: center;
	gap: 12px;
	width: 100%;
}
.mdc-captcha .mdc-captcha-input-wrap {
	position: relative;
	display: inline-flex;
	align-items: center;
	flex: 1;
	min-width: 120px;
	max-width: 160px;
	height: 48px;
	padding: 0 44px 0 16px;
	box-sizing: border-box;
	background-color: var(--md-sys-color-surface-container, #f5f5f5);
	border: 1px solid var(--md-sys-color-outline-variant, rgba(0,0,0,.12));
	border-radius: var(--md-sys-shape-corner-medium, 12px);
	transition: border-color .2s, box-shadow .2s;
}
.mdc-captcha .mdc-captcha-input-wrap:hover {
	border-color: var(--md-sys-color-outline, rgba(0,0,0,.38));
	background-color: var(--md-sys-color-surface-container-high, #e9f1fb);
}
.mdc-captcha .mdc-captcha-input-wrap:focus-within {
	border-color: var(--md-sys-color-primary, #1976d2);
	box-shadow: 0 0 0 2px rgba(25, 118, 210, 0.2);
}
.mdc-captcha .mdc-captcha-input {
	width: 100%;
	height: 100%;
	padding: 0;
	border: none;
	background: transparent;
	font-family: var(--md-sys-typescale-body-large-font, inherit);
	font-size: var(--md-sys-typescale-body-large-size, 16px);
	line-height: var(--md-sys-typescale-body-large-line-height, 24px);
	color: var(--md-sys-color-on-surface, #1c1b1f);
	outline: none;
	box-sizing: border-box;
}
.mdc-captcha .mdc-captcha-input::placeholder {
	color: var(--md-sys-color-on-surface-variant, #5f5f5f);
	opacity: 1;
	font-family: var(--md-sys-typescale-body-large-font, 'PingFang SC', 'Microsoft YaHei', sans-serif);
}
.mdc-captcha .mdc-captcha-input::-webkit-input-placeholder {
	color: var(--md-sys-color-on-surface-variant, #5f5f5f);
	opacity: 1;
}
.mdc-captcha .mdc-captcha-input::-moz-placeholder {
	color: var(--md-sys-color-on-surface-variant, #5f5f5f);
	opacity: 1;
}
.mdc-captcha .mdc-captcha-input::-ms-input-placeholder {
	color: var(--md-sys-color-on-surface-variant, #5f5f5f);
	opacity: 1;
}
.mdc-captcha .mdc-captcha-hint {
	display: block;
	margin-top: 6px;
	font-size: 12px;
	line-height: 1.4;
	color: var(--md-sys-color-on-surface-variant, #5f5f5f);
}
.mdc-captcha #ccaptcha {
	position: absolute;
	right: 12px;
	top: 50%;
	transform: translateY(-50%);
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 24px;
	height: 24px;
	pointer-events: none;
}
.mdc-captcha #ccaptcha img,
.mdc-captcha #ccaptcha .mdc-captcha-icon {
	width: 22px;
	height: 22px;
	display: inline-flex;
	align-items: center;
	justify-content: center;
	object-fit: contain;
	vertical-align: middle;
}
.mdc-captcha #ccaptcha .mdc-captcha-icon .material-symbols-outlined {
	font-size: 22px;
	width: 22px;
	height: 22px;
}
.mdc-captcha #ccaptcha .mdc-captcha-icon--ok {
	color: var(--md-sys-color-success, #2e7d32);
}
.mdc-captcha #ccaptcha .mdc-captcha-icon--error {
	color: var(--md-sys-color-error, #b3261e);
}
.mdc-captcha .mdc-captcha-img {
	flex-shrink: 0;
	height: 48px;
	width: auto;
	border-radius: var(--md-sys-shape-corner-small, 8px);
	border: 1px solid var(--md-sys-color-outline-variant, rgba(0,0,0,.12));
	cursor: pointer;
	object-fit: contain;
	background: var(--md-sys-color-surface-container-high, #e9f1fb);
	transition: border-color .2s, box-shadow .2s;
}
.mdc-captcha .mdc-captcha-img:hover {
	border-color: var(--md-sys-color-primary, #1976d2);
}
/* 错误态：父级可加 .mdc-captcha--error */
.mdc-captcha.mdc-captcha--error .mdc-captcha-input-wrap {
	border-color: var(--md-sys-color-error, #b3261e);
}
.mdc-captcha.mdc-captcha--error .mdc-captcha-input-wrap:focus-within {
	box-shadow: 0 0 0 2px rgba(179, 38, 30, 0.2);
}
/*======= sanxio 验证码校验文案 start ===========*/
.sanxio-captcha-status {
	display: block;
	width: 100%;
	margin-top: 4px;
	font-size: 12px;
	line-height: 1.4;
	min-height: 1.4em;
}
.mdc-captcha--ok .sanxio-captcha-status {
	color: var(--md-sys-color-success, #2e7d32);
}
.mdc-captcha--error .sanxio-captcha-status {
	color: var(--md-sys-color-error, #b3261e);
}
/*======= sanxio 验证码校验文案 end ===========*/
/* 深色主题 */
[data-theme="dark"] .mdc-captcha .mdc-captcha-input-wrap,
:root.theme-dark .mdc-captcha .mdc-captcha-input-wrap {
	background-color: var(--md-sys-color-surface-container, #2d2d2d);
	border-color: var(--md-sys-color-outline-variant, rgba(255,255,255,.12));
}
[data-theme="dark"] .mdc-captcha .mdc-captcha-input-wrap:hover,
:root.theme-dark .mdc-captcha .mdc-captcha-input-wrap:hover {
	background-color: var(--md-sys-color-surface-container-high, #383838);
}
[data-theme="dark"] .mdc-captcha .mdc-captcha-input,
:root.theme-dark .mdc-captcha .mdc-captcha-input {
	color: var(--md-sys-color-on-surface, #e6e1e5);
}
[data-theme="dark"] .mdc-captcha .mdc-captcha-input::placeholder,
:root.theme-dark .mdc-captcha .mdc-captcha-input::placeholder {
	color: var(--md-sys-color-on-surface-variant, #cac4d0);
}
[data-theme="dark"] .mdc-captcha .mdc-captcha-hint,
:root.theme-dark .mdc-captcha .mdc-captcha-hint {
	color: var(--md-sys-color-on-surface-variant, #cac4d0);
}
[data-theme="dark"] .mdc-captcha .mdc-captcha-img,
:root.theme-dark .mdc-captcha .mdc-captcha-img {
	background: var(--md-sys-color-surface-container, #2d2d2d);
	border-color: var(--md-sys-color-outline-variant, rgba(255,255,255,.12));
}

/*======= sanxio 管理登录 admin/login.tpl 与 login.css 兼容 start ===========*/
/*
 * login.css 对 #captcha 写死 width:60px + 盾牌背景，会把 MD3 输入压成细条；
 * 管理登录无 member 样式包，仅靠本段覆盖。与 #username 同宽 256px，输入与图横排。
 */
.login .main .mdc-captcha,
.login .main .mdc-captcha.mdc-captcha--admin-login {
	display: block !important;
	flex-wrap: nowrap !important;
	width: 256px !important;
	max-width: 100% !important;
	min-width: 0 !important;
	box-sizing: border-box !important;
	gap: 0 !important;
	padding: 0 !important;
	background: transparent !important;
	border: none !important;
}

.login .main .mdc-captcha .mdc-captcha-wrap,
.login .main .mdc-captcha--admin-login .mdc-captcha-wrap {
	display: grid !important;
	grid-template-columns: minmax(0, 1fr) auto !important;
	grid-template-rows: auto !important;
	align-items: center !important;
	gap: 8px !important;
	width: 256px !important;
	max-width: 100% !important;
	min-width: 0 !important;
	box-sizing: border-box !important;
}

.login .main .mdc-captcha .mdc-captcha-input-wrap,
.login .main .mdc-captcha--admin-login .mdc-captcha-input-wrap {
	grid-column: 1 !important;
	position: relative !important;
	display: block !important;
	flex: none !important;
	width: 100% !important;
	min-width: 0 !important;
	max-width: none !important;
	height: 36px !important;
	min-height: 36px !important;
	padding: 0 30px 0 10px !important;
	box-sizing: border-box !important;
	border-radius: 4px !important;
	border: 1px solid #cccccc !important;
	background: #ffffff !important;
}

.login .main .mdc-captcha .mdc-captcha-input-wrap:hover,
.login .main .mdc-captcha--admin-login .mdc-captcha-input-wrap:hover {
	border-color: #005aa0 !important;
}

.login .main .mdc-captcha input#captcha,
.login .main .mdc-captcha .mdc-captcha-input,
.login .main .mdc-captcha--admin-login input#captcha,
.login .main .mdc-captcha--admin-login .mdc-captcha-input {
	width: 100% !important;
	min-width: 0 !important;
	max-width: 100% !important;
	height: 100% !important;
	min-height: 0 !important;
	line-height: normal !important;
	padding: 0 !important;
	margin: 0 !important;
	border: none !important;
	border-radius: 0 !important;
	background: transparent !important;
	background-image: none !important;
	box-shadow: none !important;
	-webkit-appearance: none;
	appearance: none;
	box-sizing: border-box !important;
}

.login .main .mdc-captcha #ccaptcha,
.login .main .mdc-captcha--admin-login #ccaptcha {
	right: 6px !important;
}

.login .main .mdc-captcha .mdc-captcha-img,
.login .main .mdc-captcha--admin-login .mdc-captcha-img {
	grid-column: 2 !important;
	display: block !important;
	flex: none !important;
	width: auto !important;
	max-width: 118px !important;
	height: 36px !important;
	max-height: 36px !important;
	object-fit: contain !important;
	margin: 0 !important;
	vertical-align: middle !important;
}

.login .main .mdc-captcha .mdc-captcha-hint,
.login .main .mdc-captcha .sanxio-captcha-status,
.login .main .mdc-captcha--admin-login .mdc-captcha-hint,
.login .main .mdc-captcha--admin-login .sanxio-captcha-status {
	width: 256px !important;
	max-width: 100% !important;
	box-sizing: border-box !important;
	word-break: break-word;
}

.login .main .mdc-captcha .sanxio-captcha-status,
.login .main .mdc-captcha--admin-login .sanxio-captcha-status {
	font-size: 13px;
	font-weight: 500;
	margin-top: 4px;
}

.login .main > div:has(.mdc-captcha) {
	overflow: visible !important;
}
/*======= sanxio 管理登录 admin/login.tpl 与 login.css 兼容 end ===========*/
