/* pages/login/login.wxss — 忠于 H5 原型,TDesign 组件定制 */ .page { height: 100vh; display: flex; flex-direction: column; background: linear-gradient(135deg, #e0f2fe 0%, #f0f9ff 50%, #ecfeff 100%); position: relative; overflow: hidden; box-sizing: border-box; /* padding-top 由 JS statusBarHeight 动态设置,box-sizing 确保 padding 包含在 100vh 内 */ } /* ---- 装饰圆形 ---- */ .deco-circle { position: absolute; border-radius: 50%; z-index: 0; } .deco-circle--1 { width: 176rpx; height: 176rpx; background: radial-gradient(circle, rgba(0, 82, 217, 0.12) 0%, transparent 70%); top: 140rpx; left: 56rpx; opacity: 0.8; animation: pulse-soft 3s ease-in-out infinite; } .deco-circle--2 { width: 210rpx; height: 210rpx; background: radial-gradient(circle, rgba(103, 232, 249, 0.12) 0%, transparent 70%); top: 280rpx; right: 42rpx; opacity: 0.8; animation: pulse-soft 3s ease-in-out infinite 1s; } .deco-circle--3 { width: 140rpx; height: 140rpx; background: radial-gradient(circle, rgba(96, 165, 250, 0.12) 0%, transparent 70%); bottom: 280rpx; left: 84rpx; opacity: 0.8; animation: pulse-soft 3s ease-in-out infinite 0.5s; } /* ---- Hero 区域 ---- */ .hero { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; padding: 0 56rpx; position: relative; z-index: 1; } /* ---- Logo ---- */ .logo-wrap { position: relative; margin-bottom: 42rpx; } .logo-box { width: 168rpx; height: 168rpx; border-radius: 42rpx; background: linear-gradient(135deg, #0052d9, #60a5fa); display: flex; align-items: center; justify-content: center; box-shadow: 0 14rpx 42rpx rgba(0, 82, 217, 0.3); } .logo-icon { width: 98rpx; height: 98rpx; } .logo-dot { position: absolute; border-radius: 50%; } .logo-dot--tr { width: 28rpx; height: 28rpx; background: #22d3ee; top: -8rpx; right: -8rpx; box-shadow: 0 4rpx 10rpx rgba(34, 211, 238, 0.4); } .logo-dot--bl { width: 22rpx; height: 22rpx; background: #93c5fd; bottom: -14rpx; left: -14rpx; box-shadow: 0 4rpx 10rpx rgba(147, 197, 253, 0.4); } /* ---- 应用名称 ---- */ .app-name { font-size: 42rpx; font-weight: 700; color: #242424; margin-bottom: 14rpx; } .app-desc { font-size: 24rpx; color: #8b8b8b; text-align: center; line-height: 1.625; margin-bottom: 56rpx; } /* ---- 功能亮点 ---- */ .features { width: 100%; display: flex; justify-content: space-around; background: rgba(255, 255, 255, 0.85); border-radius: 28rpx; padding: 36rpx 18rpx; margin-bottom: 42rpx; } .feature-item { display: flex; flex-direction: column; align-items: center; gap: 14rpx; } .feature-icon { width: 70rpx; height: 70rpx; border-radius: 22rpx; display: flex; align-items: center; justify-content: center; } .feature-icon--primary { background: rgba(0, 82, 217, 0.1); } .feature-icon--success { background: rgba(0, 168, 112, 0.1); } .feature-icon--warning { background: rgba(237, 123, 47, 0.1); } .feature-text { font-size: 22rpx; color: #5e5e5e; font-weight: 500; } /* ---- 底部操作区 ---- */ .bottom-area { width: 100%; padding: 0 56rpx 70rpx; position: relative; z-index: 1; box-sizing: border-box; } /* TDesign Button 替换为原生 view 按钮,避免 TDesign 默认样式干扰 */ .login-btn-wrap { width: 100%; height: 84rpx; border-radius: 22rpx; display: flex; align-items: center; justify-content: center; gap: 10rpx; font-weight: 500; font-size: 28rpx; transition: all 0.2s; } .wechat-icon { width: 36rpx; height: 36rpx; } .login-btn-text { color: #ffffff; font-size: 28rpx; font-weight: 500; } /* 未勾选协议 → 灰色禁用态(忠于原型 btn-disabled) */ .login-btn--disabled { background: #dcdcdc; } .login-btn--disabled .login-btn-text { color: #ffffff; } /* 勾选协议 → 蓝色渐变(忠于原型 from-primary to-blue-500) */ .login-btn--active { background: linear-gradient(135deg, #0052d9, #3b82f6); box-shadow: 0 10rpx 28rpx rgba(0, 82, 217, 0.3); } /* ---- 协议勾选 ---- */ .agreement { display: flex; flex-direction: row; align-items: flex-start; margin-top: 36rpx; } .checkbox { width: 28rpx; height: 28rpx; min-width: 28rpx; min-height: 28rpx; border: 2rpx solid #dcdcdc; border-radius: 6rpx; display: flex; align-items: center; justify-content: center; margin-top: 4rpx; margin-right: 10rpx; background: transparent; flex-shrink: 0; transition: all 0.2s; } .checkbox--checked { background: #0052d9; border-color: #0052d9; } .agreement-text-wrap { flex: 1; font-size: 22rpx; line-height: 1.625; } .agreement-text { font-size: 22rpx; color: #8b8b8b; line-height: 1.625; } .link { color: #0052d9; font-weight: 500; font-size: 22rpx; line-height: 1.625; } /* ---- 底部提示 ---- */ .footer-tip { display: block; width: 100%; text-align: center; font-size: 22rpx; color: #c5c5c5; margin-top: 42rpx; } /* ---- 动画 ---- */ @keyframes float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-14rpx); } } .float-animation { animation: float 4s ease-in-out infinite; } @keyframes pulse-soft { 0%, 100% { opacity: 0.4; } 50% { opacity: 0.8; } }