/* ============ 房直连 · 移动端 H5 样式 ============ */
:root{
  --brand:#00b7a3; --brand-d:#009c8b; --brand-l:#e6f7f4;
  --orange:#ff7d2e; --orange-l:#fff3e9;
  --danger:#f5433c; --danger-l:#fdeeee;
  --warn:#e6a23c; --warn-l:#fdf3e3;
  --blue:#3b82f6; --blue-l:#eaf1ff;
  --tx:#1d2129; --tx2:#6b7180; --tx3:#9aa0ad;
  --line:#ececf0; --bg:#f4f5f7; --card:#fff;
  --r:14px; --shadow:0 2px 10px rgba(20,40,60,.05);
}
*{margin:0;padding:0;box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{height:100%}
body{font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;background:#e8e9ed;color:var(--tx);font-size:15px}
a{color:inherit;text-decoration:none}
button{font-family:inherit;border:none;background:none;cursor:pointer}
input,select,textarea{font-family:inherit;font-size:15px;color:var(--tx);outline:none;border:none;background:transparent}
img{display:block}
.hidden{display:none!important}
.svg{vertical-align:-4px}

.stage{min-height:100vh;min-height:100dvh;display:flex;justify-content:center;background:linear-gradient(160deg,#dfe9ea,#cfe3e6)}
.phone{position:relative;width:100%;max-width:430px;min-height:100vh;min-height:100dvh;background:var(--bg);box-shadow:0 0 40px rgba(0,0,0,.12)}
.view{min-height:100vh;min-height:100dvh;padding-bottom:calc(64px + env(safe-area-inset-bottom,0px))}
.view.no-tab{padding-bottom:0}
.boot{text-align:center;padding:120px 0;color:var(--tx3);font-size:14px}

/* ---------- 顶栏 ---------- */
.topbar{position:sticky;top:0;z-index:20;height:60px;display:flex;align-items:center;gap:6px;padding:0 14px;background:rgba(255,255,255,.96);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.topbar .tb-back{width:34px;height:34px;display:flex;align-items:center;justify-content:center;color:var(--tx);border-radius:50%;margin-left:-8px}
.topbar .tb-back:active{background:#f0f1f3}
.topbar .tb-title{flex:1;font-size:17px;font-weight:600;overflow:hidden;white-space:nowrap;text-overflow:ellipsis;text-align:center;margin-right:26px}
.topbar .tb-action{color:var(--brand);font-size:14px;padding:6px 2px}
.topbar.ghost{background:transparent;border:none}
/* 聊天页标题：小头像 + 昵称。仅加在聊天页标题上，避免改变其他页面标题的纯文本省略行为 */
.topbar .tb-title.chat-title{display:flex;align-items:center;justify-content:center;gap:7px}
.topbar .tb-title.chat-title .tb-face{width:26px;height:26px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;color:#fff;font-size:12px;font-weight:700;overflow:hidden}
.topbar .tb-title.chat-title .tb-face img{width:100%;height:100%;object-fit:cover;display:block}
.topbar .tb-title.chat-title .tb-name{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}

/* ---------- 底部标签栏 ---------- */
/* 底部安全区处理：总高 = 58px + 安全区，内容区恒定 58px 不被压缩（防止带 Home 条的 iPhone 上图标文字被挤变形） */
.tabbar{position:fixed;bottom:0;left:0;right:0;margin:0 auto;width:100%;max-width:430px;height:58px;height:calc(58px + env(safe-area-inset-bottom,0px));padding-bottom:0;padding-bottom:env(safe-area-inset-bottom,0px);display:flex;background:#fff;border-top:1px solid var(--line);z-index:30}
.tab-item{flex:1;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;color:var(--tx3);position:relative;min-width:0}
.tab-item.on{color:var(--brand)}
.tab-item .tab-txt{font-size:11px;line-height:1}
.tab-ico{height:22px;display:flex;align-items:center}
.tab-add{position:relative}
.tab-add .tab-txt{display:none}
/* 中间“发布”：居中、凸起的圆形悬浮按钮，按钮内直接显示“发布”二字 */
.add-btn{width:52px;height:52px;border-radius:50%;background:linear-gradient(135deg,var(--brand),#21c3ab);color:#fff!important;display:flex;align-items:center;justify-content:center;position:relative;margin-top:-14px;border:3px solid #fff;box-shadow:0 5px 14px rgba(0,183,163,.38),0 2px 6px rgba(0,0,0,.12)}
.add-btn::before{content:'发布';font-size:16px;font-weight:700;letter-spacing:1px;line-height:1;color:#fff}
.add-btn:active{transform:scale(.94)}
.tab-badge{position:absolute;top:6px;left:calc(50% + 6px);min-width:17px;height:17px;padding:0 4px;border-radius:9px;background:var(--danger);color:#fff;font-size:10px;font-style:normal;display:flex;align-items:center;justify-content:center;border:2px solid #fff}

/* ---------- 通用组件 ---------- */
.btn{display:inline-flex;align-items:center;justify-content:center;height:44px;padding:0 18px;border-radius:22px;font-size:15px;font-weight:600;transition:.15s;user-select:none;white-space:nowrap}
.btn:active{opacity:.82;transform:scale(.98)}
.btn.primary{background:linear-gradient(135deg,var(--brand),#21c3ab);color:#fff;box-shadow:0 4px 12px rgba(0,183,163,.28)}
.btn.orange{background:linear-gradient(135deg,#ff9547,#ff7d2e);color:#fff;box-shadow:0 4px 12px rgba(255,125,46,.28)}
.btn.danger{background:var(--danger-l);color:var(--danger)}
.btn.plain{background:#f2f3f5;color:var(--tx2)}
.btn.outline{background:#fff;color:var(--brand);border:1px solid var(--brand)}
.btn.block{width:100%}
.btn.mini{height:32px;padding:0 14px;font-size:13px;border-radius:16px;font-weight:500}
.btn.sm{height:38px;padding:0 15px;font-size:13px;border-radius:19px}
.btn:disabled{opacity:.5}

.card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);padding:14px}
.tag{display:inline-flex;align-items:center;gap:4px;font-size:11px;line-height:1;padding:4px 8px;border-radius:6px;white-space:nowrap}
.tag.sale{background:var(--brand-l);color:var(--brand)}
.tag.rent{background:var(--blue-l);color:var(--blue)}
.tag.shop{background:var(--orange-l);color:var(--orange)}
.tag.ver{background:var(--warn-l);color:var(--warn)}
.tag.plat{background:var(--orange-l);color:var(--orange)}
.tag.gray{background:#f2f3f5;color:var(--tx2)}

/* 透明拉伸条 */
.warn-strip{display:flex;gap:8px;align-items:flex-start;background:var(--orange-l);color:#a8601a;border-radius:10px;padding:9px 11px;font-size:12.5px;line-height:1.55;margin:0 12px 10px}
.warn-strip svg{flex:none;margin-top:2px}
.notice-strip{display:flex;gap:8px;align-items:flex-start;background:var(--blue-l);color:#2c5fb0;border-radius:10px;padding:9px 11px;font-size:12.5px;line-height:1.55}
.green-strip{background:var(--brand-l);color:#0b8a78}

/* ---------- 首页 ---------- */
.home-head{background:rgba(255,255,255,.94);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);padding:13px 14px 18px;border-radius:0 0 22px 22px;color:#fff}
.brand-row{display:flex;align-items:center;gap:10px;margin-bottom:10px}
.brand{flex:none;white-space:nowrap;font-size:17px;font-weight:800;letter-spacing:.5px;display:flex;align-items:center;gap:7px}
.brand .logo{width:27px;height:27px;border-radius:8px;background:#fff;color:var(--brand);display:flex;align-items:center;justify-content:center;font-weight:900;font-size:14px}
/* 后台上传的品牌 Logo：固定 27×27 方形容器内等比缩放（不裁剪不变形），
   contain 保证横向/方形图都能完整显示；白色底衬让透明底深色图形在绿头上依然清晰 */
.brand .logo-img{flex:none;display:block;width:27px;height:27px;border-radius:8px;object-fit:contain;background:#fff}
.city{flex:none;white-space:nowrap;font-size:13px;opacity:.92;display:flex;align-items:center;gap:3px}
.search-box{flex:1;min-width:0;display:flex;align-items:center;gap:7px;background:#fff;border-radius:20px;padding:0 5px 0 12px;height:40px;color:var(--tx3);box-shadow:0 6px 16px rgba(0,80,70,.18)}
.search-box input{flex:1;min-width:0;color:var(--tx);font-size:13.5px}
.search-box .btn.mini{flex:none;height:30px;padding:0 12px;border-radius:15px;background:linear-gradient(135deg,var(--brand),#21c3ab);color:#fff;box-shadow:none}

.filter-bar{display:flex;gap:8px;padding:12px 14px 2px;align-items:center;overflow-x:auto;scrollbar-width:none}
.filter-bar::-webkit-scrollbar{display:none}
.filter-bar select{flex:none;height:32px;background:#fff;border:1px solid var(--line);border-radius:16px;padding:0 8px;font-size:13px;color:var(--tx2)}
.chip{flex:none;height:32px;padding:0 16px;border-radius:16px;background:#fff;border:1px solid var(--line);font-size:13px;color:var(--tx2);transition:.15s}
.chip.on{background:var(--brand);color:#fff;border-color:var(--brand);font-weight:600}

.count-line{padding:10px 14px 0;color:var(--tx3);font-size:12px}
.h-list{padding:10px 12px 20px;display:flex;flex-direction:column;gap:10px}
.h-card{background:#fff;border-radius:var(--r);padding:10px;display:flex;gap:11px;box-shadow:var(--shadow)}
.h-thumb{width:112px;height:104px;border-radius:10px;position:relative;overflow:hidden;flex:none;color:#fff;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:6px}
.h-thumb .layout-txt{font-size:16px;font-weight:800;text-shadow:0 1px 3px rgba(0,0,0,.25)}
.h-thumb .area-txt{font-size:11px;opacity:.92;text-shadow:0 1px 2px rgba(0,0,0,.2)}
.h-fav{position:absolute;top:6px;right:6px;z-index:3;width:24px;height:24px;border-radius:50%;background:rgba(255,255,255,.92);color:#aab0bc;display:flex;align-items:center;justify-content:center;cursor:pointer;box-shadow:0 1px 4px rgba(0,0,0,.18);transition:transform .12s}
.h-fav:hover{transform:scale(1.08)}
.h-fav:active{transform:scale(.9)}
.h-fav svg{fill:none}
.h-fav.on{color:#f43f5e}
.h-fav.on svg{fill:currentColor}
.h-type-badge{position:absolute;left:7px;top:7px;background:rgba(0,0,0,.36);backdrop-filter:blur(4px);padding:3px 8px;border-radius:6px;font-size:11px;color:#fff}
.h-body{flex:1;min-width:0;display:flex;flex-direction:column}
.h-title{font-size:15px;font-weight:600;line-height:1.35;overflow:hidden;display:-webkit-box;-webkit-line-clamp:1;-webkit-box-orient:vertical}
.h-comm{display:flex;align-items:center;gap:5px;color:var(--tx2);font-size:12px;margin-top:5px;overflow:hidden;white-space:nowrap}
.h-tags{display:flex;gap:5px;margin-top:7px;flex-wrap:wrap}
.h-bottom{display:flex;align-items:flex-end;justify-content:space-between;margin-top:auto;padding-top:6px}
.h-price{color:var(--orange);font-weight:800;font-size:19px;line-height:1}
.h-price small{font-size:11px;font-weight:500;color:var(--tx3);margin-left:2px}
.h-price.rent{font-size:17px}
.h-meta{font-size:11px;color:var(--tx3)}
.owner-dot{color:var(--brand)}
.load-more{text-align:center;padding:4px 0 18px;color:var(--tx3);font-size:13px}
/* 房源列表 · 页码分页条（#/house） */
.pager{display:flex;align-items:center;justify-content:center;gap:6px;padding:2px 14px 16px;flex-wrap:wrap}
.pager .pg{min-width:32px;height:32px;padding:0 10px;border:1px solid var(--line);background:#fff;color:var(--tx2);font-size:13px;border-radius:16px;cursor:pointer;transition:.15s;display:inline-flex;align-items:center;justify-content:center}
.pager .pg.on{background:var(--brand);border-color:var(--brand);color:#1a1818;font-weight:600}
.pager .pg:disabled{opacity:.4;cursor:not-allowed;background:#f5f6f8}
.pager .pg:not(:disabled):active{transform:scale(.94)}
.pager .pg-dot{color:var(--tx3);padding:0 2px;font-size:13px}
.empty{padding:70px 30px;text-align:center;color:var(--tx3)}
.empty .empty-ico{opacity:.5;margin-bottom:12px}
.empty .e-btn{margin-top:16px}

/* ---------- 首页 · 金刚区 / 运营位 / 保障 / 今日精选 ---------- */
.home-head{padding-bottom:34px}
.hm-panel{margin:-20px 12px 0;background:#fff;border-radius:16px;box-shadow:0 6px 20px rgba(20,60,70,.10);position:relative;z-index:2}
.hm-nav{padding:8px 2px 4px}
.hm-nav .fun-ico{box-shadow:0 6px 14px rgba(20,40,60,.14)}
.hm-banner{position:relative;margin:2px 10px 12px;overflow:hidden;border-radius:14px}
.hm-bt{display:flex;transition:transform .35s ease;will-change:transform}
.hm-slide{flex:none;width:100%;min-height:98px;display:flex;align-items:center;justify-content:space-between;gap:10px;padding:18px 16px 30px;color:#fff;text-decoration:none}
.sl-txt{min-width:0}
.sl-txt b{display:block;font-size:17px;font-weight:800;letter-spacing:.3px;text-shadow:0 1px 6px rgba(0,0,0,.18)}
.sl-txt i{display:block;margin-top:6px;font-style:normal;font-size:12px;opacity:.95;text-shadow:0 1px 4px rgba(0,0,0,.15);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.sl-cta{flex:none;display:inline-flex;align-items:center;gap:5px;height:32px;padding:0 14px;border-radius:16px;font-size:12px;font-weight:600;background:rgba(255,255,255,.24);border:1px solid rgba(255,255,255,.5)}
.sl-cta em{display:inline-flex;align-items:center}
.hm-dots{position:absolute;left:0;right:0;bottom:10px;display:flex;justify-content:center;gap:5px}
.hm-dot{width:6px;height:6px;border-radius:3px;background:rgba(255,255,255,.6);transition:.2s;cursor:pointer}
.hm-dot.on{width:14px;background:#fff}

/* #/house 精简列表页：头部仅单行（品牌/搜索/城市），自身高度 10+40+5=55（与详情大图头各自独立） */
.page-hlist .home-head{padding:10px 14px 5px}
.page-hlist .brand-row{margin-bottom:0}
.page-hlist .pick-sec{margin-top:8px}

/* #/home 首页：同 #/house 单行头，自身高度 10+40+5=55（与详情大图头各自独立） */
.page-home .home-head{padding:10px 14px 5px}
.page-home .brand-row{margin-bottom:0}

/* —— 首页 / 房源 公用头部：滚动吸顶渐变。
   头部底色本身就是「毛玻璃白」（见上方 .home-head 规则），未滚动时由 ::after 铺满品牌绿渐变把它盖住；
   向下滚动时绿渐变淡出、圆角收平并加上投影，头部就平滑地渐变成「固定在顶端、下方内容模糊透出」的毛玻璃白条；
   回到顶部自动还原成绿底大标题。.stuck 由 PageHome.bindHeadAffix 按滚动位置切换。 —— */
.home-head{position:sticky;top:0;transition:padding .28s ease,border-radius .28s ease,box-shadow .28s ease,color .28s ease}
.home-head::after{content:'';position:absolute;inset:0;border-radius:inherit;background:linear-gradient(160deg,var(--brand) 0%,#2ec7b1 70%,#6fd8c8 100%);transition:opacity .28s ease;pointer-events:none}
.home-head .brand-row{position:relative;z-index:1}
.home-head.stuck{padding:7px 14px;border-radius:0;color:var(--tx);box-shadow:0 4px 16px rgba(20,60,70,.12);z-index:30}
.home-head.stuck::after{opacity:0}
.home-head.stuck .brand .logo{background:var(--brand);color:#fff}
.home-head.stuck .brand .logo-img{box-shadow:0 0 0 1px rgba(15,23,42,.1)}
.home-head.stuck .search-box{background:#f2f4f6;box-shadow:none;border:1px solid var(--line)}
.home-head.stuck .city.pick{background:rgba(15,23,42,.06)}
.home-head.stuck .city .chev{border-top-color:var(--tx3)}

/* 服务保障卡带 */
.hm-trust{display:flex;margin:10px 12px 0;background:#fff;border-radius:16px;box-shadow:var(--shadow);overflow:hidden}
.trust-cell{flex:1;text-align:center;padding:12px 4px 13px}
.trust-cell + .trust-cell{border-left:1px solid var(--line)}
.trust-ic{width:30px;height:30px;border-radius:10px;margin:0 auto 6px;display:flex;align-items:center;justify-content:center}
.trust-ic.t1{background:var(--brand-l);color:var(--brand)}
.trust-ic.t2{background:var(--orange-l);color:var(--orange)}
.trust-ic.t3{background:var(--blue-l);color:var(--blue)}
.trust-t{font-size:12.5px;font-weight:600;color:var(--tx)}
.trust-s{font-size:10.5px;color:var(--tx3);margin-top:3px}

/* 今日精选横滑 */
.pick-sec{margin:12px 12px 0;background:#fff;border-radius:16px;box-shadow:var(--shadow);padding:13px 0 4px}
.sec-hd{display:flex;align-items:center;justify-content:space-between;padding:0 14px}
.sec-t{font-size:16px;font-weight:800;display:flex;align-items:baseline;gap:8px}
.sec-t i{font-size:11px;font-weight:400;color:var(--tx3);font-style:normal}
.sec-more{font-size:12px;color:var(--tx3);display:inline-flex;align-items:center;gap:2px}
.pick-rail{display:flex;gap:10px;overflow-x:auto;padding:11px 10px 10px;scrollbar-width:none;-ms-overflow-style:none}
.pick-rail::-webkit-scrollbar{display:none}
.pick-card{flex:none;width:168px;overflow:hidden}
.pick-media{position:relative;height:100px;border-radius:12px;overflow:hidden;background:#eef1f3}
.pick-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}
.pick-ph{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:6px;color:#fff}
.pick-ph .layout-txt{font-size:17px;font-weight:800;text-shadow:0 1px 3px rgba(0,0,0,.25)}
.pick-ph .area-txt{font-size:11px;opacity:.92;text-shadow:0 1px 2px rgba(0,0,0,.2)}
.pick-badge{position:absolute;left:7px;top:7px;background:rgba(0,0,0,.38);backdrop-filter:blur(4px);padding:3px 8px;border-radius:6px;font-size:11px;color:#fff;line-height:1}
.pick-body{padding:8px 2px 2px}
.pick-tt{font-size:13.5px;font-weight:600;line-height:1.4;height:38px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.pick-comm{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--tx3);margin-top:4px;white-space:nowrap;overflow:hidden}
.pick-comm svg{flex:none}
.pick-bt{display:flex;align-items:baseline;justify-content:space-between;margin-top:6px}
.pick-price{color:var(--orange);font-weight:800;font-size:15px;line-height:1}
.pick-bt em{font-style:normal;font-size:10px;color:var(--tx3)}

/* 为你推荐 · 类型页签 + 折叠筛选 */
.home-wip{display:flex;flex-direction:column;align-items:center;text-align:center;padding:66px 42px 40px;color:var(--tx3)}
.home-wip .wip-ico{width:92px;height:92px;border-radius:50%;background:var(--brand-l);color:var(--brand);display:flex;align-items:center;justify-content:center;margin-bottom:22px;box-shadow:0 0 0 6px #fff,var(--shadow)}
.home-wip .wip-t{font-size:17px;font-weight:800;letter-spacing:2px;color:var(--tx);margin-bottom:10px}
.home-wip .wip-s{font-size:13px;line-height:2;color:var(--tx3)}
.feed-area{margin-top:6px}
.feed-tt{margin:16px 14px 0;font-size:17px;font-weight:800;letter-spacing:.5px}
.feed-tools{display:flex;align-items:center;gap:10px;margin:10px 14px 0}
.type-tabs{flex:1;display:flex;gap:2px;background:#e9edf1;border-radius:19px;padding:3px}
.tab-pill{flex:1;height:29px;border-radius:16px;font-size:13px;color:var(--tx2);display:flex;align-items:center;justify-content:center;transition:.15s;white-space:nowrap}
.tab-pill.on{background:#fff;color:var(--brand);font-weight:700;box-shadow:0 1px 5px rgba(15,30,50,.09)}
.fbtn{flex:none;display:inline-flex;align-items:center;justify-content:center;height:35px;padding:0 15px;border-radius:18px;font-size:13px;background:#fff;border:1px solid var(--line);color:var(--tx2);transition:.15s}
.fbtn:active{opacity:.8}
.fbtn.on{color:var(--brand);border-color:var(--brand);background:var(--brand-l);font-weight:600}
.fbtn i{width:6px;height:6px;border-radius:50%;background:var(--orange);display:none;margin-left:5px}

/* ---------- 房源详情 ---------- */
.hd-hero{position:relative;height:280px;color:#fff;overflow:hidden;background:linear-gradient(160deg,var(--brand),#2ec7b1 70%,#6fd8c8)}
.hd-hero .thumb-txt{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;gap:10px;text-shadow:0 2px 8px rgba(0,0,0,.25);white-space:nowrap}
.hd-hero .tt-layout{font-size:19px;font-weight:800}
.hd-hero .tt-comm{font-size:13.5px;opacity:.92}
.hd-hero img{width:100%;height:100%;object-fit:cover}
.hd-back{position:absolute;top:10px;left:10px;z-index:3;width:34px;height:34px;border-radius:50%;background:rgba(0,0,0,.3);color:#fff;display:flex;align-items:center;justify-content:center}
.hd-close{position:absolute;top:10px;right:10px;z-index:3;width:34px;height:34px;border-radius:50%;background:rgba(0,0,0,.3);color:#fff;display:flex;align-items:center;justify-content:center;font-size:18px}
.hd-head{padding:14px;background:#fff;border-radius:0 0 14px 14px}
.hd-top{display:flex;align-items:center;gap:6px;margin-bottom:8px;flex-wrap:wrap}
.hd-title{font-size:19px;font-weight:700;line-height:1.4}
.hd-price-row{display:flex;align-items:flex-end;gap:10px;margin-top:6px;flex-wrap:wrap}
.hd-price{color:var(--orange);font-size:26px;font-weight:800;line-height:1}
.hd-price .unit{font-size:13px;font-weight:500}
.hd-subprice{font-size:12px;color:var(--tx3);margin-bottom:3px}
.hd-tags{display:flex;gap:6px;margin-top:10px;flex-wrap:wrap}
.hd-line{display:flex;align-items:center;gap:4px;font-size:12px;color:var(--tx3);margin-top:10px}
.hd-strip{margin:10px 12px 0}
/* 详情页多图图集 */
.hd-gallery{position:absolute;inset:0;display:flex;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;-ms-overflow-style:none}
.hd-gallery::-webkit-scrollbar{display:none}
.hd-g-item{flex:none;width:100%;height:100%;scroll-snap-align:start;background:rgba(0,0,0,.05)}
.hd-g-item img{width:100%;height:100%;object-fit:cover;display:block}
.hd-dots{position:absolute;bottom:10px;left:50%;transform:translateX(-50%);display:flex;gap:5px;z-index:3}
.hd-dot{width:6px;height:6px;border-radius:3px;background:rgba(255,255,255,.55);transition:.2s;cursor:pointer}
.hd-dot.on{width:14px;background:#fff}
.hd-count{position:absolute;right:10px;bottom:10px;z-index:3;background:rgba(0,0,0,.45);color:#fff;font-size:11px;line-height:1;padding:5px 8px;border-radius:10px}
/* 实拍视频 */
.video-block{padding:12px 12px 0}
.vb-title{display:flex;align-items:center;gap:6px;font-size:13px;font-weight:700;margin-bottom:8px;color:var(--tx)}
.vb-tri{font-style:normal;color:#fff;background:var(--brand);width:20px;height:20px;border-radius:50%;display:inline-flex;align-items:center;justify-content:center;font-size:9px}
.video-block video{width:100%;max-height:340px;border-radius:12px;background:#000;display:block;box-shadow:var(--shadow)}
/* 列表卡片封面：有图时覆盖渐变占位 */
.h-thumb img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}

.info-block{margin:10px 12px 0;background:#fff;border-radius:var(--r);padding:14px;box-shadow:var(--shadow)}
.block-title{font-size:15px;font-weight:700;margin-bottom:12px;display:flex;align-items:center;gap:6px}
.block-title::before{content:"";width:3px;height:15px;border-radius:2px;background:var(--brand)}
.grid-2{display:grid;grid-template-columns:1fr 1fr;gap:12px 16px}
.f-cell .fc-k{font-size:12px;color:var(--tx3);margin-bottom:3px}
.f-cell .fc-v{font-size:14px;font-weight:600}
.desc-text{font-size:14px;line-height:1.8;color:#3a3f49;white-space:pre-wrap;word-break:break-word}

.owner-card{display:flex;align-items:center;gap:12px}
.avatar{width:46px;height:46px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:18px}
.owner-info{flex:1;min-width:0}
.owner-name{display:flex;align-items:center;gap:6px;font-size:15px;font-weight:600}
.owner-sub{font-size:12px;color:var(--tx2);margin-top:4px;display:flex;align-items:center;gap:4px}
.owner-phone{margin-top:7px;font-size:15px;font-weight:700;letter-spacing:1px;color:var(--tx)}
.owner-phone .ph{color:var(--tx);letter-spacing:2px}
.unlock-btn-area{margin-top:11px;display:flex;gap:10px}
.protect-card{margin-top:11px;background:var(--brand-l);border-radius:10px;padding:9px 11px;font-size:12.5px;color:#0b7a6c;display:flex;gap:8px;align-items:flex-start;line-height:1.5}
.risk-foot{padding:16px 14px 30px;font-size:11.5px;color:var(--tx3);line-height:1.8;text-align:center}
/* 平台声明与风险提示（服务端下发固定文案，详情/成交保障等处展示） */
.risk-plate{margin:6px 14px 4px;border:1px solid #f0d0c4;background:#fff8f5;border-radius:12px;padding:10px 12px}
.risk-plate-tt{font-size:12.5px;font-weight:700;color:#c0474d;display:flex;align-items:center;gap:6px;margin-bottom:7px}
.risk-plate-ic{width:16px;height:16px;border-radius:50%;background:#c0474d;color:#fff;font-size:11px;font-weight:700;line-height:16px;text-align:center;font-style:normal;flex:none}
.risk-plate-bd{font-size:11.5px;color:#8a5a4b;line-height:1.8;text-align:justify}
.risk-plate-note{margin-top:7px;padding-top:7px;border-top:1px dashed #e8cdc0;font-size:11px;color:#b08a7c;line-height:1.7}
/* 聊天会话安全提示 */
.chat-safe-tip{margin:6px 10px 0;padding:8px 10px;border-radius:9px;background:#fff7ed;border:1px solid #f4e2c3;color:#8a6b3f;font-size:11px;line-height:1.7}

/* 详情底部操作栏 */
.dockbar{position:fixed;bottom:0;left:0;right:0;margin:0 auto;width:100%;max-width:430px;background:rgba(255,255,255,.97);backdrop-filter:blur(8px);border-top:1px solid var(--line);padding:8px 12px calc(8px + env(safe-area-inset-bottom));display:flex;gap:10px;z-index:25}
.dockbar .btn{height:46px;border-radius:23px;flex:1}
.dockbar .btn.icon-only{flex:none;width:46px;padding:0;border-radius:50%;background:var(--brand-l);color:var(--brand);font-size:0}
.dockbar .btn.fav{flex:none;width:auto;padding:0 14px;color:var(--tx2)}
.dockbar .btn.fav.on{color:#f43f5e;border-color:#f43f5e;background:#fff5f6}
.view{padding-bottom:calc(84px + env(safe-area-inset-bottom,0px))}

/* ---------- 聊天 ---------- */
.conv-list{padding:10px 12px;display:flex;flex-direction:column;gap:9px}
.conv-card{background:#fff;border-radius:13px;padding:11px 12px;display:flex;gap:10px;box-shadow:var(--shadow)}
.conv-ava{width:42px;height:42px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;color:#fff;font-weight:700;font-size:16px;overflow:hidden}
.conv-ava img{width:100%;height:100%;object-fit:cover;display:block}
.conv-main{flex:1;min-width:0}
.conv-top{display:flex;align-items:center;justify-content:space-between;gap:6px}
.conv-other{font-size:15px;font-weight:600;flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.conv-time{font-size:11px;color:var(--tx3);flex:none}
.conv-house{display:flex;align-items:center;gap:5px;color:var(--tx2);font-size:11px;margin-top:3px;overflow:hidden;white-space:nowrap}
.conv-last{font-size:12.5px;color:var(--tx3);margin-top:5px;display:flex;align-items:center;gap:6px;min-width:0}
.conv-last .cl-txt{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
/* 会话卡片：不渲染消息正文，卡片底部不再有消息预览区（未读角标随头部时间右侧展示） */
/* 会话卡片房源行：标题可压缩 + 右侧价格 */
.conv-house .ch-txt{flex:1;min-width:0;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.conv-house .ch-price{flex:none;font-size:11.5px;font-weight:700;color:var(--tx);margin-left:2px}
.conv-unread{flex:none;min-width:18px;height:18px;line-height:18px;text-align:center;border-radius:9px;background:var(--danger);color:#fff;font-size:11px;padding:0 5px}
.tag.buyer{background:#eef1f5;color:var(--tx2)}
.conv-card.unread{background:#f0fbf9}
.conv-card.unread .conv-other{color:#0f172a;font-weight:700}

/* 消息中心交互区：筛选页签 / 下拉刷新 / 左滑删除 */
.topbar .tb-ico-btn{width:38px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;color:var(--tx2);flex:none;padding:0;background:none;border:none;cursor:pointer}
.topbar .tb-ico-btn:active{background:#f0f1f3}
.topbar .tb-action{display:inline-flex;align-items:center}
.topbar .tb-action.dim{color:var(--tx3);pointer-events:none}
.chats-root{position:relative;min-height:0}
.conv-tabs{margin:10px 12px 0;display:flex;gap:2px;background:#e9ebee;border-radius:11px;padding:3px}
.conv-tab{flex:1;height:32px;border-radius:8px;display:flex;align-items:center;justify-content:center;gap:5px;color:var(--tx2);font-size:13px;transition:.15s;border:none;background:none;cursor:pointer}
.conv-tab.on{background:#fff;color:var(--tx);font-weight:700;box-shadow:0 1px 4px rgba(20,40,60,.12)}
.conv-tab .u-num{min-width:16px;height:16px;line-height:16px;padding:0 4px;border-radius:8px;background:var(--danger);color:#fff;font-size:10px;text-align:center;flex:none}
.conv-note{margin:8px 12px 0;display:flex;gap:6px;align-items:flex-start;color:var(--tx3);font-size:11.5px;line-height:1.5}
.conv-note svg{flex:none;color:var(--brand);margin-top:1px}
.conv-list{padding:8px 12px 18px;display:flex;flex-direction:column;gap:9px}
.empty.unread-empty{padding:60px 30px}

/* 下拉刷新 */
.ptr-bar{position:absolute;left:0;right:0;top:0;height:0;overflow:hidden;z-index:1;display:flex;align-items:center;justify-content:center;gap:8px;color:var(--tx3);font-size:12.5px;transition:height .22s ease}
.ptr-spin{width:15px;height:15px;border-radius:50%;border:2px solid var(--brand-l);border-top-color:var(--brand);flex:none}
.ptr-spin.go{border-top-color:var(--brand);border-color:#b5e3dc;border-top-color:var(--brand)}
.ptr-spin.spin{animation:ptrspin .7s linear infinite}
@keyframes ptrspin{to{transform:rotate(360deg)}}
.ptr-zone{position:relative;z-index:2;transition:transform .22s ease}

/* 左滑删除会话 */
.conv-swipe{position:relative;border-radius:13px;overflow:hidden}
.conv-del{position:absolute;top:0;right:0;bottom:0;width:80px;background:linear-gradient(160deg,#f43f5e,#ee2b4f);color:#fff;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;letter-spacing:1px;z-index:0;padding:0;border:none;cursor:pointer}
.conv-del:active{background:#e11d48}
.conv-inner{position:relative;z-index:1;background:#fff;border-radius:13px;box-shadow:var(--shadow);transition:transform .22s ease;will-change:transform;overflow:hidden}
.conv-inner .conv-card{background:transparent;border-radius:0;box-shadow:none}
.conv-inner .conv-card.unread{background:#f0fbf9}

/* 聊天详情 */
.chat-wrap{display:flex;flex-direction:column;height:calc(100vh - 50px - env(safe-area-inset-bottom));}
.chat-banner{margin:8px 10px;border-radius:10px;padding:8px 11px;font-size:12px;line-height:1.6;display:flex;gap:8px;align-items:flex-start}
.chat-banner.locked{background:var(--orange-l);color:#a8601a}
.chat-banner.unlocked{background:var(--brand-l);color:#0b7a6c}
.chat-banner.owner{background:var(--blue-l);color:#2c5fb0}
.chat-housebar{margin:0 10px 6px;background:#fff;border-radius:10px;padding:8px 11px;display:flex;align-items:center;gap:9px;box-shadow:var(--shadow)}
.chat-housebar .hh-name{flex:1;min-width:0;font-size:13px;font-weight:600;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.chat-housebar .hh-meta{font-size:11px;color:var(--tx3);display:flex;gap:5px;align-items:center}
.msg-area{flex:1;overflow-y:auto;padding:8px 12px 12px;display:flex;flex-direction:column;gap:12px}
.msg-row{display:flex;gap:8px;max-width:82%}
.msg-row.me{align-self:flex-end;flex-direction:row-reverse}
.msg-bubble{background:#fff;padding:9px 12px;border-radius:14px;box-shadow:0 1px 3px rgba(0,0,0,.04);font-size:14.5px;line-height:1.6;word-break:break-word;white-space:pre-wrap;position:relative}
.msg-row.me .msg-bubble{background:linear-gradient(135deg,#0ab89f,#00b7a3);color:#fff;border-bottom-right-radius:4px}
.msg-row.other .msg-bubble{border-bottom-left-radius:4px}
.msg-time{align-self:flex-end;font-size:10px;color:var(--tx3);margin-top:4px}
.sys-row{display:flex;justify-content:center}
.sys-bubble{max-width:92%;display:flex;gap:7px;align-items:flex-start;background:var(--warn-l);color:#9c6b15;border:1px solid #f3ddb4;font-size:12px;line-height:1.6;padding:8px 11px;border-radius:10px;text-align:left}
.sys-bubble svg{flex:none;margin-top:1px}
.sys-bubble.lv3{background:var(--blue-l);border-color:#c9dcff;color:#2c5fb0}
.sys-bubble.lv2{background:var(--warn-l);border-color:#f3ddb4;color:#9c6b15}
.sys-bubble.ok{background:var(--brand-l);border-color:#b9eadf;color:#0b7a6c}
.date-divider{display:flex;align-items:center;gap:10px;color:var(--tx3);font-size:11px}
.date-divider::before,.date-divider::after{content:"";flex:1;height:1px;background:var(--line)}
.chat-composer{background:#fff;border-top:1px solid var(--line);padding:8px 10px calc(8px + env(safe-area-inset-bottom));display:flex;align-items:flex-end;gap:8px}
.chat-composer textarea{flex:1;height:40px;max-height:110px;resize:none;background:#f2f3f5;border-radius:20px;padding:10px 14px;font-size:14.5px;line-height:1.4;overflow-y:auto}
.chat-composer .send-btn{height:40px;width:58px;border-radius:20px;background:linear-gradient(135deg,var(--brand),#21c3ab);color:#fff;font-size:13px;font-weight:700;flex:none}
.chat-composer .send-btn:disabled{opacity:.5}

/* ---------- 表单 ---------- */
.form-block{margin:10px 12px 0;background:#fff;border-radius:var(--r);padding:4px 14px;box-shadow:var(--shadow)}
.f-row{display:flex;align-items:center;gap:10px;min-height:50px;border-bottom:1px solid var(--line);font-size:14.5px}
.f-row:last-child{border-bottom:none}
.f-label{width:76px;color:var(--tx2);font-size:14px;flex:none}
.f-row input,.f-row select,.f-row textarea{flex:1;text-align:right;color:var(--tx)}
.f-row textarea{height:auto;min-height:34px;padding:10px 0;text-align:left;line-height:1.6}
.f-row input::placeholder,.f-row textarea::placeholder{color:var(--tx3)}
.radio-pills{display:flex;gap:8px;justify-content:flex-end}
.radio-pills .pill{height:32px;padding:0 16px;border-radius:16px;border:1px solid var(--line);color:var(--tx2);font-size:13px;display:inline-flex;align-items:center}
.radio-pills .pill.on{background:var(--brand);border-color:var(--brand);color:#fff}
.form-tip{padding:10px 14px;font-size:12px;color:var(--tx3);line-height:1.7}
.submit-wrap{padding:14px 14px 30px}

/* ---------- 发布页：本地上传 图片/视频 ---------- */
.p-grid{display:flex;flex-wrap:wrap;gap:8px}
.p-cell,.p-add{width:76px;height:76px;border-radius:10px;position:relative;overflow:hidden;flex:none}
.p-cell{background:#f3f4f6}
.p-cell img{width:100%;height:100%;object-fit:cover;display:block}
.p-cell.up{display:flex;align-items:center;justify-content:center}
.p-cell.err{display:flex;align-items:center;justify-content:center;border:1px solid var(--danger)}
.pe-txt{color:var(--danger);font-size:11px}
.p-add{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:2px;border:1px dashed #c9ced8;color:#9aa0ad;background:#fafbfc;cursor:pointer;box-sizing:border-box}
.pa-ico{font-size:22px;line-height:1;color:var(--brand)}
.pa-t{font-size:10px;color:var(--tx3)}
.p-cover{position:absolute;left:0;bottom:0;right:0;background:rgba(0,0,0,.55);color:#fff;font-size:10px;font-style:normal;text-align:center;line-height:18px;z-index:2}
.p-del{position:absolute;right:0;top:0;width:20px;height:20px;background:rgba(0,0,0,.55);color:#fff;border-radius:0 0 0 10px;display:flex;align-items:center;justify-content:center;font-style:normal;font-size:13px;cursor:pointer;z-index:2}
.pspin{width:20px;height:20px;border:2px solid #d6d9df;border-top-color:var(--brand);border-radius:50%;animation:spin .8s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.p-vzone{width:100%}
.p-vcell{display:flex;flex-direction:column;gap:8px}
.p-vcell video{width:100%;max-height:260px;border-radius:10px;background:#000}
.p-vcell.up{display:flex;flex-direction:row;align-items:center;gap:8px;color:var(--tx3);font-size:12px;border:1px dashed #d6d9df;border-radius:10px;padding:18px 14px}
.v-del{align-self:flex-start;border:1px solid var(--line);background:#fff;color:var(--tx2);border-radius:8px;font-size:12px;padding:5px 12px;cursor:pointer}
.p-vadd{display:flex;align-items:center;justify-content:center;gap:6px;height:76px;border:1px dashed #c9ced8;background:#fafbfc;border-radius:10px;cursor:pointer;color:var(--tx3);font-size:13px}
.p-vadd .pa-ico{font-size:20px;line-height:1}
.p-tip{font-size:11.5px;color:var(--tx3);line-height:1.7;margin-top:6px}
.p-tip b{color:var(--brand)}

/* ---------- 我的 ---------- */
.me-head{background:linear-gradient(160deg,var(--brand),#2ec7b1);padding:22px 16px 18px;color:#fff;border-radius:0 0 20px 20px;display:flex;gap:13px;align-items:center}
.me-avatar{width:58px;height:58px;border-radius:50%;background:rgba(255,255,255,.25);border:2px solid rgba(255,255,255,.6);display:flex;align-items:center;justify-content:center;font-size:24px;font-weight:800;position:relative;flex:none;cursor:pointer}
/* 自定义头像：填满圆形区域并等比裁切；用给图片加圆角代替父级 overflow:hidden，
   这样右下角的「可编辑」角标不会被圆的边缘裁掉 */
.me-avatar img{width:100%;height:100%;border-radius:50%;object-fit:cover;display:block}
.me-avatar .av-edit{position:absolute;right:-2px;bottom:-2px;width:19px;height:19px;border-radius:50%;background:#fff;color:var(--brand);display:flex;align-items:center;justify-content:center;box-shadow:0 1px 4px rgba(0,0,0,.22);pointer-events:none}
.me-name{font-size:18px;font-weight:700}
/* 昵称可点击改名（点击文字或后面的笔形图标均可） */
#me_nick{cursor:pointer}
.nm-edit{margin-left:5px;opacity:.85;display:flex;align-items:center;cursor:pointer}
.me-phone{font-size:12px;opacity:.85;margin-top:4px;display:flex;align-items:center;gap:4px}
.score-card{margin:-12px 12px 0;background:#fff;border-radius:var(--r);box-shadow:var(--shadow);padding:13px 15px;display:flex;align-items:center;gap:12px;position:relative;z-index:2}
.score-num{font-size:26px;font-weight:800;color:var(--brand);line-height:1}
.score-info{flex:1;font-size:12.5px;color:var(--tx2);line-height:1.6}
.score-card{cursor:pointer}
.score-card:active{background:#fafcfc}
.score-more{display:block;margin-top:3px;color:var(--brand);font-weight:600}

/* ---------- 信用分详情页 ---------- */
.credit-page>.card{margin:12px 12px 0}
.credit-page>.risk-foot{margin:14px 14px 24px}
.credit-hero{margin:12px 12px 0;background:linear-gradient(150deg,#0f9d8f,#2ec7b1);color:#fff;border-radius:16px;padding:18px 18px 15px;box-shadow:0 8px 22px rgba(0,150,130,.22)}
.credit-hero .ch-top{display:flex;align-items:center;justify-content:space-between}
.credit-hero .ch-num{display:flex;align-items:baseline;gap:4px}
.credit-hero .ch-num b{font-size:40px;font-weight:800;line-height:1;letter-spacing:-1px}
.credit-hero .ch-num span{font-size:13px;opacity:.85}
.credit-hero .ch-lv{font-size:12px;font-weight:700;padding:4px 11px;border-radius:11px;color:#fff;background:rgba(255,255,255,.24)}
.credit-hero .ch-desc{font-size:12.5px;opacity:.92;margin-top:8px;line-height:1.55}
.credit-hero .ch-bar{height:7px;border-radius:4px;background:rgba(255,255,255,.3);margin-top:12px;overflow:hidden}
.credit-hero .ch-bar>i{display:block;height:100%;border-radius:4px;background:#fff}
.credit-hero .ch-foot{display:flex;justify-content:space-between;font-size:11.5px;opacity:.9;margin-top:7px}

.credit-acts .ca-item{display:flex;align-items:flex-start;gap:10px;padding:11px 0;border-bottom:1px solid var(--line);color:inherit;text-decoration:none}
.credit-acts .ca-item:last-child{border-bottom:none;padding-bottom:2px}
.credit-acts .ca-item:active{background:#fafbfc}
.ca-ico{width:34px;height:34px;border-radius:10px;background:var(--brand-l);color:var(--brand);display:flex;align-items:center;justify-content:center;flex:none}
.ca-main{flex:1;min-width:0}
.ca-t{font-size:14px;font-weight:600;color:var(--tx)}
.ca-d{font-size:12px;color:var(--tx2);line-height:1.55;margin-top:2px}
.ca-gain{flex:none;font-size:12px;font-weight:700;color:var(--brand);background:var(--brand-l);border-radius:9px;padding:3px 8px;white-space:nowrap}

.credit-logs .cl-item{display:flex;align-items:flex-start;gap:10px;padding:11px 0;border-bottom:1px solid var(--line)}
.credit-logs .cl-item:last-child{border-bottom:none;padding-bottom:2px}
.cl-main{flex:1;min-width:0}
.cl-r{font-size:13.5px;color:var(--tx);line-height:1.5}
.cl-t{font-size:11.5px;color:var(--tx3);margin-top:3px}
.cl-d{flex:none;font-size:16px;font-weight:800}
.cl-d.minus{color:var(--danger)}
.cl-d.plus{color:#16a34a}

.credit-rules .cr-item{display:flex;align-items:flex-start;gap:10px;padding:10px 0;border-bottom:1px solid var(--line)}
.credit-rules .cr-item:last-child{border-bottom:none;padding-bottom:2px}
.cr-main{flex:1;min-width:0}
.cr-t{font-size:13.5px;font-weight:600;color:var(--tx)}
.cr-d{font-size:12px;color:var(--tx2);line-height:1.55;margin-top:2px}
.cr-deduct{flex:none;font-size:12px;font-weight:700;color:var(--danger);background:#fdeeee;border-radius:9px;padding:3px 8px;white-space:nowrap}

.credit-priv .cp-item{padding:9px 0;border-bottom:1px solid var(--line)}
.credit-priv .cp-item:last-child{border-bottom:none;padding-bottom:2px}
.cp-t{font-size:13.5px;font-weight:600;color:var(--tx)}
.cp-d{font-size:12px;color:var(--tx2);line-height:1.55;margin-top:2px}
.menu-list{margin:12px 12px 0;background:#fff;border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.menu-item{display:flex;align-items:center;gap:12px;padding:15px 14px;border-bottom:1px solid var(--line);cursor:pointer}
.menu-item:last-child{border-bottom:none}
.menu-item:active{background:#fafbfc}
.menu-ico{width:36px;height:36px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex:none}
.menu-item .mi-title{flex:1;font-size:15px;font-weight:600}
.menu-item .mi-sub{font-size:12px;color:var(--tx3);margin-top:2px}
.menu-item .mi-arrow{color:var(--tx3)}
.section-pad{padding:12px 12px 0;font-size:13px;font-weight:700;color:var(--tx2)}
.badge-count{background:var(--orange);color:#fff;font-size:11px;padding:2px 8px;border-radius:9px;font-weight:600}

/* 对话框 / Toast / 层 */
.layer{position:fixed;inset:0;z-index:100;background:rgba(15,23,42,.45);display:flex;align-items:flex-end;justify-content:center;animation:fade .18s}
.layer.show{align-items:center}
.dialog{background:#fff;width:100%;max-width:430px;border-radius:20px 20px 0 0;overflow:hidden;display:flex;flex-direction:column;max-height:86vh}
.layer.show .dialog{border-radius:20px;margin:0 14px;max-width:402px}
.dialog-title{font-size:17px;font-weight:700;text-align:center;padding:18px 16px 4px}
.dialog-body{padding:12px 18px;overflow-y:auto;font-size:14px;line-height:1.8;color:#33384a;word-break:break-word}
.dialog-body .dl-ico{display:flex;justify-content:center;margin-bottom:6px}
.dialog-body b{color:var(--brand)}
.dialog-body ul{padding-left:18px}
.dialog-actions{display:flex;gap:10px;padding:12px 16px calc(16px + env(safe-area-inset-bottom))}
.dialog-actions .btn{flex:1;height:44px;border-radius:22px}
@keyframes fade{from{opacity:0}}
@keyframes pop{from{opacity:.3;transform:translateY(20px) scale(.96)}}
@keyframes slideup{from{opacity:0;transform:translateY(24px)}}

#toastRoot{position:fixed;top:0;left:0;right:0;display:flex;flex-direction:column;align-items:center;z-index:200;pointer-events:none;padding-top:70px;gap:8px}
.toast{max-width:78%;background:rgba(17,24,39,.92);color:#fff;font-size:13.5px;padding:10px 16px;border-radius:10px;opacity:0;transform:translateY(-8px);transition:.25s;line-height:1.6;text-align:center}
.toast.ok{background:rgba(16,151,119,.95)}
.toast.err{background:rgba(220,56,44,.95)}
.toast.show{opacity:1;transform:none}
@media(min-width:431px){.phone{min-height:100vh;box-shadow:none;border-left:1px solid #dcdde0;border-right:1px solid #dcdde0}}

/* ---------- 登录页 ---------- */
.auth-page{padding-bottom:40px}
.auth-head{background:linear-gradient(160deg,var(--brand),#2ec7b1 80%,#6fd8c8);padding:64px 22px 46px;color:#fff;text-align:center;border-radius:0 0 26px 26px}
.auth-logo{font-size:34px;font-weight:900;letter-spacing:2px;text-shadow:0 2px 8px rgba(0,80,70,.2)}
.auth-slogan{margin-top:14px;font-size:16px;font-weight:600}
.auth-sub{margin-top:6px;font-size:12.5px;opacity:.9}
.auth-card{margin:-20px 14px 0;background:#fff;border-radius:18px;box-shadow:0 10px 30px rgba(20,80,70,.12);padding:6px 18px 18px;position:relative}
.auth-tabs{display:flex;gap:28px;border-bottom:1px solid var(--line);margin-bottom:6px}
.auth-tabs span{padding:14px 2px 10px;font-size:16px;color:var(--tx3);font-weight:600;cursor:pointer;border-bottom:2.5px solid transparent;margin-bottom:-1px}
.auth-tabs span.on{color:var(--brand);border-color:var(--brand)}
.auth-body .f-row input{text-align:left}
.auth-btn{margin-top:22px}
.auth-only-wx{color:var(--tx2);font-size:13px;text-align:center;line-height:1.7;padding:18px 0 6px}
.auth-foot{display:flex;align-items:center;gap:10px;margin:22px 20px 0;color:var(--tx3);font-size:12px}
.auth-foot::before,.auth-foot::after{content:'';flex:1;height:1px;background:var(--line)}
.wx-entry{display:flex;align-items:center;gap:12px;margin:14px 14px 0;padding:13px 14px;background:#fff;border-radius:14px;box-shadow:var(--shadow);cursor:pointer;border:1px solid #e6f3ef}
.wx-entry:active{opacity:.85;transform:scale(.99)}
.wx-ico{flex:none;width:40px;height:40px;border-radius:50%;background:#07c160;color:#fff;display:flex;align-items:center;justify-content:center;font-size:19px;font-weight:700}
.wx-txt{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.wx-name{font-size:15px;font-weight:600;color:var(--tx)}
.wx-sub{font-size:12px;color:var(--tx3);line-height:1.5}
.wx-arrow{flex:none;color:var(--tx3);display:flex}
.ctrl-row{position:relative}
.auth-body .ctrl-row .f-row input{padding-right:124px}
.ctrl-row .code-btn{position:absolute;right:1px;top:50%;transform:translateY(-50%);height:32px;padding:0 13px;border-radius:16px;border:1px solid var(--brand);background:#fff;color:var(--brand);font-size:13px;font-weight:600;cursor:pointer;white-space:nowrap}
.ctrl-row .code-btn:disabled{color:var(--tx3);border-color:var(--line);background:#f6f7f9;cursor:not-allowed}
.login-note{font-size:12px;color:var(--tx3);line-height:1.6;padding:10px 2px 0}
.wbind-tip{font-size:12.5px;color:var(--tx2);line-height:1.65;background:#e9f8f4;border:1px solid #cdeee6;border-radius:10px;padding:9px 11px;margin-bottom:14px}
.bind-code{display:flex;gap:8px;align-items:center}
.bind-code input{flex:1;min-width:0}
.bind-code .btn{flex:none;margin:0;padding:0 16px}

/* ---------- 消息角标 / 空态等微调 ---------- */
.msg-area{min-height:0}
.chat-wrap{min-height:0}
.chat-wrap .chat-banner{flex:none}
.chat-housebar{flex:none}
.chat-composer{flex:none}
.hd-price .unit{display:none}
.mi-arrow{display:flex}
.badge-count{flex:none}
.badge-count + .mi-arrow{margin-left:8px}
select{appearance:none;background:transparent}
.sys-bubble svg{flex:none}

/* =========================================================
   补充功能：高级筛选 / 收藏 / 分享 / 预约 / 实名 / 举报 / 反馈
   ========================================================= */
/* ---------- 首页二级筛选栏 ---------- */
.filters-2{display:flex;gap:8px;margin-top:10px;padding:10px 14px;flex-wrap:wrap;align-items:center;background:#fff;border-top:1px solid var(--line);box-shadow:var(--shadow)}
.filters-2 select{flex:1 1 auto;min-width:94px;height:34px;border:1px solid var(--line);background:#fff;border-radius:17px;padding:0 14px 0 12px;font-size:13px;color:var(--tx)}
.filters-2 select:disabled{color:var(--tx3);background:#f6f7f9}

/* ---------- 详情页顶部操作（收藏/分享/举报） ---------- */
.hd-acts{position:absolute;top:10px;right:52px;display:flex;gap:8px;z-index:4}
.hd-act{width:34px;height:34px;border-radius:50%;background:rgba(15,23,42,.38);color:#fff;display:flex;align-items:center;justify-content:center;cursor:pointer;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
.hd-act:active{transform:scale(.9)}
.hd-act.on{color:#ffd34d;background:rgba(15,23,42,.55)}

/* ---------- 详情页预约看房 ---------- */
.appt-area{margin-top:12px;background:#fff;border-radius:var(--r);padding:12px 14px;box-shadow:var(--shadow)}
.appt-tip{display:flex;gap:8px;color:var(--tx2);font-size:12.5px;line-height:1.65;margin-bottom:10px}
.appt-tip svg{flex:none;color:var(--brand);margin-top:2px}
.appt-tip b{color:var(--brand)}
.appt-area .btn{margin-top:2px}

/* ---------- 实名徽标 ---------- */
.v-chip{display:inline-block;vertical-align:middle;font-size:10px;line-height:1;padding:3px 7px;border-radius:8px;background:#e6f7f0;color:#16a34a;font-weight:600;border:1px solid #c9ecd8;white-space:nowrap}

/* ---------- 分享卡片 ---------- */
.share-card{margin:8px 0 10px;border-radius:14px;overflow:hidden;background:linear-gradient(160deg,#1c3a6b,#0f2a52);color:#fff;padding:16px}
.share-card-hd{display:flex;justify-content:space-between;align-items:center;font-size:12px;color:#cdd9ee;padding-bottom:10px;border-bottom:1px dashed rgba(255,255,255,.25);margin-bottom:12px}
.share-card-hd b{color:#fff !important;font-size:15px}
.share-card-t{font-size:16px;font-weight:700;line-height:1.5}
.share-card-sub{margin-top:4px;font-size:12px;color:#aebdd8}
.share-card-price{margin-top:12px;color:#ffd34d;font-weight:800;font-size:18px}
.share-card-f{margin-top:8px;font-size:11px;color:#9fb1d0}
.share-text{background:#f6f7fa;border:1px dashed #d9dde5;border-radius:10px;padding:10px;font-size:12px;color:#5a6170;white-space:pre-wrap;word-break:break-all;line-height:1.7}
.dl-tip{font-size:12px;color:var(--tx3);line-height:1.7;padding:2px 0 6px}
.dl-tip b{color:var(--brand)}

/* ---------- 弹窗内表单控件 ---------- */
.dialog-body input,.dialog-body select,.dialog-body textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);border-radius:10px;padding:10px 11px;font-size:14px;background:#fff;color:var(--tx);outline:none;font-family:inherit}
.dialog-body input:focus,.dialog-body select:focus,.dialog-body textarea:focus{border-color:var(--brand)}
.dialog-body textarea{resize:vertical;min-height:62px}
.form-item{margin-bottom:12px}
.form-item label{display:block;font-size:12px;color:var(--tx2);margin-bottom:5px;font-weight:600}
.form-err{color:var(--danger);font-size:12px;line-height:1.4;min-height:0;padding-top:4px}

/* ---------- 预约状态标签 ---------- */
.tag.sale{background:var(--brand-l);color:var(--brand)}
.tag.warn{background:var(--orange-l);color:#a8601a}
.tag.gray{background:#eef0f3;color:#8a90a0}

/* ---------- 预约列表页 ---------- */
.appt-tabs{display:flex;gap:8px;padding:10px 14px 2px;flex-wrap:wrap}
.atab{font-size:13px;color:var(--tx2);padding:6px 14px;border-radius:16px;background:#eef0f4;font-weight:600;cursor:pointer}
.atab.on{background:var(--brand);color:#fff}
.appt-list{padding:10px 14px 24px;display:flex;flex-direction:column;gap:10px}
.appt-card{background:#fff;border-radius:var(--r);box-shadow:var(--shadow);padding:12px 14px}
.appt-top{display:flex;justify-content:space-between;gap:8px;align-items:flex-start;margin-bottom:6px}
.appt-house{color:#1d2433;font-weight:700;font-size:14.5px;flex:1;line-height:1.45;text-decoration:none}
.appt-line{font-size:12.5px;color:var(--tx2);margin:4px 0;display:flex;gap:6px;align-items:center;flex-wrap:wrap}
.appt-line svg{flex:none;color:var(--brand)}
.appt-line b{color:var(--tx)}
.appt-ops{display:flex;gap:8px;justify-content:flex-end;margin-top:8px}
/* ---------- 我的举报与反馈 / 我的页角标 ---------- */
.rpt-detail{margin:6px 0;color:var(--tx2);font-size:12.5px;line-height:1.65;background:#f7f8fa;border-radius:8px;padding:8px 10px;white-space:pre-wrap;word-break:break-word}
/* 举报记录左滑删除：复用会话列表 .conv-swipe/.conv-del/.conv-inner 的交互形态 */
.conv-inner .appt-card{border-radius:0;box-shadow:none}
.rpt-reply{margin:4px 0;background:var(--brand-l);border-radius:8px;padding:8px 10px}
.rpt-reply-t{display:flex;align-items:center;gap:4px;font-size:11px;color:var(--brand);font-weight:700;margin-bottom:4px}
.rpt-reply-c{color:#1f3d33;font-size:12.5px;line-height:1.6;white-space:pre-wrap;word-break:break-word}
.rpt-new-tag{display:inline-block;margin-left:5px;padding:0 4px;border-radius:5px;background:var(--danger);color:#fff;font-size:9.5px;line-height:14px;vertical-align:1px}
.mi-badge{flex:none;min-width:18px;height:18px;line-height:18px;text-align:center;border-radius:9px;background:var(--orange);color:#fff;font-size:10.5px;font-weight:700;padding:0 5px}
.mi-badge.hot{background:var(--danger)}
.badge-count.hot{background:var(--danger)}

/* ---------- 业主未实名提醒 ---------- */
.v-remind{display:flex;align-items:center;justify-content:center;gap:5px;margin-top:8px;font-size:12px;color:#0b8a78;background:var(--brand-l);border-radius:8px;padding:9px 8px;text-decoration:none;line-height:1.4}
.v-remind svg{flex:none}

/* ---------- 实名认证页 ---------- */
.verify-hero{background:#fff;border-radius:var(--r);box-shadow:var(--shadow);text-align:center;padding:32px 20px;color:var(--brand)}
.verify-hero .vh-t{font-size:19px;font-weight:800;margin:12px 0 6px;color:#1d2433}
.verify-hero .vh-s{color:var(--tx2);font-size:13px;line-height:1.7;padding:0 8px}
.verify-hero.ok{color:#16a34a}
.verify-hero .vh-badge{margin-top:14px;display:inline-block;background:#e6f7f0;color:#16a34a;padding:6px 16px;border-radius:20px;font-size:12px;font-weight:600}
.verify-hero.wait{color:#e6a23c}

/* 证件照上传区（百度 OCR 自动识别） */
.idc-wrap{margin:10px 12px 0;background:#fff;border-radius:var(--r);box-shadow:var(--shadow);padding:12px}
.idc-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.idc-item{position:relative;overflow:hidden;border:1.5px dashed #d7dbe3;border-radius:12px;background:#f7f9fa;aspect-ratio:1.58;display:flex;align-items:center;justify-content:center;cursor:pointer;transition:.15s;box-sizing:border-box}
.idc-item:active{transform:scale(.98)}
.idc-item.busy{border-color:var(--brand);background:var(--brand-l)}
.idc-item.ok{border-style:solid;border-color:#16a34a;background:#f2fbf6}
.idc-item.err{border-style:solid;border-color:var(--danger);background:#fff5f5}
.idc-item img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.idc-ph{display:flex;flex-direction:column;align-items:center;gap:5px;color:var(--tx3)}
.idc-ph i{font-style:normal;font-size:12px}
.idc-tag{position:absolute;left:0;right:0;bottom:0;text-align:center;font-size:11px;line-height:1;padding:5px 4px;color:#fff;background:rgba(20,40,60,.55);backdrop-filter:blur(2px)}
.idc-item.ok .idc-tag{background:rgba(22,163,74,.9)}
.idc-item.err .idc-tag{background:rgba(220,38,38,.9)}
.idc-item.busy .idc-tag{background:rgba(0,183,163,.9)}
.idc-hint{margin-top:10px;font-size:11.5px;color:var(--tx3);line-height:1.7}
.idc-hint b{color:var(--tx)}
.idc-hint.ok{color:#16a34a}
.idc-hint.err{color:var(--danger)}

/* ---------- 身份选择（买家 / 业主·卖家）与身份徽标 ---------- */
.role-pick{display:flex;flex-direction:column;gap:10px}
.role-opt{display:flex;align-items:center;gap:10px;width:100%;text-align:left;padding:11px 12px;border:1.5px solid var(--line);border-radius:12px;background:#fff;cursor:pointer;transition:.15s;box-sizing:border-box}
.role-opt:active{transform:scale(.98)}
.role-opt.on{border-color:var(--brand);background:var(--brand-l)}
.role-ico{flex:none;width:36px;height:36px;border-radius:10px;background:#eef6f4;color:var(--brand);display:flex;align-items:center;justify-content:center}
.role-opt.on .role-ico{background:#fff}
.role-mid{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.role-mid b{font-size:14.5px;font-weight:700;color:var(--tx);line-height:1.2}
.role-mid i{font-style:normal;font-size:11.5px;color:var(--tx3);line-height:1.45}
.role-check{flex:none;width:20px;height:20px;border-radius:50%;border:1.5px solid #d7dbe3;color:#fff;display:flex;align-items:center;justify-content:center;box-sizing:border-box}
.role-check svg{opacity:0}
.role-opt.on .role-check{background:var(--brand);border-color:var(--brand)}
.role-opt.on .role-check svg{opacity:1}
.role-tip{font-size:11.5px;color:var(--tx3);line-height:1.7;white-space:pre-wrap;padding:2px 2px 0}
.role-chip{display:inline-block;vertical-align:2px;font-size:10px;line-height:1;padding:3px 7px;border-radius:8px;background:rgba(255,255,255,.24);color:#fff;font-weight:600;margin-left:7px;border:1px solid rgba(255,255,255,.4);white-space:nowrap}
.role-chip:active{opacity:.85}
.me-name{display:flex;align-items:center}

/* ---------- 详情页主体下方：附近房源 / 推荐房源 ---------- */
.rel-wrap{margin:10px 0 0}
.rel-bar{margin:0 12px;display:flex;background:#e9ebee;border-radius:11px;padding:3px}
.rel-tab{flex:1;height:34px;border:none;background:none;border-radius:9px;display:flex;align-items:center;justify-content:center;gap:5px;font-size:13.5px;font-weight:600;color:var(--tx2);cursor:pointer}
.rel-tab:active{opacity:.85}
.rel-tab.on{background:#fff;color:var(--brand);box-shadow:0 1px 4px rgba(20,40,60,.12)}
.rel-heat{font-style:normal;font-size:10px;line-height:1;padding:2px 5px;border-radius:7px;background:linear-gradient(135deg,#ff7a45,#f43f5e);color:#fff}
.rel-pane{display:none}
.rel-pane.on{display:block}
.rel-pane .h-list{padding:10px 12px 2px}
.rel-load{text-align:center;color:var(--tx3);font-size:13px;padding:24px 0 10px}
.rel-empty{text-align:center;color:var(--tx3);font-size:13px;padding:26px 20px 14px;line-height:1.9}
.rel-empty a{color:var(--brand);font-weight:600}

/* ---------- 详情页：房源信息 / 房源位置 / 业主描述（TAB 标签 + 左右滑屏） ---------- */
.dtabs{margin:10px 12px 0;background:#fff;border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.dtabs-bar{display:flex;border-bottom:1px solid var(--line)}
.dtab{flex:1;height:44px;display:flex;align-items:center;justify-content:center;font-size:15px;font-weight:600;color:var(--tx2);position:relative;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:color .2s}
.dtab:active{opacity:.85}
.dtab.on{color:var(--brand)}
.dtab::after{content:"";position:absolute;left:50%;bottom:-1px;width:30px;height:3px;border-radius:3px 3px 0 0;background:var(--brand);transform:translateX(-50%) scaleX(0);transition:transform .22s ease}
.dtab.on::after{transform:translateX(-50%) scaleX(1)}
.dtabs-view{overflow:hidden;transition:height .26s cubic-bezier(.4,0,.2,1)}
.dtabs-track{display:flex;will-change:transform}
.dtabs-pane{flex:none;width:100%;min-width:100%;box-sizing:border-box;padding:14px}
.dtabs-pane .grid-2{row-gap:14px}
.pos-addr{display:flex;align-items:flex-start;gap:6px;font-size:13.5px;font-weight:600;line-height:1.6;color:#3a4150;word-break:break-all;margin-bottom:10px}
.pos-addr svg{flex:none;margin-top:2px;color:var(--brand)}
.pos-tip{font-size:12px;color:var(--tx3);line-height:1.7;background:#f7f8fa;border-radius:10px;padding:9px 11px;margin-top:10px}
.dtabs-pane .hd-map-open{margin-top:12px}
/* “房源信息”面板下部：周边配套标签 */
.am-wrap{margin-top:14px;padding-top:14px;border-top:1px dashed #e6e9ef}
.am-title{font-size:13px;font-weight:600;color:#5a6472;margin-bottom:9px}
.am-list{display:flex;flex-wrap:wrap;gap:8px}
.am-chip{display:inline-flex;align-items:center;gap:5px;padding:5px 11px;border-radius:999px;background:#eef8f6;border:1px solid #d7eeea;color:#0e7f74;font-size:12.5px;font-weight:500}
.am-chip svg{color:#00b7a3}
/* 发布/编辑表单：周边配套多选标签 */
.tag-box{display:flex;flex-wrap:wrap;gap:9px}
.tag-sel{display:inline-flex;align-items:center;justify-content:center;gap:4px;padding:7px 14px;border-radius:999px;background:#fff;border:1px solid #dfe3ea;color:#5a6472;font-size:13px;line-height:1;cursor:pointer;user-select:none;-webkit-tap-highlight-color:transparent;transition:all .15s}
.tag-sel:active{opacity:.85}
.tag-sel.on{background:var(--brand);border-color:var(--brand);color:#fff;font-weight:600}

/* ---------- “我的”页：功能宫格 + 卡片分组 ---------- */
.card{margin:12px 12px 0;background:#fff;border-radius:var(--r);box-shadow:var(--shadow);overflow:hidden}
.card-tt{padding:15px 15px 2px;font-size:15px;font-weight:700;color:var(--tx1)}
.fun-grid{display:grid;grid-template-columns:repeat(4,1fr);padding:6px 2px 14px}
.fun-cell{display:flex;flex-direction:column;align-items:center;gap:6px;padding:9px 2px 2px;text-decoration:none;color:inherit;-webkit-tap-highlight-color:transparent}
.fun-cell:active{opacity:.75}
.fun-ico{position:relative;width:46px;height:46px;border-radius:15px;display:flex;align-items:center;justify-content:center}
.fun-badge{position:absolute;top:-5px;right:-8px;min-width:17px;height:17px;padding:0 5px;border-radius:9px;font-size:10.5px;line-height:17px;text-align:center;font-style:normal;font-weight:700;color:#fff;background:var(--orange);box-shadow:0 0 0 1.5px #fff}
.fun-badge.hot{background:var(--danger)}
.fun-name{font-size:11.5px;font-weight:500;color:#374151;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:100%}
.row-cell{display:flex;align-items:center;gap:12px;padding:14px;cursor:pointer}
.row-cell + .row-cell{border-top:1px solid var(--line)}
.row-cell:active{background:#fafbfc}
.row-cell .rc-txt{flex:1;min-width:0}
.row-cell .mi-title{font-size:15px;font-weight:600;color:var(--tx1)}
.row-cell .mi-sub{font-size:12px;color:var(--tx3);margin-top:3px;line-height:1.5}
.row-cell .mi-arrow{color:var(--tx3);display:flex}
.btn-primary{display:block;width:100%;padding:13px;border:none;border-radius:12px;background:var(--brand);color:#fff;font-size:15px;font-weight:700;cursor:pointer;-webkit-tap-highlight-color:transparent}
.btn-primary:active{opacity:.9}

/* ---------- 多城市：首页城市切换 ---------- */
.city.pick{cursor:pointer;background:rgba(255,255,255,.18);padding:4px 9px;border-radius:14px;user-select:none;-webkit-tap-highlight-color:transparent;backdrop-filter:blur(2px)}
.city.pick:active{opacity:.75}
.city .chev{width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;border-top:5px solid rgba(255,255,255,.92);margin-left:1px;vertical-align:1px}
.city-sheet-mask{position:fixed;inset:0;z-index:120;background:rgba(15,23,42,.45);display:flex;align-items:flex-end;justify-content:center;animation:fade .18s}
.city-sheet{width:100%;max-width:430px;background:#fff;border-radius:18px 18px 0 0;max-height:64vh;display:flex;flex-direction:column;animation:slideup .2s ease;padding-bottom:env(safe-area-inset-bottom,0px)}
.sheet-hd{position:relative;text-align:center;font-size:16px;font-weight:700;padding:14px 44px;flex:none}
.sheet-close{position:absolute;right:10px;top:50%;transform:translateY(-50%);width:32px;height:32px;border-radius:50%;background:#f2f3f5;color:var(--tx2);display:flex;align-items:center;justify-content:center;padding:0;border:none;cursor:pointer}
.sheet-list{overflow-y:auto;padding:4px 14px}
.sheet-it{display:flex;align-items:center;gap:10px;padding:14px 4px;border-bottom:1px solid var(--line);cursor:pointer}
.sheet-it:last-child{border-bottom:none}
.sheet-it:active{background:#fafbfc}
.sheet-it .nm{flex:none;font-size:15px;font-weight:600;color:var(--tx)}
.sheet-it .full{flex:1;min-width:0;color:var(--tx3);font-size:12px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.sheet-it em{flex:none;font-style:normal;font-size:11px;color:var(--brand);background:var(--brand-l);padding:3px 8px;border-radius:8px}
.sheet-it.on .nm{color:var(--brand)}

/* ---------- 发布/编辑：小区定位（地图选点） ---------- */
.pu-loc-btn{flex:none;padding:6px 12px;border-radius:15px;border:1px solid var(--brand);background:#fff;color:var(--brand);font-size:13px;cursor:pointer}
.pu-loc-btn:active{opacity:.8}
.pu-loc-txt{flex:1;min-width:0;text-align:right;font-size:12px;color:var(--tx3);line-height:1.5}
#pu_loc_row.on .pu-loc-txt{color:#149a7f}

/* ---------- 地图选点弹层（FC.MapPick） ---------- */
.mpk-mask{position:fixed;inset:0;z-index:960;display:flex;align-items:center;justify-content:center;background:rgba(17,24,32,.52);padding:18px;box-sizing:border-box}
.mpk{width:min(560px,100%);display:flex;flex-direction:column;background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 12px 40px rgba(0,0,0,.25)}
.mpk-top{display:flex;align-items:center;justify-content:space-between;padding:13px 16px 9px}
.mpk-top b{font-size:16px;color:var(--tx)}
.mpk-x{width:30px;height:30px;border:none;background:#f2f3f5;color:var(--tx2);font-size:18px;line-height:1;border-radius:50%;cursor:pointer}
.mpk-x:active{opacity:.7}
.mpk-sr{display:flex;gap:8px;padding:2px 16px 10px}
.mpk-in{flex:1;height:38px;border:1px solid var(--line);border-radius:19px;padding:0 16px;font-size:14px;color:var(--tx);background:#f7f8fa}
.mpk-in:focus{outline:none;border-color:var(--brand)}
.mpk-go{flex:none;height:38px;padding:0 18px;border:none;border-radius:19px;background:var(--brand);color:#fff;font-size:14px;font-weight:600;cursor:pointer}
.mpk-go:active{opacity:.88}
.mpk-map{position:relative;height:min(46vh,340px);background:#e6e8eb}
.mpk-pin{position:absolute;left:50%;top:50%;z-index:20;width:0;height:0;margin:-14px 0 0 -8px;border-left:8px solid transparent;border-right:8px solid transparent;border-bottom:14px solid #f43f5e;filter:drop-shadow(0 1px 2px rgba(0,0,0,.4));pointer-events:none}
.mpk-pin::after{content:'';position:absolute;left:-3px;top:14px;width:6px;height:6px;border-radius:50%;background:#f43f5e}
.mpk-load{position:absolute;inset:0;z-index:30;display:flex;align-items:center;justify-content:center;gap:8px;background:rgba(230,232,235,.7);color:var(--tx2);font-size:13px;font-style:normal}
.mpk-load::before{content:'';width:16px;height:16px;border:2px solid var(--brand);border-top-color:transparent;border-radius:50%;animation:mpk-spin .8s linear infinite}
@keyframes mpk-spin{to{transform:rotate(360deg)}}
.mpk-cc{padding:7px 16px 1px;font-size:12px;color:var(--tx3);text-align:center}
.mpk-tip{padding:6px 18px 2px;font-size:12px;color:var(--tx2);line-height:1.7;text-align:center}
.mpk-tip b{color:#f43f5e}
.mpk-ft{display:flex;gap:10px;padding:14px 16px 16px}
.mpk-ft button{flex:1;height:42px;border:none;border-radius:21px;font-size:15px;cursor:pointer}
.mpk-clr{background:#f2f3f5;color:var(--tx2)}
.mpk-ok{background:linear-gradient(135deg,var(--brand),#21c3ab);color:#fff;font-weight:700}
.mpk-ft button:active{opacity:.88}

/* ---------- 支出账单（我的账单） ---------- */
.bill-hero{margin:12px 12px 0;padding:18px 16px;border-radius:var(--r);color:#fff;background:linear-gradient(135deg,var(--brand),#2fd0b7);box-shadow:0 6px 18px rgba(0,183,163,.25)}
.bill-hero .bh-label{font-size:12px;opacity:.92}
.bill-hero .bh-num{font-size:30px;font-weight:800;letter-spacing:.5px;margin-top:4px}
.bill-hero .bh-sub{margin-top:8px;font-size:11.5px;line-height:1.6;opacity:.95}
.bill-month{display:flex;justify-content:space-between;align-items:baseline;padding:2px 4px;font-size:12px;color:var(--tx3)}
.bill-month b{color:var(--tx2);font-weight:600}
.bill-amt{font-size:15px;font-weight:700;color:var(--tx);font-variant-numeric:tabular-nums}
.bill-no{font-size:11px;color:var(--tx3);font-variant-numeric:tabular-nums}
.count-line a.lk{color:var(--brand);text-decoration:none;font-weight:600}
.conv-list>.bill-month:not(:first-child){margin-top:6px}

/* ==================== #/home 首页动态模块（后台 CMS 下发） ==================== */
/* ---------- 轮播广告 ---------- */
.hmb-car{position:relative;margin:12px 12px 0;height:150px;border-radius:16px;overflow:hidden;background:#e9edf1;box-shadow:0 2px 10px rgba(22,38,56,.06)}
.car-track{display:flex;height:100%;transition:transform .42s ease}
.car-slide{position:relative;flex:0 0 100%;width:100%;height:100%;display:block;background:#e9edf1}
.car-img{width:100%;height:100%;object-fit:cover;display:block;background:#e9edf1}
.car-cap{position:absolute;left:0;right:0;bottom:0;padding:34px 14px 11px;color:#fff;background:linear-gradient(180deg,rgba(10,16,24,0) 0%,rgba(10,16,24,.58) 100%)}
.car-cap b{display:block;font-size:15px;font-weight:700;line-height:1.35;text-shadow:0 1px 3px rgba(0,0,0,.25)}
.car-cap i{display:block;margin-top:2px;font-size:12px;font-style:normal;opacity:.92;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.car-dots{position:absolute;right:12px;bottom:10px;z-index:3;display:flex;gap:5px;align-items:center}
.car-dot{width:6px;height:6px;border-radius:3px;background:rgba(255,255,255,.6);cursor:pointer;transition:width .2s,background .2s}
.car-dot.on{width:17px;background:#fff}

/* ---------- 公告/资讯 上下轮翻 ---------- */
.hmb-notice{display:flex;align-items:center;gap:10px;margin:10px 12px 0;height:46px;padding:0 12px 0 10px;background:#fff;border-radius:14px;box-shadow:0 1px 6px rgba(30,42,58,.04)}
.nt-ic{flex:none;width:26px;height:26px;border-radius:8px;display:flex;align-items:center;justify-content:center;background:linear-gradient(135deg,#ff9547,#ff6a3d);color:#fff}
.nt-scroll{flex:1;min-width:0;height:46px;overflow:hidden}
.nt-track.will{animation:hm-up 9s linear infinite}
.nt-scroll:hover .nt-track.will{animation-play-state:paused}
@keyframes hm-up{from{transform:translateY(0)}to{transform:translateY(-50%)}}
.nt-item{display:flex;align-items:center;gap:6px;height:46px;color:var(--tx)}
.nt-kind{flex:none;font-size:10px;line-height:1;padding:3px 6px;border-radius:5px;color:#fff;background:linear-gradient(135deg,#ff9547,#ff6a3d);transform:scale(.94)}
.nt-kind.article{background:linear-gradient(135deg,#7a5cf0,#8b5cf6)}
.nt-t{flex:1;min-width:0;font-size:13.5px;color:var(--tx2);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.nt-day{flex:none;font-size:11px;color:var(--tx3)}
.nt-go{flex:none;display:flex;align-items:center;color:var(--tx3);font-size:12px}

/* ---------- 通用区块（白卡片内） ---------- */
.hm-box{margin:12px 12px 0;background:#fff;border-radius:16px;padding:2px 12px 14px;box-shadow:0 1px 8px rgba(30,42,58,.05)}
.hsec{display:flex;align-items:center;justify-content:space-between;padding:14px 2px 10px}
.hsec .t{display:flex;align-items:center;gap:8px;font-size:16px;font-weight:800;color:var(--tx)}
.hsec .ico-chip{flex:none;width:22px;height:22px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;color:#fff}
.hsec .t i{font-size:11px;font-weight:500;color:var(--tx3);font-style:normal;margin-left:1px}
.hsec .more{flex:none;display:flex;align-items:center;gap:2px;font-size:12px;color:var(--tx3)}

/* ---------- 今日推荐（横向快卡） ---------- */
.rec-rail{display:flex;gap:10px;overflow-x:auto;padding:2px 1px 6px;scrollbar-width:none;-webkit-overflow-scrolling:touch}
.rec-rail::-webkit-scrollbar{display:none}
.rec-card{flex:0 0 150px;display:block;background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden}
.rec-media{position:relative;height:92px;background:#e9edf1}
.rec-media img{width:100%;height:100%;object-fit:cover;display:block}
.rec-ph{position:absolute;inset:0;display:flex;align-items:flex-end;padding:6px;background:linear-gradient(135deg,#eef7f4,#dff2ed)}
.rec-ph .layout-txt{position:static}
.rec-media .pick-badge{position:absolute;left:6px;top:6px;z-index:2}
.rec-body{padding:7px 8px 8px}
.rec-tt{font-size:13px;font-weight:600;color:var(--tx);line-height:1.3;height:34px;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.rec-comm{display:flex;align-items:center;gap:3px;margin-top:4px;font-size:11px;color:var(--tx3);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.rec-price{display:flex;align-items:baseline;gap:2px;margin-top:5px;font-weight:800;color:#f5452c;font-size:16px}
.rec-price.rent{color:var(--brand)}
.rec-price small{font-size:11px;font-weight:600;color:var(--tx3);margin-left:auto}

/* ---------- 本月房价行情 ---------- */
.ps-wrap{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.ps-tile{position:relative;padding:13px 12px 11px;border-radius:12px;background:#f4f6f9;overflow:hidden}
.ps-tile .lb{font-size:11.5px;color:var(--tx2);font-weight:600}
.ps-tile b{display:block;margin-top:5px;font-size:19px;font-weight:800;color:var(--tx);font-variant-numeric:tabular-nums}
.ps-tile b small{font-size:11px;font-weight:600;color:var(--tx3);margin-left:3px}
.ps-tile .sub{margin-top:4px;font-size:10.5px;color:var(--tx3);line-height:1.4}

/* ---------- 楼盘信息 ---------- */
.book-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px}
.book-card{display:flex;flex-direction:column;background:#fff;border:1px solid var(--line);border-radius:12px;overflow:hidden;text-decoration:none;color:inherit}
.book-cover{position:relative;width:100%;height:88px;background:#e9edf1;overflow:hidden}
.book-cover img{width:100%;height:100%;object-fit:cover;display:block}
.book-cover .no-cover{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;color:#b9c1cb;background:linear-gradient(135deg,#f0f3f6,#e4e9ef)}
.book-cover .book-rec{position:absolute;right:5px;top:5px;padding:2px 7px;border-radius:9px;font-size:10px;font-style:normal;font-weight:700;color:#fff;background:linear-gradient(135deg,#f59e0b,#f97316);box-shadow:0 2px 6px rgba(245,158,11,.35)}
.book-body{flex:1;padding:8px 9px 9px;display:flex;flex-direction:column}
.book-name{font-size:14px;font-weight:700;color:var(--tx);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.book-meta{margin-top:3px;font-size:11px;color:var(--tx3);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.book-tags{display:flex;flex-wrap:wrap;gap:4px;margin-top:6px;min-height:0}
.book-tag{font-size:10px;color:#0d9488;background:#e6f7f4;border-radius:4px;padding:2px 5px;line-height:1.2;max-width:100%;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.book-tag.o{color:#b45309;background:#fdf0dc}
.book-bt{display:flex;align-items:baseline;margin-top:auto;padding-top:7px}
.book-price{font-size:13.5px;font-weight:800;color:#f5452c}
.book-price small{font-size:10px;font-weight:600;color:var(--tx3);margin-left:2px}
.book-price.off{color:var(--tx3);font-weight:600}
.book-bt .go{flex:none;margin-left:auto;display:flex;align-items:center;color:#c2cad4;transform:scale(.9)}

/* ---------- 底部引导 ---------- */
.hm-go{margin:14px 12px 2px;height:44px;border-radius:22px;display:flex;align-items:center;justify-content:center;gap:6px;color:#fff;font-size:15px;font-weight:700;background:linear-gradient(135deg,var(--brand),#2fd0b7);box-shadow:0 6px 16px rgba(0,183,163,.22)}
.hm-go-sub{margin:6px 4px 0;text-align:center;font-size:11px;color:var(--tx3);line-height:1.5}

/* ---------- 阅读浮层（公告/资讯/楼盘详情） ---------- */
.fc-reader-mask{position:fixed;inset:0;z-index:960;background:rgba(10,15,22,.46);display:flex;justify-content:center}
.fc-reader{width:100%;max-width:430px;height:100%;height:100dvh;margin:0 auto;background:var(--bg);display:flex;flex-direction:column;animation:rd-in .22s ease}
@keyframes rd-in{from{transform:translateY(24px);opacity:.6}to{transform:translateY(0);opacity:1}}
.fc-reader-hd{flex:none;height:52px;display:flex;align-items:center;gap:4px;padding:0 6px 0 10px;background:#fff;border-bottom:1px solid var(--line)}
.fc-rd-x{width:34px;height:34px;flex:none;display:flex;align-items:center;justify-content:center;color:var(--tx2);background:#f2f3f5;border:none;border-radius:50%;font-size:17px;cursor:pointer}
.fc-reader-hd b{flex:1;min-width:0;text-align:center;font-size:15px;color:var(--tx);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.fc-reader-bd{flex:1;overflow-y:auto;-webkit-overflow-scrolling:touch;padding:14px 14px calc(26px + env(safe-area-inset-bottom,0px))}
.fc-rd-load{display:flex;align-items:center;justify-content:center;gap:8px;height:60vh;color:var(--tx3);font-size:13px}
.fc-rd-load::before{content:'';width:16px;height:16px;border:2px solid var(--brand);border-top-color:transparent;border-radius:50%;animation:rd-spin .8s linear infinite}
@keyframes rd-spin{to{transform:rotate(360deg)}}
.fr-paper{background:#fff;border-radius:14px;padding:16px 15px 18px}
.fr-paper + .fr-paper{margin-top:12px}
.fr-title{font-size:18px;font-weight:800;color:var(--tx);line-height:1.5}
.fr-meta{display:flex;align-items:center;gap:7px;margin-top:9px;font-size:12px;color:var(--tx3)}
.fr-kind{flex:none;font-size:10px;line-height:1;padding:3px 7px;border-radius:5px;color:#fff;background:linear-gradient(135deg,#ff9547,#ff6a3d)}
.fr-kind.article{background:linear-gradient(135deg,#7a5cf0,#8b5cf6)}
.fr-content{margin-top:12px;font-size:14px;line-height:1.85;color:#39404e;white-space:pre-wrap;word-break:break-word}
.fr-cover{display:block;width:100%;height:168px;object-fit:cover;border-radius:12px;background:#e9edf1;margin-bottom:12px}
.fr-name{font-size:19px;font-weight:800;color:var(--tx)}
.fr-addr{display:flex;align-items:flex-start;gap:4px;margin-top:7px;font-size:12px;color:var(--tx2);line-height:1.6}
.fr-tags{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px}
.fr-tag{font-size:11px;color:#0d9488;background:#e6f7f4;border-radius:6px;padding:3px 8px}
.fr-tag.o{color:#b45309;background:#fdf0dc}
.fr-price{margin-top:12px;padding:12px 13px;border-radius:10px;background:#fff7f5;display:flex;align-items:baseline;gap:4px;flex-wrap:wrap}
.fr-price b{color:#f5452c;font-size:17px;font-weight:800}
.fr-price small{font-size:11px;color:var(--tx3)}
.fr-h{display:flex;align-items:center;gap:6px;margin:18px 0 8px;font-size:15px;font-weight:700;color:var(--tx)}
.fr-h::before{content:'';width:3px;height:14px;border-radius:2px;background:var(--brand)}
.fr-intro{font-size:13.5px;color:var(--tx2);line-height:1.8;background:#f7f8fa;border-radius:10px;padding:11px 12px;white-space:pre-wrap;word-break:break-word}
.fr-foot{margin-top:14px;font-size:11px;color:var(--tx3);text-align:center;line-height:1.7}

/* ---------- 底部备案信息 ---------- */
.site-foot{padding:6px 16px calc(72px + env(safe-area-inset-bottom,0px));text-align:center;font-size:11px;color:var(--tx3);line-height:1.7}
.site-foot a{display:inline-block;padding:6px 10px;border-radius:8px;color:var(--tx3);text-decoration:none}
.site-foot a:active{background:rgba(0,0,0,.05)}
/* 无底部导航的页面不必为 tabbar 留白 */
#tabbar.hidden + .site-foot{padding-bottom:calc(16px + env(safe-area-inset-bottom,0px))}

/* ---------- 首页「房东委托」单行模块（左侧文案 + 右侧按钮） ---------- */
.hm-entrust{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:12px 12px}
.en-l{display:flex;align-items:center;gap:10px;min-width:0}
.en-ico{flex:none;width:38px;height:38px;border-radius:12px;display:flex;align-items:center;justify-content:center;color:#fff;background:linear-gradient(135deg,#3a8dff,#1f6fe0)}
.en-c{display:flex;flex-direction:column;min-width:0}
.en-c b{font-size:14px;font-weight:800;color:var(--tx);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.en-c i{margin-top:3px;font-style:normal;font-size:11px;color:var(--tx3);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.en-btn{flex:none;height:32px;padding:0 16px;border:0;border-radius:16px;background:var(--brand);color:#fff;font-size:13px;font-weight:700}
.en-btn:active{opacity:.85}

/* ---------- 我的委托（#/entrusts 列表页 / 详情时间线；入口在「我的」页服务宫格） ---------- */
.en-st{display:inline-flex;align-items:center;font-size:11px;line-height:1;padding:4px 8px;border-radius:6px;font-weight:600;white-space:nowrap}
.en-st.s0{background:var(--orange-l);color:#a8601a}
.en-st.s1{background:var(--brand-l);color:var(--brand)}
.en-st.s2{background:#e7f7f1;color:#12a06a}
.en-st.s3{background:#eef0f3;color:#8a90a0}
.en-it-top{display:flex;align-items:center;gap:6px}
.en-it-time{margin-left:auto;flex:none;font-size:11px;color:var(--tx3)}
.en-it-sub{margin-top:7px;font-size:12.5px;color:var(--tx2);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.en-it-note{margin-top:5px;font-size:12px;color:var(--brand);line-height:1.5;overflow:hidden;display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical}
.en-list{padding:10px 12px 24px;display:flex;flex-direction:column;gap:10px}
.en-card{display:block;background:#fff;border-radius:var(--r);box-shadow:var(--shadow);padding:12px;text-decoration:none;color:inherit}
.en-card:active{background:#fafbfc}
.en-bar{display:flex;gap:4px;margin-top:9px}
.en-bar i{flex:1;height:3px;border-radius:2px;background:#e8ebf0}
.en-bar i.on{background:var(--brand)}
.en-prog{margin-top:6px;font-size:11px;color:var(--tx3)}
.en-steps{margin:6px 0 12px;padding-top:2px}
.en-step{position:relative;padding:0 0 15px 22px;font-size:12.5px;color:var(--tx3)}
.en-step i{position:absolute;left:3px;top:4px;width:9px;height:9px;border-radius:50%;background:#dfe3ea;z-index:1}
.en-step:before{content:'';position:absolute;left:7px;top:13px;bottom:0;width:1px;background:#e8ebf0}
.en-step:last-child{padding-bottom:2px}
.en-step:last-child:before{display:none}
.en-step b{display:block;font-size:13px;font-weight:600;color:var(--tx3)}
.en-step span{display:block;margin-top:3px;line-height:1.6}
.en-step.on i{background:var(--brand)}
.en-step.on b{color:var(--tx)}
.en-step.cur i{box-shadow:0 0 0 3px var(--brand-l)}
.en-kv{border-top:1px solid var(--line);padding-top:4px}
.en-kv dl{display:flex;gap:10px;padding:7px 0;font-size:13px;line-height:1.5}
.en-kv dt{flex:none;width:74px;color:var(--tx3)}
.en-kv dd{flex:1;min-width:0;color:var(--tx);word-break:break-word}
.en-kv dd .tag,.en-kv dd .en-st{vertical-align:middle}

/* ---------- 首页「最新房源」TAB 板块（出售 / 出租 / 商铺，各前 5 条） ---------- */
.lt-tabs{display:flex;gap:8px;padding:2px 2px 10px}
.lt-tab{flex:1;height:30px;padding:0 6px;border-radius:15px;border:1px solid var(--line);background:#fff;color:var(--tx2);font-size:13px;font-weight:600;text-align:center}
.lt-tab.on{background:var(--brand);border-color:var(--brand);color:#fff}
.lt-pane{display:none}
.lt-pane.on{display:block}
.lt-row{display:flex;align-items:center;gap:10px;padding:9px 2px;border-top:1px solid #f2f3f5;text-decoration:none;color:inherit}
.lt-pane .lt-row:first-child{border-top:0}
.lt-thumb{position:relative;flex:none;width:76px;height:60px;border-radius:9px;overflow:hidden;background:linear-gradient(135deg,#eef2f6,#e3e9ef);display:flex;align-items:center;justify-content:center}
.lt-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.lt-badge{position:absolute;left:0;top:0;font-size:10px;line-height:1;padding:3px 6px;border-bottom-right-radius:7px;background:var(--brand);color:#fff}
.lt-badge.rent{background:var(--blue)}
.lt-badge.shop{background:var(--orange)}
.lt-main{flex:1;min-width:0}
.lt-tt{font-size:14px;font-weight:600;color:var(--tx);line-height:1.35;overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.lt-meta{margin-top:3px;font-size:11.5px;color:var(--tx3);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.lt-price{flex:none;text-align:right;font-size:16px;font-weight:800;color:var(--orange);line-height:1.2}
.lt-price.rent{color:var(--blue)}
.lt-price small{display:block;font-size:10.5px;font-weight:500;color:var(--tx3);margin-top:2px}
.lt-more{display:flex;align-items:center;justify-content:center;gap:4px;height:34px;margin-top:8px;border-radius:17px;background:#f7f8fa;color:var(--tx2);font-size:12.5px;font-weight:600;text-decoration:none}
.lt-empty{display:flex;align-items:center;justify-content:center;gap:4px;padding:22px 0;color:var(--tx3);font-size:12.5px;text-decoration:none}

/* ---------- 首页「特色服务专区」一行横滑（返乡置业 / 陪读房产 / 回迁房服务 / 急售笋房盘） ---------- */
.zone-grid{display:flex;gap:10px;overflow-x:auto;padding:2px 1px 6px;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-snap-type:x proximity}
.zone-grid::-webkit-scrollbar{display:none}
.zone-card{flex:0 0 62%;min-width:150px;max-width:230px;scroll-snap-align:start;position:relative;display:flex;align-items:flex-start;gap:9px;padding:11px 11px 11px 12px;background:#fff;border:1px solid #eef0f3;border-radius:13px;text-decoration:none;overflow:hidden}
.zone-card:active{background:#fafbfc}
.zone-card::before{content:'';position:absolute;left:0;top:0;bottom:0;width:3px;background:var(--z,var(--brand))}
.zone-ico{flex:none;width:34px;height:34px;border-radius:11px;display:flex;align-items:center;justify-content:center;color:#fff}
.zone-main{flex:1;min-width:0;display:flex;flex-direction:column}
.zone-name{font-size:13.5px;font-weight:800;color:var(--tx);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.zone-sub{margin-top:3px;font-size:10.5px;color:var(--tx3);line-height:1.4;height:29px;overflow:hidden}
.zone-cnt{margin-top:4px;display:flex;align-items:baseline;gap:3px;font-size:12px;font-weight:800;color:var(--orange);font-variant-numeric:tabular-nums}
.zone-cnt i{font-style:normal;font-size:10px;font-weight:500;color:var(--tx3)}

/* ---------- 房源详情 · 评论区（页面下部：游客可读，登录后可发表） ---------- */
.cmt-block{margin:10px 12px 0;background:#fff;border-radius:var(--r);box-shadow:var(--shadow);padding:2px 12px 12px}
.cmt-head{display:flex;align-items:center;justify-content:space-between;padding:13px 2px 9px}
.cmt-tt{display:flex;align-items:center;gap:6px;font-size:16px;font-weight:800;color:var(--tx)}
.cmt-tt i{font-style:normal;font-size:13px;font-weight:700;color:var(--brand)}
.cmt-note{font-size:11px;color:var(--tx3)}
/* 发表区 */
.cmt-form textarea{width:100%;box-sizing:border-box;border:1px solid var(--line);background:#f7f8fa;border-radius:11px;padding:10px 11px;font-size:13.5px;line-height:1.6;color:var(--tx);resize:none;font-family:inherit}
.cmt-form textarea:focus{background:#fff;border-color:var(--brand);outline:none}
.cmt-op{display:flex;align-items:center;justify-content:space-between;margin-top:8px}
.cmt-len{font-size:11.5px;color:var(--tx3);font-variant-numeric:tabular-nums}
.cmt-op .btn{height:34px;padding:0 16px;font-size:13px;border-radius:17px}
.cmt-login{display:flex;align-items:center;justify-content:space-between;gap:10px;background:#f7f8fa;border:1px dashed #dfe3e8;border-radius:11px;padding:10px 12px}
.cmt-login span{font-size:12.5px;color:var(--tx2);line-height:1.5}
.cmt-login .btn{height:32px;padding:0 14px;font-size:12.5px;border-radius:16px;flex:none}
/* 列表 */
.cmt-list{margin-top:12px}
.cmt-load,.cmt-empty{padding:26px 10px;text-align:center;color:var(--tx3);font-size:12.5px}
.cmt-empty{display:flex;flex-direction:column;align-items:center;gap:8px}
.cmt-item{display:flex;gap:10px;padding:11px 0;border-top:1px solid #f2f4f6}
.cmt-item:first-child{border-top:none;padding-top:2px}
.cmt-av{flex:none;width:34px;height:34px;border-radius:50%;display:flex;align-items:center;justify-content:center;font-size:14px;font-weight:700;overflow:hidden}
.cmt-av img{width:100%;height:100%;object-fit:cover;display:block}
.cmt-main{flex:1;min-width:0}
.cmt-meta{display:flex;align-items:center;gap:8px}
.cmt-meta b{font-size:13px;font-weight:600;color:var(--tx);overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.cmt-time{font-size:11px;color:var(--tx3);flex:none}
.cmt-txt{margin-top:4px;font-size:13.5px;line-height:1.7;color:var(--tx2);word-break:break-word;white-space:pre-wrap}
.cmt-tools{margin-top:5px;display:flex;justify-content:flex-end}
.cmt-del{border:none;background:none;color:var(--tx3);font-size:12px;padding:2px;cursor:pointer}
.cmt-del:active{color:var(--danger)}
.cmt-more{display:block;width:100%;margin:8px 0 2px;height:36px;border:1px solid var(--line);background:#fff;border-radius:18px;font-size:13px;color:var(--tx2);cursor:pointer}

/* ---------- 我的评论（「我的」→ 评论管理页） ---------- */
.mc-list{padding:10px 12px 20px;display:flex;flex-direction:column;gap:10px}
.mc-card{background:#fff;border-radius:13px;padding:11px 12px;box-shadow:var(--shadow)}
.mc-top{display:flex;align-items:center;gap:8px}
.mc-house{flex:1;min-width:0;display:flex;align-items:center;gap:5px;font-size:13px;font-weight:600;color:var(--tx);text-decoration:none;overflow:hidden}
.mc-house span{overflow:hidden;white-space:nowrap;text-overflow:ellipsis}
.mc-house svg{flex:none;color:var(--brand)}
.mc-house.off{color:var(--tx2);font-weight:500}
.mc-house.off svg{color:var(--tx3)}
.mc-txt{margin-top:7px;font-size:13.5px;line-height:1.7;color:var(--tx2);word-break:break-word;white-space:pre-wrap}
.mc-foot{margin-top:8px;display:flex;align-items:center;justify-content:space-between;border-top:1px solid #f2f4f6;padding-top:8px}
.mc-time{font-size:11.5px;color:var(--tx3)}
.mc-del{border:1px solid var(--line);background:#fff;border-radius:14px;height:28px;padding:0 12px;font-size:12.5px;color:var(--tx2);cursor:pointer}
.mc-del:active{color:var(--danger);border-color:var(--danger)}


