:root{
  --brand:#1A8FE3; --brand2:#5EC8F5; --navy:#0E2A47;
  /* 2026-09-30 UI 审查整改：CTA 渐变两端都保证白字对比度 ≥4.5:1
     （原浅端 #5EC8F5 白字仅 1.90:1、深端 #1A8FE3 仅 3.45:1；新浅端 #1976C4=4.74、深端 #0F6CBD=5.38） */
  --grad-cta:linear-gradient(135deg,#1976C4,#0F6CBD);
  --brand-ink:#0F6CBD;   /* 白底/浅蓝底上的品牌色文字与链接：5.38:1（原 #1A8FE3 仅 3.45:1） */
  --danger-ink:#B42318;  /* 浅红底上的红色文字：5.82:1（原 #FF6B6B 仅 2.46:1） */
  --warn-ink:#8A5A00;    /* 浅橙底上的橙色文字：5.34:1（原 #B7791F 仅 3.28:1） */
  --muted-2:#55637a;     /* 浅灰底(#F4F8FC/#EEF3F8)上的次级文字：5.7:1（原 #8a97a8 仅 2.78:1） */
  --bg:#F8FAFE; --card:#FFFFFF; --border:#E6ECF3; --text:#1f2a37; --muted:#64748b;
  --hot:#FF6B6B; --ok:#177245; --warn:#B54708;
}
/* ---------------- 全局交互反馈（2026-09-30 UI 审查整改） ----------------
   ① 统一 120ms 过渡；② 按钮 hover/active 必须有可见反馈（原 .btn 基类无 hover）；
   ③ 键盘焦点统一品牌焦点环（原仅分页输入框有，其余 outline:none 或直接去掉）；
   ④ 尊重系统「减弱动态效果」设置。 */
.btn,.ctab,.filters .tab,.pager-num,.badge,.card,.seg-i{transition:background-color .12s ease-out,border-color .12s ease-out,color .12s ease-out,box-shadow .12s ease-out,transform .12s ease-out;}
.btn:hover:not(:disabled){filter:brightness(.965);}
.btn:active:not(:disabled){transform:translateY(1px);filter:brightness(.93);}
.btn-ghost:hover:not(:disabled){background:#EEF3F8;color:var(--brand-ink);border-color:#CFE3F5;}
.btn-primary:hover:not(:disabled){filter:brightness(1.06);}
.btn-danger:hover:not(:disabled){filter:none;background:#FFD9D9;}
.btn-warn:hover:not(:disabled){filter:none;background:#FFE6C2;}
.btn:focus-visible,.ctab:focus-visible,.filters .tab:focus-visible,.filters select:focus-visible,.filters input:focus-visible,
.form input:focus-visible,.form select:focus-visible,.pager-num:focus-visible,.pager-input:focus-visible,
.seg-i:has(input:focus-visible),.login-form input:focus-visible{
  outline:2px solid var(--brand-ink);outline-offset:2px;border-color:var(--brand-ink);
}
/* 加载态：留出 spinner 位置，按钮宽度不跳动 */
.btn[data-busy="1"]{cursor:progress;opacity:.8;}
.btn[data-busy="1"]::after{content:'';display:inline-block;width:12px;height:12px;margin-left:7px;vertical-align:-1px;
  border:2px solid currentColor;border-top-color:transparent;border-radius:50%;opacity:.85;animation:btn-spin .7s linear infinite;}
@keyframes btn-spin{to{transform:rotate(360deg);}}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation-duration:.01ms !important;animation-iteration-count:1 !important;transition-duration:.01ms !important;}
}
*{box-sizing:border-box;margin:0;padding:0;}
body{font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif;background:var(--bg);color:var(--text);}
.topbar{background:var(--grad-cta);color:#fff;padding:22px 32px;}
.topbar .brand{font-size:20px;font-weight:700;}
.topbar .sub{font-size:13px;opacity:.9;margin-top:4px;}
.wrap{max-width:1320px;margin:24px auto;padding:0 20px;display:flex;flex-direction:column;gap:24px;}
.panel{background:var(--card);border:1px solid var(--border);border-radius:16px;padding:20px 22px;}
.panel-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;}
.panel-head h2{font-size:18px;color:var(--navy);}
.hint{font-size:12.5px;color:var(--muted-2);background:#F2F7FC;border:1px dashed #CFE3F5;border-radius:10px;padding:10px 12px;margin-bottom:14px;line-height:1.6;}
/* 长说明默认折叠为 2 行（2026-09-30 UI 审查整改）：超长 hint（如特殊资产 319 字）会把筛选区推到首屏外，
   折叠后由 JS 注入「展开说明」按钮，不改动静态 HTML 结构与现有文案。 */
.hint.is-clamped{display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;overflow:hidden;}
.hint-toggle{display:block;margin:-6px 0 14px;padding:2px 0;background:none;border:none;font-size:12.5px;color:var(--brand-ink);cursor:pointer;}
.hint-toggle:hover{text-decoration:underline;}
.btn{border:none;border-radius:10px;padding:9px 16px;font-size:14px;cursor:pointer;background:#EEF3F8;color:var(--navy);}
.btn-primary{background:var(--grad-cta);color:#fff;}
.btn-ghost{background:transparent;border:1px solid var(--border);color:var(--muted);}
.btn-sm{padding:6px 12px;font-size:12.5px;border-radius:8px;}

.cards{display:grid;grid-template-columns:repeat(auto-fill,minmax(320px,1fr));gap:14px;}
.cards.grid3{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));}
.pager{display:flex;justify-content:center;align-items:center;gap:6px;margin-top:14px;flex-wrap:wrap;}
@media (max-width:760px){.cards.grid3{grid-template-columns:1fr;}}
.card{border:1px solid var(--border);border-radius:12px;padding:14px 16px;background:#fff;}
.card .ct{font-size:15px;font-weight:600;color:var(--navy);margin-bottom:6px;}
.card .cs{font-size:12.5px;color:var(--muted);margin-bottom:8px;line-height:1.5;}
.card .meta{display:flex;flex-wrap:wrap;gap:8px;font-size:12px;margin-bottom:10px;}
/* —— 成交数据池：4 项关键数据固定 4 列等宽 + 缺失占位 + 日期右对齐 —— */
.card .meta--stats{display:grid;grid-template-columns:1fr 1fr 1fr 1fr;gap:14px;align-items:start;font-size:12.5px;color:#64748b;margin-bottom:6px;padding:4px 0 6px;border-bottom:1px dashed #EEF2F8;}
.card .meta--stats .ms{display:flex;flex-direction:column;gap:4px;min-width:0;line-height:1.25;}
.card .meta--stats .ms b{font-weight:600;color:var(--navy);font-size:13px;white-space:nowrap;letter-spacing:-.2px;}
.card .meta--stats .ms--deal b{color:var(--brand);}
.card .meta--stats .ms--empty{opacity:.45;}
.card .meta--stats .ms-empty{font-size:12px;color:#cbd5e1;}
.card .meta--stats .ms-k{font-size:11px;color:var(--muted);}
.card .meta--date{display:flex;justify-content:flex-end;font-size:11.5px;color:var(--muted);margin-bottom:10px;gap:6px;flex-wrap:wrap;}
.badge{padding:3px 9px;border-radius:20px;font-size:11.5px;}
.badge.active{background:#E1F2FB;color:#1266A8;}
.badge.ended{background:#FFF1E6;color:#9A4A00;}
.badge.deal{background:#E7F7EE;color:var(--ok);}
.badge.hidden{background:#F2F4F7;color:var(--muted-2);}
.card.card-hidden{opacity:.62;}
.price{font-size:18px;font-weight:700;color:var(--brand);}
.price small{font-size:12px;font-weight:400;color:var(--muted);margin-left:6px;}
.card .foot{display:flex;flex-wrap:wrap;gap:6px;margin-top:10px;}
.card .foot .btn{flex:1 1 auto;min-width:0;display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;padding:6px 10px;}
.empty{color:var(--muted);font-size:13px;padding:18px 0;text-align:center;}

.filters{display:flex;gap:10px;flex-wrap:wrap;margin-bottom:14px;}
.filters select,.filters input{padding:9px 12px;border:1px solid var(--border);border-radius:10px;font-size:14px;background:#fff;}
.filters input{flex:1;min-width:160px;}

.modal-mask{position:fixed;inset:0;background:rgba(14,42,71,.45);display:none;align-items:center;justify-content:center;z-index:50;}
.modal-mask.show{display:flex;}
.modal{background:#fff;width:480px;max-width:92vw;max-height:88vh;display:flex;flex-direction:column;border-radius:16px;padding:22px 24px;box-shadow:0 16px 48px rgba(0,0,0,.2);}
.modal-head{font-size:17px;font-weight:700;color:var(--navy);margin-bottom:16px;flex-shrink:0;}
.form{display:flex;flex-direction:column;gap:12px;}
.form label{display:flex;flex-direction:column;gap:5px;font-size:13px;color:var(--muted);}
.form input{padding:10px 12px;border:1px solid var(--border);border-radius:10px;font-size:14px;color:var(--text);}
/* 下拉框（录入人员 / 处置平台）：与同表单的 input 保持同一视觉（2026-09-17 补） */
.form select{padding:10px 12px;border:1px solid var(--border);border-radius:10px;font-size:14px;color:var(--text);background:#fff;width:100%;}
.form select[disabled]{background:#F2F7FC;color:var(--muted-2);cursor:not-allowed;}
.form .row2{display:flex;gap:12px;}
.form .row2 label{flex:1;}
.form-err{color:var(--danger-ink);font-size:12.5px;min-height:16px;}
.hammer-tip{font-size:13px;color:var(--navy);background:#F2F7FC;border-radius:10px;padding:10px 12px;line-height:1.6;}
.modal-foot{display:flex;justify-content:flex-end;gap:10px;margin-top:6px;flex-shrink:0;}
/* 模态内容滚动：表单/设置卡片内容超出视口时只在模态内滚动，避免滚轮透传到背景主页 */
.modal form.form, .modal .settings-body{overflow-y:auto;min-height:0;padding-right:4px;}

/* 拍卖阶段 / 结果 三选一 分段控件 */
.field-req{display:flex;flex-direction:column;gap:6px;}
.field-req__label{font-size:13px;color:var(--muted);}
.seg{display:flex;gap:8px;flex-wrap:wrap;}
.seg-i{display:inline-flex;align-items:center;gap:6px;padding:8px 14px;border:1px solid var(--border);border-radius:10px;font-size:13.5px;color:var(--text);cursor:pointer;background:#fff;user-select:none;}
.seg-i input{accent-color:var(--brand);}
.seg-i:has(input:checked){border-color:var(--brand);background:#EFF6FD;color:var(--brand);font-weight:600;}

/* 图片上传：选择器与预览 */
.img-picker{display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.img-picker__count{font-size:13px;color:var(--brand-ink);font-weight:600;}
.img-picker__hint{font-size:12.5px;color:var(--muted);}
.img-preview{display:flex;flex-wrap:wrap;gap:10px;margin-top:4px;}
.img-preview__item{position:relative;width:78px;height:78px;border-radius:10px;overflow:hidden;border:1px solid var(--border);background:#f2f5f9;}
.img-preview__item img{width:100%;height:100%;object-fit:cover;display:block;}
.img-preview__del{position:absolute;top:2px;right:2px;width:20px;height:20px;border:none;border-radius:50%;background:rgba(14,42,71,.7);color:#fff;font-size:13px;line-height:20px;text-align:center;cursor:pointer;}
.img-preview__del:hover{background:var(--hot);}
/* 预览图排序按钮（2026-09-09：优质资产图片上传要求支持排序，特殊资产表单同步加） */
.img-preview__mv{position:absolute;bottom:2px;width:20px;height:20px;border:none;border-radius:50%;background:rgba(14,42,71,.7);color:#fff;font-size:12px;line-height:20px;text-align:center;cursor:pointer;}
.img-preview__mv:hover{background:var(--brand);}
.img-preview__mv--l{left:2px;}
.img-preview__mv--r{right:2px;}
.img-preview__mv:disabled{opacity:.25;cursor:default;}
/* 精选推荐开关（2026-09-09：特殊资产/优质资产编辑页） */
.feat-toggle{display:flex;align-items:flex-start;gap:8px;font-size:12.5px;color:var(--text);line-height:1.6;cursor:pointer;}
.feat-toggle input{margin-top:2px;flex:0 0 auto;}
/* 图片管理模态 */
.img-mgr-status{font-size:13px;color:var(--text);margin:2px 0 12px;display:flex;align-items:center;gap:8px;flex-wrap:wrap;}
.img-mgr-status b{color:var(--brand);}
.img-mgr-warn{color:var(--warn);font-size:12px;}
.img-mgr-grid{display:grid;grid-template-columns:repeat(auto-fill,minmax(112px,1fr));gap:12px;}
.img-mgr-tile{position:relative;width:100%;aspect-ratio:1/1;border-radius:12px;overflow:hidden;border:1px solid var(--border);background:#f2f5f9;}
.img-mgr-tile img{width:100%;height:100%;object-fit:cover;display:block;}
.img-mgr-tile.is-main{border-color:var(--brand);box-shadow:0 0 0 2px rgba(26,143,227,.18);}
.img-mgr-main{position:absolute;top:6px;left:6px;background:var(--brand-ink);color:#fff;font-size:11px;font-weight:600;padding:2px 8px;border-radius:20px;line-height:1.5;}
.img-mgr-op{position:absolute;left:0;right:0;bottom:0;display:flex;justify-content:center;gap:6px;padding:6px;background:linear-gradient(180deg,rgba(14,42,71,0),rgba(14,42,71,.66));}
.img-mgr-op .btn{padding:4px 8px;font-size:12px;flex:0 0 auto;}
.img-mgr-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin-top:14px;}
.img-mgr-tip{font-size:12px;color:var(--muted);line-height:1.5;}
.img-edit-hint{font-size:12.5px;color:var(--muted-2);background:#F2F7FC;border:1px dashed #CFE3F5;border-radius:10px;padding:8px 12px;}

/* 智能主图建议条 */
.img-mgr-suggest{display:flex;align-items:center;gap:10px;flex-wrap:wrap;font-size:13px;color:var(--text);background:#FFF8E6;border:1px solid #F4D98B;border-radius:10px;padding:8px 12px;margin-bottom:10px;}
.img-mgr-suggest .btn{margin-left:auto;}
/* 缩略图尺寸角标 + 拖拽态 */
.img-mgr-dim{position:absolute;right:6px;top:6px;background:rgba(14,42,71,.62);color:#fff;font-size:10.5px;padding:1px 6px;border-radius:20px;line-height:1.5;pointer-events:none;}
.img-mgr-tile.dragging{opacity:.4;}
.img-mgr-tile.drag-over{border-color:var(--brand);box-shadow:0 0 0 2px var(--brand);}
/* 灯箱 */
#lightbox .lightbox{background:transparent;box-shadow:none;max-width:92vw;max-height:92vh;display:flex;flex-direction:column;align-items:center;gap:10px;padding:0;}
.lightbox__close{position:absolute;top:18px;right:18px;width:38px;height:38px;border:none;border-radius:50%;background:rgba(14,42,71,.7);color:#fff;font-size:18px;line-height:38px;cursor:pointer;z-index:2;}
.lightbox__close:hover{background:var(--hot);}
#lightboxImg{max-width:92vw;max-height:80vh;border-radius:10px;box-shadow:0 10px 40px rgba(0,0,0,.4);display:block;}
.lightbox__cap{color:#fff;font-size:13px;background:rgba(14,42,71,.7);padding:4px 12px;border-radius:20px;}
/* 灯箱翻页按钮（左右切换 + 独立关闭，不关闭背后的图片管理模态） */
.lightbox__nav{position:absolute;top:50%;transform:translateY(-50%);width:46px;height:46px;border:none;border-radius:50%;background:rgba(14,42,71,.6);color:#fff;font-size:28px;line-height:1;cursor:pointer;z-index:2;display:flex;align-items:center;justify-content:center;transition:background .15s;}
.lightbox__nav:hover{background:var(--brand);}
.lightbox__nav--prev{left:6px;}
.lightbox__nav--next{right:6px;}
/* 二次确认对话框 */
.modal--sm{width:360px;max-width:90vw;}
.modal-body{font-size:14px;color:var(--text);line-height:1.6;margin:4px 0 18px;}
.modal-body b{color:var(--danger-ink);}

/* 结果条件区块（按所选结果切换显示） */
.res-block{display:none;flex-direction:column;gap:10px;}
.res-block.show{display:flex;}
.res-note{font-size:12.5px;color:var(--muted-2);background:#F2F7FC;border-radius:10px;padding:9px 12px;line-height:1.6;margin:0;}

/* 徽标 */
.badge.stage{background:#EAEFFB;color:#3B5BDB;}
.badge.closed{background:#F3EEFB;color:#7A4BD1;}
.badge.asset{background:#E6F7EE;color:#1266A8;}
.badge.new{background:#FFEDED;color:var(--danger-ink);}
.badge.contacted{background:#E7F7EE;color:var(--ok);}
.btn-danger{background:#FFEDED;color:var(--danger-ink);}
.btn-danger:hover{background:#FFD9D9;}

.badge.force{background:#FFF1E6;color:#9A4A00;}
.badge.platform{background:#EDE9FB;color:#6B4BD1;}
.link-row{display:inline-block;font-size:12.5px;color:var(--brand-ink);text-decoration:none;margin-bottom:8px;}
.link-row:hover{text-decoration:underline;}
.btn-warn{background:#FFF1E0;color:var(--warn-ink);border:1px solid #F6D9A8;}
.btn-warn:hover{background:#FFE6C2;}
/* 只读输入框（自动计算的截止日）视觉降级 */
.form input[readonly]{background:#F2F7FC;color:var(--muted-2);cursor:not-allowed;}

/* 顶栏右侧：账号 + 登出 */
.topbar{display:flex;align-items:center;justify-content:space-between;gap:16px;flex-wrap:wrap;}
.topbar-right{display:flex;align-items:center;gap:12px;}
.topbar .who{font-size:13px;opacity:.92;}

/* 面板头右侧：主推计数 + 新增按钮 */
.panel-head .ph-right{display:flex;align-items:center;gap:12px;}
.feat-count{font-size:12.5px;color:var(--muted);background:#EEF3F8;padding:4px 11px;border-radius:20px;white-space:nowrap;}

/* 主推徽标（金色高亮） */
.badge.feat{background:linear-gradient(135deg,#FFD56B,#FF9F43);color:#7a3b00;font-weight:600;}
/* 排序 / 主推 按钮禁用态 */
.card .foot .btn:disabled{opacity:.45;cursor:not-allowed;}

/* 客户咨询：计数 + 筛选 tab */
.counts{display:flex;gap:8px;font-size:12.5px;}
.counts .cnt{background:#EEF3F8;color:var(--muted-2);padding:3px 10px;border-radius:20px;}
.counts .cnt.new{background:#FFEDED;color:var(--danger-ink);}
.counts .cnt.ok{background:#E7F7EE;color:var(--ok);}
.filters .tab{border:1px solid var(--border);background:#fff;color:var(--muted);border-radius:10px;padding:8px 16px;font-size:13.5px;cursor:pointer;}
.filters .tab.tab-on{background:var(--grad-cta);color:#fff;border-color:transparent;}

/* 类目 Tab 导航（房源/成交/咨询 三大分组） */
.tabs{display:flex;gap:10px;max-width:1080px;margin:22px auto 0;padding:0 20px;flex-wrap:wrap;}
.ctab{border:1px solid var(--border);background:#fff;color:var(--muted);border-radius:10px;padding:10px 22px;font-size:14px;font-weight:600;cursor:pointer;transition:all .15s;position:relative;}
.ctab:hover{color:var(--brand);border-color:var(--brand);}
.ctab-on{background:var(--grad-cta);color:#fff;border-color:transparent;box-shadow:0 6px 16px rgba(26,143,227,.18);}
.tabpane{display:flex;flex-direction:column;gap:24px;}
.tabpane[hidden]{display:none;}

/* 客户咨询卡片 */
.card.consult.is-new{border-left:4px solid var(--hot);}
.card.consult.is-ok{border-left:4px solid var(--ok);}
.card.consult .ctype{font-size:11.5px;font-weight:500;color:#3B5BDB;background:#EAEFFB;padding:2px 8px;border-radius:20px;margin-left:6px;}
.card.consult .cphone{display:inline-block;margin:2px 0 6px;font-size:13.5px;font-weight:600;color:var(--brand-ink);text-decoration:none;}
.card.consult .cphone:hover{text-decoration:underline;}

/* ---------- 登录页 ---------- */
.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;background:var(--grad-cta);}
.login-card{background:#fff;width:360px;max-width:92vw;border-radius:18px;padding:34px 30px;box-shadow:0 20px 60px rgba(14,42,71,.28);}
.login-brand{font-size:28px;font-weight:800;color:var(--navy);text-align:center;letter-spacing:2px;}
.login-sub{font-size:13px;color:var(--muted);text-align:center;margin:6px 0 22px;}
.login-form{display:flex;flex-direction:column;gap:14px;}
.login-form label{display:flex;flex-direction:column;gap:6px;font-size:13px;color:var(--muted);}
.login-form input{padding:11px 13px;border:1px solid var(--border);border-radius:10px;font-size:15px;color:var(--text);}
/* 登录页原先把 outline 直接去掉、只剩边框变色 → 焦点几乎不可见；改为「边框 + 柔和光环」，鼠标/键盘焦点都能看出来 */
.login-form input:focus{outline:none;border-color:var(--brand-ink);box-shadow:0 0 0 3px rgba(15,108,189,.16);}
.login-btn{margin-top:4px;padding:12px;font-size:15px;font-weight:600;}
.login-tip{font-size:11.5px;color:var(--muted);text-align:center;margin-top:16px;line-height:1.6;}

/* 待补图 徽标（草稿态） */
.badge.draft{background:#FFF7E6;color:#8A5A00;}
/* 卡片缩略图 */
.card .thumb{width:100%;height:120px;object-fit:cover;border-radius:10px;margin-bottom:8px;background:#f2f5f9;}
/* 批量导入结果报告 */
.import-summary{font-size:14px;margin-bottom:12px;line-height:1.6;}
.import-errs{max-height:240px;overflow:auto;border-top:1px dashed var(--border);padding-top:10px;}
.import-errs__title{font-size:13px;color:var(--danger-ink);margin-bottom:6px;}
.import-errs__row{font-size:12.5px;color:#64748b;padding:3px 0;border-bottom:1px solid #f2f5f9;}
.dup-reason{display:inline-block;margin-left:4px;color:var(--danger-ink);background:#FDECEC;border-radius:4px;padding:0 5px;font-size:11.5px;}
/* 重复原因（行内灰色小字）+ 判重口径提示（2026-09-17） */
.import-dup__why{color:var(--muted);font-size:11.5px;margin-left:2px;}
.import-errs__tip{margin-top:8px;font-size:12px;color:var(--muted);line-height:1.6;}
/* 撤销本次导入（2026-09-17 新增） */
.import-undo{margin-top:12px;padding-top:10px;border-top:1px dashed var(--border);display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.import-undo__hint{font-size:12px;color:var(--muted);line-height:1.5;flex:1;min-width:200px;}
.btn--danger-solid{background:#B42318;color:#fff;border-color:#B42318;}
.btn--danger-solid:hover{background:#8F1D14;border-color:#8F1D14;}

/* 类目 Tab 红点徽标（待处理数量） */
.ctab-badge{position:absolute;top:-7px;right:-7px;min-width:18px;height:18px;padding:0 5px;background:var(--danger-ink);color:#fff;font-size:11px;font-weight:700;line-height:18px;text-align:center;border-radius:9px;box-shadow:0 0 0 2px #fff;}
.ctab-on .ctab-badge{box-shadow:0 0 0 2px #1A8FE3;}

/* 设置 模态 */
.modal-lg{width:620px;}
.modal-x{margin-left:auto;background:none;border:none;font-size:22px;line-height:1;color:var(--muted);cursor:pointer;}
.modal-head{display:flex;align-items:center;}
.settings-body{display:flex;flex-direction:column;gap:18px;}
.set-card{border:1px solid var(--border);border-radius:14px;padding:16px 18px;background:#FBFCFE;}
.set-card-head{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px;}
.set-title{font-size:15px;color:var(--navy);}
.form-sm{gap:10px;}
.acct-table{border:1px solid var(--border);border-radius:10px;overflow:hidden;}
.acct-row{font-variant-numeric:tabular-nums;display:grid;grid-template-columns:1.2fr 1.2fr 1fr 1.1fr;align-items:center;gap:10px;padding:10px 14px;font-size:13px;border-bottom:1px solid #f2f5f9;}
.acct-row:last-child{border-bottom:none;}
.acct-row:not(.acct-thead):hover{background:#F8FBFE;}
.acct-thead{background:#F4F8FC;color:var(--muted-2);font-weight:600;font-size:12.5px;}

/* 用户管理表（小程序注册用户，对齐 acct-table 风格） */
.users-count{font-size:13px;color:var(--muted);font-weight:400;margin-left:6px;}
.users-table{border:1px solid var(--border);border-radius:10px;overflow:hidden;}
.ut-row{font-variant-numeric:tabular-nums;display:grid;grid-template-columns:64px 1.4fr 1.1fr 1.8fr 1fr 72px;align-items:center;gap:10px;padding:9px 14px;font-size:13px;border-bottom:1px solid #f2f5f9;}
.ut-row:last-child{border-bottom:none;}
.ut-row:not(.ut-thead):hover{background:#F8FBFE;}
.ut-thead{background:#F4F8FC;color:var(--muted-2);font-weight:600;font-size:12.5px;}
.ut-c-avatar{display:flex;align-items:center;}
.ut-avatar{width:34px;height:34px;border-radius:50%;object-fit:cover;background:#eef2f7;}
.ut-avatar-ph{width:34px;height:34px;border-radius:50%;background:#eef2f7;display:inline-flex;align-items:center;justify-content:center;color:var(--muted);font-size:12px;}
.ut-c-nick{font-weight:600;color:var(--navy);overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ut-c-phone{font-weight:600;color:var(--navy);}
.ut-c-openid{color:#64748b;font-family:ui-monospace,Menlo,Consolas,monospace;font-size:11.5px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;}
.ut-muted{color:var(--muted);font-weight:400;}
.ut-c-time{color:#64748b;}
.ut-status{font-size:12px;}
.ut-status.ok{color:var(--ok);}
.ut-status.disabled{color:var(--muted);}

/* 成交数据池翻页（默认每页 20 条，排序：录入时间倒序 → ID 倒序兜底） */
.pager{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-top:14px;padding-top:14px;border-top:1px solid #EEF2F8;}
.pager .btn{min-width:64px;}
.pager-num{min-width:32px;height:30px;padding:0 8px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--navy);font-size:12.5px;cursor:pointer;}
.pager-num:hover{background:#F4F8FC;}
.pager-num.is-on{background:#0F6CBD;border-color:#0F6CBD;color:#fff;font-weight:600;}
.pager .btn:disabled{opacity:.45;cursor:not-allowed;}
.pager-dots{color:#cbd5e1;font-size:13px;padding:0 2px;}
/* —— 分页快捷跳转：页码输入框（三段式分页，2026-09-15 新增） —— */
.pager-jump{display:inline-flex;align-items:center;gap:6px;margin-left:4px;}
.pager-input{width:64px;height:30px;padding:0 8px;border:1px solid var(--border);border-radius:8px;background:#fff;color:var(--navy);font-size:12.5px;text-align:center;outline:none;transition:border-color .15s ease,box-shadow .15s ease;}
.pager-input::placeholder{color:#b9c4d2;}
.pager-input:focus{border-color:var(--brand);box-shadow:0 0 0 3px rgba(26,143,227,.14);}
.pager-input::-webkit-outer-spin-button,.pager-input::-webkit-inner-spin-button{-webkit-appearance:none;margin:0;}
.pager-input{-moz-appearance:textfield;appearance:textfield;}
.pager .pager-go{min-width:auto;padding:0 12px;}
.pager-info{margin-left:auto;font-size:12px;color:var(--muted);}
.acct-op{display:flex;gap:8px;justify-content:flex-end;}
.role-badge{padding:2px 10px;border-radius:20px;font-size:11.5px;}
.role-admin{background:#E1F2FB;color:#1266A8;}
.role-staff{background:#EEF3F8;color:var(--muted-2);}

/* 成交数据池卡片折叠（按 LEO 2026-09-02 需求：信息堆积时一键收起） */
.deal-count{font-size:13px;color:var(--muted);font-weight:400;margin-left:6px;}
.collapse-btn{display:inline-flex;align-items:center;gap:4px;}
.collapse-caret{display:inline-block;transition:transform .2s ease;font-size:10px;line-height:1;}
.panel.is-collapsed .cards,.panel.is-collapsed .filters{display:none;}
.panel.is-collapsed .collapse-caret{transform:rotate(-90deg);}
/* 2026-09-16：规格描述结构化录入 + 录入人员 + 卡片录入人 */
.form .grp{border:1px solid var(--border);border-radius:12px;padding:12px 14px;margin:4px 0 10px;background:#FBFCFE;}
.form .grp-t{font-size:13px;font-weight:600;color:#1f2937;margin-bottom:10px;}
/* 2026-09-17：房型数字框（房/厅/卫/阳台）—— 「等宽方框 + 标签在后」，四组固定一行。
   三个要点：
   ① .form label 默认是 flex-direction:column（标签在上、框在下），这里必须覆盖成横向 row，
      才能做出 [框]房 的并排形态；
   ② 四组 flex:1 1 0 均分等宽，标签槽 .rt-u 固定 30px（「阳台」两字 12px 约 24px，放得下），
      于是四个方框的实测宽度完全一致；
   ③ nowrap + 各处 min-width:0：任何视口都只排一行，既不换到第二行，也不会横向溢出。
   （历史坑：原先 repeat(4,1fr) 的 1fr 不能小于 input 的 min-content ≈170px，
   4 列合计约 680px 撑破 480px 模态框内容区，导致「卫/阳台」被推到框外。） */
.form .row4{display:flex;flex-wrap:nowrap;gap:10px 8px;}
.form .row4 label{flex:1 1 0;min-width:0;display:flex;flex-direction:row;align-items:center;gap:4px;font-size:12px;white-space:nowrap;}
.form .row4 input{flex:1 1 auto;width:auto;min-width:0;padding:10px 4px;text-align:center;}
.form .row4 .rt-u{flex:0 0 30px;width:30px;}
/* 兜底：允许表单输入框收缩，避免窄视口（模态 max-width:92vw）下其他行也被撑破 */
.form input{min-width:0;}
.form .row2 label{min-width:0;}

/* ===== 联系方式设置（2026-09-16 新增）=====
   对应小程序「客服中心」页与「房源信息咨询」页展示的联系方式配置。 */
.cf-state{font-size:12.5px;color:#2F7A3F;}
.qr-line{display:flex;align-items:flex-start;gap:16px;flex-wrap:wrap;}
.qr-prev{width:130px;height:130px;object-fit:contain;border:1px solid var(--border);border-radius:10px;background:#fff;padding:4px;box-sizing:border-box;}
.qr-side{display:flex;flex-direction:column;gap:8px;justify-content:center;min-width:220px;flex:1;}
.qr-tip{font-size:12px;color:var(--muted);line-height:1.5;word-break:break-all;}
.cf-actions{display:flex;gap:10px;flex-wrap:wrap;margin-top:4px;}
.cs-op{font-size:12px;color:var(--muted);margin-top:2px;}

/* 2026-09-18 免审核整改：fabu 状态徽章 + 设置保存状态 */
.badge.ok{background:#E7F7EE;color:var(--ok);}
.badge.warn{background:#FFF1E6;color:#9A4A00;}

/* 2026-09-18 其余免审核项：导入预览确认区 + 操作日志表格 */
.import-preview{margin-top:12px;padding-top:10px;border-top:1px dashed var(--border);display:flex;align-items:center;gap:10px;flex-wrap:wrap;}
.audit-list{margin-top:6px;}
.data-table{width:100%;border-collapse:collapse;background:#fff;border:1px solid var(--border);border-radius:12px;overflow:hidden;font-size:13px;}
.data-table th{background:#F4F8FC;color:var(--muted-2);font-weight:600;text-align:left;padding:10px 12px;border-bottom:1px solid var(--border);white-space:nowrap;}
.data-table td{padding:9px 12px;border-bottom:1px solid #EEF2F8;color:var(--text);vertical-align:top;line-height:1.5;}
.data-table tr:last-child td{border-bottom:none;}
.data-table tbody tr:hover{background:#F8FBFE;}
.cf-save-state{font-size:12px;color:var(--ok);margin-left:8px;}

/* ============ 2026-09-30 UI 审查整改：Toast 轻提示 / 自研二次确认 / 空状态引导 ============ */
.toast-box{position:fixed;top:18px;left:50%;transform:translateX(-50%);z-index:120;display:flex;flex-direction:column;gap:8px;align-items:center;pointer-events:none;}
.toast{max-width:min(560px,92vw);padding:10px 16px;border-radius:10px;font-size:13.5px;line-height:1.5;color:#fff;background:#0E2A47;box-shadow:0 8px 24px rgba(14,42,71,.24);opacity:0;transform:translateY(-8px);transition:opacity .18s ease-out,transform .18s ease-out;}
.toast.is-in{opacity:1;transform:translateY(0);}
.toast.is-out{opacity:0;transform:translateY(-8px);}
.toast--ok{background:#177245;}
.toast--err{background:#B42318;}
.toast--info{background:#0E2A47;}
.ui-confirm-mask{z-index:90;}
.empty-tip{font-size:12.5px;color:var(--muted);margin-top:8px;line-height:1.6;}
/* 空状态在网格容器里应整行居中（原先只占第一列、看着偏左） */
.cards > .empty{grid-column:1 / -1;}
/* 金额 / 计数统一等宽数字，逐行扫读时位数对齐 */
.price,.badge.feat,.feat-count,.card .meta{font-variant-numeric:tabular-nums;}
