
:root{
  --primary:#07a35a; --primary-d:#058048; --primary-l:#e8f8f0;
  --accent:#ff6b00; --accent-d:#e05f00; --accent-l:#fff1e6;
  --bg:#f3f5f8; --card:#fff; --text:#141b25; --text-2:#334155;
  --sub:#6b7787; --muted:#9aa6b5;
  --line:#edf0f4; --line-2:#f3f6f9;
  --green:#07a35a; --green-l:#e8f8f0;
  --gold:#b8860b; --gold-l:#fff6dc;
  --red:#ef4444; --shadow:0 1px 3px rgba(0,0,0,.05);
  --shadow-md:0 4px 14px rgba(20,32,50,.07);
  --shadow-lg:0 10px 40px rgba(20,32,50,.10);
  --radius:16px; --radius-sm:12px; --radius-xs:8px;
}
html{-webkit-text-size-adjust:100%;text-size-adjust:100%}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
body{margin:0;font-family:-apple-system,BlinkMacSystemFont,"PingFang SC","Microsoft YaHei",sans-serif;
  color:var(--text);background:var(--bg);min-height:100vh;padding-bottom:96px}
/* 顶部门店/经纪人名牌（.hd）已按徐总要求去掉 —— 不再显示「中惠地产」字样，
   进页面第一眼就是绿色大横幅 + 功能按钮 */
/* 顶部名牌/标签条已全部去掉（徐总 2026-10-15）—— 子页用 .subbar 自带返回 */
/* 返回键（徐总 2026-10-16 晚：原来就是一行灰字，看不清也难点中）——
   做成绿色小药丸：白底绿字太素，绿底白字一眼就是「能点的」；
   加大点击热区（padding 7px 13px + touch-action），手机上一下就中 */
.subbar{display:flex;align-items:center;gap:10px;padding:10px 12px 2px}
.subbar .back{flex:none;display:inline-flex;align-items:center;gap:3px;font-size:14px;font-weight:800;
  color:#fff;background:linear-gradient(135deg,#0aa35b,#078a4c);border-radius:17px;padding:7px 14px;
  cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:rgba(7,163,90,.15);
  box-shadow:0 2px 8px rgba(7,163,90,.25)}
.subbar .back:active{transform:translateY(1px)}
.subbar b{font-size:16px;font-weight:800;color:var(--text)}
/* 城市切换弹层 */
.city-row{display:flex;align-items:center;justify-content:space-between;padding:14px 6px;border-bottom:1px solid var(--line-2);font-size:15px;font-weight:600;color:var(--text);cursor:pointer}
.city-row:last-child{border-bottom:0}
.city-row small{font-size:11.5px;color:var(--muted);font-weight:500}
.city-row.on{color:var(--primary-d)}
.city-row .ck{font-size:13px;color:var(--primary);font-weight:800}
/* 地区选择（济宁 12 县市区）：按「济宁市区 / 县市」分组铺格子 */
.cg-t{font-size:12.5px;font-weight:800;color:var(--sub);margin:14px 2px 8px}
.cg-t:first-of-type{margin-top:6px}
.cg-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:8px}
.cg-b{border:1px solid var(--line-2);background:#fff;border-radius:11px;padding:12px 4px;font-size:14px;font-weight:600;color:var(--text-2);font-family:inherit;cursor:pointer}
.cg-b.on{background:linear-gradient(135deg,#07a35a,#0fbf6c);color:#fff;border-color:transparent;box-shadow:0 4px 12px rgba(7,163,90,.25)}
.cg-b:active{background:var(--primary-l)}
/* 看房源：出售/出租分开 + 筛选 */
.fbar{padding:2px 0 4px}
.tabs2{display:flex;gap:8px;margin-bottom:12px}
.tabs2 button{flex:1;border:1.5px solid var(--line);background:#fff;color:var(--text-2);border-radius:var(--radius-sm);
  padding:12px 4px;font-size:15px;font-weight:700;font-family:inherit;display:flex;align-items:center;
  justify-content:center;gap:6px;box-shadow:var(--shadow)}
.tabs2 button.on{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 6px 14px rgba(37,99,235,.25)}
.tabs2 .n{font-size:11px;font-weight:700;background:rgba(0,0,0,.06);border-radius:9px;padding:1px 7px;min-width:18px}
.tabs2 button.on .n{background:rgba(255,255,255,.3);color:#fff}
.frow{display:flex;gap:8px;align-items:center;margin-bottom:14px}
.fkw{flex:1;display:flex;align-items:center;gap:7px;background:#fff;border:1.5px solid var(--line);
  border-radius:var(--radius-sm);padding:0 12px;height:44px;box-shadow:var(--shadow)}
.fkw input{border:0;outline:0;flex:1;font-size:14.5px;background:transparent;font-family:inherit;color:var(--text)}
.fkw span{font-size:14px;color:var(--muted)}
.fbtn{flex:0 0 auto;height:44px;border:0;background:var(--primary-l);color:var(--primary-d);
  border-radius:var(--radius-sm);padding:0 15px;font-size:14px;font-weight:700;font-family:inherit;white-space:nowrap}
.fbtn.on{background:var(--primary);color:#fff}
.fchips{display:flex;flex-wrap:wrap;gap:7px}
.fact{display:flex;gap:10px;margin-top:18px}
.fact button{border:0;border-radius:12px;padding:13px;font-size:15px;font-weight:700;font-family:inherit}
.fact .freset{flex:0 0 34%;background:#f2f4f8;color:var(--sub)}
.fact .fok{flex:1;background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff}
.wrap{max-width:560px;margin:0 auto;padding:12px}
.card{background:#fff;border-radius:var(--radius);box-shadow:var(--shadow-md);padding:16px;margin-bottom:14px;border:1px solid var(--line-2)}
.h-item{display:flex;gap:14px;cursor:pointer;align-items:flex-start}
.h-thumb{width:120px;height:90px;border-radius:var(--radius-sm);overflow:hidden;flex:0 0 120px;background:#eef2f9;
  display:flex;align-items:center;justify-content:center;font-size:26px;color:#c3cddd}
.h-thumb img{width:100%;height:100%;object-fit:cover;display:block}
.h-main{flex:1;min-width:0;display:flex;flex-direction:column;justify-content:space-between;min-height:90px}
.h-ttl{font-size:15.5px;font-weight:700;margin-bottom:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:var(--text)}
.h-meta{font-size:12.5px;color:var(--sub);margin-bottom:6px}
.h-price{font-size:17px;font-weight:800;color:var(--accent)}
.h-price small{font-weight:500;font-size:12px;color:var(--muted);margin-left:3px}
.h-msg{font-size:11.5px;color:var(--muted);margin-top:5px;background:var(--primary-l);display:inline-block;padding:3px 8px;border-radius:6px}
.empty{text-align:center;color:var(--muted);padding:40px 12px;font-size:14px;line-height:1.9}
.field{margin-bottom:12px}
.field label{display:block;font-size:13px;color:var(--sub);margin-bottom:6px;font-weight:600}
.field input,.field select,.field textarea{width:100%;border:1.5px solid var(--line);border-radius:12px;
  padding:12px;font-size:15px;color:var(--text);background:#fbfcff;outline:none;font-family:inherit}
.field input:focus,.field select:focus,.field textarea:focus{border-color:var(--primary);background:#fff}
.row3{display:flex;gap:8px}.row3 .field{flex:1;margin-bottom:12px}
.chips{display:flex;flex-wrap:wrap;gap:7px}
.chip{border:1.5px solid var(--line);background:#f7f9fd;color:var(--sub);border-radius:20px;
  padding:8px 13px;font-size:13.5px;font-weight:600;font-family:inherit}
.chip.on{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 4px 10px rgba(37,99,235,.22)}
.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)}
.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:520px;background:#fff;border-radius:18px 18px 0 0;padding:14px 16px 16px;
  max-height:78vh;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(37,99,235,.18)}
.pop-cancel{width:100%;margin-top:12px;border:0;background:#f2f4f8;color:var(--sub);border-radius:12px;padding:13px;
  font-size:15px;font-weight:700;font-family:inherit}
.btn{width:100%;border:0;border-radius:var(--radius-sm);padding:14px;font-size:15.5px;font-weight:700;color:#fff;
  background:linear-gradient(135deg,#3b82f6,#2563eb);cursor:pointer;box-shadow:0 6px 16px rgba(37,99,235,.28)}
.btn.green{background:linear-gradient(135deg,#10b981,#059669);box-shadow:0 6px 16px rgba(16,185,129,.28)}
.btn.ghost{background:#fff;color:var(--primary-d);border:1.5px solid #bfdbfe;box-shadow:none}
.btn:active{transform:translateY(1px)}
.btn.off{background:#e2e8f0;color:#94a3b8;box-shadow:none;cursor:not-allowed}
.btn.off:active{transform:none}
.field input.err{border-color:#e5484d;background:#fff5f5;animation:shake .4s}
@keyframes shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-5px)}40%{transform:translateX(5px)}60%{transform:translateX(-4px)}80%{transform:translateX(4px)}}
.hero{padding:4px 0 14px}
.hero h2{margin:0 0 8px;font-size:20px;font-weight:800;color:var(--text)}
.hero p{margin:0;font-size:13.5px;color:var(--sub);line-height:1.8}
.tip{background:var(--accent-l);border:1px solid #fed7aa;color:#9a3412;border-radius:var(--radius-xs);padding:11px 13px;
  font-size:12.5px;line-height:1.85;margin-top:10px}
.lock{background:var(--primary-l);border:1px solid #bfdbfe;color:#1e40af;border-radius:var(--radius-xs);padding:10px 12px;
  font-size:12.5px;line-height:1.8;margin-top:10px}
.kv{display:flex;flex-wrap:wrap;gap:8px}
.kv div{flex:1 1 44%;background:#f8fafc;border:1px solid var(--line);border-radius:var(--radius-xs);padding:10px 12px;font-size:12.5px;color:var(--sub)}
.kv div b{display:block;color:var(--text);font-size:14px;margin-top:3px;font-weight:700}
/* ---------- 媒体切换按钮（实拍图 / 视频）+ 全屏滑动看图 ---------- */
.mtabs{display:flex;gap:8px;margin:10px 0 8px}
.mtab{border:1.5px solid var(--line);background:#fff;color:var(--sub);font-size:13px;font-weight:700;padding:8px 14px;border-radius:999px;font-family:inherit}
.mtab.on{background:var(--primary);border-color:var(--primary);color:#fff;box-shadow:0 6px 14px rgba(37,99,235,.25)}
.gal img{cursor:zoom-in}
.gv{position:fixed;inset:0;background:#0b0e14;z-index:9999;display:none;flex-direction:column}
.gv.on{display:flex}
.gv-top{height:52px;display:flex;align-items:center;justify-content:space-between;padding:0 14px;color:#fff;flex:none}
.gv-num{font-size:14px;font-weight:700;opacity:.92}
.gv-x{background:rgba(255,255,255,.14);border:0;color:#fff;width:34px;height:34px;border-radius:50%;font-size:16px;font-family:inherit}
.gv-strip{flex:1;display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.gv-strip::-webkit-scrollbar{display:none}
.gv-slide{flex:0 0 100%;width:100%;scroll-snap-align:center;display:flex;align-items:center;justify-content:center;padding:6px}
.gv-slide img{max-width:100%;max-height:100%;object-fit:contain;border-radius:8px}
.gv-foot{flex:none;padding:12px 14px 24px;color:#9aa4b8;font-size:12px;text-align:center}
body.gv-open{overflow:hidden}
.gal{display:grid;grid-template-columns:1fr 1fr;gap:6px;margin-bottom:12px}
.gal img{width:100%;height:120px;object-fit:cover;border-radius:10px;background:#eef2f9}
.vph{position:relative;border-radius:10px;overflow:hidden;background:#0f1522}
.vph img{width:100%;height:120px;object-fit:cover;display:block;opacity:.85}
.vbadge{
  position:absolute;left:0;right:0;bottom:0;color:#fff;font-size:11.5px;font-weight:700;
  text-align:center;padding:14px 0 5px;background:linear-gradient(transparent,rgba(0,0,0,.72))
}
.msg{border-bottom:1px dashed var(--line);padding:9px 0}
.msg:last-child{border-bottom:0}
.msg .mh{font-size:12.5px;color:var(--muted);margin-bottom:3px}
.msg .mc{font-size:14px;line-height:1.7;word-break:break-word}
.msg.staff .mh{color:var(--primary-d);font-weight:700}
.back{display:inline-block;font-size:13.5px;color:var(--primary-d);font-weight:700;margin:2px 0 10px;cursor:pointer}
.dtbar{display:flex;align-items:center;justify-content:space-between;gap:10px;margin:2px 0 10px}
.dtbar .back{margin:0}
.shr{display:inline-flex;align-items:center;gap:4px;font-size:13px;font-weight:700;color:#fff;background:var(--primary);padding:6px 13px;border-radius:16px;cursor:pointer;box-shadow:0 2px 8px rgba(7,163,90,.28);transition:.15s}
.shr:active{transform:scale(.95);background:var(--primary-d)}
/* 发现新版本时从底部浮出来的一条提示：点一下就彻底更新 */
.upbar{position:fixed;left:12px;right:12px;bottom:calc(14px + env(safe-area-inset-bottom));z-index:60;
  display:none;align-items:center;gap:10px;background:#141b25;color:#fff;border-radius:14px;
  padding:12px 14px;box-shadow:0 12px 34px rgba(10,18,30,.34)}
.upbar.on{display:flex;animation:upIn .28s ease}
@keyframes upIn{from{transform:translateY(20px);opacity:0}to{transform:translateY(0);opacity:1}}
.upbar .ut{flex:1;font-size:13.5px;line-height:1.5}
.upbar .ut small{display:block;color:#9fb0c4;font-size:11.5px;margin-top:2px}
.upbar .ub{border:0;border-radius:10px;background:var(--primary);color:#fff;font-weight:800;
  font-size:13.5px;padding:9px 15px;font-family:inherit;cursor:pointer;flex:none}
.upbar .ux{border:0;background:transparent;color:#8b98a8;font-size:18px;line-height:1;flex:none;cursor:pointer;padding:0 2px}
.toast{position:fixed;left:50%;bottom:44px;transform:translateX(-50%) translateY(14px);
  background:rgba(24,32,48,.93);color:#fff;font-size:13.5px;padding:11px 18px;border-radius:20px;
  opacity:0;pointer-events:none;transition:.25s;z-index:99;max-width:86%;text-align:center}
.toast.on{opacity:1;transform:translateX(-50%) translateY(0)}
.foot{text-align:center;font-size:12px;color:var(--muted);margin-top:18px;line-height:1.9}
/* ---------- 🤖 AI 自动填写（游客端） ---------- */
.ai-g{background:linear-gradient(135deg,#2563eb,#7c3aed);color:#fff;border-radius:var(--radius);padding:14px;margin-bottom:12px;box-shadow:0 8px 20px rgba(37,99,235,.25)}
.ai-g .ai-g-hd{font-size:15px;font-weight:700;line-height:1.4}
.ai-g .ai-g-hd small{display:block;font-weight:400;font-size:12.5px;opacity:.88;margin-top:4px}
.ai-g textarea{width:100%;min-height:84px;border:0;border-radius:11px;padding:10px 11px;font-size:14.5px;line-height:1.6;resize:vertical;box-sizing:border-box;font-family:inherit;color:#16202f;background:rgba(255,255,255,.96);outline:none;margin-top:10px}
.ai-g .ai-g-btn{display:block;margin-top:10px;width:100%;border:0;border-radius:var(--radius-xs);padding:12px;font-size:15px;font-weight:700;color:var(--primary-d);background:#fff;box-shadow:0 6px 14px rgba(0,0,0,.12)}
.ai-g .ai-g-btn[disabled]{opacity:.6}
.ai-g .ai-g-ex{font-size:12px;opacity:.88;margin-top:8px;line-height:1.6;word-break:break-all}
/* ---------- 🤖 对话助手 ---------- */
/* 悬浮 AI 按钮：一直在右下角，还会轻轻跳 */
.ai-fab{position:fixed;right:14px;bottom:20px;z-index:70;display:flex;align-items:center;gap:7px;border:0;
  border-radius:30px;padding:14px 18px;font-size:15.5px;font-weight:800;color:#fff;font-family:inherit;
  background:linear-gradient(135deg,#7c3aed,#2563eb);box-shadow:0 12px 28px rgba(70,80,255,.5);
  animation:aifab 1.9s ease-in-out infinite}
.ai-fab .dot{width:8px;height:8px;border-radius:50%;background:#8ef0b6;box-shadow:0 0 0 0 rgba(142,240,182,.9);animation:aifabd 1.9s ease-in-out infinite}
/* 不在对话页时，AI 说的话浮在底部（点一下回对话页）—— 她把登记表翻出来了，嘴还得能继续问 */
#mini-ai{position:fixed;left:10px;right:10px;bottom:12px;z-index:75;display:none;align-items:center;gap:9px;
  background:rgba(22,32,47,.94);color:#fff;border-radius:15px;padding:11px 13px;font-size:13.5px;line-height:1.45;
  box-shadow:0 12px 28px rgba(20,30,60,.35);font-family:inherit;text-align:left}
#mini-ai.show{display:flex}
#mini-ai .ma-orb{flex:0 0 auto;display:flex}
#mini-ai .ma-tx{flex:1;min-width:0;display:-webkit-box;-webkit-line-clamp:3;-webkit-box-orient:vertical;overflow:hidden}
#mini-ai .ma-go{flex:0 0 auto;font-weight:700;color:#9dc0ff;white-space:nowrap}
/* 浮条出现时给页面留出底部空档，别把「提交登记」压在下面 */
body.mini-on .wrap{padding-bottom:76px}
@keyframes aifab{0%,100%{transform:translateY(0) scale(1);box-shadow:0 12px 28px rgba(70,80,255,.5)}
  50%{transform:translateY(-5px) scale(1.045);box-shadow:0 18px 34px rgba(70,80,255,.62)}}
@keyframes aifabd{0%{box-shadow:0 0 0 0 rgba(142,240,182,.85)}70%{box-shadow:0 0 0 9px rgba(142,240,182,0)}100%{box-shadow:0 0 0 0 rgba(142,240,182,0)}}
/* 房源列表顶部的大横幅 */
.ai-lead{display:flex;align-items:center;gap:12px;background:linear-gradient(135deg,#7c3aed,#2563eb);color:#fff;
  border-radius:var(--radius);padding:16px;margin-bottom:12px;cursor:pointer;box-shadow:0 12px 26px rgba(70,80,255,.38);
  position:relative;overflow:hidden}
.ai-lead::after{content:"";position:absolute;top:-40%;left:-30%;width:60%;height:180%;
  background:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.28),rgba(255,255,255,0));
  transform:rotate(18deg);animation:aishine 2.6s ease-in-out infinite}
@keyframes aishine{0%{left:-40%}55%{left:110%}100%{left:110%}}
.ai-lead:active{transform:scale(.985)}
.ai-lead .ai-lead-em{font-size:30px;line-height:1;flex:none}

/* ====== 🤖→AI 智能核：自绘的 AI 图标（渐变球+智能火花+旋转轨道），不再用 emoji ====== */
.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-lead .ai-lead-em{flex:none;width:54px;height:54px;border-radius:16px;background:rgba(255,255,255,.16);
  display:flex;align-items:center;justify-content:center;-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px)}
/* AI 回复气泡带头像 */
.msg{max-width:84%;padding:10px 13px;border-radius:14px;font-size:14.5px;line-height:1.62;white-space:pre-wrap;word-break:break-word}
.msg.u{align-self:flex-end;background:var(--primary);color:#fff;border-bottom-right-radius:5px}
.msg.a{align-self:flex-start;display:flex;gap:8px;align-items:flex-start;max-width:94%;padding:0;background:none;box-shadow:none}
.msg.a .ava{flex:none;width:26px;height:26px;margin-top:2px}
.msg.a .bub{background:#fff;box-shadow:var(--shadow);border-radius:14px;border-bottom-left-radius:5px;padding:10px 13px;white-space:pre-wrap;word-break:break-word;font-size:14.5px;line-height:1.62;min-width:0}
.msg.typing{color:var(--muted)}
.ai-lead .ai-lead-tx{flex:1;min-width:0;line-height:1.32;font-size:16.5px;font-weight:800}
.ai-lead .ai-lead-tx small{display:block;font-size:12.5px;font-weight:500;opacity:.92;margin-top:4px}
.ai-lead .ai-lead-go{flex:none;font-size:13px;font-weight:800;background:rgba(255,255,255,.24);
  border-radius:20px;padding:8px 12px;white-space:nowrap}
.chat-quick{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px}
.chat-quick button{border:1px solid #cfdcff;background:#fff;color:var(--primary-d);border-radius:20px;padding:7px 12px;font-size:13px;font-family:inherit}
.chat-list{display:flex;flex-direction:column;gap:10px;padding:2px 0 10px;min-height:160px}
.chat-houses{margin-top:9px;display:flex;flex-direction:column;gap:8px;max-width:100%}
.chat-h{background:#fff;border-radius:12px;box-shadow:var(--shadow);padding:9px 10px;display:flex;gap:10px;align-items:center}
.chat-h img{width:62px;height:50px;object-fit:cover;border-radius:9px;flex:none;background:#eef2f8}
.chat-h .ci{flex:1;min-width:0}
.chat-h .ct{font-size:14px;font-weight:700;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-h .cs{font-size:12.5px;color:var(--sub);margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.chat-h .cp{font-size:13.5px;font-weight:700;color:var(--accent);flex:none;text-align:right}
.chat-h .ch-tag{display:inline-block;margin-left:6px;font-size:11px;color:var(--primary-d);background:#eef4ff;border-radius:8px;padding:1px 6px;vertical-align:1px}
.chat-h .ch-tag.warn{color:#a2620b;background:#fff7e6}
.chat-h .ch-noimg{width:62px;height:50px;border-radius:9px;flex:none;background:#eef2f8;display:flex;align-items:center;justify-content:center;font-size:20px}
.chat-h img.ch-noimg{object-fit:cover;display:block}
.chat-act{margin-top:9px}
.chat-act button{width:100%;border:0;border-radius:var(--radius-xs);padding:11px;font-size:14.5px;font-weight:700;color:#fff;background:linear-gradient(135deg,#10b981,#059669);font-family:inherit}
.chat-act button.ghost{background:#fff;color:var(--primary-d);border:1px solid #cfdcff;font-weight:600;padding:9px}
/* 电话已经进店里的客户本了 —— 给访客看的定心丸 */
.chat-done{margin-top:9px;background:#e8f8ef;border:1px solid #b8e6cd;color:#0b7a4b;border-radius:11px;padding:9px 11px;font-size:13.5px;line-height:1.55}
.chat-done b{color:#0b7a4b}
.chat-bar{display:flex;gap:8px;align-items:center;background:#fff;border-radius:14px;padding:8px;box-shadow:var(--shadow);position:sticky;bottom:8px;z-index:5}
.chat-bar input{flex:1;border:0;outline:none;font-size:14.5px;padding:8px 6px;background:transparent;font-family:inherit;min-width:0}
.chat-bar button{border:0;border-radius:10px;padding:10px 16px;font-size:14.5px;font-weight:700;color:#fff;background:var(--primary);flex:none;font-family:inherit}
.chat-bar button[disabled]{opacity:.55}
.chat-tip{font-size:12px;color:var(--muted);text-align:center;padding:8px 0 2px;line-height:1.6}
/* ---------- 🎤 语音对话 ---------- */
.chat-voice{display:flex;gap:8px;margin-bottom:10px}
.chat-voice .vbtn{flex:1;border:1.5px solid #cfdcff;background:#fff;color:var(--primary-d);border-radius:12px;
  padding:11px 6px;font-size:14px;font-weight:700;font-family:inherit;display:flex;align-items:center;justify-content:center;gap:5px}
.chat-voice .vbtn.on{background:linear-gradient(135deg,#7c3aed,#2563eb);border-color:transparent;color:#fff;box-shadow:0 6px 16px rgba(80,80,255,.28)}
.chat-bar .mic{border:0;border-radius:10px;padding:0 12px;height:38px;font-size:18px;line-height:1;background:#eff6ff;color:var(--primary);flex:none;font-family:inherit}
.chat-bar .mic.rec{background:#ffe9e9;color:#e5484d;animation:micpulse 1.2s ease-in-out infinite}
/* 她说话的时候，麦克风变成「✋ 打住」：点一下立刻打断她、换成听访客说 */
.chat-bar .mic.bar{background:#fff3d6;color:#a2620b;font-size:17px;font-weight:800;box-shadow:0 0 0 2px rgba(255,186,60,.45);animation:micpulse 1s ease-in-out infinite}
.guide-bar{display:flex;align-items:center;gap:8px;margin:0 0 10px;padding:10px 12px;border-radius:12px;
  background:linear-gradient(135deg,#eef3ff,#f6efff);border:1px solid #dbe4ff;color:#2c3a63;font-size:13.5px;line-height:1.5}
.guide-bar b{color:var(--primary)}
.guide-bar .gb-mic{margin-left:auto;flex:none;border:0;border-radius:9px;padding:7px 10px;background:var(--primary);color:#fff;font-weight:700;font-size:12.5px;font-family:inherit;cursor:pointer}
@keyframes micpulse{0%,100%{box-shadow:0 0 0 0 rgba(229,72,77,.55)}50%{box-shadow:0 0 0 11px rgba(229,72,77,0)}}
.voice-note{margin-bottom:10px}
/* 单独一行的按钮（聊天页的「看地图」这种） */
.vbtn.full{display:block;width:100%;margin-bottom:10px;border:1.5px solid #cfdcff;background:#fff;color:var(--primary-d);
  border-radius:12px;padding:11px 8px;font-size:14px;font-weight:700;font-family:inherit}
/* 被浏览器拦下没出声时露出来的补播按钮 */
.vbtn.tap{display:block;width:100%;margin-bottom:10px;border:1.5px solid #ffd591;background:#fff7e6;color:#a2620b;
  border-radius:12px;padding:11px 8px;font-size:14px;font-weight:700;font-family:inherit;animation:tappulse 1.6s ease-in-out infinite}
@keyframes tappulse{0%,100%{transform:translateY(0)}50%{transform:translateY(-2px)}}
.voice-note .vn{display:flex;align-items:flex-start;gap:8px;border-radius:12px;padding:11px 13px;font-size:13px;line-height:1.75}
.voice-note .vn.warn{background:#fff8e6;border:1px solid #ffe2a8;color:#8a5a00}
.voice-note .vn.ok{background:#eafaf1;border:1px solid #b7ebd0;color:#0a7a48}
/* ---------- 🗺 兖州城区图 ---------- */
body.map-open{overflow:hidden}
.map-sheet{position:fixed;inset:0;background:#fff;z-index:60;display:none;flex-direction:column}
.map-sheet.show{display:flex}
.map-bar{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #e8eef7;font-size:15px}
.map-bar button{border:0;background:#eff6ff;color:var(--primary);border-radius:10px;padding:8px 14px;font-size:14px;font-family:inherit;font-weight:700}
.map-body{flex:1;overflow:auto;padding:10px 12px}
.map-body svg{width:100%;height:auto;display:block;border-radius:14px}
.map-chips{display:flex;flex-wrap:wrap;gap:8px;padding:12px 2px 4px}
.map-chips button{border:1px solid #cfdcff;background:#fff;color:#1f4fd8;border-radius:999px;padding:8px 13px;font-size:13.5px;font-family:inherit}
.mc-tip{font-size:13px;color:#8a94a6}
.map-foot{padding:10px 14px 16px;font-size:12px;color:#9aa7bd;text-align:center;border-top:1px solid #eef2f8}
/* ---------- 新增：高级视觉组件（参考安居客/全房源） ---------- */
.hero-banner{background:linear-gradient(135deg,#07a35a,#048a4c);color:#fff;border-radius:0 0 var(--radius) var(--radius);padding:26px 18px 34px;margin:-12px -12px 14px;position:relative;overflow:hidden}
.hero-banner::before{content:"";position:absolute;top:-30%;right:-10%;width:200px;height:200px;background:rgba(255,255,255,.08);border-radius:40% 60% 50% 50%;transform:rotate(15deg)}
.hero-banner::after{content:"";position:absolute;bottom:-40%;left:-10%;width:160px;height:160px;background:rgba(255,255,255,.05);border-radius:50%}
.hero-banner h2{margin:0 0 8px;font-size:24px;font-weight:800;position:relative;z-index:1}
.hero-banner p{margin:0;font-size:13.5px;opacity:.9;line-height:1.6;position:relative;z-index:1}
.hero-banner .badge{display:inline-block;background:rgba(255,255,255,.2);border:1px solid rgba(255,255,255,.3);border-radius:20px;padding:4px 12px;font-size:12px;margin-top:10px;position:relative;z-index:1}
.hero-banner .hshr{position:absolute;top:16px;right:16px;z-index:2;display:inline-flex;align-items:center;gap:3px;background:rgba(255,255,255,.18);border:1px solid rgba(255,255,255,.34);color:#fff;border-radius:20px;padding:5px 12px;font-size:12.5px;font-weight:700;cursor:pointer;transition:.15s}
.hero-banner .hshr:active{transform:scale(.95);background:rgba(255,255,255,.3)}
.search-bar{display:flex;align-items:center;gap:8px;background:#fff;border-radius:var(--radius-sm);padding:10px 14px;margin-bottom:14px;box-shadow:var(--shadow-md);border:1px solid var(--line-2)}
.search-bar .scity{font-size:14px;font-weight:700;color:var(--text);padding-right:10px;border-right:1px solid var(--line);white-space:nowrap;cursor:pointer}
.search-bar .scity::after{content:"▼";font-size:10px;margin-left:4px;color:var(--muted)}
.search-bar input{flex:1;border:0;outline:0;font-size:14px;background:transparent;color:var(--text);font-family:inherit}
.search-bar .sloc{width:36px;height:36px;display:flex;align-items:center;justify-content:center;border-radius:50%;background:var(--primary-l);color:var(--primary);font-size:16px;flex:none}
.icon-grid{display:grid;grid-template-columns:repeat(5,1fr);gap:10px;margin-bottom:14px}
.icon-btn{display:flex;flex-direction:column;align-items:center;gap:6px;padding:10px 2px;background:none;border:0;cursor:pointer;font-family:inherit}
.icon-btn .ibg{width:48px;height:48px;border-radius:14px;display:flex;align-items:center;justify-content:center;font-size:24px}
.icon-btn .ib1{background:linear-gradient(135deg,#3b82f6,#2563eb);color:#fff;box-shadow:0 4px 12px rgba(37,99,235,.3)}
.icon-btn .ib2{background:linear-gradient(135deg,#f97316,#ea580c);color:#fff;box-shadow:0 4px 12px rgba(249,115,22,.3)}
.icon-btn .ib3{background:linear-gradient(135deg,#10b981,#059669);color:#fff;box-shadow:0 4px 12px rgba(16,185,129,.3)}
.icon-btn .ib4{background:linear-gradient(135deg,#8b5cf6,#7c3aed);color:#fff;box-shadow:0 4px 12px rgba(139,92,246,.3)}
.icon-btn .ib5{background:linear-gradient(135deg,#06b6d4,#0891b2);color:#fff;box-shadow:0 4px 12px rgba(6,182,212,.3)}
.icon-btn .ib6{background:linear-gradient(135deg,#ec4899,#db2777);color:#fff;box-shadow:0 4px 12px rgba(236,72,153,.3)}
.icon-btn .ib7{background:linear-gradient(135deg,#f59e0b,#d97706);color:#fff;box-shadow:0 4px 12px rgba(245,158,11,.3)}
.icon-btn .ib8{background:linear-gradient(135deg,#6366f1,#4f46e5);color:#fff;box-shadow:0 4px 12px rgba(99,102,241,.3)}
.icon-btn .ib9{background:linear-gradient(135deg,#14b8a6,#0d9488);color:#fff;box-shadow:0 4px 12px rgba(20,184,166,.3)}
.icon-btn .ib10{background:#f1f5f9;color:var(--sub);border:1px solid var(--line)}
.icon-btn .ilbl{font-size:11px;font-weight:600;color:var(--text-2);margin-top:2px}
.promo-row{display:flex;gap:10px;margin-bottom:14px}
.promo-card{flex:1;min-width:0;background:#fff;border-radius:var(--radius-sm);padding:12px 10px;box-shadow:var(--shadow-md);border:1px solid var(--line-2);position:relative;overflow:hidden}
.promo-card h3{margin:0 0 4px;font-size:14.5px;font-weight:800;color:var(--text)}
.promo-card p{margin:0;font-size:11.5px;color:var(--sub);line-height:1.55}
.promo-card .pbtn{display:inline-block;margin-top:8px;background:var(--primary);color:#fff;border-radius:6px;padding:5px 10px;font-size:11.5px;font-weight:700}
.promo-card .picon{position:absolute;right:-8px;bottom:-8px;font-size:48px;opacity:.08}
.banner{background:linear-gradient(135deg,var(--primary-d),#1e3a8a);color:#fff;border-radius:var(--radius);padding:20px 18px;margin-bottom:14px;position:relative;overflow:hidden}
.banner::after{content:"";position:absolute;top:-50%;right:-20%;width:180px;height:180px;background:rgba(255,255,255,.06);border-radius:50%}
.banner h2{margin:0 0 6px;font-size:20px;font-weight:800}
.banner p{margin:0;font-size:13px;opacity:.9;line-height:1.6}
.quick-actions{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.qa-btn{display:flex;flex-direction:column;align-items:center;gap:6px;padding:12px 4px;background:#fff;border-radius:var(--radius-sm);border:1px solid var(--line-2);box-shadow:var(--shadow);cursor:pointer;font-family:inherit;border:0}
.qa-btn .qa-icon{width:44px;height:44px;border-radius:var(--radius-xs);display:flex;align-items:center;justify-content:center;font-size:22px;background:var(--primary-l)}
.qa-btn .qa-label{font-size:12px;font-weight:600;color:var(--text-2)}
.stat-bar{display:flex;gap:8px;margin-bottom:14px}
.stat-bar .stat{flex:1;background:#fff;border-radius:var(--radius-sm);padding:12px 8px;text-align:center;border:1px solid var(--line-2);box-shadow:var(--shadow)}
.stat-bar .stat-num{display:block;font-size:20px;font-weight:800;color:var(--primary)}
.stat-bar .stat-label{font-size:11px;color:var(--muted);margin-top:2px}
.h-tags{display:flex;flex-wrap:wrap;gap:5px;margin-top:6px}
.h-tag{font-size:11px;font-weight:600;padding:3px 8px;border-radius:6px;background:#f1f5f9;color:var(--sub)}
.h-tag.hot{background:var(--accent-l);color:var(--accent-d)}
.h-tag.green{background:var(--green-l);color:#047857}
/* 大图房源卡片 */
.h-card{background:#fff;border-radius:var(--radius-sm);overflow:hidden;margin-bottom:14px;box-shadow:var(--shadow-md);border:1px solid var(--line-2);cursor:pointer}
.h-card-img{width:100%;height:180px;object-fit:cover;display:block;background:#eef2f9}
.h-card-body{padding:12px 14px}
.h-card-tit{font-size:15.5px;font-weight:700;color:var(--text);margin-bottom:5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.h-card-meta{font-size:12.5px;color:var(--sub);margin-bottom:8px}
.h-card-price{font-size:18px;font-weight:800;color:var(--accent)}
.h-card-price small{font-size:12px;font-weight:500;color:var(--muted);margin-left:3px}
/* 简洁表单（左标签右输入） */
.sform{background:#fff;border-radius:var(--radius);padding:0;margin-bottom:14px}
.srow{display:flex;align-items:center;padding:14px 16px;border-bottom:1px solid var(--line-2)}
.srow:last-child{border-bottom:0}
.srow .slabel{flex:0 0 auto;font-size:15px;font-weight:700;color:var(--text);min-width:80px}
.srow .slabel .sreq{color:var(--accent);margin-right:3px}
.srow .sinput{flex:1;border:0;outline:0;font-size:15px;color:var(--text);background:transparent;text-align:right;font-family:inherit}
.srow .sinput::placeholder{color:var(--muted);font-size:14px}
.srow .shint{color:var(--muted);font-size:14px;margin-left:auto}
.srow .shint::after{content:">";margin-left:4px}
.srow .sselect{flex:1;border:0;outline:0;font-size:15px;color:var(--text);background:transparent;text-align:right;direction:rtl;font-family:inherit}
.srow .sselect option{direction:ltr}
/* 「我想买房 / 我想租房」切换（徐总 2026-10-16 晚：真机上点不到）——
   两头堵：① 按钮挂 touch-action:manipulation，砍掉安卓 WebView 的双击缩放等待
   （没有它，快速点两下会被当成「双击放大」，点一下要等 300ms 才算点击）；
   ② 点击走事件委托（跟详情页「微信」那套一样），页面怎么重渲染监听都不会掉；
   ③ 点中立刻有按压反馈（:active 沉一下 + 选中态带橙色光），反馈本身就是「点到了」的证据 */
.stabs{display:flex;gap:10px;padding:14px 16px 10px}
.stabs button{flex:1;border:1.5px solid var(--line);background:#fff;color:var(--text-2);
  border-radius:var(--radius-xs);padding:13px;font-size:15.5px;font-weight:800;font-family:inherit;
  cursor:pointer;touch-action:manipulation;-webkit-tap-highlight-color:rgba(249,115,22,.15);
  -webkit-user-select:none;user-select:none}
.stabs button:active{transform:translateY(1px)}
.stabs button.on{background:var(--accent);border-color:var(--accent);color:#fff;
  box-shadow:0 4px 12px rgba(249,115,22,.3)}
.sflow{display:flex;align-items:center;justify-content:center;gap:16px;padding:20px 16px}
.sflow .sf{display:flex;flex-direction:column;align-items:center;gap:6px}
.sflow .sf .sfi{width:40px;height:40px;border-radius:50%;background:#f1f5f9;display:flex;align-items:center;justify-content:center;font-size:18px;color:var(--sub)}
.sflow .sf .sfl{font-size:11px;color:var(--sub)}
.sflow .sfarr{color:var(--muted);font-size:12px}
.sbigbtn{width:calc(100% - 24px);margin:0 12px 14px;border:0;border-radius:var(--radius-sm);padding:15px;font-size:16px;font-weight:700;color:#fff;background:linear-gradient(135deg,#f97316,#ea580c);box-shadow:0 6px 16px rgba(249,115,22,.28);cursor:pointer;font-family:inherit}
.sbigbtn:active{transform:translateY(1px)}
.snote{padding:12px 16px;font-size:12.5px;color:var(--muted);line-height:1.8;text-align:center}
.foot{text-align:center;font-size:12px;color:var(--muted);margin-top:18px;line-height:1.9;padding:16px 12px}
.foot strong{display:block;font-size:14px;color:var(--text);margin-bottom:4px}
.foot a{color:var(--sub);text-decoration:none;margin:0 5px}
/* 页脚那两个入口（经纪人申请加入 / 安卓 APP 下载）：做成两枚小药丸，比光秃秃的链接好点 */
.foot .foot-lk{margin-top:9px;display:flex;gap:8px;justify-content:center;flex-wrap:wrap}
.foot .foot-lk a{display:inline-block;border:1px solid #dfe6ef;background:#fff;border-radius:20px;
  padding:6px 12px;font-size:12px;color:var(--sub);margin:0}
.foot .foot-lk a:active{background:#f2f6fb}
/* 游客端「经纪人申请加入」横幅（徐总 2026-10-16）：陌生人也该有正经入口 */
.ak-join{display:flex;align-items:center;gap:8px;margin:14px 0 2px;padding:12px 13px;
  background:linear-gradient(135deg,#eafaf1,#f2fbf6);border:1px solid #cdeedc;border-radius:13px;
  font-size:13.5px;color:#0a6c3f;text-decoration:none;line-height:1.5}
.ak-join b{color:#0a7c45}
.ak-join .go{margin-left:auto;flex:none;font-size:12.5px;font-weight:700;color:#058048}
/* ---------- 知情同意弹层（提交前必须点同意，后台自动存证） ---------- */
.cmask{position:fixed;inset:0;background:rgba(15,23,42,.55);z-index:200;display:flex;align-items:flex-end;justify-content:center}
.cmask.hide{display:none}
.csheet{width:100%;max-width:520px;background:#fff;border-radius:18px 18px 0 0;padding:18px 18px calc(18px + env(safe-area-inset-bottom));max-height:88vh;overflow:auto}
.csheet h3{margin:0;font-size:17px;font-weight:800}
.csheet .cdesc{font-size:12.5px;color:var(--sub);line-height:1.75;margin-top:8px}
.cuse{display:grid;grid-template-columns:repeat(3,1fr);gap:8px;margin:12px 0 4px}
.cuse div{background:#f6f8fb;border-radius:10px;padding:9px 6px;text-align:center}
.cuse div b{display:block;font-size:11px;color:var(--muted);font-weight:600}
.cuse div span{display:block;font-size:12.5px;font-weight:700;margin-top:3px;color:var(--text)}
.cchk{display:flex;gap:9px;align-items:flex-start;padding:11px 0;border-bottom:1px solid var(--line-2);font-size:13px;line-height:1.5;color:var(--text-2)}
.cchk:last-of-type{border-bottom:0}
.cchk i{width:19px;height:19px;border-radius:6px;border:1.5px solid #cbd5e1;flex:none;display:flex;align-items:center;justify-content:center;font-size:12px;color:transparent;font-style:normal;margin-top:1px}
.cchk.on i{background:var(--primary);border-color:var(--primary);color:#fff}
.cchk em{font-style:normal;color:var(--primary-d);font-weight:700}
.cbtn{width:100%;border:0;border-radius:12px;padding:14px;font-size:15.5px;font-weight:800;color:#fff;background:var(--primary);font-family:inherit;margin-top:12px}
.cbtn.off{background:#cbd5e1;color:#f8fafc}
.cseal{margin-top:11px;background:#f0fbf5;border:1px solid #c8edda;border-radius:10px;padding:10px 12px;font-size:11.5px;color:#0a7a47;line-height:1.65}
.cnote{margin-top:9px;font-size:11px;color:var(--muted);text-align:center;line-height:1.6}

/* ================== 安居客风格改版（徐总 2026-10-15：干净大方） ==================
   思路：把原来那条绿色大横幅 + 一排彩色渐变方块收掉，换成安居客那种
   「品牌色搜索条 + 彩色圆图标 + 分类页签 + 双列房源卡 + 底部导航」。 */
/* 顶条 / 宫格 / 数字条 / 分类页签都用 margin:0 -12px 贴边：
   它们的宽度是 auto，负 margin 会把宽度补回来（正好等于屏宽），所以不会横向溢出，
   也就不需要给 html 加 overflow-x:hidden —— 那一手会让下面的吸顶在部分浏览器上失效。 */

/* ---- 首页顶部：品牌色搜索条（城市 / 搜索框 / 搜索按钮 / 地图） ----
   顶条 + 分类页签两层都吸顶（徐总 2026-10-16：滑到「推荐」那一栏就卡住不让上移，
   房源继续往上走，方便随时切分类 / 改筛选）。第二层的 top 由 JS 量出来的 --akTopH 决定。 */
.ak-top{position:-webkit-sticky;position:sticky;top:0;z-index:50;
  background:linear-gradient(135deg,#08b061,#048a4c);margin:-12px -12px 0;padding:10px 12px 13px;
  display:flex;align-items:center;gap:8px}
.ak-top .city{flex:none;display:flex;align-items:center;gap:4px;font-size:15.5px;font-weight:800;color:#fff;
  white-space:nowrap;cursor:pointer;padding-right:2px}
.ak-top .city em{font-style:normal;width:0;height:0;border-left:4px solid transparent;border-right:4px solid transparent;
  border-top:5px solid rgba(255,255,255,.85);margin-top:3px}
.ak-top .sbox{flex:1;min-width:0;height:38px;background:#fff;border-radius:19px;display:flex;align-items:center;gap:6px;padding:0 4px 0 13px}
.ak-top .sbox svg{flex:none;color:#aeb7c3}
.ak-top .sbox input{flex:1;min-width:0;border:0;outline:0;background:none;font-size:14px;font-family:inherit;color:#141b25}
.ak-top .sbox input::placeholder{color:#aeb7c3}
.ak-top .go{flex:none;height:31px;border:0;border-radius:16px;background:var(--primary);color:#fff;
  font-size:13.5px;font-weight:800;font-family:inherit;padding:0 15px;cursor:pointer}
.ak-top .map{flex:none;display:flex;flex-direction:column;align-items:center;gap:1px;color:#fff;font-size:10.5px;
  font-weight:600;border:0;background:none;font-family:inherit;cursor:pointer;padding:0 2px}

/* ---- 功能宫格：安居客那种「彩色实心圆 + 白色图标」 ---- */
.ak-nav{background:#fff;margin:0 -12px;padding:14px 2px 16px;display:grid;grid-template-columns:repeat(5,1fr);gap:15px 0}
.ak-nav .it{display:flex;flex-direction:column;align-items:center;gap:7px;border:0;background:none;
  font-family:inherit;cursor:pointer;padding:0;min-width:0}
.ak-nav .ic{width:46px;height:46px;border-radius:50%;display:flex;align-items:center;justify-content:center;
  transition:transform .14s;box-shadow:0 3px 8px rgba(20,32,50,.10)}
.ak-nav .it:active .ic{transform:scale(.92)}
.ak-nav .lbl{font-size:12px;color:#2b3340;font-weight:500;white-space:nowrap}
  /* 徐总 2026-10-19：11 格时最后一行单独那格靠左摞，跟上面两排对齐（不要居中） */
/* 宫格上的小红点（新功能提示，像安居客的「新」角标） */
.ak-nav .it .nw{position:relative}
.ak-nav .it .nw::after{content:"新";position:absolute;top:-4px;right:-10px;background:#ff4d4f;color:#fff;
  font-size:9px;font-weight:700;border-radius:7px 7px 7px 1px;padding:1px 4px}

/* ---- 圆形数字条（在售 / 在租 / 全部）：2026-10-19 徐总圈了说「要不要都可以」，整条撤掉 ---- */

/* ---- 分类页签（推荐 / 二手房 / 新房 / 租房 + 筛选）：吸在顶条下面不动 ---- */
.ak-cats{position:-webkit-sticky;position:sticky;top:var(--akTopH,61px);z-index:49;
  background:#fff;margin:0 -12px 10px;padding:0 8px 0 12px;display:flex;align-items:center;gap:22px;
  overflow-x:auto;scrollbar-width:none;border-bottom:1px solid #f0f2f5;box-shadow:0 2px 8px rgba(20,32,50,.05)}
.ak-cats::-webkit-scrollbar{display:none}
.ak-cats button{flex:none;border:0;background:none;font-family:inherit;font-size:15.5px;color:#5a6473;
  font-weight:600;padding:12px 2px 10px;position:relative;cursor:pointer;white-space:nowrap}
.ak-cats button.on{color:#111;font-weight:800}
.ak-cats button.on::after{content:"";position:absolute;left:50%;transform:translateX(-50%);bottom:0;width:20px;
  height:3px;border-radius:2px;background:var(--primary)}
.ak-cats .fil{margin-left:auto;background:#f3f4f6;border:0;border-radius:15px;color:#3b4453;font-size:13px;
  font-weight:700;font-family:inherit;padding:7px 13px;cursor:pointer;white-space:nowrap}
.ak-cats .fil.on{background:var(--primary);color:#fff}

/* ---- 双列房源卡（照徐总发的安居客截图：图上小区名 + 标题 + 参数 + 红总价灰单价 + 标签） ---- */
.ak-grid{display:grid;grid-template-columns:1fr 1fr;gap:9px}
.ak-card{background:#fff;border-radius:12px;overflow:hidden;cursor:pointer;box-shadow:0 1px 4px rgba(20,32,50,.06)}
.ak-card:active{transform:scale(.986)}
.ak-ph{position:relative;width:100%;padding-top:75%;background:#eef1f4;overflow:hidden}
.ak-ph img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;display:block}
.ak-ph .ni{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#c9d2dc}
.ak-ph .tt{position:absolute;right:6px;top:6px;background:rgba(15,22,35,.45);color:#fff;font-size:10.5px;
  border-radius:4px;padding:2px 6px;font-weight:600}
.ak-ph .loc{position:absolute;left:0;right:0;bottom:0;color:#fff;font-size:11px;font-weight:600;
  padding:18px 8px 5px;background:linear-gradient(transparent,rgba(0,0,0,.55));
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ak-ph .kind{position:absolute;left:6px;top:6px;color:#fff;font-size:10.5px;font-weight:700;border-radius:4px;padding:2px 6px}
.ak-ph .kind.s{background:#0fae5f}
.ak-ph .kind.r{background:#ff8a3d}
.ak-ph .kind.n{background:#3aa0ff}
.ak-ib{padding:10px 11px 12px}
.ak-t{font-size:15px;font-weight:800;color:#141b25;line-height:1.38;display:-webkit-box;-webkit-line-clamp:2;
  -webkit-box-orient:vertical;overflow:hidden;word-break:break-all}
/* 徐总 2026-10-19：标题底下空一大截 —— 以前标题占两行、写死 min-height:41px 防错位；
   现在标题就是小区名一行字，占位去掉，间距相应收紧 */
.ak-s{font-size:11.5px;color:#7b8698;margin-top:3px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
/* 业主留言当卖点展示（徐总 2026-10-19：小区名回到标题位，留言挪到这行，超长省略） */
.ak-nt{font-size:11.5px;color:#c05e00;margin-top:4px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;font-weight:600}

/* ---------- 首屏骨架（徐总 2026-10-19：先出下半截、再出整页）----------
   跟真布局同高，第一帧屏幕就是满的；数据到了 JS 直接覆盖 #sk。 */
#sk{pointer-events:none}
#sk .sk-top{height:52px;background:linear-gradient(135deg,#07a35a,#0b8f52);display:flex;align-items:center;gap:8px;padding:0 12px}
#sk .sk-top i{display:block;height:22px;border-radius:11px;background:rgba(255,255,255,.22)}
#sk .sk-nav{display:grid;grid-template-columns:repeat(4,1fr);gap:14px 8px;padding:14px 12px 8px}
#sk .sk-nav i::before{content:"";display:block;width:44px;height:44px;border-radius:14px;background:#e9edf2;margin:0 auto}
#sk .sk-nav i::after{content:"";display:block;width:34px;height:9px;border-radius:5px;background:#eef1f5;margin:6px auto 0}
#sk .sk-play{height:56px;margin:6px 12px;border-radius:12px;background:#eaf3ee}
#sk .sk-cats{display:flex;gap:16px;padding:6px 12px 12px}
#sk .sk-cats b{width:46px;height:17px;border-radius:8px;background:#eef1f5}
#sk .sk-cards{display:grid;grid-template-columns:1fr 1fr;gap:10px;padding:4px 12px 14px}
#sk .sk-card{background:#fff;border-radius:12px;overflow:hidden;box-shadow:0 1px 4px rgba(20,32,50,.06)}
#sk .sk-card .ph{display:block;height:104px;background:#eef1f5}
#sk .sk-card .l1{display:block;height:13px;margin:11px 10px 0;border-radius:4px;background:#eef1f5}
#sk .sk-card .l2{display:block;height:10px;width:58%;margin:8px 10px 13px;border-radius:4px;background:#f3f5f8}
#sk .sk-top i,#sk .sk-nav i::before,#sk .sk-nav i::after,#sk .sk-play,#sk .sk-cats b,
#sk .sk-card .ph,#sk .sk-card .l1,#sk .sk-card .l2{
  background-image:linear-gradient(90deg,rgba(255,255,255,0),rgba(255,255,255,.6),rgba(255,255,255,0));
  background-size:220% 100%;animation:skgo 1.25s linear infinite}
@keyframes skgo{from{background-position:130% 0}to{background-position:-30% 0}}
.ak-tg{display:flex;gap:4px;margin-top:7px;overflow:hidden;height:20px}
.ak-tg span{font-size:10.5px;color:#5a6473;background:#f2f4f7;border-radius:3px;padding:2px 5px;font-weight:500;white-space:nowrap}
.ak-tg span.g{color:#0a7c45;background:#e9f7f0}
/* 卖点标签（独家 / 急售 / 满五唯一…）：一眼最跳的那一个，放标签行最前 */
.ak-tg span.s{color:#fff;background:linear-gradient(135deg,#ff7a2f,#ff552e);font-weight:700;padding:2px 6px}
.ak-p{margin-top:8px;display:flex;align-items:baseline;gap:5px}
.ak-p .n{font-size:19px;font-weight:800;color:#ff3b14;letter-spacing:-.5px}
.ak-p .n small{font-size:12px;font-weight:700;margin-left:1px}
.ak-p .u{font-size:11px;color:#9aa6b5;white-space:nowrap;margin-left:auto}
/* ---- 竖列房源行（徐总 2026-10-17 二改：一行一套，图片在左文字在右，对照安居客样式；
        首页「推荐」栏保持双列大图平铺不变） ---- */
.ak-rows{display:flex;flex-direction:column;gap:9px}
.ak-row{display:flex;align-items:stretch;gap:10px;background:#fff;border-radius:12px;padding:10px;
  box-shadow:0 1px 4px rgba(20,32,50,.06);cursor:pointer;overflow:hidden}
.ak-row:active{transform:scale(.99)}
.ak-row .rw-t{flex:1;min-width:0;display:flex;flex-direction:column}
.ak-row .rw-t .ak-t{font-size:15.5px;min-height:0}
.ak-row .rw-t .ak-s{margin-top:4px}
.ak-row .rw-t .ak-tg{margin-top:6px}
.ak-row .rw-t .ak-p{margin-top:auto;padding-top:8px}
.ak-row .rw-p{position:relative;width:122px;flex:none;min-height:92px;border-radius:9px;overflow:hidden;background:#eef1f4}
.ak-row .rw-p img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;display:block}
.ak-row .rw-p .ni{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#c9d2dc}
.ak-row .rw-p .kind{position:absolute;left:6px;top:6px;color:#fff;font-size:10.5px;font-weight:700;border-radius:4px;padding:2px 6px}
.ak-row .rw-p .kind.s{background:#0fae5f}
.ak-row .rw-p .kind.r{background:#ff8a3d}
.ak-row .rw-p .kind.n{background:#3aa0ff}
.ak-row .rw-p .tt{position:absolute;right:6px;top:6px;background:rgba(15,22,35,.45);color:#fff;font-size:10.5px;
  border-radius:4px;padding:2px 6px;font-weight:600}
/* 列表底部那条隐私说明：安居客风格是细线小字，不用大色块 */
.ak-note{display:flex;gap:7px;align-items:flex-start;margin:14px 2px 0;font-size:11.5px;color:#9aa6b5;line-height:1.7}
.ak-note svg{flex:none;margin-top:2px}
/* 新房频道还没接上时的空态（徐总 2026-10-16 加了「新房」栏） */
.ak-newct{grid-column:1 / -1;background:#fff;border-radius:14px;padding:26px 18px 20px;text-align:center;
  box-shadow:0 1px 4px rgba(20,32,50,.06)}
.ak-newct .bico{width:66px;height:66px;border-radius:50%;background:#eaf3ff;color:#3aa0ff;
  display:flex;align-items:center;justify-content:center;margin:0 auto 14px}
.ak-newct h4{margin:0 0 8px;font-size:16.5px;font-weight:800;color:#141b25}
.ak-newct p{margin:0 0 16px;font-size:12.5px;color:#8b96a6;line-height:1.8}
.ak-newct .bs{display:flex;gap:9px}
.ak-newct .bs button{flex:1;border:0;border-radius:22px;padding:12px 6px;font-size:14px;font-weight:800;
  font-family:inherit;cursor:pointer}
.ak-newct .bs .p{background:linear-gradient(135deg,#0cba66,#07a35a);color:#fff;box-shadow:0 6px 16px rgba(7,163,90,.26)}
.ak-newct .bs .s{background:#f2f4f7;color:#3b4453}
.ak-newct .cs{margin-top:14px;font-size:11.5px;color:#a8b1bd;line-height:1.7}

/* ---- 详情页：满宽大图 + 图上悬浮返回/分享/张数 ---- */
body.detail{padding-bottom:80px}
.ak-hero{position:relative;border-radius:14px;overflow:hidden;background:#0e1319;margin-bottom:12px}
.ak-hstrip{display:flex;overflow-x:auto;overflow-y:hidden;scroll-snap-type:x mandatory;-webkit-overflow-scrolling:touch;scrollbar-width:none}
.ak-hstrip::-webkit-scrollbar{display:none}
.ak-hslide{flex:0 0 100%;width:100%;scroll-snap-align:center;position:relative;padding-top:62%;background:#eef1f4}
.ak-hslide img{position:absolute;top:0;left:0;width:100%;height:100%;object-fit:cover;display:block}
.ak-hslide .ni{position:absolute;top:0;left:0;width:100%;height:100%;display:flex;align-items:center;justify-content:center;color:#c9d2dc}
.ak-hslide .vb{position:absolute;left:0;right:0;bottom:0;color:#fff;font-size:12px;font-weight:700;text-align:center;
  padding:24px 0 9px;background:linear-gradient(transparent,rgba(0,0,0,.62))}
.ak-hbar{position:absolute;top:0;left:0;right:0;display:flex;align-items:center;justify-content:flex-end;padding:10px 11px}
/* 头图上的分享键（徐总 2026-10-16）：照片上原来那圈太暗，压在图上看不清 ——
   改成白底圆钮 + 投影，不管照片亮还是暗都一眼能找到 */
.ak-hbar button{width:34px;height:34px;border-radius:50%;border:0;background:rgba(255,255,255,.94);color:#1b2430;
  box-shadow:0 2px 8px rgba(10,18,30,.35);backdrop-filter:blur(2px);
  display:flex;align-items:center;justify-content:center;cursor:pointer;font-family:inherit}
/* 详情页吸顶返回键（徐总 2026-10-18）：往上滑它不动，游客随时能点返回。
   徐总二改：「弄个有颜色的，一眼就知道是返回键」——
   做成绿底白字的胶囊「‹ 返回」：压在照片上、滚到白底上，都是一眼能认出来的键。
   原来是白底圆钮只有个箭头，压到亮照片上不够显眼。 */
.ak-fback,#ak-fback{position:fixed;top:calc(10px + env(safe-area-inset-top));left:12px;z-index:80;
  width:auto;height:34px;border-radius:17px;border:0;
  background:linear-gradient(135deg,#08b061,#048a4c);color:#fff;
  box-shadow:0 3px 12px rgba(6,90,52,.42);backdrop-filter:blur(2px);
  display:flex;align-items:center;gap:4px;padding:0 14px 0 11px;
  font-size:13.5px;font-weight:800;letter-spacing:.2px;font-family:inherit;
  cursor:pointer;-webkit-tap-highlight-color:transparent}
.ak-fback:active,#ak-fback:active{transform:scale(.94);filter:brightness(.96)}
.ak-hnum{position:absolute;right:11px;bottom:11px;background:rgba(15,22,35,.5);color:#fff;font-size:11.5px;
  font-weight:600;border-radius:11px;padding:3px 10px}
.ak-mtabs{display:flex;gap:8px;padding:0 2px 12px;overflow-x:auto;scrollbar-width:none}
.ak-mtabs::-webkit-scrollbar{display:none}
.ak-mtabs button{flex:none;border:1px solid #e6e9ee;background:#fff;color:#5a6473;font-family:inherit;font-size:12.5px;
  font-weight:600;border-radius:15px;padding:7px 13px;white-space:nowrap;cursor:pointer}
.ak-mtabs button.on{background:#16181d;border-color:#16181d;color:#fff}
/* 价格 + 标题 */
.ak-pbar{background:#fff;border-radius:14px;padding:15px 16px;margin-bottom:10px;box-shadow:0 1px 4px rgba(20,32,50,.06)}
.ak-pbar .big{font-size:28px;font-weight:800;color:#ff552e;letter-spacing:-.6px;line-height:1.1}
.ak-pbar .big small{font-size:13.5px;font-weight:700;margin-left:2px}
.ak-pbar .unit{font-size:12px;color:#9aa6b5;margin-top:7px}
/* 月供条（s96）：点一下进「算一算」，按这套房的总价重算 */
.ak-mo{display:flex;align-items:baseline;gap:5px;margin-top:10px;padding:10px 12px;
  background:#f4faf6;border:1px solid #d9f0e3;border-radius:11px;cursor:pointer;
  font-size:12.5px;color:#5b6679;line-height:1.4}
.ak-mo .lb{flex:none;font-size:12.5px;color:#5b6679}
.ak-mo b{font-size:17px;font-weight:800;color:#058048;letter-spacing:-.4px}
.ak-mo .u{flex:none;font-size:12px;color:#5b6679}
.ak-mo i{font-style:normal;font-size:11px;color:#9aa6b5;margin-left:2px;min-width:0;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ak-mo em{margin-left:auto;flex:none;font-style:normal;font-size:12px;font-weight:800;color:#07a35a}
/* 关注小区条（s96）：不吓人、不抢戏，但一眼知道能点 */
.ak-watch{display:flex;align-items:center;gap:8px;margin-top:8px;padding:10px 12px;
  background:#fff9ee;border:1px solid #ffe6bf;border-radius:11px;cursor:pointer;font-size:12.5px;color:#6b5a3c}
.ak-watch .w1{flex:none;font-weight:700;color:#8a5a12}
.ak-watch .w2{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;
  font-size:11.5px;color:#a08a63}
.ak-watch em{flex:none;font-style:normal;font-weight:800;font-size:12px;color:#c47b00;
  background:#fff0d6;border-radius:20px;padding:4px 11px}
.ak-watch.on{background:#f4faf6;border-color:#d9f0e3}
.ak-watch.on .w1{color:#058048}
.ak-watch.on .w2{color:#7b9c8b}
.ak-watch.on em{color:#058048;background:#e3f5ec}
/* 「我关注的小区」名单 */
.wm-item{display:flex;align-items:center;gap:10px;padding:12px 13px}
.wm-item + .wm-item{border-top:1px solid #f3f6f9}
.wm-m{flex:1;min-width:0;cursor:pointer}
.wm-m b{display:block;font-size:15px;font-weight:700;color:#141b25}
.wm-m span{display:block;font-size:11.5px;color:#9aa6b5;margin-top:3px}
.wm-x{flex:none;border:1px solid #e3e8ef;background:#fff;border-radius:20px;padding:5px 12px;
  font-size:12px;font-weight:700;color:#6b7787;font-family:inherit;cursor:pointer}
.wm-x:active{background:#f6f8fa}
/* ---- 关注的小区「有新动静」（s120）----
   徐总 2026-10-18：「人只要觉得用咱 APP 方便，产生依赖，就能留住人」。
   光有个名单留不住人 —— 得让他一打开就看见：我盯的那个小区新上了几套、哪套降价了。
   首页一条橙色的（只在他关注的小区真有事时才出现），我的页和名单里各带一个红字。 */
.ak-wtip{display:flex;align-items:center;gap:9px;margin:10px 0 0;padding:11px 13px;
  background:linear-gradient(135deg,#fff4e6,#ffeede);border:1px solid #ffdfba;border-radius:13px;
  cursor:pointer;box-shadow:0 2px 8px rgba(255,140,26,.12)}
.ak-wtip:active{transform:scale(.995)}
.ak-wtip .wt-ic{flex:none;font-size:17px;line-height:1}
.ak-wtip .wt-tx{flex:1;min-width:0}
.ak-wtip .wt-tx b{display:block;font-size:13px;font-weight:800;color:#8a4b00;line-height:1.42;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ak-wtip .wt-tx small{display:block;font-size:11.5px;color:#b07b3c;margin-top:2px}
.ak-wtip .wt-go{flex:none;font-size:12px;font-weight:800;color:#fff;background:#ff8c1a;
  border-radius:20px;padding:6px 13px}
/* 名单里：小区名后面跟「在售 N 套」，下面是变化那一行红字 */
.wm-m b em{font-style:normal;font-size:11.5px;font-weight:600;color:#9aa6b5;margin-left:6px}
.wm-m span.wm-new{color:#e5484d;font-weight:700;font-size:12px}
.wm-m span.wm-quiet{color:#b08a4a}
.wt-sum{margin:0 0 10px;padding:10px 12px;background:#fff9ee;border:1px solid #ffe6bf;border-radius:11px;
  font-size:12.5px;color:#8a5a12;font-weight:700;line-height:1.5}
.wm-all{display:block;width:100%;margin:0 0 12px;border:1px solid #e3e8ef;background:#fff;border-radius:11px;
  padding:11px;font-size:13px;font-weight:700;color:#5b6679;font-family:inherit;cursor:pointer}
.wm-all:active{background:#f6f8fa}
.ak-pbar h2{margin:12px 0 0;font-size:16.5px;font-weight:800;color:#141b25;line-height:1.42}
.ak-views{margin-top:8px;font-size:12px;color:#8b95a6;letter-spacing:.2px}
/* 参数网格 */
.ak-pgrid{display:grid;grid-template-columns:1fr 1fr;gap:1px;background:#f1f3f6;border-radius:12px;overflow:hidden;margin-top:11px}
.ak-pgrid div{background:#fff;padding:12px 13px;font-size:12px;color:#98a2b0}
.ak-pgrid div b{display:block;font-size:14px;font-weight:700;color:#141b25;margin-top:4px}
.ak-pgrid div.full{grid-column:1 / -1}
/* ---- 经纪人名片（徐总 2026-10-16：游客页要看到是哪个中介的经纪人、头像、介绍） ----
   位置（徐总 2026-10-16 晚上定的）：房源描述下面 —— 先看房、再看人。
   名字头像从 /api/ref-info 拉（跟「微信」按钮同一个接口，不多打一次请求口子）。 */
.ak-agent{display:flex;gap:12px;align-items:flex-start;background:#fff;border-radius:14px;padding:14px;
  margin-bottom:10px;box-shadow:0 1px 4px rgba(20,32,50,.06)}
.ak-agent .av{width:52px;height:52px;border-radius:50%;flex:none;overflow:hidden;background:linear-gradient(135deg,#e8f3ff,#d9ecff);
  display:flex;align-items:center;justify-content:center;font-size:22px;font-weight:800;color:#2f6bff}
.ak-agent .av img{width:100%;height:100%;object-fit:cover;display:block}
.ak-agent .mn{flex:1;min-width:0}
.ak-agent .r1{display:flex;align-items:center;gap:7px;flex-wrap:wrap}
.ak-agent .r1 b{font-size:16px;font-weight:800;color:var(--text)}
.ak-agent .r1 .badge{font-size:10.5px;font-weight:700;color:#0a7c45;background:#eaf7f0;border-radius:8px;padding:2px 7px}
.ak-agent .st{font-size:12.5px;color:#8a95a3;margin-top:4px}
.ak-agent .it{font-size:12.5px;color:#5a6473;line-height:1.75;margin-top:7px;word-break:break-word;white-space:pre-wrap}
.ak-agent .it.ph{color:#a8b2bf}
/* 名片底部那条（徐总 2026-10-16 第二轮定稿）：
   有扫码来源 → 只给一句小提示，联系入口留在底部吸底条（归分享人，不能被截）；
   没来源（应用市场直装 / 自己搜进来的冷客）→ 直接给「加微信 / 留言咨询」，
   归属自动落发房经纪人。判据就一个 HAS_REF，见 agentCardHtml 上面那段注释。 */
.ak-agent .tip{display:flex;gap:5px;align-items:flex-start;font-size:11.5px;color:#a8b2bf;line-height:1.6;margin-top:9px}
.ak-agent .tip svg{flex:none;margin-top:1px}
.ak-agent .btns{display:flex;gap:8px;margin-top:11px}
.ak-agent .btns button{flex:1;border:0;border-radius:19px;padding:9px;font-size:13px;font-weight:800;
  font-family:inherit;cursor:pointer;-webkit-tap-highlight-color:rgba(7,163,90,.12)}
.ak-agent .btns .g{background:#eaf7f0;color:#0a7c45}
.ak-agent .btns .m{background:linear-gradient(135deg,#07a35a,#058048);color:#fff;box-shadow:0 4px 12px rgba(7,163,90,.24)}
/* 卡内小标题（左侧绿竖条） */
.ak-ct{display:flex;align-items:center;gap:7px;font-size:15.5px;font-weight:800;color:#141b25;margin-bottom:11px}
.ak-ct::before{content:"";width:3px;height:15px;border-radius:2px;background:var(--primary)}
.ak-ct .n{font-size:12.5px;font-weight:600;color:#9aa6b5}
.ak-desc{font-size:14px;color:#3b4453;line-height:1.85;word-break:break-word;white-space:pre-wrap}
.msg-none{font-size:13px;color:#9aa6b5;padding:6px 0 2px}
/* 详情页「小区档案 / 视频带看 / AI 估价」三格横排（徐总 2026-10-19「123 都做」） */
.ak-xq3{padding:13px 12px}
.ak-xq3 .ak-ct{margin-bottom:9px}
.ak-xqb{display:flex;gap:8px}
.ak-xqb a{flex:1;min-width:0;display:flex;flex-direction:column;align-items:center;gap:5px;
  text-decoration:none;background:#f7f9fb;border-radius:12px;padding:11px 4px;color:#141b25}
.ak-xqb a:active{background:#eef2f6}
.ak-xqb .i{width:34px;height:34px;border-radius:11px;display:flex;align-items:center;justify-content:center}
.ak-xqb b{font-size:13px;font-weight:700;line-height:1.2}
.ak-xqb small{font-size:10.5px;color:#9aa6b5;line-height:1.2;text-align:center}
/* 房源卡上的「有视频」小角标（跟「N图」一个位置，不打架） */
.ak-ph .tv,.rw-p .tv{position:absolute;right:6px;top:6px;background:rgba(0,0,0,.5);color:#fff;
  font-size:10px;padding:1px 6px;border-radius:4px;line-height:1.6}
/* 详情页底部操作条 */
/* z-index 要比底部那几个浮层都高（AI 悬浮球 70 / 底部导航 60 / AI 浮条 75）——
   否则它们会盖在吸底条上，把「微信」「留言咨询」的点击吃掉。 */
.ak-act{position:fixed;left:0;right:0;bottom:0;z-index:90;background:#fff;border-top:1px solid #eef0f3;
  padding:9px 12px calc(9px + env(safe-area-inset-bottom));display:flex;align-items:center;gap:9px;max-width:560px;margin:0 auto;
  box-shadow:0 -2px 12px rgba(20,32,50,.05)}
/* 详情页里 AI 悬浮球一律不出现（CSS 兜底，不指望 JS 记得关） */
body.detail #ai-fab{display:none !important}
.ak-act button{touch-action:manipulation;-webkit-tap-highlight-color:rgba(7,163,90,.12)}
/* 收藏 / 微信两个小按钮：同一个尺寸、同一个行高，别让「微信」比「收藏」矮一截
   （s47 第一版给微信套了个圆底，图标一大一小，两个字高低不齐，看着像被主按钮压住）
   position:relative + z-index 是保险：吸底条里主按钮的阴影再重也盖不到它们的点击。 */
.ak-act .fav,.ak-act .wx,.ak-act .sh{position:relative;z-index:2;flex:none;width:54px;padding:4px 0;
  display:flex;flex-direction:column;align-items:center;gap:2px;font-size:10.5px;
  color:#5a6473;border:0;background:none;font-family:inherit;cursor:pointer}
.ak-act .fav.on{color:#ff552e;font-weight:700}
.ak-act .wx{color:#0a7c45;font-weight:700}
.ak-act .sh{color:#2f6bff;font-weight:700}
.ak-act .wx svg{display:block}
.ak-act .b{flex:1;border:0;border-radius:22px;padding:13px;font-size:15px;font-weight:800;font-family:inherit;cursor:pointer}
.ak-act .b.g{background:#eaf7f0;color:#0a7c45}
.ak-act .b.m{background:linear-gradient(135deg,#07a35a,#058048);color:#fff;box-shadow:0 6px 16px rgba(7,163,90,.28)}
/* 吸底条正上方那行小提示（徐总：下边吸底，上面提示「留言咨询」） */
.ak-ap{display:flex;align-items:center;gap:6px;background:#f2fbf6;border:1px solid #cdeedc;border-radius:11px;
  padding:9px 12px;margin:12px 0;font-size:12.5px;color:#0a6c3f;line-height:1.55}
.ak-ap b{color:#0a7c45}
.ak-ap .em{color:#ff552e;font-weight:700}
/* 详情页底下的「看了这套的人还在看」推荐位（2026-10-16） */
.ak-rec{margin:16px 0 4px}
.ak-rec .ak-rt{font-size:16.5px;font-weight:700;color:var(--text);padding:2px 2px 10px}
.ak-rec .ak-rh{font-size:12px;color:var(--muted);text-align:center;padding:10px 0 2px;line-height:1.6}
/* 分享浮层（2026-10-16）：摘要卡 + 「是否关联经纪人」开关 + 发送/复制 */
.shrel{display:flex;align-items:center;gap:10px;background:#f6f8fb;border:1px solid #e6ebf2;
  border-radius:12px;padding:11px 12px;margin:12px 0;cursor:pointer;-webkit-tap-highlight-color:transparent}
.shrel .tx{flex:1;min-width:0}
.shrel .tx b{display:block;font-size:14px;color:var(--text)}
.shrel .tx span{display:block;font-size:12px;color:var(--sub);line-height:1.55;margin-top:3px}
.shrel .sw{flex:none;width:44px;height:25px;border-radius:13px;background:#cfd7e2;position:relative;transition:background .18s}
.shrel .sw:after{content:'';position:absolute;top:2px;left:2px;width:21px;height:21px;border-radius:50%;
  background:#fff;box-shadow:0 1px 3px rgba(0,0,0,.22);transition:left .18s}
.shrel.on{border-color:#cdeedc;background:#f4fbf7}
.shrel.on .sw{background:#07a35a}
.shrel.on .sw:after{left:21px}
.shbtns{display:flex;flex-direction:column;gap:9px;margin-top:2px}
.shbtns .btn{width:100%}
.shapp{font-size:12px;color:#0a6c3f;line-height:1.7;margin-top:12px;background:#f2fbf6;
  border:1px solid #cdeedc;border-radius:11px;padding:9px 12px}
.shapp b{color:#0a7c45}

/* ---- 半屏浮层：留言咨询 / 加微信（漂浮在当前这套房上面） ----
   没挂 on 的时候 pointer-events 必须是 none —— 浮层是 inset:0 盖满全屏的，
   哪怕它全透明也会把整页的点击都吃掉（这就是「微信点不动」的那种感觉）。 */
.ak-smask{position:fixed;top:0;left:0;right:0;bottom:0;z-index:120;background:rgba(10,16,26,.46);
  display:flex;align-items:flex-end;opacity:0;transition:opacity .22s ease;pointer-events:none}
.ak-smask.on{opacity:1;pointer-events:auto}
.ak-smask .ak-sheet{width:100%;max-width:560px;margin:0 auto;background:#fff;border-radius:18px 18px 0 0;
  max-height:86vh;overflow-y:auto;-webkit-overflow-scrolling:touch;
  padding:0 16px calc(18px + env(safe-area-inset-bottom));
  transform:translateY(100%);transition:transform .26s cubic-bezier(.32,.72,.3,1)}
.ak-smask.on .ak-sheet{transform:translateY(0)}
.ak-sheet .sh{position:sticky;top:0;z-index:2;background:#fff;display:flex;align-items:center;gap:9px;padding:15px 0 11px}
.ak-sheet .sh h3{margin:0;flex:1;display:flex;align-items:center;gap:7px;font-size:17px;font-weight:800;color:#141b25}
.ak-sheet .sh .x{width:30px;height:30px;border-radius:50%;border:0;background:#f2f4f7;color:#5a6473;
  font-size:14px;line-height:1;cursor:pointer;font-family:inherit}
/* 浮层顶部的房源摘要：让游客一眼确认「我是在给这套房留言」 */
.ak-sheet .shm{display:flex;gap:11px;align-items:center;background:#f6f8fa;border-radius:12px;padding:10px 12px;margin-bottom:13px}
.ak-sheet .shm .im{width:56px;height:56px;border-radius:9px;overflow:hidden;flex:none;background:#e7ebef;
  display:flex;align-items:center;justify-content:center}
.ak-sheet .shm .im img{width:100%;height:100%;object-fit:cover;display:block}
.ak-sheet .shm .tx{min-width:0;flex:1}
.ak-sheet .shm .tx b{display:block;font-size:14px;font-weight:800;color:#141b25;margin-bottom:4px;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ak-sheet .shm .tx span{display:block;font-size:12px;color:#8a95a3;
  overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.ak-sheet .shm .tx i{font-style:normal;color:#ff3b14;font-weight:800}
.ak-sheet .mlist{max-height:150px;overflow-y:auto;margin-bottom:2px}
/* 微信号名片 */
.ak-wxc{background:#f2fbf6;border:1px solid #cdeedc;border-radius:14px;padding:17px 16px 15px;text-align:center;margin-bottom:13px}
.ak-wxc .who{font-size:13px;color:#5a6473}
.ak-wxc .who b{color:#141b25;font-weight:800;font-size:16px}
.ak-wxc .id{font-size:23px;font-weight:800;color:#0a7c45;letter-spacing:.6px;margin:11px 0 5px;word-break:break-all}
.ak-wxc .id.mute{font-size:15px;font-weight:700;color:#98a2b0;letter-spacing:0}
.ak-wxc .lb{font-size:11.5px;color:#93a0ae}
.ak-wxc .it{font-size:12px;color:#5a6473;line-height:1.7;margin-top:8px;text-align:left;
  background:rgba(255,255,255,.7);border-radius:9px;padding:8px 10px;word-break:break-word}
.ak-sheet .ak-steps{margin:12px 0 2px;font-size:12.5px;color:#5a6473;line-height:2}
.ak-sheet .ak-steps b{color:#0a7c45}
.ak-sheet .ak-hintline{margin-top:10px;font-size:11.5px;color:#a0aab6;line-height:1.75;text-align:center}

/* ---- 「我的」（游客个人板块，2026-10-16 徐总：底部导航加个人板块）---- */
/* 网页版提示卡（徐总 2026-10-18）：在浏览器里看房就得提醒一句「装个 APP 更顺」，
   不能让人一直用网页版凑合 —— 装到手机上的才有图标、能收提醒、图也更跟手。 */
.dl-tip{display:flex;align-items:center;gap:11px;margin:0 0 12px;padding:13px 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;letter-spacing:.1px}
.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)}
.me-hd{display:flex;align-items:center;gap:12px;background:#fff;border-radius:14px;padding:15px 14px;margin:0 0 12px;
  box-shadow:0 1px 4px rgba(20,32,50,.06)}
.me-hd .me-av{width:46px;height:46px;border-radius:50%;flex:none;display:flex;align-items:center;justify-content:center;
  font-size:22px;background:linear-gradient(135deg,#e8f3ff,#d9ecff)}
.me-hd .me-hi{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.me-hd .me-hi b{font-size:16px;font-weight:800;color:var(--text)}
.me-hd .me-hi span{font-size:12.5px;color:var(--muted)}
.me-hd .me-ed{flex:none;border:1px solid var(--primary);background:#fff;color:var(--primary-d);font-family:inherit;
  font-size:13px;font-weight:700;border-radius:16px;padding:7px 14px;cursor:pointer}
.me-card{background:#fff;border-radius:14px;margin:0 0 12px;overflow:hidden;box-shadow:0 1px 4px rgba(20,32,50,.06)}
.me-card .me-ch{padding:13px 15px 10px;font-size:13.5px;font-weight:800;color:var(--text)}
.me-card .me-ch b{color:var(--accent)}
.me-row{display:flex;align-items:center;gap:10px;padding:14px 15px;border-top:1px solid var(--line-2);cursor:pointer}
.me-row .me-ic{width:22px;text-align:center;font-size:16px;flex:none}
.me-row .me-t{flex:1;font-size:14.5px;font-weight:600;color:var(--text)}
.me-row .me-v{font-size:12.5px;color:var(--muted);margin-right:2px}
.me-row .arr{color:#c3ccd8;font-size:17px;line-height:1}
.me-fav{display:flex;align-items:center;gap:11px;padding:11px 15px;border-top:1px solid var(--line-2);cursor:pointer}
.me-fav img,.me-fav .ni{width:58px;height:58px;border-radius:9px;flex:none;object-fit:cover;background:#eef2f7;
  display:flex;align-items:center;justify-content:center;font-size:22px}
.me-fav .mf{flex:1;min-width:0;display:flex;flex-direction:column;gap:4px}
.me-fav .mf b{font-size:14.5px;font-weight:700;color:var(--text);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.me-fav .mf span{font-size:12.5px;color:var(--muted)}
.me-fav .arr{color:#c3ccd8;font-size:17px;line-height:1}
.me-empty{padding:15px;font-size:13px;color:var(--muted);line-height:1.8;border-top:1px solid var(--line-2)}

/* ---- 底部导航（照安居客：首页 / 消息 / 发房·大按钮 / 地图 / 我的） ---- */
.ak-tabbar{position:fixed;left:0;right:0;bottom:0;z-index:60;background:#fff;border-top:1px solid #eef0f3;
  display:none;align-items:flex-end;padding:6px 4px calc(6px + env(safe-area-inset-bottom));max-width:560px;margin:0 auto;
  box-shadow:0 -2px 14px rgba(20,32,50,.07)}
.ak-tabbar.show{display:flex}
.ak-tabbar .tb{flex:1;display:flex;flex-direction:column;align-items:center;gap:3px;border:0;background:none;
  font-family:inherit;font-size:10.5px;color:#8f9bb0;padding:2px 0 1px;cursor:pointer;min-width:0;position:relative}
.ak-tabbar .tb.on{color:#0a7c45;font-weight:700}
/* 「消息」上的未读红点（徐总 2026-10-19：App 里要能提示信息） */
.ak-tabbar .tbn{position:absolute;top:-2px;right:50%;margin-right:-20px;min-width:15px;height:15px;border-radius:8px;
  background:#ff3b30;color:#fff;font-style:normal;font-size:10px;font-weight:700;line-height:15px;text-align:center;padding:0 4px;
  box-shadow:0 1px 3px rgba(255,59,48,.4);display:none}
.ak-tabbar .tb.big{flex:1.15}
.ak-tabbar .tb.big i{font-style:normal;width:46px;height:46px;border-radius:50%;margin-top:-18px;
  background:linear-gradient(135deg,#0cba66,#07a35a);color:#fff;display:flex;align-items:center;justify-content:center;
  border:3px solid #fff;box-shadow:0 6px 16px rgba(7,163,90,.38)}
.ak-tabbar .tb.big span{color:#0a7c45;font-weight:700}
/* 悬浮 AI 按钮：底部导航出来后就不用它了，只在填表的子页里保留 */
body.has-bar #ai-fab{display:none !important}

/* ==================== 意见反馈（徐总 2026-10-16） ====================
   入口在页面最底下那排页脚链接里；点开是半屏浮层，写完直接提交。
   提交后端只认「网站管理员」，店长和普通经纪人都看不到。 */
.ak-sheet .fbtip{font-size:12.5px;color:var(--sub);line-height:1.85;margin:2px 0 13px}
.ak-sheet .fbk{display:flex;gap:8px;flex-wrap:wrap;margin-bottom:11px}
.ak-sheet .fbk .chip{flex:none}
.ak-sheet .fbx{width:100%;min-height:106px;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  padding:12px 13px;font-size:14px;font-family:inherit;line-height:1.75;resize:none;outline:none;
  color:var(--text);background:#fbfcfe}
.ak-sheet .fbx:focus,.ak-sheet .fbi:focus{border-color:var(--primary);background:#fff}
.ak-sheet .fbi{width:100%;border:1.5px solid var(--line);border-radius:var(--radius-sm);padding:12px 13px;
  margin-top:10px;font-size:14px;font-family:inherit;outline:none;color:var(--text);background:#fbfcfe}
.ak-sheet .fbcnt{text-align:right;font-size:11.5px;color:var(--muted);margin-top:6px}
.fb-done{text-align:center;padding:18px 6px 8px}
.fb-done .e{font-size:40px;line-height:1}
.fb-done h4{margin:12px 0 6px;font-size:17px;font-weight:800}
.fb-done p{margin:0;font-size:13px;color:var(--sub);line-height:1.9}

/* ==================== 猜房价（徐总 2026-10-16） ====================
   首页宫格下面一条入口（.ak-play），点进来看一套真房子猜价 —— 玩一下，顺手把房看了。 */
.ak-play{position:relative;display:flex;align-items:center;gap:10px;width:100%;margin:10px 0 2px;
  padding:11px 13px;border:0;border-radius:var(--radius);text-align:left;font-family:inherit;cursor:pointer;
  background:linear-gradient(118deg,#0fae5f 0%,#0a8ba6 100%);color:#fff;overflow:hidden;
  box-shadow:0 6px 16px rgba(7,163,90,.26)}
.ak-play::after{content:'';position:absolute;top:-70%;right:-6%;width:130px;height:130px;border-radius:50%;
  background:radial-gradient(circle,rgba(255,255,255,.3),rgba(255,255,255,0) 70%);pointer-events:none}
.ak-play .pk{flex:none;width:35px;height:35px;border-radius:12px;background:rgba(255,255,255,.2);
  display:flex;align-items:center;justify-content:center}
.ak-play .pm{flex:1;min-width:0;display:flex;flex-direction:column;gap:1px}
.ak-play .pm b{font-size:14.5px;font-weight:800;letter-spacing:.2px}
.ak-play .pm small{font-size:11.5px;opacity:.92;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ak-play .pg{flex:none;font-size:13px;font-weight:800;background:rgba(255,255,255,.22);
  padding:6px 12px;border-radius:20px}
.ak-play:active{transform:translateY(1px)}
/* 猜房价页 */
.gm-top{display:flex;align-items:center;gap:8px;margin:2px 0 12px;flex-wrap:wrap}
/* 消息中心（游客站内提醒） */
.msglist{display:flex;flex-direction:column;gap:9px}
.mit{display:flex;align-items:flex-start;gap:10px;width:100%;text-align:left;border:0;background:var(--card);
  border-radius:var(--radius-sm);box-shadow:var(--shadow);padding:12px;font-family:inherit;cursor:pointer;position:relative}
.mit.un::after{content:"";position:absolute;top:12px;right:12px;width:8px;height:8px;border-radius:50%;background:#ff3b30}
.mit .mic{flex:none;width:34px;height:34px;border-radius:50%;background:var(--primary-l);display:flex;align-items:center;justify-content:center;font-size:16px}
.mit .mbody{flex:1;min-width:0;display:flex;flex-direction:column;gap:3px}
.mit .mbody b{font-size:14px;color:var(--text);font-weight:700;line-height:1.4}
.mit .mb{font-size:12.5px;color:var(--sub);line-height:1.5;word-break:break-word}
.mit .mt{font-size:11px;color:var(--muted)}
.mit .mar{flex:none;color:var(--muted);font-size:16px;align-self:center}
.gm-top .gs{background:var(--green-l);color:var(--primary-d);font-weight:800;border-radius:20px;
  padding:5px 11px;font-size:12.5px}
.gm-top .gt{font-size:12px;color:var(--muted)}
.gm-card{background:var(--card);border-radius:var(--radius);overflow:hidden;box-shadow:var(--shadow-md)}
.gm-ph{position:relative;height:188px;background:linear-gradient(135deg,#e3eaf2,#eff3f8);
  display:flex;align-items:center;justify-content:center;color:#c9d2dc}
.gm-ph img{width:100%;height:100%;object-fit:cover;display:block}
.gm-ph .loc{position:absolute;left:10px;bottom:10px;max-width:78%;display:flex;align-items:center;gap:4px;
  background:rgba(12,20,32,.55);color:#fff;font-size:12px;border-radius:20px;padding:4px 10px;
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.gm-hd{padding:13px 14px 0}
.gm-hd h4{margin:0;font-size:16.5px;font-weight:800}
.gm-hd p{margin:5px 0 0;font-size:12.5px;color:var(--sub)}
.gm-tags{display:flex;flex-wrap:wrap;gap:6px;padding:10px 14px 13px}
.gm-tags span{background:#f4f7fb;color:var(--sub);border-radius:6px;padding:3px 8px;font-size:11.5px}
.gm-tags span.g{background:var(--green-l);color:var(--primary-d);font-weight:700}
.gm-q{border-top:1px solid var(--line);padding:14px}
.gm-q .ql{font-size:13.5px;font-weight:700;margin-bottom:9px}
.gm-in{display:flex;align-items:center;gap:8px}
.gm-in input{flex:1;min-width:0;border:1.5px solid var(--line);border-radius:var(--radius-sm);
  padding:12px;font-size:19px;font-weight:800;text-align:center;font-family:inherit;color:var(--text);
  outline:none;background:#fbfcfe}
.gm-in input:focus{border-color:var(--primary);background:#fff}
.gm-in .u{flex:none;font-size:14px;font-weight:700;color:var(--sub)}
.gm-btn{width:100%;border:0;border-radius:var(--radius-sm);padding:14px;margin-top:12px;font-size:15.5px;
  font-weight:800;color:#fff;font-family:inherit;cursor:pointer;
  background:linear-gradient(135deg,#0cba66,#07a35a);box-shadow:0 4px 12px rgba(7,163,90,.24)}
.gm-btn:disabled{background:#cbd5e1;color:#f8fafc;box-shadow:none}
.gm-res{margin-top:14px;border-radius:var(--radius-sm);padding:15px 14px}
.gm-res.s{background:var(--green-l)} .gm-res.a{background:#eef7f1}
.gm-res.b{background:#fff5e0} .gm-res.c{background:#ffecec}
.gm-res .em{font-size:26px;line-height:1}
.gm-res .rt{font-size:15px;font-weight:800;margin-top:5px}
.gm-res .rp{font-size:24px;font-weight:900;color:#e2453a;margin-top:7px}
.gm-res .rp small{font-size:13px;font-weight:700;color:var(--sub);margin-left:2px}
.gm-res .rn{font-size:12.5px;color:var(--sub);line-height:2;margin-top:9px;text-align:left}
.gm-res .rn b{color:var(--text)}
.gm-act{display:flex;gap:9px;margin-top:12px}
.gm-act button{flex:1;border-radius:var(--radius-sm);padding:13px;font-size:14.5px;font-weight:700;
  font-family:inherit;cursor:pointer}
.gm-act .p{background:linear-gradient(135deg,#0cba66,#07a35a);color:#fff;border:0}
.gm-act .g{background:#fff;border:1.5px solid var(--line);color:var(--text)}
.gm-note{margin:12px 2px 0;font-size:11.5px;color:var(--muted);line-height:1.85;text-align:center}

/* ==================== 楼市快讯（徐总 2026-10-16） ====================
   首页顶上一条「热点」滚动条（顶栏下面、宫格上面，一条细的，不挡正事）；
   点开是快讯列表页：国家政策 / 本地政策，正文就地展开看，结尾标明信息来源，
   转发发出去的是咱自己的 APP 链接（不往外跳政府网站）。 */
.ak-news{display:flex;align-items:center;gap:9px;width:100%;margin:9px 0 0;padding:8px 12px;
  border:0;border-radius:var(--radius-sm);background:var(--card);font-family:inherit;text-align:left;
  box-shadow:var(--shadow);cursor:pointer;overflow:hidden}
/* 角标文字叠成两行（徐总 2026-10-19：一行太宽，占滚动字的地方）：宽度省一半，滚动标题能多露字 */
.ak-news .nb{flex:none;font-size:10px;font-weight:800;color:#fff;letter-spacing:.5px;line-height:1.25;text-align:center;
  background:linear-gradient(135deg,#ff6b2c,#ff9257);border-radius:6px;padding:2px 5px}
.ak-news .nv{flex:1;min-width:0;height:19px;overflow:hidden;display:block}
.ak-news .nt{display:block;transition:transform .45s ease}
.ak-news .nt span{display:block;height:19px;line-height:19px;font-size:12.5px;color:var(--text-2);
  white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.ak-news .nar{flex:none;color:var(--muted);font-size:13px}
/* 🔥 热度标记：看着火热、人在看（徐总 2026-10-19） */
.ak-news .nhot{flex:none;font-size:11px;font-weight:800;color:#ff6b2c;white-space:nowrap}
/* 快讯列表页 */
.nw-item{background:var(--card);border-radius:var(--radius);box-shadow:var(--shadow-md);
  padding:13px 14px;margin-bottom:10px;cursor:pointer}
.nw-hd{display:flex;align-items:center;gap:7px;margin-bottom:7px}
.nw-hd .k{flex:none;font-size:11px;font-weight:800;border-radius:6px;padding:3px 7px}
.nw-hd .k.gov{background:#fff1e6;color:#c2560f}
.nw-hd .k.loc{background:var(--green-l);color:var(--primary-d)}
.nw-hd .k.inf{background:#e8f1ff;color:#2563c4}
.nw-hd .d{margin-left:auto;font-size:11px;color:var(--muted);flex:none}
.nw-t{font-size:15px;font-weight:800;line-height:1.55}
.nw-s{font-size:12.5px;color:var(--sub);line-height:1.8;margin-top:6px;
  display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}
.nw-item.on .nw-s{-webkit-line-clamp:unset}
.nw-b{display:none;margin-top:10px;padding-top:10px;border-top:1px dashed var(--line);
  font-size:13px;color:var(--text-2);line-height:1.95;white-space:pre-wrap;word-break:break-word}
.nw-item.on .nw-b{display:block}
.nw-src{flex:1;min-width:0;font-size:11.5px;color:var(--muted);overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.nw-share{flex:none;border:0;border-radius:20px;padding:5px 11px;cursor:pointer;font-family:inherit;
  font-size:12px;font-weight:800;color:var(--primary-d);background:var(--green-l);white-space:nowrap}
.nw-ft{display:flex;align-items:center;gap:10px;margin-top:10px}
.nw-more{flex:none;font-size:12px;color:var(--primary-d);font-weight:700}
/* AI 帮搜最新政策（s59）：快讯页顶部一颗小按钮 */
.nw-ai{margin-left:auto;flex:none;border:0;border-radius:20px;padding:5px 11px;cursor:pointer;
  font-family:inherit;font-size:12px;font-weight:800;color:var(--primary-d);
  background:var(--green-l);white-space:nowrap}
.nw-ai.on{background:#e8f1ff;color:#2563c4}
.nw-ai[disabled]{opacity:.65}
