/* 页面容器 */ .page { min-height:100vh; background:var(--color-bg-subtle); } /* 欢迎区 */ .header { background:linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%); padding:48rpx 32rpx 60rpx; color:var(--color-text-inverse); position:relative; } .header-top { display:flex; align-items:center; gap:24rpx; } .avatar { width:88rpx; height:88rpx; background:rgba(255,255,255,0.25); border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:44rpx; } .greeting { font-size:38rpx; font-weight:700; margin-bottom:6rpx; } .date { font-size:24rpx; opacity:0.85; } .header-badge { margin:12rpx 0 0 112rpx; background:rgba(255,255,255,0.25); padding:6rpx 20rpx; border-radius:20rpx; font-size:22rpx; color:var(--color-text-inverse); display:inline-block; background:rgba(255,255,255,0.2); padding:8rpx 24rpx; border-radius:24rpx; font-size:22rpx; } /* 数据概览 - 2x2 网格 */ .stats-container { display:flex; flex-wrap:wrap; padding:0 24rpx; margin-top:24rpx; position:relative; z-index:10; } .stat-card { width:calc(50% - 16rpx); margin:0 8rpx 24rpx 8rpx; background:var(--color-bg-card); border-radius:24rpx; padding:40rpx 20rpx; text-align:center; box-shadow:0 8rpx 32rpx rgba(0,0,0,0.1); box-sizing:border-box; } .stat-icon { font-size:48rpx; margin-bottom:16rpx; } .stat-value { font-size:56rpx; font-weight:700; color:var(--color-text-strong); line-height:1.2; margin-bottom:8rpx; } .stat-label { font-size:26rpx; color:var(--color-text-tertiary); } /* 列表区块 */ .section { margin:0 24rpx 24rpx; background:var(--color-bg-card); border-radius:24rpx; padding:32rpx; box-shadow:0 2rpx 12rpx rgba(0,0,0,0.04); } .section-header { display:flex; justify-content:space-between; align-items:center; margin-bottom:24rpx; } .section-title-wrap { display:flex; align-items:center; gap:12rpx; } .section-dot { width:6rpx; height:28rpx; background:linear-gradient(180deg, var(--color-primary) 0%, var(--color-primary-light) 100%); border-radius:3rpx; } .section-title { font-size:30rpx; font-weight:600; color:var(--color-text-strong); } .section-count { font-size:22rpx; color:var(--color-text-tertiary); background:var(--color-bg-subtle); padding:4rpx 14rpx; border-radius:12rpx; } /* 服务列表 */ .service-list { display:flex; flex-direction:column; gap:16rpx; } .service-card { display:flex; align-items:center; justify-content:space-between; padding:24rpx; background:var(--color-bg-subtle); border-radius:16rpx; border:1rpx solid var(--color-divider); } .service-left { flex:1; min-width:0; margin-right:20rpx; } .service-header { display:flex; align-items:center; justify-content:space-between; margin-bottom:8rpx; } .service-tag { font-size:24rpx; font-weight:600; color:var(--color-primary-strong); background:rgba(233, 107, 107, 0.08); padding:4rpx 12rpx; border-radius:6rpx; } .service-time { font-size:24rpx; color:var(--color-text-disabled); } .service-desc { font-size:26rpx; color:var(--color-text-primary); overflow:hidden; text-overflow:ellipsis; white-space:nowrap; } .btn-claim { background:linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-light) 100%); color:var(--color-text-inverse); font-size:24rpx; font-weight:600; padding:12rpx 32rpx; border-radius:24rpx; border:none; box-shadow:0 4rpx 12rpx rgba(233, 107, 107, 0.25); } /* 空状态 */ .empty-state { text-align:center; padding:80rpx 40rpx; } .empty-illustration { font-size:88rpx; margin-bottom:16rpx; opacity:0.5; } .empty-text { font-size:26rpx; color:var(--color-text-tertiary); margin-bottom:6rpx; } .empty-hint { font-size:24rpx; color:var(--color-text-disabled); } /* 加载中 */ .loading-wrap { display:flex; flex-direction:column; align-items:center; padding:120rpx 0; gap:20rpx; } .loading-spinner { width:44rpx; height:44rpx; border:4rpx solid var(--color-divider); border-top-color:var(--color-primary); border-radius:50%; animation:spin 0.8s linear infinite; } @keyframes spin { to { transform:rotate(360deg); } } .loading-text { font-size:24rpx; color:var(--color-text-tertiary); } /* 底部退出 */ .footer { padding:40rpx 32rpx 20rpx; } .logout-btn { width:100%; min-height:var(--tap-min); line-height:var(--tap-min); background:var(--color-bg-card); color:var(--color-text-tertiary); font-size:28rpx; border-radius:42rpx; border:2rpx solid var(--color-border); min-width:var(--tap-min);}