/** * 这里是uni-app内置的常用样式变量 * * uni-app 官方扩展插件及插件市场(https://ext.dcloud.net.cn)上很多三方插件均使用了这些样式变量 * 如果你是插件开发者,建议你使用scss预处理,并在插件代码中直接使用这些变量(无需 import 这个文件),方便用户通过搭积木的方式开发整体风格一致的App * */ /** * 如果你是App开发者(插件使用者),你可以通过修改这些变量来定制自己的插件主题,实现自定义主题功能 * * 如果你的项目同样使用了scss预处理,你也可以直接在你的 scss 代码中使用如下变量,同时无需 import 这个文件 */ /* 颜色变量 */ /* 行为相关颜色 */ /* 文字基本颜色 */ /* 背景颜色 */ /* 边框颜色 */ /* 尺寸变量 */ /* 文字尺寸 */ /* 图片尺寸 */ /* Border Radius */ /* 水平间距 */ /* 垂直间距 */ /* 透明度 */ /* 文章场景相关 */ /* ============================================================ * 设计 token * ============================================================ */ /* 主品牌色:青绿(健康主题) */ /* 浅青绿背景 */ /* 深青绿文字 */ /* ============================================================ * 页面容器 * ============================================================ */ .page.data-v-cebdebdc { position: relative; min-height: 100vh; box-sizing: border-box; padding: 24rpx 28rpx calc(48rpx + env(safe-area-inset-bottom)); background: linear-gradient(180deg, #f0fdfa 0%, #f8fafc 28%, #f8fafc 100%); display: flex; flex-direction: column; align-items: stretch; gap: 20rpx; color: #0f172a; overflow-x: hidden; } /* ============================================================ * 页头 * ============================================================ */ .page-header.data-v-cebdebdc { display: flex; align-items: flex-start; justify-content: space-between; gap: 16rpx; flex-shrink: 0; } .header-main.data-v-cebdebdc { display: flex; flex-direction: column; gap: 6rpx; flex: 1; min-width: 0; } .page-title.data-v-cebdebdc { font-size: 40rpx; font-weight: 800; color: #0f172a; letter-spacing: 1rpx; line-height: 1.2; } .page-subtitle.data-v-cebdebdc { font-size: 24rpx; color: #94a3b8; line-height: 1.4; } .status-pill.data-v-cebdebdc { flex-shrink: 0; display: flex; align-items: center; gap: 8rpx; padding: 10rpx 18rpx; border-radius: 999rpx; background: rgba(255, 255, 255, 0.85); border: 2rpx solid rgba(15, 23, 42, 0.06); box-shadow: 0 4rpx 12rpx rgba(15, 23, 42, 0.04); } .status-pill.active.data-v-cebdebdc { background: #ccfbf1; border-color: rgba(20, 184, 166, 0.35); } .status-pill.active .status-dot.data-v-cebdebdc { background: #14b8a6; box-shadow: 0 0 0 4rpx rgba(20, 184, 166, 0.25); animation: status-pulse-cebdebdc 1.2s ease-in-out infinite; } .status-pill.active .status-text.data-v-cebdebdc { color: #0f766e; } .status-pill.paused.data-v-cebdebdc { background: #fef3c7; border-color: rgba(245, 158, 11, 0.4); } .status-pill.paused .status-dot.data-v-cebdebdc { background: #f59e0b; } .status-pill.paused .status-text.data-v-cebdebdc { color: #92400e; } .status-dot.data-v-cebdebdc { width: 12rpx; height: 12rpx; border-radius: 50%; background: #94a3b8; } .status-text.data-v-cebdebdc { font-size: 22rpx; font-weight: 600; color: #475569; white-space: nowrap; } @keyframes status-pulse-cebdebdc { 0%, 100% { transform: scale(1); opacity: 1; } 50% { transform: scale(1.15); opacity: 0.85; } } /* ============================================================ * 画布区域 * ============================================================ */ .stage-canvas-wrapper.data-v-cebdebdc { /* 用 calc 替代 100vw,避免右侧被裁切导致圆角不对称 */ width: calc(100% + 56rpx); margin-left: -28rpx; margin-right: -28rpx; flex-shrink: 0; height: 740rpx; display: flex; justify-content: center; align-items: center; position: relative; border-radius: 0 0 40rpx 40rpx; overflow: hidden; box-sizing: border-box; background: linear-gradient(180deg, #f0fdfa 0%, #f8fafc 55%, #f1f5f9 100%); } /* ============================================================ * 握力环舞台(由 grip-ring-canvas 组件内联而来) * ============================================================ */ .ambient-glow.data-v-cebdebdc { position: absolute; width: 1200rpx; height: 1200rpx; top: 50%; left: 50%; transform: translate(-50%, -50%); border-radius: 50%; background: radial-gradient(circle, rgba(204, 251, 241, 0.9) 0%, rgba(240, 253, 250, 0.5) 30%, rgba(241, 245, 249, 0.2) 55%, transparent 72%); pointer-events: none; } .ring-container.data-v-cebdebdc { position: relative; width: 720rpx; height: 720rpx; display: flex; align-items: center; justify-content: center; z-index: 1; } .beat-halo.data-v-cebdebdc { position: absolute; width: 720rpx; height: 720rpx; border-radius: 50%; background: radial-gradient(circle, rgba(20, 184, 166, 0.45) 0%, rgba(45, 212, 191, 0.18) 38%, rgba(20, 184, 166, 0) 70%); opacity: 0; transition: opacity 0.3s ease; will-change: transform, opacity; } .ring-container.playing .beat-halo.data-v-cebdebdc { opacity: 1; animation: beat-pulse-cebdebdc calc(var(--beat-duration, 750ms) * 2) ease-in-out infinite; } @keyframes beat-pulse-cebdebdc { 0%, 100% { transform: scale(1); opacity: 0.4; } 50% { transform: scale(0.86); opacity: 0.95; } } .video-ring.data-v-cebdebdc { position: relative; width: 640rpx; height: 640rpx; border-radius: 50%; overflow: hidden; box-shadow: 0 20rpx 56rpx rgba(20, 184, 166, 0.35), 0 10rpx 28rpx rgba(45, 212, 191, 0.22); will-change: transform; z-index: 1; } .ring-container.playing .video-ring.data-v-cebdebdc { animation: video-squeeze-cebdebdc calc(var(--beat-duration, 750ms) * 2) ease-in-out infinite; } @keyframes video-squeeze-cebdebdc { 0%, 100% { transform: scale(1); } 50% { transform: scale(0.95); } } .demo-video.data-v-cebdebdc { width: 100%; height: 100%; border-radius: 50%; background: #e2f5f1; } .video-ring-border.data-v-cebdebdc { position: absolute; inset: 0; border-radius: 50%; pointer-events: none; box-shadow: inset 0 0 0 4rpx rgba(255, 255, 255, 0.6), inset 0 8rpx 24rpx rgba(15, 118, 110, 0.25); } .center-hint.data-v-cebdebdc { position: absolute; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 16rpx; pointer-events: none; z-index: 3; animation: hint-fade-in-cebdebdc 0.3s ease; } @keyframes hint-fade-in-cebdebdc { from { opacity: 0; transform: scale(0.9); } to { opacity: 1; transform: scale(1); } } .hint-icon.data-v-cebdebdc { width: 140rpx; height: 140rpx; display: flex; align-items: center; justify-content: center; background: rgba(15, 23, 42, 0.45); -webkit-backdrop-filter: blur(6rpx); backdrop-filter: blur(6rpx); border: 3rpx solid rgba(255, 255, 255, 0.85); border-radius: 50%; box-shadow: 0 12rpx 32rpx rgba(15, 23, 42, 0.3); animation: hint-bounce-cebdebdc 2s ease-in-out infinite; will-change: transform; } .play-triangle.data-v-cebdebdc { width: 0; height: 0; border-left: 44rpx solid #ffffff; border-top: 30rpx solid transparent; border-bottom: 30rpx solid transparent; margin-left: 10rpx; } @keyframes hint-bounce-cebdebdc { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.06); } } .hint-text.data-v-cebdebdc { font-size: 34rpx; color: #ffffff; font-weight: 700; letter-spacing: 3rpx; text-shadow: 0 2rpx 8rpx rgba(0, 0, 0, 0.55); } .bpm-chip.data-v-cebdebdc { position: absolute; bottom: 24rpx; left: 50%; transform: translateX(-50%); display: flex; align-items: baseline; gap: 6rpx; padding: 8rpx 22rpx; border-radius: 999rpx; background: rgba(15, 118, 110, 0.78); box-shadow: 0 6rpx 18rpx rgba(15, 118, 110, 0.35); pointer-events: none; z-index: 3; } .bpm-value.data-v-cebdebdc { font-size: 36rpx; color: #ffffff; font-weight: 900; line-height: 1; letter-spacing: -1rpx; font-variant-numeric: tabular-nums; } .bpm-label.data-v-cebdebdc { font-size: 20rpx; color: rgba(255, 255, 255, 0.85); font-weight: 700; letter-spacing: 2rpx; } .tap-overlay.data-v-cebdebdc { position: absolute; inset: 0; z-index: 5; } /* ============================================================ * BGM 开关 * ============================================================ */ .bgm-toggle.data-v-cebdebdc { position: absolute; top: 24rpx; right: 28rpx; width: 72rpx; height: 72rpx; border-radius: 50%; background: rgba(255, 255, 255, 0.9); box-shadow: 0 4rpx 16rpx rgba(0, 0, 0, 0.1), 0 0 0 2rpx rgba(20, 184, 166, 0.2); display: flex; align-items: center; justify-content: center; z-index: 20; transition: all 0.2s ease; } .bgm-toggle.data-v-cebdebdc:active { transform: scale(0.92); background: #f0fdfa; } .bgm-icon.data-v-cebdebdc { font-size: 36rpx; line-height: 1; } /* ============================================================ * 进度显示 * ============================================================ */ .progress-bar.data-v-cebdebdc { width: 100%; background: #ffffff; border-radius: 24rpx; padding: 20rpx 24rpx; box-shadow: 0 4rpx 12rpx rgba(15, 23, 42, 0.04); margin-bottom: 20rpx; } .progress-text.data-v-cebdebdc { display: flex; justify-content: space-between; align-items: center; } .progress-label.data-v-cebdebdc { font-size: 26rpx; color: #475569; font-weight: 600; } .progress-count.data-v-cebdebdc { font-size: 32rpx; color: #0f766e; font-weight: 700; font-variant-numeric: tabular-nums; } /* ============================================================ * 控制面板(统计 + 档位合一) * ============================================================ */ .control-deck.data-v-cebdebdc { width: 100%; box-sizing: border-box; background: #ffffff; border-radius: 28rpx; padding: 24rpx 20rpx 20rpx; box-shadow: 0 8rpx 32rpx rgba(15, 23, 42, 0.06), 0 1rpx 0 rgba(255, 255, 255, 0.9) inset; border: 2rpx solid rgba(255, 255, 255, 0.8); transition: box-shadow 0.25s ease; } .control-deck.is-playing.data-v-cebdebdc { box-shadow: 0 12rpx 40rpx rgba(20, 184, 166, 0.12), 0 0 0 2rpx rgba(20, 184, 166, 0.12); } .stats-row.data-v-cebdebdc { display: flex; gap: 12rpx; } .stat-chip.data-v-cebdebdc { flex: 1; background: linear-gradient(180deg, #f8fafc 0%, #f1f5f9 100%); border-radius: 20rpx; padding: 18rpx 8rpx 16rpx; display: flex; flex-direction: column; align-items: center; gap: 6rpx; border: 2rpx solid rgba(15, 23, 42, 0.04); } .stat-chip-label.data-v-cebdebdc { font-size: 20rpx; color: #94a3b8; font-weight: 500; } .stat-chip-value.data-v-cebdebdc { font-size: 34rpx; font-weight: 800; color: #0f766e; font-variant-numeric: tabular-nums; line-height: 1.1; } .stat-chip-value.muted.data-v-cebdebdc { color: #cbd5e1; font-weight: 600; } .deck-divider.data-v-cebdebdc { height: 2rpx; margin: 20rpx 8rpx 18rpx; background: linear-gradient(90deg, transparent, rgba(15, 23, 42, 0.06), transparent); } .presets-block.data-v-cebdebdc { display: flex; flex-direction: column; gap: 14rpx; } .presets-header.data-v-cebdebdc { display: flex; align-items: center; justify-content: space-between; padding: 0 4rpx; } .presets-title.data-v-cebdebdc { font-size: 32rpx; font-weight: 800; color: #0f172a; } .presets-hint.data-v-cebdebdc { font-size: 20rpx; color: #94a3b8; } .presets.data-v-cebdebdc { display: flex; gap: 12rpx; } .preset.data-v-cebdebdc { flex: 1; background: #f8fafc; border: 3rpx solid transparent; border-radius: 24rpx; padding: 32rpx 8rpx 28rpx; display: flex; flex-direction: column; align-items: center; gap: 10rpx; transition: all 0.18s; } .preset .preset-name.data-v-cebdebdc { font-size: 40rpx; font-weight: 800; color: #0f172a; } .preset .preset-bpm.data-v-cebdebdc { font-size: 26rpx; color: #475569; font-weight: 700; font-variant-numeric: tabular-nums; } .preset.data-v-cebdebdc:active { transform: scale(0.97); } .preset.disabled.data-v-cebdebdc { opacity: 0.45; pointer-events: none; } .preset.active.data-v-cebdebdc { background: linear-gradient(160deg, #ccfbf1 0%, #ecfeff 100%); border-color: #14b8a6; box-shadow: 0 6rpx 16rpx rgba(20, 184, 166, 0.15); } .preset.active .preset-name.data-v-cebdebdc, .preset.active .preset-bpm.data-v-cebdebdc { color: #0f766e; } .preset.active .preset-desc.data-v-cebdebdc { color: #14b8a6; } /* ============================================================ * 训练目标 chips * ============================================================ */ .target-block.data-v-cebdebdc { display: flex; flex-direction: column; gap: 14rpx; } .target-header.data-v-cebdebdc { display: flex; align-items: center; justify-content: space-between; padding: 12rpx 6rpx; border-radius: 16rpx; } .target-header.data-v-cebdebdc:active { background: #f8fafc; } .target-title.data-v-cebdebdc { font-size: 32rpx; font-weight: 800; color: #0f172a; } .target-current.data-v-cebdebdc { display: flex; align-items: center; gap: 12rpx; } .target-current-text.data-v-cebdebdc { font-size: 30rpx; font-weight: 700; color: #0f766e; } .target-toggle.data-v-cebdebdc { font-size: 22rpx; color: #94a3b8; } .target-chips.data-v-cebdebdc { display: flex; gap: 12rpx; } .target-chip.data-v-cebdebdc { flex: 1; height: 88rpx; display: flex; align-items: center; justify-content: center; background: #f8fafc; border: 2rpx solid transparent; border-radius: 16rpx; transition: all 0.18s; } .target-chip .target-chip-text.data-v-cebdebdc { font-size: 30rpx; font-weight: 700; color: #475569; } .target-chip.data-v-cebdebdc:active { transform: scale(0.97); } .target-chip.disabled.data-v-cebdebdc { opacity: 0.45; pointer-events: none; } .target-chip.active.data-v-cebdebdc { background: #ccfbf1; border-color: #14b8a6; } .target-chip.active .target-chip-text.data-v-cebdebdc { color: #0f766e; } /* ============================================================ * 倒计时浮标 * ============================================================ */ .countdown-badge.data-v-cebdebdc { position: absolute; top: 24rpx; left: 28rpx; display: flex; flex-direction: column; align-items: center; padding: 8rpx 20rpx 10rpx; border-radius: 16rpx; background: rgba(255, 255, 255, 0.92); box-shadow: 0 4rpx 16rpx rgba(15, 23, 42, 0.08), 0 0 0 2rpx rgba(20, 184, 166, 0.18); z-index: 20; } .countdown-label.data-v-cebdebdc { font-size: 18rpx; color: #94a3b8; line-height: 1.1; } .countdown-value.data-v-cebdebdc { font-size: 32rpx; font-weight: 800; color: #0f766e; font-variant-numeric: tabular-nums; line-height: 1.1; margin-top: 2rpx; } /* ============================================================ * 强度预估消耗 * ============================================================ */ .intensity-estimate.data-v-cebdebdc { margin-top: 14rpx; padding: 16rpx 20rpx; display: flex; align-items: center; gap: 10rpx; background: #ccfbf1; border-radius: 14rpx; } .estimate-icon.data-v-cebdebdc { font-size: 30rpx; line-height: 1; flex-shrink: 0; } .estimate-text.data-v-cebdebdc { font-size: 24rpx; font-weight: 600; color: #0f766e; letter-spacing: 0.5rpx; } /* ============================================================ * 训练功效(可折叠) * ============================================================ */ .benefit-block.data-v-cebdebdc { display: flex; flex-direction: column; } .benefit-header.data-v-cebdebdc { display: flex; align-items: center; justify-content: space-between; padding: 4rpx; } .benefit-header.data-v-cebdebdc:active { opacity: 0.7; } .benefit-title.data-v-cebdebdc { font-size: 26rpx; font-weight: 700; color: #0f172a; } .benefit-toggle.data-v-cebdebdc { font-size: 22rpx; color: #0f766e; font-weight: 600; } .benefit-content.data-v-cebdebdc { margin-top: 14rpx; display: flex; flex-direction: column; gap: 16rpx; padding: 20rpx; background: #f8fafc; border-radius: 16rpx; } .benefit-row.data-v-cebdebdc { display: flex; flex-direction: column; gap: 10rpx; } .benefit-label.data-v-cebdebdc { font-size: 22rpx; font-weight: 700; color: #475569; } .muscle-tags.data-v-cebdebdc { display: flex; flex-wrap: wrap; gap: 10rpx; } .muscle-tag.data-v-cebdebdc { padding: 6rpx 18rpx; font-size: 22rpx; font-weight: 600; color: #0f766e; background: #ccfbf1; border-radius: 999rpx; } .benefit-effect.data-v-cebdebdc { font-size: 24rpx; line-height: 1.7; color: #475569; } /* ============================================================ * 暂停态大按钮(老年友好,醒目易点) * ============================================================ */ .pause-actions.data-v-cebdebdc { margin-top: 20rpx; display: flex; gap: 16rpx; } .big-btn.data-v-cebdebdc { flex: 1; height: 104rpx; display: flex; align-items: center; justify-content: center; gap: 10rpx; border-radius: 20rpx; border: none; padding: 0; line-height: 1; } .big-btn.data-v-cebdebdc::after { border: none; } .big-btn.data-v-cebdebdc:active { transform: scale(0.97); } .big-btn-icon.data-v-cebdebdc { font-size: 30rpx; line-height: 1; } .big-btn-text.data-v-cebdebdc { font-size: 34rpx; font-weight: 800; letter-spacing: 2rpx; } .big-btn-resume.data-v-cebdebdc { background: #14b8a6; color: #fff; box-shadow: 0 8rpx 20rpx rgba(20, 184, 166, 0.32); } .big-btn-end.data-v-cebdebdc { background: #fef2f2; color: #dc2626; border: 2rpx solid rgba(220, 38, 38, 0.3); } .big-btn-end .big-btn-icon.data-v-cebdebdc { font-size: 26rpx; } /* ============================================================ * 完成浮层 * ============================================================ */ .summary-mask.data-v-cebdebdc { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(15, 23, 42, 0.45); -webkit-backdrop-filter: blur(6rpx); backdrop-filter: blur(6rpx); display: flex; align-items: flex-end; justify-content: center; z-index: 900; padding: 0 24rpx calc(32rpx + env(safe-area-inset-bottom)); animation: fade-in-cebdebdc 0.2s ease; } /* ============================================================ * 奖励弹窗 * ============================================================ */ .reward-popup-mask.data-v-cebdebdc { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.5); display: flex; align-items: center; justify-content: center; z-index: 1000; animation: fade-in-cebdebdc 0.2s ease; } @keyframes fade-in-cebdebdc { from { opacity: 0; } to { opacity: 1; } } .reward-popup.data-v-cebdebdc { width: 560rpx; background: linear-gradient(135deg, #fff 0%, #f0fdfa 100%); border-radius: 32rpx; padding: 48rpx 32rpx; display: flex; flex-direction: column; align-items: center; gap: 20rpx; box-shadow: 0 20rpx 60rpx rgba(0, 0, 0, 0.3); animation: popup-bounce-cebdebdc 0.4s cubic-bezier(0.34, 1.56, 0.64, 1); } @keyframes popup-bounce-cebdebdc { 0% { transform: scale(0.8) translateY(40rpx); opacity: 0; } 100% { transform: scale(1) translateY(0); opacity: 1; } } .reward-emoji.data-v-cebdebdc { font-size: 120rpx; line-height: 1; animation: emoji-pop-cebdebdc 0.6s ease; } @keyframes emoji-pop-cebdebdc { 0%, 100% { transform: scale(1); } 50% { transform: scale(1.2); } } .reward-title.data-v-cebdebdc { font-size: 36rpx; font-weight: 700; color: #0f766e; letter-spacing: 2rpx; } .reward-desc.data-v-cebdebdc { font-size: 28rpx; color: #475569; margin-bottom: 8rpx; } .reward-count.data-v-cebdebdc { font-size: 24rpx; color: #94a3b8; margin-bottom: 12rpx; } .reward-btn.data-v-cebdebdc { width: 100%; height: 88rpx; line-height: 88rpx; text-align: center; background: #14b8a6; color: #fff; border-radius: 999rpx; font-size: 30rpx; font-weight: 600; box-shadow: 0 8rpx 20rpx rgba(20, 184, 166, 0.3); transition: all 0.2s; } .reward-btn.data-v-cebdebdc:active { transform: scale(0.97); box-shadow: 0 4rpx 12rpx rgba(20, 184, 166, 0.2); } /* ============================================================ * 训练完成卡片 * ============================================================ */ .completion-card.data-v-cebdebdc { width: 100%; max-width: 700rpx; background: linear-gradient(135deg, #f0fdfa, #ecfeff); border-radius: 32rpx 32rpx 28rpx 28rpx; padding: 40rpx 28rpx 36rpx; display: flex; flex-direction: column; gap: 28rpx; align-items: center; box-shadow: 0 -8rpx 48rpx rgba(15, 23, 42, 0.12), 0 8rpx 32rpx rgba(20, 184, 166, 0.08); border: 2rpx solid rgba(20, 184, 166, 0.1); animation: sheet-up-cebdebdc 0.35s cubic-bezier(0.22, 1, 0.36, 1); } @keyframes sheet-up-cebdebdc { from { transform: translateY(100%); opacity: 0; } to { transform: translateY(0); opacity: 1; } } .completion-header.data-v-cebdebdc { display: flex; flex-direction: column; align-items: center; gap: 8rpx; } .completion-emoji.data-v-cebdebdc { font-size: 80rpx; line-height: 1; margin-bottom: 8rpx; animation: emoji-bounce-cebdebdc 1.5s ease-in-out infinite; } @keyframes emoji-bounce-cebdebdc { 0%, 100% { transform: scale(1) rotate(0deg); } 25% { transform: scale(1.1) rotate(-5deg); } 75% { transform: scale(1.1) rotate(5deg); } } .completion-title.data-v-cebdebdc { font-size: 36rpx; color: #0f172a; font-weight: 800; letter-spacing: 2rpx; } .completion-subtitle.data-v-cebdebdc { font-size: 24rpx; color: #94a3b8; margin-top: 4rpx; } .completion-content.data-v-cebdebdc { width: 100%; display: flex; flex-direction: column; gap: 24rpx; } /* 核心统计网格 */ .stats-grid.data-v-cebdebdc { display: flex; gap: 16rpx; width: 100%; } .stat-item.data-v-cebdebdc { flex: 1; background: rgba(255, 255, 255, 0.85); border-radius: 20rpx; padding: 24rpx 12rpx 20rpx; display: flex; flex-direction: column; align-items: center; gap: 6rpx; box-shadow: 0 4rpx 12rpx rgba(15, 23, 42, 0.04), inset 0 1rpx 0 rgba(255, 255, 255, 0.8); -webkit-backdrop-filter: blur(8rpx); backdrop-filter: blur(8rpx); } .stat-icon.data-v-cebdebdc { font-size: 40rpx; line-height: 1; margin-bottom: 4rpx; } .stat-label.data-v-cebdebdc { font-size: 22rpx; color: #94a3b8; font-weight: 500; } .stat-value.data-v-cebdebdc { font-size: 36rpx; font-weight: 800; color: #0f172a; font-variant-numeric: tabular-nums; letter-spacing: 0; } /* ============================================================ * 食物对照卡片 * ============================================================ */ .food-comparison-card.data-v-cebdebdc { background: linear-gradient(135deg, #fff7ed 0%, #fffbeb 100%); border-radius: 20rpx; padding: 28rpx 24rpx; width: 100%; box-shadow: 0 4rpx 16rpx rgba(251, 191, 36, 0.1), inset 0 1rpx 0 rgba(255, 255, 255, 0.8); border: 2rpx solid rgba(251, 191, 36, 0.15); } .food-comparison-header.data-v-cebdebdc { display: flex; flex-direction: column; align-items: center; gap: 4rpx; margin-bottom: 24rpx; } .food-comparison-title.data-v-cebdebdc { font-size: 26rpx; color: #92400e; font-weight: 700; letter-spacing: 1rpx; } .food-comparison-hint.data-v-cebdebdc { font-size: 22rpx; color: #b45309; opacity: 0.8; } .food-list.data-v-cebdebdc { display: flex; justify-content: space-around; align-items: center; gap: 12rpx; } .food-item.data-v-cebdebdc { flex: 1; display: flex; flex-direction: column; align-items: center; gap: 8rpx; padding: 16rpx 8rpx; background: rgba(255, 255, 255, 0.7); border-radius: 16rpx; transition: transform 0.3s ease; } .food-item.data-v-cebdebdc:active { transform: scale(0.95); } .food-emoji.data-v-cebdebdc { font-size: 56rpx; line-height: 1; filter: drop-shadow(0 2rpx 4rpx rgba(0, 0, 0, 0.1)); } .food-info.data-v-cebdebdc { display: flex; flex-direction: column; align-items: center; gap: 2rpx; } .food-count.data-v-cebdebdc { font-size: 32rpx; font-weight: 800; color: #92400e; line-height: 1.2; font-variant-numeric: tabular-nums; } .food-name.data-v-cebdebdc { font-size: 20rpx; color: #b45309; font-weight: 500; letter-spacing: 1rpx; } .action-row.data-v-cebdebdc { display: flex; gap: 16rpx; justify-content: center; width: 100%; } .btn-primary.data-v-cebdebdc, .btn-secondary.data-v-cebdebdc, .btn-share.data-v-cebdebdc { flex: 1; border-radius: 999rpx; font-size: 28rpx; height: 88rpx; line-height: 88rpx; border: none; padding: 0 16rpx; } .btn-primary.data-v-cebdebdc::after, .btn-secondary.data-v-cebdebdc::after, .btn-share.data-v-cebdebdc::after { border: none; } .btn-primary.data-v-cebdebdc { background: #14b8a6; color: #fff; } .btn-secondary.data-v-cebdebdc { background: #fff; color: #0f766e; border: 2rpx solid rgba(20, 184, 166, 0.35); } .btn-share.data-v-cebdebdc { flex: 0 0 auto; width: 88rpx; padding: 0; background: #f0fdfa; color: #0f766e; border: 2rpx solid rgba(20, 184, 166, 0.25); display: inline-flex; align-items: center; justify-content: center; gap: 6rpx; font-size: 24rpx; } .btn-share .share-icon.data-v-cebdebdc { font-size: 30rpx; line-height: 1; }