/* pages/login/login.wxss */ .login-container { height: 100vh; width: 100%; position: relative; overflow: hidden; background: linear-gradient(180deg, #f8fafc 0%, #f0f9ff 100%); } /* 波浪背景 */ .wave-background { position: absolute; top: 0; left: 0; width: 100%; height: 400rpx; overflow: hidden; } .wave { position: absolute; bottom: 0; width: 200%; height: 100%; background: linear-gradient(90deg, #86D8D0 0%, #A8E6CF 100%); border-radius: 0 0 50% 50%; animation: waveMove 15s linear infinite; } .wave-1 { opacity: 0.7; animation-delay: 0s; } .wave-2 { opacity: 0.5; animation-delay: 5s; background: linear-gradient(90deg, #7ACCC4 0%, #98D6C6 100%); } .wave-3 { opacity: 0.3; animation-delay: 10s; background: linear-gradient(90deg, #6EC0B8 0%, #88C6BD 100%); } @keyframes waveMove { 0% { transform: translateX(0) rotate(0deg); } 50% { transform: translateX(-25%) rotate(1deg); } 100% { transform: translateX(-50%) rotate(0deg); } } /* 装饰元素 */ .decorations { position: absolute; width: 100%; height: 100%; pointer-events: none; } .cloud { position: absolute; background-color: rgba(255, 255, 255, 0.9); border-radius: 100rpx; } .cloud-1 { width: 120rpx; height: 40rpx; top: 120rpx; left: 10%; box-shadow: 20rpx 0 0 0 rgba(255, 255, 255, 0.9), 40rpx 0 0 0 rgba(255, 255, 255, 0.9); } .cloud-2 { width: 90rpx; height: 30rpx; top: 80rpx; right: 15%; box-shadow: 15rpx 0 0 0 rgba(255, 255, 255, 0.9), 30rpx 0 0 0 rgba(255, 255, 255, 0.9); } .cloud-3 { width: 70rpx; height: 25rpx; top: 180rpx; left: 70%; box-shadow: 12rpx 0 0 0 rgba(255, 255, 255, 0.9), 24rpx 0 0 0 rgba(255, 255, 255, 0.9); } .grass { position: absolute; bottom: 0; width: 8rpx; background-color: #86D8D0; border-radius: 4rpx 4rpx 0 0; } .grass-1 { height: 80rpx; left: 20%; } .grass-2 { height: 60rpx; left: 35%; } .grass-3 { height: 100rpx; left: 50%; } .grass:before, .grass:after { content: ''; position: absolute; width: 8rpx; background-color: #86D8D0; border-radius: 4rpx; } .grass:before { height: 40rpx; transform: rotate(-30deg); top: -20rpx; left: -10rpx; } .grass:after { height: 30rpx; transform: rotate(30deg); top: -15rpx; right: -10rpx; } .sheep { position: absolute; bottom: 120rpx; right: 20%; width: 80rpx; height: 50rpx; background-color: white; border-radius: 50%; box-shadow: -15rpx -10rpx 0 0 white, 15rpx -8rpx 0 0 white; } .sheep:before { content: ''; position: absolute; width: 20rpx; height: 20rpx; background-color: #333; border-radius: 50%; top: -5rpx; left: 15rpx; } /* 主要内容区域 */ .main-content { position: relative; z-index: 10; height: 100%; display: flex; flex-direction: column; padding: 0 60rpx; padding-top: 120rpx; } /* Logo区域 */ .logo-section { display: flex; flex-direction: column; align-items: center; margin-bottom: 120rpx; } .logo-container { margin-bottom: 40rpx; } .logo-circle { width: 180rpx; height: 180rpx; border-radius: 50%; background: linear-gradient(135deg, #86D8D0 0%, #6BC4BC 100%); display: flex; align-items: center; justify-content: center; box-shadow: 0 20rpx 40rpx rgba(134, 216, 208, 0.3), inset 0 -4rpx 8rpx rgba(107, 196, 188, 0.4), inset 0 4rpx 8rpx rgba(255, 255, 255, 0.8); position: relative; } .logo-circle:before { content: ''; position: absolute; width: 160rpx; height: 160rpx; border-radius: 50%; border: 2rpx solid rgba(255, 255, 255, 0.3); } .logo-inner { width: 140rpx; height: 140rpx; border-radius: 50%; background: white; display: flex; align-items: center; justify-content: center; box-shadow: inset 0 4rpx 8rpx rgba(134, 216, 208, 0.2), 0 4rpx 8rpx rgba(0, 0, 0, 0.1); } .logo-text { font-size: 64rpx; font-weight: bold; color: #86D8D0; letter-spacing: 4rpx; } .app-title { font-size: 56rpx; font-weight: 700; color: #333; margin-bottom: 16rpx; letter-spacing: 2rpx; } /* 登录区域 */ .login-section { display: flex; flex-direction: column; align-items: center; } .welcome-text { text-align: center; margin-bottom: 80rpx; } .welcome-main { display: block; font-size: 44rpx; font-weight: 600; color: #333; margin-bottom: 16rpx; } .welcome-desc { display: block; font-size: 28rpx; color: #888; font-weight: 300; } /* 手机号登录按钮 */ .phone-login-btn { width: 100%; height: 100rpx; border-radius: 50rpx; background: linear-gradient(to right, #86D8D0, #6BC4BC); box-shadow: 0 12rpx 24rpx rgba(134, 216, 208, 0.3), 0 4rpx 12rpx rgba(0, 0, 0, 0.08); margin-bottom: 50rpx; transition: all 0.3s ease; } .phone-btn-hover { transform: translateY(-4rpx); box-shadow: 0 16rpx 32rpx rgba(134, 216, 208, 0.4), 0 6rpx 16rpx rgba(0, 0, 0, 0.12); } .btn-inner { display: flex; align-items: center; justify-content: center; height: 100%; } .btn-inner image { width: 45rpx; height: 45rpx; padding: 0 20rpx; } .btn-text { color: white; font-size: 34rpx; font-weight: 500; letter-spacing: 2rpx; } /* 协议确认 */ .agreement-section { display: flex; align-items: center; justify-content: center; } .agreement-checkbox { width: 30rpx; height: 30rpx; border: 2rpx solid #ccc; border-radius: 6rpx; margin-right: 16rpx; display: flex; align-items: center; justify-content: center; transition: all 0.2s ease; } .agreement-checkbox.checked { background-color: #86D8D0; border-color: #86D8D0; } .checkmark { color: white; font-size: 24rpx; font-weight: bold; } .agreement-text { font-size: 24rpx; color: #888; display: flex; align-items: center; } .link { color: #86D8D0; } /* 底部装饰 */ .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, #86D8D0 0%, #A8E6CF 100%); border-radius: 50% 50% 0 0; animation: bottomWave 20s linear infinite; } @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; } .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; } /* 加载提示 */ .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(134, 216, 208, 0.2); border-top-color: #86D8D0; 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; font-weight: 300; }