/* 偏好页重构「我家口味」（10/12，和小程序 family-taste-sheet 同一设计）。不用 transform，免得城市选择层的 position:fixed 失效。 */
.ft-backdrop { position: fixed; inset: 0; z-index: 170; background: rgba(41, 38, 49, .38); }
.ft-page { position: fixed; z-index: 171; top: 0; bottom: 0; left: 0; right: 0; margin: 0 auto; width: min(100%, 520px); display: flex; flex-direction: column; background: #fbf8f4; color: #1f1a2b; }
.ft-hd { display: flex; align-items: center; gap: 10px; padding: 14px 16px 10px; }
.ft-hd button { border: 0; background: none; font-size: 26px; line-height: 1; color: #6b4cf1; cursor: pointer; padding: 0 6px 0 0; }
.ft-hd h2 { margin: 0; font-size: 18px; font-weight: 900; }
.ft-hd small { margin-left: auto; font-size: 12px; color: #8a83a0; font-weight: 600; }
.ft-body { flex: 1; overflow-y: auto; padding: 0 16px 28px; }
.ft-blk { margin-top: 12px; background: #fff; border: 1px solid #efe9f1; border-radius: 18px; padding: 12px 14px; }
.ft-blk h4 { display: flex; align-items: center; margin: 0; font-size: 14.5px; font-weight: 900; }
.ft-link { margin-left: auto; border: 0; background: none; font-size: 12px; color: #6b4cf1; font-weight: 800; cursor: pointer; }
.ft-who { display: flex; gap: 8px; margin-top: 10px; }
.ft-cell { flex: 1; border-radius: 14px; background: #f7f4fb; padding: 8px 0; text-align: center; font-size: 12px; color: #6b6478; }
.ft-cell b { display: block; font-size: 20px; line-height: 1.2; }
.ft-cell em { display: block; font-style: normal; margin-top: 4px; font-size: 15px; color: #6b4cf1; font-weight: 900; }
.ft-cell.is-on { background: #efe9ff; box-shadow: inset 0 0 0 1.5px #c9bdf2; color: #3b22b8; }
.ft-step { display: flex; align-items: center; justify-content: center; gap: 4px; margin-top: 4px; }
.ft-step em { margin: 0; min-width: 16px; }
.ft-step button { width: 22px; height: 22px; border-radius: 11px; border: 1px solid #c9bdf2; background: #fff; color: #6b4cf1; font-weight: 900; line-height: 1; cursor: pointer; padding: 0; }
.ft-tog { width: 100%; display: flex; align-items: center; justify-content: space-between; margin-top: 10px; padding: 10px 0 0; border: 0; border-top: 1px dashed #efe9f1; background: none; text-align: left; font-size: 13px; font-weight: 800; color: inherit; cursor: pointer; }
.ft-tog small { display: block; font-size: 11px; color: #8a83a0; font-weight: 600; }
.ft-sw { width: 40px; height: 24px; border-radius: 12px; background: #ddd6e8; position: relative; flex: none; transition: background .15s; }
.ft-sw::after { content: ""; position: absolute; left: 3px; top: 3px; width: 18px; height: 18px; border-radius: 9px; background: #fff; transition: left .15s; }
.ft-sw.is-on { background: #6b4cf1; }
.ft-sw.is-on::after { left: 19px; }
.ft-chips { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 9px; }
.ft-chips span { padding: 4px 10px; border-radius: 12px; font-size: 12px; font-weight: 800; background: #f6f3fa; color: #4a4358; }
.ft-chips span.is-no { background: #fff1ee; color: #c2410c; }
.ft-chips span.is-al { background: #ffe8e6; color: #b42318; }
.ft-chips small { font-weight: 600; opacity: .75; margin-left: 3px; font-size: 11px; }
.ft-empty { margin: 9px 0 0; font-size: 12px; color: #a39cb0; }
.ft-note { margin: 8px 0 0; font-size: 11.5px; color: #a39cb0; line-height: 1.6; }
.ft-foot { padding: 0 4px; margin-top: 10px; }
.ft-mem { width: 100%; display: flex; align-items: center; gap: 10px; padding: 9px 0; border: 0; border-top: 1px solid #f3f0f6; background: none; text-align: left; color: inherit; cursor: pointer; }
.ft-blk h4 + .ft-mem { border-top: 0; margin-top: 4px; }
.ft-av { width: 38px; height: 38px; border-radius: 19px; overflow: hidden; display: flex; align-items: center; justify-content: center; flex: none; background: #efe9ff; font-size: 19px; }
.ft-av img { width: 100%; height: 100%; object-fit: cover; }
.ft-av-add { background: #f3f0f6; color: #6b4cf1; font-weight: 900; }
.ft-mem-c { flex: 1; min-width: 0; }
.ft-mem-c b { font-size: 14px; }
.ft-mem-c b small { font-size: 11px; color: #8a83a0; font-weight: 600; margin-left: 5px; }
.ft-mem-line { display: block; margin-top: 3px; font-size: 12px; color: #6b6478; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.ft-mem-line i { font-style: normal; }
.ft-mem-line .is-no { color: #c2410c; }
.ft-mem-line .is-al { color: #b42318; }
.ft-mem em { font-style: normal; font-size: 12px; color: #6b4cf1; font-weight: 800; flex: none; }
.ft-mem em.is-off { color: #a39cb0; font-weight: 600; }
/* 编辑卡片 */
.ft-edit-backdrop { position: fixed; inset: 0; z-index: 2; background: rgba(20, 10, 40, .42); }
.ft-edit { position: fixed; z-index: 3; left: 0; right: 0; bottom: 0; margin: 0 auto; width: min(100%, 520px); max-height: calc(100vh - 40px); display: flex; flex-direction: column; background: #fff; border-radius: 24px 24px 0 0; padding: 16px 16px max(18px, env(safe-area-inset-bottom)); box-sizing: border-box; }
.ft-edit header { display: flex; align-items: center; gap: 8px; }
.ft-edit header .ft-av { width: 30px; height: 30px; font-size: 16px; }
.ft-edit header h3 { margin: 0; font-size: 17px; font-weight: 900; }
.ft-edit header button { margin-left: auto; border: 0; background: none; font-size: 22px; color: #8a83a0; cursor: pointer; }
.ft-edit-body { flex: 1; overflow-y: auto; padding-bottom: 6px; }
.ft-lab { margin: 13px 0 0; font-size: 12.5px; font-weight: 800; color: #3a3346; }
.ft-lab small { font-weight: 600; color: #a39cb0; margin-left: 6px; }
.ft-opts { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 7px; }
.ft-opt { position: relative; cursor: pointer; }
.ft-opt input, .ft-seg input { position: absolute; opacity: 0; pointer-events: none; }
.ft-opt span { display: inline-block; padding: 6px 11px; border-radius: 14px; border: 1.5px solid #e4def0; font-size: 12.5px; font-weight: 700; color: #4a4358; background: #fff; }
.ft-opt input:checked + span { background: #efe9ff; border-color: #b6a2fb; color: #3b22b8; }
.ft-opt.is-no input:checked + span { background: #fff1ee; border-color: #ffb59c; color: #c2410c; }
.ft-opt.is-al input:checked + span { background: #ffe8e6; border-color: #f5a39b; color: #b42318; }
.ft-seg { display: flex; margin-top: 7px; border-radius: 12px; overflow: hidden; border: 1.5px solid #e4def0; }
.ft-seg label { flex: 1; position: relative; cursor: pointer; }
.ft-seg span { display: block; text-align: center; padding: 6px 0; font-size: 12px; font-weight: 700; color: #6b6478; }
.ft-seg input:checked + span { background: #6b4cf1; color: #fff; }
.ft-edit .family-profile-select-field { margin-top: 13px; }
.ft-save { margin-top: 12px; height: 46px; border: 0; border-radius: 15px; background: linear-gradient(135deg, #6548eb, #7a50f5); color: #fff; font-size: 15px; font-weight: 900; cursor: pointer; flex: none; }
.ft-save:disabled { opacity: .6; }
.ft-consent { margin: 8px 0 0; text-align: center; font-size: 11px; color: #a39cb0; }
