limo-platform/client/src/pages/index/index.scss

1426 lines
32 KiB
SCSS
Raw Normal View History

2025-07-11 18:28:43 +08:00
// 全局动画
@keyframes pulse {
0%, 100% {
opacity: 0.8;
}
50% {
opacity: 0.4;
}
}
@keyframes spin {
0% {
transform: rotate(0deg);
}
100% {
transform: rotate(360deg);
}
}
2025-07-11 15:41:48 +08:00
.limo-mobile {
min-height: 100vh;
background: #ffffff;
position: relative;
// Header with subtle gradient
.header {
background: linear-gradient(180deg, rgba(255, 255, 255, 0.95) 1%, rgba(248, 250, 252, 0.8) 100%);
padding: 88rpx 32rpx 32rpx 32rpx; /* 增加顶部padding给状态栏留空间 */
position: sticky;
top: 0;
z-index: 10;
/* backdrop-filter 在小程序中不支持,使用多层背景模拟 */
box-shadow: 0 2rpx 20rpx rgba(0, 0, 0, 0.02);
border-bottom: 2rpx solid rgba(229, 231, 235, 0.3);
// 使用伪元素模拟背景模糊
&::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(180deg, rgba(255, 255, 255, 0.8) 100%, rgba(248, 250, 252, 0.2) 0%);
z-index: -1;
}
.header-content {
display: flex;
align-items: center;
justify-content: space-between;
position: relative;
margin: 50rpx 0 80rpx 0;
.logo {
height: 100rpx;
width: 200rpx;
object-fit: contain;
display: block;
position: absolute;
left: 50%;
transform: translateX(-50%);
}
.energy-button {
background: linear-gradient(135deg, #05C7C7 0%, #04B5B5 100%);
width: 80rpx;
height: 80rpx;
border-radius: 24rpx;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 8rpx 24rpx rgba(5, 199, 199, 0.2);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
&:active {
transform: scale(0.95);
}
.energy-icon {
color: #ffffff;
font-size: 32rpx;
}
}
}
// Navigation Tabs with enhanced styling
.nav-tabs {
display: flex;
margin-top: 48rpx;
gap: 64rpx;
.tab-item {
position: relative;
.tab-text {
font-size: 32rpx;
font-weight: 600;
color: #9CA3AF;
transition: color 0.3s;
}
.tab-underline {
position: absolute;
bottom: -24rpx;
left: 0;
right: 0;
height: 4rpx;
background: linear-gradient(90deg, #05C7C7 0%, #04B5B5 100%);
border-radius: 2rpx;
}
&.active .tab-text {
color: #05C7C7;
}
}
}
}
// Sports Categories with glassmorphism effect
.sports-section {
background: rgba(255, 255, 255, 0.8);
/* backdrop-filter 在小程序中不支持,使用多层背景模拟 */
position: relative;
padding: 30rpx 32rpx;
margin-bottom: 32rpx;
border-bottom: 2rpx solid rgba(229, 231, 235, 0.3);
// 使用伪元素模拟背景模糊
&::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(255, 255, 255, 0.2);
z-index: -1;
}
.sports-container {
display: flex;
gap: 40rpx;
overflow-x: auto;
scrollbar-width: none;
-ms-overflow-style: none;
/* 小程序不支持 webkit-scrollbar已移除 */
.sport-item {
flex-shrink: 0;
display: flex;
flex-direction: column;
align-items: center;
gap: 16rpx;
&.all-category {
.category-content {
background: #f2f2f2;
color: #6B7280;
border-radius: 32rpx;
font-size: 24rpx;
font-weight: 600;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
min-width: 100rpx;
height: 100rpx;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
&:active {
transform: scale(0.95);
}
.category-text {
line-height: 1.2;
}
}
&.active {
.category-content {
background: linear-gradient(135deg, #05C7C7 0%, #04B5B5 100%);
color: #ffffff;
box-shadow: 0 8rpx 24rpx rgba(5, 199, 199, 0.2);
}
}
}
.sport-icon-container {
width: 100rpx;
height: 100rpx;
border-radius: 28rpx;
display: flex;
align-items: center;
justify-content: center;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
background: #f2f2f2;
&:active {
transform: scale(0.95);
}
.sport-emoji {
font-size: 48rpx;
line-height: 1;
}
}
&.active {
.sport-icon-container {
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.05);
&.basketball {
background: linear-gradient(135deg, #FEF0E5 0%, #FEE5E5 100%);
}
&.football {
background: linear-gradient(135deg, #E8F5E8 0%, #E0F2E0 100%);
}
&.tennis {
background: linear-gradient(135deg, #FFFBEB 0%, #FEF3C7 100%);
}
}
}
.sport-label {
font-size: 24rpx;
color: #6B7280;
font-weight: 500;
}
}
}
}
// Location with enhanced styling
.location-bar {
padding: 0 32rpx 48rpx;
.location-content {
display: flex;
align-items: center;
background: rgba(249, 250, 251, 0.8);
border-radius: 24rpx;
padding: 24rpx;
font-size: 28rpx;
.location-pin {
color: #05C7C7;
margin-right: 16rpx;
font-size: 32rpx;
}
.location-text {
flex: 1;
color: #6B7280;
font-size: 24rpx;
2025-07-11 18:28:43 +08:00
&.location-loading {
color: #9CA3AF;
opacity: 0.8;
animation: pulse 1.5s infinite;
}
2025-07-11 15:41:48 +08:00
}
.location-switch {
color: #05C7C7;
font-size: 24rpx;
font-weight: 500;
}
}
}
2025-07-11 18:28:43 +08:00
// 位置状态提示页面
.location-status-section {
padding: 120rpx 32rpx;
min-height: 600rpx;
display: flex;
align-items: center;
justify-content: center;
.status-container {
display: flex;
flex-direction: column;
align-items: center;
text-align: center;
gap: 32rpx;
.loading-spinner {
width: 80rpx;
height: 80rpx;
border: 6rpx solid #f3f3f3;
border-top: 6rpx solid #05C7C7;
border-radius: 50%;
animation: spin 1s linear infinite;
}
.status-icon {
font-size: 80rpx;
opacity: 0.5;
}
.status-title {
font-size: 32rpx;
font-weight: 600;
color: #374151;
}
.status-subtitle {
font-size: 24rpx;
color: #6B7280;
line-height: 1.5;
max-width: 400rpx;
}
.retry-button {
background: linear-gradient(135deg, #05C7C7 0%, #04B5B5 100%);
color: #ffffff;
padding: 24rpx 48rpx;
border-radius: 32rpx;
margin-top: 24rpx;
box-shadow: 0 8rpx 24rpx rgba(5, 199, 199, 0.2);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
&:active {
transform: scale(0.95);
}
.retry-text {
font-size: 28rpx;
font-weight: 600;
}
}
}
}
2025-07-11 15:41:48 +08:00
// Venue Cards with premium styling
.venue-section {
padding: 0 32rpx;
position: relative;
// Timeline
.timeline-container {
position: absolute;
2025-07-11 18:28:43 +08:00
left: 60rpx;
2025-07-11 15:41:48 +08:00
top: 0;
bottom: 0;
width: 2rpx;
.timeline-line {
position: absolute;
top: 0;
bottom: 0;
width: 2rpx;
2025-07-11 18:28:43 +08:00
background: linear-gradient(180deg, rgba(5, 199, 199, 0.3) 0%, #E5E7EB 30%, #E5E7EB 80%, rgba(229, 231, 235, 0) 100%);
2025-07-11 15:41:48 +08:00
}
}
.venue-card {
position: relative;
margin-bottom: 80rpx;
.timeline-dot {
position: absolute;
2025-07-11 18:28:43 +08:00
left: 18rpx;
2025-07-11 15:41:48 +08:00
top: 10rpx;
width: 24rpx;
height: 24rpx;
border-radius: 50%;
border: 4rpx solid #ffffff;
box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
background: linear-gradient(135deg, #D1D5DB 0%, #9CA3AF 100%);
z-index: 2;
&.active {
background: linear-gradient(135deg, #FBBF24 0%, #F59E0B 100%);
box-shadow: 0 0 0 4rpx #FBBF24, 0 4rpx 16rpx rgba(0, 0, 0, 0.1);
}
}
.venue-meta {
2025-07-11 18:28:43 +08:00
margin-left: 76rpx;
2025-07-11 15:41:48 +08:00
margin-bottom: 24rpx;
display: flex;
align-items: center;
gap: 16rpx;
.distance {
font-size: 24rpx;
color: #9CA3AF;
font-weight: 500;
}
.separator {
width: 8rpx;
height: 8rpx;
background: #D1D5DB;
border-radius: 50%;
}
.update-time {
display: flex;
align-items: center;
gap: 8rpx;
.clock-icon {
font-size: 24rpx;
}
.time-text {
font-size: 24rpx;
color: #9CA3AF;
}
}
}
.venue-content {
2025-07-11 18:28:43 +08:00
margin-left: 76rpx;
2025-07-11 15:41:48 +08:00
background: linear-gradient(135deg, #ffffff 0%, rgba(248, 250, 252, 0.5) 100%);
border-radius: 48rpx;
overflow: hidden;
box-shadow: 0 16rpx 48rpx rgba(0, 0, 0, 0.08);
border: 2rpx solid rgba(229, 231, 235, 0.5);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
// 模拟 backdrop-blur 效果
&::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(255, 255, 255, 0.4);
border-radius: 48rpx;
z-index: -1;
}
&:active {
transform: translateY(-4rpx);
box-shadow: 0 24rpx 64rpx rgba(0, 0, 0, 0.12);
}
.venue-image {
position: relative;
width: 100%;
height: 384rpx;
overflow: hidden;
.image-placeholder {
width: 100%;
height: 100%;
display: flex;
align-items: center;
justify-content: center;
background: linear-gradient(135deg, #374151 0%, #1F2937 100%);
&.ronin-bg {
background: linear-gradient(135deg, blue 0%, #DC2626 100%);
}
&.panda-bg {
background: linear-gradient(135deg, #3B82F6 0%, #2563EB 100%);
}
.placeholder-text {
color: #ffffff;
font-size: 36rpx;
font-weight: 600;
text-align: center;
}
}
.hot-badge {
position: absolute;
top: 24rpx;
left: 24rpx;
background: rgba(0, 0, 0, 0.2);
/* backdrop-filter 在小程序中不支持,已移除 */
color: #ffffff;
padding: 8rpx 16rpx;
border-radius: 16rpx;
font-size: 24rpx;
font-weight: 500;
.hot-text {
font-size: 24rpx;
}
}
.live-badge {
position: absolute;
top: 24rpx;
left: 24rpx;
background: rgba(239, 68, 68, 0.9);
/* backdrop-filter 在小程序中不支持,已移除 */
color: #ffffff;
padding: 8rpx 16rpx;
border-radius: 16rpx;
font-size: 24rpx;
font-weight: 500;
display: flex;
align-items: center;
gap: 8rpx;
.live-dot {
width: 12rpx;
height: 12rpx;
background: #ffffff;
border-radius: 50%;
animation: pulse 1.5s infinite;
}
.live-text {
font-size: 24rpx;
}
}
.status-dot {
position: absolute;
top: 24rpx;
right: 24rpx;
width: 16rpx;
height: 16rpx;
border-radius: 50%;
background: #10B981;
&.online {
animation: pulse 2s infinite;
}
}
.play-overlay {
display: none;
.play-button {
width: 128rpx;
height: 128rpx;
background: rgba(255, 255, 255, 0.95);
/* backdrop-filter 在小程序中不支持,已移除 */
border-radius: 50%;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 16rpx 48rpx rgba(0, 0, 0, 0.2);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
// 模拟 backdrop-blur 效果
&::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(255, 255, 255, 0.5);
border-radius: 50%;
z-index: -1;
}
&:active {
transform: scale(1.1);
}
.play-icon {
color: #374151;
font-size: 48rpx;
margin-left: 4rpx;
}
}
}
}
.venue-info {
padding: 40rpx;
.venue-header {
display: flex;
align-items: center;
margin-bottom: 0;
.venue-logo {
width: 96rpx;
height: 96rpx;
border-radius: 24rpx;
margin-right: 24rpx;
display: flex;
align-items: center;
justify-content: center;
box-shadow: 0 8rpx 24rpx rgba(0, 0, 0, 0.1);
&.ronin-logo {
background: transparent;
}
&.panda-logo {
background: linear-gradient(135deg, #374151 0%, #1F2937 100%);
}
.logo-text {
color: #ffffff;
font-size: 36rpx;
font-weight: bold;
}
.venue-logo-image {
width: 100%;
height: 100%;
border-radius: 24rpx;
object-fit: cover;
}
}
.venue-details {
flex: 1;
.venue-name {
display: block;
font-size: 32rpx;
font-weight: bold;
color: #111827;
margin-bottom: 8rpx;
line-height: 1.2;
}
.venue-address {
display: block;
font-size: 24rpx;
color: #6B7280;
line-height: 1.4;
}
}
}
.venue-action {
display: flex;
justify-content: flex-end;
.zone-button {
background: linear-gradient(135deg, #FB923C 0%, #F97316 100%);
color: #ffffff;
padding: 16rpx 32rpx;
border-radius: 24rpx;
font-size: 24rpx;
font-weight: 600;
box-shadow: 0 8rpx 24rpx rgba(251, 146, 60, 0.3);
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
position: relative;
z-index: 10;
cursor: pointer;
&:active {
transform: scale(0.95);
background: linear-gradient(135deg, #F97316 0%, #EA580C 100%);
}
.button-text {
color: #ffffff;
pointer-events: none;
}
}
}
}
}
}
}
// Bottom Spacing for Fixed Navigation
.bottom-spacing {
height: 192rpx;
}
// Bottom Navigation with glassmorphism
.bottom-nav {
position: fixed;
z-index: 10;
bottom: 0;
left: 0;
right: 0;
background: linear-gradient(180deg, rgba(255, 255, 255, 0.95) 0%, rgba(248, 250, 252, 1) 100%);
/* backdrop-filter 在小程序中不支持,使用多层背景模拟 */
box-shadow: 0 -2rpx 20rpx rgba(0, 0, 0, 0.08);
border-top: 2rpx solid rgba(229, 231, 235, 0.3);
padding: 24rpx 32rpx;
display: flex;
justify-content: space-around;
// 使用伪元素模拟背景模糊
&::before {
content: '';
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: rgba(255, 255, 255, 0.8);
z-index: -1;
}
.nav-item {
display: flex;
flex-direction: column;
align-items: center;
padding: 16rpx;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
&:active {
transform: scale(0.95);
}
.nav-icon-container {
width: 64rpx;
height: 64rpx;
border-radius: 24rpx;
display: flex;
align-items: center;
justify-content: center;
background: #F3F4F6;
margin-bottom: 8rpx;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
&.home-active {
background: linear-gradient(135deg, #05C7C7 0%, #04B5B5 100%);
box-shadow: 0 8rpx 24rpx rgba(5, 199, 199, 0.3);
.nav-icon {
color: #ffffff;
}
.nav-icon-svg {
filter: brightness(0) saturate(100%) invert(100%);
}
}
&.profile-active {
background: linear-gradient(135deg, #05C7C7 0%, #04B5B5 100%);
box-shadow: 0 8rpx 24rpx rgba(5, 199, 199, 0.3);
.nav-icon-svg {
filter: brightness(0) saturate(100%) invert(100%);
}
}
.nav-icon {
font-size: 32rpx;
color: #9CA3AF;
}
.nav-icon-svg {
width: 32rpx;
height: 32rpx;
filter: brightness(0) saturate(100%) invert(69%) sepia(5%) saturate(447%) hue-rotate(175deg) brightness(94%) contrast(88%);
}
}
.nav-label {
font-size: 24rpx;
color: #9CA3AF;
&.active {
color: #05C7C7;
font-weight: 600;
}
}
}
}
// Bottom Watermark with fade effect
.watermark {
position: fixed;
bottom: 160rpx;
left: 50%;
transform: translateX(-50%);
.watermark-text {
color: #D1D5DB;
font-size: 24rpx;
font-weight: 300;
letter-spacing: 2rpx;
opacity: 0.6;
font-style: italic;
}
}
}
// Profile Content Styles
.profile-content {
min-height: 100vh;
background: #F9FAFB;
// Profile Section
.profile-section {
padding: 188rpx 0 24rpx 0x;
.profile-card {
background: #ffffff;
padding: 120rpx 32rpx 32rpx 32rpx;
margin-bottom: 30rpx;
.profile-header-info {
display: flex;
align-items: center;
margin-top: 20rpx;
margin-bottom: 52rpx;
.avatar-container {
position: relative;
margin-right: 32rpx;
.avatar {
width: 120rpx;
height: 120rpx;
background: linear-gradient(135deg, #05C7C7 0%, #04B5B5 100%);
border-radius: 32rpx;
display: flex;
align-items: center;
justify-content: center;
.avatar-initial {
font-size: 48rpx;
color: #ffffff;
font-weight: 600;
}
}
.online-status {
position: absolute;
bottom: -8rpx;
right: -8rpx;
width: 48rpx;
height: 48rpx;
background: #10B981;
border-radius: 50%;
border: 4rpx solid #ffffff;
display: flex;
align-items: center;
justify-content: center;
&::after {
content: '';
width: 16rpx;
height: 16rpx;
background: #ffffff;
border-radius: 50%;
}
}
}
.profile-info {
flex: 1;
.profile-name-row {
display: flex;
align-items: center;
margin-bottom: 0;
line-height: 1.2;
.profile-name {
font-size: 36rpx;
font-weight: bold;
color: #111827;
margin-right: 12rpx;
}
.edit-icon {
margin-right: 12rpx;
padding: 4rpx;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
&:active {
opacity: 0.6;
transform: scale(0.9);
}
.edit-text {
font-size: 28rpx;
color: #9CA3AF;
}
}
.vip-badge {
background: linear-gradient(135deg, #FBBF24 0%, #F59E0B 100%);
padding: 4rpx 12rpx;
border-radius: 12rpx;
.vip-text {
font-size: 18rpx;
color: #ffffff;
font-weight: 600;
}
}
}
.profile-id {
font-size: 22rpx;
color: #6B7280;
margin-bottom: 12rpx;
}
.profile-stats {
display: flex;
align-items: center;
.stat-divider {
width: 6rpx;
height: 6rpx;
background: #D1D5DB;
border-radius: 50%;
margin: 0 20rpx;
}
.stat-text {
font-size: 20rpx;
color: #6B7280;
}
}
}
}
.member-card-button {
width: 100%;
height: 200rpx;
position: relative;
border-radius: 24rpx;
overflow: hidden;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
border: 2rpx solid #F59E0B;
&:active {
transform: scale(0.98);
}
.card-background {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background: linear-gradient(135deg, #FBBF24 0%, #F59E0B 50%, #D97706 100%);
.card-pattern {
position: absolute;
top: 0;
left: 0;
right: 0;
bottom: 0;
background-image:
radial-gradient(circle at 20% 20%, rgba(255, 255, 255, 0.1) 0%, transparent 50%),
radial-gradient(circle at 80% 80%, rgba(255, 255, 255, 0.05) 0%, transparent 50%),
radial-gradient(circle at 40% 40%, rgba(255, 255, 255, 0.03) 0%, transparent 50%);
}
.card-shine {
position: absolute;
top: -50%;
left: -50%;
right: -50%;
bottom: -50%;
background: linear-gradient(45deg, transparent 40%, rgba(255, 255, 255, 0.05) 50%, transparent 60%);
animation: cardShine 5s infinite;
}
}
.card-content {
position: relative;
z-index: 2;
height: 100%;
padding: 24rpx;
display: flex;
align-items: center;
justify-content: space-between;
.card-left {
flex: 1;
display: flex;
flex-direction: column;
justify-content: space-between;
height: 100%;
.card-header {
display: flex;
align-items: baseline;
gap: 12rpx;
.card-title {
font-size: 32rpx;
font-weight: bold;
color: #ffffff;
text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.2);
}
.card-subtitle {
font-size: 20rpx;
color: rgba(255, 255, 255, 0.9);
font-weight: 500;
}
}
.card-info {
display: flex;
flex-direction: column;
gap: 8rpx;
.member-level {
font-size: 24rpx;
color: #ffffff;
font-weight: 600;
text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.2);
}
.member-expiry {
font-size: 20rpx;
color: rgba(255, 255, 255, 0.8);
font-weight: 500;
}
}
}
.card-arrow {
display: flex;
align-items: center;
justify-content: center;
width: 48rpx;
height: 48rpx;
background: rgba(255, 255, 255, 0.2);
border-radius: 50%;
margin-left: 16rpx;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
.arrow-icon {
font-size: 28rpx;
color: #ffffff;
font-weight: 300;
text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.2);
}
}
}
}
}
}
// Stats Section
.stats-section {
padding: 0 24rpx 24rpx 24rpx;
.stats-grid {
display: grid;
2025-07-11 18:28:43 +08:00
grid-template-columns: repeat(2, 1fr);
2025-07-11 15:41:48 +08:00
gap: 24rpx;
.stat-card {
background: #ffffff;
border-radius: 24rpx;
padding: 24rpx;
text-align: center;
border: 2rpx solid #F3F4F6;
2025-07-11 18:28:43 +08:00
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
cursor: pointer;
&:active {
background: #F9FAFB;
transform: scale(0.98);
border-color: #05C7C7;
}
2025-07-11 15:41:48 +08:00
.stat-number {
font-size: 48rpx;
font-weight: bold;
color: #111827;
display: block;
}
.stat-label {
font-size: 24rpx;
color: #6B7280;
margin-top: -5rpx;
display: block;
}
}
}
}
// Menu Section
.menu-section {
padding: 0 24rpx 24rpx 24rpx;
.menu-card {
background: #ffffff;
border-radius: 32rpx;
border: 2rpx solid #F3F4F6;
overflow: hidden;
.menu-item {
display: flex;
align-items: center;
padding: 32rpx;
border-bottom: 2rpx solid #F3F4F6;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
&:last-child {
border-bottom: none;
}
&:active {
background: #F9FAFB;
}
.menu-content {
flex: 1;
.menu-title {
font-size: 28rpx;
font-weight: 500;
color: #111827;
}
.vip-subtitle {
margin-top: 6rpx;
.vip-subtitle-text {
background: linear-gradient(135deg, #FBBF24 0%, #F59E0B 100%);
color: #ffffff;
padding: 4rpx 16rpx;
border-radius: 16rpx;
font-size: 20rpx;
font-weight: 500;
display: inline-block;
}
}
}
.menu-right {
display: flex;
align-items: center;
.badge {
background: #EF4444;
color: #ffffff;
padding: 4rpx 12rpx;
border-radius: 16rpx;
margin-right: 12rpx;
.badge-text {
font-size: 18rpx;
font-weight: 500;
}
}
.notification-dot {
width: 12rpx;
height: 12rpx;
background: #EF4444;
border-radius: 50%;
margin-right: 12rpx;
}
}
.menu-arrow {
font-size: 28rpx;
color: #9CA3AF;
font-weight: 300;
}
&.vip-item {
.menu-arrow {
color: #FBBF24;
}
&:active {
background: rgba(254, 243, 199, 0.3);
}
}
}
}
}
// Activity Section
.activity-section {
padding: 0 24rpx 24rpx 24rpx;
.activity-card {
background: #ffffff;
border-radius: 32rpx;
padding: 32rpx;
border: 2rpx solid #F3F4F6;
.activity-header {
display: flex;
align-items: center;
margin-bottom: 24rpx;
.activity-indicator {
width: 6rpx;
height: 32rpx;
background: linear-gradient(135deg, #05C7C7 0%, #04B5B5 100%);
border-radius: 3rpx;
margin-right: 16rpx;
}
.activity-title {
font-size: 28rpx;
font-weight: bold;
color: #111827;
}
}
.activity-list {
.activity-item {
display: flex;
align-items: flex-start;
padding: 20rpx;
background: #F9FAFB;
border-radius: 24rpx;
margin-bottom: 12rpx;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
&:last-child {
margin-bottom: 0;
}
&:active {
background: #F3F4F6;
}
.activity-content {
flex: 1;
.activity-title-text {
font-size: 24rpx;
font-weight: 500;
color: #111827;
display: block;
margin-bottom: 6rpx;
line-height: 1.4;
}
.activity-subtitle {
font-size: 20rpx;
color: #6B7280;
line-height: 1.3;
}
}
2025-07-11 18:28:43 +08:00
}
}
.activity-more-link {
margin-top: 24rpx;
text-align: center;
padding: 16rpx;
transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);
&:active {
transform: scale(0.98);
}
.more-link-text {
font-size: 26rpx;
color: #05C7C7;
font-weight: 500;
2025-07-11 15:41:48 +08:00
}
}
}
}
}
// Animations
@keyframes pulse {
0%, 100% {
opacity: 1;
}
50% {
opacity: 0.5;
}
}
@keyframes cardShine {
0% {
transform: translateX(-100%) translateY(-100%) rotate(45deg);
}
50% {
transform: translateX(50%) translateY(50%) rotate(45deg);
}
100% {
transform: translateX(200%) translateY(200%) rotate(45deg);
}
}
// Responsive Design
@media (max-width: 480px) {
.limo-mobile {
.header {
padding: 68rpx 24rpx 24rpx 24rpx; /* 调整小屏幕的状态栏空间 */
.header-content {
.logo {
height: 56rpx;
}
.energy-button {
width: 72rpx;
height: 72rpx;
border-radius: 20rpx;
.energy-icon {
font-size: 28rpx;
}
}
}
.nav-tabs {
margin-top: 40rpx;
gap: 48rpx;
.tab-item .tab-text {
font-size: 28rpx;
}
}
}
.sports-section {
padding: 30rpx 24rpx;
.sports-container {
gap: 32rpx;
.sport-item {
&.all-category .category-content {
padding: 20rpx 24rpx;
min-width: 120rpx;
font-size: 24rpx;
}
.sport-icon-container {
width: 96rpx;
height: 96rpx;
border-radius: 28rpx;
.sport-emoji {
font-size: 40rpx;
}
}
.sport-label {
font-size: 22rpx;
}
}
}
}
.location-bar {
padding: 0 24rpx 40rpx;
.location-content {
padding: 20rpx;
font-size: 26rpx;
.location-switch {
font-size: 22rpx;
}
}
}
.venue-section {
padding: 0 24rpx;
.venue-card {
margin-bottom: 64rpx;
.venue-meta {
margin-left: 72rpx;
}
.venue-content {
margin-left: 72rpx;
.venue-image {
height: 320rpx;
.image-placeholder .placeholder-text {
font-size: 32rpx;
}
}
.venue-info {
padding: 32rpx;
.venue-header {
.venue-logo {
width: 80rpx;
height: 80rpx;
border-radius: 20rpx;
.logo-text {
font-size: 32rpx;
}
}
.venue-details {
.venue-name {
font-size: 28rpx;
}
.venue-address {
font-size: 22rpx;
}
}
}
.venue-action .zone-button {
padding: 16rpx 32rpx;
font-size: 24rpx;
}
}
}
}
}
}
}