*{margin:0;padding:0;box-sizing:border-box;font-family:"PingFang SC","Microsoft YaHei",sans-serif;user-select:none;-webkit-user-select:none;}
body{
background: linear-gradient(180deg, #eaf0ff 0%, #f6e8ff 100%);
width:100vw;height:100vh;overflow:hidden;
}
ul,li{list-style:none;}
a{text-decoration:none;color:inherit;}

/* ========== 启动闪屏 ========== */
.splash-wrap{
position:fixed;inset:0;
background: linear-gradient(180deg, #eaf0ff 0%, #f6e8ff 100%);
z-index:9999;display:flex;flex-direction:column;align-items:center;justify-content:center;
opacity:1;
transition:opacity 1.4s ease;
pointer-events:auto;
}
.splash-wrap.fade-out{
opacity:0;
z-index:-1;
transition:opacity 1.4s ease;
}
.splash-logo{
width:8rem;height:8rem;border-radius:1.2rem;overflow:hidden;
transform:scale(0.85);opacity:0;
animation:logoAnim 2.2s ease forwards;
background:linear-gradient(135deg,#4086f5,#7b61ff);
}
.splash-logo img{width:100%;height:100%;object-fit:cover;}
.splash-name{
font-size:2rem;font-weight:500;color:#222;margin-top:2rem;opacity:0;
animation:textAnim 2.2s ease forwards;animation-delay:0.4s;
}
.splash-tip{
font-size:1.1rem;color:#888;margin-top:1.5rem;opacity:0;
animation:textAnim 2.2s ease forwards;animation-delay:0.8s;
text-align:center;
}
/* 加载跳动圆点动画 */
.loading-dots {
display:inline-block;
}
.loading-dots span {
display:inline-block;
width:8px;
height:8px;
border-radius:50%;
background:#888;
animation:dotBounce 1.4s infinite ease-in-out both;
margin-left:2px;
vertical-align:middle;
}
.loading-dots span:nth-child(1){animation-delay:-0.32s;}
.loading-dots span:nth-child(2){animation-delay:-0.16s;}
.loading-dots span:nth-child(3){animation-delay:0s;}
@keyframes dotBounce {
0%,80%,100%{transform:scale(0.5);opacity:0.4;}
40%{transform:scale(1);opacity:1;}
}
@keyframes logoAnim{
0%{opacity:0;transform:scale(0.85);}
70%{opacity:1;transform:scale(1.05);}
100%{opacity:1;transform:scale(1);}
}
@keyframes textAnim{to{opacity:1;}}

/* 重试按钮 */
.retry-btn {
margin-top:32px;
padding:9px 26px;
border:none;border-radius:6px;
background:#4086f5;color:#fff;font-size:1rem;
cursor:pointer;display:none;
transition:0.2s;
z-index:10001;
}
.retry-btn:active {opacity:0.9;transform:scale(0.98);}

/* ========== 登录主界面 从下往上滑入 ========== */
.auth-wrap {
width:100vw;height:100vh;
opacity:0;
transform:translateY(18px);
transition:opacity 1.2s ease, transform 1.2s ease;
display:flex;
align-items:flex-start;
justify-content:center;
overflow:hidden;
}
.auth-wrap.show {
opacity:1;
transform:translateY(0);
}
.auth-scroll-inner{
width:100%;
max-width:34rem;
padding:4rem 1.6rem;
overflow-y:auto;
overflow-x:hidden;
max-height:100vh;
-webkit-overflow-scrolling:touch;
}

.auth-logo {
width:8rem;height:8rem;border-radius:1.2rem;
background:linear-gradient(135deg,#4086f5,#7b61ff);
margin:0 auto 2rem auto;
display:flex;align-items:center;justify-content:center;overflow:hidden;
}
.auth-logo img {width:100%;height:100%;object-fit:cover;}
.app-name {font-size:2rem;font-weight:500;color:#222;margin-bottom:3rem;text-align:center;}
.auth-card {
width:100%;background:#fff;border-radius:1.2rem;overflow:hidden;
}
.auth-tab {display:flex;border-bottom:1px solid #eee;}
.auth-tab-item {
flex:1;text-align:center;height:4.4rem;line-height:4.4rem;
font-size:1.5rem;color:#999;cursor:pointer;
transition:color 0.3s;
}
.auth-tab-item.active {color:#4086f5;border-bottom:2px solid; border-image:linear-gradient(135deg,#4086f5,#7b61ff) 1;}
.auth-form {padding:2.2rem 1.8rem;min-height:18rem;transition:opacity 0.35s;}
.input-group {margin-bottom:1.6rem;}
/* QQ风格输入框：大圆角 */
.input-box {
border:1px solid #dde1e8;display:flex;align-items:center;
height:4.6rem;padding:0 1.2rem;border-radius:1.2rem;background:#fff;
gap:0.8rem;
}
.input-box input {
flex:1;height:100%;border:none;outline:none;
font-size:1.4rem;user-select:text;-webkit-user-select:text;
min-width:0;
background:transparent;
}
.eye-icon {
font-size:1.6rem;color:#999;cursor:pointer;
flex-shrink:0;
}
.submit-btn {
width:100%;height:4.4rem;
background:linear-gradient(135deg,#4086f5,#7b61ff);
border:none;border-radius:1.2rem;color:#fff;font-size:1.5rem;
margin-top:0.6rem;cursor:pointer;transition:opacity 0.2s;
}
.submit-btn:active {opacity:0.9;transform:scale(0.98);}
.register-form {display:none;}
.forget-row {
display:flex;justify-content:space-between;
margin-top:1.4rem;
margin-bottom:0.4rem;
gap:1rem;
}
.forget-link {font-size:1.2rem;color:#4086f5;cursor:pointer;}

/* 全局消息弹窗 */
.msg-mask {
position:fixed;inset:0;background:rgba(0,0,0,0.4);
display:flex;align-items:center;justify-content:center;
z-index:10000;
opacity:0;pointer-events:none;
transition:opacity 0.3s ease;
padding:1rem;
}
.msg-mask.show{opacity:1;pointer-events:auto;}
.msg-dialog {
width:85%;max-width:340px;background:#fff;border-radius:16px;overflow:hidden;
transform:scale(0.92);transition:transform 0.3s ease;
max-height:90vh;overflow-y:auto;-webkit-overflow-scrolling:touch;
}
.msg-mask.show .msg-dialog{transform:scale(1);}
.msg-text {padding:32px 24px;text-align:center;font-size:18px;color:#222;line-height:1.6;}
.msg-confirm {
width:100%;height:56px;border:none;
background:linear-gradient(135deg,#4086f5,#7b61ff);
color:#fff;font-size:18px;cursor:pointer;
}

/*确认弹窗*/
.confirm-mask{
position:fixed;inset:0;background:rgba(0,0,0,0.4);
display:flex;align-items:center;justify-content:center;
z-index:10000;
opacity:0;pointer-events:none;
transition:opacity 0.3s ease;
padding:1rem;
}
.confirm-mask.show{opacity:1;pointer-events:auto;}
.confirm-dialog{
width:85%;max-width:340px;background:#fff;border-radius:16px;overflow:hidden;
transform:scale(0.92);transition:transform 0.3s ease;
max-height:90vh;overflow-y:auto;-webkit-overflow-scrolling:touch;
}
.confirm-mask.show .confirm-dialog{transform:scale(1);}
.confirm-text{padding:32px 24px;text-align:center;font-size:18px;color:#222;line-height:1.6;}
.confirm-btn-row{display:flex;}
.confirm-cancel{flex:1;height:56px;border:none;background:#bbbbbb;color:#fff;font-size:18px;cursor:pointer;}
.confirm-sure{flex:1;height:56px;border:none;background:#ed4343;color:#fff;font-size:18px;cursor:pointer;}

/* 找回密码弹窗 修复输入框间距，对齐截图 */
.forget-mask {
position:fixed;inset:0;background:rgba(0,0,0,0.4);
display:flex;align-items:center;justify-content:center;
z-index:101;padding:1rem;
opacity:0;pointer-events:none;
transition:opacity 0.3s ease;
}
.forget-mask.show{opacity:1;pointer-events:auto;}
.forget-dialog {
width:100%;max-width:32rem;background:#fff;border-radius:1rem;overflow:hidden;
transform:scale(0.92);transition:transform 0.3s ease;
max-height:88vh;overflow-y:auto;-webkit-overflow-scrolling:touch;
}
.forget-mask.show .forget-dialog{transform:scale(1);}
.forget-title {text-align:center;padding:2rem;font-size:1.6rem;border-bottom:1px solid #eee;}
.forget-body {padding:2rem;}
.forget-input {
width:100%;height:4.4rem;padding:0 1rem;border:1px solid #dde1e8;border-radius:1rem;font-size:1.3rem;margin-bottom:1.8rem;
}
.code-row {display:flex;gap:0.9rem;align-items:center;margin-bottom:1.8rem;}
.code-row .forget-input {margin-bottom:0;flex:1;min-width:0;}
.code-btn {
white-space:nowrap;padding:0 1rem;border:1px solid #4086f5;background:#fff;color:#4086f5;border-radius:1rem;cursor:pointer;font-size:1.2rem;min-height:4.4rem;
flex-shrink:0;
transition:0.2s;
}
.code-btn:active{transform:scale(0.97);}
.code-btn:disabled {
    border-color:#bbbbbb !important;
    color:#bbbbbb !important;
    background:#f7f7f7 !important;
    cursor:not-allowed;
    transform:none !important;
}
.forget-submit {
width:100%;height:4.4rem;background:linear-gradient(135deg,#4086f5,#7b61ff);border:none;border-radius:1rem;color:#fff;font-size:1.4rem;margin-top:0.4rem;cursor:pointer;transition:0.2s;
}
.forget-submit:active{opacity:0.9;transform:scale(0.98);}
.forget-cancel {text-align:center;margin-top:1.6rem;font-size:1.2rem;color:#666;cursor:pointer;}

/* 找回账号弹窗 */
.findacc-mask {
position:fixed;inset:0;background:rgba(0,0,0,0.4);
display:flex;align-items:center;justify-content:center;
z-index:102;padding:1rem;
opacity:0;pointer-events:none;
transition:opacity 0.3s ease;
}
.findacc-mask.show{opacity:1;pointer-events:auto;}
.findacc-dialog {
width:100%;max-width:36rem;background:#fff;border-radius:1rem;overflow:hidden;
transform:scale(0.92);transition:transform 0.3s ease;
max-height:88vh;overflow-y:auto;-webkit-overflow-scrolling:touch;
}
.findacc-mask.show .findacc-dialog{transform:scale(1);}
.findacc-title {text-align:center;padding:1.6rem;font-size:1.6rem;border-bottom:1px solid #eee;font-weight:bold;}
.findacc-body {padding:2rem;}
.findacc-input {
width:100%;height:4.4rem;padding:0 1rem;border:1px solid #dde1e8;border-radius:1rem;font-size:1.3rem;margin-bottom:1.8rem;
}
.acc-code-row {display:flex;gap:0.9rem;align-items:center;margin-bottom:1.4rem;}
.acc-code-row .findacc-input {margin-bottom:0;flex:1;min-width:0;}
.query-acc-btn {
width:100%;height:4.4rem;background:linear-gradient(135deg,#4086f5,#7b61ff);border:none;border-radius:1rem;color:#fff;font-size:1.3rem;cursor:pointer;transition:0.2s;
}
.query-acc-btn:active{opacity:0.9;transform:scale(0.98);}
.acc-email-show {padding:0.8rem 0;text-align:center;font-size:1.2rem;color:#333;}
.acc-list-wrap {max-height:18rem;overflow-y:auto;margin:1rem 0;display:none;border:1px solid #eee;border-radius:0.6rem;}
.acc-item {
display:flex;align-items:center;justify-content:space-between;
padding:0.9rem 1rem;border-bottom:1px solid #eee;gap:0.6rem;
}
.acc-item:last-child {border-bottom:none;}
.acc-uid-text {font-size:1.2rem;font-weight:bold;}
.btn-reset {
padding:0.4rem 0.8rem;border:none;border-radius:0.4rem;background:#4086f5;color:#fff;cursor:pointer;flex-shrink:0;
}
.btn-del {
padding:0.4rem 0.8rem;border:none;border-radius:0.4rem;background:#ed4343;color:#fff;cursor:pointer;flex-shrink:0;
}
.findacc-close {text-align:center;margin-top:1.2rem;font-size:1.2rem;color:#666;cursor:pointer;}
