/* ===== 页面框架 ===== */ .page { background: #f7f7f7; min-height: 100vh; display: flex; flex-direction: column; } .content { flex: 1; padding: 24rpx 24rpx 200rpx; /* 为底部固定按钮预留空间 */ box-sizing: border-box; } .no-scrollbar::-webkit-scrollbar { width: 0; height: 0; display: none; } /* 遮罩 */ .page-mask { position: fixed; inset: 0; background-color: rgba(0, 0, 0, 0.35); z-index: 9999; } /* ===== 卡片通用 ===== */ .card { background: #ffffff; border-radius: 16rpx; padding: 24rpx; box-shadow: 0 8rpx 24rpx rgba(0,0,0,0.05); } .card + .card { margin-top: 20rpx; } /* ===== 顶部卡片:状态 + 倒计时 + 课程 ===== */ .header-card .status-line { display: flex; align-items: center; justify-content: space-between; gap: 16rpx; margin-bottom: 16rpx; } .status-badge { height: 48rpx; padding: 0 20rpx; border-radius: 999rpx; display: inline-flex; align-items: center; justify-content: center; } .status-text { font-size: 26rpx; font-weight: 600; } .status-pending { background: #fff6e6; color: #ff8d1a; } .status-success { background: #e9fbef; color: #12b05b; } .status-default { background: #f0f0f0; color: #666666; } .countdown-pill { background: #fff4f2; border: 1rpx solid #ffd6cc; padding: 0 18rpx; height: 48rpx; border-radius: 999rpx; display: inline-flex; align-items: center; } .countdown-text { font-size: 24rpx; color: #ff5a1a; } /* 课程行 */ .course-line { display: flex; gap: 20rpx; align-items: stretch; } .cover { width: 240rpx; height: 160rpx; border-radius: 12rpx; background: #f2f2f2; flex-shrink: 0; } .course-info { flex: 1; min-width: 0; display: flex; flex-direction: column; justify-content: space-between; } .course-title { font-size: 32rpx; font-weight: 600; color: #1f1f1f; line-height: 44rpx; } .ellipsis-2 { display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } .price-line { display: flex; align-items: baseline; gap: 16rpx; margin-top: 8rpx; } .price-origin { font-size: 28rpx; color: #9f9f9f; text-decoration: line-through; } .price-amount { font-size: 30rpx; color: #ff5a1a; font-weight: 700; } /* ===== 键值对(订单详情 / 价格明细) ===== */ .kv { display: flex; align-items: center; justify-content: space-between; padding: 12rpx 0; } .kv + .kv { border-top: 1rpx dashed #f0f0f0; } .kv-key { font-size: 28rpx; color: #666666; } .kv-val { font-size: 28rpx; color: #1f1f1f; max-width: 70%; text-align: right; word-break: break-all; } .selectable { user-select: text; } .divider { height: 1rpx; background: #f2f2f2; margin: 8rpx 0 12rpx; } .discount { color: #12b05b; font-weight: 600; } .total { border-top: 1rpx solid #f2f2f2; margin-top: 8rpx; padding-top: 16rpx; } .total-key { font-size: 30rpx; color: #333333; font-weight: 600; } .total-val { font-size: 34rpx; color: #ff5a1a; font-weight: 700; } /* ===== 底部操作栏 ===== */ .footer { position: fixed; left: 0; right: 0; bottom: 0; background: #ffffff; box-shadow: 0 -6rpx 20rpx rgba(0,0,0,0.06); padding-bottom: env(safe-area-inset-bottom); padding-bottom: constant(safe-area-inset-bottom); } .footer-inner { height: 120rpx; display: flex; align-items: center; justify-content: center; gap: 24rpx; padding: 0 24rpx; box-sizing: border-box; } .footer-inner.two-btns { justify-content: space-between; } .footer-inner.one-btn { justify-content: flex-end; } .btn { height: 88rpx; min-width: 260rpx; border-radius: 999rpx; display: flex; align-items: center; justify-content: center; font-size: 30rpx; font-weight: 600; } .btn-ghost { background: #ffffff; color: #333333; border: 2rpx solid #e6e6e6; } .btn-primary { background: linear-gradient(180deg, #ffa64a 0%, #ff8d1a 100%); color: #ffffff; box-shadow: 0 6rpx 14rpx rgba(255, 141, 26, 0.35); } /* ===== 迁移提示:以下旧的散装类建议删除(如无外部依赖) ===== */ /* .ml-37, .ml-7, .mt-15, .ml-3, .ml-23, .mt-17, .mt-11, .mt-389 等 */