/** * Soul创业实验 - 全局样式 * 主题色: #00CED1 (Soul青色) * 开发: 卡若 */ /* ===== CSS 变量系统 ===== */ page { /* 品牌色 */ --app-brand: #00CED1; --app-brand-light: rgba(0, 206, 209, 0.1); --app-brand-dark: #20B2AA; /* 背景色 */ --app-bg-primary: #000000; --app-bg-secondary: #1c1c1e; --app-bg-tertiary: #2c2c2e; /* 文字色 */ --app-text-primary: #ffffff; --app-text-secondary: rgba(255, 255, 255, 0.7); --app-text-tertiary: rgba(255, 255, 255, 0.4); /* 分隔线 */ --app-separator: rgba(255, 255, 255, 0.05); /* iOS 系统色 */ --ios-indigo: #5856D6; --ios-green: #30d158; --ios-red: #FF3B30; --ios-orange: #FF9500; --ios-yellow: #FFD700; /* 金色 */ --gold: #FFD700; --gold-light: #FFA500; /* 粉色 */ --pink: #E91E63; /* 紫色 */ --purple: #7B61FF; } /* ===== 页面基础样式 ===== */ page { background-color: var(--app-bg-primary); color: var(--app-text-primary); font-family: -apple-system, BlinkMacSystemFont, 'SF Pro Display', 'SF Pro Text', 'Helvetica Neue', 'PingFang SC', 'Microsoft YaHei', sans-serif; font-size: 28rpx; line-height: 1.5; -webkit-font-smoothing: antialiased; } /* ===== 全局容器 ===== */ .container { min-height: 100vh; padding: 0; background: #000000; padding-bottom: env(safe-area-inset-bottom); } /* ===== 品牌色系 ===== */ .brand-color { color: #00CED1; } .brand-bg { background-color: #00CED1; } .brand-gradient { background: linear-gradient(135deg, #00CED1 0%, #20B2AA 100%); } .gold-color { color: #FFD700; } .gold-bg { background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%); } /* ===== 文字渐变 ===== */ .gradient-text { background: linear-gradient(135deg, #00CED1 0%, #20B2AA 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } .gold-gradient-text { background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%); -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text; } /* ===== 按钮样式 ===== */ .btn-primary { background: linear-gradient(135deg, #00CED1 0%, #20B2AA 100%); color: #ffffff; border: none; border-radius: 48rpx; padding: 28rpx 48rpx; font-size: 32rpx; font-weight: 600; box-shadow: 0 8rpx 24rpx rgba(0, 206, 209, 0.3); display: flex; align-items: center; justify-content: center; } .btn-primary::after { border: none; } .btn-primary:active { opacity: 0.85; transform: scale(0.98); } .btn-secondary { background: rgba(0, 206, 209, 0.1); color: #00CED1; border: 2rpx solid rgba(0, 206, 209, 0.3); border-radius: 48rpx; padding: 28rpx 48rpx; font-size: 32rpx; font-weight: 500; } .btn-secondary::after { border: none; } .btn-secondary:active { background: rgba(0, 206, 209, 0.2); } .btn-ghost { background: rgba(255, 255, 255, 0.05); color: #ffffff; border: 2rpx solid rgba(255, 255, 255, 0.1); border-radius: 48rpx; padding: 28rpx 48rpx; font-size: 32rpx; } .btn-ghost::after { border: none; } .btn-ghost:active { background: rgba(255, 255, 255, 0.1); } .btn-gold { background: linear-gradient(135deg, #FFD700 0%, #FFA500 100%); color: #000000; border: none; border-radius: 48rpx; padding: 28rpx 48rpx; font-size: 32rpx; font-weight: 600; box-shadow: 0 8rpx 24rpx rgba(255, 215, 0, 0.3); } .btn-gold::after { border: none; } /* ===== 卡片样式 ===== */ .card { background: rgba(28, 28, 30, 0.9); border-radius: 32rpx; padding: 32rpx; margin: 24rpx 32rpx; border: 2rpx solid rgba(255, 255, 255, 0.05); } .card-light { background: rgba(44, 44, 46, 0.8); border-radius: 24rpx; padding: 24rpx; border: 2rpx solid rgba(255, 255, 255, 0.08); } .card-gradient { background: linear-gradient(135deg, rgba(28, 28, 30, 1) 0%, rgba(44, 44, 46, 1) 100%); border-radius: 32rpx; padding: 32rpx; border: 2rpx solid rgba(0, 206, 209, 0.2); } .card-brand { background: linear-gradient(135deg, rgba(0, 206, 209, 0.1) 0%, rgba(32, 178, 170, 0.05) 100%); border-radius: 32rpx; padding: 32rpx; border: 2rpx solid rgba(0, 206, 209, 0.2); } /* ===== 输入框样式 ===== */ .input-ios { background: rgba(0, 0, 0, 0.3); border: 2rpx solid rgba(255, 255, 255, 0.1); border-radius: 24rpx; padding: 28rpx 32rpx; font-size: 32rpx; color: #ffffff; } .input-ios:focus { border-color: rgba(0, 206, 209, 0.5); } .input-ios-placeholder { color: rgba(255, 255, 255, 0.3); } /* ===== 列表项样式 ===== */ .list-item { display: flex; align-items: center; justify-content: space-between; padding: 28rpx 32rpx; background: rgba(28, 28, 30, 0.9); border-bottom: 1rpx solid rgba(255, 255, 255, 0.05); } .list-item:first-child { border-radius: 24rpx 24rpx 0 0; } .list-item:last-child { border-radius: 0 0 24rpx 24rpx; border-bottom: none; } .list-item:only-child { border-radius: 24rpx; } .list-item:active { background: rgba(44, 44, 46, 1); } /* ===== 标签样式 ===== */ .tag { display: inline-flex; align-items: center; justify-content: center; padding: 8rpx 20rpx; min-width: 80rpx; border-radius: 8rpx; font-size: 22rpx; font-weight: 500; box-sizing: border-box; text-align: center; } .tag-brand { background: rgba(0, 206, 209, 0.1); color: #00CED1; } .tag-gold { background: rgba(255, 215, 0, 0.1); color: #FFD700; } .tag-pink { background: rgba(233, 30, 99, 0.1); color: #E91E63; } .tag-purple { background: rgba(123, 97, 255, 0.1); color: #7B61FF; } .tag-free { background: rgba(0, 206, 209, 0.1); color: #00CED1; } /* ===== 分隔线 ===== */ .divider { height: 1rpx; background: rgba(255, 255, 255, 0.05); margin: 24rpx 0; } .divider-vertical { width: 2rpx; height: 48rpx; background: rgba(255, 255, 255, 0.1); } /* ===== 骨架屏动画 ===== */ .skeleton { background: linear-gradient(90deg, rgba(28, 28, 30, 1) 25%, rgba(44, 44, 46, 1) 50%, rgba(28, 28, 30, 1) 75% ); background-size: 200% 100%; animation: skeleton-loading 1.5s ease-in-out infinite; border-radius: 8rpx; } @keyframes skeleton-loading { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* ===== 页面过渡动画 ===== */ .page-transition { animation: fadeIn 0.3s ease-out; } @keyframes fadeIn { from { opacity: 0; transform: translateY(20rpx); } to { opacity: 1; transform: translateY(0); } } /* ===== 弹窗动画 ===== */ .modal-overlay { animation: modalOverlayIn 0.25s ease-out; } .modal-content { animation: modalContentIn 0.3s cubic-bezier(0.32, 0.72, 0, 1); } @keyframes modalOverlayIn { from { opacity: 0; } to { opacity: 1; } } @keyframes modalContentIn { from { opacity: 0; transform: scale(0.95) translateY(20rpx); } to { opacity: 1; transform: scale(1) translateY(0); } } /* ===== 脉动动画 ===== */ .pulse { animation: pulse 2s ease-in-out infinite; } @keyframes pulse { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.05); opacity: 0.8; } } /* ===== 发光效果 ===== */ .glow { box-shadow: 0 0 40rpx rgba(0, 206, 209, 0.3); } .glow-gold { box-shadow: 0 0 40rpx rgba(255, 215, 0, 0.3); } /* ===== 文字样式 ===== */ .text-xs { font-size: 22rpx; } .text-sm { font-size: 26rpx; } .text-base { font-size: 28rpx; } .text-lg { font-size: 32rpx; } .text-xl { font-size: 36rpx; } .text-2xl { font-size: 44rpx; } .text-3xl { font-size: 56rpx; } .text-white { color: #ffffff; } .text-gray { color: rgba(255, 255, 255, 0.6); } .text-muted { color: rgba(255, 255, 255, 0.4); } .text-center { text-align: center; } .font-medium { font-weight: 500; } .font-semibold { font-weight: 600; } .font-bold { font-weight: 700; } /* ===== Flex布局 ===== */ .flex { display: flex; } .flex-col { flex-direction: column; } .items-center { align-items: center; } .justify-center { justify-content: center; } .justify-between { justify-content: space-between; } .justify-around { justify-content: space-around; } .flex-1 { flex: 1; } .gap-1 { gap: 8rpx; } .gap-2 { gap: 16rpx; } .gap-3 { gap: 24rpx; } .gap-4 { gap: 32rpx; } /* ===== 间距 ===== */ .p-2 { padding: 16rpx; } .p-3 { padding: 24rpx; } .p-4 { padding: 32rpx; } .p-5 { padding: 40rpx; } .px-4 { padding-left: 32rpx; padding-right: 32rpx; } .py-2 { padding-top: 16rpx; padding-bottom: 16rpx; } .py-3 { padding-top: 24rpx; padding-bottom: 24rpx; } .m-4 { margin: 32rpx; } .mx-4 { margin-left: 32rpx; margin-right: 32rpx; } .my-3 { margin-top: 24rpx; margin-bottom: 24rpx; } .mb-2 { margin-bottom: 16rpx; } .mb-3 { margin-bottom: 24rpx; } .mb-4 { margin-bottom: 32rpx; } .mt-4 { margin-top: 32rpx; } /* ===== 圆角 ===== */ .rounded { border-radius: 8rpx; } .rounded-lg { border-radius: 16rpx; } .rounded-xl { border-radius: 24rpx; } .rounded-2xl { border-radius: 32rpx; } .rounded-full { border-radius: 50%; } /* ===== 安全区域 ===== */ .safe-bottom { padding-bottom: calc(env(safe-area-inset-bottom) + 20rpx); } .pb-tabbar { padding-bottom: 200rpx; } /* ===== 头部导航占位 ===== */ .nav-placeholder { height: calc(88rpx + env(safe-area-inset-top, 44rpx)); } /* ===== 隐藏滚动条 ===== */ ::-webkit-scrollbar { display: none; width: 0; height: 0; } /* ===== 触摸反馈 ===== */ .touch-feedback { transition: all 0.15s ease; } .touch-feedback:active { opacity: 0.7; transform: scale(0.98); } /* ===== 进度条 ===== */ .progress-bar { height: 8rpx; background: rgba(44, 44, 46, 1); border-radius: 4rpx; overflow: hidden; } .progress-fill { height: 100%; background: linear-gradient(90deg, #00CED1 0%, #20B2AA 100%); border-radius: 4rpx; transition: width 0.3s ease; } /* ===== 头像样式 ===== */ .avatar { width: 80rpx; height: 80rpx; border-radius: 50%; background: linear-gradient(135deg, rgba(0, 206, 209, 0.2) 0%, rgba(32, 178, 170, 0.1) 100%); display: flex; align-items: center; justify-content: center; color: #00CED1; font-weight: 700; font-size: 32rpx; border: 4rpx solid rgba(0, 206, 209, 0.3); } .avatar-lg { width: 120rpx; height: 120rpx; font-size: 48rpx; } /* ===== 图标容器 ===== */ .icon-box { width: 64rpx; height: 64rpx; border-radius: 16rpx; display: flex; align-items: center; justify-content: center; } .icon-box-brand { background: linear-gradient(135deg, rgba(0, 206, 209, 0.2) 0%, rgba(32, 178, 170, 0.1) 100%); } .icon-box-gold { background: linear-gradient(135deg, rgba(255, 215, 0, 0.2) 0%, rgba(255, 165, 0, 0.1) 100%); } /* ===== 渐变背景 ===== */ .bg-gradient-dark { background: linear-gradient(180deg, #000000 0%, #1a1a1a 100%); } .bg-gradient-brand { background: linear-gradient(135deg, rgba(0, 206, 209, 0.1) 0%, transparent 100%); }