* { box-sizing: border-box; margin: 0; padding: 0; }
:root {
  --green: #07C160; --green-dark: #06AD56; --orange: #FA9D3B;
  --red: #FA5151; --blue: #10AEFF; --bg: #EDEDED; --card: #FFFFFF;
  --text: #1A1A1A; --text2: #888888; --line: #E5E5E5;
}
html, body { height: 100%; }
body {
  background: #d8d8d8; font-family: -apple-system, "PingFang SC", "Microsoft YaHei", sans-serif;
  color: var(--text); -webkit-font-smoothing: antialiased;
}
.phone { max-width: 430px; margin: 0 auto; min-height: 100vh; background: var(--bg); position: relative; padding-bottom: 24px; }

/* nav */
.nav { background: var(--green); color: #fff; padding: 16px 16px 14px; display: flex; align-items: center; gap: 10px; position: sticky; top: 0; z-index: 10; }
.nav .back { cursor: pointer; font-size: 22px; line-height: 1; padding: 2px 8px 2px 0; }
.nav .title { font-size: 17px; font-weight: 600; }
.nav .logo { width: 34px; height: 34px; border-radius: 8px; background: rgba(255,255,255,.2); display: flex; align-items: center; justify-content: center; font-size: 20px; }
.nav.gray { background: #F7F7F7; color: var(--text); border-bottom: 1px solid var(--line); }

/* cards */
.card { background: var(--card); border-radius: 12px; margin: 12px; padding: 16px; }
.card h3 { font-size: 15px; margin-bottom: 10px; display: flex; align-items: center; gap: 6px; }
.sub { color: var(--text2); font-size: 12px; }
.row { display: flex; align-items: center; gap: 8px; }
.between { justify-content: space-between; }
.wrap { flex-wrap: wrap; }
.mt8 { margin-top: 8px; } .mt12 { margin-top: 12px; } .mt16 { margin-top: 16px; }

/* buttons */
.btn { display: block; width: 100%; border: none; border-radius: 10px; padding: 13px; font-size: 16px; font-weight: 600; cursor: pointer; background: var(--green); color: #fff; }
.btn:active { opacity: .85; }
.btn.mini { width: auto; padding: 7px 14px; font-size: 13px; border-radius: 8px; }
.btn.ghost { background: #fff; color: var(--green); border: 1px solid var(--green); }
.btn.gray { background: #F2F2F2; color: var(--text); }
.btn.red { background: var(--red); }
.btn.orange { background: var(--orange); }
.btn.disabled { opacity: .5; pointer-events: none; }

/* chips */
.chips { display: flex; flex-wrap: wrap; gap: 8px; }
.chip { padding: 7px 14px; border-radius: 18px; background: #F2F2F2; font-size: 13px; cursor: pointer; border: 1px solid transparent; user-select: none; }
.chip.on { background: #E8F9EF; color: var(--green); border-color: var(--green); font-weight: 600; }

/* form */
.field { margin-bottom: 16px; }
.field label { font-size: 13px; color: var(--text2); display: block; margin-bottom: 8px; }
.field input[type=text], .field select, .field textarea {
  width: 100%; padding: 11px 12px; border: 1px solid var(--line); border-radius: 8px; font-size: 15px; background: #FAFAFA; outline: none;
}
.field input:focus, .field textarea:focus { border-color: var(--green); background: #fff; }
.seg { display: flex; background: #F2F2F2; border-radius: 10px; padding: 4px; }
.seg > div { flex: 1; text-align: center; padding: 9px 0; border-radius: 8px; font-size: 14px; cursor: pointer; color: var(--text2); }
.seg > div.on { background: #fff; color: var(--text); font-weight: 600; box-shadow: 0 1px 4px rgba(0,0,0,.08); }

/* steps */
.steps { display: flex; align-items: center; margin: 4px 0 2px; }
.step { flex: 1; text-align: center; position: relative; }
.step .dot { width: 18px; height: 18px; border-radius: 50%; background: #DDD; margin: 0 auto 4px; color: #fff; font-size: 11px; line-height: 18px; }
.step.done .dot { background: var(--green); }
.step.cur .dot { background: var(--blue); box-shadow: 0 0 0 3px rgba(16,174,255,.2); }
.step span { font-size: 10px; color: var(--text2); }
.step.done span, .step.cur span { color: var(--text); }
.step::before, .step::after { content: ""; position: absolute; top: 8px; height: 2px; background: #DDD; width: 50%; }
.step::before { left: 0; } .step::after { right: 0; }
.step:first-child::before, .step:last-child::after { display: none; }
.step.done::before, .step.done::after { background: var(--green); }

/* countdown */
.count { text-align: center; padding: 6px 0 2px; }
.count .num { font-size: 40px; font-weight: 700; font-variant-numeric: tabular-nums; letter-spacing: 2px; }
.count .lab { color: var(--text2); font-size: 12px; margin-top: 2px; }
.count.ended .num { color: var(--text2); font-size: 26px; }

/* restaurant card */
.rest { border: 1px solid var(--line); border-radius: 12px; padding: 12px; margin-bottom: 10px; background: #fff; }
.rest .name { font-size: 15px; font-weight: 600; }
.rest .meta { color: var(--text2); font-size: 12px; margin-top: 4px; }
.rest .tags { margin-top: 6px; display: flex; gap: 6px; flex-wrap: wrap; }
.rest .tag { font-size: 11px; background: #F5F5F5; color: #666; border-radius: 4px; padding: 2px 7px; }
.votebar { display: flex; gap: 8px; margin-top: 10px; }
.vbtn { flex: 1; text-align: center; padding: 8px 0; border-radius: 8px; background: #F5F5F5; font-size: 13px; cursor: pointer; border: 1.5px solid transparent; user-select: none; }
.vbtn.on-like { background: #E8F9EF; border-color: var(--green); color: var(--green); font-weight: 700; }
.vbtn.on-ok { background: #E5F5FF; border-color: var(--blue); color: var(--blue); font-weight: 700; }
.vbtn.on-reject { background: #FDECEC; border-color: var(--red); color: var(--red); font-weight: 700; }
.rank { display: inline-flex; width: 20px; height: 20px; border-radius: 50%; background: #F2F2F2; color: var(--text2); font-size: 11px; align-items: center; justify-content: center; }
.rank.top { background: var(--orange); color: #fff; font-weight: 700; }

/* stats */
.stats { display: flex; gap: 8px; text-align: center; }
.stat { flex: 1; background: #F7F9F8; border-radius: 10px; padding: 10px 4px; }
.stat .v { font-size: 18px; font-weight: 700; }
.stat .k { font-size: 11px; color: var(--text2); margin-top: 2px; }

/* room item */
.room-item { display: flex; align-items: center; gap: 12px; padding: 14px 0; border-bottom: 1px solid var(--line); cursor: pointer; }
.room-item:last-child { border-bottom: none; }
.badge { font-size: 11px; color: #fff; border-radius: 4px; padding: 2px 7px; }
.badge.vote { background: var(--orange); } .badge.notice { background: var(--blue); }
.badge.open { background: var(--green); } .badge.closed { background: #999; }

/* avatar */
.avatar { width: 36px; height: 36px; border-radius: 8px; display: flex; align-items: center; justify-content: center; font-size: 15px; color: #fff; flex-shrink: 0; }

/* misc */
.link-box { background: #F7F9F8; border: 1px dashed var(--line); border-radius: 8px; padding: 10px; font-size: 12px; word-break: break-all; color: #555; }
.attend-bar { position: sticky; bottom: 0; background: #fff; padding: 10px 12px; box-shadow: 0 -2px 12px rgba(0,0,0,.06); display: flex; gap: 8px; }
.attend-bar .btn { padding: 11px; font-size: 14px; }
.pill { font-size: 11px; padding: 2px 8px; border-radius: 10px; }
.pill.join { background: #E8F9EF; color: var(--green); }
.pill.tentative { background: #FFF6E5; color: var(--orange); }
.pill.decline { background: #FDECEC; color: var(--red); }
.pill.pending { background: #F2F2F2; color: #999; }
.win { background: linear-gradient(135deg, #FFFAF0, #FFF3E0); border: 1px solid #FFD9A0; }
.big-emoji { font-size: 40px; text-align: center; }
.fab { position: fixed; bottom: 28px; right: max(16px, calc(50vw - 200px)); }
.fab .btn { width: 56px; height: 56px; border-radius: 50%; font-size: 12px; padding: 0; line-height: 1.3; box-shadow: 0 4px 14px rgba(7,193,96,.4); }
.toast { position: fixed; left: 50%; top: 20%; transform: translateX(-50%); background: rgba(0,0,0,.75); color: #fff; padding: 10px 20px; border-radius: 8px; font-size: 14px; z-index: 99; }
.empty { text-align: center; color: var(--text2); font-size: 13px; padding: 30px 0; }
.section-label { font-size: 12px; color: var(--text2); margin: 16px 16px 0; }

/* ==== 微信分享引导浮层 ==== */
#share-guide .sg-mask { position: fixed; inset: 0; background: rgba(0,0,0,.55); z-index: 98; }
#share-guide .sg-card { position: fixed; left: 50%; top: 50%; transform: translate(-50%,-50%); z-index: 99;
  width: min(86vw, 340px); background: #fff; border-radius: 16px; padding: 22px 20px 18px; box-sizing: border-box;
  box-shadow: 0 8px 30px rgba(0,0,0,.18); }
#share-guide .sg-card h3 { margin: 0 0 14px; font-size: 17px; }
#share-guide .sg-step { font-size: 14.5px; line-height: 1.9; color: #333; }
#share-guide .sg-dot { display: inline-block; background: #F2F2F2; border-radius: 4px; padding: 0 8px; font-weight: 700; }
#share-guide .sg-openwx { margin-top: 12px; padding: 10px; font-size: 15px; }
#share-guide .sg-tip { margin-top: 12px; font-size: 12px; color: #999; line-height: 1.7; }
#share-guide .sg-mini-tip { border-top: 1px dashed #eee; padding-top: 10px; }
#share-guide .sg-close { position: absolute; right: 12px; top: 10px; border: none; background: none;
  font-size: 16px; color: #bbb; cursor: pointer; padding: 4px; }

/* ==== 全屏「选附近餐厅」页 ==== */
#rpick .rp-mask { position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 98; }
#rpick .rp-sheet { position: fixed; left: 0; right: 0; bottom: 0; top: 0; z-index: 99;
  background: #F6F6F6; display: flex; flex-direction: column; }
@media (min-width: 560px) {
  #rpick .rp-mask { background: rgba(0,0,0,.5); }
  #rpick .rp-sheet { left: 50%; top: 50%; right: auto; bottom: auto; transform: translate(-50%,-50%);
    width: min(94vw, 460px); height: min(88vh, 760px); border-radius: 18px; overflow: hidden;
    box-shadow: 0 12px 40px rgba(0,0,0,.25); }
}
#rpick .rp-bar { display: flex; align-items: center; justify-content: space-between;
  background: #FFB300; color: #fff; padding: 12px 14px; font-size: 16px; font-weight: 600; }
#rpick .rp-x { cursor: pointer; font-size: 16px; padding: 2px 6px; }
#rpick .rp-loc { display: flex; align-items: center; gap: 8px; background: #FFF8E6;
  border-bottom: 1px solid #FFE49A; padding: 10px 14px; }
#rpick .rp-pin { font-size: 15px; }
#rpick .rp-loctxt { flex: 1; min-width: 0; font-size: 13px; color: #7A5200; font-weight: 600;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#rpick .rp-search { display: flex; gap: 8px; padding: 12px 14px 8px; background: #fff; }
#rpick .rp-search input { flex: 1; min-width: 0; background: #F5F5F5; border: none; border-radius: 10px;
  padding: 10px 12px; font-size: 14px; color: #222; }
#rpick .rp-filters { padding: 6px 14px 10px; background: #fff; border-bottom: 1px solid #EFEFEF; }
#rpick .rp-filters .chip { padding: 5px 11px; font-size: 12px; }
#rpick .rp-count { padding: 10px 16px 4px; font-size: 12px; color: #888; }
#rpick .rp-count b { color: #FF8C00; font-size: 14px; }
#rpick .rp-list { flex: 1; overflow-y: auto; padding: 0 14px; }
#rpick .rp-empty { padding: 40px 16px; text-align: center; color: #999; font-size: 13px; line-height: 1.8; }
#rpick .rp-item { display: flex; align-items: center; gap: 10px; background: #fff; border-radius: 12px;
  padding: 12px 12px; margin: 8px 0; cursor: pointer; box-shadow: 0 1px 5px rgba(0,0,0,.04); }
#rpick .rp-item:active { background: #FAFAFA; }
#rpick .rp-item-main { flex: 1; min-width: 0; }
#rpick .rp-item b { display: block; font-size: 15px; color: #222;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#rpick .rp-tags { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 6px; }
#rpick .rp-tags i { font-style: normal; font-size: 11px; color: #777; background: #F5F5F5;
  border-radius: 5px; padding: 2px 7px; }
#rpick .rp-tags i:first-child { color: #B26A00; background: #FFF3D1; font-weight: 600; }
#rpick .rp-addr { display: block; font-size: 11px; color: #AAA; margin-top: 5px;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
#rpick .rp-pick { flex: 0 0 auto; background: #FFB300; color: #fff; font-size: 13px; font-weight: 600;
  border-radius: 999px; padding: 7px 14px; }
#rpick .rp-foot { padding: 6px 14px 14px; }
#rpick .rp-foot .btn { width: 100%; }
#rpick .rp-end { text-align: center; color: #C4C4C4; font-size: 12px; padding: 8px 0 4px; }
#rpick .rp-loc .btn.mini { flex: 0 0 auto; padding: 6px 12px; font-size: 12px; }

/* ==== 发起页：定位状态卡 ==== */
.loc-card { background: #F7F7F7; border: 1px solid #EDEDED; border-radius: 12px; padding: 11px 13px; }
.loc-card.ok { background: #F0FAF2; border-color: #BFE9C9; }
.loc-card.warn { background: #FFF8E6; border-color: #FFE49A; }
.loc-head { display: flex; align-items: center; gap: 6px; }
.loc-pin { font-size: 14px; }
.loc-title { font-size: 14px; font-weight: 700; color: #555; }
.loc-card.ok .loc-title { color: #1F8A47; }
.loc-card.warn .loc-title { color: #B26A00; }
.loc-body { font-size: 14px; color: #333; margin-top: 6px; word-break: break-all; }
.loc-btns { display: flex; gap: 10px; margin-top: 10px; }
.loc-btns .btn.mini { flex: 1; }
.loc-btns .btn.mini.ghost { flex: 0 0 auto; }
.loc-tip { font-size: 12px; color: #999; margin-top: 8px; line-height: 1.6; }

/* ==== 发起页：已选餐厅卡 ==== */
.rest-card { background: #FFF8E6; border: 1px solid #FFE49A; border-radius: 12px; padding: 12px 13px; }
.rest-name { font-size: 15px; font-weight: 700; color: #7A5200;
  overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.rest-meta { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 7px; }
.rest-tag { font-size: 11px; color: #A8834A; background: #FFF3D1; border-radius: 5px; padding: 2px 8px; }
.rest-addr { font-size: 12px; color: #A8834A; margin-top: 6px; line-height: 1.5; }

/* 页脚备案信息 */
.site-foot {
  text-align: center;
  font-size: 12px;
  line-height: 2;
  color: #aaa;
  padding: 20px 16px 32px;
}
.site-foot a {
  color: #aaa;
  text-decoration: none;
}
.site-foot a:active { opacity: 0.65; }
.site-foot .sep { margin: 0 6px; color: #ccc; }
.site-foot .ga-icon { vertical-align: -2px; margin-right: 3px; }

/* ================= 布局留白与整体美化 ================= */
.page-pad { padding: 0 5px; }
.section-label { margin: 18px 22px 6px; letter-spacing: .3px; }
.card { box-shadow: 0 1px 3px rgba(0,0,0,.035); }
.room-item { padding: 15px 0; }
.ri-date { font-size: 12px; color: #FA9D3B; font-weight: 600; margin-top: 7px; }
.search-card { padding: 10px 12px; }
.search-card .url-input { background: #F7F8FA; }

/* 首页统计 */
.hstat { display: flex; gap: 8px; }
.hstat .hs { flex: 1; background: #F7F8FA; border-radius: 10px; padding: 9px 2px; text-align: center; }
.hstat .hs b { display: block; font-size: 16px; }
.hstat .hs span { font-size: 11px; color: #999; }

/* 口味画像 */
.pf { margin-bottom: 11px; }
.pf-top { display: flex; justify-content: space-between; font-size: 13px; margin-bottom: 5px; }
.pf-bar { height: 8px; background: #F1F1F1; border-radius: 4px; overflow: hidden; }
.pf-fill { height: 100%; background: linear-gradient(90deg, #FFD98A, #FA9D3B); border-radius: 4px; transition: width .4s; }
.pf-meta { font-size: 12px; color: #999; margin-top: 10px; line-height: 1.8; }

/* 饭局详情 hero（突出当前状态与关键信息） */
.hero { border: 1px solid var(--line); }
.hero-joined { border-color: #BFEBD2; background: linear-gradient(135deg, #F5FFFA, #EAFBF1); }
.hero-top { display: flex; align-items: center; gap: 10px; }
.hero-state { font-size: 12px; font-weight: 700; padding: 4px 11px; border-radius: 999px; background: #F2F2F2; color: #666; }
.hero-state.join { background: var(--green); color: #fff; }
.hero-state.tentative { background: var(--orange); color: #fff; }
.hero-state.decline { background: var(--red); color: #fff; }
.hero-title { font-size: 17px; font-weight: 700; }
.hero-meta { display: flex; gap: 8px; margin-top: 12px; }
.hero-meta .hm { flex: 1; text-align: center; background: rgba(255,255,255,.75); border-radius: 10px; padding: 9px 2px; }
.hero-meta .hm b { display: block; font-size: 15px; }
.hero-meta .hm span { font-size: 11px; color: #999; }
.hero-cta { margin-top: 11px; font-size: 12px; color: var(--green-dark); background: #E8F9EF; border-radius: 8px; padding: 8px 10px; line-height: 1.6; }
.hero.flash { animation: heroFlash 1.4s ease; }
@keyframes heroFlash {
  0% { box-shadow: 0 0 0 0 rgba(7,193,96,.55); }
  100% { box-shadow: 0 0 0 16px rgba(7,193,96,0); }
}

/* 加入成功反馈卡 */
.jok-mask { position: fixed; inset: 0; background: rgba(0,0,0,.45); display: flex; align-items: center; justify-content: center; z-index: 999; padding: 20px; }
.jok-card { width: 100%; max-width: 340px; background: #fff; border-radius: 18px; padding: 22px 18px 18px; text-align: center; animation: jokPop .28s ease; }
@keyframes jokPop { from { transform: scale(.92); opacity: .5; } to { transform: scale(1); opacity: 1; } }
.jok-emoji { font-size: 40px; line-height: 1; }
.jok-title { font-size: 17px; font-weight: 700; margin-top: 8px; }
.jok-sub { font-size: 12px; color: #999; margin-top: 4px; }
.jok-rows { background: #F8F9FB; border-radius: 12px; padding: 10px 12px; margin: 14px 0 10px; text-align: left; }
.jok-row { display: flex; justify-content: space-between; font-size: 13px; padding: 5px 0; }
.jok-row span { color: #999; }
.jok-tip { font-size: 12px; color: var(--green-dark); margin-bottom: 12px; }

/* 候选餐厅：交互与票型可视化 */
.rest { transition: box-shadow .2s, opacity .2s, border-color .2s; }
.rest-mine-like { border-color: #BFEBD2; background: #FBFFFC; }
.rest-mine-ok { border-color: #FFE0B2; }
.rest-mine-reject { opacity: .6; }
.my-mark { font-size: 11px; padding: 2px 8px; border-radius: 10px; margin-left: 6px; white-space: nowrap; }
.my-mark.like { background: #E8F9EF; color: var(--green-dark); }
.my-mark.ok { background: #FFF6E5; color: #D98600; }
.my-mark.reject { background: #FDECEC; color: var(--red); }
.fav-btn, .rm-btn { font-size: 12px; color: #999; padding: 3px 9px; border-radius: 8px; background: #F5F5F5; cursor: pointer; white-space: nowrap; }
.fav-btn:active { background: #EAF7EF; color: var(--green-dark); }
.tally-bar { display: flex; height: 6px; border-radius: 3px; overflow: hidden; background: #F1F1F1; margin-top: 10px; }
.tally-bar .tb { height: 100%; transition: width .35s ease; }
.tb-like { background: var(--green); } .tb-ok { background: #FFC53D; } .tb-reject { background: var(--red); }
.tally-num { font-size: 11px; color: #999; margin-top: 6px; display: flex; justify-content: space-between; }
.tally-num .score { font-weight: 700; color: var(--orange); }
.vbtn { transition: background .18s, color .18s, transform .12s; }
.vbtn:active { transform: scale(.97); }
.vbtn.on-like { background: var(--green); color: #fff; border-color: var(--green); }
.vbtn.on-ok { background: #FFC53D; color: #fff; border-color: #FFC53D; }
.vbtn.on-reject { background: var(--red); color: #fff; border-color: var(--red); }

/* 结果页 dashboard */
.win-badge { display: inline-block; font-size: 12px; font-weight: 700; color: #B26A00; background: #FFE9BF; border-radius: 999px; padding: 3px 11px; }
.win-name { font-size: 22px; font-weight: 800; margin: 10px 0 4px; text-align: center; }
.win-meta { font-size: 12px; color: #8A6A2F; text-align: center; line-height: 1.7; }
.win-drive { font-size: 13px; color: var(--green-dark); text-align: center; margin-top: 8px; font-weight: 600; }
.win-rule { font-size: 12px; color: #999; text-align: center; margin-top: 8px; }
.win-cta { display: flex; gap: 8px; justify-content: center; margin-top: 12px; }
.ab { margin-top: 11px; }
.ab-top { display: flex; justify-content: space-between; font-size: 12px; margin-bottom: 4px; }
.ab-bar { height: 8px; background: #F1F1F1; border-radius: 4px; overflow: hidden; }
.ab-fill { height: 100%; border-radius: 4px; transition: width .45s ease; }
.ab-fill.g { background: var(--green); } .ab-fill.o { background: #FFC53D; } .ab-fill.r { background: var(--red); }
.bk { padding: 11px 0; border-bottom: 1px dashed var(--line); }
.bk:last-child { border-bottom: none; }
.bk-top { display: flex; align-items: center; gap: 8px; font-size: 14px; }
.bk-score { margin-left: auto; font-weight: 700; font-size: 13px; }
.bk-score.pos { color: var(--green-dark); } .bk-score.neg { color: var(--red); }
.bk-bar { height: 8px; background: #F3F3F3; border-radius: 4px; overflow: hidden; margin: 7px 0 5px; }
.bk-fill { height: 100%; background: linear-gradient(90deg, #8FE3B4, var(--green)); border-radius: 4px; transition: width .45s; }
.bk-fill.neg { background: linear-gradient(90deg, #F7B4B4, var(--red)); }
.bk-win .bk-top b::after { content: " 🏆"; }

/* 我的收藏 */
.fav-item { display: flex; align-items: center; gap: 10px; background: #fff; border-radius: 12px; padding: 14px; margin-bottom: 10px; box-shadow: 0 1px 3px rgba(0,0,0,.035); }
.fav-name { font-weight: 600; font-size: 15px; }
.fav-ops { display: flex; flex-direction: column; gap: 6px; }

/* ===== 发起页：顶部引导 ===== */
.guide-card { background: #FFF8E6; border: 1px solid #FFE49A; }
.guide-t { font-size: 14px; font-weight: 700; color: #7A5200; }
.guide-s { font-size: 12px; color: #A8834A; margin-top: 5px; line-height: 1.65; }
.guide-s b { color: #7A5200; }

/* ===== 发起页：偏好筛选摘要 + 抽屉 ===== */
.pref-sum { display: flex; flex-wrap: wrap; gap: 6px; margin-top: 10px; }
.pref-sum .pf-k { font-size: 12px; color: #999; align-self: center; }
.pref-sum .pf-c { font-size: 12px; color: #7A5200; background: #FFF3D1; border-radius: 6px; padding: 3px 9px; }
#c_prefwrap { display: none; }
#c_prefwrap.on { display: block; }
.pf-mask { position: fixed; inset: 0; background: rgba(0,0,0,.45); z-index: 98; }
.pf-sheet { position: fixed; left: 0; right: 0; bottom: 0; top: 0; z-index: 99; background: #fff;
  display: flex; flex-direction: column; animation: pfUp .22s ease; }
@keyframes pfUp { from { transform: translateY(14px); opacity: .6; } to { transform: none; opacity: 1; } }
@media (min-width: 560px) {
  .pf-sheet { left: 50%; top: 50%; right: auto; bottom: auto; transform: translate(-50%,-50%);
    width: 92%; max-width: 430px; max-height: 86vh; border-radius: 16px; animation: none; }
}
.pf-bar { display: flex; align-items: center; justify-content: space-between; padding: 14px 16px 12px;
  border-bottom: 1px solid #EFEFEF; font-size: 16px; flex: 0 0 auto; }
.pf-x { cursor: pointer; font-size: 16px; padding: 2px 8px; color: #999; }
.pf-body { flex: 1; overflow-y: auto; padding: 14px 16px 6px; -webkit-overflow-scrolling: touch; }
.pf-body .field { margin-bottom: 14px; }
.pf-body .field label { font-size: 13px; color: #666; display: block; margin-bottom: 8px; }
.pf-body input[type=text] { width: 100%; padding: 11px 13px; border: 1px solid #E6E6E6; border-radius: 10px;
  font-size: 14px; background: #F7F7F7; outline: none; box-sizing: border-box; }
.pf-body input[type=text]:focus { border-color: #FFB300; background: #fff; }
.pf-foot { display: flex; gap: 10px; padding: 10px 16px 16px; border-top: 1px solid #EFEFEF; flex: 0 0 auto; }
.pf-foot .btn { flex: 1; }
.pf-sheet.as-top, .pf-mask.as-top { z-index: 130; }

/* ===== 常用地址（公司/家）卡片 ===== */
.preset-list { display: flex; flex-direction: column; gap: 8px; }
.preset-item {
  display: flex; align-items: center; gap: 10px;
  border: 1px solid #E6E6E6; border-radius: 12px;
  padding: 10px 12px; cursor: pointer; background: #FAFAFA;
  transition: border-color .15s, background .15s;
}
.preset-item:active { background: #FFF3D1; }
.preset-item.on { border-color: #FFB300; background: #FFF8E6; }
.preset-item.on .pi-name { color: #B37400; }
.preset-item.empty { border-style: dashed; }
.pi-emoji { font-size: 20px; flex: 0 0 auto; }
.pi-main { flex: 1; min-width: 0; }
.pi-name { font-size: 14px; font-weight: 600; color: #333; }
.pi-addr { font-size: 12px; color: #999; margin-top: 2px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.preset-item.empty .pi-addr { color: #C9A24A; }
.pi-edit {
  flex: 0 0 auto; border: none; background: #F0F0F0; border-radius: 8px;
  font-size: 13px; padding: 6px 9px; cursor: pointer; color: #666;
}
.pi-add { flex: 0 0 auto; font-size: 18px; color: #C9A24A; font-weight: 700; }
