/* ============================================ 首页样式 - 爱印通 Apple Liquid Glass 设计系统 大字体大控件版本 - 微信小程序优化 ============================================ */ @import '../../styles/variables.css'; page { background: var(--bg-page-gradient); min-height: 100vh; } .index-page { min-height: 100vh; /* 增加底部填充,确保内容不被TabBar遮挡 */ padding-bottom: 320rpx; position: relative; /* 创建独立的堆叠上下文,确保毛玻璃效果正确渲染 */ z-index: 0; /* 确保背景正确传递,避免毛玻璃效果失效 */ background: transparent; } /* ========== 头部区域 ========== */ .header { background: var(--primary-gradient); padding: 192rpx 48rpx 144rpx; position: relative; overflow: hidden; border-radius: 0 0 64rpx 64rpx; } .header::before { content: ''; position: absolute; top: -20%; right: -10%; width: 600rpx; height: 600rpx; background: rgba(255, 255, 255, 0.15); border-radius: 50%; animation: float 6s cubic-bezier(0.4, 0, 0.2, 1) infinite; filter: blur(80rpx); } .header::after { content: ''; position: absolute; bottom: -15%; left: -5%; width: 400rpx; height: 400rpx; background: rgba(255, 255, 255, 0.1); border-radius: 50%; animation: float 8s cubic-bezier(0.4, 0, 0.2, 1) infinite reverse; filter: blur(60rpx); } @keyframes float { 0%, 100% { transform: translateY(0) scale(1); opacity: 0.8; } 50% { transform: translateY(-30rpx) scale(1.05); opacity: 1; } } .logo-area { display: flex; flex-direction: column; position: relative; z-index: 1; } .app-title { font-size: 88rpx; font-weight: 700; color: #7279be; letter-spacing: 4rpx; text-shadow: 0 4rpx 24rpx rgba(0, 0, 0, 0.15); line-height: 1.2; } .app-subtitle { font-size: 36rpx; color: rgba(255, 255, 255, 0.85); margin-top: 16rpx; letter-spacing: 2rpx; font-weight: 400; } /* ========== 登录按钮 ========== */ .login-section { padding: 0 48rpx; margin-top: -48rpx; position: relative; z-index: 2; animation: fadeInUp 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; } .login-btn { width: 100%; background: var(--bg-glass-heavy); backdrop-filter: blur(48rpx) saturate(180%); -webkit-backdrop-filter: blur(48rpx) saturate(180%); /* 增强的多层边框描边 */ border: 3rpx solid rgba(0, 122, 255, 0.3); outline: 1rpx solid rgba(255, 255, 255, 0.8); outline-offset: -4rpx; color: var(--primary); font-size: 34rpx; font-weight: 700; padding: 40rpx 0; border-radius: var(--radius-xl); /* 增强的阴影效果 */ box-shadow: 0 8rpx 32rpx rgba(0, 122, 255, 0.15), 0 2rpx 8rpx rgba(0, 0, 0, 0.06), inset 0 1rpx 0 rgba(255, 255, 255, 0.9), inset 0 -1rpx 0 rgba(0, 122, 255, 0.1); transition: all var(--transition-scale); letter-spacing: 2rpx; cursor: pointer; position: relative; z-index: 1; } /* 按钮内部光泽效果 */ .login-btn::before { content: ''; position: absolute; top: 2rpx; left: 2rpx; right: 2rpx; height: 50%; background: linear-gradient(180deg, rgba(255, 255, 255, 0.4) 0%, rgba(255, 255, 255, 0) 100%); border-radius: var(--radius-lg); pointer-events: none; } .login-btn:active { transform: scale(0.98); background: rgba(255, 255, 255, 0.95); border-color: rgba(0, 122, 255, 0.5); box-shadow: 0 4rpx 16rpx rgba(0, 122, 255, 0.1), 0 1rpx 4rpx rgba(0, 0, 0, 0.04), inset 0 1rpx 0 rgba(255, 255, 255, 0.9); } /* ========== 用户卡片 ========== */ .user-section { padding: 0 48rpx; margin-top: -48rpx; position: relative; z-index: 2; animation: fadeInUp 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) 0.1s forwards; opacity: 0; } .user-card { background: var(--bg-glass-heavy); backdrop-filter: blur(48rpx) saturate(180%); -webkit-backdrop-filter: blur(48rpx) saturate(180%); border-radius: var(--radius-xl); padding: 40rpx; display: flex; align-items: center; box-shadow: var(--shadow-lg); border: 1px solid var(--glass-border); transition: all var(--transition-base); } .user-card:active { transform: scale(0.99); } .avatar-wrapper { margin-right: 32rpx; position: relative; } .avatar-img { width: 128rpx; height: 128rpx; border-radius: 50%; border: 6rpx solid var(--bg-card-solid); box-shadow: var(--shadow-md); object-fit: cover; } .avatar-placeholder { width: 128rpx; height: 128rpx; background: var(--primary-gradient); border-radius: 50%; display: flex; align-items: center; justify-content: center; border: 6rpx solid var(--bg-card-solid); box-shadow: 0 8rpx 24rpx rgba(0, 122, 255, 0.3); } .avatar-text { font-size: 56rpx; color: #ffffff; font-weight: 700; } .user-detail { flex: 1; } .user-name { font-size: 36rpx; color: var(--text-primary); font-weight: 600; display: block; margin-bottom: 8rpx; letter-spacing: -0.3px; } .user-balance { font-size: 28rpx; color: var(--text-secondary); font-weight: 400; } .logout-btn-small { background: var(--bg-hover); color: var(--text-secondary); font-size: 26rpx; padding: 16rpx 32rpx; border-radius: var(--radius-full); border: none; transition: all var(--transition-base); font-weight: 500; } .logout-btn-small:active { background: var(--border-primary); transform: scale(0.95); } /* ========== 快捷操作区域 ========== */ .quick-actions { display: flex; justify-content: space-around; padding: 48rpx 32rpx; gap: 24rpx; animation: fadeInUp 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) 0.2s forwards; opacity: 0; /* 启用GPU加速,确保滚动时毛玻璃效果正常 */ transform: translateZ(0); -webkit-transform: translateZ(0); } /* 快捷操作按钮 - 简化样式,避免与TabBar毛玻璃冲突 */ .action-item { flex: 1; /* 使用实心背景色,避免与TabBar毛玻璃效果叠加 */ background: var(--bg-card-solid); border-radius: var(--radius-lg); padding: 40rpx 24rpx; display: flex; flex-direction: column; align-items: center; justify-content: center; box-shadow: var(--shadow-md); border: 2rpx solid var(--border-light); transition: all var(--transition-base); cursor: pointer; min-height: 200rpx; position: relative; } /* 主操作按钮(上传文件)特殊样式 */ .action-item.primary { background: var(--primary-gradient); box-shadow: 0 8rpx 32rpx rgba(0, 122, 255, 0.3); border: 2rpx solid rgba(255, 255, 255, 0.3); } .action-item:active { transform: scale(0.96); } .action-icon { font-size: 64rpx; margin-bottom: 16rpx; } .action-text { font-size: 28rpx; font-weight: 600; color: var(--text-primary); text-align: center; } .action-item.primary .action-text { color: var(--primary) !important; text-shadow: 0 1rpx 2rpx rgba(0, 0, 0, 0.1); } .business-card { background: linear-gradient(135deg, #FFFFFF 0%, #F8FAFC 100%); border-radius: var(--radius-lg); padding: 40rpx 28rpx; display: flex; flex-direction: column; align-items: center; box-shadow: var(--shadow-md); border: 1px solid var(--border-light); transition: all var(--transition-base); position: relative; overflow: hidden; animation: fadeInUp 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; opacity: 0; cursor: pointer; } .business-card:nth-child(1) { animation-delay: 0.25s; } .business-card:nth-child(2) { animation-delay: 0.3s; } .business-card:nth-child(3) { animation-delay: 0.35s; } .business-card:nth-child(4) { animation-delay: 0.4s; } /* 卡片顶部装饰色条 */ .business-card::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 6rpx; opacity: 0.8; } .business-card.doc::before { background: linear-gradient(90deg, #007AFF, #5AC8FA); } .business-card.image::before { background: linear-gradient(90deg, #5856D6, #AF52DE); } .business-card.archive::before { background: linear-gradient(90deg, #FF9500, #FFCC00); } .business-card.scan::before { background: linear-gradient(90deg, #34C759, #30D158); } .business-card:active { transform: scale(0.96); box-shadow: var(--shadow-sm); } .business-icon { width: 100rpx; height: 100rpx; border-radius: var(--radius-md); display: flex; align-items: center; justify-content: center; font-size: 52rpx; margin-bottom: 20rpx; box-shadow: var(--shadow-sm); } .business-card.doc .business-icon { background: linear-gradient(135deg, #E8F0FE 0%, #D0DCFA 100%); } .business-card.image .business-icon { background: linear-gradient(135deg, #EDE8FD 0%, #D8D0F8 100%); } .business-card.archive .business-icon { background: linear-gradient(135deg, #FFF3E0 0%, #FFE0B2 100%); } .business-card.scan .business-icon { background: linear-gradient(135deg, #E8F8EC 0%, #C8F5D0 100%); } .business-text { font-size: 28rpx; font-weight: 600; color: var(--text-primary); text-align: center; } .business-desc { font-size: 22rpx; color: var(--text-tertiary); margin-top: 8rpx; text-align: center; } /* ========== 价目表 ========== */ .price-section { padding: 48rpx 32rpx 0; animation: fadeInUp 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) 0.4s forwards; opacity: 0; } .price-table { background: linear-gradient(180deg, #F8FAFC 0%, #FFFFFF 100%); border-radius: var(--radius-lg); padding: 40rpx; box-shadow: var(--shadow-md); border: 1px solid var(--border-light); position: relative; overflow: hidden; } /* 价目表顶部装饰线 */ .price-table::before { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 6rpx; background: var(--primary-gradient); } /* 价目表底部装饰 */ .price-table::after { content: ''; position: absolute; bottom: 0; left: 0; right: 0; height: 4rpx; background: linear-gradient(90deg, transparent 0%, rgba(0,122,255,0.06) 50%, transparent 100%); } .price-title { font-size: 36rpx; font-weight: 600; color: var(--text-primary); display: block; margin-bottom: 32rpx; padding-left: 24rpx; border-left: 6rpx solid var(--primary); letter-spacing: -0.3px; } .price-list { display: flex; flex-direction: column; gap: 8rpx; } .price-item { display: flex; justify-content: space-between; align-items: center; padding: 24rpx; border-radius: var(--radius-md); transition: background var(--transition-fast); } .price-item:nth-child(odd) { background: rgba(0, 122, 255, 0.04); } .price-item:nth-child(even) { background: rgba(0, 0, 0, 0.01); } .price-name { font-size: 30rpx; color: var(--text-primary); font-weight: 500; } .price-value { font-size: 32rpx; color: var(--primary); font-weight: 700; } /* ========== 使用提示 ========== */ .tips-section { padding: 48rpx 32rpx; margin-top: 24rpx; animation: fadeInUp 0.4s cubic-bezier(0.34, 1.56, 0.64, 1) 0.5s forwards; opacity: 0; } .tips-card { background: linear-gradient(145deg, #FFF9E6 0%, #FFF8E1 50%, #FFFDE7 100%); border-radius: var(--radius-lg); padding: 40rpx; border: 2rpx solid rgba(255, 214, 102, 0.4); box-shadow: 0 8rpx 32rpx rgba(255, 214, 102, 0.15); position: relative; overflow: hidden; } /* 提示卡片右上角装饰 */ .tips-card::before { content: ''; position: absolute; top: -20rpx; right: -20rpx; width: 80rpx; height: 80rpx; background: radial-gradient(circle, rgba(255, 214, 102, 0.15) 0%, transparent 70%); border-radius: 50%; } .tips-title { font-size: 32rpx; font-weight: 600; color: #8B6914; display: block; margin-bottom: 32rpx; letter-spacing: -0.3px; position: relative; z-index: 1; } .tips-item { display: flex; align-items: flex-start; margin-bottom: 24rpx; gap: 24rpx; position: relative; z-index: 1; } .tips-item:last-child { margin-bottom: 0; } .tips-number { width: 48rpx; height: 48rpx; background: linear-gradient(135deg, #D4A853 0%, #C49A47 100%); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 26rpx; color: #ffffff; font-weight: 600; flex-shrink: 0; margin-top: 2rpx; box-shadow: 0 4rpx 12rpx rgba(196, 154, 71, 0.4); } .tips-text { font-size: 28rpx; color: #6B5210; line-height: 1.6; flex: 1; } /* ========== 装饰光晕 - 使用 absolute 确保毛玻璃效果正确 ========== */ .index-page::before { content: ''; position: absolute; top: -300rpx; right: -300rpx; width: 1000rpx; height: 1000rpx; background: radial-gradient(circle, rgba(0, 122, 255, 0.08) 0%, transparent 70%); border-radius: 50%; pointer-events: none; z-index: 0; } .index-page::after { content: ''; position: absolute; bottom: -200rpx; left: -200rpx; width: 800rpx; height: 800rpx; background: radial-gradient(circle, rgba(90, 200, 250, 0.06) 0%, transparent 70%); border-radius: 50%; pointer-events: none; z-index: 0; } /* ========== 进入动画 ========== */ @keyframes fadeInUp { from { opacity: 0; transform: translateY(40rpx); } to { opacity: 1; transform: translateY(0); } }