/* 全城房产网 · 经纪人工作台  —— 移动端样式 */
:root{
  --primary:#07a35a;
  --primary-d:#058048;
  --primary-l:#e8f8f0;
  --bg:#f2f5fb;
  --card:#ffffff;
  --text:#16202f;
  --sub:#5b6679;
  --muted:#98a1b3;
  --line:#e9edf5;
  --green:#12b886;
  --green-l:#e6f8f2;
  --orange:#f59f00;
  --orange-l:#fff5e0;
  --red:#f03e3e;
  --red-l:#ffecec;
  --purple:#7048e8;
  --purple-l:#f0eaff;
  --shadow:0 2px 10px rgba(22,32,47,.06);
  --shadow-l:0 8px 30px rgba(22,32,47,.12);
  --r:14px;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0;padding:0;height:100%}
/* 徐总 2026-10-19：换一部手机上下距离就拉大不少 —— 病根是 Android WebView 的
   「字体自动放大」（font boosting）：屏幕大 / 系统字体大的机器，它自作主张把整段文字
   吹大，卡片全被撑高。锁死 100%，咱们自己定的字号多大就是多大，哪部手机都一样。 */
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
body{
  font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei","Helvetica Neue",Arial,sans-serif;
  background:#e6eaf3;color:var(--text);font-size:15px;line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
#app{
  position:relative;max-width:480px;margin:0 auto;min-height:100vh;
  background:var(--bg);display:flex;flex-direction:column;
  box-shadow:0 0 40px rgba(0,0,0,.08);overflow:hidden;
}
button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit;font-size:inherit}
input,select,textarea{font-family:inherit;font-size:15px;color:var(--text)}
a{color:inherit;text-decoration:none}

/* ---------- 顶栏 ---------- */
.topbar{
  position:sticky;top:0;z-index:20;background:var(--card);
  padding:calc(env(safe-area-inset-top) + 10px) 16px 10px;
  border-bottom:1px solid var(--line);display:flex;align-items:center;gap:10px;
}
.topbar .tb-title{font-size:18px;font-weight:700;flex:1}
.topbar .tb-sub{font-size:12px;color:var(--muted);font-weight:400;margin-top:1px}
.topbar .tb-btn{
  width:36px;height:36px;border-radius:10px;display:grid;place-items:center;
  font-size:18px;background:var(--bg);flex:none;
}
.topbar .tb-btn:active{background:var(--primary-l)}
.back-btn{font-size:20px;width:34px;height:34px;display:grid;place-items:center;margin-left:-6px}

/* ---------- 视图区 ---------- */
.view{flex:1;overflow-y:auto;padding:14px 14px calc(84px + env(safe-area-inset-bottom))}
.section-title{font-size:13px;font-weight:700;color:var(--sub);margin:18px 2px 8px;display:flex;align-items:center;gap:6px}
.section-title:first-child{margin-top:2px}
.section-title .more{margin-left:auto;font-size:12px;color:var(--primary);font-weight:500}

/* ---------- 底部导航 ---------- */
.tabbar{
  position:fixed;bottom:0;left:0;right:0;max-width:480px;margin:0 auto;z-index:30;
  background:rgba(255,255,255,.96);backdrop-filter:blur(12px);
  border-top:1px solid var(--line);
  display:flex;padding:6px 0 calc(6px + env(safe-area-inset-bottom));
}
.tabbar .tab{
  flex:1;display:flex;flex-direction:column;align-items:center;gap:2px;
  padding:6px 0;color:var(--muted);font-size:11px;transition:.15s;
}
.tabbar .tab .ic{font-size:21px;line-height:1;filter:grayscale(1);opacity:.55;transition:.15s}
.tabbar .tab.on{color:var(--primary);font-weight:600}
.tabbar .tab.on .ic{filter:none;opacity:1;transform:translateY(-1px)}

/* ---------- 卡片 ---------- */
.card{background:var(--card);border-radius:var(--r);box-shadow:var(--shadow);border:1px solid rgba(233,237,245,.9)}
.pad{padding:14px}

/* ---------- 首页问候 ---------- */
.hero{
  background:linear-gradient(135deg,var(--primary),#0fbf6c 60%,#3ed494);
  border-radius:18px;padding:18px;color:#fff;position:relative;overflow:hidden;
  box-shadow:0 10px 26px rgba(7,163,90,.28);
}
.hero::after{content:"";position:absolute;right:-40px;top:-40px;width:150px;height:150px;border-radius:50%;background:rgba(255,255,255,.12)}
.hero::before{content:"";position:absolute;right:20px;bottom:-50px;width:100px;height:100px;border-radius:50%;background:rgba(255,255,255,.08)}
.hero h2{margin:0 0 4px;font-size:20px;font-weight:700}
.hero p{margin:0;font-size:13px;opacity:.9}

/* ---------- 数据卡 ---------- */
.stat-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:-6px}
.stat{background:var(--card);border-radius:12px;padding:12px 6px;text-align:center;box-shadow:var(--shadow)}
.stat .n{font-size:20px;font-weight:800;letter-spacing:-.5px}
.stat .l{font-size:11px;color:var(--muted);margin-top:2px}
.stat.b .n{color:var(--primary)}
.stat.g .n{color:var(--green)}
.stat.o .n{color:var(--orange)}
.stat.p .n{color:var(--purple)}

/* ---------- 快捷入口 ---------- */
.quick{display:grid;grid-template-columns:repeat(4,1fr);gap:8px;margin-top:12px}
.quick .q{background:var(--card);border-radius:12px;padding:12px 4px;text-align:center;box-shadow:var(--shadow);transition:.15s}
.quick .q:active{transform:scale(.96)}
.quick .q .ic{font-size:22px}
.quick .q .t{font-size:11.5px;color:var(--sub);margin-top:4px}

/* ---------- 列表项 ---------- */
.list{display:flex;flex-direction:column;gap:10px}
.house-item{display:flex;gap:12px;padding:12px;align-items:stretch}
.house-thumb{
  width:92px;height:72px;flex:none;border-radius:10px;position:relative;overflow:hidden;
  background:linear-gradient(135deg,#dbe6ff,#c2d4ff);display:grid;place-items:center;
  font-size:26px;color:#fff;
}
.house-thumb.g2{background:linear-gradient(135deg,#d6f5ea,#aee9d6)}
.house-thumb.g3{background:linear-gradient(135deg,#ffe8cc,#ffd8a8)}
.house-thumb.g4{background:linear-gradient(135deg,#e7dcff,#cfc0ff)}
.house-thumb .badge{position:absolute;left:0;top:0;background:var(--red);color:#fff;font-size:10px;padding:2px 6px;border-bottom-right-radius:8px;font-weight:700}
.house-main{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:center}
/* 徐总 2026-10-19：房源库卡片标题在别的手机上折成两行，卡片高出一截 ——
   标题锁死一行：小区名超长自己省略号，楼号单元/标签占死自己的宽度不再挤压它 */
.house-main .ttl{font-size:15.5px;font-weight:700;display:flex;align-items:center;gap:6px;overflow:hidden;line-height:1.35}
/* 徐总 2026-10-20「小区名显示不全了」：小区名优先占位（flex:1 1 auto）。
   挤它的元凶是「楼号单元」—— 一行里右边全 flex:none 不让步，只有小区名能缩，
   就被压成「东」「药材...」。楼号已挪到第二行（meta）开头，跟户型面积排一起。 */
.house-main .ttl .cm{min-width:0;flex:1 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.house-main .ttl>span{flex:none}
.house-main .meta{font-size:12.5px;color:var(--sub);margin-top:2px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.house-main .price{margin-top:4px;font-size:16px;font-weight:800;color:var(--red);display:flex;align-items:baseline;gap:6px}
.house-main .price small{font-size:11px;color:var(--muted);font-weight:400}
.house-main .unitp{font-size:11.5px;color:var(--muted);margin-left:auto;font-weight:400}
/* 录入人 + 归我 / 一键分享 并成一行（以前各占一行，卡片被垫高） */
.house-main .acts{display:flex;align-items:center;gap:8px;margin-top:6px;min-width:0}
.house-main .acts .who-line{margin-top:0;flex:0 1 auto;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.house-main .acts .mini{flex:none;margin-top:0}

/* 标签 */
.tag{font-size:10.5px;padding:1px 6px;border-radius:6px;font-weight:600;white-space:nowrap}
.tag.sale{background:var(--green-l);color:var(--green)}
.tag.sold{background:#eef1f6;color:var(--muted)}
.tag.urgent{background:var(--red-l);color:var(--red)}
.tag.excl{background:var(--purple-l);color:var(--purple)}
.tag.trace{background:#fff3dd;color:#9a5b06}
.tag.rent{background:var(--orange-l);color:var(--orange)}
.tag.refsrc{background:#e4f8ee;color:#058048}
.tag.lv-high{background:var(--red-l);color:var(--red)}
.tag.lv-mid{background:var(--orange-l);color:var(--orange)}
.tag.lv-low{background:#eef1f6;color:var(--sub)}
.tag.watch{background:#e6f4ff;color:#0a6fc0}

/* 等房小区（s99）：客源库里一条汇总横条 + 点开的小区名单 */
.watch-bar{margin:0 0 10px;padding:9px 12px;border-radius:12px;background:linear-gradient(135deg,#e8f8ef,#f4fcf8);
  border:1px solid #cdeedd;color:#04784a;font-size:12.5px;font-weight:600;display:flex;align-items:center;gap:4px;cursor:pointer}
.watch-bar b{font-size:14.5px;padding:0 1px}
.watch-bar em{margin-left:auto;font-style:normal;font-size:11.5px;font-weight:800;color:#07a35a;flex:none}
.watch-bar.on{background:#e4f8ee;border-color:#a9e3c6}
.wk-list{display:flex;flex-direction:column;gap:8px}
.wk-row{display:flex;align-items:center;gap:10px;padding:11px 12px;border:1px solid var(--line);border-radius:12px;background:var(--card)}
.wk-row.on{border-color:var(--primary);background:#f4fdf8}
.wk-main{flex:1;min-width:0}
.wk-n{font-size:14px;font-weight:800;color:var(--text)}
.wk-c{font-size:11.5px;color:var(--sub);margin-top:3px}
.wk-c b{color:var(--text);font-weight:800}
.wk-go{flex:none;font-size:15px;color:var(--primary);font-weight:800}
/* 名单里那句「通知他」：一键把该小区最近上的房写成话术复制走（徐总 2026-10-18 第一档） */
.wk-msg{flex:none;border:1px solid var(--primary);background:#fff;color:var(--primary);
  border-radius:20px;padding:6px 11px;font-size:12px;font-weight:800;font-family:inherit;cursor:pointer}
.wk-msg:active{background:var(--primary-l)}
.wk-new{color:#e5484d;font-weight:800}
.wk-none{color:var(--muted)}
/* 横条上那句「N 个小区近 7 天有新房」 */
.watch-bar .wb-hot{margin-left:6px;font-style:normal;font-size:11px;font-weight:800;color:#fff;
  background:#ff8c1a;border-radius:20px;padding:2px 8px}

/* 租约到期标签（出租台账 / 房源详情） */
.rtag{display:inline-block;font-size:11.5px;padding:2px 8px;border-radius:8px;font-weight:700;white-space:nowrap}
.rtag.rt-bad{background:#fdecec;color:#d92d20}
.rtag.rt-hot{background:#fff2e6;color:#e8590c}
.rtag.rt-warn{background:#fff8e1;color:#b58105}
.rtag.rt-ok{background:#e9f7ef;color:#1a7f45}

/* 客户项 */
.cust-item{display:flex;gap:12px;padding:13px 14px;align-items:center}
.avatar{width:44px;height:44px;border-radius:12px;flex:none;display:grid;place-items:center;color:#fff;font-weight:700;font-size:17px;background:linear-gradient(135deg,#0fbf6c,#07a35a)}
.cust-main{flex:1;min-width:0}
.cust-main .ttl{font-weight:700;font-size:15.5px;display:flex;align-items:center;gap:6px}
.cust-main .meta{font-size:12.5px;color:var(--sub);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.cust-main .need{font-size:12.5px;color:var(--primary);margin-top:3px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}

/* 带看项 */
.show-item{padding:13px 14px}
.show-item .row1{display:flex;align-items:center;gap:8px}
.show-item .time{font-size:12.5px;color:var(--sub);font-weight:600}
.show-item .row1 .res{margin-left:auto}
.show-item .house{font-weight:700;margin-top:6px;font-size:15px}
.show-item .cust{font-size:12.5px;color:var(--sub);margin-top:2px}

/* ---------- 空状态 ---------- */
.empty{text-align:center;padding:60px 20px;color:var(--muted)}
.empty .ic{font-size:52px;opacity:.35}
.empty p{margin:12px 0 0;font-size:13.5px}

/* ---------- 搜索 & 筛选 ---------- */
.searchbar{display:flex;gap:8px;margin-bottom:12px}
.searchbar .sb{
  flex:1;display:flex;align-items:center;gap:8px;background:var(--card);
  border-radius:11px;padding:9px 12px;box-shadow:var(--shadow);
}
.searchbar .sb input{border:none;outline:none;background:none;flex:1;font-size:14.5px}
.searchbar .sb .ic{color:var(--muted)}
.chips{display:flex;gap:8px;overflow-x:auto;padding-bottom:10px;margin-bottom:2px;-ms-overflow-style:none;scrollbar-width:none}
.chips::-webkit-scrollbar{display:none}
/* 房源库 / 客源：上头工具条钉住不动，只有下面列表滚（徐总 2026-10-17 四改）。
   根因：#app 是 min-height:100vh 会随内容往下长，overflow 罩不住 → 整页滚。
   进这两页时把外壳锁到视口高（100dvh 兼容手机地址栏），列表才有界可滚。 */
#app.locked{height:100vh;height:100dvh;overflow:hidden}
.view.split{flex:1;min-height:0;overflow:hidden;display:flex;flex-direction:column;padding:0}
.view.split .vfix{flex:none;padding:8px 14px 0;background:var(--bg);
  box-shadow:0 8px 12px -10px rgba(20,32,50,.18);z-index:2}
/* 徐总 2026-10-17：固定区占得太高，整排压缩（只压这两页，别处不变） */
.view.split .vfix .dealtabs{gap:8px;margin-bottom:8px}
.view.split .vfix .dt{padding:8px;border-radius:11px;font-size:13.5px}
.view.split .vfix .dist-bar{padding:7px 12px;margin-bottom:8px;border-radius:11px}
.view.split .vfix .dist-bar .dp{font-size:14px}
.view.split .vfix .dist-bar b{font-size:14px}
.view.split .vfix .dist-bar .dsub{font-size:11px}
.view.split .vfix .searchbar{margin-bottom:8px}
.view.split .vfix .searchbar .sb{padding:6px 12px;border-radius:10px}
.view.split .vfix .searchbar .sb input{font-size:14px}
.view.split .vfix .chips{gap:7px;padding-bottom:8px}
.view.split .vfix .chip{padding:5px 12px;font-size:12.5px}
.view.split .vfix .chips{padding-bottom:10px;margin-bottom:0}
.view.split .vlist{flex:1;min-height:0;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:2px 14px calc(84px + env(safe-area-inset-bottom))}
.chip{
  flex:none;padding:6px 14px;border-radius:20px;background:var(--card);
  font-size:13px;color:var(--sub);box-shadow:var(--shadow);white-space:nowrap;transition:.15s;
}
.chip.on{background:var(--primary);color:#fff;font-weight:600}

/* ---------- FAB ---------- */
.fab{
  position:fixed;bottom:calc(78px + env(safe-area-inset-bottom));right:calc(50% - 240px + 18px);z-index:25;
  width:54px;height:54px;border-radius:50%;background:var(--primary);color:#fff;
  display:grid;place-items:center;font-size:26px;font-weight:300;
  box-shadow:0 8px 22px rgba(7,163,90,.45);transition:.15s;
}
.fab:active{transform:scale(.93)}
@media (max-width:480px){.fab{right:18px}}

/* ---------- 详情页 ---------- */
.detail-head{background:var(--card);border-radius:var(--r);padding:16px;box-shadow:var(--shadow)}
.detail-head h2{margin:0;font-size:20px;display:flex;align-items:center;gap:8px;flex-wrap:wrap}
.detail-head .sub{color:var(--sub);font-size:13px;margin-top:4px}
.detail-price{font-size:26px;font-weight:800;color:var(--red);margin-top:10px}
.detail-price small{font-size:13px;color:var(--muted);font-weight:400;margin-left:8px}
.kv-grid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:var(--line);border-radius:var(--r);overflow:hidden;margin-top:12px}
.kv{background:var(--card);padding:12px 14px;display:flex;flex-direction:column;gap:2px}
.kv .k{font-size:11.5px;color:var(--muted)}
.kv .v{font-size:14.5px;font-weight:600}
.kv.wide{grid-column:span 2}
/* 保密备注（徐总 2026-10-18）：黄底一格，打开就知道这段不能往外说 */
.kv.secret{background:#fffaf0;border-radius:9px;box-shadow:inset 0 0 0 1px #ffe8c2;padding:8px 10px;margin-top:2px}
.kv.secret .k{color:#b8860b;font-weight:700}
.kv.secret .v{white-space:pre-wrap;word-break:break-word}

/* 时间线 */
.timeline{position:relative;padding-left:20px;margin-top:6px}
.timeline::before{content:"";position:absolute;left:5px;top:6px;bottom:6px;width:2px;background:var(--line)}
.tl-item{position:relative;padding:0 0 16px 4px}
.tl-item::before{content:"";position:absolute;left:-19px;top:4px;width:10px;height:10px;border-radius:50%;background:var(--primary);border:2px solid #fff;box-shadow:0 0 0 2px var(--primary-l)}
.tl-item .tl-date{font-size:12px;color:var(--muted)}
.tl-item .tl-body{font-size:14px;margin-top:2px}
.tl-item .tl-next{font-size:12px;color:var(--orange);margin-top:3px}

/* ---------- 按钮 ---------- */
.btn{
  display:inline-flex;align-items:center;justify-content:center;gap:6px;
  padding:11px 18px;border-radius:11px;font-size:15px;font-weight:600;transition:.15s;
  background:var(--primary-l);color:var(--primary);
}
.btn:active{transform:scale(.97)}
.btn.primary{background:var(--primary);color:#fff}
.btn.block{display:flex;width:100%}
.btn.ghost{background:var(--bg);color:var(--sub)}
.btn.danger{background:var(--red-l);color:var(--red)}
.btn.green{background:var(--green-l);color:var(--green)}
.btn-row{display:flex;gap:10px;margin-top:12px}
.btn-row .btn{flex:1}

/* ---------- 底部弹层 ---------- */
.mask{position:fixed;inset:0;background:rgba(15,22,35,.45);z-index:100;opacity:0;transition:.2s}
.mask.show{opacity:1}
.sheet{
  position:fixed;left:0;right:0;bottom:0;z-index:101;max-width:480px;margin:0 auto;
  background:var(--card);border-radius:20px 20px 0 0;padding:8px 0 calc(16px + env(safe-area-inset-bottom));
  transform:translateY(100%);transition:transform .28s cubic-bezier(.3,.8,.4,1);
  max-height:88vh;display:flex;flex-direction:column;
}
.sheet.show{transform:translateY(0)}
.sheet-head{padding:12px 18px 6px;display:flex;align-items:center}
.sheet-head .h{font-size:17px;font-weight:700;flex:1}
.sheet-head .x{width:30px;height:30px;border-radius:50%;background:var(--bg);display:grid;place-items:center;color:var(--sub);font-size:16px}
.sheet-body{overflow-y:auto;-webkit-overflow-scrolling:touch;padding:6px 18px 14px}
.sheet-foot{padding:10px 18px 4px;display:flex;gap:10px}
.sheet-foot .btn{flex:1}
/* 户型选择：按钮 + 底部弹层大格子（录入房源点选，人性化） */
.pick-btn{width:100%;text-align:left;border:1.5px solid var(--line);background:#fbfcff;border-radius:12px;
  padding:12px;font-size:15px;color:var(--muted);font-family:inherit;font-weight:600}
.pick-btn.picked{color:var(--text)}
.pick-btn:active{background:var(--primary-l)}
.pop-mask{position:fixed;inset:0;background:rgba(15,22,35,.45);z-index:1000;display:flex;align-items:flex-end;justify-content:center}
.pop-card{width:100%;max-width:480px;background:#fff;border-radius:18px 18px 0 0;padding:14px 16px 16px;
  max-height:80vh;overflow:auto;-webkit-overflow-scrolling:touch}
.pop-hd{font-size:16px;font-weight:700;text-align:center;margin-bottom:12px}
.pop-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.pop-opt{border:1.5px solid var(--line);background:#f7f9fd;color:var(--text);border-radius:12px;padding:14px 6px;
  font-size:15px;font-weight:600;font-family:inherit}
.pop-opt.on{border-color:var(--primary);background:var(--primary-l);color:var(--primary-d);box-shadow:0 4px 12px rgba(7,163,90,.18)}
.pop-ft{margin-top:12px}
.pop-cancel{width:100%;border:0;background:var(--bg);color:var(--sub);border-radius:12px;padding:13px;
  font-size:15px;font-weight:700;font-family:inherit}

/* ---------- 表单 ---------- */
.field{margin-bottom:14px}
.field label{display:block;font-size:13px;color:var(--sub);font-weight:600;margin-bottom:6px}
.field label .req{color:var(--red)}
.field input,.field select,.field textarea{
  width:100%;padding:11px 13px;border:1.5px solid var(--line);border-radius:11px;
  background:var(--bg);outline:none;transition:.15s;
}
.field textarea{min-height:76px;resize:vertical;line-height:1.5}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--primary);background:#fff}
.field-row{display:flex;gap:10px}
.field-row > *{flex:1;min-width:0}
.field-row .field{flex:1}
/* 日期选择框：空着时显示「点一下选日期」提示，选完自动藏起来 */
.date-wrap{position:relative}
.date-wrap .date-ph{position:absolute;left:13px;top:50%;transform:translateY(-50%);
  font-size:14px;color:#98a2b3;pointer-events:none;white-space:nowrap}
.date-wrap .date-ph.off{display:none}
.seg{display:flex;gap:8px;flex-wrap:wrap}
.seg .opt{padding:8px 16px;border-radius:10px;background:var(--bg);font-size:14px;color:var(--sub);border:1.5px solid transparent;transition:.15s}
.seg .opt.on{background:var(--primary-l);color:var(--primary);border-color:var(--primary);font-weight:600}

/* ---------- toast ---------- */
.toast{
  position:fixed;left:50%;top:50%;transform:translate(-50%,-50%) scale(.9);z-index:200;
  background:rgba(22,32,47,.92);color:#fff;padding:11px 20px;border-radius:12px;font-size:14px;
  opacity:0;pointer-events:none;transition:.2s;max-width:80%;text-align:center;
}
.toast.show{opacity:1;transform:translate(-50%,-50%) scale(1)}

/* ---------- 我的页 ---------- */
.profile{display:flex;align-items:flex-start;gap:12px;padding:16px}
/* 头像收小、圆形、跟名字一行对齐（徐总 2026-10-16 晚：60px 大头像吊在长介绍半中间，不合理） */
.profile .avatar{width:48px;height:48px;border-radius:50%;font-size:20px;flex:none;overflow:hidden}
.profile .avatar img{width:100%;height:100%;object-fit:cover;display:block}
.profile .p-main{flex:1;min-width:0}
.profile .p-name{font-size:18px;font-weight:800;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.profile .p-store{font-size:13px;color:var(--sub);margin-top:2px}
/* 网页版提示卡（徐总 2026-10-18）：在浏览器里用就劝一句装 APP，带一个直接下载的按钮 */
.dl-tip{display:flex;align-items:center;gap:11px;margin:0 0 12px;padding:13px;
  border-radius:14px;background:linear-gradient(135deg,#eafaf1,#dcf5e8);border:1px solid #c7ecd8}
.dl-tip .dt-ic{flex:none;width:34px;height:34px;border-radius:11px;background:linear-gradient(135deg,#08b061,#048a4c);
  color:#fff;display:flex;align-items:center;justify-content:center;font-size:17px;box-shadow:0 3px 10px rgba(6,90,52,.28)}
.dl-tip .dt-tx{flex:1;min-width:0}
.dl-tip .dt-tx b{display:block;font-size:13.5px;font-weight:800;color:#0d6b3f}
.dl-tip .dt-tx span{display:block;font-size:11.5px;color:#4b7d63;margin-top:3px;line-height:1.5}
.dl-tip .dt-go{flex:none;border:0;background:linear-gradient(135deg,#08b061,#048a4c);color:#fff;font-family:inherit;
  font-size:13px;font-weight:800;border-radius:16px;padding:8px 15px;cursor:pointer;
  box-shadow:0 3px 10px rgba(6,90,52,.28);-webkit-tap-highlight-color:transparent}
.dl-tip .dt-go:active{transform:scale(.95)}
/* 名片上的微信号（徐总 2026-10-18）：填了直接露出来；没填就红字提醒，别让人以为填过 */
.profile .p-wx{font-size:12.5px;color:var(--primary);margin-top:4px;font-weight:600;word-break:break-all}
.profile .p-wx.warn{color:#e5484d;font-weight:600}
/* 名片缩展（徐总 2026-10-18 晚）：门店并进名字行当小字；展开态底下给个「收起」暗示 */
.profile .p-store-in{font-size:12px;color:var(--muted);font-weight:500}
.profile .p-fold{font-size:11.5px;color:var(--muted);margin-top:6px}
/* 房源表单里的只读名片条：一句「沿用我的资料」，不用每套房重填 */
.wx-line{display:flex;align-items:center;gap:10px;background:#f4f7ff;border:1px solid #e2eafc;
  border-radius:12px;padding:11px 13px;font-size:13px;color:var(--sub)}
.wx-line .wx-l1{color:var(--primary);font-weight:700}
.wx-line.warn{background:#fdf3f3;border-color:#f6d8d8}
.wx-line.warn .wx-l1{color:#e5484d}
.wx-line .wx-l2{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.wx-line .mini{margin-top:0;flex:none}
.profile .p-intro{font-size:13px;color:var(--sub);line-height:1.75;margin-top:8px}
.profile .btn{flex:none;margin-top:2px}
.menu{background:var(--card);border-radius:var(--r);overflow:hidden;box-shadow:var(--shadow)}
.menu-item{display:flex;align-items:center;gap:12px;padding:14px 16px;border-bottom:1px solid var(--line);font-size:15px}
.menu-item:last-child{border-bottom:none}
.menu-item .mi{font-size:18px;width:24px;text-align:center}
.menu-item .mt{flex:1}
.menu-item .arr{color:var(--muted);font-size:16px}
.menu-item:active{background:var(--bg)}

.hint{font-size:11.5px;color:var(--muted);text-align:center;padding:16px 20px;line-height:1.7}

/* ==================== v2 云端共享版新增 ==================== */

/* 启动遮罩 */
body.booting #view{opacity:.4}
body.booting #tabbar{display:none}

/* 顶栏用户头像 */
.tb-user{
  width:36px;height:36px;border-radius:50%;flex:none;display:grid;place-items:center;
  background:linear-gradient(135deg,#0fbf6c,#07a35a);color:#fff;font-weight:700;font-size:15px;
}
.tb-user:active{transform:scale(.94)}

/* 顶栏「待回复留言」铃铛 + 数字角标 */
.tb-bell{
  position:relative;flex:none;width:36px;height:36px;border:0;background:transparent;
  font-size:19px;line-height:1;display:grid;place-items:center;margin-right:2px;
  border-radius:50%;-webkit-tap-highlight-color:transparent;
}
.tb-bell:active{background:var(--primary-l)}
.tb-bell .bell-dot{
  position:absolute;top:-1px;right:-3px;min-width:17px;height:17px;padding:0 4px;
  background:#f03e3e;color:#fff;font-size:10.5px;font-style:normal;font-weight:700;
  border-radius:9px;display:grid;place-items:center;line-height:1;
  box-shadow:0 0 0 2px #fff;
}

/* 待回复留言列表 */
.msg-item .house{font-size:13.5px;color:var(--text);font-weight:600;margin-top:5px}
/* 发布房源的是谁（2026-10-16）：收到留言的经纪人要能一眼找到发房人谈合作 */
.msg-item .pub-line{font-size:12.5px;color:var(--sub);margin-top:4px;line-height:1.6;
  background:var(--primary-l);border-radius:8px;padding:5px 8px}
.msg-item .pub-line b{color:var(--primary)}
.msg-item .msg-acts{display:flex;gap:8px;flex-wrap:wrap;margin-top:9px}
.msg-item .msg-acts .mini{cursor:pointer}
.msg-item .cust{font-size:13px;color:var(--sub);margin-top:4px;line-height:1.6;
  word-break:break-word;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
.msg-item .row1{align-items:center;gap:6px}
.msg-item{display:block}

/* 录入人标记 */
.who{font-size:10.5px;color:var(--primary);background:var(--primary-l);padding:1px 6px;border-radius:6px;font-weight:600;margin-left:auto}
.who-line{font-size:11px;color:var(--muted);margin-top:4px}
.pcount{position:absolute;right:4px;bottom:4px;background:rgba(0,0,0,.45);color:#fff;font-size:10px;padding:1px 5px;border-radius:6px}
.house-thumb img{width:100%;height:100%;object-fit:cover;display:block}

/* ---------------- 登录页 ---------------- */
.login{padding:36px 22px 20px;text-align:center}
.login-logo{font-size:56px;line-height:1}
.login h1{font-size:26px;margin:12px 0 4px;font-weight:800;letter-spacing:1px}
.login-sub{font-size:13px;color:var(--muted);margin:0 0 26px}
.login-card{background:var(--card);border-radius:18px;padding:20px 18px;box-shadow:var(--shadow-l);text-align:left}
.login-card .field input{background:var(--bg)}
.code-row{display:flex;gap:10px;align-items:stretch}
.code-row input{flex:1}
.code-row .btn{flex:none;white-space:nowrap;padding:0 16px;background:var(--primary-l);color:var(--primary);font-weight:600}
.code-row .btn:disabled{opacity:.5}
.err{color:var(--red);font-size:12.5px;min-height:16px;margin:-6px 0 8px}
.or{text-align:center;margin:14px 0;position:relative;color:var(--muted);font-size:12px}
.or::before,.or::after{content:"";position:absolute;top:50%;width:38%;height:1px;background:var(--line)}
.or::before{left:0}.or::after{right:0}
.login-tip{font-size:12px;color:var(--muted);line-height:1.8;margin-top:22px}

/* ---------------- 照片 ---------------- */
/* ---------- 房源媒体区（实拍图 / 视频 切换）+ 全屏看图器 ---------- */
.mtabs{display:flex;gap:8px;margin:12px 0 0}
.mtab{border:1.5px solid var(--line);background:#fff;color:var(--sub);font-size:13.5px;font-weight:700;padding:8px 15px;border-radius:999px;font-family:inherit;cursor:pointer}
.mtab.on{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 6px 14px rgba(7,163,90,.25)}
.mwrap .gallery,.mwrap .vgal{margin-top:10px}
.gitem{cursor:zoom-in}
.viewer{position:fixed;inset:0;background:#0b0e14;z-index:9999;display:none;flex-direction:column}
.viewer.on{display:flex}
.v-top{height:52px;display:flex;align-items:center;justify-content:space-between;padding:0 14px;color:#fff;flex:none}
.v-num{font-size:14px;font-weight:700;opacity:.92}
.v-x{background:rgba(255,255,255,.14);border:0;color:#fff;width:34px;height:34px;border-radius:50%;font-size:16px;cursor:pointer;font-family:inherit}
.v-strip{flex:1;display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.v-strip::-webkit-scrollbar{display:none}
.v-slide{flex:0 0 100%;width:100%;scroll-snap-align:center;display:flex;align-items:center;justify-content:center;padding:6px;background-size:cover;background-position:center}
.v-slide img{max-width:100%;max-height:100%;object-fit:contain;border-radius:8px}
.v-foot{flex:none;padding:12px 14px 24px;display:flex;align-items:center;justify-content:space-between;gap:10px;color:#9aa4b8;font-size:12px}
.v-save{background:var(--primary);border:0;color:#fff;font-size:13px;font-weight:700;padding:10px 16px;border-radius:999px;font-family:inherit;cursor:pointer}
body.viewer-open{overflow:hidden}
.gallery{display:grid;grid-template-columns:1fr 1fr;gap:8px;margin-top:12px}
.gitem{aspect-ratio:4/3;border-radius:10px;overflow:hidden;background:var(--bg);position:relative;background-size:cover;background-position:center}
.gitem img{width:100%;height:100%;object-fit:cover;display:block}
.gallery .gitem:first-child{grid-column:span 2;aspect-ratio:16/10}

.photo-strip{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin-bottom:10px}
.pitem{position:relative;aspect-ratio:1/1;border-radius:10px;overflow:hidden;background:var(--bg)}
.pitem img{width:100%;height:100%;object-fit:cover;display:block}
.pdel{position:absolute;right:4px;top:4px;width:22px;height:22px;border-radius:50%;background:rgba(0,0,0,.55);color:#fff;font-size:12px;display:grid;place-items:center;line-height:1}
.pempty{grid-column:span 3;text-align:center;color:var(--muted);font-size:12.5px;padding:14px}
/* 长按拖动排序（徐总 2026-10-20）：拖起来的那张放大浮起，一眼看出抓着的是哪张 */
.pitem.dragging{opacity:.9;transform:scale(1.08);z-index:5;box-shadow:0 8px 22px rgba(10,18,30,.35);transition:transform .12s}
.pitem{transition:transform .12s}

/* ---------------- 加载中 ---------------- */
.loading-mask{
  position:fixed;inset:0;z-index:300;background:rgba(255,255,255,.9);
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;
  font-size:14px;color:var(--sub);
}
.spin{width:34px;height:34px;border:3px solid var(--primary-l);border-top-color:var(--primary);border-radius:50%;animation:sp .8s linear infinite}
@keyframes sp{to{transform:rotate(360deg)}}

/* ==================== v3 合作共享版 ==================== */
.tabbar .tab .ic{position:relative}
.tabbar .tab .ic .dot{
  position:absolute;top:-5px;right:-10px;min-width:15px;height:15px;border-radius:8px;
  background:var(--red);color:#fff;font-size:10px;line-height:15px;text-align:center;
  font-style:normal;font-weight:700;padding:0 4px;filter:none;opacity:1;
}
.coop-banner{padding:12px 14px;margin-top:12px}
.coop-row{display:flex;align-items:center;gap:8px;padding:9px 0;border-top:1px solid var(--line);font-size:13px}
.coop-row:first-of-type{border-top:0}
.coop-row .txt{flex:1;color:var(--sub);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.coop-row .arr{color:var(--muted)}
.coop-item{padding:13px 14px}
.coop-item .row1{display:flex;align-items:center;gap:6px;font-size:12.5px;color:var(--sub);margin-bottom:6px}
.coop-item .house{font-size:14.5px;font-weight:700;color:var(--text)}
.coop-item .cust{font-size:12.5px;color:var(--sub);margin-top:4px}
.coop-head{padding:4px 2px 12px;border-bottom:1px solid var(--line);margin-bottom:14px}
.coop-head .ttl{font-size:16px;font-weight:700}
.coop-head .meta{font-size:12.5px;color:var(--sub);margin-top:5px;line-height:1.7}
.coop-msgbar{display:flex;gap:8px;align-items:center;padding:12px 0 4px}
.coop-msgbar input{flex:1;height:44px;border:1px solid var(--line);border-radius:12px;padding:0 14px;font-size:14px;background:var(--card)}
.switch-row{display:flex;align-items:center;gap:8px;font-size:13px;color:var(--sub)}
.role-grid{display:grid;grid-template-columns:1fr 1fr;gap:0 12px}
.role-grid .field{margin-bottom:12px}
.share-grid{display:flex;flex-direction:column;gap:10px}
.share-row{display:flex;align-items:center;gap:8px}
.share-row .lbl{width:52px;font-size:13px;color:var(--sub);flex:none}
.share-row select{flex:1;height:40px;border:1px solid var(--line);border-radius:10px;padding:0 10px;font-size:13.5px;background:var(--card);min-width:0}
.share-row input{width:62px;height:40px;border:1px solid var(--line);border-radius:10px;text-align:center;font-size:14px;font-weight:700;color:var(--primary);flex:none}
.share-row .unit{font-size:13px;color:var(--muted);flex:none}
.deal-card{padding:13px 14px}
.deal-card .row1{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--sub)}
.deal-card .row1 .price{font-size:17px;font-weight:800;color:var(--red)}
.deal-card .house{font-size:14px;font-weight:700;margin:8px 0 4px}
.deal-card .meta{font-size:12px;color:var(--muted);margin-top:4px}
.deal-card .chain{display:flex;flex-wrap:wrap;gap:4px 12px;margin-top:9px;font-size:12px;color:var(--sub);background:var(--bg);border-radius:10px;padding:9px 11px}
.share-list{margin-top:10px;border-top:1px dashed var(--line);padding-top:8px}
.share-li{display:flex;align-items:center;gap:8px;font-size:12.5px;color:var(--sub);padding:3px 0}
.share-li b{color:var(--text);font-weight:600}
.share-li span:first-child{width:52px;flex:none;color:var(--muted)}
.share-li .amt{margin-left:auto;color:var(--red);font-weight:700}
.quick .q .t{font-size:10.5px}

/* ==================== v3.1 邀请同事 / 安装到桌面 ==================== */

/* 我的页 / 员工管理页 顶部的邀请卡片 */
.invite-card{
  display:flex;align-items:center;gap:12px;
  background:linear-gradient(135deg,#0fbf6c,#07a35a);
  color:#fff;border-radius:16px;padding:14px 16px;margin:14px 0 4px;
  box-shadow:0 8px 20px rgba(7,163,90,.26);cursor:pointer;
}
.invite-card:active{transform:scale(.985)}
.invite-card .iv-ic{font-size:26px;flex:none;line-height:1}
.invite-card .iv-main{flex:1;min-width:0}
.invite-card .iv-t{font-size:15.5px;font-weight:700;letter-spacing:.3px}
.invite-card .iv-s{font-size:12px;opacity:.9;margin-top:3px;line-height:1.5}
.invite-card .iv-go{
  font-size:12.5px;background:rgba(255,255,255,.22);padding:5px 10px;
  border-radius:20px;flex:none;white-space:nowrap;
}

/* 邀请同事卡「压扁版」（徐总 2026-10-18 晚：再扁一点，尽量少占空间，不耽误用就行）
   原来的绿卡两行字 + 大内边距，占掉小半屏；现在只留 图标 + 一句话 + 去邀请按钮，
   高度砍掉约一半。二维码、邀请链接、安装教程、审核说明全在点开的弹层里，一个字没少。
   —— 只用在「我的」「员工」这两处邀请卡，首页那些快捷卡不加 compact，保持原样。 */
.invite-card.compact{
  gap:9px;padding:9px 13px;border-radius:12px;margin:10px 0 2px;
  box-shadow:0 4px 12px rgba(7,163,90,.2);
}
.invite-card.compact .iv-ic{font-size:18px}
.invite-card.compact .iv-t{font-size:14.5px;letter-spacing:.2px}
.invite-card.compact .iv-go{font-size:12px;padding:4px 10px}

/* 首页「扫码线索」卡片：浅绿底配深字（沿用 invite-card 结构，默认是深底白字，看不清） */
.ref-card{
  background:linear-gradient(135deg,#e9f9f1,#d6f4e5);
  color:#0a6b40;box-shadow:0 8px 20px rgba(7,163,90,.16);
  border:1px solid #c4ecd6;
}
.ref-card .iv-t{color:#085c37}
.ref-card .iv-s{color:#2f6b52;opacity:1;font-weight:500}
.ref-card .iv-go{background:rgba(7,163,90,.13);color:#07a35a;font-weight:700}

/* 邀请弹层 */
.iv-box{text-align:center;padding-bottom:6px}
.iv-app{display:flex;align-items:center;gap:11px;text-align:left;padding:4px 2px 12px}
.iv-app img{width:46px;height:46px;border-radius:12px;flex:none}
.iv-app b{display:block;font-size:16px}
.iv-app span{font-size:12px;color:var(--muted)}
.iv-qr{display:inline-block;padding:10px;background:#fff;border:1px solid var(--line);border-radius:14px}
.iv-qr img,.iv-qr canvas{display:block;margin:0 auto}
.iv-qr-tip{font-size:12px;color:var(--muted);margin-top:9px}
.iv-box .field{text-align:left}
.iv-box .field input{font-size:12px;color:#3b4a63;background:#f7f9fd}
.iv-box .btn.block{width:100%}
.iv-note{
  margin-top:14px;text-align:left;font-size:12.5px;line-height:1.9;color:var(--sub);
  background:#f7f9fd;border-radius:12px;padding:11px 13px;
}

/* iOS 添加到主屏幕引导条 */
.ios-install-bar{
  position:fixed;left:12px;right:12px;bottom:76px;z-index:280;
  background:rgba(24,32,48,.96);color:#fff;border-radius:14px;padding:12px 14px;
  display:flex;gap:10px;align-items:flex-start;
  box-shadow:0 10px 30px rgba(0,0,0,.35);font-size:13px;line-height:1.75;
  animation:ivIn .25s ease-out;
}
@keyframes ivIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
.ios-install-bar .t{flex:1;min-width:0}
.ios-install-bar b{color:#ffd88c}
.ios-install-bar button{
  flex:none;border:0;background:rgba(255,255,255,.18);color:#fff;border-radius:10px;
  padding:6px 12px;font-size:12px;margin-top:2px;
}

/* ==================== 一键发朋友圈 ==================== */
.poster-wrap{margin:0 auto 12px;text-align:center}
.poster-wrap img{width:100%;max-width:320px;border-radius:12px;box-shadow:var(--shadow-l);display:inline-block}
.mini{
  margin-top:8px;border:1px solid var(--primary);color:var(--primary);background:#fff;
  font-size:12px;font-weight:600;padding:5px 10px;border-radius:9px;line-height:1.2;
}
.mini:active{background:var(--primary-l)}
/* 删除留言这类「危险」小按钮：红字红框，一眼分得清 */
.mini.danger{border-color:#e5484d;color:#e5484d}
.mini.danger:active{background:#fdecec}
#poster-text,#share-text{font-size:13px;line-height:1.7}

/* ---- 分享面板 ---- */
.sh-top{display:flex;gap:12px;margin:2px 0 12px;align-items:stretch}
.sh-poster{width:44%;max-width:158px;max-height:216px;object-fit:cover;object-position:top;border-radius:12px;box-shadow:var(--shadow-l);display:block}
.sh-noimg{
  width:46%;max-width:170px;border-radius:12px;background:var(--primary-l);color:#6b7ea8;
  font-size:12.5px;display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;padding:14px 8px;line-height:1.6;
}
.sh-noimg span{font-size:11px;color:var(--muted)}
.sh-side{flex:1;display:flex;flex-direction:column;justify-content:space-between;gap:10px}
.sh-count{
  background:#f4f7ff;border-radius:12px;padding:12px 14px;font-size:12.5px;color:var(--sub);line-height:1.5;
}
.sh-count b{font-size:26px;color:var(--primary);font-weight:800;margin-right:2px}
.sh-count span{display:block;color:var(--muted);font-size:11.5px}
.sh-safe{
  background:#eefbf3;border-radius:12px;padding:12px 14px;font-size:12px;color:#1c8f52;
  line-height:1.6;font-weight:600;
}
.share-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin-top:14px}
.sopt{
  background:#fff;border:1px solid var(--line);border-radius:14px;padding:14px 8px;
  display:flex;flex-direction:column;align-items:center;gap:3px;box-shadow:var(--shadow);
}
.sopt span{font-size:24px;line-height:1.1}
.sopt b{font-size:14px;color:#1a1f36;font-weight:700}
.sopt small{font-size:11px;color:var(--muted)}
.sopt:active{background:var(--primary-l);border-color:var(--primary)}

/* ==================== 出售 / 出租 分块 ==================== */
.dealtabs{display:grid;grid-template-columns:1fr 1fr;gap:9px;margin:0 0 10px}
.dt{
  background:#fff;border:1px solid var(--line);border-radius:13px;padding:12px 8px;
  font-size:14px;font-weight:600;color:var(--sub);box-shadow:var(--shadow);
}
.dt b{font-weight:800;color:var(--primary);margin-left:3px}
.dt.on{background:linear-gradient(135deg,#07a35a,#0fbf6c);color:#fff;border-color:transparent;box-shadow:0 5px 14px rgba(7,163,90,.28)}
.dt.on b{color:#fff}

/* ==================== 地区切换（济宁 12 县市区）==================== */
/* 列表页顶部一行「📍 兖州 · 当前地区」，点开选地区（徐总 2026-10-16） */
.dist-bar{
  width:100%;display:flex;align-items:center;gap:8px;margin:0 0 10px;
  background:var(--card);border:1px solid var(--line);border-radius:13px;
  padding:11px 13px;font-size:14px;color:var(--text);box-shadow:var(--shadow);text-align:left;
}
.dist-bar .dp{font-size:16px;line-height:1;flex:none}
.dist-bar b{font-size:15px;font-weight:800;color:var(--primary);flex:none}
.dist-bar .dsub{font-size:11.5px;color:var(--muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.dist-bar .darr{margin-left:auto;color:var(--muted);font-size:12px;flex:none}
.dist-bar:active{background:var(--primary-l);border-color:var(--primary)}
/* 地区选择面板：按「济宁市区 / 县市」分组铺格子，一屏点完 */
.ds-g{font-size:12.5px;font-weight:700;color:var(--sub);margin:14px 2px 8px}
.ds-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.ds-b{
  background:#fff;border:1px solid var(--line);border-radius:11px;padding:11px 4px;
  font-size:14px;font-weight:600;color:var(--sub);
}
.ds-b.on{background:linear-gradient(135deg,#07a35a,#0fbf6c);color:#fff;border-color:transparent;box-shadow:0 4px 12px rgba(7,163,90,.25)}
.ds-b:active{background:var(--primary-l)}

/* ==================== 散户：快捷入口 + 房源留言 ==================== */
.qs-grid{display:grid;grid-template-columns:1fr 1fr;gap:10px;margin:12px 0 4px}
.qs{
  background:var(--card);border:1px solid var(--line);border-radius:14px;padding:14px 12px;
  display:flex;flex-direction:column;align-items:flex-start;gap:2px;box-shadow:var(--shadow);text-align:left;
}
.qs .ic{font-size:22px;line-height:1.1}
.qs b{font-size:14.5px;color:var(--text);font-weight:700}
.qs small{font-size:11.5px;color:var(--muted)}
.qs:active{background:var(--primary-l);border-color:var(--primary)}

.msg-list{display:flex;flex-direction:column;gap:8px}
.msg{background:var(--card);border-radius:13px;padding:11px 13px;box-shadow:var(--shadow)}
.msg.staff{background:#f2f7ff;border-left:3px solid var(--primary)}
.msg .m-h{font-size:12px;color:var(--muted);display:flex;align-items:center;gap:6px}
.msg .m-h .tag{margin-left:0}
.msg .m-t{margin-left:auto;font-size:11px}
.msg .m-c{font-size:14.5px;color:var(--text);line-height:1.65;margin-top:5px;white-space:pre-wrap;word-break:break-word}
.msg-box{display:flex;gap:8px;align-items:flex-end;margin:10px 0 4px}
.msg-box textarea{
  flex:1;border:1px solid var(--line);border-radius:13px;padding:11px 13px;font-size:14px;resize:none;
  font-family:inherit;background:#fff;box-shadow:var(--shadow);
}
.msg-box textarea:focus{outline:none;border-color:var(--primary)}
.msg-box .btn{flex:none}

/* ---------- 微信扫码登录（放大二维码面板） ---------- */
#wx-sheet{position:fixed;inset:0;z-index:9999;background:#fff;display:flex;flex-direction:column}
#wx-sheet .wx-bar{
  flex:none;display:flex;align-items:center;gap:10px;padding:10px 12px;
  padding-top:calc(10px + env(safe-area-inset-top));
  border-bottom:1px solid var(--line);background:#fff
}
#wx-sheet .wx-title{flex:1;text-align:center;font-size:16px;font-weight:700;color:var(--text)}
#wx-sheet .wx-btn{
  border:1px solid var(--line);background:#fff;color:var(--text);border-radius:9px;
  padding:7px 12px;font-size:13px;font-weight:600
}
#wx-sheet .wx-btn:active{background:var(--primary-l)}
#wx-sheet .wx-stage{flex:1;position:relative;overflow:hidden;background:#fff}
#wx-sheet .wx-stage iframe{
  position:absolute;left:0;top:0;width:390px;height:844px;border:0;background:#fff
}
#wx-sheet .wx-tips{
  flex:none;padding:10px 16px 14px;padding-bottom:calc(12px + env(safe-area-inset-bottom));
  background:#f7f9fd;border-top:1px solid var(--line)
}
#wx-sheet .wx-t1{font-size:14px;font-weight:700;color:var(--text)}
#wx-sheet .wx-t2{margin-top:6px;font-size:13px;line-height:1.75;color:#42506b}
#wx-sheet .wx-t3{margin-top:6px;font-size:11.5px;color:var(--muted);line-height:1.6}

/* ---------- 拍照 / 相册 / 视频 多入口 + 视频展示 ---------- */
.mbtns{display:grid;grid-template-columns:1fr 1fr;gap:8px}
.mbtn{
  border:1.5px solid #cfdcff;background:#fff;color:var(--primary-d);border-radius:11px;
  padding:11px 6px;font-size:13px;font-weight:700;font-family:inherit
}
.mbtn:active{background:var(--primary-l)}
.pitem.vp{background:#0f1522}
.pitem.vp img{opacity:.85}
.pitem.vp .vtag{
  position:absolute;left:0;right:0;bottom:0;background:linear-gradient(transparent,rgba(0,0,0,.72));
  color:#fff;font-size:11.5px;font-weight:700;padding:14px 0 5px;text-align:center
}
.vgal{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:12px}
.vitem{background:#0f1522;border-radius:10px;overflow:hidden;aspect-ratio:4/3;position:relative}
.vitem video{width:100%;height:100%;display:block;background:#000}
.vitem .vplay{
  position:absolute;inset:0;display:grid;place-items:center;color:#fff;font-size:13px;font-weight:700;
  background:rgba(0,0,0,.5)
}

/* 详情页顶部快捷编辑按钮 */
.quick-edit{
  margin-top:10px;width:auto;display:inline-block;padding:9px 16px;font-size:13.5px;
  background:rgba(255,255,255,.18);color:#fff;border:1.5px solid rgba(255,255,255,.55)
}

/* ---------- 待审核 / 已停用 拦截页 ---------- */
.gate-wrap{padding:52px 22px 40px;text-align:center}
.gate-ic{font-size:52px;line-height:1}
.gate-wrap h2{margin:14px 0 6px;font-size:20px}
.gate-sub{color:var(--sub);font-size:13.5px;line-height:1.75;margin:0 0 18px}
.gate-card{
  background:var(--card);border-radius:var(--r);padding:14px 16px;text-align:left;
  box-shadow:var(--shadow);margin-bottom:18px
}
.gate-row{display:flex;justify-content:space-between;font-size:13.5px;padding:5px 0}
.gate-row span{color:var(--sub)}
.gate-tip{
  margin-top:10px;padding-top:10px;border-top:1px dashed var(--line);
  font-size:12px;color:var(--muted);line-height:1.7
}
/* 新人自填姓名 */
.gate-name{
  background:var(--card);border-radius:var(--r);padding:14px 16px;text-align:left;
  box-shadow:var(--shadow);margin-bottom:18px
}
.gate-name-t{font-size:12.5px;color:var(--sub);margin-bottom:9px}
.gate-name input{
  width:100%;box-sizing:border-box;height:42px;padding:0 12px;font-size:14.5px;
  border:1px solid var(--line);border-radius:10px;background:#fff;color:var(--text);outline:none
}
.gate-name input:focus{border-color:var(--primary)}
.gate-name .btn{margin-top:10px}

/* ---------- 待审核成员卡片 ---------- */
.pend-card{
  background:linear-gradient(135deg,#fff8e8,#ffeec9);border:1px solid #ffe0a8;
  border-radius:var(--r);padding:13px 15px;margin-bottom:10px
}
.pend-card .pc-t{font-size:14.5px;font-weight:700;color:#8a5a00}
.pend-card .pc-s{font-size:12.5px;color:#a4781f;margin-top:4px}
.pend-btns{display:flex;gap:8px;margin-top:11px}
.pend-btns button{
  flex:1;padding:9px 0;border-radius:10px;font-size:13.5px;font-weight:700;font-family:inherit
}
.pend-ok{background:var(--green);color:#fff}
.pend-no{background:#fff;color:var(--sub);border:1.5px solid var(--line)}
.pend-del{background:#fff;color:var(--red);border:1.5px solid #ffd5d5;flex:0 0 76px!important}

/* ---------- 更新提示条 ---------- */
.up-bar{
  position:fixed;left:0;right:0;bottom:0;z-index:900;max-width:480px;margin:0 auto;
  background:linear-gradient(135deg,#07a35a,#048a4c);color:#fff;
  padding:11px 16px;display:flex;align-items:center;gap:10px;
  box-shadow:0 -6px 20px rgba(7,163,90,.28);font-size:13.5px
}
.up-bar .up-t{flex:1;font-weight:600}
.up-bar button{
  background:#fff;color:var(--primary-d);font-weight:700;border-radius:9px;
  padding:7px 14px;font-size:13px;font-family:inherit
}
.up-bar .up-x{background:transparent;color:rgba(255,255,255,.8);padding:7px 4px;font-weight:400}

/* 「我的」页：当前登录账号提示 */
.profile .p-phone{
  font-size:12px;color:var(--muted);margin-top:4px;
  background:var(--bg);display:inline-block;padding:2px 8px;border-radius:8px
}

/* ---------- 🤖 AI 录房源 ---------- */
/* 拍照录房源入口（徐总 2026-10-18 晚）：AI 卡下面一条扁按钮，虚线浅底不抢戏 */
.ai-photo-btn{
  display:flex;align-items:center;justify-content:center;gap:6px;width:100%;
  margin:7px 0 0;padding:10px 12px;border-radius:12px;border:1px dashed #c9d6e4;
  background:#f6f9fc;color:#1b6bb5;font-size:13.5px;font-weight:700;font-family:inherit;
}
.ai-photo-btn:active{transform:scale(.99);background:#eef4fa}
.ai-photo-btn:disabled{opacity:.6}
/* 表单顶上那块「照片上认出来的字」：只给人核对，不提交 */
.ai-rawbox{background:#f2f7fd;border:1px solid #d8e6f5;border-radius:11px;padding:9px 11px;margin:0 0 12px}
.ai-rawbox .arb-t{font-size:12.5px;font-weight:800;color:#1b6bb5;display:flex;align-items:center;gap:6px;flex-wrap:wrap}
.ai-rawbox .arb-tip{font-weight:400;color:var(--muted);font-size:11.5px}
.ai-rawbox .arb-tg{margin-left:auto;font-size:11.5px;color:#1b6bb5;background:transparent;border:0;font-family:inherit;padding:2px 4px}
.ai-rawbox .arb-x{font-size:13px;color:var(--text);line-height:1.65;white-space:pre-wrap;word-break:break-word;margin-top:6px;max-height:190px;overflow:auto}
.ai-rawbox.off .arb-x{display:none}

.ai-card{
  display:flex;align-items:center;gap:12px;margin:12px 0 2px;padding:14px;
  background:linear-gradient(135deg,#7c3aed 0%,#4d6bff 100%);color:#fff;
  border-radius:var(--r);box-shadow:0 6px 18px rgba(7,163,90,.28);cursor:pointer;
}
.ai-card:active{transform:scale(.985)}
.ai-card .ai-ic{width:42px;height:42px;flex:none;border-radius:12px;background:rgba(255,255,255,.22);
  display:flex;align-items:center;justify-content:center;font-size:23px;line-height:1}

/* ====== AI 智能核图标（自绘 SVG，渐变球+智能火花+旋转轨道）====== */
.ai-orb{display:inline-block;vertical-align:-0.2em;animation:orbPulse 2.8s ease-in-out infinite}
@keyframes orbPulse{0%,100%{filter:drop-shadow(0 2px 5px rgba(93,95,255,.4))}50%{filter:drop-shadow(0 4px 12px rgba(93,95,255,.8))}}
.ai-orb .spin{animation:orbSpin 7s linear infinite;transform-box:view-box;transform-origin:50% 50%}
@keyframes orbSpin{to{transform:rotate(360deg)}}
.ai-card .ai-main{flex:1;min-width:0}
.ai-card .ai-t{font-size:15.5px;font-weight:700;letter-spacing:.3px}
.ai-card .ai-s{font-size:12.5px;opacity:.88;margin-top:3px}
.ai-card .ai-go{flex:none;font-size:12.5px;padding:5px 11px;border-radius:20px;background:rgba(255,255,255,.24)}
/* 第二条卡片（拍视频智能录入）：换个配色，跟「AI 录房源」区分开 */
.ai-card-v{background:linear-gradient(135deg,#0f9f6e 0%,#12b886 100%);box-shadow:0 6px 18px rgba(18,184,134,.26);margin-top:10px}
/* 录房源表单里的「拍段视频，AI 自动填」小盒子 */
.aiv-box{margin-top:12px;padding:12px;border:1px dashed #c3e9dc;background:#f2fcf8;border-radius:12px}
.aiv-t{font-size:14px;font-weight:700;color:#0b6b4b}
.aiv-s{font-size:12px;color:#4a7a68;line-height:1.6;margin:4px 0 10px}
.aiv-keep{display:flex;align-items:center;gap:7px;font-size:12.5px;color:var(--sub);margin-top:9px;line-height:1.5}
.aiv-keep input{width:16px;height:16px;flex:none}
.aiv-prog{margin-top:9px;padding:9px 11px;border-radius:10px;background:#e8f8f0;color:#058048;
  font-size:13px;font-weight:600;text-align:center}
.ai-tip{font-size:13px;color:var(--sub);line-height:1.7;background:#f5f7fb;border-radius:10px;padding:10px 12px;margin:2px 0 14px}
.ai-tip i{font-style:normal;color:var(--primary);word-break:break-all}
.ai-textarea{width:100%;min-height:128px;padding:11px 12px;border:1px solid var(--line);border-radius:10px;
  background:#fff;line-height:1.65;font-size:14.5px;resize:vertical;outline:none}
.ai-textarea:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-l)}

/* ---------- 合规存证页 ---------- */
.cp-tabs{display:flex;gap:8px;margin:12px 0 10px}
.cp-tab{flex:1;border:1px solid var(--line);background:#fff;color:var(--sub);border-radius:11px;
  padding:10px 6px;font-size:13.5px;font-weight:700;font-family:inherit;cursor:pointer;
  display:flex;align-items:center;justify-content:center;gap:6px;transition:.15s}
.cp-tab i{font-style:normal;font-size:11.5px;background:#eef1f6;color:#5a6678;border-radius:9px;padding:1px 7px;font-weight:700}
.cp-tab.on{border-color:var(--primary);background:var(--primary-l);color:var(--primary-d)}
.cp-tab.on i{background:var(--primary);color:#fff}
.cp-search{display:flex;gap:8px;align-items:center;margin-bottom:10px}
.cp-search input{flex:1;min-width:0;padding:10px 12px;border:1px solid var(--line);border-radius:10px;
  font-size:14px;font-family:inherit;outline:none;background:#fff}
.cp-search input:focus{border-color:var(--primary);box-shadow:0 0 0 3px var(--primary-l)}
.cp-search .btn{flex:none}

/* 首页英雄卡右上角的版本小牌：让「更新了没有」一眼可见，不用再猜 */
.hero .vchip{
  position:absolute;top:14px;right:14px;z-index:2;
  font-size:10.5px;font-weight:700;letter-spacing:.5px;
  background:rgba(255,255,255,.22);border:1px solid rgba(255,255,255,.4);
  color:#fff;border-radius:9px;padding:2px 8px;
}

/* ==================== 📥 采集箱（徐总 2026-10-18 晚） ====================
   抖音 / 小红书 / 朋友圈看到的房源和求购，先收进来再整理。
   首页那张卡走青色，跟「AI 录房源」的紫、「拍视频」的绿分开，一眼认得出。 */
.col-card{background:linear-gradient(135deg,#1f8bb5 0%,#2aa8c8 100%);box-shadow:0 6px 18px rgba(31,139,181,.26);margin-top:10px}
.col-card .col-n{margin-left:8px;font-size:11.5px;font-weight:800;padding:2px 8px;border-radius:20px;background:rgba(255,255,255,.28)}

.col-item{padding:12px 14px}
.col-item .row1{display:flex;align-items:center;gap:8px;margin-bottom:5px}
.col-item .col-when{margin-left:auto;font-size:11.5px;color:var(--muted)}
.col-item .col-t{font-size:15px;font-weight:700;line-height:1.35;word-break:break-word}
.col-item .col-s{font-size:12.5px;color:var(--sub);margin-top:4px;word-break:break-word}
/* 已转 / 不要了的：压暗，别跟待处理的抢眼睛 */
.col-item.done{opacity:.7}
.col-item .col-done{font-size:11.5px;color:var(--primary);margin-top:5px;font-weight:600}
.col-item .col-dropped{font-size:11.5px;color:var(--muted);margin-top:5px}

.col-head{display:flex;align-items:center;gap:8px;margin:0 0 10px}
.col-head .col-src{margin-left:auto;font-size:12px;color:var(--muted)}
.col-phone{display:flex;align-items:center;gap:8px;font-size:15px;background:var(--primary-l);
  border-radius:10px;padding:9px 12px;margin:10px 0 0}
.col-phone b{letter-spacing:.5px}
.col-phone .mini{margin-top:0;flex:none;text-decoration:none}

/* 录房源防重复：插在表单顶部的疑似重复提醒块（s130 巡检改版，不再另开弹层顶掉表单） */
.dup-warn{background:#fff8ec;border:1.5px solid #f3c268;border-radius:12px;padding:11px 13px;margin:0 0 12px}
.dup-warn .dw-t{font-size:14.5px;font-weight:800;color:#a05a00}
.dup-warn .dw-s{font-size:12px;color:var(--sub);line-height:1.7;margin:5px 0 8px}
.dup-warn .dw-li{background:#fff;border:1px solid var(--line);border-radius:9px;padding:8px 10px;margin:0 0 7px}
.dup-warn .dw-n{font-size:13.5px;font-weight:700;color:var(--text)}
.dup-warn .dw-d{font-size:11.5px;color:var(--sub);margin-top:2px}

/* 成交结算单：公司房源 / 公司客源 / 请人帮忙谈，三个勾选项（s132） */
.dl-chk{display:flex;align-items:flex-start;gap:6px;font-size:12px;color:var(--sub);line-height:1.65;margin-top:7px;cursor:pointer}
.dl-chk input{width:16px;height:16px;margin:2px 0 0;flex:none;accent-color:#0fae5f}
