/* * 冰箱盲盒 · 食材输入 */ .fridge-page { padding: var(--space-lg); min-height: 100vh; } /* ── 标题 ── */ .title { font-size: var(--text-headline); font-weight: 700; margin-bottom: var(--space-md); } /* ── 输入区 ── */ .input-area { display: flex; align-items: center; margin-bottom: var(--space-lg); } .ingredient-input { flex: 1; height: 88rpx; background: var(--color-surface); border-radius: var(--radius-lg); padding: 0 var(--space-md); font-size: var(--text-body); box-shadow: var(--shadow-sm); margin-right: var(--space-sm); } .voice-btn { width: 88rpx; height: 88rpx; display: flex; align-items: center; justify-content: center; background: var(--color-primary); border-radius: var(--radius-lg); font-size: 36rpx; transition: background 0.15s ease; } .voice-btn:active { opacity: 0.8; } .voice-btn.recording { background: #E53935; animation: voicePulse 0.6s ease-in-out infinite alternate; } @keyframes voicePulse { from { transform: scale(1); } to { transform: scale(1.08); } } /* ── 分区 ── */ .section { margin-bottom: var(--space-lg); } .section-title { font-size: var(--text-body-sm); font-weight: 600; color: var(--color-text-secondary); margin-bottom: var(--space-sm); display: flex; align-items: center; } .tag-list { display: flex; flex-wrap: wrap; } /* ── 常备调料 ── */ .staple-tag { display: inline-flex; padding: 8rpx var(--space-md); border-radius: var(--radius-full); background: #F5F2EE; font-size: var(--text-body-sm); color: var(--color-text-muted); margin: 4rpx 8rpx; } .edit-link { font-size: var(--text-body-sm); color: var(--color-primary); font-weight: 500; margin-left: 8rpx; } /* ── 开盒按钮 ── */ .btn-large { width: 100%; height: 100rpx; font-size: var(--text-body); margin-top: var(--space-xl); } /* ── 调料编辑弹窗 ── */ .modal-mask { position: fixed; top: 0; left: 0; right: 0; bottom: 0; background: rgba(0, 0, 0, 0.45); z-index: 100; } .modal-sheet { position: fixed; left: 0; right: 0; bottom: 0; background: var(--color-surface); border-radius: var(--radius-lg) var(--radius-lg) 0 0; padding: var(--space-lg); padding-bottom: calc(var(--space-lg) + constant(safe-area-inset-bottom)); padding-bottom: calc(var(--space-lg) + env(safe-area-inset-bottom)); z-index: 101; transform: translateY(100%); transition: transform 0.3s ease; } .modal-sheet.show { transform: translateY(0); } .sheet-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: var(--space-md); } .sheet-title { font-size: var(--text-subtitle); font-weight: 700; } .sheet-close { font-size: var(--text-body); color: var(--color-primary); font-weight: 600; } .sheet-input-row { display: flex; align-items: center; margin-bottom: var(--space-md); } .sheet-input { flex: 1; height: 80rpx; background: #F7F5F2; border-radius: var(--radius-md); padding: 0 var(--space-md); font-size: var(--text-body); margin-right: var(--space-sm); } .btn-add { width: 120rpx; height: 80rpx; display: flex; align-items: center; justify-content: center; background: var(--color-primary); color: #FFFFFF; border-radius: var(--radius-md); font-size: var(--text-body-sm); font-weight: 600; } .btn-add:active { opacity: 0.8; } .sheet-tags { display: flex; flex-wrap: wrap; max-height: 360rpx; overflow-y: auto; } .sheet-tag { display: flex; align-items: center; padding: 8rpx var(--space-md); background: #F7F5F2; border-radius: var(--radius-full); font-size: var(--text-body-sm); color: var(--color-text); margin-right: 12rpx; margin-bottom: 12rpx; } .tag-remove { margin-left: 8rpx; font-size: var(--text-caption); color: var(--color-text-muted); padding: 2rpx; }