/** * Soul创业实验 - 目录页样式 * 三书同级卡片 + 折叠/展开 */ .page { min-height: 100vh; background: #000000; padding-bottom: 200rpx; } /* ===== 自定义导航栏 ===== */ .nav-bar { position: fixed; top: 0; left: 0; right: 0; z-index: 100; background: rgba(0, 0, 0, 0.9); backdrop-filter: blur(40rpx); -webkit-backdrop-filter: blur(40rpx); border-bottom: 1rpx solid rgba(255, 255, 255, 0.05); } .nav-content { height: 88rpx; display: flex; align-items: center; justify-content: space-between; padding: 0 32rpx; } .nav-left, .nav-right { width: 64rpx; display: flex; align-items: center; justify-content: center; } .nav-title { font-size: 36rpx; font-weight: 600; flex: 1; text-align: center; } .search-btn { width: 64rpx; height: 64rpx; border-radius: 50%; background: #2c2c2e; display: flex; align-items: center; justify-content: center; transition: all 0.3s ease; } .search-btn:active { background: #3c3c3e; transform: scale(0.95); } .search-icon { font-size: 32rpx; color: rgba(255, 255, 255, 0.6); } .brand-color { color: #00CED1; } .nav-placeholder { width: 100%; } /* ===== 目录骨架屏 ===== */ .parts-skeleton { padding: 24rpx 32rpx; display: flex; flex-direction: column; gap: 24rpx; } .skeleton-book-card { display: flex; align-items: center; gap: 24rpx; padding: 36rpx 32rpx; background: linear-gradient(135deg, #1c1c1e 0%, #2c2c2e 100%); border-radius: 24rpx; } .skeleton-book-icon { width: 88rpx; height: 88rpx; border-radius: 22rpx; background: linear-gradient(90deg, #1c1c1e 25%, #2c2c2e 50%, #1c1c1e 75%); background-size: 200% 100%; animation: skeleton-shimmer 1.5s ease-in-out infinite; flex-shrink: 0; } .skeleton-book-info { flex: 1; display: flex; flex-direction: column; gap: 16rpx; } .skeleton-line { height: 28rpx; background: linear-gradient(90deg, #1c1c1e 25%, #2c2c2e 50%, #1c1c1e 75%); background-size: 200% 100%; animation: skeleton-shimmer 1.5s ease-in-out infinite; border-radius: 8rpx; } .skeleton-title { width: 70%; } .skeleton-subtitle { width: 50%; } .skeleton-count { width: 72rpx; height: 56rpx; background: linear-gradient(90deg, #1c1c1e 25%, #2c2c2e 50%, #1c1c1e 75%); background-size: 200% 100%; animation: skeleton-shimmer 1.5s ease-in-out infinite; border-radius: 12rpx; } @keyframes skeleton-shimmer { 0% { background-position: 200% 0; } 100% { background-position: -200% 0; } } /* ===== 目录内容区 ===== */ .chapters-content { padding: 16rpx 24rpx; width: 100%; box-sizing: border-box; } /* ===== 书组 ===== */ .book-group { margin-bottom: 20rpx; border-radius: 28rpx; overflow: hidden; transition: all 0.3s ease; } .book-group--expanded { background: rgba(255, 255, 255, 0.02); border: 2rpx solid rgba(0, 206, 209, 0.12); padding-bottom: 8rpx; } /* ===== 书卡片 ===== */ .book-card { display: flex; align-items: center; justify-content: space-between; padding: 28rpx 28rpx; background: linear-gradient(135deg, #141416 0%, #1e2024 50%, #1a1c20 100%); border-radius: 28rpx; border: 2rpx solid rgba(0, 206, 209, 0.15); position: relative; overflow: hidden; } .book-card::after { content: ''; position: absolute; top: 0; left: 0; right: 0; height: 2rpx; background: linear-gradient(90deg, transparent, rgba(0, 206, 209, 0.3), transparent); } .book-card:active { background: linear-gradient(135deg, #1a1c1e 0%, #252830 50%, #202428 100%); } .book-card-left { display: flex; align-items: center; gap: 20rpx; flex: 1; min-width: 0; } .book-card-icon { width: 88rpx; height: 88rpx; border-radius: 22rpx; background: linear-gradient(135deg, #00CED1 0%, #008B8B 100%); display: flex; align-items: center; justify-content: center; flex-shrink: 0; box-shadow: 0 6rpx 20rpx rgba(0, 206, 209, 0.25); } .book-card-emoji { font-size: 44rpx; line-height: 1; } .book-card-meta { flex: 1; min-width: 0; display: flex; flex-direction: column; gap: 6rpx; } .book-card-title { font-size: 30rpx; font-weight: 700; color: #ffffff; display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; letter-spacing: 1rpx; } .book-card-subtitle { font-size: 22rpx; color: rgba(255, 255, 255, 0.35); display: block; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .book-card-right { display: flex; flex-direction: column; align-items: flex-end; gap: 6rpx; flex-shrink: 0; margin-left: 16rpx; } .book-card-stats { display: flex; align-items: baseline; gap: 4rpx; } .book-card-count { font-size: 40rpx; font-weight: 800; color: #00CED1; line-height: 1.1; letter-spacing: -1rpx; } .book-card-unit { font-size: 20rpx; color: rgba(255, 255, 255, 0.35); margin-left: 2rpx; } .book-card-toggle { font-size: 20rpx; color: rgba(0, 206, 209, 0.6); transition: color 0.2s ease; } .toggle-active { color: #00CED1; } /* ===== 章节项(序言/尾声) ===== */ .chapter-item { display: flex; align-items: center; justify-content: space-between; padding: 22rpx 28rpx; margin: 0 12rpx 16rpx 12rpx; background: rgba(28, 28, 30, 0.7); border-radius: 20rpx; border: 1rpx solid rgba(255, 255, 255, 0.04); } .chapter-item:active { background: rgba(44, 44, 46, 0.8); } .item-left { display: flex; align-items: center; gap: 20rpx; flex: 1; min-width: 0; } .item-icon { width: 56rpx; height: 56rpx; border-radius: 14rpx; display: flex; align-items: center; justify-content: center; flex-shrink: 0; } .item-emoji { font-size: 28rpx; line-height: 1; } .icon-brand { background: rgba(0, 206, 209, 0.12); } .item-title { font-size: 26rpx; font-weight: 500; color: #ffffff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .item-right { display: flex; align-items: center; gap: 12rpx; flex-shrink: 0; } .item-arrow { font-size: 28rpx; color: rgba(255, 255, 255, 0.4); } /* ===== 标签 ===== */ .tag { display: inline-flex; align-items: center; justify-content: center; font-size: 20rpx; padding: 4rpx 14rpx; min-width: 64rpx; border-radius: 8rpx; box-sizing: border-box; text-align: center; } .tag-free { background: rgba(0, 206, 209, 0.1); color: #00CED1; } .tag-new { background: rgba(0, 206, 209, 0.15); color: #00CED1; font-size: 18rpx; padding: 2rpx 8rpx; margin-left: 8rpx; } .tag-vip { background: rgba(255, 215, 0, 0.12); color: #FFD700; font-size: 18rpx; padding: 2rpx 8rpx; margin-left: 8rpx; } .text-brand { color: #00CED1; } .text-muted { color: rgba(255, 255, 255, 0.4); } .text-xs { font-size: 22rpx; } /* ===== 篇章列表 ===== */ .part-list { margin: 0 12rpx 16rpx; } .part-item { margin-bottom: 12rpx; } .part-header { display: flex; align-items: center; justify-content: space-between; padding: 22rpx 24rpx; background: rgba(28, 28, 30, 0.7); border-radius: 20rpx; border: 1rpx solid rgba(255, 255, 255, 0.04); } .part-header:active { background: rgba(44, 44, 46, 0.8); } .part-left { display: flex; align-items: center; gap: 20rpx; flex: 1; min-width: 0; } .part-icon { width: 56rpx; height: 56rpx; border-radius: 14rpx; background: linear-gradient(135deg, #1a2e3e 0%, #0d1b2a 100%); border: 1rpx solid rgba(0, 206, 209, 0.2); display: flex; align-items: center; justify-content: center; font-size: 24rpx; font-weight: 700; color: #ffffff; flex-shrink: 0; } .part-icon-emoji { font-size: 28rpx; font-weight: 400; line-height: 1; background: linear-gradient(135deg, #1a2e3e 0%, #0d1b2a 100%); border: 1rpx solid rgba(0, 206, 209, 0.25); } .part-icon-img { width: 56rpx; height: 56rpx; border-radius: 14rpx; flex-shrink: 0; } .part-info { display: flex; flex-direction: column; min-width: 0; flex: 1; } .part-title { font-size: 27rpx; font-weight: 600; color: #ffffff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .part-subtitle { font-size: 20rpx; color: rgba(255, 255, 255, 0.35); margin-top: 4rpx; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .part-right { display: flex; align-items: center; gap: 12rpx; flex-shrink: 0; } .part-count { font-size: 22rpx; color: rgba(255, 255, 255, 0.35); } .part-arrow { font-size: 28rpx; color: rgba(255, 255, 255, 0.4); transition: transform 0.3s ease; } /* ===== 章节组 ===== */ .chapters-list { margin-top: 12rpx; margin-left: 12rpx; } .chapters-loading { padding: 24rpx; font-size: 24rpx; color: rgba(255, 255, 255, 0.5); } .chapter-header { padding: 14rpx 24rpx; font-size: 23rpx; font-weight: 500; color: rgba(255, 255, 255, 0.5); border-bottom: 1rpx solid rgba(255, 255, 255, 0.04); } .section-item { display: flex; flex-direction: row; align-items: center; justify-content: space-between; padding: 18rpx 24rpx; border-bottom: 1rpx solid rgba(255, 255, 255, 0.04); } .section-item:last-child { border-bottom: none; } .section-item:active { background: rgba(255, 255, 255, 0.04); } .section-left { display: flex; flex-direction: row; align-items: center; gap: 14rpx; flex: 1; min-width: 0; } .section-lock { width: 28rpx; min-width: 28rpx; font-size: 22rpx; text-align: center; flex-shrink: 0; } .section-lock-wrap { min-width: 28rpx; flex-shrink: 0; display: flex; align-items: center; justify-content: center; } .lock-open { color: #00CED1; } .lock-closed { color: rgba(255, 255, 255, 0.3); } .section-title { font-size: 25rpx; color: #ffffff; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; flex: 1; } .section-price { font-size: 22rpx; color: rgba(255, 255, 255, 0.45); } .tag-purchased { background: rgba(0, 206, 209, 0.15); color: #00CED1; } .section-right { display: flex; align-items: center; gap: 12rpx; flex-shrink: 0; margin-left: 12rpx; } .section-arrow { font-size: 24rpx; color: rgba(255, 255, 255, 0.3); } /* ===== 附录 ===== */ .card { background: rgba(28, 28, 30, 0.7); border-radius: 20rpx; border: 1rpx solid rgba(255, 255, 255, 0.04); margin: 0 12rpx 16rpx 12rpx; box-sizing: border-box; } .appendix-card { padding: 20rpx 24rpx; } .appendix-title { font-size: 23rpx; font-weight: 500; color: rgba(255, 255, 255, 0.5); display: block; margin-bottom: 12rpx; } .appendix-item { display: flex; align-items: center; justify-content: space-between; padding: 14rpx 0; border-bottom: 1rpx solid rgba(255, 255, 255, 0.04); } .appendix-item:last-child { border-bottom: none; } .appendix-item:active { opacity: 0.7; } .appendix-text { font-size: 23rpx; color: rgba(255, 255, 255, 0.7); } .appendix-arrow { font-size: 24rpx; color: rgba(255, 255, 255, 0.3); } /* ===== 展开三角 ===== */ .section-expand-trigger { display: flex; align-items: center; justify-content: center; padding: 16rpx 0 10rpx; } .latest-expand-triangle { width: 0; height: 0; border-left: 16rpx solid transparent; border-right: 16rpx solid transparent; border-top: 12rpx solid rgba(0, 206, 209, 0.5); opacity: 0.85; transform-origin: 50% 0; transition: border-top-color 0.15s ease; } .section-expand-trigger:active .latest-expand-triangle { border-top-color: #00CED1; } @keyframes catalog-tri-nudge { 0% { transform: translateY(0) scale(1); opacity: 0.85; } 40% { transform: translateY(10rpx) scale(1.12); opacity: 1; border-top-color: #00CED1; } 100% { transform: translateY(0) scale(1); opacity: 0.85; } } .latest-expand-triangle.tri-bounce { animation: catalog-tri-nudge 0.45s ease-out; } /* ===== 底部留白 ===== */ .bottom-space { height: 40rpx; }