|
|
/* pages/login/login.wxss */
.login-container { height: 100vh; width: 100%; position: relative; overflow: hidden; background: linear-gradient(180deg, #f0f9ff 0%, #e6f3fe 100%);}
/* 波浪背景 */.wave-background { position: absolute; top: 0; left: 0; width: 100%; height: 450rpx; overflow: hidden;}
.wave { position: absolute; bottom: 0; width: 200%; height: 100%; background: linear-gradient(135deg, #4A90E2 0%, #67B26F 100%); border-radius: 0 0 50% 50%; animation: waveMove 15s ease-in-out infinite;}
.wave-1 { opacity: 0.8; animation-delay: 0s;}
.wave-2 { opacity: 0.5; animation-delay: 5s; background: linear-gradient(135deg, #5A9FE2 0%, #77C27F 100%);}
.wave-3 { opacity: 0.3; animation-delay: 10s; background: linear-gradient(135deg, #6AAFE2 0%, #87D28F 100%);}
@keyframes waveMove { 0% { transform: translateX(0) rotate(0deg); } 25% { transform: translateX(-15%) rotate(1deg); } 50% { transform: translateX(-25%) rotate(0deg); } 75% { transform: translateX(-15%) rotate(-1deg); } 100% { transform: translateX(0) rotate(0deg); }}
/* 装饰元素 */.decorations { position: absolute; width: 100%; height: 100%; pointer-events: none;}
.cloud { position: absolute; background: rgba(255, 255, 255, 0.9); border-radius: 100rpx; filter: blur(2rpx);}
.cloud-1 { width: 140rpx; height: 45rpx; top: 120rpx; left: 8%; box-shadow: 25rpx 0 0 0 rgba(255, 255, 255, 0.9), 50rpx 0 0 0 rgba(255, 255, 255, 0.9); animation: floatCloud 20s infinite;}
.cloud-2 { width: 100rpx; height: 35rpx; top: 80rpx; right: 12%; box-shadow: 18rpx 0 0 0 rgba(255, 255, 255, 0.9), 36rpx 0 0 0 rgba(255, 255, 255, 0.9); animation: floatCloud 25s infinite reverse;}
.cloud-3 { width: 80rpx; height: 28rpx; top: 180rpx; left: 65%; box-shadow: 14rpx 0 0 0 rgba(255, 255, 255, 0.9), 28rpx 0 0 0 rgba(255, 255, 255, 0.9); animation: floatCloud 18s infinite;}
@keyframes floatCloud { 0%, 100% { transform: translateX(0); } 50% { transform: translateX(30rpx); }}
.medical-icon { position: absolute; font-size: 60rpx; opacity: 0.2; animation: floatIcon 6s ease-in-out infinite;}
.icon-1 { top: 200rpx; left: 15%; animation-delay: 0s;}
.icon-2 { bottom: 200rpx; right: 15%; animation-delay: 1s;}
.icon-3 { bottom: 300rpx; left: 20%; animation-delay: 2s;}
@keyframes floatIcon { 0%, 100% { transform: translateY(0) rotate(0deg); } 50% { transform: translateY(-20rpx) rotate(5deg); }}
/* 主要内容区域 */.main-content { position: relative; z-index: 10; height: 100%; display: flex; flex-direction: column; padding: 0 60rpx; padding-top: 100rpx; box-sizing: border-box;}
/* Logo区域 */.logo-section { display: flex; flex-direction: column; align-items: center; margin-bottom: 60rpx; animation: logoAppear 1s ease-out;}
@keyframes logoAppear { 0% { opacity: 0; transform: scale(0.8); } 100% { opacity: 1; transform: scale(1); }}
.logo-circle { width: 160rpx; height: 160rpx; border-radius: 50%; background: linear-gradient(135deg, #4A90E2, #67B26F); display: flex; align-items: center; justify-content: center; box-shadow: 0 20rpx 40rpx rgba(74, 144, 226, 0.3), inset 0 -4rpx 8rpx rgba(0, 0, 0, 0.1), inset 0 4rpx 8rpx rgba(255, 255, 255, 0.8); position: relative;}
.logo-circle:before { content: ''; position: absolute; width: 140rpx; height: 140rpx; border-radius: 50%; border: 2rpx solid rgba(255, 255, 255, 0.5);}
.logo-inner { width: 120rpx; height: 120rpx; border-radius: 50%; background: white; display: flex; align-items: center; justify-content: center; box-shadow: inset 0 2rpx 10rpx rgba(0, 0, 0, 0.1);}
.logo-text { font-size: 70rpx; font-weight: bold; line-height: 1;}
.app-title { font-size: 48rpx; font-weight: 700; color: #2c3e50; margin-bottom: 8rpx; letter-spacing: 2rpx; text-shadow: 0 2rpx 4rpx rgba(0, 0, 0, 0.1);}
.app-subtitle { font-size: 24rpx; color: #7f8c8d; letter-spacing: 4rpx; text-transform: uppercase;}
/* 登录区域 */.login-section { display: flex; flex-direction: column; align-items: center; flex: 1;}
.welcome-text { text-align: center; margin-bottom: 60rpx; animation: slideUp 0.8s ease-out;}
@keyframes slideUp { 0% { opacity: 0; transform: translateY(30rpx); } 100% { opacity: 1; transform: translateY(0); }}
.welcome-main { display: block; font-size: 40rpx; font-weight: 600; color: #2c3e50; margin-bottom: 12rpx;}
.welcome-desc { display: block; font-size: 26rpx; color: #95a5a6;}
/* 输入框组 */.input-group { width: 100%; margin-bottom: 40rpx; animation: slideUp 0.8s ease-out 0.1s both;}
.input-wrapper { display: flex; align-items: center; background: white; border-radius: 60rpx; padding: 0 30rpx; margin-bottom: 30rpx; transition: all 0.3s ease;}
.input-wrapper.input-focused { border-color: #4A90E2; box-shadow: 0 8rpx 20rpx rgba(74, 144, 226, 0.15); transform: translateY(-2rpx);}
.input-icon { margin-right: 20rpx; opacity: 0.7; width: 40rpx; height: 40rpx;}
.input-wrapper input { flex: 1; height: 90rpx; font-size: 28rpx; color: #2c3e50;}
.input-placeholder { color: #bdc3c7; font-size: 28rpx;}
.password-toggle { padding: 20rpx; font-size: 36rpx; opacity: 0.6; transition: opacity 0.3s ease; /* 提高点击区域 */ min-width: 80rpx; display: flex; align-items: center; justify-content: center; /* 防止事件冒泡 */ z-index: 10;}
.password-toggle:active { opacity: 1; transform: scale(1.1);}
/* 登录按钮 */.login-btn { width: 100%; height: 100rpx; border-radius: 50rpx; background: linear-gradient(135deg, #4A90E2, #67B26F); box-shadow: 0 12rpx 30rpx rgba(74, 144, 226, 0.3); margin-bottom: 40rpx; transition: all 0.3s ease; animation: slideUp 0.8s ease-out 0.2s both; border: none; padding: 0; line-height: 100rpx;}.login-btn::after{ border: none;}
.login-btn.btn-disabled { opacity: 0.5; background: #bdc3c7; box-shadow: none; pointer-events: none;}
.btn-hover { transform: translateY(-4rpx) scale(1.02); box-shadow: 0 16rpx 40rpx rgba(74, 144, 226, 0.4);}
.btn-inner { display: flex; align-items: center; justify-content: center; height: 100%; width: 100%;}
.btn-text { color: white; font-size: 34rpx; font-weight: 600; letter-spacing: 4rpx;}
/* 其他选项 */.options-section { width: 100%; display: flex; justify-content: center; margin-bottom: 30rpx; animation: slideUp 0.8s ease-out 0.3s both;}
.option-item { padding: 0 25rpx; position: relative;}
.option-item:not(:last-child):after { content: '|'; position: absolute; right: 0; top: 50%; transform: translateY(-50%); color: #e0e0e0;}
.option-text { font-size: 26rpx; color: #7f8c8d; transition: color 0.3s ease;}
.option-item:active .option-text { color: #4A90E2;}
/* 协议确认 */.agreement-section { display: flex; align-items: center; justify-content: center; animation: slideUp 0.8s ease-out 0.4s both;}
.agreement-checkbox { width: 32rpx; height: 32rpx; border: 2rpx solid #bdc3c7; border-radius: 8rpx; margin-right: 16rpx; display: flex; align-items: center; justify-content: center; transition: all 0.2s ease;}
.agreement-checkbox.checked { background: linear-gradient(135deg, #4A90E2, #67B26F); border-color: transparent;}
.checkmark { color: white; font-size: 24rpx; font-weight: bold;}
.agreement-text { font-size: 24rpx; color: #7f8c8d;}
.link { color: #4A90E2; display: inline; padding: 0 4rpx;}
.link:active { opacity: 0.7;}
/* 底部装饰 */.bottom-decor { position: absolute; bottom: 0; left: 0; width: 100%; height: 60rpx; overflow: hidden;}
.bottom-wave { position: absolute; top: 0; left: 0; width: 200%; height: 200%; background: linear-gradient(90deg, #4A90E2, #67B26F); border-radius: 50% 50% 0 0; animation: bottomWave 20s linear infinite; opacity: 0.2;}
@keyframes bottomWave { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(-25%) rotate(0.5deg); } 100% { transform: translateX(-50%) rotate(0deg); }}
/* 协议弹窗 */.agreement-modal { position: fixed; top: 0; left: 0; width: 100%; height: 100%; z-index: 1000; display: flex; align-items: center; justify-content: center;}
.modal-mask { position: absolute; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5);}
.modal-content { position: relative; width: 85%; max-height: 80%; background-color: white; border-radius: 24rpx; overflow: hidden; box-shadow: 0 20rpx 60rpx rgba(0, 0, 0, 0.15);}
.modal-header { padding: 40rpx; border-bottom: 1rpx solid #f0f0f0; display: flex; align-items: center; justify-content: space-between;}
.modal-title { font-size: 36rpx; font-weight: 600; color: #333;}
.modal-close { font-size: 48rpx; color: #999; line-height: 1; padding: 0 20rpx;}
.modal-close:active { color: #666;}
.modal-body { max-height: 600rpx; padding: 20rpx; box-sizing: border-box;}
.modal-text { font-size: 28rpx; color: #666; line-height: 1.8; padding: 20rpx 0; white-space: pre-line;}
/* 忘记密码弹窗内容 */.forgot-tip { font-size: 32rpx; color: #333; font-weight: 500; margin-bottom: 40rpx; text-align: center;}
.contact-info { background: #f8f9fa; border-radius: 16rpx; padding: 30rpx; margin-bottom: 40rpx;}
.contact-item { display: flex; justify-content: center; margin-bottom: 20rpx; font-size: 28rpx;}
.contact-item:last-child { margin-bottom: 0;}
.contact-label { color: #999; margin-right: 20rpx;}
.contact-value { color: #333; font-weight: 500;}
.contact-btn { width: 80%; height: 80rpx; border-radius: 40rpx; background: linear-gradient(135deg, #4A90E2, #67B26F); color: white; font-size: 32rpx; font-weight: 500; margin: 0 auto; display: flex; align-items: center; justify-content: center; border: none;}
.contact-btn:active { opacity: 0.8;}
/* 加载提示 */.loading-mask { position: fixed; top: 0; left: 0; width: 100%; height: 100%; background-color: rgba(0, 0, 0, 0.5); z-index: 1001; display: flex; align-items: center; justify-content: center;}
.loading-content { display: flex; flex-direction: column; align-items: center;}
.loading-spinner { width: 80rpx; height: 80rpx; border: 6rpx solid rgba(74, 144, 226, 0.2); border-top-color: #4A90E2; border-radius: 50%; animation: loadingSpin 1s linear infinite; margin-bottom: 30rpx;}
@keyframes loadingSpin { 0% { transform: rotate(0deg); } 100% { transform: rotate(360deg); }}
.loading-text { font-size: 28rpx; color: #fff;}
|