/* 点完餐流程 v4（Owner 10/24 18:46 确认效果图）：和小程序同一套——卡上写日期、5 步进度、小功能都是按钮、一个下一步大按钮 */
.m7-card { padding: 16px; }
.m7-head { display: flex; align-items: center; gap: 10px; }
.m7-mark { display: flex; align-items: center; justify-content: center; flex: none; width: 40px; height: 40px; border-radius: 12px; background: #f4efff; color: #6c4cf1; font-size: 17px; font-style: normal; font-weight: 850; }
.m7-title { display: flex; flex: 1; min-width: 0; flex-direction: column; }
.m7-title b { color: #29243a; font-size: 17px; font-weight: 850; }
.m7-title small { margin-top: 2px; color: #7d7486; font-size: 13px; }
.m7-chef { display: inline-flex; flex: none; align-items: center; gap: 4px; min-height: 40px; padding: 4px 10px 4px 5px; border: 1px solid #e6deef; border-radius: 20px; background: #fff; color: #4a4253; font-size: 13px; font-weight: 750; }
.m7-chef .flow-member { gap: 5px; }
.m7-chef .flow-avatar,.m7-chef .flow-avatar img { width: 28px; height: 28px; }
.m7-chef:disabled { opacity: .75; cursor: default; }
.m7-steps { display: flex; align-items: flex-start; margin: 16px 0 4px; padding: 0; list-style: none; }
.m7-steps li { position: relative; display: flex; flex: 1; flex-direction: column; align-items: center; gap: 5px; color: #9b93a4; font-size: 12px; font-weight: 700; }
.m7-steps li::before { content: ""; position: absolute; top: 10px; right: 50%; left: -50%; height: 2px; background: #ece6f1; }
.m7-steps li:first-child::before { display: none; }
.m7-steps li.is-done::before,.m7-steps li.is-current::before { background: #6c4cf1; }
.m7-steps i { position: relative; z-index: 1; display: flex; align-items: center; justify-content: center; width: 22px; height: 22px; border: 2px solid #ddd5e6; border-radius: 50%; background: #fff; color: #fff; font-size: 12px; font-style: normal; box-sizing: border-box; }
.m7-steps li.is-done i { border-color: #6c4cf1; background: #6c4cf1; }
.m7-steps li.is-current i { border-color: #6c4cf1; box-shadow: inset 0 0 0 4px #fff; background: #6c4cf1; }
.m7-steps li.is-done,.m7-steps li.is-current { color: #5d3fdb; }
.m7-rows { margin: 12px 0 0; padding: 0; list-style: none; }
.m7-rows li { border-top: 1px solid #f0ebf3; }
.m7-row { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 66px; padding: 8px 0; border: 0; background: none; text-align: left; cursor: pointer; }
.m7-thumb,.m7-thumb .dish-photo,.m7-thumb img { display: block; flex: none; width: 50px; height: 50px; border-radius: 12px; object-fit: cover; overflow: hidden; }
.m7-row-copy { display: flex; flex: 1; min-width: 0; flex-direction: column; }
.m7-row-copy b { overflow: hidden; color: #29243a; font-size: 15px; font-weight: 800; text-overflow: ellipsis; white-space: nowrap; }
.m7-row-copy small { margin-top: 2px; color: #8e8692; font-size: 12px; }
.m7-qty { flex: none; color: #29243a; font-size: 14px; font-style: normal; font-weight: 700; }
.m7-btn { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 46px; margin-top: 10px; padding: 0 12px; border: 1px solid #e6deef; border-radius: 14px; background: #fff; color: #4a4253; font-size: 15px; font-weight: 800; cursor: pointer; box-sizing: border-box; }
.m7-btn.is-outline { border-color: #cfc2f5; color: #5d3fdb; }
.m7-btn.is-dashed { border-style: dashed; border-color: #cfc2f5; color: #5d3fdb; }
.m7-btn.is-soft { border-color: #ece6f1; background: #f7f5f9; }
.m7-btn.is-primary { border-color: #6c4cf1; background: #6c4cf1; color: #fff; }
.m7-btn.is-danger { border-color: #f2c9c4; background: #fff5f4; color: #c2412f; }
.m7-btn:disabled { opacity: .55; cursor: default; }
.m7-two { display: flex; gap: 10px; }
.m7-two > .m7-btn { flex: 1; min-width: 0; }
.m7-cta { display: flex; align-items: center; gap: 12px; width: 100%; min-height: 64px; margin-top: 12px; padding: 10px 16px; border: 0; border-radius: 16px; background: #6c4cf1; color: #fff; text-align: left; cursor: pointer; box-sizing: border-box; }
.m7-cta span { display: flex; flex: 1; min-width: 0; flex-direction: column; }
.m7-cta b { font-size: 16px; font-weight: 850; }
.m7-cta small { margin-top: 2px; color: rgba(255,255,255,.86); font-size: 12px; }
.m7-cta i { flex: none; font-size: 22px; font-style: normal; }
.m7-wait { margin: 12px 0 0; padding: 12px 14px; border-radius: 14px; background: #f7f5f9; color: #6a6272; font-size: 14px; line-height: 1.5; }
.m7-note { margin: 8px 0 0; color: #8e8692; font-size: 12px; line-height: 1.5; text-align: center; }
.m7-edit { margin-top: 4px; }
/* 点完餐弹层 */
.meal-done-backdrop { align-items: flex-end; }
.meal-done-sheet { text-align: center; }
.meal-done-ok { display: flex; align-items: center; justify-content: center; width: 44px; height: 44px; margin: 4px auto 8px; border-radius: 50%; background: #e8f8f0; color: #238457; font-size: 26px; font-style: normal; font-weight: 800; }
.meal-done-sheet h2 { margin: 0; color: #29243a; font-size: 19px; }
.meal-done-sheet > p { margin: 4px 0 0; color: #7d7486; font-size: 13px; line-height: 1.5; }
.meal-done-thumbs { display: flex; justify-content: center; gap: 6px; margin: 12px 0 2px; }
.meal-done-thumbs span,.meal-done-thumbs .dish-photo,.meal-done-thumbs img { display: block; width: 46px; height: 46px; border-radius: 10px; object-fit: cover; overflow: hidden; }
.meal-done-opt { display: flex; align-items: center; gap: 10px; width: 100%; min-height: 58px; margin-top: 10px; padding: 8px 12px; border: 1px solid #e6deef; border-radius: 14px; background: #fff; text-align: left; cursor: pointer; box-sizing: border-box; }
.meal-done-opt > i { display: flex; align-items: center; justify-content: center; flex: none; width: 34px; height: 34px; border-radius: 10px; background: #f4efff; color: #6c4cf1; font-size: 15px; font-style: normal; font-weight: 850; }
.meal-done-opt > span { display: flex; flex: 1; min-width: 0; flex-direction: column; }
.meal-done-opt b { color: #29243a; font-size: 15px; font-weight: 850; }
.meal-done-opt small { margin-top: 2px; color: #8e8692; font-size: 12px; }
.meal-done-opt > em { flex: none; color: #b3a9bd; font-size: 20px; font-style: normal; }
.meal-done-opt.is-primary { border-color: #6c4cf1; background: #6c4cf1; }
.meal-done-opt.is-primary > i { background: rgba(255,255,255,.2); color: #fff; }
.meal-done-opt.is-primary b,.meal-done-opt.is-primary small,.meal-done-opt.is-primary > em { color: #fff; }
.meal-done-back { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 48px; margin-top: 12px; border: 1px solid #e6deef; border-radius: 14px; background: #f7f5f9; color: #4a4253; font-size: 15px; font-weight: 800; cursor: pointer; }
.m7-card .m7-cta small { color: rgba(255,255,255,.88); }
.m7-card .m7-cta b { color: #fff; }
.m7-two > .m7-btn { padding: 0 6px; font-size: 14px; white-space: nowrap; }
/* 调整：每道菜后面是「移出」按钮（勾选框藏起来，点按钮就是勾选） */
.m7-select .meal-select-row { position: relative; grid-template-columns: 44px minmax(0,1fr) auto auto; gap: 8px; min-height: 62px; }
.m7-select .meal-select-copy b { overflow: hidden; font-size: 15px; text-overflow: ellipsis; white-space: nowrap; }
.m7-select .meal-select-copy small { font-size: 12px; }
.m7-select .meal-select-row > input[type="checkbox"] { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.m7-select .meal-select-thumb,.m7-select .meal-select-thumb .dish-photo,.m7-select .meal-select-thumb img { width: 44px; height: 44px; border-radius: 10px; }
.m7-select .meal-plan-quantity { grid-template-columns: 30px auto 30px; min-width: 100px; }
.m7-select .meal-plan-quantity b { font-size: 13px; }
.m7-select .meal-plan-quantity button { width: 30px; }
.m7-remove { display: inline-flex; flex: none; align-items: center; justify-content: center; min-width: 48px; height: 36px; padding: 0 8px; border: 1.5px solid #f3c9b8; border-radius: 10px; color: #c0572b; font-size: 13px; font-weight: 750; box-sizing: border-box; cursor: pointer; }
.m7-remove.is-on { border-color: #c0572b; background: #c0572b; color: #fff; }
.m7-select .meal-select-row > input:focus-visible ~ .m7-remove { outline: 2px solid #6c4cf1; outline-offset: 2px; }
/* 批次 B（Owner 10/24 确认效果图 v4 ④⑤）：备菜 / 买菜清单底部两个按钮；范围切换；清单下面四个按钮 */
.prep-actions .prep-have { border: 1.5px solid #d2c7ff; background: #fff; color: #4b2fd0; }
.prep-actions .prep-go { border: 0; background: #6c4cf1; color: #fff; }
.prep-actions button:disabled { opacity: .5; cursor: default; }
.shop-bar { position: fixed; left: 0; right: 0; bottom: calc(64px + env(safe-area-inset-bottom)); z-index: 60; max-width: 560px; margin: 0 auto; padding: 10px 15px 8px; border-radius: 20px 20px 0 0; background: #fff; box-shadow: 0 -7px 20px rgba(40,20,80,.1); }
.shopping-list-card-r7 { margin-bottom: 150px; }
.shop-chips { display: flex; flex-wrap: wrap; gap: 8px; margin: 4px 0 10px; }
.shop-chips button { min-height: 36px; padding: 0 14px; border: 1.5px solid #e4def0; border-radius: 18px; background: #fff; color: #4a4358; font-size: 14px; font-weight: 800; cursor: pointer; }
.shop-chips button.is-on { border-color: #2a2340; background: #2a2340; color: #fff; }
.shop-tools { display: grid; grid-template-columns: 1fr 1fr; gap: 8px; margin-top: 12px; }
.shop-tool { display: flex; align-items: center; justify-content: center; gap: 4px; min-height: 46px; padding: 0 6px; border: 1.5px solid #e4def0; border-radius: 13px; background: #fff; color: #4b2fd0; font-size: 14px; font-weight: 800; cursor: pointer; }
.shop-tool svg { width: 16px; height: 16px; }
.shop-row-out { display: block; margin: 4px 0 0 auto; padding: 4px 8px; border: 1px solid #f3c9b8; border-radius: 8px; background: #fff; color: #c0572b; font-size: 12px; font-weight: 700; cursor: pointer; }
button.prep-family-list { justify-content: center; min-height: 48px; margin-top: 14px; border: 1.5px solid #e4def0; border-radius: 14px; color: #4b2fd0; font-size: 15px; font-weight: 800; cursor: pointer; }
.shop-tool-ic { font-size: 15px; }
/* 批次 C（Owner 10/24 确认效果图 v4 ⑥⑦）：去哪买？两组；一样一样买；京东每样配好商品 */
.wtb-backdrop { align-items: flex-end; }
.wtb-sheet { max-height: 86vh; overflow-y: auto; }
.wtb-head { display: flex; align-items: center; justify-content: space-between; }
.wtb-head h2 { margin: 0; font-size: 19px; }
.wtb-close { min-height: 34px; padding: 0 12px; border: 1.5px solid #e4def0; border-radius: 17px; background: #fff; color: #4a4358; font-size: 13px; font-weight: 700; cursor: pointer; }
.wtb-note, .wtb-foot { margin: 12px 0 0; color: #9a92b0; font-size: 12px; line-height: 1.6; }
.wtb-group { display: flex; align-items: baseline; gap: 8px; margin: 16px 0 8px; }
.wtb-group b { font-size: 16px; }
.wtb-group small { color: #7a7488; font-size: 13px; }
.wtb-hint { margin: -2px 0 8px; color: #c0572b; font-size: 12px; font-weight: 700; }
.wtb-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px; }
.wtb-cell { display: flex; align-items: center; gap: 10px; min-height: 58px; padding: 8px 10px; border: 1.5px solid #e8e2f0; border-radius: 12px; background: #fff; text-align: left; cursor: pointer; }
.wtb-cell > i { display: flex; flex: none; align-items: center; justify-content: center; width: 36px; height: 36px; border-radius: 10px; color: #fff; font-size: 16px; font-style: normal; font-weight: 800; }
.wtb-cell span { display: flex; min-width: 0; flex-direction: column; }
.wtb-cell b { font-size: 15px; }
.wtb-cell small { color: #8e8692; font-size: 11px; }
.buy-page { padding-bottom: 40px; }
.buy-card { padding: 14px; border: 1.5px solid #d2c7ff; border-radius: 16px; background: #fff; }
.buy-card.is-done { border-color: #bfe5cf; }
.buy-card > b { display: block; font-size: 19px; }
.buy-card > p { margin: 4px 0 0; color: #7a7488; font-size: 13px; line-height: 1.6; }
.buy-tip { margin: 8px 2px 0; color: #8e8692; font-size: 12px; line-height: 1.6; }
.buy-btn { display: flex; align-items: center; justify-content: center; width: 100%; min-height: 46px; margin-top: 10px; padding: 0 10px; border: 0; border-radius: 13px; font-size: 15px; font-weight: 800; cursor: pointer; }
.buy-btn.is-primary { background: #6c4cf1; color: #fff; }
.buy-btn.is-outline { border: 1.5px solid #d2c7ff; background: #fff; color: #4b2fd0; }
.buy-btn.is-soft { border: 1.5px solid #ece8f2; background: #f6f4fa; color: #4a4458; }
.buy-btn:disabled { opacity: .5; }
.buy-two { display: flex; gap: 8px; }
.buy-two .buy-btn { flex: 1; min-width: 0; }
.buy-list { margin-top: 12px; padding: 0 12px; border-radius: 14px; background: #fff; }
.buy-row { display: flex; align-items: center; gap: 10px; min-height: 56px; border-bottom: 1px solid #f0ebf3; }
.buy-row:last-child { border-bottom: 0; }
.buy-row.is-current .buy-row-copy b { color: #4b2fd0; }
.buy-row.is-bought .buy-row-copy b, .buy-row.is-skip .buy-row-copy b { color: #a39cb0; }
.buy-check { display: flex; flex: none; align-items: center; justify-content: center; width: 24px; height: 24px; border: 1.5px solid #cfc6f3; border-radius: 6px; color: #fff; font-size: 13px; font-weight: 900; }
.buy-check.is-on { border-color: #6c4cf1; background: #6c4cf1; }
.buy-row-copy { display: flex; flex: 1; min-width: 0; flex-direction: column; }
.buy-row-copy b { overflow: hidden; font-size: 15px; text-overflow: ellipsis; white-space: nowrap; }
.buy-row-copy small { overflow: hidden; color: #8e8692; font-size: 12px; text-overflow: ellipsis; white-space: nowrap; }
.buy-mini { flex: none; display: inline-flex; align-items: center; justify-content: center; min-height: 34px; padding: 0 10px; border: 1.5px solid #e4def0; border-radius: 10px; background: #fff; color: #4b2fd0; font-size: 13px; font-weight: 800; text-decoration: none; cursor: pointer; }
.buy-mini.is-go { border-color: #6c4cf1; background: #6c4cf1; color: #fff; }
.buy-price { flex: none; color: #f06c2e; font-size: 14px; font-style: normal; font-weight: 800; }
.buy-offer-img { flex: none; width: 44px; height: 44px; border-radius: 8px; object-fit: cover; }
.buy-group { margin: 14px 2px 0; color: #6b6478; font-size: 13px; font-weight: 800; }
.wtb-close { flex: none; width: auto; white-space: nowrap; }
/* 10/25 Owner：调整份数挪到菜上面靠右；饭点已过；刚点的那顿框一下 */
.m7-title b { display: flex; align-items: center; gap: 6px; }
.m7-late { flex: none; padding: 1px 7px; border-radius: 7px; background: #fff1ec; color: #c0572b; font-size: 12px; font-style: normal; font-weight: 700; }
.m7-adjust-row { display: flex; justify-content: flex-end; margin-top: 10px; }
.m7-adjust { min-height: 36px; padding: 0 14px; border: 1.5px solid #cfc6f3; border-radius: 18px; background: #fff; color: #6c4cf1; font-size: 14px; font-weight: 700; cursor: pointer; }
.m7-ask { margin: 12px 0 0; padding: 12px 14px; border: 1.5px solid #f3c9b8; border-radius: 12px; background: #fffaf7; font-size: 16px; font-weight: 700; }
.m7-cta.is-done { background: #238457; }
/* 10/26 15:56 Owner：提交到安排页那个蓝框 + 闪一下不要了 */
.meal-schedule-loading { padding: 40px 16px; color: #7a7488; font-size: 15px; text-align: center; }
/* 10/25 Owner 确认效果图 v9（和小程序同一套）：昨天 / 今天 / 明天 + 早午晚标签（和当天预估合计一行）+ 每顿两栏 + 每道菜预估 */
.m8-days { display: flex; padding: 4px; margin: 4px 0 12px; border-radius: 16px; background: #eeebf4; }
.m8-day { flex: 1; display: flex; flex-direction: column; align-items: center; padding: 7px 0 6px; border: 0; border-radius: 12px; background: transparent; color: #6f6880; cursor: pointer; }
.m8-day b { font-size: 15.5px; font-weight: 700; line-height: 1.3; }
.m8-day small { font-size: 11.5px; color: #9a93a8; }
.m8-day.is-on { background: #fff; color: #6b4ce6; box-shadow: 0 2px 8px rgba(60, 40, 120, .12); }
.m8-day.is-on small { color: #8b7fd6; }
.m7-card.m8-card { padding-top: 0; overflow: hidden; }
.m8-tabs { display: flex; align-items: stretch; margin: 0 -16px 14px; border-bottom: 1px solid #ece8f2; background: #fbfaf8; }
.m8-tab { flex: none; width: 58px; height: 52px; display: flex; align-items: center; justify-content: center; gap: 3px; position: relative; border: 0; background: transparent; font-size: 15.5px; font-weight: 700; color: #8a8496; cursor: pointer; }
.m8-tab.is-on { color: #231d33; background: #fff; }
.m8-tab.is-on::after { content: ""; position: absolute; left: 30%; right: 30%; bottom: -1px; height: 3px; border-radius: 3px; background: #6b4ce6; }
.m8-ok { font-style: normal; font-size: 12px; color: #2e8b57; }
.m8-dot { width: 7px; height: 7px; margin-top: -8px; border-radius: 50%; background: #e06a35; }
.m8-total { flex: 1; min-width: 0; display: grid; grid-template-columns: auto 1fr; align-content: center; column-gap: 8px; row-gap: 3px; margin: 6px 6px 6px 2px; padding: 0 9px; border: 1px solid #f4e3c3; border-radius: 12px; background: linear-gradient(135deg, #fff8ea, #fff1dc); font: inherit; cursor: default; }
.m8-total small { font-size: 11px; font-weight: 700; color: #a0742c; white-space: nowrap; text-align: left; align-self: center; }
.m8-total b { font-size: 13.5px; font-weight: 800; color: #3b2a10; text-align: right; white-space: nowrap; }
.m8-total em, .m8-stat em { margin-left: 2px; font-style: normal; font-size: 11px; font-weight: 700; color: #8a5a14; }
.m8-total.is-lock, .m8-stat.is-lock { border-color: #e0d8fb; background: #f3efff; cursor: pointer; }
.m8-total.is-lock small, .m8-stat.is-lock small { color: #7a6bc4; }
.m8-total.is-lock b { font-size: 12px; }
.m8-stat { flex: none; display: flex; align-items: center; gap: 10px; padding: 5px 11px; border: 1px solid #f4e3c3; border-radius: 12px; background: #fff8ea; font: inherit; cursor: default; }
.m8-stat > span { display: flex; flex-direction: column; align-items: center; }
.m8-stat small { font-size: 11px; font-weight: 700; color: #a0742c; line-height: 1.3; }
.m8-stat b { font-size: 15px; font-weight: 800; color: #3b2a10; line-height: 1.3; white-space: nowrap; }
.m8-stat > i { width: 1px; height: 26px; background: #efd9b0; }
.m8-stat.is-lock b { font-size: 13px; }
.m8-stat.is-lock > i { background: #ddd5fa; }
.m8-card .m7-chef { max-width: 104px; }
.m8-qtycol { flex: none; display: flex; flex-direction: column; align-items: flex-end; gap: 5px; }
.m8-dest { padding: 2px 6px; border-radius: 7px; background: #fff6e5; color: #8a5a14; font-size: 12px; font-style: normal; font-weight: 700; white-space: nowrap; }
.m8-tag { margin-left: 8px; padding: 2px 8px; border-radius: 8px; background: #eaf6ef; color: #2e8b57; font-size: 12px; font-style: normal; font-weight: 700; }
.m8-empty { margin: 0; padding: 22px 0 6px; color: #7a7488; font-size: 15px; text-align: center; }
.m7-letter { display: flex; width: 100%; height: 100%; align-items: center; justify-content: center; background: #f1edff; color: #6b4ce6; font-weight: 800; }
.m8-later { margin-top: 4px; }
.meal-slots-list .m7-card.m8-card { padding-top: 0 !important; margin-top: 0 !important; overflow: hidden; }
.m8-card .m7-head { gap: 8px; }
.m8-card .m7-title { flex: none; }
.m8-card .m7-title small { white-space: nowrap; }
.m8-card .m8-stat { margin-left: auto; }
.m8-card .m7-chef { min-width: 0; flex: 0 1 auto; overflow: hidden; }
.m8-card .m7-chef > span:not([aria-hidden]) { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.meal-slots-list > .m8-days { margin-bottom: 0; }
/* 10/25 Owner 效果图 v3：点餐页每道菜「预估 ¥22」（会员）；热量进口味标签行最前面；标签最多两行 */
.library-order-page .library-order-copy { position: relative; }
.library-order-page .library-order-actions.single-action.has-est { left: 10px; width: auto; justify-content: space-between; align-items: center; }
.menu-est { display: flex; align-items: baseline; gap: 4px; line-height: 1.2; white-space: nowrap; min-width: 0; }
.menu-est em { font-style: normal; font-size: 11px; font-weight: 700; color: #a0742c; background: #fff6e5; border-radius: 5px; padding: 1px 4px; }
.menu-est b { font-size: 19px; font-weight: 800; color: #e0582a; letter-spacing: -.3px; }
.menu-est b i { font-style: normal; font-size: 12px; margin-right: 1px; }
.library-order-page .library-tag-row { max-height: 44px; overflow: hidden; }
.library-order-page .library-tag-row .menu-kcal-tag { background: #fff6e5; color: #8a5a14; font-weight: 700; }
/* 点了份数（出现 −/＋）：按钮收紧一点、价格小一号，同一行放得下 */
.library-order-page .library-order-actions.has-est.is-ordering .library-menu-stepper { gap: 3px; }
.library-order-page .library-order-actions.has-est.is-ordering .library-menu-stepper button { width: 34px; height: 34px; }
.library-order-page .library-order-actions.has-est.is-ordering .menu-est b { font-size: 16px; }
.library-order-page .library-order-actions.has-est.is-ordering .menu-est em { padding: 1px 3px; }
/* 10/25 Owner：编辑菜谱食材一行一样（名字 | 用量 | ×），AI 估的用量右下角标「AI 估算」 */
.ir { margin-top: 6px; min-width: 0; max-width: 100%; }
.field-block { min-width: 0; }
.ir-row { display: flex; align-items: center; gap: 7px; margin-top: 9px; }
.ir-name { flex: 1 1 0; width: 0; min-width: 0; height: 42px; padding: 0 11px; border: 1px solid #e3deec; border-radius: 11px; background: #fff; font: inherit; font-size: 15px; color: #231d33; }
.ir-amw { position: relative; flex: none; width: 118px; }
.ir-am { width: 100%; height: 42px; padding: 0 11px; border: 1px solid #e3deec; border-radius: 11px; background: #fff; font: inherit; font-size: 15px; color: #231d33; box-sizing: border-box; }
.ir-am.is-ai { border-color: #d8cefc; background: #faf8ff; }
.ir-am.is-wait { border-style: dashed; background: #f6f4fa; }
.ir-tag { position: absolute; right: 5px; bottom: -8px; padding: 0 4px; border: 1px solid #e0d8fb; border-radius: 6px; background: #f1edff; color: #6b4ce6; font-size: 10px; font-style: normal; font-weight: 700; line-height: 15px; pointer-events: none; }
.ir-del { flex: none; width: 30px; height: 42px; border: 0; background: transparent; color: #b0a8bd; font-size: 20px; cursor: pointer; }
.ir-add { width: 100%; margin-top: 13px; height: 42px; border: 1.5px dashed #cfc6f3; border-radius: 12px; background: #fff; color: #6b4ce6; font: inherit; font-size: 15px; font-weight: 700; cursor: pointer; }
/* 10/25 Owner 效果图「菜谱页用料格」v2：做法说明放在数量下面小字 */
.rd-ingredient-grid small.rd-amount-note{display:block;margin-top:2px;font-size:11px;font-weight:400;color:#a39cb0;line-height:1.3}
/* 10/25 Owner 效果图「菜谱页买菜合一行」v2：「缺 N 样｜放进买菜清单」一行，下面「推荐（推广）」京东商品 */
.rd3-missing.rd3-missing-bar{padding:8px 8px 8px 14px;cursor:default}
.rd3-missing-bar>span{font-weight:800}
.rd3-missing-bar .rd3-missing-go{flex:none;height:34px;padding:0 14px;border:0;border-radius:17px;background:#ff7a3d;color:#fff;font:inherit;font-size:13.5px;font-weight:800;cursor:pointer}
.rd3-recs:empty{display:none}
.rd3-recs{margin-top:14px}
.rd3-recs-head{display:flex;align-items:center;gap:6px;margin:0 3px 8px;font-size:14px;color:#2b2438}
.rd3-recs-ad{font-size:10px;font-weight:700;color:#9a93a8;border:1px solid #ddd6e6;border-radius:5px;padding:0 4px;line-height:15px}
.rd3-recs-head small{margin-left:auto;font-size:11.5px;color:#9a93a8}
.rd3-recs-row{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}
.rd3-rec{display:flex;flex-direction:column;background:#fff;border:1px solid #efe9f1;border-radius:14px;overflow:hidden;color:inherit;text-decoration:none}
.rd3-rec img,.rd3-rec-mark{display:block;width:100%;height:92px;object-fit:cover;background:#f3eff7}
.rd3-rec-mark{display:flex;align-items:center;justify-content:center;color:#a49cb2;font-size:12px}
.rd3-rec-title{margin:8px 9px 0;font-size:12.5px;line-height:1.35;color:#2b2438;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;min-height:34px}
.rd3-rec-foot{display:flex;align-items:center;justify-content:space-between;margin:6px 9px 9px}.rd3-rec-foot b{font-size:14px;color:#ff5a1f}.rd3-rec-foot small{font-size:11px;color:#9a93a8}
.rd3-page .rd-ingredient-grid em{flex:none;white-space:nowrap}
/* 10/25 晚 Owner 效果图「用餐安排按钮不变」v2（和小程序同一套）：早午晚胶囊按钮；「调整份数 / 移出」和大按钮一行、字居中；按钮位置和顺序不随步骤变 */
.m8-days { margin-top: 0; }
.m8-tabs { gap: 6px; align-items: center; margin: 0 0 12px; padding: 8px 0 8px 2px; border-bottom: 0; background: transparent; }
.m8-tab { width: auto; height: 34px; padding: 0 10px; border-radius: 17px; border: 1.5px solid #ddd3fb; background: #fff; color: #5b4aa8; font-size: 15px; font-weight: 800; }
.m8-tab.is-on { background: #6b4ce6; border-color: #6b4ce6; color: #fff; box-shadow: 0 4px 10px rgba(107, 76, 230, .28); }
.m8-tab.is-on::after { display: none; }
.m8-tab.is-on .m8-ok { color: #c9f2dc; }
.m8-tab .m8-dot { position: absolute; top: 4px; right: 5px; width: 6px; height: 6px; margin: 0; }
.m8-tabs .m8-total { margin: 0 0 0 2px; }
.m7-act { display: flex; align-items: stretch; gap: 8px; margin-top: 12px; }
.m7-act .m7-cta { flex: 1; min-width: 0; margin-top: 0; min-height: 52px; }
.m7-act .m7-adjust { flex: none; min-height: 52px; border-radius: 14px; padding: 0 12px; font-size: 13.5px; }
.m7-act .m7-adjust:only-child { margin-left: auto; min-height: 36px; border-radius: 18px; }
.m7-cta span { align-items: center; text-align: center; }
.m8-tabs { gap: 5px; }
.m8-tab { padding: 0 9px; font-size: 14.5px; }
.m8-tabs .m8-total { flex: 1 1 auto; min-width: 0; column-gap: 6px; padding: 4px 8px; }
.m8-tabs .m8-total small { font-size: 10.5px; }
.m8-tabs .m8-total b { font-size: 12.5px; }
.m8-tabs .m8-total em { font-size: 10px; margin-left: 1px; }
/* 10/25 晚 Owner：买菜清单单独一个标签（点餐 / 用餐安排 / 买菜清单 / 饭桌记录），和用餐安排一个风格（效果图「买菜清单重构」v2） */
.family-workspace-shell .family-workspace-track { width: 400%; transform: translate3d(calc(var(--workspace-index, 0) * -25%), 0, 0); }
.family-workspace-shell .family-workspace-panel { width: 25%; }
.family-workspace-shell .family-workspace-tabs.menu-tabs { grid-template-columns: minmax(0, .66fr) minmax(0, 1fr) minmax(0, 1fr) minmax(0, 1fr) auto; }
.family-workspace-tabs .ws-tab-badge { margin-left: 3px; padding: 0 5px; min-width: 15px; height: 15px; line-height: 15px; border-radius: 8px; background: #ff7a3d; color: #fff; font-size: 10px; font-weight: 800; vertical-align: 6px; }
.shop-tab .shop-chips { gap: 6px; margin: 2px 0 0; }
.shop-tab .shop-chips button { min-height: 34px; padding: 0 12px; border: 1.5px solid #ddd3fb; color: #5b4aa8; }
.shop-tab .shop-chips button.is-on { border-color: #6b4ce6; background: #6b4ce6; color: #fff; box-shadow: 0 4px 10px rgba(107, 76, 230, .28); }
.shop-sum.card { margin: 12px 0 0; padding: 12px; border: 1px solid #ece8f2; border-radius: 18px; background: #fff; }
.shop-sum-est { padding: 9px 11px; border: 1px solid #f4e3c3; border-radius: 12px; background: #fff8ea; }
.shop-sum-est > div { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; }
.shop-sum-est span { font-size: 13px; color: #7a5a20; }
.shop-sum-est b { font-size: 20px; font-weight: 800; color: #3b2a10; white-space: nowrap; }
.shop-sum-est small { display: block; margin-top: 2px; font-size: 11.5px; color: #9a93a8; }
.shop-acts { display: flex; gap: 8px; margin-top: 10px; }
.shop-act { flex: 1; min-width: 0; height: 46px; border-radius: 14px; font: inherit; font-size: 15px; font-weight: 800; cursor: pointer; }
.shop-act.is-main { flex: 1.2; border: 0; background: #6b4ce6; color: #fff; }
.shop-act.is-sub { border: 1.5px solid #d8cefc; background: #fff; color: #6b4ce6; }
.shop-act[disabled] { opacity: .45; cursor: default; }
.shop-tab .shopping-list-card.card { margin: 0; padding: 0; border: 0; background: transparent; box-shadow: none; }
.shop-tab .shopping-list-group { margin-top: 12px; border: 1px solid #ece8f2; border-radius: 18px; background: #fff; overflow: hidden; }
.shop-tab .shopping-list-group > header { min-height: 44px; margin: 0; padding: 0 12px; border-radius: 0; font-size: 15px; }
.shop-tab .shopping-list-group > header small { color: #9a93a8; font-size: 12px; font-weight: 400; }
.family-workspace-tabs .family-workspace-manage[hidden], .family-workspace-tabs .family-workspace-search[hidden] { display: none !important; }
.shop-tab .shopping-list-columns { min-height: 30px; padding: 0 12px; color: #8a83a0; font-size: 12.5px; font-weight: 700; }
.shop-tab .shopping-list-row { padding-left: 12px; padding-right: 12px; }
.shop-tab .shopping-list-recipes { margin-top: 12px; padding: 10px 12px; border: 1px solid #ece8f2; border-radius: 16px; background: #fff; }
.shop-tab .shop-tools { margin-top: 12px; }
.shop-tab .household-purchase-note { margin: 10px 4px 0; font-size: 11.5px; color: #9a93a8; text-align: left; }
.shop-tab .shopping-list-columns span { white-space: nowrap; }
.shop-tab .shopping-list-columns span:first-child { font-size: 11px; }
.shop-tab .shopping-list-recipes { min-height: 0; }

/* 10/25 晚 Owner：标签「点餐 / 安排 / 清单 / 记录」宽度固定、位置不随切换变；搜索 / 批量管理只在右边那格；标签和内容间隙收小 */
.family-workspace-shell .family-workspace-tabs.menu-tabs { grid-template-columns: 48px 56px 62px 48px minmax(0, 1fr); margin-bottom: 0; }
.family-workspace-shell .family-workspace-tabs > button { font-size: 14px; }
.family-workspace-shell .family-workspace-tabs .family-workspace-actions { justify-content: flex-end; min-width: 0; }

/* 10/25 晚 Owner 效果图「清单与安排」①：合计卡一行字 */
.shop-sum-est { padding: 0 2px 2px; border: 0; background: transparent; }
.shop-sum-est span { font-size: 15px; font-weight: 700; color: #231d33; }
.shop-sum-est b { font-size: 21px; }

/* 10/25 晚 Owner 效果图「清单与安排」①：估的数量标「估」；估不出的「填数量」按钮 */
.shopping-list-quantity .qty-guess { margin-left: 2px; font-style: normal; font-size: 10px; font-weight: 700; color: #a0742c; }
.shopping-list-fill, .shop-tab .shopping-list-fill { width: 100%; min-height: 40px; border: 1.5px dashed #c9b8fb !important; border-radius: 12px; background: #faf8ff; color: #6b4ce6; font-size: 14px; font-weight: 800; }

/* 10/25 晚 Owner 效果图「清单与安排」②：「发给家人 / 发图片 / 记一笔」一行三个 */
.shop-tab .shop-tools { grid-template-columns: 1.15fr 1fr .8fr; }
.shop-tab .shop-tool { font-weight: 800; }
.shop-tab .shop-tool.is-main { border-color: #6b4ce6; background: #6b4ce6; color: #fff; }
.shop-tab .shop-tool.is-quiet { border-color: #ece8f2; color: #4a4458; }

/* 10/25 晚 Owner 效果图「清单与安排」③：今天 / 明天 / 那一天 / 选日期 */
.m8-day--more { position: relative; flex: .8; margin-left: 4px; border: 1.5px dashed #d8cefc; background: #fff; color: #6b4ce6; cursor: pointer; }
.m8-day--more input { position: absolute; inset: 0; width: 100%; height: 100%; opacity: 0; cursor: pointer; }

/* 10/25 22:56 Owner：四个标签一样宽，数字 / 角标浮在字右上角不占位 */
.family-workspace-shell .family-workspace-tabs.menu-tabs { grid-template-columns: 54px 54px 54px 54px minmax(0, 1fr); }
.family-workspace-shell .family-workspace-tabs > button small { position: absolute; top: 6px; left: calc(50% + 14px); margin: 0; }

/* 10/25 23:00 Owner 选效果图「会员预估样式」C：白底小卡，灰字标题 + 金色「会员」小胶囊 */
.m8-total.is-lock, .m8-stat.is-lock { border-color: #ece8f2; background: #fff; }
.m8-total.is-lock small, .m8-stat.is-lock small { color: #7a7488; font-weight: 600; }
.m8-total.is-lock b, .m8-stat.is-lock b { justify-self: end; padding: 1px 7px; border: 1px solid #f3d79c; border-radius: 9px; background: #fff1d6; color: #a0620c; font-size: 10.5px; font-weight: 800; line-height: 1.4; }
.m8-stat.is-lock > i { background: #ece8f2; }

/* 10/25 晚 Owner 效果图「清单范围精简」v2：分段切换 + 列表最后的小计卡 */
.shop-tab .shop-seg { display: flex; flex-wrap: nowrap; gap: 4px; margin: 0 0 2px; padding: 3px; border-radius: 12px; background: #eeebf4; }
.shop-tab .shop-seg button { flex: 1; height: 32px; padding: 0 4px; border: 0; border-radius: 9px; background: transparent; color: #6f6880; font-size: 13.5px; font-weight: 700; white-space: nowrap; box-shadow: none; }
.shop-tab .shop-seg button.is-on { background: #fff; color: #6b4ce6; box-shadow: 0 1px 4px rgba(60, 40, 120, .12); }
.shop-tab .shop-sum.card { margin: 12px 0 0; padding: 0; overflow: hidden; }
.shop-tab .shop-sum-head { display: flex; align-items: center; min-height: 44px; padding: 0 12px; background: #faf8ff; border-bottom: 1px solid #f0ecf7; color: #4a3d8f; font-size: 15px; font-weight: 700; }
.shop-tab .shop-sum-body { padding: 12px; }

/* 10/25 晚 Owner：每一类底下一行小计 */
.shop-tab .shop-group-sub { padding: 10px 12px; border-top: 1px solid #f0ecf7; background: #fdfcff; }
.shop-tab .shop-group-sub > div { display: flex; align-items: baseline; justify-content: space-between; }
.shop-tab .shop-sub-note, .shop-tab .shop-sum-est small.shop-sub-note { display: block; margin-top: 3px; color: #a0742c; font-size: 11.5px; font-weight: 400; }
.shop-tab .shop-group-sub span { color: #7a7488; font-size: 13px; font-weight: 700; }
.shop-tab .shop-group-sub b { color: #3b2a10; font-size: 15px; font-weight: 800; }

/* 10/25 23:54 Owner：饭点过了「没做，撤掉吧 / 做了，补记一下」一排 */
.m7-act .m7-late-skip { flex: 0 0 38%; }

/* 10/26 Owner 效果图「备菜并进清单」v2 */
.shop-tab .shop-seg { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 4px; padding: 4px; border-radius: 14px; }
.shop-tab .shop-seg button { display: flex; align-items: center; justify-content: center; min-width: 0; height: 34px; border-radius: 10px; font-size: 14px; overflow: hidden; text-overflow: ellipsis; }
.shop-tab .meal-prep-bar { margin: 10px 2px 0; color: #7a7488; font-size: 12.5px; line-height: 1.5; }
.shop-tab .meal-prep-bar b { color: #231d33; font-size: 13.5px; }
.shop-tab .have-tick { display: inline-flex; align-items: center; justify-content: flex-end; gap: 5px; margin-top: 6px; padding: 0; border: 0; background: none; color: #6f6880; font-size: 12px; font-weight: 700; cursor: pointer; white-space: nowrap; }
.shop-tab .have-tick i { width: 16px; height: 16px; border: 1.6px solid #c9c2d6; border-radius: 4px; background: #fff; color: #fff; font-style: normal; font-size: 11px; line-height: 13px; text-align: center; box-sizing: border-box; }
.shop-tab .have-tick.is-on { color: #1d8f57; }
.shop-tab .have-tick.is-on i { border-color: #22b26b; background: #22b26b; }
.shop-tab .have-tick.is-busy { opacity: .5; }
.shop-tab .shopping-list-price.is-readonly { display: flex; flex-direction: column; align-items: flex-end; }
.shop-tab .shop-home { background: #fbfaf8; }
.shop-tab .shop-home > header { background: #f3f1ee; color: #6f6880; }
.shop-tab .shop-home-row { display: flex; align-items: center; gap: 8px; padding: 10px 12px; border-top: 1px solid #f0ede8; }
.shop-tab .shop-home-row .shopping-list-item-copy { flex: 1; min-width: 0; }
.shop-tab .shop-home-right { flex: none; display: flex; flex-direction: column; align-items: flex-end; }
.shop-tab .shop-home-right > span { color: #b0a9bb; font-size: 12.5px; }
.shop-tab .shop-start { width: 100%; min-height: 42px; margin-top: 8px; border: 1.5px solid #e4dff0; border-radius: 14px; background: #fff; color: #4a4458; font-size: 15px; font-weight: 800; cursor: pointer; }
.shop-tab .shop-home-row .shopping-list-item-copy b, .shop-tab .shop-home-row .shopping-list-item-copy small { display: block; }
.shop-tab .shop-home-row .shopping-list-item-copy small { margin-top: 2px; color: #9a93a8; font-size: 12px; }

/* 两格时两格平分，不留空格 */
.shop-tab .shop-seg.seg-2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
/* 10/26 Owner 确认效果图「清单行改版」：序号 / 参考价小按钮 / 家里有；价格浮层 */
.shop-tab .shopping-list-row-r7 { grid-template-columns: 18px minmax(0,1fr) minmax(82px,96px) minmax(84px,100px); }
.shop-tab .shopping-list-seq { color: #a39cb0; font-size: 12px; font-weight: 600; }
.shop-tab .shopping-list-price { flex-direction: column; align-items: flex-end; justify-content: center; overflow: visible; }
.shop-tab .shop-price-pill { display: inline-flex; align-items: center; gap: 3px; max-width: 100%; min-height: 26px; padding: 3px 8px; border: 0; border-radius: 999px; background: #f3f0fb; color: #4b4458; font-size: 12.5px; font-weight: 700; cursor: pointer; white-space: nowrap; }
.shop-tab .shop-price-pill i { color: #6c4cf1; font-style: normal; font-size: 11px; font-weight: 400; }
.shop-tab .shop-price-pill em { display: inline; color: #b7791f; font-style: normal; font-size: 11px; }
.shop-tab .shop-price-pill.is-mine { background: #fff4e2; }
.shop-tab .shopping-list-price .shop-row-acts { display: flex; flex-direction: row; align-items: center; gap: 8px; }
.shop-tab .shop-row-acts .shop-row-out { margin-top: 6px; }
.price-sheet-v2 { padding-top: 22px; }
.price-sheet-v2 h2 { margin: 0; padding-right: 44px; font-size: 18px; }
.price-sheet-v2 > p { margin: 4px 0 0; color: #8a8296; font-size: 13px; }
.price-sheet-v2 .price-sheet-ch { display: grid; grid-template-columns: repeat(3, 1fr); gap: 8px; margin-top: 14px; }
.price-sheet-v2 .price-sheet-ch button { height: 42px; border: 1px solid #e3def0; border-radius: 12px; background: #fff; color: #3b3546; font-size: 15px; font-weight: 700; cursor: pointer; }
.price-sheet-v2 .price-sheet-ch button.is-on { border-color: #6c4cf1; background: #f2eeff; color: #5b3ee0; }
.price-sheet-v2 .price-sheet-input { display: flex; align-items: center; gap: 8px; height: 54px; margin-top: 12px; padding: 0 14px; border: 1px solid #e3def0; border-radius: 14px; }
.price-sheet-v2 .price-sheet-input span { font-size: 17px; font-weight: 700; }
.price-sheet-v2 .price-sheet-input input { flex: 1; min-width: 0; height: 50px; min-height: 0; margin: 0; padding: 0; border: 0; outline: 0; font-size: 22px; font-weight: 800; background: transparent; }
.price-sheet-v2 .price-sheet-input small { color: #9a93a8; font-size: 13px; }
.price-sheet-v2 .price-sheet-keep { display: flex; align-items: center; gap: 8px; margin-top: 12px; color: #3b3546; font-size: 14px; }
.price-sheet-v2 .price-sheet-keep input { width: 18px; height: 18px; min-height: 0; margin: 0; padding: 0; accent-color: #6c4cf1; }
.price-sheet-v2 .shopping-price-save { width: 100%; height: 48px; margin-top: 14px; border: 0; border-radius: 14px; background: #6c4cf1; color: #fff; font-size: 16px; font-weight: 800; }
.shop-tab .shop-row-acts .have-tick { min-height: 0; height: auto; }
/* 10/26 Owner 确认效果图「这顿饭记录页」v1 */
.meal-record-detail.rd7 { padding-bottom: 200px; }
.rd7-hero { position: relative; display: block; margin-top: 4px; border-radius: 20px; overflow: hidden; background: #fff; }
.rd7-hero .record-detail-swipe { margin: 0; border-radius: 0; }
.rd7-hero .record-detail-swipe figcaption { right: auto; left: 10px; }
.rd7-hero.is-empty { height: 220px; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 8px; border: 2px dashed #cbbdf6; background: #faf8ff; cursor: pointer; }
.rd7-hero input[type=file] { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.rd7-cam { width: 56px; height: 56px; border-radius: 50%; background: #6b4ce6; color: #fff; display: flex; align-items: center; justify-content: center; font-size: 26px; box-shadow: 0 6px 16px rgba(107,76,230,.35); }
.rd7-hero.is-empty b { color: #5b3ee0; font-size: 18px; }
.rd7-hero.is-empty small { color: #8a8296; font-size: 13px; }
.rd7-more { position: absolute; right: 10px; bottom: 10px; height: 30px; padding: 0 12px; border-radius: 15px; background: rgba(0,0,0,.5); color: #fff; font-size: 12.5px; font-weight: 700; display: flex; align-items: center; cursor: pointer; }
.rd7-more input[type=file] { position: absolute; width: 1px; height: 1px; opacity: 0; pointer-events: none; }
.rd7-ttl { display: flex; align-items: center; gap: 8px; margin: 14px 2px 0; }
.rd7-ttl b { font-size: 20px; } .rd7-ttl small { color: #7a7488; font-size: 13px; }
.rd7-ttl em { margin-left: auto; padding: 3px 9px; border-radius: 10px; background: #e9f7ef; color: #2f7a4c; font-style: normal; font-size: 12px; }
.rd7-card { margin-top: 12px; padding: 12px 14px; border: 1px solid #ece8f2; border-radius: 18px; background: #fff; }
.rd7-card > header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; color: #4a4458; font-size: 14px; font-weight: 800; }
.rd7-card > header small { color: #9a93a8; font-size: 12px; font-weight: 500; }
.rd7-dishes { display: grid; grid-template-columns: repeat(5, minmax(0, 1fr)); gap: 8px 6px; }
.rd7-dish { min-width: 0; text-align: center; }
.rd7-dish .dish-photo, .rd7-dish img { width: 56px; height: 56px; margin: 0 auto; border-radius: 14px; object-fit: cover; overflow: hidden; display: block; }
.rd7-dish i { display: block; margin-top: 5px; overflow: hidden; color: #4a4458; font-style: normal; font-size: 11.5px; text-overflow: ellipsis; white-space: nowrap; }
.rd7-note { width: 100%; height: 44px; box-sizing: border-box; padding: 0 12px; border: 1px solid #e3def0; border-radius: 12px; font: inherit; font-size: 14px; }
.rd7-empty { margin: 0; color: #8a8296; font-size: 13.5px; }
.rd7-praise { display: flex; flex-wrap: wrap; gap: 6px; align-items: center; }
.rd7-tag { padding: 5px 10px; border-radius: 14px; background: #fff4e2; color: #a35f0b; font-size: 12.5px; font-weight: 700; }
.rd7-comment { color: #6f6880; font-size: 12px; }
.rd7-praise-add { margin-top: 10px; padding: 0; border: 0; background: none; color: #6b4ce6; font-size: 13px; font-weight: 700; cursor: pointer; }
.rd7-bar { position: fixed; z-index: 60; left: 50%; bottom: calc(92px + env(safe-area-inset-bottom)); width: min(100%, 480px); transform: translateX(-50%); display: flex; gap: 10px; box-sizing: border-box; padding: 10px 16px; background: linear-gradient(180deg, rgba(247,245,242,0), #f7f5f2 35%); }
.rd7-bar button { flex: 1; height: 48px; border-radius: 14px; font-size: 15px; font-weight: 800; cursor: pointer; }
.rd7-sub { border: 1.5px solid #d8cefc; background: #fff; color: #6b4ce6; }
.rd7-main { flex: 1.2 !important; border: 0; background: #6b4ce6; color: #fff; }

/* 10/26 15:56 Owner 选效果图「这顿饭按钮」方案 A（和小程序同一套） */
.m9-cta { position: relative; display: flex; align-items: center; justify-content: center; width: 100%; height: 52px; margin-top: 14px; padding: 0 44px; border: 0; border-radius: 16px; background: linear-gradient(135deg, #7a5cf5, #5b3ed6); box-shadow: 0 6px 14px rgba(92, 62, 214, .26); color: #fff; cursor: pointer; box-sizing: border-box; }
.m9-cta b { font-size: 17px; font-weight: 850; }
.m9-cta i { position: absolute; right: 18px; font-size: 22px; font-style: normal; }
.m9-cta.is-done { background: linear-gradient(135deg, #2fa86a, #1f8553); box-shadow: 0 6px 14px rgba(31, 133, 83, .22); }
.m9-cta:disabled { opacity: .72; }
.m9-tools { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px; margin-top: 10px; }
.m9-tools--1 { grid-template-columns: minmax(0, 1fr); }
.m9-tools--2 { grid-template-columns: repeat(2, minmax(0, 1fr)); }
.m9-tools--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }
.m9-tool { position: relative; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 5px; height: 66px; padding: 0 4px; border: 0; border-radius: 14px; background: #f6f3fc; color: #3a3150; font-size: 12.5px; font-weight: 700; cursor: pointer; box-sizing: border-box; }
.m9-tool:hover { background: #efe9fb; }
.m9-tool svg { width: 22px; height: 22px; fill: none; stroke: #6c4cf1; stroke-width: 1.8; stroke-linecap: round; stroke-linejoin: round; }
.m9-tool.is-go { background: #ecfaf2; color: #1e7a4b; }
.m9-tool.is-go svg { stroke: #22a565; }
.m9-badge { position: absolute; top: 5px; right: 5px; padding: 0 5px; border-radius: 8px; background: #ef6a1f; color: #fff; font-size: 10px; font-style: normal; font-weight: 700; line-height: 15px; }

/* 11/01 Owner 确认效果图「清单整理」v2（和小程序同步）：「整理」、勾选行、一键选、两个按钮、撤销条、最底下「不买了」 */
.shop-tidy-head { display: flex; align-items: center; justify-content: space-between; gap: 8px; padding: 12px 12px 6px; color: #8a7a6c; font-size: 13px; }
.shop-tidy-head b { color: #2b2140; font-size: 15px; }
.shop-tidy-btn { flex: none; height: 32px; padding: 0 14px; border: 1.5px solid #e4dcf6; border-radius: 16px; background: #fff; color: #6b4cf1; font: inherit; font-size: 13px; font-weight: 800; cursor: pointer; box-shadow: 0 2px 5px rgba(107, 76, 241, .08); }
.shop-tidy-btn.is-on { border-color: #6b4cf1; background: #6b4cf1; color: #fff; }
.shop-tidy-quick { display: flex; flex-wrap: wrap; gap: 8px; padding: 0 12px 8px; }
.shop-tidy-quick button { height: 32px; padding: 0 12px; border: 1.5px solid #ece4da; border-radius: 16px; background: #fff; color: #514b5e; font: inherit; font-size: 13px; cursor: pointer; }
.shop-tidy-quick button.is-on { border-color: #6b4cf1; background: #f7f3ff; color: #6b4cf1; font-weight: 800; }
.shopping-list-row.tidy-row { display: grid; grid-template-columns: 26px minmax(0, 1fr) auto; align-items: center; gap: 10px; width: 100%; min-height: 56px; padding: 6px 12px; border: 0; border-top: 1px solid #f1eae4; background: #fff; font: inherit; text-align: left; cursor: pointer; }
.shopping-list-row.tidy-row.is-sel { background: #f7f3ff; }
.shopping-list-row.tidy-row .shopping-list-item-copy b, .shopping-list-row.tidy-row .shopping-list-item-copy small { display: block; }
.tidy-ck { width: 22px; height: 22px; border: 2px solid #cfc4b8; border-radius: 50%; box-sizing: border-box; color: #fff; font-style: normal; font-size: 13px; font-weight: 900; line-height: 18px; text-align: center; }
.tidy-row.is-sel .tidy-ck { border-color: #6b4cf1; background: #6b4cf1; }
.tidy-qty { color: #514b5e; font-size: 13px; white-space: nowrap; }
.tidy-bar { position: sticky; bottom: 0; z-index: 5; margin-top: 8px; padding: 10px 12px 12px; border-radius: 18px 18px 0 0; background: #fff; box-shadow: 0 -8px 20px rgba(40, 20, 80, .08); }
.tidy-bar small { display: block; margin-bottom: 8px; color: #8a7a6c; font-size: 13px; text-align: center; }
.tidy-bar-acts { display: flex; gap: 10px; }
.tidy-bar-acts button { flex: 1; min-width: 0; height: 48px; border-radius: 24px; font: inherit; font-size: 15px; font-weight: 800; cursor: pointer; }
.tidy-bar-acts .tidy-have { border: 1.5px solid #ffcfae; background: #fff; color: #c4561a; }
.tidy-bar-acts .tidy-skip { border: 0; background: linear-gradient(90deg, #ff8a3d, #ff6a2f); color: #fff; box-shadow: 0 5px 12px rgba(255, 106, 47, .28); }
.tidy-bar-acts button[disabled] { opacity: .45; cursor: default; }
.tidy-undo { position: fixed; left: 50%; bottom: calc(96px + env(safe-area-inset-bottom)); z-index: 80; display: flex; align-items: center; justify-content: space-between; gap: 18px; width: min(420px, calc(100% - 32px)); padding: 12px 16px; border-radius: 14px; background: #2b2140; color: #fff; font-size: 15px; box-shadow: 0 6px 16px rgba(20, 10, 40, .25); transform: translateX(-50%); }
.tidy-undo button { border: 0; background: none; color: #ffb98a; font: inherit; font-weight: 800; cursor: pointer; }
.shop-skip { margin-top: 10px; padding: 3px 12px 5px; border-radius: 14px; background: #f6f1ea; }
.shop-skip-head { display: flex; align-items: center; justify-content: space-between; width: 100%; min-height: 44px; padding: 0; border: 0; background: none; color: #6d6577; font: inherit; font-size: 13px; cursor: pointer; }
.shop-skip-head b { margin-right: 8px; color: #2b2140; font-size: 15px; }
.shop-skip-head em { color: #6b4cf1; font-style: normal; font-weight: 800; }
.shop-skip-row { display: flex; align-items: center; gap: 8px; min-height: 48px; border-top: 1px solid #ece4da; }
.shop-skip-name { flex: 1; min-width: 0; }
.shop-skip-name s { display: block; color: #8a7a6c; font-size: 15px; text-decoration-color: #cdbfb1; }
.shop-skip-name small { color: #a99a8c; font-size: 13px; }
.shop-skip-back { flex: none; height: 32px; padding: 0 14px; border: 1.5px solid #e4dcf6; border-radius: 16px; background: #fff; color: #6b4cf1; font: inherit; font-size: 13px; font-weight: 800; cursor: pointer; }
/* 11/01 Owner：「买回来了，扫小票」要像个按钮——白底微渐变 + 紫边 + 扫码小票图标 + 底边厚度和投影，按下沉一下；「去买菜」实心渐变带投影 */
.shop-act.shop-scan { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 48px; border: 1.5px solid #cdbffb; background: linear-gradient(180deg, #ffffff 0%, #f5f0ff 100%); color: #5b3ed6; box-shadow: 0 2px 0 #e2d8ff, 0 6px 13px rgba(107, 76, 230, .14); transition: transform .08s, box-shadow .08s; }
.shop-act.shop-scan:hover { border-color: #b9a6fa; }
.shop-act.shop-scan:active { transform: translateY(1px); box-shadow: 0 1px 0 #e2d8ff, 0 3px 7px rgba(107, 76, 230, .12); }
.shop-scan-ic { width: 20px; height: 20px; flex: none; }
.shop-act.is-main { height: 48px; background: linear-gradient(135deg, #7a5cf0, #6243e0); box-shadow: 0 2px 0 #5136c4, 0 6px 13px rgba(98, 67, 224, .3); }

/* 11/01 Owner 确认效果图「分享卡三种」v3：小技巧 / 问答 / 各家怎么做 右边「↗ 分享」（和小程序同步） */
.sc-share { flex: none; display: inline-flex; align-items: center; height: 28px; margin-left: auto; padding: 0 12px; border: 0; border-radius: 14px; background: linear-gradient(135deg, #ff9a3f, #ff6a2f); color: #fff; font: inherit; font-size: 13px; font-weight: 900; cursor: pointer; white-space: nowrap; box-shadow: 0 3px 8px rgba(255, 106, 47, .3); }
.sc-share:hover { filter: brightness(1.04); }
.rd3-tip header { display: flex; align-items: center; gap: 8px; }
.rd3-tip header .sc-share + button { margin-left: 0; }
.rd3-qa-r { display: inline-flex; align-items: center; gap: 10px; }
.note-question-row { display: flex; align-items: center; gap: 10px; margin-top: 8px; }
.dww-head-row { display: flex; align-items: center; gap: 10px; }
.dww-head-row .dww-head { flex: 1; min-width: 0; }

/* 11/01 Owner：菜谱页上下两个「分享」统一（橙色渐变 + 白箭头 + 「分享」），都打开菜谱卡；显眼、让人愿意点（和小程序同步） */
.rd3-share-pill { display: inline-flex; align-items: center; justify-content: center; gap: 4px; height: 32px; padding: 0 14px 0 11px; border: 0; border-radius: 16px; background: linear-gradient(135deg, #ff9a3f, #ff6a2f); color: #fff; font: inherit; font-size: 13px; font-weight: 900; line-height: 1; cursor: pointer; box-shadow: 0 4px 10px rgba(255, 106, 47, .32), inset 0 1px 0 rgba(255, 255, 255, .35); transition: transform .08s; }
.rd3-share-pill img { width: 16px; height: 16px; }
.rd3-share-pill:active { transform: translateY(1px); }
.recipe-social-dock-action.is-share { color: #e8571f; }
.recipe-social-dock-action.is-share > .rd3-share-dot { display: inline-flex; align-items: center; justify-content: center; width: 28px; height: 28px; margin: -3px 0; border-radius: 50%; background: linear-gradient(135deg, #ff9a3f, #ff6a2f); box-shadow: 0 3px 8px rgba(255, 106, 47, .35); }
.recipe-social-dock-action.is-share > .rd3-share-dot img { width: 16px; height: 16px; }
.recipe-social-dock-action.is-share > small { color: #e8571f; }
.shop-sum-head { display: flex; align-items: center; justify-content: space-between; }
/* 11/01 12:50 Owner：底部「分享」和旁边的线条图标一个画法，只是橙色 */
.recipe-social-dock-action.is-share > .rd3-share-line { display: inline-flex; width: 22px; height: 22px; }
.recipe-social-dock-action.is-share > .rd3-share-line img { width: 22px; height: 22px; }

/* 11/01 落地效果图 26d：「做法」橙色字 + 小定位针（和小程序同步） */
.rd3-tab.is-ways { color: #ec6b3a; display: inline-flex; align-items: center; gap: 2px; }
.rd3-tab.is-ways.on { color: #ec6b3a; border-bottom-color: #ec6b3a; }
.rd3-tab-pin { width: 13px; height: 13px; }
.rd-step-xp { display: inline-block; margin-left: 4px; padding: 0 5px; border-radius: 7px; background: #ff6a2e; color: #fff; font-size: 10px; font-style: normal; font-weight: 900; line-height: 15px; }
/* 11/01 落地效果图 26b ③：晒作业 */
.rd3-wall .rd3-panel-head { display: flex; justify-content: space-between; align-items: baseline; }
.rd3-wall-card { display: block; width: 100%; margin-top: 10px; padding: 12px; border: 1px solid #efe9f1; border-radius: 14px; background: #fff; font: inherit; text-align: left; cursor: pointer; }
.rd3-wall-who { display: flex; align-items: center; gap: 8px; }
.rd3-wall-who b { display: block; font-size: 15px; color: #1f1a2b; }
.rd3-wall-who small { display: block; font-size: 12px; color: #9a93a6; }
.rd3-wall-av { width: 36px; height: 36px; border-radius: 50%; object-fit: cover; flex: none; background: #f3eee6; }
.rd3-wall-av.is-txt { display: inline-flex; align-items: center; justify-content: center; color: #7a5b3c; font-style: normal; font-weight: 800; }
.rd3-wall-body { display: block; margin-top: 7px; font-size: 15px; line-height: 1.55; color: #2b2140; }
.rd3-wall-photos { display: flex; gap: 5px; margin-top: 8px; }
.rd3-wall-photos img { width: 100px; height: 100px; border-radius: 9px; object-fit: cover; background: #f3eee6; }
.rd3-wall-foot { display: flex; gap: 11px; margin-top: 8px; font-size: 13px; }
.rd3-wall-foot em { font-style: normal; }
.rd3-wall-done { color: #15803d; font-weight: 800; }
.rd3-wall-done.is-flop { color: #b45309; }
.rd3-wall-useful { color: #c4561a; font-weight: 700; }
.rd3-wall-go { position: relative; display: block; width: 220px; height: 48px; margin: 16px auto 4px; border: 0; border-radius: 24px; background: linear-gradient(135deg, #ff9a3f, #ff6a2f); color: #fff; font: inherit; font-size: 15px; font-weight: 900; cursor: pointer; box-shadow: 0 5px 12px rgba(255, 106, 47, .3); }
.rd3-wall-go i { position: absolute; top: -8px; right: 10px; padding: 0 6px; border-radius: 8px; background: #e8321f; color: #fff; font-size: 10px; font-style: normal; font-weight: 900; line-height: 16px; }
