/* 网页版 缺什么买什么 / 排一周 / 出锅顺序 / 菜的主页（10/11） */
.kx-backdrop { position: fixed; inset: 0; z-index: 180; background: rgba(41, 38, 49, .38); }
.kx-sheet { width: min(100%, 520px); max-height: calc(100vh - 56px); padding: 14px 20px max(22px, env(safe-area-inset-bottom)); position: fixed; z-index: 181; left: 50%; bottom: 0; overflow-y: auto; transform: translateX(-50%); border-radius: 24px 24px 0 0; background: #fffaf7; box-shadow: 0 -12px 35px rgba(48, 35, 55, .15); color: var(--ink); }
.kx-sheet > header { display: flex; align-items: flex-start; justify-content: space-between; gap: 12px; margin-bottom: 10px; }
.kx-sheet > header h2 { margin: 2px 0 2px; font-size: 21px; }
.kx-sheet > header p { margin: 0; color: var(--muted); font-size: 13px; }
.kx-sheet > header > button { width: 38px; height: 38px; flex: none; border: 0; border-radius: 50%; background: #f0eaf2; color: #6b6370; font-size: 20px; }
.kx-state { margin: 18px 0; color: var(--muted); font-size: 14px; line-height: 1.6; text-align: center; }
.kx-note { margin: 10px 0 0; color: var(--muted); font-size: 12px; line-height: 1.6; }
.kx-sub { margin: 0 0 8px; color: var(--muted); font-size: 13px; line-height: 1.55; }
.kx-card { padding: 14px; border-radius: 16px; background: #fff; box-shadow: var(--soft-shadow); }
.kx-actions { display: flex; gap: 10px; margin-top: 14px; }
.kx-actions > * { flex: 1; }
.kx-main, .kx-soft { min-height: 44px; padding: 0 14px; display: inline-flex; align-items: center; justify-content: center; border: 0; border-radius: 12px; font-size: 14px; font-weight: 800; text-decoration: none; }
.kx-main { color: #fff; background: var(--orange); }
.kx-main[disabled] { opacity: .5; }
.kx-soft { color: var(--purple-dark); background: var(--purple-pale); }
.kx-offers { display: grid; gap: 10px; }
.kx-offer { padding: 12px 14px; display: flex; align-items: center; justify-content: space-between; gap: 10px; border-radius: 14px; background: #fff; box-shadow: var(--soft-shadow); }
.kx-offer b { display: block; font-size: 14px; line-height: 1.45; }
.kx-offer small { color: var(--muted); font-size: 12px; }
.kx-offer .kx-main { flex: none; min-height: 36px; font-size: 13px; }
.kx-lock { width: 100%; margin-top: 14px; padding: 12px 14px; display: flex; align-items: center; gap: 10px; border: 1px solid #f4dfc4; border-radius: 14px; background: #fff5e9; text-align: left; }
.kx-lock i { font-style: normal; font-size: 20px; }
.kx-lock b { display: block; font-size: 14px; }
.kx-lock small { color: var(--orange-dark); font-size: 12px; font-weight: 800; }
.kx-week-row { padding: 10px 0; display: flex; gap: 12px; border-bottom: 1px solid var(--line); }
.kx-week-row:last-of-type { border-bottom: 0; }
.kx-week-row > b { width: 44px; flex: none; color: var(--orange-dark); font-size: 14px; }
.kx-week-row span { display: block; font-size: 14px; font-weight: 800; }
.kx-week-row small { color: var(--muted); font-size: 12px; }
.kx-tags { margin-top: 8px; display: flex; flex-wrap: wrap; gap: 6px; }
.kx-tags span { padding: 3px 9px; border-radius: 999px; background: var(--orange-pale); color: var(--orange-dark); font-size: 12px; }
.kx-timeline { margin: 6px 0 0; padding: 0; list-style: none; }
.kx-timeline li { padding: 8px 0 8px 18px; position: relative; display: grid; grid-template-columns: 48px 1fr; gap: 2px 8px; border-left: 2px solid var(--line); }
.kx-timeline li::before { content: ""; width: 10px; height: 10px; position: absolute; left: -6px; top: 13px; border-radius: 50%; background: #d8cfd9; }
.kx-timeline li.is-now::before { background: var(--orange); }
.kx-timeline time { color: var(--orange-dark); font-weight: 800; font-size: 13px; }
.kx-timeline b { font-size: 14px; }
.kx-timeline span { grid-column: 2; color: var(--muted); font-size: 12px; }
.kx-tabs, .kx-chips { margin: 10px 0; display: flex; gap: 8px; overflow-x: auto; }
.kx-tabs button, .kx-chips button { flex: none; min-height: 34px; padding: 0 12px; border: 1px solid var(--line); border-radius: 999px; background: #fff; color: var(--ink); font-size: 13px; }
.kx-tabs button.active, .kx-chips button.active { border-color: var(--orange); color: var(--orange-dark); background: var(--orange-pale); font-weight: 800; }
.kx-variants, .kx-posts { display: grid; gap: 10px; }
.kx-variant { padding: 8px; display: flex; align-items: center; gap: 10px; border: 0; border-radius: 14px; background: #fff; text-align: left; box-shadow: var(--soft-shadow); }
.kx-variant img, .kx-variant i { width: 64px; height: 64px; flex: none; display: grid; place-items: center; border-radius: 10px; object-fit: cover; background: var(--orange-pale); color: var(--orange-dark); font-style: normal; font-weight: 800; }
.kx-variant b { display: block; font-size: 14px; }
.kx-variant small { color: var(--muted); font-size: 12px; }
.kx-posts article { padding: 12px; border-radius: 14px; background: #fff; box-shadow: var(--soft-shadow); }
.kx-posts header { display: flex; align-items: center; gap: 6px; font-size: 13px; }
.kx-posts header small { color: var(--muted); }
.kx-posts em { padding: 1px 6px; border-radius: 6px; background: #f0eaf2; color: #6b6370; font-size: 11px; font-style: normal; }
.kx-posts em.is-help { background: #ffe9e2; color: #c2522f; }
.kx-posts p { margin: 6px 0; font-size: 14px; line-height: 1.6; }
.kx-posts article > button { border: 0; background: none; color: var(--muted); font-size: 12px; }
.kx-posts article > button.is-on { color: var(--orange-dark); font-weight: 800; }
.kx-reply { margin-top: 8px; padding: 8px 10px; border-radius: 10px; background: #faf6f2; font-size: 13px; }
.kx-compose { margin: 10px 0; display: grid; gap: 8px; }
.kx-compose select, .kx-compose textarea, .kx-compose input { width: 100%; padding: 10px 12px; border: 1px solid var(--line); border-radius: 12px; background: #fff; font: inherit; font-size: 14px; }
.kx-compose textarea { min-height: 80px; resize: vertical; }
.kx-compose small { color: var(--muted); font-size: 12px; line-height: 1.5; }
.kx-made { display: grid; grid-template-columns: repeat(2, 1fr); gap: 10px; }
.kx-made button { padding: 0 0 8px; overflow: hidden; border: 0; border-radius: 14px; background: #fff; text-align: left; box-shadow: var(--soft-shadow); }
.kx-made img, .kx-made i { width: 100%; aspect-ratio: 1; display: grid; place-items: center; object-fit: cover; background: var(--orange-pale); color: var(--orange-dark); font-style: normal; }
.kx-made b, .kx-made small { display: block; padding: 4px 8px 0; font-size: 13px; }
.kx-made small { color: var(--muted); font-size: 12px; }
.kx-wiki { margin-top: 16px; padding: 14px; border-radius: 16px; background: #fff; }
.kx-wiki header { display: flex; align-items: center; justify-content: space-between; }
.kx-wiki h3 { margin: 0; font-size: 16px; }
.kx-wiki header button, .kx-link { border: 0; background: none; color: var(--orange-dark); font-size: 13px; font-weight: 800; }
.kx-wiki > div { margin-top: 10px; }
.kx-wiki > div b { font-size: 14px; }
.kx-wiki > div p { margin: 4px 0 0; font-size: 14px; line-height: 1.65; }
.kx-wiki > small { display: block; margin-top: 10px; color: var(--muted); font-size: 12px; }
.shopping-pick-link { margin-left: 6px; padding: 0 6px; border: 0; border-radius: 6px; background: var(--orange-pale); color: var(--orange-dark); font-size: 12px; font-weight: 800; }
.meal-cook-order { width: 100%; margin: 8px 0 0; padding: 10px 12px; display: flex; align-items: center; justify-content: space-between; border: 1px dashed #f1c9a4; border-radius: 12px; background: #fff8f1; color: var(--orange-dark); font-size: 13px; }
.meal-cook-order b { font-size: 14px; }
.follow-groups { margin: 4px 0 10px; display: flex; gap: 8px; }
.follow-groups button { min-height: 32px; padding: 0 14px; border: 1px solid var(--line); border-radius: 999px; background: #fff; color: var(--ink); font-size: 13px; }
.follow-groups button.active { border-color: var(--orange); color: var(--orange-dark); background: var(--orange-pale); font-weight: 800; }
.follow-relation { margin-left: 4px; padding: 1px 6px; border-radius: 6px; background: var(--purple-pale); color: var(--purple-dark); font-size: 11px; font-style: normal; }
.note-relation { min-height: 30px; padding: 0 10px; border: 1px solid #d9ceff; border-radius: 999px; background: #fff; color: var(--purple-dark); font-size: 12px; font-weight: 800; }
.note-relation.is-on { background: var(--purple-pale); }
.note-relation-menu { margin: 8px 16px 0; padding: 10px; display: flex; flex-wrap: wrap; gap: 8px; border-radius: 14px; background: var(--purple-pale); font-size: 12px; }
.note-relation-menu p { width: 100%; margin: 0; color: var(--muted); }
.note-relation-menu button { min-height: 32px; padding: 0 12px; border: 0; border-radius: 10px; background: #fff; color: var(--purple-dark); font-weight: 800; }
.note-visibility { margin-left: 6px; padding: 1px 6px; border-radius: 6px; background: var(--purple-pale); color: var(--purple-dark); font-size: 11px; }
.community-visibility-select select { width: 100%; }

/* 排一周 v2（Owner 10/18，和小程序一致） */
.kx-goals-head { display: flex; justify-content: space-between; align-items: baseline; margin: 2px 2px 8px; }
.kx-goals-head b { font-size: 16px; }
.kx-goals-head small { font-size: 11px; color: #8a839c; }
.kx-goals { display: flex; flex-wrap: wrap; gap: 7px; }
.kx-goal { text-align: left; padding: 7px 9px; border-radius: 11px; background: #fff; border: 1.5px solid #ebe5f0; font-size: 13px; }
.kx-goal.is-on { border-color: #6b4cf1; background: #f3eeff; color: #4b2fd0; }
.kx-goal em { font-style: normal; font-size: 9.5px; margin-left: 3px; color: #9a6a00; background: #fff4e0; border-radius: 3px; padding: 0 3px; }
.kx-goal small { display: block; font-size: 10.5px; color: #6b5bb8; margin-top: 2px; }
.kx-meals { display: flex; align-items: center; gap: 5px; margin: 10px 2px 4px; font-size: 12px; color: #6b6478; flex-wrap: wrap; }
.kx-seg { padding: 5px 9px; border-radius: 8px; background: #fff; border: 1.5px solid #ebe5f0; font-size: 12px; color: #4a4358; cursor: pointer; }
.kx-seg.is-on { border-color: #6b4cf1; background: #f3eeff; color: #4b2fd0; font-weight: 800; }
.kx-seg input { display: none; }
.kx-segs { display: flex; flex-wrap: wrap; gap: 6px; }
.kx-goal-sheet { margin-top: 10px; padding: 12px; border-radius: 14px; background: #faf8fd; border: 1px solid #ece6f6; }
.kx-goal-sheet small { display: block; font-size: 12px; color: #6b6478; font-weight: 700; margin: 10px 0 5px; }
.kx-goal-title { font-size: 15px; }
.kx-inp { display: inline-flex; align-items: center; gap: 6px; font-size: 15px; font-weight: 800; }
.kx-inp input { width: 96px; height: 34px; border: 1.5px solid #d6c7ff; border-radius: 9px; padding: 0 9px; font-size: 16px; font-weight: 800; }
.kx-goal-lock { margin-top: 10px; padding: 11px; border-radius: 12px; background: #fff8ec; border: 1px solid #ffe2b8; }
.kx-goal-lock b { display: block; font-size: 14px; color: #7a4a00; }
.kx-goal-lock small { display: block; font-size: 11px; color: #9a6a3a; margin-top: 2px; }
.kx-link { display: block; margin: 8px auto 0; border: 0; background: none; color: #6b5bb8; font-size: 12px; }
.kx-week-sum { padding: 8px 0 7px; border-bottom: 1px solid #f0ecf7; }
.kx-week-sum > b { font-size: 22px; margin-right: 7px; }
.kx-week-sum span { font-size: 12px; color: #8a839c; }
.kx-week-sum span.is-ok { color: #2f8a3a; font-weight: 800; }
.kx-week-sum span.is-over, .kx-meal .is-over { color: #e2521d; }
.kx-week-sum small { display: block; font-size: 11px; color: #8a839c; margin-top: 3px; }
.kx-meal { margin-bottom: 8px; }
.kx-meal p { margin: 0; display: flex; gap: 6px; align-items: center; font-size: 12px; }
.kx-meal p em { font-style: normal; font-size: 10px; color: #fff; background: #8a7ad8; border-radius: 4px; padding: 0 4px; }
.kx-meal p small { color: #8a839c; font-size: 10.5px; }
.kx-dish { display: flex; justify-content: space-between; align-items: center; margin-top: 3px; font-size: 14px; }
.kx-price { border: 0; background: none; font-size: 12.5px; font-weight: 700; color: #4a4358; cursor: pointer; }
.kx-src { font-style: normal; font-size: 9.5px; border-radius: 3px; padding: 0 4px; margin-left: 3px; background: #f3f0f7; color: #7a7386; }
.kx-src--family, .kx-src--ingredient { background: #eaf6ee; color: #2f8a3a; }
.kx-src--reference { background: #efe9fd; color: #5b2fd6; }
.kx-price-form { display: inline-flex; gap: 4px; }
.kx-price-form input { width: 64px; height: 26px; border: 1.5px solid #d6c7ff; border-radius: 7px; padding: 0 6px; }
.kx-price-form button { border: 0; border-radius: 7px; background: #5b2fd6; color: #fff; font-size: 12px; padding: 0 8px; }
.kx-feedback { display: flex; gap: 5px; justify-content: center; align-items: center; width: 100%; margin-top: 12px; border: 0; background: none; font-size: 12px; color: #8a83a0; }
.kx-feedback b { color: #5b2fd6; }
.kx-feedback em { font-style: normal; font-size: 10px; color: #c47a00; background: #fff4e0; border-radius: 4px; padding: 1px 5px; }
/* 每顿搭配（Owner 10/19） */
.kx-combo { padding: 5px 11px; border-radius: 9px; background: #f3eeff; border: 1.5px solid #6b4cf1; color: #4b2fd0; font-size: 12.5px; font-weight: 800; cursor: pointer; }
.kx-short { margin: 6px 2px 0; padding: 7px 10px; border-radius: 10px; background: #fff7ec; border: 1px solid #f6d7bd; font-size: 12px; color: #7a5a40; line-height: 1.6; }
.kx-short button { border: 0; background: none; color: #5b2fd6; font-weight: 800; cursor: pointer; font-size: 12px; }
.kx-kind { font-style: normal; font-size: 10.5px; font-weight: 800; border-radius: 5px; padding: 1px 5px; margin-right: 5px; }
.kx-kind--meat { background: #ffe9e0; color: #c4451c; }
.kx-kind--veg { background: #e6f5ea; color: #2f8a3a; }
.kx-kind--soup { background: #e5f1fb; color: #2a6fa8; }
.kx-kind--staple { background: #fbf1dc; color: #9a6a10; }
.kx-portion { font-size: 11px; color: #9a93a6; margin-left: 4px; }
.kx-price.is-fixed { cursor: default; }
.kx-preset { display: inline-flex; flex-direction: column; align-items: flex-start; }
.kx-goal-sheet .kx-preset small { margin: 0; font-weight: 500; color: #9a93a6; font-size: 10.5px; }
.kx-step { display: flex; align-items: center; justify-content: space-between; padding: 6px 0; border-bottom: 1px solid #f0ecf6; font-size: 14px; font-weight: 700; }
.kx-step > span:first-child small { display: inline; margin: 0 0 0 5px; font-weight: 500; color: #9a93a6; }
.kx-step-ctl { display: inline-flex; align-items: center; border: 1.5px solid #e2dbf3; border-radius: 9px; overflow: hidden; }
.kx-step-ctl button { width: 32px; height: 28px; border: 0; background: #fff; color: #5b2fd6; font-size: 17px; cursor: pointer; }
.kx-step-ctl b { width: 30px; text-align: center; border-left: 1.5px solid #e2dbf3; border-right: 1.5px solid #e2dbf3; line-height: 28px; }
.kx-week-row > div { flex: 1; min-width: 0; }
.kx-dish > span:first-child { display: flex; align-items: center; flex: 1; min-width: 0; }
