- VoiceController: Map.of() -> Collections.singletonMap() 兼容 Java 8 - ExploreController: 补齐 takeoutService.roll() 缺失的 taste/priceRange/allergies 参数 Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
207 lines
3.8 KiB
Plaintext
207 lines
3.8 KiB
Plaintext
/*
|
|
* 冰箱盲盒 · 食材输入
|
|
*/
|
|
|
|
.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;
|
|
}
|