/** * Soul创业实验 - 阅读页样式 * 1:1还原Web版本UI */ .page { min-height: 100vh; background: #000000; } /* ===== 阅读进度条 ===== */ .progress-bar-fixed { position: fixed; left: 0; right: 0; height: 4rpx; background: #1c1c1e; z-index: 200; } .progress-fill { height: 100%; background: linear-gradient(90deg, #00CED1 0%, #20B2AA 100%); transition: width 0.15s ease; } /* ===== 导航栏 ===== */ .nav-bar { position: fixed; top: 0; left: 0; right: 0; z-index: 100; background: rgba(0, 0, 0, 0.8); backdrop-filter: blur(40rpx); border-bottom: 1rpx solid rgba(255, 255, 255, 0.05); } .nav-content { display: flex; align-items: center; justify-content: space-between; padding: 0 24rpx; height: 88rpx; } .nav-back, .nav-share { width: 72rpx; height: 72rpx; border-radius: 50%; background: #1c1c1e; display: flex; align-items: center; justify-content: center; } .back-arrow { font-size: 36rpx; color: rgba(255, 255, 255, 0.8); } .share-icon { font-size: 32rpx; color: rgba(255, 255, 255, 0.8); } .nav-info { flex: 1; text-align: center; padding: 0 16rpx; } .nav-part { font-size: 20rpx; color: rgba(255, 255, 255, 0.4); display: block; } .nav-chapter { font-size: 24rpx; color: rgba(255, 255, 255, 0.6); display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .nav-placeholder { width: 100%; } /* ===== 阅读内容 ===== */ .read-content { max-width: 750rpx; margin: 0 auto; padding: 48rpx 40rpx 200rpx; } /* ===== 章节标题 ===== */ .chapter-header { margin-bottom: 48rpx; } .chapter-meta { display: flex; align-items: center; gap: 16rpx; margin-bottom: 24rpx; } .chapter-id { font-size: 28rpx; font-weight: 500; color: #00CED1; background: rgba(0, 206, 209, 0.1); padding: 8rpx 24rpx; border-radius: 32rpx; } .tag { display: inline-flex; align-items: center; justify-content: center; font-size: 22rpx; padding: 6rpx 16rpx; min-width: 80rpx; border-radius: 8rpx; box-sizing: border-box; text-align: center; } .tag-free { background: rgba(0, 206, 209, 0.1); color: #00CED1; } .chapter-title { font-size: 44rpx; font-weight: 700; color: #ffffff; line-height: 1.4; } /* ===== 加载状态 ===== */ .loading-state { display: flex; flex-direction: column; gap: 32rpx; } .skeleton { height: 32rpx; background: linear-gradient(90deg, #1c1c1e 25%, #2c2c2e 50%, #1c1c1e 75%); background-size: 200% 100%; animation: skeleton-loading 1.5s ease-in-out infinite; border-radius: 8rpx; } .skeleton-1 { width: 75%; } .skeleton-2 { width: 90%; } .skeleton-3 { width: 65%; } .skeleton-4 { width: 85%; } .skeleton-5 { width: 70%; } @keyframes skeleton-loading { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* ===== 文章内容 ===== */ .article { color: rgba(255, 255, 255, 0.85); font-size: 34rpx; line-height: 1.9; } .paragraph { margin-bottom: 48rpx; text-align: justify; } .preview { position: relative; } /* ===== 渐变遮罩 ===== */ .fade-mask { position: absolute; bottom: 0; left: -40rpx; right: -40rpx; height: 300rpx; background: linear-gradient(to top, #000000 0%, transparent 100%); pointer-events: none; } /* ===== 付费墙 ===== */ .paywall { position: relative; z-index: 10; margin-top: 48rpx; padding: 48rpx; background: linear-gradient(135deg, #1c1c1e 0%, #2c2c2e 100%); border-radius: 32rpx; border: 2rpx solid rgba(0, 206, 209, 0.2); } .paywall-icon { width: 128rpx; height: 128rpx; margin: 0 auto 32rpx; background: rgba(0, 206, 209, 0.1); border-radius: 32rpx; display: flex; align-items: center; justify-content: center; font-size: 64rpx; } .paywall-title { font-size: 40rpx; font-weight: 600; color: #ffffff; text-align: center; display: block; margin-bottom: 16rpx; } .paywall-desc { font-size: 28rpx; color: rgba(255, 255, 255, 0.6); text-align: center; display: block; margin-bottom: 48rpx; } /* ===== 购买选项 ===== */ .purchase-options { display: flex; flex-direction: column; gap: 24rpx; margin-bottom: 32rpx; } .purchase-btn { display: flex; align-items: center; justify-content: space-between; padding: 28rpx 32rpx; border-radius: 24rpx; } .purchase-section { background: #2c2c2e; border: 2rpx solid rgba(255, 255, 255, 0.1); } .purchase-fullbook { background: linear-gradient(135deg, #00CED1 0%, #20B2AA 100%); box-shadow: 0 8rpx 32rpx rgba(0, 206, 209, 0.3); } .purchase-section .btn-label { font-size: 28rpx; color: #ffffff; } .purchase-section .btn-price { font-size: 28rpx; font-weight: 600; } .brand-color { color: #00CED1; } .purchase-fullbook .btn-left { display: flex; align-items: center; gap: 8rpx; } .purchase-fullbook .btn-sparkle { font-size: 28rpx; } .purchase-fullbook .btn-label { font-size: 28rpx; color: #ffffff; font-weight: 500; } .purchase-fullbook .btn-right { text-align: right; } .purchase-fullbook .btn-price { font-size: 36rpx; font-weight: 700; color: #ffffff; } .purchase-fullbook .btn-discount { font-size: 22rpx; color: rgba(255, 255, 255, 0.7); margin-left: 8rpx; } .paywall-tip { font-size: 24rpx; color: rgba(255, 255, 255, 0.4); text-align: center; display: block; } /* ===== 章节导航 ===== */ .chapter-nav { margin-top: 96rpx; padding-top: 64rpx; border-top: 2rpx solid rgba(255, 255, 255, 0.1); } .nav-buttons { display: flex; gap: 24rpx; margin-bottom: 48rpx; } .nav-btn { flex: 1; padding: 24rpx; border-radius: 24rpx; max-width: 48%; } .nav-btn-placeholder { flex: 1; max-width: 48%; } .nav-prev { background: #1c1c1e; border: 2rpx solid rgba(255, 255, 255, 0.05); } .nav-next { background: linear-gradient(90deg, rgba(0, 206, 209, 0.1) 0%, rgba(32, 178, 170, 0.1) 100%); border: 2rpx solid rgba(0, 206, 209, 0.2); } .nav-end { background: #1c1c1e; border: 2rpx solid rgba(255, 255, 255, 0.05); text-align: center; } .nav-disabled { opacity: 0.5; } .btn-label { font-size: 20rpx; color: rgba(255, 255, 255, 0.5); display: block; margin-bottom: 4rpx; } .nav-next .btn-label { color: #00CED1; } .btn-title { font-size: 24rpx; color: #ffffff; display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .btn-row { display: flex; align-items: center; justify-content: space-between; } .btn-arrow { font-size: 24rpx; color: #00CED1; flex-shrink: 0; margin-left: 8rpx; } .btn-end-text { font-size: 24rpx; color: rgba(255, 255, 255, 0.6); } /* ===== 分享操作区 ===== */ .action-section { margin-top: 48rpx; } .action-row-inline { display: flex; gap: 16rpx; } .action-btn-inline { flex: 1; display: flex; align-items: center; justify-content: center; gap: 8rpx; padding: 24rpx 16rpx; border-radius: 16rpx; border: none; background: transparent; line-height: normal; box-sizing: border-box; } .action-btn-inline::after { border: none; } .btn-share-inline { background: rgba(7, 193, 96, 0.15); border: 2rpx solid rgba(7, 193, 96, 0.3); } .btn-poster-inline { background: rgba(255, 215, 0, 0.15); border: 2rpx solid rgba(255, 215, 0, 0.3); } .action-icon-small { font-size: 28rpx; } .action-text-small { font-size: 24rpx; color: #ffffff; font-weight: 500; } /* ===== 推广提示区 ===== */ .promo-section { margin-top: 32rpx; } .promo-card { display: flex; align-items: center; justify-content: space-between; padding: 32rpx; background: linear-gradient(135deg, rgba(255, 215, 0, 0.1) 0%, rgba(255, 165, 0, 0.05) 100%); border: 2rpx solid rgba(255, 215, 0, 0.2); border-radius: 24rpx; } .promo-left { display: flex; align-items: center; gap: 20rpx; } .promo-icon { width: 80rpx; height: 80rpx; background: rgba(255, 215, 0, 0.2); border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 36rpx; } .promo-info { flex: 1; } .promo-title { font-size: 30rpx; color: #ffffff; font-weight: 600; display: block; } .promo-desc { font-size: 24rpx; color: rgba(255, 255, 255, 0.5); display: block; margin-top: 8rpx; } .promo-right { padding-left: 20rpx; } .promo-arrow { font-size: 32rpx; color: #FFD700; } /* ===== 弹窗 ===== */ .modal-overlay { position: fixed; inset: 0; background: rgba(0, 0, 0, 0.6); backdrop-filter: blur(20rpx); display: flex; align-items: flex-end; justify-content: center; z-index: 1000; } .modal-content { width: 100%; max-width: 750rpx; background: #1c1c1e; border-radius: 48rpx 48rpx 0 0; padding: 48rpx; padding-bottom: calc(48rpx + env(safe-area-inset-bottom)); animation: slideUp 0.3s ease; } @keyframes slideUp { from { transform: translateY(100%); } to { transform: translateY(0); } } .modal-header { display: flex; align-items: center; justify-content: space-between; margin-bottom: 32rpx; } .modal-title { font-size: 36rpx; font-weight: 600; color: #ffffff; } .modal-close { width: 64rpx; height: 64rpx; border-radius: 50%; background: rgba(255, 255, 255, 0.1); display: flex; align-items: center; justify-content: center; font-size: 28rpx; color: rgba(255, 255, 255, 0.6); } /* ===== 分享弹窗 ===== */ .share-link-box { padding: 32rpx; background: rgba(0, 0, 0, 0.3); border: 2rpx solid rgba(255, 255, 255, 0.1); border-radius: 24rpx; margin-bottom: 32rpx; } .link-label { font-size: 22rpx; color: rgba(255, 255, 255, 0.5); display: block; margin-bottom: 16rpx; } .link-url { font-size: 26rpx; color: #00CED1; display: block; word-break: break-all; font-family: monospace; } .link-tip { font-size: 22rpx; color: rgba(255, 255, 255, 0.4); display: block; margin-top: 16rpx; } .share-buttons { display: grid; grid-template-columns: repeat(3, 1fr); gap: 24rpx; margin-bottom: 32rpx; } .share-btn { display: flex; flex-direction: column; align-items: center; gap: 16rpx; padding: 24rpx; background: rgba(255, 255, 255, 0.05); border-radius: 24rpx; border: none; line-height: normal; } .share-btn::after { border: none; } .share-btn-icon { width: 96rpx; height: 96rpx; border-radius: 50%; display: flex; align-items: center; justify-content: center; font-size: 40rpx; } .icon-copy { background: rgba(0, 206, 209, 0.2); } .icon-wechat { background: rgba(7, 193, 96, 0.2); color: #07C160; font-size: 32rpx; } .icon-poster { background: rgba(255, 215, 0, 0.2); } .share-btn-text { font-size: 24rpx; color: rgba(255, 255, 255, 0.6); } /* ===== 支付弹窗 ===== */ .payment-info { padding: 24rpx; background: rgba(0, 0, 0, 0.3); border-radius: 24rpx; margin-bottom: 32rpx; } .payment-type { font-size: 26rpx; color: rgba(255, 255, 255, 0.6); display: block; margin-bottom: 16rpx; } .payment-amount { display: flex; align-items: center; justify-content: space-between; } .amount-label { font-size: 28rpx; color: rgba(255, 255, 255, 0.6); } .amount-value { font-size: 48rpx; font-weight: 700; color: #00CED1; } .payment-methods { margin-bottom: 32rpx; } .method-item { display: flex; align-items: center; gap: 16rpx; padding: 24rpx; background: rgba(255, 255, 255, 0.05); border-radius: 16rpx; border: 2rpx solid transparent; } .method-active { border-color: #07C160; } .method-icon { width: 48rpx; height: 48rpx; background: #07C160; color: #ffffff; font-size: 24rpx; border-radius: 8rpx; display: flex; align-items: center; justify-content: center; } .method-name { flex: 1; font-size: 28rpx; color: #ffffff; } .method-check { color: #07C160; font-size: 28rpx; } .btn-primary { width: 100%; padding: 28rpx; background: linear-gradient(135deg, #00CED1 0%, #20B2AA 100%); color: #ffffff; font-size: 32rpx; font-weight: 600; border-radius: 24rpx; text-align: center; margin-bottom: 16rpx; } .payment-notice { font-size: 22rpx; color: rgba(255, 255, 255, 0.3); text-align: center; display: block; } /* ===== 登录提示 ===== */ .login-prompt { margin-top: 32rpx; } .login-btn { padding: 28rpx; background: rgba(255, 255, 255, 0.1); border: 2rpx solid rgba(255, 255, 255, 0.2); border-radius: 24rpx; text-align: center; } .login-btn-text { font-size: 28rpx; color: rgba(255, 255, 255, 0.6); } /* ===== 登录弹窗 ===== */ .login-modal { padding: 48rpx 32rpx; text-align: center; } .login-icon { font-size: 80rpx; display: block; margin-bottom: 24rpx; } .login-title { font-size: 36rpx; font-weight: 700; color: #ffffff; display: block; margin-bottom: 16rpx; } .login-desc { font-size: 26rpx; color: rgba(255, 255, 255, 0.5); display: block; margin-bottom: 48rpx; } .btn-wechat { display: flex; align-items: center; justify-content: center; gap: 16rpx; padding: 28rpx; background: #07C160; color: #ffffff; font-size: 30rpx; font-weight: 600; border-radius: 24rpx; margin-bottom: 20rpx; border: none; } .btn-wechat::after { border: none; } .btn-wechat-icon { width: 40rpx; height: 40rpx; background: rgba(255, 255, 255, 0.2); border-radius: 8rpx; font-size: 24rpx; display: flex; align-items: center; justify-content: center; } .btn-phone { display: flex; align-items: center; justify-content: center; gap: 16rpx; padding: 28rpx; background: rgba(255, 255, 255, 0.05); color: #ffffff; font-size: 30rpx; border-radius: 24rpx; border: 2rpx solid rgba(255, 255, 255, 0.1); } .btn-phone::after { border: none; } .btn-phone-icon { font-size: 32rpx; } .login-notice { font-size: 22rpx; color: rgba(255, 255, 255, 0.3); margin-top: 32rpx; display: block; } /* ===== 支付中加载 ===== */ .loading-box { background: rgba(0, 0, 0, 0.8); border-radius: 24rpx; padding: 48rpx 64rpx; display: flex; flex-direction: column; align-items: center; gap: 24rpx; } .loading-spinner { width: 64rpx; height: 64rpx; border: 4rpx solid rgba(255, 255, 255, 0.2); border-top-color: #00CED1; border-radius: 50%; animation: spin 0.8s linear infinite; } @keyframes spin { to { transform: rotate(360deg); } } .loading-text { font-size: 28rpx; color: rgba(255, 255, 255, 0.8); } /* ===== 海报弹窗 ===== */ .poster-modal { padding-bottom: calc(64rpx + env(safe-area-inset-bottom)); } .poster-preview { display: flex; justify-content: center; margin: 32rpx 0; padding: 24rpx; background: rgba(0, 0, 0, 0.3); border-radius: 24rpx; } .poster-canvas { border-radius: 16rpx; box-shadow: 0 16rpx 48rpx rgba(0, 0, 0, 0.5); } .poster-actions { display: flex; gap: 24rpx; margin-bottom: 24rpx; } .poster-btn { flex: 1; display: flex; align-items: center; justify-content: center; gap: 12rpx; padding: 28rpx; border-radius: 24rpx; font-size: 30rpx; font-weight: 500; } .btn-save { background: linear-gradient(135deg, #00CED1 0%, #20B2AA 100%); color: #ffffff; } .btn-icon { font-size: 32rpx; } .poster-tip { font-size: 24rpx; color: rgba(255, 255, 255, 0.4); text-align: center; display: block; }