/* 前台会员登录页专用样式（与 style.css / bootstrap 保持同一视觉，不依赖 layui） */

/* 表单错误提示 */
.signin-form .form-group.has-error .form-control {
    border: 1px solid #d9534f;
    background: #fffafa;
}

.signin-form .form-group.has-error .form-control:hover,
.signin-form .form-group.has-error .form-control:focus {
    border: 1px solid #d9534f;
}

.field-error {
    display: none;
    margin-top: 8px;
    font-size: 14px;
    line-height: 20px;
    color: #d9534f;
}

.form-group.has-error .field-error {
    display: block;
}

/* 服务端错误提示条（替代 layui layer.msg） */
.signin-alert {
    display: none;
    box-sizing: border-box;
    width: 100%;
    max-width: 620px;
    margin: 0 auto 12px;
    padding: 12px 16px;
    font-size: 15px;
    line-height: 22px;
    color: #b33a3a;
    text-align: left;
    white-space: pre-line;
    background: #fdf3f3;
    border: 1px solid #f0c9c9;
    border-radius: 3px;
}

.signin-alert.is-show {
    display: block;
}

/* 登录按钮加载态 */
.btn.signin_btn {
    display: inline-flex;
    align-items: center;
    justify-content: center;
    gap: 8px;
}

.btn.signin_btn[disabled] {
    cursor: default;
    opacity: .75;
}

.btn-spinner {
    display: none;
    width: 16px;
    height: 16px;
    border: 2px solid rgba(255, 255, 255, .45);
    border-top-color: #fff;
    border-radius: 50%;
    animation: signin-spin .7s linear infinite;
}

.btn.signin_btn.is-loading .btn-spinner {
    display: block;
}

@keyframes signin-spin {
    to {
        transform: rotate(360deg);
    }
}

/* ALTCHA 验证条：与输入框同宽同高（46px）、同圆角（3px） */
.signin altcha-widget {
    display: block;
    width: 100%;
    --altcha-max-width: 100%;
    --altcha-border-width: 1px;
    --altcha-border-radius: 3px;
    --altcha-color-base: transparent;
    --altcha-color-border: #c3c6cf;
    --altcha-color-text: #464e60;
    --altcha-color-border-focus: #474d5b;
    --altcha-color-error-text: #d9534f;
    --altcha-color-footer-bg: #f7f7f7;
}

.signin .altcha-form .altcha {
    width: 100%;
    max-width: 100%;
    height: 46px;
    overflow: hidden;
    transition: border-color .3s, box-shadow .3s;
}

.signin .altcha-form .altcha:hover {
    box-shadow: 0 5px 10px rgba(45, 50, 64, .2);
}

.signin .altcha-form .altcha:focus-within {
    border-color: #474d5b;
}

/* flex 精确对齐：复选框与文案在 46px 内垂直居中，间距 9px */
.signin .altcha-form .altcha-main {
    width: 100%;
    height: 100%;
    padding: 0 18px;
    gap: 9px;
    line-height: 20px;
}

.signin .altcha-form .altcha-checkbox {
    flex: 0 0 24px;
    width: 24px;
    height: 24px;
}

.signin .altcha-form .altcha-checkbox input {
    width: 18px;
    height: 18px;
    margin: 0;
    accent-color: #5a84fd;
}

.signin .altcha-form .altcha-label {
    flex: 1;
    position: static;
    left: auto;
    top: auto;
    margin: 0;
    padding: 0;
    font-size: 16px;
    font-weight: 400;
    line-height: 20px;
    color: #464e60;
    background: transparent;
    white-space: nowrap;
    cursor: pointer;
    text-transform: none;
}

/* 客服二维码浮层（替代原 layer.photos） */
.wx-lightbox {
    display: none;
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    bottom: 0;
    z-index: 99;
    align-items: center;
    justify-content: center;
    background: rgba(20, 25, 40, .55);
}

.wx-lightbox.is-show {
    display: flex;
}

.wx-lightbox-inner {
    padding: 12px;
    text-align: center;
    background: #fff;
    border-radius: 6px;
}

.wx-lightbox-inner img {
    display: block;
    max-width: 78vw;
    max-height: 70vh;
    margin: 0 auto;
}

.wx-lightbox-close {
    margin-top: 10px;
    padding: 4px 18px;
    font-size: 14px;
    color: #464e60;
    background: #fff;
    border: 1px solid #c3c6cf;
    border-radius: 3px;
    cursor: pointer;
}
