
/* Toast notification */
.rx-toast { position: fixed; top: 16px; left: 50%; transform: translateX(-50%); z-index: 99999; padding: 10px 24px; border-radius: 8px; font-size: 14px; color: #fff; box-shadow: 0 4px 16px rgba(0,0,0,0.15); opacity: 0; transition: opacity 0.25s, transform 0.25s; pointer-events: none; max-width: 420px; text-align: center; white-space: pre-wrap; }
.rx-toast.show { opacity: 1; transform: translateX(-50%) translateY(0); pointer-events: auto; }
.rx-toast.ok { background: #34c759; }
.rx-toast.info { background: var(--color-primary-600); }
.rx-toast.warn { background: #ff9500; }
.rx-toast.err { background: #ff3b30; }

* { margin: 0; padding: 0; box-sizing: border-box; }

/* ============================================================
   榕信设计系统 Token（源自 DESIGN.md，视觉改造统一引用此处变量）
   ============================================================ */
:root {
  --color-primary-50:#EFF6FF; --color-primary-100:#DBEAFE; --color-primary-200:#BFDBFE;
  --color-primary-300:#93C5FD; --color-primary-400:#60A5FA; --color-primary-500:#3B82F6;
  --color-primary-600:#2563EB; --color-primary-700:#1D4ED8; --color-primary-800:#1E40AF;
  --color-primary-900:#1E3A8A;
  --color-accent-400:#22D3EE; --color-accent-500:#06B6D4; --color-accent-600:#0891B2; --color-accent-700:#0E7490;
  --gradient-brand: linear-gradient(135deg, #3B82F6 0%, #06B6D4 100%);
  --gradient-brand-soft: linear-gradient(135deg, rgba(59,130,246,.10) 0%, rgba(6,182,212,.10) 100%);
  --color-gray-50:#F8FAFC; --color-gray-100:#F1F5F9; --color-gray-200:#E2E8F0;
  --color-gray-300:#CBD5E1; --color-gray-400:#94A3B8; --color-gray-500:#64748B;
  --color-gray-600:#475569; --color-gray-700:#334155; --color-gray-800:#1E293B; --color-gray-900:#0F172A;
  --color-surface:#FFFFFF; --color-surface-secondary:#F8FAFC; --color-surface-tertiary:#F1F5F9;
  --color-border:#E2E8F0; --color-border-strong:#CBD5E1;
  --color-success:#16A34A; --color-success-bg:#DCFCE7;
  --color-warning:#F59E0B; --color-warning-bg:#FEF3C7; --color-warning-text:#B45309;
  --color-danger:#DC2626;  --color-danger-bg:#FEE2E2;
  --color-info:#2563EB;    --color-info-bg:#DBEAFE;
  --shadow-xs: 0 1px 2px rgba(15,23,42,.06);
  --shadow-sm: 0 1px 3px rgba(15,23,42,.08);
  --shadow-md: 0 4px 12px rgba(15,23,42,.10);
  --shadow-lg: 0 8px 24px rgba(15,23,42,.12);
  --shadow-brand: 0 4px 14px rgba(37,99,235,.30);
  --font-sans: -apple-system, BlinkMacSystemFont, "PingFang SC", "Microsoft YaHei", "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;
  --radius-sm:8px; --radius-md:10px; --radius-lg:14px; --radius-xl:16px; --radius-pill:999px;
}
body { font-family: var(--font-sans); background: var(--color-surface-secondary); color: var(--color-gray-800); font-size: 15px; }

/* ---------- 登录页（2026-08 视觉重做，元素 ID 不变，JS 零改动） ---------- */
.login-page { display: flex; height: 100vh; background: var(--color-surface); }
.login-left { flex: 1; background: var(--color-surface); display: flex; flex-direction: column; justify-content: center; align-items: center; padding: 48px 40px; }
.login-brand { display: flex; align-items: center; gap: 12px; margin-bottom: 44px; }
.login-logo-img { width: 54px; height: 54px; border-radius: 15px; box-shadow: var(--shadow-md); }
.login-brand-text { display: flex; flex-direction: column; }
.login-brand-name { font-size: 24px; font-weight: 700; color: var(--color-gray-900); letter-spacing: 2px; line-height: 1.2; }
.login-brand-slogan { font-size: 12px; color: var(--color-gray-400); margin-top: 3px; letter-spacing: .5px; }
.login-form { width: 340px; }
.login-form-title { font-size: 24px; font-weight: 600; color: var(--color-gray-900); letter-spacing: -.01em; }
.login-form-sub { font-size: 13px; color: var(--color-gray-500); margin: 6px 0 26px; }
.login-field { position: relative; margin-bottom: 14px; }
.login-field > svg { position: absolute; left: 14px; top: 50%; transform: translateY(-50%); width: 18px; height: 18px; color: var(--color-gray-400); pointer-events: none; transition: color .15s; }
.login-field:focus-within > svg { color: var(--color-primary-600); }
.login-field input { width: 100%; height: 46px; padding: 0 14px 0 42px; border: 1px solid var(--color-border-strong); border-radius: var(--radius-md); font-size: 14px; font-family: var(--font-sans); color: var(--color-gray-800); background: var(--color-surface); transition: border-color .15s, box-shadow .15s; }
.login-field input:focus { outline: none; border-color: var(--color-primary-500); box-shadow: 0 0 0 3px rgba(59,130,246,.15); }
.login-field input::placeholder { color: var(--color-gray-400); }
.login-form .login-remember { font-size: 13px; color: var(--color-gray-500); display: flex; align-items: center; gap: 8px; margin: 4px 0 18px; cursor: pointer; user-select: none; white-space: nowrap; }
.login-form .login-remember input[type="checkbox"] { width: 16px; height: 16px; margin: 0; flex-shrink: 0; accent-color: var(--color-primary-600); cursor: pointer; }
.login-submit { width: 100%; height: 46px; border: none; border-radius: var(--radius-md); background: var(--gradient-brand); color: #fff; font-size: 15px; font-weight: 600; letter-spacing: 4px; cursor: pointer; font-family: var(--font-sans); transition: filter .15s, box-shadow .15s; }
.login-submit:hover { filter: brightness(1.05); box-shadow: var(--shadow-brand); }
.login-submit:active { filter: brightness(.97); }
.login-right { flex: 1; background: var(--gradient-brand); display: flex; flex-direction: column; justify-content: center; align-items: center; color: #fff; position: relative; overflow: hidden; padding: 48px; }
.login-right::before { content: ""; position: absolute; width: 420px; height: 420px; border-radius: 50%; background: rgba(255,255,255,.09); right: -140px; top: -160px; }
.login-right::after { content: ""; position: absolute; width: 260px; height: 260px; border-radius: 50%; background: rgba(255,255,255,.07); left: -90px; bottom: -100px; }
.login-right > * { position: relative; z-index: 1; }
.login-right-logo { width: 84px; height: 84px; border-radius: 22px; box-shadow: 0 14px 36px rgba(15,23,42,.28); }
.login-right-name { font-size: 30px; font-weight: 700; letter-spacing: 3px; margin-top: 18px; }
.login-right-slogan { font-size: 14px; opacity: .92; margin-top: 8px; letter-spacing: 1px; }
.login-right-features { margin-top: 22px; font-size: 13px; line-height: 1.9; opacity: .72; text-align: center; }
.login-qr-card { margin-top: 30px; background: var(--color-surface); color: var(--color-gray-800); border-radius: var(--radius-xl); padding: 18px 22px 14px; box-shadow: 0 16px 40px rgba(15,23,42,.18); text-align: center; min-width: 200px; }
.login-qr-card #qrCodeImg { display: flex; justify-content: center; }
.login-qr-card #qrCodeImg img, .login-qr-card #qrCodeImg canvas, .login-qr-card #qrCodeImg table { border-radius: 6px; }
.login-qr-card #qrStatus { font-size: 12px; color: var(--color-gray-500); margin-top: 8px; }
.login-qr-refresh { font-size: 12px; color: var(--color-primary-600); text-decoration: none; display: inline-block; margin-top: 6px; }
.login-qr-refresh:hover { color: var(--color-primary-700); text-decoration: underline; }
.login-qr-tip { font-size: 11px; color: var(--color-gray-400); margin-top: 8px; }
.app-container { display: none; height: 100vh; flex-direction: column; }

.nav-bar { background: var(--color-surface); border-bottom: 1px solid var(--color-border); display: flex; padding: 0 20px; overflow-x: auto; flex-shrink: 0; align-items: center; height: 54px; gap: 4px; }
.nav-brand { display: flex; align-items: center; gap: 9px; margin-right: 14px; white-space: nowrap; user-select: none; }
.nav-brand img { width: 30px; height: 30px; border-radius: 8px; box-shadow: var(--shadow-xs); }
.nav-brand span { font-size: 16px; font-weight: 700; color: var(--color-gray-900); letter-spacing: 1px; }
.nav-item { border: 0; background: transparent; font-family: inherit; display: flex; align-items: center; gap: 6px; height: 36px; padding: 0 14px; border-radius: var(--radius-pill); font-size: 13.5px; font-weight: 500; color: var(--color-gray-600); cursor: pointer; white-space: nowrap; transition: color .15s, background .15s; }
.nav-item svg { width: 16px; height: 16px; color: var(--color-gray-400); transition: color .15s; }
.nav-item.active { background: var(--color-primary-50); color: var(--color-primary-700); font-weight: 600; }
.nav-item.active svg { color: var(--color-primary-600); }
.nav-item:hover:not(.active) { color: var(--color-gray-900); background: var(--color-gray-100); }
.nav-user { font-size: 13px; color: var(--color-gray-600); white-space: nowrap; }
.nav-logout { background: transparent; font-family: inherit; margin-left: 12px; cursor: pointer; font-size: 13px; color: var(--color-gray-500); padding: 5px 13px; border-radius: var(--radius-pill); border: 1px solid var(--color-border); white-space: nowrap; transition: all .15s; }
.nav-logout:hover { color: var(--color-danger); border-color: var(--color-danger); background: var(--color-danger-bg); }
@media (max-width: 1400px) and (min-width: 769px) {
  .nav-bar { padding: 0 12px; gap: 2px; }
  .nav-brand { margin-right: 8px; }
  .nav-item { padding: 0 9px; gap: 4px; font-size: 13px; }
  .nav-user { max-width: 160px; overflow: hidden; text-overflow: ellipsis; }
  .nav-logout { margin-left: 6px; padding-left: 10px; padding-right: 10px; }
}
.main-content { flex: 1; overflow-y: auto; padding: 20px; }
.page { display: none; }
.page.active { display: block; }
.stat-cards { display: grid; grid-template-columns: repeat(4,1fr); gap: 12px; margin-bottom: 20px; }
.stat-card { background: white; border-radius: 12px; padding: 20px; text-align: center; cursor: pointer; box-shadow: 0 2px 8px rgba(0,0,0,0.06); transition: transform 0.2s; }
.stat-card:hover { transform: translateY(-2px); }
.stat-num { font-size: 28px; font-weight: bold; color: var(--color-primary-600); }
.stat-label { font-size: 13px; color: #666; margin-top: 4px; }
.section-title { font-size: 20px; font-weight: bold; margin-bottom: 16px; display: flex; align-items: center; }
.btn { padding: 8px 16px; border: none; border-radius: 8px; font-size: 14px; cursor: pointer; font-weight: 600; }
.btn-primary { background: var(--color-primary-600); color: white; }
.btn-primary:hover { background: #1a5ba0; }
.btn-sm { padding: 4px 10px; font-size: 12px; border-radius: 6px; }
.list-item.todo-overdue .item-title { color: #cf1322; font-weight: 600; }
.list-item.todo-overdue .item-desc { color: #a8071a; }
.list-item.todo-warning .item-title { color: #d48806; }
.list-item.todo-warning .item-desc { color: #ad6800; }
.search-bar { margin-bottom: 12px; }
.search-input { width: 100%; padding: 10px 14px; border: 1px solid #ddd; border-radius: 8px; font-size: 14px; }
.filter-bar { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; align-items: center; }
.filter-btn { padding: 6px 12px; border: 1px solid #ddd; border-radius: 6px; font-size: 13px; cursor: pointer; background: white; }
.filter-btn:hover { border-color: var(--color-primary-600); color: var(--color-primary-600); }
.prop-card { background: white; border-radius: 12px; padding: 16px; margin-bottom: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.06); cursor: pointer; }
.prop-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,0.1); }
.prop-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 8px; }
.prop-tag { padding: 2px 8px; border-radius: 4px; font-size: 12px; font-weight: 600; }
.tag-rent { background: #e6f7ff; color: var(--color-primary-600); }
.tag-sale { background: #fff7e6; color: #fa8c16; }
.tag-new { background: #ff4d4f; color: white; }
.prop-price { font-size: 20px; font-weight: bold; color: #ff4d4f; }
.prop-info { font-size: 13px; color: #666; line-height: 1.8; }
.prop-actions { display: flex; gap: 8px; margin-top: 10px; flex-wrap: wrap; }
.toggle-switch { position: relative; display: inline-block; width: 44px; height: 24px; flex-shrink: 0; }
.toggle-switch input { opacity: 0; width: 0; height: 0; }
.toggle-slider { position: absolute; cursor: pointer; top: 0; left: 0; right: 0; bottom: 0; background: #ccc; border-radius: 24px; transition: 0.3s; }
.toggle-slider:before { position: absolute; content: ''; height: 18px; width: 18px; left: 3px; bottom: 3px; background: white; border-radius: 50%; transition: 0.3s; }
.toggle-switch input:checked + .toggle-slider { background: var(--color-primary-600); }
.toggle-switch input:checked + .toggle-slider:before { transform: translateX(20px); }
.modal-overlay { display: none; position: fixed; top: 0; left: 0; width: 100%; height: 100%; background: rgba(0,0,0,0.5); z-index: 1000; justify-content: center; align-items: flex-start; padding-top: 40px; }
.modal-draggable .modal-title { cursor: move; user-select: none; touch-action: none; }
.modal-draggable .modal-title .modal-close { cursor: pointer; }
.modal-draggable .modal.is-modal-dragging { transition: none; }
body.modal-drag-active { user-select: none; cursor: move; }
body.modal-drag-active .modal-close { cursor: pointer; }
.customer-detail-modal { display: flex; flex-direction: column; max-height: 88vh; overflow: hidden; padding: 0; width: 580px; }
.rental-detail-modal { display: flex; flex-direction: column; max-height: 88vh; overflow: hidden; padding: 0; width: 640px; max-width: calc(100vw - 32px); }
.customer-detail-header { flex-shrink: 0; padding: 20px 24px 12px; background: #fff; border-bottom: 1px solid #f0f0f0; position: sticky; top: 0; z-index: 2; border-radius: 12px 12px 0 0; }
.customer-detail-header .modal-title { margin-bottom: 0; }
.customer-detail-body { flex: 1; overflow-y: auto; padding: 16px 24px 24px; min-height: 0; }
.rental-detail-images { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 8px; }
.rental-detail-images img { width: 96px; height: 96px; object-fit: cover; border-radius: 8px; border: 1px solid #eee; cursor: pointer; background: #fafafa; }
.rental-detail-images img:hover { border-color: var(--color-primary-600); }
.rental-list-row { cursor: pointer; }
.rental-list-row:hover { background: #f7fbff; }
.modal-overlay.show { display: flex; }
.modal { background: white; border-radius: 12px; width: 580px; max-height: 88vh; overflow-y: auto; padding: 24px; box-shadow: 0 8px 32px rgba(0,0,0,0.2); }
.modal-title { font-size: 18px; font-weight: bold; margin-bottom: 20px; display: flex; justify-content: space-between; align-items: center; }
.modal-close { cursor: pointer; font-size: 20px; color: #999; background: none; border: none; padding: 4px; }
.modal-close:hover { color: #333; }
.form-row { display: flex; gap: 12px; margin-bottom: 14px; }
.form-row-3 { display: flex; gap: 12px; margin-bottom: 14px; }
.form-row-3 > * { flex: 1; }
.form-group { flex: 1; }
.form-group label { display: block; font-size: 13px; color: #666; margin-bottom: 4px; }
.form-group input, .form-group select, .form-group textarea { width: 100%; padding: 8px 10px; border: 1px solid #ddd; border-radius: 6px; font-size: 14px; }
.form-group select { appearance: auto; }
.form-group textarea { min-height: 80px; resize: vertical; }
.form-group-location { position: relative; z-index: 50; }
.form-row-meta { flex-wrap: wrap; gap: 12px; }
.form-group-compact { flex: 1; min-width: 120px; max-width: 200px; }
.form-group-compact select, .form-group-compact input { width: 100%; }
.form-group-narrow { flex: 0 0 120px; max-width: 140px; min-width: 100px; }
.internal-box select { width: 100%; }
.internal-row-3 .phone-input-wrap { display: flex; gap: 4px; align-items: center; }
.internal-row-3 .phone-input-wrap input { flex: 1; min-width: 0; width: auto; }
.form-group-inline-tools { flex: 1 1 280px; max-width: none; min-width: 240px; }
.internal-box { background: #fffbe6; border: 1px solid #ffe58f; border-radius: 8px; padding: 14px; margin-bottom: 14px; font-size: 15px; }
.internal-box label { font-size: 14px; font-weight: 500; color: #595959; }
.internal-box input, .internal-box select, .internal-box textarea { font-size: 15px; }
.internal-box .form-group { font-size: 15px; }
.key-options { display: flex; gap: 8px; margin-top: 4px; }
.key-opt { padding: 6px 14px; border: 1px solid #ddd; border-radius: 6px; cursor: pointer; font-size: 13px; background: white; }
.key-opt.active { background: var(--color-primary-600); color: white; border-color: var(--color-primary-600); }
.notify-item { background: white; border-radius: 8px; padding: 12px 16px; margin-bottom: 8px; font-size: 13px; box-shadow: 0 1px 4px rgba(0,0,0,0.06); }
.notify-time { font-size: 11px; color: #999; }
.rental-card { background: white; border-radius: 12px; padding: 16px; margin-bottom: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.06); }
.rental-status { display: inline-block; padding: 2px 8px; border-radius: 4px; font-size: 12px; }
.status-active { background: #f6ffed; color: #52c41a; }
.status-due { background: #fff7e6; color: #fa8c16; }
.status-overdue { background: #fff2f0; color: #ff4d4f; }
.select-list { max-height: 240px; overflow-y: auto; border: 1px solid #eee; border-radius: 8px; margin-top: 8px; }
.select-item { padding: 10px 14px; cursor: pointer; border-bottom: 1px solid #f0f0f0; font-size: 13px; }
.select-item:hover { background: #f0f5ff; }
.chat-container { display: flex; flex-direction: column; height: calc(100vh - 160px); }
.chat-messages { flex: 1; overflow-y: auto; padding: 16px 0; }
.chat-msg { padding: 10px 16px; margin-bottom: 8px; max-width: 80%; border-radius: 12px; font-size: 14px; line-height: 1.6; }
.chat-msg.user { background: var(--color-primary-600); color: white; margin-left: auto; border-bottom-right-radius: 4px; }
.chat-msg.ai { background: white; border: 1px solid #eee; margin-right: auto; border-bottom-left-radius: 4px; }
.chat-input-bar { display: flex; gap: 8px; padding: 12px 0; }
.chat-input-bar input { flex: 1; padding: 10px 14px; border: 1px solid #ddd; border-radius: 8px; font-size: 14px; }

.calendar-title { font-size: 22px; font-weight: bold; color: var(--color-primary-600); }
.calendar-sub { font-size: 14px; color: #666; margin-top: 4px; }
.calendar-quote { font-size: 13px; color: #999; margin-top: 8px; font-style: italic; }
::-webkit-scrollbar { width: 6px; }
::-webkit-scrollbar-track { background: transparent; }
::-webkit-scrollbar-thumb { background: #ddd; border-radius: 3px; }

    .sort-col { position: relative; flex: 0 0 auto; min-width: 72px; padding: 10px 12px; font-size: 13px; color: #666; cursor: pointer; text-align: center; border-right: 1px solid #eee; user-select: none; white-space: nowrap; }
    .filter-dropdown { display: none; position: absolute; top: 100%; left: 50%; transform: translateX(-50%); background: white; border: 1px solid #ddd; border-radius: 8px; box-shadow: 0 4px 12px rgba(0,0,0,0.1); z-index: 100; min-width: 100px; max-height: 240px; overflow-y: auto; margin-top: 2px; }
    .filter-dropdown.filter-dropdown-wide { min-width: 168px; max-height: 320px; left: 0; transform: none; }
    .filter-dropdown.show { display: block; }
    .filter-dropdown.filter-dropdown-float { position: fixed; z-index: 2000; }
    .filter-dropdown-item { padding: 8px 14px; font-size: 13px; cursor: pointer; border-bottom: 1px solid #f5f5f5; }
    .filter-dropdown-item:hover { background: #f0f5ff; }
    .filter-dropdown-item.selected { background: #e6f7ff; color: var(--color-primary-600); font-weight: 600; }
    .filter-btn.active { background: #e6f7ff; color: var(--color-primary-600); border-color: var(--color-primary-600); }
    .arrow { font-size: 10px; margin-left: 2px; }
    .sort-header { display: flex; background: #f5f7fa; border: 1px solid #eee; border-radius: 8px; padding: 0; margin-bottom: 12px; overflow: visible; flex-wrap: wrap; }
    .sort-col:last-child { border-right: none; }
    .sort-col:hover { background: #e6f7ff; color: var(--color-primary-600); }
    .sort-col.active { color: var(--color-primary-600); font-weight: 600; }
    .sort-col.filtered { background: #e6f7ff; color: var(--color-primary-600); } .sort-col.filtered .sort-arrow { color: var(--color-primary-600); }
    .sort-col .sort-arrow { font-size: 10px; margin-left: 2px; }
    .sort-filter-icon { font-size: 10px; cursor: pointer; padding: 2px 4px; border-radius: 3px; margin-left: 2px; opacity: 0.5; } .sort-filter-icon:hover { opacity: 1; background: rgba(0,0,0,0.05); }

/* ===== Advanced Search Panel ===== */
.adv-search-modal { width: 680px; max-width: calc(100vw - 32px); padding: 20px 24px 24px; }
.adv-search-modal .modal-title { margin-bottom: 16px; }
.adv-search-modal .adv-search-actions { justify-content: flex-end; align-items: center; margin-top: 4px; padding-top: 12px; border-top: 1px solid #f0f0f0; gap: 8px; flex-wrap: wrap; }
.adv-field-show-store { justify-content: flex-end; }
.adv-field-show-store .adv-show-store-label { margin: 0; font-size: 13px; color: #666; font-weight: normal; display: flex; align-items: center; gap: 6px; cursor: pointer; }
.adv-search-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 10px 12px; }
.adv-search-grid > .adv-field { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.adv-search-grid > .adv-field-full { grid-column: 1 / -1; }
.adv-search-grid > .adv-field-span-2 { grid-column: span 2; }
.adv-search-grid label { font-size: 12px; color: #666; font-weight: 500; flex-shrink: 0; }
.adv-search-grid select,
.adv-search-grid input:not([type="checkbox"]) { width: 100%; box-sizing: border-box; padding: 6px 10px; border: 1px solid #ddd; border-radius: 6px; font-size: 13px; }
.adv-search-grid .adv-loc-text-group { display: flex; gap: 8px; width: 100%; }
.adv-search-grid .adv-loc-text-input { flex: 1; min-width: 0; }
.adv-search-grid .adv-loc-combo { display: flex; gap: 4px; align-items: center; width: 100%; }
.adv-search-grid .adv-loc-combo select { flex: 1; min-width: 0; }
.adv-search-grid .adv-room-group { display: flex; gap: 4px; width: 100%; }
.adv-search-grid .adv-room-group select { flex: 1; min-width: 0; padding: 6px 4px; }
.adv-range-inline { display: flex; align-items: center; gap: 4px; width: 100%; }
.adv-range-inline .adv-num-input { flex: 1; min-width: 0; width: auto; padding: 6px 6px; }
.adv-range-sep { color: #bbb; font-size: 12px; flex-shrink: 0; }
.adv-range-unit { font-size: 12px; color: #888; white-space: nowrap; flex-shrink: 0; }
.adv-price-row { display: grid !important; grid-template-columns: auto 1fr auto 1fr; gap: 8px 10px; align-items: center; }
.adv-price-row > label { margin: 0; }
.adv-price-row .adv-inline-label { text-align: right; padding-right: 2px; }
.adv-price-row .adv-price-inline { min-width: 0; }
.adv-search-grid .adv-combo-field { width: 100%; max-width: none; }
.adv-search-row { display:flex; gap:12px; margin-bottom:12px; align-items:center; flex-wrap:wrap; }
.adv-search-row label { font-size:13px; color:#666; min-width:48px; flex-shrink:0; }
.adv-search-row select, .adv-search-row input { padding:6px 10px; border:1px solid #ddd; border-radius:6px; font-size:13px; }
.adv-search-row select { min-width:100px; }
.adv-search-row.adv-room-row { flex-wrap:nowrap; }
.adv-search-row.adv-search-row-full { flex-wrap:nowrap; }
.adv-search-row.adv-search-row-full label { min-width:60px; }
.adv-input-grow { flex:1; min-width:0; }
.adv-num-input { width:72px; min-width:60px; }
.adv-loc-text-row { flex-wrap:nowrap; }
.adv-loc-text-group { display:flex; gap:8px; flex:1; min-width:0; }
.adv-loc-text-input { flex:1; min-width:0; }
.adv-triple-select-row select { min-width:88px; flex:1; }
.adv-triple-field-row { flex-wrap:nowrap; }
.adv-triple-field-row .adv-input-grow { min-width:100px; }
.adv-room-group { display:flex; gap:8px; align-items:center; flex:1; min-width:0; }
.adv-room-group .adv-room-select { min-width:0; width:88px; flex:0 0 88px; }
.adv-select-store { min-width:120px; flex:1; }
.adv-price-unit { font-size:13px; color:#666; white-space:nowrap; }
.adv-search-actions { display:flex; gap:8px; margin-top:8px; }
.adv-search-actions .btn { padding:6px 14px; font-size:13px; }
.adv-show-store-label { display:flex; align-items:center; gap:6px; font-size:13px; color:#666; min-width:auto !important; margin-right:auto; cursor:pointer; user-select:none; }
.adv-show-store-label input { margin:0; cursor:pointer; }

/* District map CSS removed */

/* ===== Map View ===== */

.map-pin { position:absolute; width:28px; height:28px; border-radius:50%; display:flex; align-items:center; justify-content:center; font-size:12px; color:white; cursor:pointer; transition:transform 0.2s; z-index:1; box-shadow:0 2px 6px rgba(0,0,0,0.2); }
.map-pin:hover { transform:scale(1.3); z-index:10; }
.map-pin.rent { background:var(--color-primary-600); }
.map-pin.sale { background:#fa8c16; }
.map-pin-icon { font-size:14px; font-weight:bold; line-height:1; }
.map-pin-label { position:absolute; top:100%; left:50%; transform:translateX(-50%); white-space:nowrap; font-size:10px; background:#fff; padding:1px 4px; border-radius:3px; box-shadow:0 1px 3px rgba(0,0,0,0.1); margin-top:2px; color:#333; pointer-events:none; }
.map-pin-tooltip { display:none; position:absolute; bottom:100%; left:50%; transform:translateX(-50%); background:white; border:1px solid #ddd; border-radius:8px; padding:8px 12px; font-size:12px; white-space:nowrap; box-shadow:0 2px 8px rgba(0,0,0,0.15); z-index:100; pointer-events:none; }
.map-pin:hover .map-pin-tooltip { display:block; }

/* ===== View Toggle ===== */
.view-toggle-bar { display:flex; gap:8px; margin-bottom:12px; align-items:center; flex-wrap:wrap; }
.view-toggle-btn { padding:6px 14px; border:1px solid #ddd; border-radius:6px; font-size:13px; cursor:pointer; background:white; transition:all 0.2s; }
.view-toggle-btn.active { background:var(--color-primary-600); color:white; border-color:var(--color-primary-600); }
.view-toggle-btn:hover { border-color:var(--color-primary-600); }

/* ===== Pin Button ===== */
.pin-btn { cursor:pointer; font-size:16px; margin-right:6px; opacity:0.3; transition:opacity 0.2s; }
.pin-btn:hover { opacity:0.7; }
.pin-btn.pinned { opacity:1; }

/* ===== Recently Viewed ===== */
.recently-viewed-bar { display:flex; gap:8px; overflow-x:auto; padding:4px 0; }
.recently-viewed-section { margin-bottom:12px; }
.recently-viewed-label { font-size:13px; color:#666; margin-bottom:6px; }
.my-prop-toolbar { margin-bottom:12px; }
.my-prop-search-row { display:flex; gap:8px; align-items:center; margin-bottom:6px; flex-wrap:wrap; }
.my-prop-search-input { flex:1; width:auto; min-width:160px; max-width:420px; padding:8px 12px; font-size:13px; border-radius:8px; border:1px solid #ddd; box-sizing:border-box; }
.my-prop-filter-btn { flex-shrink:0; min-width:72px; }
.my-prop-reset-btn { flex-shrink:0; }
#myPropFilterBtn.is-active,
#custFilterBtn.is-active { background:#e6f7ff; color:var(--color-primary-600); border-color:#91d5ff; font-weight:600; }
.my-prop-filter-summary { display:flex; flex-wrap:wrap; gap:6px; align-items:center; margin-bottom:8px; padding:8px 10px; background:#f8fbff; border:1px solid #e6f0fa; border-radius:8px; }
.my-prop-filter-summary-label { font-size:12px; color:#666; margin-right:4px; flex-shrink:0; }
.my-prop-filter-chip { display:inline-flex; align-items:center; gap:4px; padding:3px 8px 3px 10px; background:white; border:1px solid #d6e4ff; border-radius:14px; font-size:12px; color:var(--color-primary-600); line-height:1.4; }
.my-prop-filter-chip strong { font-weight:600; color:#444; }
.my-prop-filter-chip-x { border:none; background:transparent; color:#999; cursor:pointer; font-size:14px; line-height:1; padding:0 2px; }
.my-prop-filter-chip-x:hover { color:#ff4d4f; }
.my-prop-filter-modal { max-width:640px; width:calc(100vw - 32px); padding:18px 20px 20px; }
.my-prop-filter-tip { font-size:12px; color:#888; margin:-4px 0 14px; line-height:1.5; }
.my-prop-filter-form { max-height:calc(100vh - 160px); overflow-y:auto; padding-right:4px; }
.my-prop-filter-section { margin-bottom:14px; }
.my-prop-filter-section-title { font-size:13px; font-weight:600; color:var(--color-primary-600); margin-bottom:8px; padding-bottom:4px; border-bottom:1px solid #eef2f6; }
.my-prop-filter-grid { display:grid; grid-template-columns:repeat(2, minmax(0, 1fr)); gap:10px 14px; }
.my-prop-filter-grid-1 { grid-template-columns:1fr; }
@media (min-width:520px) { .my-prop-filter-grid-1 { grid-template-columns:repeat(2, minmax(0, 1fr)); } }
.my-prop-filter-field { display:flex; flex-direction:column; gap:4px; min-width:0; }
.my-prop-filter-label { font-size:12px; color:#666; font-weight:500; }
.my-prop-filter-field select { width:100%; padding:7px 10px; border:1px solid #ddd; border-radius:6px; font-size:13px; background:white; color:#333; }
.my-prop-filter-field select option { color:#333; }
.my-prop-filter-field-wide { grid-column: 1 / -1; }
.my-prop-filter-field .adv-loc-combo { display:flex; gap:6px; align-items:center; width:100%; }
.my-prop-filter-field .adv-loc-combo select { flex:1; min-width:0; }
.my-prop-range-inline { display:flex; align-items:center; gap:6px; width:100%; }
.my-prop-num-input { flex:1; min-width:0; padding:7px 8px; border:1px solid #ddd; border-radius:6px; font-size:13px; box-sizing:border-box; }
.my-prop-range-sep { color:#bbb; font-size:12px; flex-shrink:0; }
.my-prop-filter-unit-hint { font-weight:400; color:#999; font-size:11px; }
.customer-table { min-width: 980px; }
.customer-table .customer-name-cell { font-weight:600; color:#333; }
.customer-table .customer-actions { display:flex; gap:4px; flex-wrap:wrap; }
.customer-table .customer-actions .btn { font-size:11px; padding:3px 8px; }
.cust-match-section { margin-top:14px; padding:12px; background:#f0f7ff; border:1px solid #d6e8ff; border-radius:8px; }
.cust-match-section.cust-match-empty { background:#fafafa; border-color:#eee; }
.cust-match-title { font-weight:600; color:var(--color-primary-600); margin-bottom:10px; font-size:14px; }
.cust-match-count { font-weight:400; color:#888; font-size:12px; margin-left:6px; }
.cust-match-subtitle { font-size:12px; color:#666; margin:8px 0 6px; font-weight:600; }
.cust-match-cards { display:flex; flex-direction:column; gap:6px; }
.cust-match-row { display:flex; align-items:center; gap:8px; padding:10px 12px; background:#fff; border:1px solid #e8eef5; border-radius:8px; cursor:pointer; transition:background .15s; }
.cust-match-row:hover { background:#f8fbff; border-color:#b3d4ff; }
.cust-match-row-main { flex:1; min-width:0; }
.cust-match-row-title { font-weight:600; color:#333; font-size:13px; margin-bottom:3px; }
.cust-match-row-meta { font-size:12px; color:#666; }
.cust-match-row-reason { font-size:11px; color:var(--color-primary-600); margin-top:3px; }
.cust-match-row-store { font-size:11px; color:#999; margin-top:2px; }
.cust-match-row-arrow { color:#ccc; font-size:18px; flex-shrink:0; }
.cust-match-tag { font-size:10px; padding:1px 6px; border-radius:8px; margin-right:6px; font-weight:500; }
.cust-match-tag.mine { background:#e6f7ff; color:#1890ff; }
.cust-match-tag.market { background:#f6ffed; color:#52c41a; }
.cust-match-score { font-size:11px; color:#ff9500; font-weight:600; margin-left:4px; }
.cust-match-foot { font-size:11px; color:#999; margin-top:10px; }
.cust-match-tip { font-size:13px; color:#888; line-height:1.5; }
.status-follow-hint { font-size:13px; color:#666; margin:-4px 0 12px; line-height:1.5; }
.status-follow-note { width:100%; padding:10px 12px; border:1px solid #ddd; border-radius:8px; font-size:13px; resize:vertical; box-sizing:border-box; }
.status-follow-actions { display:flex; gap:10px; justify-content:flex-end; margin-top:16px; padding-top:12px; border-top:1px solid #f0f0f0; }
.cust-status-paused { background:#fff7e6; color:#d48806; }
.my-prop-follow-paused { color:#d48806; }
.my-prop-follow-sold { color:#389e0d; }
.recent-chip { padding:4px 12px; background:#f0f5ff; border:1px solid #d6e4ff; border-radius:16px; font-size:12px; cursor:pointer; white-space:nowrap; transition:all 0.2s; }
.recent-chip:hover { background:var(--color-primary-600); color:white; border-color:var(--color-primary-600); }

/* ===== Saved Search ===== */
.saved-search-list { display:flex; gap:8px; flex-wrap:wrap; margin-bottom:12px; }
.saved-search-item { padding:4px 12px; background:#f6ffed; border:1px solid #b7eb8f; border-radius:16px; font-size:12px; cursor:pointer; display:flex; align-items:center; gap:4px; }
.saved-search-item .del-save { color:#ff4d4f; cursor:pointer; margin-left:4px; }
.saved-search-item .del-save:hover { color:#cf1322; }

/* ===== Nearby Button ===== */
/* ===== Road Search ===== */
.road-search-input { padding:6px 10px; border:1px solid #ddd; border-radius:6px; font-size:13px; width:160px; flex-shrink:0; }

/* ===== 房源市场 ===== */
.market-toolbar { background:white; border:1px solid #eee; border-radius:12px; padding:12px 14px; margin-bottom:16px; box-shadow:0 2px 8px rgba(0,0,0,0.04); overflow:visible; }
.market-toolbar .saved-search-modal-empty { text-align:center; padding:32px 16px; color:#bbb; font-size:14px; }
.saved-search-modal-item { display:flex; align-items:center; justify-content:space-between; gap:12px; padding:12px 14px; border:1px solid #eee; border-radius:8px; margin-bottom:8px; cursor:pointer; transition:background 0.15s; }
.saved-search-modal-item:hover { background:#f0f5ff; border-color:#d6e4ff; }
.saved-search-modal-item .ss-name { font-weight:600; color:#333; font-size:14px; }
.saved-search-modal-item .ss-meta { font-size:12px; color:#999; margin-top:4px; }
.market-search-row { display:flex; gap:8px; align-items:center; flex-wrap:wrap; margin-bottom:0; }
.market-search-input { width:200px; min-width:140px; flex-shrink:0; padding:8px 12px; border:1px solid #ddd; border-radius:8px; font-size:14px; }
.market-toolbar-right { display:flex; gap:6px; align-items:center; flex-shrink:0; flex-wrap:wrap; }
.market-area-quick { width:108px; flex-shrink:0; padding:8px 8px; border:1px solid #ddd; border-radius:8px; font-size:13px; background:white; }
.market-map-btn { padding:7px 9px !important; font-size:12px !important; flex-shrink:0; }
.market-toolbar-right .view-toggle-btn,
.market-toolbar-right .market-reset-btn { padding:6px 10px; font-size:12px; white-space:nowrap; flex-shrink:0; }
.adv-loc-combo { display:flex; gap:6px; align-items:center; flex:1; min-width:0; }
.adv-loc-combo select { flex:1; min-width:0; }
.adv-combo-field { position:relative; flex:1; min-width:140px; display:flex; align-items:center; }
.adv-combo-input { flex:1; min-width:0; width:100%; padding:6px 28px 6px 10px; border:1px solid #ddd; border-radius:6px; font-size:13px; box-sizing:border-box; }
.adv-combo-arrow { position:absolute; right:4px; width:24px; height:24px; border:none; background:transparent; color:#888; cursor:pointer; font-size:10px; border-radius:4px; }
.adv-combo-arrow:hover { background:#f0f5fa; color:var(--color-primary-600); }
.bl-peer-suggest { left: 0; right: 0; z-index: 10052; }
.bl-peer-combo { max-width: none; }
.poster-modal #posterContent { padding: 0 4px 12px; }
.poster-builder-modal { max-width: 920px !important; width: calc(100vw - 24px); }
.poster-builder { display: flex; gap: 16px; align-items: flex-start; flex-wrap: wrap; }
.poster-builder-side { flex: 1; min-width: 260px; max-width: 340px; }
.poster-builder-preview { flex: 1; min-width: 280px; display: flex; justify-content: center; padding: 8px 0; background: #f5f7fa; border-radius: 10px; max-height: 72vh; overflow: auto; }
.poster-option-section { margin-bottom: 14px; }
.poster-option-title { font-size: 13px; font-weight: 600; color: #333; margin-bottom: 8px; }
.poster-option-hint { font-size: 11px; font-weight: normal; color: #999; }
.poster-check-grid { display: flex; flex-direction: column; gap: 6px; }
.poster-check-item { display: flex; align-items: center; gap: 8px; font-size: 13px; color: #444; cursor: pointer; }
.poster-check-locked { color: #999; cursor: default; }
.poster-image-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.poster-image-pick { display: flex; flex-direction: column; align-items: center; gap: 4px; font-size: 11px; color: #666; cursor: pointer; border: 1px solid #e8e8e8; border-radius: 8px; padding: 6px; background: #fff; }
.poster-image-pick:has(input:checked) { border-color: var(--color-primary-600); box-shadow: 0 0 0 1px var(--color-primary-600); }
.poster-image-pick img { width: 100%; height: 64px; object-fit: cover; border-radius: 4px; background: #f0f0f0; }
.poster-no-images { font-size: 12px; color: #999; line-height: 1.6; padding: 8px 10px; background: #fafafa; border-radius: 8px; border: 1px dashed #ddd; }
.poster-builder-actions { margin-top: 12px; display: flex; flex-direction: column; gap: 8px; }
.poster-builder-actions .btn { width: 100%; }
.poster-builder-tip { font-size: 11px; color: #999; text-align: center; margin-top: 8px; line-height: 1.5; }
.poster-canvas { width: 360px; max-width: 100%; background: linear-gradient(135deg, var(--color-primary-600) 0%, #1a5ba0 100%); color: #fff; border-radius: 12px; overflow: hidden; text-align: left; box-shadow: 0 8px 24px rgba(0,0,0,0.15); }
.poster-images { display: grid; gap: 2px; background: #fff; }
.poster-images-single { grid-template-columns: 1fr; }
.poster-images-duo { grid-template-columns: 1fr 1fr; }
.poster-images-grid { grid-template-columns: 1fr 1fr; }
.poster-image-cell { overflow: hidden; background: #eee; }
.poster-images-single .poster-image-cell { height: 200px; }
.poster-images-duo .poster-image-cell { height: 140px; }
.poster-images-grid .poster-image-cell { height: 110px; }
.poster-image-cell img { width: 100%; height: 100%; object-fit: cover; display: block; }
.poster-brand { font-size: 13px; font-weight: 600; opacity: 0.95; margin-bottom: 4px; }
.poster-agent { font-size: 11px; opacity: 0.82; margin-bottom: 8px; }
.poster-title { font-size: 20px; font-weight: bold; margin-bottom: 6px; line-height: 1.35; }
.poster-price { font-size: 24px; font-weight: bold; }
.poster-subprice { font-size: 12px; opacity: 0.85; margin-top: 4px; }
.poster-header { padding: 20px 20px 16px; }
.poster-body { background: rgba(255,255,255,0.97); color: #333; padding: 14px 20px 16px; }
.poster-row { display: flex; justify-content: space-between; gap: 12px; padding: 8px 0; border-bottom: 1px solid #f0f0f0; font-size: 14px; }
.poster-row:last-child { border-bottom: none; }
.poster-desc { margin-top: 10px; padding: 10px; background: #f8f9fa; border-radius: 6px; font-size: 12px; color: #666; line-height: 1.65; white-space: pre-wrap; }
.adv-store-suggest { left:0; right:0; z-index:10052; }
.adv-store-combo { max-width: none; }
.market-search-row .view-toggle-btn { flex-shrink:0; white-space:nowrap; }
.market-reset-btn { flex-shrink:0; white-space:nowrap; }
.market-property-list { display:block; }
.market-table-wrap { background:white; border:1px solid #e8edf2; border-radius:10px; overflow-x:auto; box-shadow:0 2px 8px rgba(0,0,0,0.04); }
.market-table { width:100%; border-collapse:collapse; table-layout:fixed; font-size:13px; min-width:960px; }
.market-table thead th { position:sticky; top:0; z-index:1; background:#f5f8fb; color:#666; font-weight:600; font-size:12px; text-align:left; padding:10px 12px; border-bottom:1px solid #e6edf5; white-space:nowrap; }
.market-table tbody td { padding:11px 12px; border-bottom:1px solid #f0f4f8; color:#444; vertical-align:middle; white-space:nowrap; }
.market-table tbody tr.market-row { cursor:pointer; transition:background .12s; }
.market-table tbody tr.market-row:hover { background:#f7fbff; }
.market-table tbody tr.market-row:last-child td { border-bottom:none; }
.market-col-loc { min-width:120px; white-space:normal !important; }
.market-col-price { text-align:left; min-width:88px; white-space:normal !important; }
.market-table thead th.market-col-price { text-align:left; }
.market-col-thumb { width:72px; padding:6px 10px !important; text-align:center; }
.market-list-thumb { width:52px; height:52px; border-radius:8px; overflow:hidden; margin-left:auto; background:#f0f3f6; flex-shrink:0; }
.market-list-thumb img { width:100%; height:100%; object-fit:cover; display:block; }
.market-list-thumb-empty { display:flex; align-items:center; justify-content:center; font-size:20px; color:#c0c8d0; line-height:1; }
.market-table tbody td.market-col-thumb { white-space:normal !important; }
.market-cell-main { font-size:14px; font-weight:600; color:#222; line-height:1.4; }
.market-cell-badges { display:flex; flex-wrap:wrap; gap:4px; margin-top:4px; }
.market-cell-sub { font-size:11px; color:#999; margin-top:4px; line-height:1.4; white-space:normal; max-width:100%; overflow:hidden; text-overflow:ellipsis; display:-webkit-box; -webkit-line-clamp:2; -webkit-box-orient:vertical; }
.market-badge { display:inline-block; font-size:11px; padding:1px 6px; border-radius:4px; line-height:1.4; }
.market-badge.commission { background:#fff7e6; color:#d46b08; }
.market-badge.store { background:#f6ffed; color:#389e0d; }
.market-badge.id { background:#f5f5f5; color:#666; }
.market-badge.off-market { background:#fff1f0; color:#cf1322; }
.market-favorites-banner { display:flex; align-items:center; justify-content:space-between; gap:12px; margin-top:10px; padding:10px 14px; background:linear-gradient(90deg,#fff7e6,#fff1f0); border:1px solid #ffd591; border-radius:8px; font-size:13px; font-weight:600; color:#ad6800; }
.market-type-tag { display:inline-block; padding:2px 8px; border-radius:4px; font-size:12px; font-weight:600; }
.market-type-tag.sale { background:#fff1f0; color:#cf1322; }
.market-type-tag.rent { background:#e6f7ff; color:#096dd9; }
.market-type-tag.dual { background:#f9f0ff; color:#722ed1; }
.market-price-main { font-size:15px; font-weight:700; color:#ff4d4f; line-height:1.3; }
.market-price-sub { font-size:11px; color:#999; margin-top:2px; }
.market-th { position:relative; padding:0 !important; vertical-align:middle; }
.market-th-inner { display:flex; align-items:stretch; min-height:36px; width:100%; }
.market-th-sort, .market-th-label { flex:1; border:none; background:transparent; color:inherit; font:inherit; font-weight:600; font-size:12px; text-align:left; padding:10px 8px 10px 12px; cursor:pointer; }
.market-th.is-sorted .market-th-sort { color:var(--color-primary-600); }
.market-sort-arrow { font-size:10px; color:var(--color-primary-600); }
.market-col-resizer { position:relative; width:16px; flex-shrink:0; align-self:stretch; cursor:col-resize; z-index:2; touch-action:none; }
.market-col-resizer::before { content:''; position:absolute; top:5px; bottom:5px; left:50%; transform:translateX(-50%); width:3px; border-radius:2px; background:#b8c9d9; transition:background .12s,width .12s; }
.market-col-resizer:hover::before, .market-col-resizer.is-active::before { width:5px; background:var(--color-primary-600); }
.market-th:hover .market-col-resizer::before { background:#9eb5c9; }
body.market-col-resizing .market-col-resizer.is-active::before { width:5px; background:var(--color-primary-600); }
.market-th.is-dragging { opacity:0.55; }
.market-th.is-drag-over { box-shadow:inset 0 -2px 0 var(--color-primary-600); }
body.market-col-resizing { cursor:col-resize !important; user-select:none; }
.market-col-actions { white-space:normal !important; }
.my-prop-table .market-col-loc { white-space:normal !important; }
.my-prop-pin { cursor:pointer; margin-right:4px; font-size:14px; vertical-align:middle; }
.my-prop-table-actions { display:flex; flex-wrap:wrap; gap:4px; }
.my-prop-table-actions .my-prop-btn { padding:3px 8px; font-size:11px; }
.my-prop-row.is-pinned { background:#fffbe6; }
.my-prop-table { min-width:1100px; }
.market-empty { text-align:center; padding:48px 20px; color:#bbb; background:white; border-radius:12px; border:1px dashed #e8e8e8; }


.community-suggest{position:absolute;top:100%;left:0;right:0;background:#fff;border:1px solid #e8e8e8;border-radius:8px;box-shadow:0 4px 12px rgba(0,0,0,0.1);z-index:10051;display:none;max-height:240px;overflow-y:auto;margin-top:2px;}
.community-suggest.show{display:block;}
.community-suggest-item{padding:8px 12px;cursor:pointer;font-size:13px;border-bottom:1px solid #f5f5f5;display:flex;justify-content:space-between;align-items:center;}
.community-suggest-item:hover{background:#e6f7ff;}
.community-suggest-item .cs-name{font-weight:600;color:#333;}
.community-suggest-item .cs-info{font-size:11px;color:#999;}
.school-district-hint{font-size:11px;color:#888;margin-top:4px;line-height:1.4;}
.school-district-hint strong{color:var(--color-primary-600);font-weight:600;}
.location-match-badge{display:inline-block;background:#e6f7ff;color:var(--color-primary-600);font-size:12px;padding:2px 8px;border-radius:10px;margin-top:4px;border:1px solid #91d5ff;}

/* Empty state */
.empty-state { text-align:center; padding:40px 20px; color:#bbb; }
.empty-state .empty-icon { font-size:48px; margin-bottom:12px; }
.empty-state .empty-text { font-size:14px; line-height:1.6; }
.empty-state .empty-guide { font-size:12px; color:#999; margin-top:8px; }

/* Mobile responsive */
/* 第一个768px媒体查询块 - 保留market-table相关规则，其余合并到第二个块 */

/* ===== 房源详情弹窗 ===== */
.modal.prop-detail-modal { max-width: 680px; width: calc(100vw - 32px); padding: 0; overflow: hidden; display: flex; flex-direction: column; max-height: 88vh; }
.prop-detail-modal { max-width: 680px; width: calc(100vw - 32px); padding: 0; overflow: hidden; }
.prop-detail-modal > .modal-title { padding: 16px 20px; margin: 0; border-bottom: 1px solid #f0f0f0; flex-shrink: 0; }
.prop-detail-modal > .modal-title > span { flex: 1; min-width: 0; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; margin-right: 8px; }
.prop-detail-body { padding: 0 20px 16px; flex: 1 1 auto; min-height: 0; overflow-y: auto; max-height: none; }
.prop-detail-follow-top { margin-bottom: 14px; position: sticky; top: 0; z-index: 2; background: #fff; padding-top: 4px; }
.prop-detail-follow-banner { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 20px; background: linear-gradient(90deg, #fffbe6, #fff7e6); border-bottom: 1px solid #ffe58f; }
.prop-detail-follow-banner-text { font-size: 13px; font-weight: 600; color: #8c6d1f; }
.prop-detail-follow-banner-btn { font-size: 13px; padding: 6px 14px; white-space: nowrap; flex-shrink: 0; }
.prop-detail-title-actions { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.prop-detail-follow-title-btn { font-size: 12px; padding: 5px 12px; white-space: nowrap; }
.prop-detail-hero { height: 180px; background: linear-gradient(135deg, #e8f4ff 0%, #f5f7fa 100%); border-radius: 0 0 12px 12px; display: flex; align-items: center; justify-content: center; font-size: 64px; color: #c5d9f0; margin: 0 -20px 16px; position: relative; }
.prop-detail-hero-badge { position: absolute; top: 12px; left: 12px; display: flex; gap: 6px; flex-wrap: wrap; }
.prop-detail-price-bar { display: flex; align-items: baseline; gap: 12px; flex-wrap: wrap; margin-bottom: 14px; }
.prop-detail-price-main { font-size: 26px; font-weight: 700; color: #ff4d4f; line-height: 1.2; }
.prop-detail-price-sub { font-size: 13px; color: #888; }
.prop-detail-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 16px; }
.prop-detail-chip { font-size: 12px; padding: 4px 10px; border-radius: 12px; background: #f5f5f5; color: #666; }
.prop-detail-chip.rent { background: #e6f7ff; color: var(--color-primary-600); }
.prop-detail-chip.sale { background: #fff7e6; color: #fa8c16; }
.prop-detail-chip.key { background: #f6ffed; color: #52c41a; }
.prop-detail-chip.comm { background: #fff7e6; color: #fa8c16; }
.prop-detail-section { margin-bottom: 16px; }
.prop-detail-section h4 { font-size: 14px; color: #666; margin-bottom: 8px; padding-bottom: 6px; border-bottom: 1px solid #f0f0f0; font-weight: 600; }
.prop-detail-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 8px 16px; }
.prop-detail-item { font-size: 13px; display: flex; gap: 8px; line-height: 1.5; }
.prop-detail-item .label { color: #999; min-width: 56px; flex-shrink: 0; }
.prop-detail-item .value { color: #333; flex: 1; word-break: break-all; }
.prop-detail-desc { font-size: 13px; color: #555; line-height: 1.7; background: #fafafa; border-radius: 8px; padding: 12px; }
.prop-detail-internal { background: #fffbe6; border: 1px solid #ffe58f; border-radius: 8px; padding: 14px 16px; font-size: 15px; line-height: 1.75; margin-top: 12px; }
.prop-detail-internal-secret { background: linear-gradient(135deg, #fff1f0 0%, #fff7e6 100%); border: 2px solid #ff7875; border-radius: 10px; padding: 16px 18px; margin-top: 16px; box-shadow: 0 2px 8px rgba(255, 77, 79, 0.08); }
.prop-detail-internal-title { font-size: 16px; font-weight: 700; color: #cf1322; margin-bottom: 4px; }
.prop-detail-internal-subtitle { font-size: 13px; color: #a8071a; margin-bottom: 12px; line-height: 1.5; }
.prop-detail-internal-body { display: flex; flex-direction: column; gap: 10px; font-size: 15px; }
.prop-detail-internal-body .prop-detail-item { font-size: 15px; }
.prop-detail-internal-body .prop-detail-item .label { min-width: 80px; font-size: 14px; }
.prop-detail-internal-body .prop-detail-item .value { font-size: 15px; }
.prop-detail-owner-phone { display: flex; flex-direction: column; gap: 8px; padding-top: 4px; border-top: 1px dashed #ffccc7; margin-top: 4px; padding-bottom: 2px; }
.prop-detail-contact-section { margin-top: 12px; margin-bottom: 0; padding-bottom: 14px; border-bottom: 1px solid #e8edf3; }
.prop-detail-contact-section h4 { color: var(--color-primary-600); }
.prop-detail-internal-note { margin-top: 12px; padding-top: 12px; border-top: 1px dashed #ffccc7; color: #434343; font-size: 15px; line-height: 1.75; white-space: pre-wrap; }
.prop-detail-internal h4 { font-size: 15px; color: #d48806; margin-bottom: 8px; border: none; padding: 0; }
.prop-detail-footer { display: flex; align-items: center; gap: 12px; flex-wrap: nowrap; flex-shrink: 0; padding: 12px 16px; border-top: 1px solid #f0f0f0; background: #fafafa; border-radius: 0 0 12px 12px; }
.prop-detail-footer-start { display: flex; align-items: center; gap: 8px; flex-shrink: 0; }
.prop-detail-footer-actions { display: flex; align-items: center; justify-content: flex-end; gap: 8px; flex: 1; min-width: 0; flex-wrap: nowrap; overflow-x: auto; -webkit-overflow-scrolling: touch; scrollbar-width: none; }
.prop-detail-footer-actions::-webkit-scrollbar { display: none; }
.prop-detail-footer-btn { font-size: 13px; padding: 7px 12px; white-space: nowrap; flex-shrink: 0; line-height: 1.35; }
.prop-detail-footer-dl { background: #e6f7ff; color: var(--color-primary-600); border: 1px solid #91d5ff; }
.prop-detail-hero.prop-detail-hero-img { padding: 0; overflow: hidden; height: 200px; display: block; position: relative; }
.prop-detail-hero-img img { width: 100%; height: 200px; object-fit: cover; display: block; }
.prop-detail-hero-img .prop-detail-hero-badge { position: absolute; top: 12px; left: 12px; z-index: 1; }
.prop-detail-image-tip { font-size: 12px; color: #389e0d; background: #f6ffed; border: 1px solid #b7eb8f; border-radius: 8px; padding: 10px 12px; margin-bottom: 16px; line-height: 1.6; }
.prop-detail-image-tip-warn { color: #d48806; background: #fffbe6; border-color: #ffe58f; }
.prop-detail-download-section { text-align: center; padding: 16px 0 4px; border-top: 1px dashed #e8e8e8; margin-top: 8px; }
.prop-download-all-btn { width: 100%; max-width: 320px; padding: 12px 16px !important; font-size: 14px !important; background: #e6f7ff !important; color: var(--color-primary-600) !important; border: 1px solid #91d5ff; border-radius: 10px; font-weight: 600; }
.prop-download-all-btn:disabled { opacity: 0.55; cursor: not-allowed; }
.prop-detail-download-hint-warn { color: #d48806; }
.prop-dl-modal #propImageDownloadBody { max-height: 52vh; overflow-y: auto; padding: 4px 2px 8px; }
.prop-dl-toolbar { margin-bottom: 10px; }
.prop-dl-select-all { display: flex; align-items: center; gap: 8px; font-size: 13px; color: #444; cursor: pointer; }
.prop-dl-image-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 8px; }
.prop-dl-hint { font-size: 12px; color: #999; margin-top: 10px; line-height: 1.5; }
.prop-dl-actions { display: flex; gap: 8px; justify-content: flex-end; padding-top: 12px; margin-top: 8px; border-top: 1px solid #f0f0f0; }
.prop-dl-image-pick:has(input:checked) { border-color: var(--color-primary-600); box-shadow: 0 0 0 1px var(--color-primary-600); }
.prop-detail-download-hint { font-size: 12px; color: #999; margin-top: 8px; }

.publish-tool-modal { max-width: 640px; width: calc(100vw - 32px); }
.publish-tool-body { padding: 0 4px; }
.publish-search-bar { display: flex; gap: 8px; align-items: center; margin-bottom: 16px; flex-wrap: wrap; }
.publish-search-bar label { font-size: 13px; color: #666; min-width: 48px; }
.publish-search-bar input { flex: 1; min-width: 160px; padding: 8px 10px; border: 1px solid #ddd; border-radius: 8px; }
.publish-results { min-height: 120px; max-height: 320px; overflow-y: auto; margin-bottom: 16px; }
.publish-empty { text-align: center; color: #ccc; padding: 32px 12px; font-size: 13px; }
.publish-result-row { display: flex; gap: 12px; align-items: center; justify-content: space-between; padding: 12px; border: 1px solid #f0f0f0; border-radius: 10px; margin-bottom: 10px; background: #fafafa; flex-wrap: wrap; }
.publish-result-main { flex: 1; min-width: 200px; }
.publish-result-title { font-size: 14px; font-weight: 600; color: #333; margin-bottom: 4px; }
.publish-result-meta { font-size: 12px; color: #888; line-height: 1.5; }
.publish-result-actions { display: flex; gap: 8px; flex-shrink: 0; }
.publish-btn-anjuke { background: #e6fff0 !important; color: #00a854 !important; border: 1px solid #b7eb8f; font-size: 12px !important; padding: 6px 12px !important; }
.publish-btn-58 { background: #fff2e8 !important; color: #fa541c !important; border: 1px solid #ffbb96; font-size: 12px !important; padding: 6px 12px !important; }
.publish-logs-wrap { border-top: 1px solid #f0f0f0; padding-top: 12px; }
.publish-logs-title { font-size: 13px; color: #666; font-weight: 600; margin-bottom: 8px; }
.publish-log-item { font-size: 12px; color: #555; padding: 6px 0; border-bottom: 1px dashed #f5f5f5; display: flex; justify-content: space-between; gap: 8px; }

.copywriting-modal { max-width: 560px; width: calc(100vw - 32px); }
.copywriting-body { display: flex; flex-direction: column; gap: 12px; }
.copywriting-section-head { display: flex; align-items: baseline; justify-content: space-between; gap: 8px; margin-bottom: 8px; flex-wrap: wrap; }
.copywriting-label { font-size: 14px; font-weight: 600; color: #333; }
.copywriting-hint { font-size: 12px; color: #999; }
.copywriting-textarea { width: 100%; min-height: 120px; border: 1px solid #e8e8e8; border-radius: 8px; padding: 12px; font-size: 14px; line-height: 1.8; resize: vertical; box-sizing: border-box; background: #fafafa; color: #333; }
.copywriting-textarea-ai { min-height: 140px; background: #fff; }
.copywriting-textarea-ai:disabled,
.copywriting-textarea-ai[readonly] { color: #555; }
.copywriting-ai-action { text-align: center; padding: 4px 0; }
.copywriting-footer { display: flex; gap: 8px; justify-content: flex-end; margin-top: 16px; flex-wrap: wrap; }
.copywriting-loading { color: #1890ff; font-size: 12px; }

.prop-video-modal { max-width: 420px; width: calc(100vw - 32px); }
.prop-video-body { display: flex; flex-direction: column; gap: 12px; }
.prop-video-preview-wrap {
  background: #111;
  border-radius: 12px;
  overflow: hidden;
  display: flex;
  justify-content: center;
  align-items: center;
  min-height: 320px;
  max-height: 52vh;
}
.prop-video-preview {
  width: 100%;
  max-height: 52vh;
  display: block;
  background: #000;
}
.prop-video-status {
  font-size: 13px;
  color: #666;
  text-align: center;
  min-height: 20px;
}
.prop-video-status.is-loading { color: #1890ff; }
.prop-video-status.is-error { color: #ff4d4f; }
.prop-video-copy-label { font-size: 14px; font-weight: 600; color: #333; }
.prop-video-copy-hint { font-size: 12px; color: #999; margin-top: 2px; }
.prop-video-copy-text {
  width: 100%;
  min-height: 72px;
  border: 1px solid #e8e8e8;
  border-radius: 8px;
  padding: 10px 12px;
  font-size: 13px;
  line-height: 1.7;
  resize: vertical;
  box-sizing: border-box;
  background: #fafafa;
}
.prop-video-footer {
  display: flex;
  gap: 8px;
  justify-content: flex-end;
  margin-top: 4px;
  flex-wrap: wrap;
}

.price-hist-box {
  margin: 8px 0 12px;
  padding: 10px 12px;
  background: #fafbfc;
  border: 1px solid #eef0f3;
  border-radius: 8px;
  font-size: 12px;
  color: #555;
  line-height: 1.55;
}
.price-hist-title { font-weight: 600; color: #333; margin-bottom: 6px; font-size: 13px; }
.price-hist-row { margin-top: 4px; }
.price-hist-date { color: var(--color-primary-600); font-weight: 500; margin-right: 4px; }
.price-hist-who { color: #999; }

.cust-profile-box {
  margin-bottom: 12px;
  padding: 12px;
  background: linear-gradient(180deg, #f7fbff 0%, #f8f9fa 100%);
  border: 1px solid #e6f0fa;
  border-radius: 8px;
}
.cust-profile-title { font-weight: 600; color: var(--color-primary-600); margin-bottom: 8px; font-size: 14px; }
.cust-profile-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 6px 12px;
  font-size: 13px;
}
.cust-profile-grid .label { color: #888; margin-right: 6px; }
.cust-profile-note { margin-top: 8px; font-size: 12px; color: #666; line-height: 1.5; }
.cust-profile-ai-row { margin-top: 10px; display: flex; gap: 8px; flex-wrap: wrap; }
.cust-profile-ai-text { margin-top: 8px; font-size: 13px; color: #333; line-height: 1.6; }

.my-prop-batch-bar { display: inline-flex; gap: 6px; align-items: center; margin-left: 4px; }
.market-col-check { width: 36px; text-align: center; vertical-align: middle; }
.my-prop-row-check, .my-prop-check-all { cursor: pointer; }

.ai-config-status {
  font-size: 13px;
  color: var(--color-primary-600);
  background: #f0f7ff;
  border: 1px solid #d6e4ff;
  border-radius: 8px;
  padding: 8px 12px;
  margin-bottom: 12px;
  line-height: 1.5;
}
.d4-ai-config-heading { display:flex; justify-content:space-between; gap:20px; align-items:flex-start; margin-bottom:14px; }
.d4-platform-ai-grid { display:grid; grid-template-columns:repeat(3,minmax(0,1fr)); gap:12px; margin:18px 0; }
.d4-platform-ai-card { display:flex; flex-direction:column; gap:8px; min-height:132px; padding:20px; border:1px solid var(--color-border); border-radius:var(--radius-lg); background:#fff; color:var(--color-gray-900); text-align:left; font:inherit; cursor:pointer; box-shadow:var(--shadow-xs); transition:border-color .15s,box-shadow .15s,transform .15s; }
.d4-platform-ai-card:hover { border-color:var(--color-primary-300); box-shadow:var(--shadow-sm); transform:translateY(-1px); }
.d4-platform-ai-card strong { font-size:16px; }
.d4-platform-ai-card span { color:var(--color-gray-600); font-size:13px; line-height:1.6; }
@media (max-width:760px) { .d4-platform-ai-grid { grid-template-columns:1fr; } }
.d4-ai-config-heading h3 { margin:0 0 6px; color:var(--color-gray-900); }
.d4-ai-config-heading p { margin:0; color:var(--color-gray-600); line-height:1.6; font-size:13px; max-width:760px; }
.d4-ai-config-summary { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:10px; margin-bottom:14px; }
.d4-ai-config-summary > div { padding:13px 14px; border:1px solid var(--color-border); border-radius:var(--radius-md); background:linear-gradient(145deg,#fff,var(--color-primary-50)); }
.d4-ai-config-summary span { display:block; color:var(--color-gray-500); font-size:12px; margin-bottom:5px; }
.d4-ai-config-summary strong { color:var(--color-gray-900); font-size:18px; }
.d4-ai-config-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:12px; margin-bottom:12px; }
.d4-ai-config-capability, .d4-ai-credentials-card { border:1px solid var(--color-border); border-radius:var(--radius-lg); padding:15px; background:#fff; box-shadow:var(--shadow-xs); }
.d4-ai-config-card-head { display:flex; justify-content:space-between; align-items:flex-start; gap:12px; margin-bottom:12px; }
.d4-ai-config-card-head h4 { margin:3px 0 0; color:var(--color-gray-900); }
.d4-ai-config-card-head > span { color:var(--color-gray-500); font-size:12px; }
.d4-ai-config-kicker { color:var(--color-primary-600); font-size:11px; font-weight:600; letter-spacing:.08em; }
.d4-ai-config-badge { display:inline-flex; padding:3px 8px; border-radius:999px; background:var(--color-gray-100); color:var(--color-gray-600); font-size:11px; white-space:nowrap; }
.d4-ai-config-badge.verified { background:var(--color-success-bg); color:var(--color-success); }
.d4-ai-config-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; }
.d4-ai-config-fields label { display:flex; flex-direction:column; gap:5px; color:var(--color-gray-600); font-size:12px; }
.d4-ai-config-fields select, .d4-ai-config-fields input, .d4-ai-credential-row input { min-height:38px; border:1px solid var(--color-border); border-radius:var(--radius-sm); padding:0 10px; background:#fff; color:var(--color-gray-800); min-width:0; }
.d4-ai-config-readonly { min-height:38px; display:flex; align-items:center; padding:0 10px; border-radius:var(--radius-sm); background:var(--color-gray-50); color:var(--color-gray-700); }
.d4-ai-config-actions { display:flex; justify-content:flex-end; gap:8px; margin-top:12px; flex-wrap:wrap; }
.d4-ai-config-source { color:var(--color-gray-500); font-size:11px; margin:10px 0 0; }
.d4-ai-credentials-table { border:1px solid var(--color-gray-100); border-radius:var(--radius-md); overflow:hidden; }
.d4-ai-credential-row { display:grid; grid-template-columns:minmax(150px,1.2fr) auto minmax(170px,1fr) auto; gap:10px; align-items:center; padding:11px 12px; border-bottom:1px solid var(--color-gray-100); }
.d4-ai-credential-row:last-child { border-bottom:0; }
.d4-ai-credential-row > div:first-child span { display:block; color:var(--color-gray-500); font-size:11px; margin-top:3px; }
.d4-ai-credential-actions { display:flex; gap:6px; flex-wrap:wrap; justify-content:flex-end; }
.d4-ai-new-credential { margin-top:16px; padding-top:14px; border-top:1px solid var(--color-gray-100); }
.d4-ai-new-credential h4 { margin:0 0 12px; }
.d4-ai-config-empty { text-align:center; padding:24px; color:var(--color-gray-500); }
@media (max-width:900px) { .d4-ai-config-summary, .d4-ai-config-grid { grid-template-columns:repeat(2,minmax(0,1fr)); } .d4-ai-credential-row { grid-template-columns:1fr; } }
@media (max-width:620px) { .d4-ai-config-summary, .d4-ai-config-grid, .d4-ai-config-fields { grid-template-columns:1fr; } }

.xhs-note-modal { max-width: 600px; width: calc(100vw - 32px); }
.xhs-note-body { display: flex; flex-direction: column; gap: 12px; }
.xhs-note-panel { border-top: 1px solid #f0f0f0; padding-top: 12px; margin-top: 4px; }
.xhs-note-prop-title { font-size: 14px; font-weight: 600; color: #333; margin-bottom: 8px; }
.xhs-note-actions { text-align: center; padding: 4px 0 8px; }
.xhs-note-footer { display: flex; gap: 8px; justify-content: flex-end; margin-top: 12px; flex-wrap: wrap; }
.xhs-image-preview { display: flex; gap: 8px; flex-wrap: wrap; margin-top: 4px; }
.xhs-image-preview img { width: 72px; height: 72px; object-fit: cover; border-radius: 8px; border: 1px solid #eee; }
.xhs-image-hint { font-size: 12px; color: #999; width: 100%; margin-top: 4px; }

.market-insight-modal { max-width: 640px; width: calc(100vw - 32px); }
.market-insight-body { padding: 0 4px 8px; }
.market-insight-results { max-height: 420px; overflow-y: auto; }
.market-insight-section { background: #fafafa; border-radius: 8px; padding: 12px; margin-bottom: 10px; }
.market-insight-title { font-weight: 600; margin-bottom: 8px; font-size: 14px; color: #333; }
.service-tool-modal { max-width: 640px; width: calc(100vw - 32px); }
.service-tool-body { padding: 0 4px 8px; max-height: 70vh; overflow-y: auto; }
.service-tool-footer { display: flex; gap: 8px; justify-content: flex-end; padding: 12px 16px; border-top: 1px solid #f0f0f0; flex-wrap: wrap; }
.service-check-list { max-height: 160px; overflow-y: auto; border: 1px solid #eee; border-radius: 8px; padding: 8px; background: #fafafa; }
.service-check-item { display: flex; align-items: flex-start; gap: 8px; padding: 6px 4px; font-size: 13px; border-bottom: 1px dashed #eee; }
.service-check-item:last-child { border-bottom: none; }
.contract-legal-notice { background: #fff7e6; border: 1px solid #ffd591; border-radius: 8px; padding: 12px; font-size: 12px; color: #ad6800; line-height: 1.6; margin-bottom: 12px; }
.contract-sample-list { display: flex; flex-direction: column; gap: 10px; max-height: 420px; overflow-y: auto; }
.contract-sample-card { border: 1px solid #eee; border-radius: 8px; padding: 12px; background: #fafafa; }
.contract-sample-card h4 { margin: 0 0 6px; font-size: 14px; color: #333; }
.contract-sample-meta { font-size: 12px; color: #666; line-height: 1.5; margin-bottom: 8px; }
.contract-sample-actions { display: flex; gap: 8px; flex-wrap: wrap; }
.contract-sample-card.active { border-color: var(--color-primary-600); background: #f0f7ff; }
.contract-source-bar { margin-top: 10px; padding: 10px 12px; background: #f6ffed; border: 1px solid #b7eb8f; border-radius: 8px; font-size: 12px; color: #333; line-height: 1.6; }
.contract-source-bar strong { color: #389e0d; }
.contract-preview-modal { max-width: 720px; }
.contract-source-tag { display: inline-block; background: #e6f7ff; color: var(--color-primary-600); padding: 1px 6px; border-radius: 4px; font-size: 11px; }
.market-watch-tag { display: inline-flex; align-items: center; gap: 4px; background: #e6f7ff; color: var(--color-primary-600); border-radius: 12px; padding: 4px 10px; font-size: 12px; margin: 0 6px 6px 0; }
.market-watch-tag button { border: none; background: transparent; color: #999; cursor: pointer; font-size: 14px; line-height: 1; padding: 0 2px; }
.deal-stats-modal { max-width: 520px; width: calc(100vw - 32px); }
.deal-stats-body { max-height: 400px; overflow-y: auto; padding: 4px 0; }
.deal-stats-row { padding: 12px 0; border-bottom: 1px solid #f5f5f5; }

.publish-log-time { color: #bbb; flex-shrink: 0; font-size: 11px; }
.publish-preview-modal { max-width: 560px; width: calc(100vw - 32px); }
.publish-preview-body { max-height: 50vh; overflow-y: auto; }
.publish-preview-tip { font-size: 13px; color: #666; line-height: 1.6; margin-bottom: 12px; padding: 10px 12px; background: #f7f9fc; border-radius: 8px; }
.publish-preview-warn { font-size: 12px; color: #d48806; background: #fffbe6; border: 1px solid #ffe58f; border-radius: 8px; padding: 10px 12px; margin-bottom: 12px; }
.publish-map-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.publish-map-table th, .publish-map-table td { border: 1px solid #f0f0f0; padding: 8px 10px; text-align: left; }
.publish-map-table th { background: #fafafa; color: #666; font-weight: 600; }
.publish-step-fill { margin-top: 14px; padding-top: 14px; border-top: 1px dashed #e8e8e8; }
.publish-login-hint { font-size: 12px; color: #888; line-height: 1.6; margin-bottom: 10px; }
.publish-preview-footer { display: flex; gap: 8px; justify-content: flex-end; margin-top: 14px; padding-top: 12px; border-top: 1px solid #f0f0f0; }
.prop-img-upload { border: 1px dashed #ccc; border-radius: 8px; padding: 16px; text-align: center; color: #999; font-size: 13px; cursor: pointer; background: #fafafa; margin-top: 6px; }
.prop-img-upload:hover { border-color: var(--color-primary-600); color: var(--color-primary-600); background: #f0f5ff; }
.prop-img-preview { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 10px; }
.prop-img-thumb { position: relative; width: 72px; height: 72px; border-radius: 8px; overflow: hidden; border: 1px solid #eee; }
.prop-img-thumb img { width: 100%; height: 100%; object-fit: cover; }
.prop-img-del { position: absolute; top: 2px; right: 2px; width: 20px; height: 20px; border: none; border-radius: 50%; background: rgba(0,0,0,0.55); color: #fff; cursor: pointer; font-size: 14px; line-height: 1; }
.prop-store-modal { max-width: 560px; }
.prop-store-info-card { background: linear-gradient(135deg, #f0f5ff 0%, #fafafa 100%); border: 1px solid #d6e4ff; border-radius: 12px; padding: 14px 16px; margin-bottom: 16px; }
.prop-store-info-title { font-size: 16px; font-weight: 600; color: #333; margin-bottom: 10px; }
.prop-store-info-grid { display: flex; flex-direction: column; gap: 8px; }
.prop-store-info-item { display: flex; gap: 10px; font-size: 13px; line-height: 1.5; }
.prop-store-info-item .label { color: #888; min-width: 64px; flex-shrink: 0; }
.prop-store-info-item .value { color: #333; flex: 1; }
.prop-store-agents-tip { font-size: 12px; color: #888; margin-bottom: 10px; }
.prop-store-agents { display: flex; flex-direction: column; gap: 8px; }
.prop-store-agents-empty { font-size: 13px; color: #999; padding: 12px; background: #fafafa; border-radius: 8px; text-align: center; }
.prop-agent-item { display: flex; align-items: center; justify-content: space-between; gap: 10px; padding: 10px 12px; border: 1px solid #eee; border-radius: 10px; background: #fff; }
.prop-agent-main { flex: 1; min-width: 0; }
.prop-agent-name { font-size: 14px; font-weight: 600; color: #333; }
.prop-agent-tag { display: inline-block; font-size: 11px; font-weight: 500; color: var(--color-primary-600); background: #e6f7ff; border-radius: 4px; padding: 1px 6px; margin-left: 4px; vertical-align: middle; }
.prop-agent-phone { font-size: 13px; color: #666; margin-top: 2px; letter-spacing: 0.5px; }
.prop-agent-actions { display: flex; gap: 6px; flex-shrink: 0; }
.prop-agent-btn { border: 1px solid #d9d9d9; background: #fff; border-radius: 6px; padding: 5px 10px; font-size: 12px; cursor: pointer; color: #333; text-decoration: none; white-space: nowrap; }
.prop-agent-btn.call { border-color: #91d5ff; background: #e6f7ff; color: var(--color-primary-600); }
.prop-agent-btn.copy:hover, .prop-agent-btn.call:hover { opacity: 0.85; }
.store-dir-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 12px; }
@media (max-width: 768px) { .store-dir-grid { grid-template-columns: 1fr; } }
.store-dir-hint { font-size: 13px; color: #888; margin-bottom: 12px; padding: 10px 12px; background: #fafafa; border-radius: 8px; border: 1px solid #f0f0f0; }
.store-dir-card { background: #fff; border-radius: 12px; margin-bottom: 0; box-shadow: 0 2px 8px rgba(0,0,0,0.06); overflow: hidden; cursor: pointer; transition: box-shadow 0.15s; height: 100%; width:100%; text-align:left; font:inherit; }
.store-dir-card:hover { box-shadow: 0 4px 12px rgba(0,0,0,0.1); }
.store-dir-header { display: flex; align-items: center; gap: 10px; padding: 12px 14px; }
.store-dir-icon { font-size: 22px; flex-shrink: 0; line-height: 1; }
.store-dir-main { flex: 1; min-width: 0; }
.store-dir-name { font-size: 15px; font-weight: 600; color: #333; margin-bottom: 4px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.store-dir-meta { font-size: 12px; color: #666; line-height: 1.55; }
.store-dir-meta-line { white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.store-dir-meta-sub { color: #999; font-size: 11px; margin-top: 2px; }
.store-dir-actions { display: flex; gap: 6px; flex-shrink: 0; flex-wrap: wrap; align-items: flex-start; }
.store-dir-btn { border: 1px solid #d9d9d9; background: #fff; border-radius: 6px; padding: 4px 10px; font-size: 12px; cursor: pointer; color: #333; white-space: nowrap; }
.store-dir-btn.primary { border-color: #91d5ff; background: #e6f7ff; color: var(--color-primary-600); }
.store-dir-btn.danger { border-color: #ffccc7; color: #ff4d4f; }
.store-dir-body { border-top: 1px solid #f0f0f0; padding: 12px 16px 14px; background: #fafafa; display: none; }
.store-dir-card.expanded .store-dir-body { display: block; }
.store-dir-agents-head { display: flex; justify-content: space-between; align-items: center; margin-bottom: 10px; }
.store-dir-agents-title { font-size: 13px; font-weight: 600; color: #555; }
.store-dir-empty { text-align: center; color: #999; font-size: 13px; padding: 16px; grid-column: 1 / -1; }
.store-dir-remark-preview { font-size: 12px; color: #888; margin-top: 4px; display: -webkit-box; -webkit-line-clamp: 1; -webkit-box-orient: vertical; overflow: hidden; }
.store-dir-match-hint { font-size: 11px; color: var(--color-primary-600); background: #e6f7ff; border-radius: 4px; padding: 2px 6px; margin-bottom: 4px; display: inline-block; max-width: 100%; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }

.store-onboard-intro {
  font-size: 13px; color: #555; line-height: 1.6;
  padding: 12px 14px; background: #f7fbff; border: 1px solid #e6f0fa; border-radius: 8px; margin-bottom: 14px;
}
.store-onboard-steps {
  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 12px; margin-bottom: 8px;
}
@media (max-width: 768px) {
  .store-onboard-steps { grid-template-columns: 1fr; }
}
.store-onboard-step {
  display: flex; gap: 10px; align-items: flex-start;
  background: #fff; border: 1px solid #eef0f3; border-radius: 10px; padding: 12px 14px;
}
.store-onboard-step-num {
  width: 28px; height: 28px; border-radius: 50%; background: var(--color-primary-600); color: #fff;
  display: flex; align-items: center; justify-content: center; font-weight: 700; font-size: 14px; flex-shrink: 0;
}
.store-onboard-step-title { font-size: 14px; font-weight: 600; color: #333; margin-bottom: 4px; }
.store-onboard-step-desc { font-size: 12px; color: #888; line-height: 1.5; margin-bottom: 8px; }
.store-onboard-list { display: flex; flex-direction: column; gap: 10px; }
.store-onboard-card {
  background: #fff; border: 1px solid #eef0f3; border-radius: 10px; padding: 14px 16px;
}
.store-onboard-card.is-highlight {
  border-color: #91d5ff; box-shadow: 0 0 0 2px rgba(41,124,208,0.12);
}
.store-onboard-card.is-warn { border-color: #ffe58f; background: #fffbe6; }
.store-onboard-card.is-danger { border-color: #ffccc7; background: #fff2f0; }
.store-onboard-card-head {
  display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; flex-wrap: wrap;
}
.store-onboard-card-name { font-size: 16px; font-weight: 600; color: #333; }
.store-onboard-card-meta { font-size: 12px; color: #666; margin-top: 6px; line-height: 1.55; }
.store-onboard-gap {
  display: inline-block; margin-top: 8px; font-size: 12px; padding: 2px 8px; border-radius: 10px;
}
.store-onboard-gap.warn { background: #fff7e6; color: #d48806; }
.store-onboard-gap.danger { background: #fff1f0; color: #cf1322; }
.store-onboard-gap.ok { background: #f6ffed; color: #389e0d; }
.store-onboard-card-actions {
  display: flex; gap: 6px; flex-wrap: wrap; margin-top: 12px;
}
.store-remark-box { background: #fffbe6; border: 1px solid #ffe58f; border-radius: 8px; padding: 10px 12px; font-size: 13px; color: #614700; line-height: 1.6; white-space: pre-wrap; }
.store-remark-edit textarea { width: 100%; min-height: 72px; border: 1px solid #ddd; border-radius: 8px; padding: 10px; font-size: 14px; line-height: 1.6; resize: vertical; box-sizing: border-box; }
.store-remark-empty { font-size: 13px; color: #bbb; }
.org-store-group { background: #fff; border-radius: 12px; margin-bottom: 12px; box-shadow: 0 2px 8px rgba(0,0,0,0.06); overflow: hidden; }
.org-store-head { padding: 12px 16px; background: #f7f9fc; border-bottom: 1px solid #f0f0f0; font-size: 14px; font-weight: 600; color: #333; }
.org-user-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.org-user-table th { text-align: left; padding: 10px 12px; background: #fafafa; color: #888; font-weight: 500; border-bottom: 1px solid #f0f0f0; }
.org-user-table td { padding: 10px 12px; border-bottom: 1px solid #f5f5f5; vertical-align: middle; }
.org-user-table tr:last-child td { border-bottom: none; }
.org-role-tag { display: inline-block; font-size: 11px; padding: 2px 8px; border-radius: 4px; font-weight: 500; }
.org-role-tag.admin { background: #f9f0ff; color: #722ed1; }
.org-role-tag.boss { background: #fff1f0; color: #cf1322; }
.org-role-tag.manager { background: #f0f5ff; color: var(--color-primary-600); }
.org-role-tag.agent { background: #f6ffed; color: #389e0d; }

.cmr-badge { position: absolute; top: 8px; right: 8px; min-width: 18px; height: 18px; padding: 0 5px; border-radius: 9px; background: #f5222d; color: #fff; font-size: 11px; line-height: 18px; text-align: center; font-weight: 600; }
.cmr-section { background: #fff; border-radius: 10px; padding: 16px; margin-bottom: 16px; box-shadow: 0 1px 4px rgba(0,0,0,0.06); }
.cmr-section-title { font-size: 14px; font-weight: 600; color: #333; margin-bottom: 12px; }
.cmr-table-wrap { overflow-x: auto; }
.cmr-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.cmr-table th, .cmr-table td { padding: 10px 12px; border-bottom: 1px solid #f0f0f0; text-align: left; vertical-align: top; }
.cmr-table th { color: #666; font-weight: 600; background: #fafafa; white-space: nowrap; }
.cmr-table-compact td, .cmr-table-compact th { padding: 8px 10px; }
.cmr-muted { color: #999; font-size: 12px; }
.cmr-empty { padding: 24px; text-align: center; color: #999; font-size: 13px; }
.cmr-actions { white-space: nowrap; }
.cmr-actions .btn { margin-right: 6px; }
.cmr-direct-form { border: 1px solid #e6f4ff; background: #f8fbff; }
.cmr-form-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 12px; }
.cmr-form-field { display: flex; flex-direction: column; gap: 4px; font-size: 13px; }
.cmr-form-field span { color: #666; font-size: 12px; }
.cmr-form-field-wide { grid-column: 1 / -1; }
.cmr-form-field input, .cmr-form-field select { padding: 7px 10px; border: 1px solid #ddd; border-radius: 6px; font-size: 13px; }
@media (max-width: 900px) { .cmr-form-grid { grid-template-columns: 1fr 1fr; } }
.org-status-off { color: #999; }
.org-actions { display: flex; gap: 6px; flex-wrap: wrap; }
.org-actions button { border: 1px solid #d9d9d9; background: #fff; border-radius: 6px; padding: 3px 8px; font-size: 12px; cursor: pointer; }
.org-actions button.primary { border-color: #91d5ff; background: #e6f7ff; color: var(--color-primary-600); }
.wl-summary { font-size: 13px; color: #888; margin-bottom: 14px; padding: 10px 14px; background: #f7f9fc; border-radius: 8px; }
.wl-day-group { margin-bottom: 20px; }
.wl-day-head { font-size: 13px; font-weight: 600; color: #666; margin-bottom: 10px; padding-left: 4px; }
.wl-card { background: #fff; border-radius: 12px; padding: 14px 16px; margin-bottom: 10px; box-shadow: 0 2px 8px rgba(0,0,0,0.06); border-left: 4px solid var(--color-primary-600); }
.wl-card.type-view_phone { border-left-color: #722ed1; }
.wl-card.type-view_customer_phone { border-left-color: #eb2f96; }
.wl-card.type-view_rental_phone { border-left-color: #fa8c16; }
.wl-card.type-follow { border-left-color: #52c41a; }
.wl-card.type-customer_follow { border-left-color: #13c2c2; }
.wl-card.type-rental_follow { border-left-color: #597ef7; }
.wl-card.type-edit_property { border-left-color: var(--color-primary-600); }
.wl-type-tag.view-phone { background: #f9f0ff; color: #722ed1; }
.wl-type-tag.view-customer-phone { background: #fff0f6; color: #eb2f96; }
.wl-type-tag.view-rental-phone { background: #fff7e6; color: #d46b08; }
.wl-type-tag.follow { background: #f6ffed; color: #389e0d; }
.wl-type-tag.customer-follow { background: #e6fffb; color: #08979c; }
.wl-type-tag.rental-follow { background: #f0f5ff; color: #2f54eb; }
.wl-type-tag.edit-property { background: #e6f7ff; color: var(--color-primary-600); }
.wl-card-head { display: flex; justify-content: space-between; align-items: flex-start; gap: 10px; margin-bottom: 8px; }
.wl-card-meta { font-size: 12px; color: #999; line-height: 1.6; }
.wl-type-tag { display: inline-block; font-size: 11px; padding: 2px 8px; border-radius: 4px; font-weight: 500; background: #e6f7ff; color: var(--color-primary-600); }
.wl-type-tag.negotiate { background: #fff7e6; color: #fa8c16; }
.wl-type-tag.deal { background: #fff1f0; color: #cf1322; }
.wl-type-tag.other { background: #f5f5f5; color: #666; }
.wl-card-content { font-size: 14px; color: #333; line-height: 1.7; white-space: pre-wrap; }
.wl-related { margin-top: 8px; font-size: 12px; color: var(--color-primary-600); }
.wl-card-actions { margin-top: 10px; display: flex; gap: 8px; }
.wl-card-actions button { border: 1px solid #d9d9d9; background: #fff; border-radius: 6px; padding: 4px 10px; font-size: 12px; cursor: pointer; }
.prop-store-list { display: flex; flex-direction: column; gap: 8px; }
.prop-store-list-inline { flex-direction: row; flex-wrap: wrap; gap: 8px; align-items: stretch; }
.prop-store-common-meta { font-size: 12px; color: #666; margin: -2px 0 10px; line-height: 1.5; padding: 6px 10px; background: #fafafa; border-radius: 8px; display: inline-block; }
.prop-store-chip { display: inline-flex; align-items: center; gap: 8px; border: 1px solid #eee; border-radius: 10px; padding: 8px 10px; cursor: pointer; transition: all 0.15s; background: #fff; font: inherit; text-align: left; max-width: 100%; }
.prop-store-chip:hover { border-color: #91d5ff; background: #f0f5ff; box-shadow: 0 2px 8px rgba(41,124,208,0.08); }
.prop-store-chip-rank { width: 22px; height: 22px; border-radius: 50%; background: var(--color-primary-600); color: #fff; font-size: 12px; font-weight: 600; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.prop-store-chip-body { min-width: 0; flex: 1; }
.prop-store-chip-name { display: block; font-size: 13px; font-weight: 600; color: #333; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.prop-store-chip-meta { display: block; font-size: 11px; color: #888; line-height: 1.4; margin-top: 2px; white-space: nowrap; overflow: hidden; text-overflow: ellipsis; max-width: 220px; }
.prop-store-chip-arrow { color: #bbb; font-size: 16px; flex-shrink: 0; }
.prop-store-warn-inline { margin-top: 8px; }
.prop-store-item { border: 1px solid #eee; border-radius: 10px; padding: 10px 12px; cursor: pointer; transition: all 0.15s; background: #fff; }
.prop-store-item:hover { border-color: #91d5ff; background: #f0f5ff; box-shadow: 0 2px 8px rgba(41,124,208,0.08); }
.prop-store-row { display: flex; align-items: center; gap: 10px; }
.prop-store-rank { width: 22px; height: 22px; border-radius: 50%; background: var(--color-primary-600); color: #fff; font-size: 12px; font-weight: 600; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
.prop-store-main { flex: 1; min-width: 0; }
.prop-store-name { font-size: 14px; font-weight: 600; color: #333; margin-bottom: 4px; }
.prop-store-meta { font-size: 12px; color: #888; line-height: 1.5; }
.prop-store-arrow { color: #bbb; font-size: 18px; flex-shrink: 0; }
.prop-store-warn { margin-top: 8px; font-size: 12px; color: #fa541c; background: #fff2e8; border: 1px solid #ffbb96; border-radius: 6px; padding: 6px 10px; }
.prop-store-contact-hint { font-size: 12px; color: #888; margin: -4px 0 10px; line-height: 1.5; }
.prop-store-contact-hidden { display: none !important; }
.prop-store-contact-highlight { animation: propStoreContactPulse 1.8s ease; }
@keyframes propStoreContactPulse {
  0% { box-shadow: 0 0 0 0 rgba(41,124,208,0.35); }
  40% { box-shadow: 0 0 0 6px rgba(41,124,208,0.15); }
  100% { box-shadow: none; }
}

.property-status { padding:2px 8px; border-radius:4px; font-size:12px; font-weight:600; }
.status-public { background:#e6f7ff; color:var(--color-primary-600); }
.status-private { background:#f5f5f5; color:#888; }
.status-paused { background:#fff7e6; color:#d48806; }
.status-sold { background:#f6ffed; color:#389e0d; }
.customer-card { background:white; border-radius:12px; padding:16px; margin-bottom:12px; box-shadow:0 2px 8px rgba(0,0,0,0.06); cursor:pointer; transition:box-shadow 0.2s; }
.customer-card:hover { box-shadow:0 4px 12px rgba(0,0,0,0.1); }
.cust-chip-group { display:flex; gap:6px; flex-wrap:wrap; margin-top:4px; min-height:30px; }
.cust-chip { display:inline-flex; align-items:center; cursor:pointer; user-select:none; position:relative; }
.cust-chip input { position:absolute; opacity:0; width:0; height:0; pointer-events:none; }
.cust-chip span { display:inline-block; padding:4px 12px; border-radius:16px; border:1px solid #ddd; font-size:12px; color:#666; background:#fff; transition:all .15s; }
.cust-chip input:checked + span { background:var(--color-primary-600); color:#fff; border-color:var(--color-primary-600); }
.cust-chip:hover span { border-color:var(--color-primary-600); color:var(--color-primary-600); }
.cust-chip input:checked + span:hover { color:#fff; }
.cust-chip-hint { font-size:12px; color:#999; line-height:30px; }

.inline-follow-block { margin-top:10px; padding:10px 12px; background:#fffbe6; border:1px solid #ffe58f; border-radius:8px; }
.prop-detail-follow-inline { margin-top: 12px; padding-top: 12px; border-top: 1px dashed #ffccc7; }
.prop-detail-follow-inline .inline-follow-block { background: transparent; border: none; padding: 0; margin: 0; }
.prop-detail-follow-inline .inline-follow-title { color: #cf1322; font-weight: 600; }
.map-area-field .map-area-input-row { display:flex; gap:8px; align-items:center; }
.map-area-field .map-area-input-row select { flex:1; min-width:0; }
.map-area-map-btn { flex-shrink:0; padding:7px 12px; font-size:13px; background:#f0f5fa; border:1px solid #d0dbe8; white-space:nowrap; }
.map-area-picker-modal { max-width:900px; width:calc(100vw - 24px); padding:16px 18px 18px; }
.map-area-picker-hint { font-size:12px; color:#888; margin:-4px 0 10px; line-height:1.5; }
.map-area-picker-body { display:flex; gap:12px; align-items:stretch; }
.map-area-picker-map-col { flex:1; min-width:0; display:flex; flex-direction:column; gap:6px; }
.map-area-picker-toolbar { display:flex; flex-wrap:wrap; gap:6px; align-items:center; }
.map-area-picker-tool-btn, .map-area-picker-filter-btn { font-size:12px; padding:5px 10px; border:1px solid #d0dbe8; border-radius:6px; background:#fff; color:#444; cursor:pointer; transition:all .12s; }
.map-area-picker-filter-btn:hover, .map-area-picker-tool-btn:hover { border-color:#91caff; color:var(--color-primary-600); background:#f0f7ff; }
.map-area-picker-filter-btn.is-active { background:var(--color-primary-600); border-color:var(--color-primary-600); color:#fff; font-weight:600; }
.map-area-picker-static { flex:1; min-width:0; width:100%; aspect-ratio:1/1; max-height:460px; min-height:0; border-radius:8px; overflow:hidden; border:1px solid #b8c8d8; background:#d8e8f0; user-select:none; display:flex; align-items:stretch; justify-content:stretch; padding:0; }
.map-area-picker-leaflet { width:100% !important; height:100% !important; min-height:0; border-radius:8px; z-index:1; background:#d8e8f0; }
.map-area-picker-leaflet .leaflet-container { width:100% !important; height:100% !important; background:#d8e8f0; }
.map-area-picker-leaflet .leaflet-interactive { cursor:pointer !important; }
.map-area-picker-region-bar { display:flex; gap:8px; padding:8px 10px; background:linear-gradient(90deg,var(--color-primary-600),#3d8fd9); border-radius:8px; }
.map-area-picker-region-btn { flex:1; font-size:12px; padding:6px 8px; border:none; border-radius:6px; background:rgba(255,255,255,0.15); color:#fff; cursor:pointer; transition:background .12s; }
.map-area-picker-region-btn:hover { background:rgba(255,255,255,0.28); }
.map-area-picker-side { flex:0.8; min-width:0; display:flex; flex-direction:column; gap:8px; }
.map-area-picker-search { width:100%; padding:8px 10px; border:1px solid #d0dbe8; border-radius:8px; font-size:13px; box-sizing:border-box; }
.map-area-picker-list { flex:1; min-height:200px; max-height:340px; overflow-y:auto; border:1px solid #e6edf5; border-radius:8px; background:#fff; }
.map-area-picker-group { padding:8px 10px 4px; font-size:11px; font-weight:700; color:var(--color-primary-600); background:#f7fafc; position:sticky; top:0; z-index:1; }
.map-area-picker-item { padding:9px 12px; border-bottom:1px solid #f0f4f8; cursor:pointer; transition:background .12s; }
.map-area-picker-item:hover, .map-area-picker-item.is-hover { background:#eef5fc; }
.map-area-picker-item.is-selected { background:#e3f0ff; border-left:3px solid var(--color-primary-600); padding-left:9px; }
.map-area-picker-item-name { font-size:13px; font-weight:600; color:#222; }
.map-area-picker-item-anchor { font-size:11px; color:#888; margin-top:2px; }
.map-area-picker-footer { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-top:12px; flex-wrap:wrap; }
.map-area-picker-actions { display:flex; gap:8px; }
.map-area-picker-status { font-size:13px; color:var(--color-primary-600); font-weight:600; min-height:18px; }
.map-picker-labels { font-family:"Microsoft YaHei","PingFang SC",sans-serif; pointer-events:none; }
#mapAreaPickerModal.modal-overlay.show { display:flex; align-items:center; padding-top:0; }
.my-prop-follow-warn { color:#ff3b30; }
.my-prop-follow-soon { color:#ff9500; }
.my-prop-follow-empty { color:#ccc; }
.my-prop-actions { display:flex; gap:8px; margin-top:12px; padding-top:10px; border-top:1px solid #f0f3f6; }
.my-prop-btn { font-size:12px; padding:5px 12px; }
.inline-follow-title { font-size:12px; font-weight:600; color:#8c6d1f; margin-bottom:8px; }
.inline-follow-item { padding:8px 0; border-bottom:1px dashed #f0e6c8; }
.inline-follow-item:last-of-type { border-bottom:none; }
.inline-follow-item-old .inline-follow-note { color:#666; }
.inline-follow-meta { font-size:11px; color:#999; }
.inline-follow-note { font-size:12px; color:#333; margin-top:2px; line-height:1.5; white-space:pre-wrap; word-break:break-word; }
.inline-follow-empty { font-size:12px; color:#ccc; margin-bottom:4px; }
.inline-follow-actions { margin-top:8px; }
.inline-follow-input { width:100%; padding:8px 10px; border:1px solid #ddd; border-radius:6px; font-size:13px; resize:vertical; font-family:inherit; }
.inline-follow-submit-row { margin-top:6px; display:flex; gap:6px; }
.inline-follow-btn { font-size:11px; padding:4px 10px; background:#f5f5f5; color:#333; }
.inline-follow-btn.btn-primary {
  background: var(--color-primary-600);
  color: #fff;
}
.inline-follow-btn.btn-primary:hover:not(:disabled) { background: #1a5ba0; }
.inline-follow-btn.btn-primary:disabled,
.inline-follow-btn.btn-primary.is-empty {
  background: #c5c5c5;
  color: #fff;
  cursor: not-allowed;
  opacity: 1;
}
.inline-follow-cancel { background:#f0f0f0; }
.rental-follow-cell { padding:4px 12px 12px; background:#fafbfc; border-bottom:1px solid #eee; }
.calc-tool-modal { max-width: 480px; }
.mortgage-calc-modal { max-width: 680px; max-height: 90vh; overflow-y: auto; }
.mortgage-schedule-wrap { max-height: 360px; overflow: auto; margin-top: 8px; border: 1px solid #e8edf2; border-radius: 6px; background: #fff; }
.mortgage-schedule-table { width: 100%; border-collapse: collapse; font-size: 12px; min-width: 420px; }
.mortgage-schedule-table thead th { position: sticky; top: 0; z-index: 1; background: #f5f8fb; color: #666; font-weight: 600; padding: 8px 6px; text-align: right; border-bottom: 1px solid #e6edf5; white-space: nowrap; }
.mortgage-schedule-table thead th:first-child { text-align: center; }
.mortgage-schedule-table tbody td { padding: 6px; text-align: right; border-bottom: 1px solid #f0f4f8; color: #444; white-space: nowrap; }
.mortgage-schedule-table tbody td:first-child { text-align: center; color: #888; }
.mortgage-schedule-table tbody tr:hover { background: #f7fbff; }
.tax-calc-modal { max-width: 520px; max-height: 90vh; overflow-y: auto; }
.calc-tool-body { padding: 4px 0 8px; }
.tax-calc-scope { font-size: 12px; color: #888; text-align: center; margin-bottom: 12px; }
.tax-type-pick { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; margin-bottom: 16px; }
.tax-type-card { display: flex; flex-direction: column; align-items: center; gap: 8px; padding: 16px 12px; border: 2px solid #e8e8e8; border-radius: 10px; background: #fff; cursor: pointer; font-size: 15px; color: #333; transition: border-color .15s, background .15s; }
.tax-type-card.is-active { border-color: var(--color-primary-600); background: #f0f7ff; color: var(--color-primary-600); font-weight: 600; }
.tax-type-icon { font-size: 28px; line-height: 1; }
.tax-form-list { border: 1px solid #f0f0f0; border-radius: 8px; overflow: visible; margin-bottom: 12px; }
.tax-form-row { display: flex; flex-direction: column; align-items: stretch; gap: 6px; padding: 11px 14px; border-bottom: 1px solid #f5f5f5; margin: 0; background: #fff; }
.tax-form-row:last-child { border-bottom: none; }
.tax-form-label { font-size: 13px; color: #333; line-height: 1.4; }
.tax-form-hint { font-size: 11px; color: #999; font-weight: 400; }
.tax-form-row input, .tax-form-row select { width: 100%; max-width: none; padding: 8px 10px; border: 1px solid #e8e8e8; border-radius: 6px; font-size: 14px; text-align: left; box-sizing: border-box; }
.tax-form-row select { appearance: auto; cursor: pointer; min-height: 36px; }
.tax-calc-actions { display: flex; gap: 10px; margin-top: 4px; }
.tax-calc-actions .btn { flex: 1; }
.tax-calc-actions .btn-primary { flex: 2; }
.tax-calc-tips { font-size: 11px; color: #999; line-height: 1.6; margin-top: 12px; }
.tax-calc-tips div { margin-bottom: 2px; }
.tax-result-line { padding: 2px 0; color: #666; }
.tax-result-line strong { color: #333; }
.tax-result-section { margin-top: 8px; font-weight: 600; color: #333; }
.tax-result-total { margin-top: 12px; padding-top: 10px; border-top: 1px dashed #d9f7be; font-weight: 600; color: var(--color-primary-600); font-size: 15px; }
.calc-result-box { margin-top: 14px; padding: 12px; background: #f6ffed; border: 1px solid #b7eb8f; border-radius: 8px; font-size: 13px; line-height: 1.8; display: none; }
.calc-result-box.show { display: block; }
.calc-disclaimer { font-size: 11px; color: #999; margin-top: 10px; line-height: 1.5; }
.floor-plan-preview { min-height: 120px; background: #fafafa; border: 1px dashed #ddd; border-radius: 8px; padding: 12px; display: flex; align-items: center; justify-content: center; }
.floor-plan-svg { max-width: 100%; }
.community-plan-modal { max-width: 920px; width: 96vw; max-height: 90vh; }
.community-plan-body { max-height: calc(90vh - 56px); overflow: hidden; display: flex; flex-direction: column; }
.cp-toolbar { display: flex; gap: 10px; align-items: flex-start; margin-bottom: 12px; flex-wrap: wrap; }
.cp-search-wrap { position: relative; flex: 1; min-width: 200px; }
.cp-search-input { width: 100%; box-sizing: border-box; }
.cp-community-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(140px, 1fr)); gap: 10px; overflow-y: auto; max-height: calc(90vh - 160px); padding-right: 4px; }
.cp-community-card { background: #f7f9fc; border: 1px solid #e8eef5; border-radius: 10px; padding: 14px 12px; cursor: pointer; transition: background .15s, border-color .15s; min-height: 72px; display: flex; flex-direction: column; justify-content: center; }
.cp-community-card:hover { background: #e6f7ff; border-color: #91d5ff; }
.cp-community-name { font-weight: 600; font-size: 14px; color: #333; line-height: 1.35; word-break: break-all; }
.cp-community-count { font-size: 12px; color: #999; margin-top: 6px; }
.cp-detail-view, .cp-add-view { display: flex; flex-direction: column; min-height: 0; flex: 1; }
.cp-detail-head { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; flex-wrap: wrap; }
.cp-detail-title { font-weight: 600; font-size: 16px; color: #333; flex: 1; }
.cp-detail-count { font-size: 12px; color: #999; }
.cp-plan-gallery { display: grid; grid-template-columns: repeat(auto-fill, minmax(160px, 1fr)); gap: 12px; overflow-y: auto; max-height: calc(90vh - 160px); padding-right: 4px; }
.cp-plan-card { border: 1px solid #eee; border-radius: 8px; overflow: hidden; background: #fff; cursor: pointer; position: relative; }
.cp-plan-del { position: absolute; top: 6px; right: 6px; z-index: 2; font-size: 11px; padding: 2px 8px; border: none; border-radius: 4px; background: rgba(200,0,0,.85); color: #fff; cursor: pointer; }
.cp-plan-del:hover { background: #c00; }
.cp-plan-card img.is-broken { opacity: .35; }
.cp-plan-card img { width: 100%; height: 140px; object-fit: contain; background: #fafafa; display: block; }
.cp-plan-card-label { padding: 8px; font-size: 12px; color: #666; line-height: 1.35; word-break: break-all; min-height: 36px; }
.cp-add-form { max-width: 520px; }
.cp-empty { text-align: center; color: #999; padding: 40px 16px; font-size: 14px; grid-column: 1 / -1; }
#cpImageViewer { background: rgba(0,0,0,.82); display: none; align-items: center; justify-content: center; }
#cpImageViewer.show { display: flex; }
.cp-image-viewer-inner { position: relative; max-width: 96vw; max-height: 94vh; display: flex; flex-direction: column; align-items: center; }
.cp-image-viewer-stage { width: min(96vw, 1100px); height: min(74vh, 720px); overflow: auto; display: flex; align-items: center; justify-content: center; background: #111; border-radius: 8px; }
.cp-image-viewer-stage img { max-width: none; max-height: none; width: auto; height: auto; object-fit: contain; display: block; transform-origin: center center; transition: transform .08s linear; user-select: none; -webkit-user-drag: none; }
.cp-image-viewer-close { position: absolute; top: -36px; right: 0; color: #fff; font-size: 28px; background: transparent; border: none; cursor: pointer; }
.cp-image-viewer-caption { color: #eee; text-align: center; margin-top: 8px; font-size: 13px; max-width: 90vw; }
.cp-image-viewer-toolbar { display: flex; gap: 8px; flex-wrap: wrap; justify-content: center; margin-top: 10px; }
.cp-image-viewer-toolbar .btn { background: rgba(255,255,255,.12); color: #fff; border: 1px solid rgba(255,255,255,.25); padding: 6px 12px; font-size: 13px; }
.cp-image-viewer-toolbar .btn:hover { background: rgba(255,255,255,.22); }
.blacklist-row { background: white; border-radius: 10px; padding: 14px 16px; margin-bottom: 10px; box-shadow: 0 1px 4px rgba(0,0,0,0.06); display: flex; justify-content: space-between; align-items: flex-start; gap: 12px; }
.blacklist-type { font-size: 11px; padding: 2px 8px; border-radius: 10px; background: #fff1f0; color: #cf1322; }
.stats-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 20px; }
.stats-panel { background: white; border-radius: 12px; padding: 16px; box-shadow: 0 1px 4px rgba(0,0,0,0.06); margin-bottom: 16px; }
.stats-panel-title { font-weight: 600; margin-bottom: 12px; font-size: 15px; }
.stats-row { display: flex; justify-content: space-between; padding: 8px 0; border-bottom: 1px solid #f5f5f5; font-size: 13px; }
/* ====== 响应式适配（手机端） ====== */
@media (max-width: 768px) {
  /* 布局 */
  body { font-size: 14px; }
  .login-page { flex-direction: column; }
  .login-left { padding: 24px 16px; }
  .login-right { display: none; }
  .login-form { width: 100%; max-width: 320px; }
  
  /* 导航栏：底部Tab */
  .nav-bar {
    position: fixed; bottom: 0; left: 0; right: 0; top: auto;
    height: 56px; padding: 0; z-index: 100;
    background: #fff !important; border-top: 1px solid #f0f0f0;
    overflow-x: auto; justify-content: space-around;
    padding-bottom: env(safe-area-inset-bottom, 0);
  }
  .nav-item {
    flex: 1; text-align: center; padding: 8px 4px;
    font-size: 11px !important; color: #999 !important;
    border-bottom: none !important; white-space: nowrap;
    display: flex; flex-direction: column; align-items: center;
    min-width: 56px;
  }
  .nav-item.active { color: var(--color-primary-600) !important; font-weight: 600; }
  .nav-item:hover { background: transparent; }
  .nav-bar > span:first-child { display: none; }
  
  /* 主内容区 */
  .main-content { padding: 12px; padding-bottom: 72px; }
  .app-container { height: 100vh; height: 100dvh; }
  
  /* 统计卡片 */
  .stat-cards { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  .stat-card { padding: 12px 8px; border-radius: 10px; }
  .stat-num { font-size: 22px; }
  .stat-label { font-size: 11px; }
  .stats-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  
  /* 房源卡片 */
  .prop-card { padding: 12px; margin-bottom: 8px; border-radius: 10px; }
  .prop-header { flex-wrap: wrap; gap: 6px; }
  .prop-price { font-size: 17px; }
  .prop-info { font-size: 12px; }
  
  /* 搜索栏 */
  .search-input { padding: 10px 12px; font-size: 14px; border-radius: 20px; }
  .filter-bar { gap: 6px; margin-bottom: 8px; }
  .filter-btn { padding: 5px 10px; font-size: 12px; border-radius: 16px; }
  
  /* 列表 */
  .list-item { padding: 12px; }
  .section-title { font-size: 17px; margin-bottom: 12px; }
  
  /* 按钮 */
  .btn { padding: 8px 12px; font-size: 13px; }
  .btn-sm { padding: 4px 8px; font-size: 11px; }
  .prop-actions { gap: 6px; }
  .prop-actions .btn { padding: 5px 10px; font-size: 12px; }
  
  /* Modal */
  .modal-overlay { padding: 0; align-items: flex-end; }
  .modal { width: 100% !important; max-width: 100% !important; border-radius: 16px 16px 0 0; max-height: 85vh; }
  .modal-title { font-size: 16px; }
  .modal-body { padding: 16px; }
  .customer-detail-modal { width: 100% !important; max-height: 92vh; }
  .rental-detail-modal { width: 100% !important; max-height: 92vh; }
  
  /* 表格 */
  table { font-size: 12px; }
  th, td { padding: 8px 6px; }
  .market-search-input { width:100%; max-width:280px; }
  .market-area-quick { min-width:100px; }
  .adv-search-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .adv-search-grid > .adv-field-span-2 { grid-column: 1 / -1; }
  .adv-price-row { grid-template-columns: auto 1fr !important; }
  .adv-price-row .adv-inline-label { text-align: left; }
  .market-table { min-width:720px; font-size:12px; }
  .market-table thead th, .market-table tbody td { padding:8px 8px; }
  .market-col-loc { min-width:100px; }
  .road-search-input { width: 100%; }
  .view-toggle-bar { gap: 6px; }
  .prop-detail-chips { gap: 6px; }
  .prop-detail-footer { flex-wrap: nowrap; }
  
  /* 工具箱 */
  .tool-grid { grid-template-columns: repeat(2, 1fr); gap: 8px; }
  
  /* 门店目录 */
  .store-list { gap: 8px; }
  
  /* 黑名单 */
  .blacklist-row { padding: 12px; flex-direction: column; gap: 8px; }
  
  /* 日志 */
  .worklog-table { font-size: 12px; }
  .worklog-table td, .worklog-table th { padding: 6px 4px; }
  
  /* AI助手 */
  .ai-chat-container { padding: 12px; }
  
  /* 客户详情 */
  .customer-detail-header { padding: 16px; }
  .customer-detail-body { padding: 12px 16px; }
  
  /* 租务 */
  .rental-detail-modal .modal-body { padding: 12px; }
  .rental-detail-images img { width: 72px; height: 72px; }
  
  /* 社区配盘 */
  .cp-plan-gallery { grid-template-columns: repeat(2, 1fr); }
  .cp-plan-card img { height: 100px; }
}
@media (max-width: 480px) {
  .stat-cards { grid-template-columns: repeat(2, 1fr); }
  .stats-grid { grid-template-columns: repeat(2, 1fr); }
  .prop-actions { flex-direction: column; }
  .prop-actions .btn { width: 100%; text-align: center; }
  .filter-bar { overflow-x: auto; flex-wrap: nowrap; padding-bottom: 4px; }
  .filter-btn { flex-shrink: 0; }
}


/* ===== 平台运营入口（2026-08 Bento 统一） ===== */
.home-section-title { font-size: 15px; font-weight: 700; color: var(--color-gray-900); }
.home-platform-panel {
  padding: 18px 20px 20px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: 18px;
  box-shadow: var(--shadow-xs);
}

.home-platform-grid {
  margin-top: 12px;
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
  gap: 12px;
}

.home-platform-card {
  min-height: 92px;
  padding: 16px 16px 16px 62px;
  display: flex;
  align-items: flex-start;
  justify-content: flex-start;
  gap: 12px;
  text-align: left;
  background: var(--color-surface-secondary);
  border: 1px solid var(--color-border);
  border-radius: 14px;
  cursor: pointer;
  position: relative;
  font-family: var(--font-sans);
  font-size: 13.5px;
  font-weight: 600;
  color: var(--color-gray-800);
  transition: box-shadow .18s ease, transform .18s ease, border-color .18s ease;
}
.home-platform-card:hover {
  border-color: var(--color-primary-300);
  box-shadow: var(--shadow-sm);
  transform: translateY(-2px);
}

.home-platform-icon {
  width: 40px;
  height: 40px;
  border-radius: 12px;
  background: var(--gradient-brand-soft);
  color: var(--color-primary-700);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  font-size: 17px;
  font-weight: 700;
}

.home-platform-copy {
  display: flex;
  flex-direction: column;
  gap: 4px;
  min-width: 0;
}

.home-platform-copy strong {
  font-size: 14px;
  font-weight: 700;
  color: var(--color-gray-800);
}

.home-platform-copy em {
  font-size: 12px;
  color: var(--color-gray-500);
  font-style: normal;
  line-height: 1.45;
}

.home-platform-card::before {
  position: absolute;
  left: 16px;
  top: 16px;
  width: 34px;
  height: 34px;
  border-radius: 10px;
  background: var(--gradient-brand-soft);
  color: var(--color-primary-700);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  font-size: 15px;
  font-weight: 700;
}

.home-platform-card::after {
  position: absolute;
  left: 62px;
  right: 14px;
  bottom: 14px;
  font-size: 11.5px;
  font-weight: 400;
  line-height: 1.4;
  color: var(--color-gray-400);
}

.home-platform-grid > .home-platform-card:nth-child(1)::before { content: "营"; }
.home-platform-grid > .home-platform-card:nth-child(2)::before { content: "AI"; }
.home-platform-grid > .home-platform-card:nth-child(3)::before { content: "管"; }
.home-platform-grid > .home-platform-card:nth-child(4)::before { content: "量"; }

.home-platform-grid > .home-platform-card:nth-child(1)::after { content: "平台审核、运营入口"; }
.home-platform-grid > .home-platform-card:nth-child(2)::after { content: "模型与配置管理入口"; }
.home-platform-grid > .home-platform-card:nth-child(3)::after { content: "组织与系统管理"; }
.home-platform-grid > .home-platform-card:nth-child(4)::after { content: "按公司、门店和人员查看"; }

.store-directory-view-switch { display:flex; gap:6px; }
.store-directory-view-switch .btn.active { color:#fff; border-color:var(--color-primary-600); background:var(--color-primary-600); }
.store-directory-map-panel { margin-top:4px; }
.store-directory-map-help { display:flex; justify-content:space-between; align-items:center; gap:16px; padding:12px 14px; border:1px solid var(--color-primary-100); border-radius:var(--radius-md); background:var(--color-primary-50); margin-bottom:12px; }
.store-directory-map-help strong { display:block; color:var(--color-gray-800); margin-bottom:3px; }
.store-directory-map-help span { color:var(--color-gray-600); font-size:12px; }
.store-directory-map { height:430px; border:1px solid var(--color-border); border-radius:var(--radius-lg); overflow:hidden; background:var(--color-gray-50); margin-bottom:16px; }
.store-location-picker-help { font-size:12px; color:var(--color-gray-600); margin-bottom:8px; line-height:1.55; }
.store-location-picker { height:240px; border:1px solid var(--color-border); border-radius:var(--radius-md); overflow:hidden; background:var(--color-gray-50); }
.store-location-picker-footer { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-top:8px; font-size:12px; color:var(--color-gray-600); }
.ai-usage-toolbar { display:grid; grid-template-columns:repeat(3,minmax(150px,1fr)) repeat(2,minmax(140px,.8fr)) auto; gap:10px; align-items:end; }
.ai-usage-toolbar label { display:flex; flex-direction:column; gap:5px; color:var(--color-gray-600); font-size:12px; }
.ai-usage-toolbar select, .ai-usage-toolbar input { min-height:38px; border:1px solid var(--color-border); border-radius:var(--radius-sm); padding:0 10px; background:#fff; color:var(--color-gray-800); }
.ai-usage-status { margin:12px 0; padding:9px 12px; border-radius:var(--radius-sm); background:var(--color-primary-50); color:var(--color-primary-700); font-size:12px; }
.ai-usage-summary { display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:10px; margin-bottom:14px; }
.ai-usage-summary-card { border:1px solid var(--color-border); border-radius:var(--radius-md); padding:12px; background:#fff; }
.ai-usage-summary-card span { display:block; color:var(--color-gray-500); font-size:12px; margin-bottom:6px; }
.ai-usage-summary-card strong { color:var(--color-gray-900); font-size:20px; }
.ai-usage-table-wrap { overflow:auto; border:1px solid var(--color-border); border-radius:var(--radius-md); }
.ai-usage-table { width:100%; min-width:980px; border-collapse:collapse; background:#fff; font-size:12px; }
.ai-usage-table th, .ai-usage-table td { padding:10px 9px; border-bottom:1px solid var(--color-gray-100); text-align:left; vertical-align:top; }
.ai-usage-table th { background:var(--color-gray-50); color:var(--color-gray-600); font-weight:600; white-space:nowrap; }
.ai-usage-table td span { color:var(--color-gray-500); }
.ai-usage-status-pill { display:inline-flex; padding:2px 7px; border-radius:999px; font-weight:600; }
.ai-usage-status-pill.success { background:var(--color-success-bg); color:var(--color-success); }
.ai-usage-status-pill.failed { background:#fff1f0; color:#b42318; }
.ai-usage-empty { text-align:center !important; color:var(--color-gray-500); padding:30px !important; }
.ai-usage-pagination { display:flex; justify-content:space-between; align-items:center; gap:12px; margin-top:12px; color:var(--color-gray-600); font-size:12px; }
.ai-usage-pagination > div { display:flex; gap:8px; }
@media (max-width:1100px) { .ai-usage-toolbar { grid-template-columns:repeat(2,minmax(0,1fr)); } .ai-usage-summary { grid-template-columns:repeat(2,minmax(0,1fr)); } }


/* ============================================================
   首页工作台 · Bento 杂志排版（2026-08 方向 B 定稿）
   DOM 约束（modules/home.js 依赖，勿破坏）：
   - dailyQuote / statMyProps 各在一个 page-home 顶层子块内
   - 快捷操作块必须是「含 statMyProps 顶层块」的 nextElementSibling
   - homeDealStatsBar 由 JS 控制 display；homeTodayOverview 需有包裹卡
   ============================================================ */

/* ---- 入场动效 ---- */
@keyframes rx-rise { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
#page-home .rx-rise { animation: rx-rise .38s cubic-bezier(.22,.8,.36,1) both; }
#page-home .rx-rise:nth-child(2) { animation-delay: .05s; }

/* ---- Bento 第一排：语录大卡 + 本月成交 ---- */
#page-home .bento-hero { display: grid; grid-template-columns: 7fr 5fr; gap: 16px; margin-bottom: 16px; }
#page-home .bento-hero:has(#homeDealStatsBar[style*="none"]) { grid-template-columns: 1fr; }
#page-home .bquote {
  position: relative; overflow: hidden;
  background: var(--gradient-brand-soft);
  border: 1px solid var(--color-primary-100);
  border-radius: 18px; padding: 26px 30px;
  display: flex; flex-direction: column; justify-content: center;
}
#page-home .bquote::after {
  content: ""; position: absolute; right: -44px; bottom: -62px;
  width: 190px; height: 190px; border-radius: 50%;
  background: rgba(255,255,255,.55); pointer-events: none;
}
#page-home .bquote-date { font-size: 12.5px; color: var(--color-gray-500); display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
#page-home .bquote-date .sep { color: var(--color-gray-300); }
#page-home .bquote-text { margin-top: 14px; position: relative; z-index: 1; }
/* JS 写入的是整行文本；bquote-main/bquote-sub 由 index.html 内的观察者拆分 */
#page-home .bquote-main {
  display: block; font-size: 24px; font-weight: 800; line-height: 1.5; letter-spacing: .01em;
  background: linear-gradient(120deg, var(--color-primary-800), var(--color-accent-700));
  -webkit-background-clip: text; background-clip: text;
  -webkit-text-fill-color: transparent; color: transparent;
}
#page-home .bquote-sub { display: block; margin-top: 12px; font-size: 12.5px; color: var(--color-gray-600); }
/* 未拆分时（JS 尚未写入/无分隔符）的兜底排版 */
#page-home .bquote-text:not(:has(.bquote-main)) { font-size: 15px; font-weight: 600; color: var(--color-primary-700); line-height: 1.6; }

/* 本月成交：品牌渐变卡 */
#page-home .bdeal {
  background: var(--gradient-brand); color: #fff;
  border-radius: 18px; padding: 24px 28px;
  position: relative; overflow: hidden; cursor: pointer;
  display: flex; flex-direction: column; justify-content: center;
  transition: transform .18s ease, box-shadow .18s ease;
}
#page-home .bdeal:hover { transform: translateY(-2px); box-shadow: 0 10px 28px rgba(37,99,235,.28); }
#page-home .bdeal::after { content: ""; position: absolute; right: -56px; top: -64px; width: 180px; height: 180px; border-radius: 50%; background: rgba(255,255,255,.13); pointer-events: none; }
#page-home .bdeal-label { font-size: 13px; opacity: .88; display: flex; align-items: center; gap: 8px; }
#page-home .bdeal-label svg { width: 16px; height: 16px; }
#page-home .bdeal-num { font-size: 48px; font-weight: 800; line-height: 1.15; margin-top: 6px; font-variant-numeric: tabular-nums; }
#page-home .bdeal-num small { font-size: 17px; font-weight: 600; }
#page-home .bdeal-more { margin-top: 10px; font-size: 12.5px; opacity: .88; display: flex; align-items: center; gap: 6px; }
#page-home .bdeal-more svg { width: 14px; height: 14px; transition: transform .18s ease; }
#page-home .bdeal:hover .bdeal-more svg { transform: translateX(3px); }

/* ---- 数据带 + 快捷操作（视觉一张卡，DOM 两个兄弟块） ---- */
#page-home .bstrip {
  display: flex; align-items: stretch;
  background: var(--color-surface); border: 1px solid var(--color-border); border-bottom: none;
  border-radius: 18px 18px 0 0; box-shadow: var(--shadow-xs);
}
#page-home .bcell { flex: 1; padding: 18px 26px; cursor: pointer; transition: background .15s; }
#page-home .bcell:first-child { border-radius: 18px 0 0 0; }
#page-home .bcell:hover { background: var(--color-gray-50); }
#page-home .bcell + .bcell { border-left: 1px solid var(--color-gray-100); }
#page-home .bcell-num { font-size: 28px; font-weight: 800; line-height: 1.1; color: var(--color-gray-900); font-variant-numeric: tabular-nums; }
#page-home .bcell-num small { font-size: 12px; font-weight: 600; color: var(--color-success); margin-left: 6px; }
#page-home .bcell-label { font-size: 12px; color: var(--color-gray-500); margin-top: 6px; display: flex; align-items: center; gap: 7px; }
#page-home .bdot { width: 8px; height: 8px; border-radius: 3px; flex: none; }
#page-home .bdot.d-blue { background: var(--color-primary-600); }
#page-home .bdot.d-green { background: var(--color-success); }
#page-home .bdot.d-orange { background: var(--color-warning-text); }
#page-home .bdot.d-red { background: var(--color-danger); }
#page-home .bquick {
  display: flex; align-items: center; gap: 10px;
  background: var(--color-surface); border: 1px solid var(--color-border); border-top: 1px solid var(--color-gray-100);
  border-radius: 0 0 18px 18px; box-shadow: var(--shadow-xs);
  padding: 12px 20px; margin-bottom: 16px;
}
#page-home .bquick-title { font-size: 12px; color: var(--color-gray-400); margin: 0 6px 0 6px; white-space: nowrap; }
#page-home .bpill {
  display: inline-flex; align-items: center; gap: 7px;
  height: 36px; padding: 0 18px; border-radius: var(--radius-pill);
  font-size: 13px; font-weight: 600; cursor: pointer; font-family: var(--font-sans);
  border: 1px solid var(--color-border); background: var(--color-surface); color: var(--color-gray-700);
  transition: all .15s ease;
}
#page-home .bpill svg { width: 15px; height: 15px; }
#page-home .bpill:hover { border-color: var(--color-primary-500); color: var(--color-primary-700); background: var(--color-primary-50); }
#page-home .bpill:active { transform: scale(.96); }
#page-home .bpill.primary { background: var(--gradient-brand); border: none; color: #fff; box-shadow: var(--shadow-brand); }
#page-home .bpill.primary:hover { filter: brightness(1.06); }
#page-home .bquick .spacer { flex: 1; }

/* ---- 待办 / 通知 双栏 ---- */
#page-home .home-panels { display: grid; grid-template-columns: 7fr 5fr; gap: 16px; margin-bottom: 16px; grid-auto-flow: dense; }
#page-home .home-panel {
  background: var(--color-surface); border: 1px solid var(--color-border);
  border-radius: 18px; padding: 6px 0 12px; box-shadow: var(--shadow-xs);
}
#page-home .home-ai-panel { grid-column: 1 / -1; padding: 16px 18px; }
#page-home .home-panel-head { display: flex; justify-content: space-between; align-items: center; padding: 16px 22px 4px; }
#page-home .home-panel-title { font-size: 15px; font-weight: 700; color: var(--color-gray-900); cursor: default; border: 0; background: transparent; padding: 0; font-family: var(--font-sans); }
#page-home .home-panel-head .home-panel-title { cursor: pointer; }
#page-home .home-panel-action { font-size: 12px; color: var(--color-primary-600); cursor: pointer; border: 0; background: transparent; padding: 0; font-family: var(--font-sans); }
#page-home .home-panel-action:hover { color: var(--color-primary-700); text-decoration: underline; }
#page-home .home-todo-list { min-height: 80px; padding: 4px 10px 0; }
#page-home .home-notify-list { min-height: 80px; max-height: 260px; overflow-y: auto; padding: 4px 10px 0; }

/* 待办条目（list-item 由 home.js 渲染） */
#page-home .list-item { display: flex; align-items: flex-start; gap: 10px; padding: 11px 12px; border-radius: 10px; transition: background .15s; }
#page-home .list-item:hover { background: var(--color-gray-50); }
#page-home .list-item + .list-item { border-top: 1px solid var(--color-gray-100); }
#page-home .list-item .item-title { font-size: 13px; color: var(--color-gray-800); font-weight: 500; line-height: 1.5; }
#page-home .list-item .item-desc { font-size: 12px; color: var(--color-gray-500); margin-top: 2px; line-height: 1.5; }

/* 通知条目（home-notify-item 由 home.js 渲染） */
#page-home .home-notify-item { padding: 11px 12px; border-radius: 10px; transition: background .15s; }
#page-home .home-notify-item:hover { background: var(--color-gray-50); }
#page-home .home-notify-item + .home-notify-item { border-top: 1px solid var(--color-gray-100); }
#page-home .home-more-row { padding: 4px 12px 0; }
#page-home .home-more-link { font-size: 12px; color: var(--color-primary-600); background: none; border: none; cursor: pointer; padding: 6px 0; font-family: var(--font-sans); }
#page-home .home-more-link:hover { text-decoration: underline; }

/* ---- 今日业务速览 ---- */
#page-home .home-overview {
  background: var(--color-surface); border: 1px solid var(--color-border);
  border-radius: 18px; padding: 18px 22px; margin-bottom: 16px; box-shadow: var(--shadow-xs);
}
#page-home .home-overview-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px; margin-top: 12px; }
#page-home .home-overview-item { display: flex; align-items: center; gap: 12px; padding: 14px 16px; border-radius: 12px; }
#page-home .home-overview-item.oi-green { background: var(--color-success-bg); }
#page-home .home-overview-item.oi-orange { background: var(--color-warning-bg); }
#page-home .home-overview-item svg { width: 24px; height: 24px; flex-shrink: 0; }
#page-home .home-overview-item.oi-green svg { color: var(--color-success); }
#page-home .home-overview-item.oi-orange svg { color: var(--color-warning-text); }
#page-home .home-overview-num { font-size: 22px; font-weight: 700; line-height: 1.1; font-variant-numeric: tabular-nums; }
#page-home .home-overview-item.oi-green .home-overview-num { color: var(--color-success); }
#page-home .home-overview-item.oi-orange .home-overview-num { color: var(--color-warning-text); }
#page-home .home-overview-label { font-size: 12px; color: var(--color-gray-600); margin-top: 3px; }

/* ---- 视图切换 / 平台面板（home.js 动态注入） ---- */
#page-home .home-view-switcher { display: flex; gap: 8px; margin-bottom: 16px; flex-wrap: wrap; }
#page-home .home-view-tab {
  height: 34px; padding: 0 16px; border-radius: var(--radius-pill);
  border: 1px solid var(--color-border); background: var(--color-surface);
  font-size: 13px; font-weight: 500; color: var(--color-gray-600); cursor: pointer; font-family: var(--font-sans);
  transition: all .15s ease;
}
#page-home .home-view-tab:hover { border-color: var(--color-primary-400); color: var(--color-primary-700); }
#page-home .home-view-tab.active { background: var(--color-gray-900); border-color: var(--color-gray-900); color: #fff; font-weight: 600; }
#page-home .home-view-title { font-size: 18px; font-weight: 700; color: var(--color-gray-900); }
#page-home .home-platform-panel { margin-bottom: 16px; }

/* ---- 紧凑模式（home.js 依据内容量加 .home-busy） ---- */
#page-home.home-busy .bquote { padding: 20px 26px; }
#page-home.home-busy .bquote-main { font-size: 20px; }

/* ---- 首页响应式 ---- */
@media (max-width: 1100px) {
  #page-home .bento-hero { grid-template-columns: 1fr; }
  #page-home .bstrip { flex-wrap: wrap; }
  #page-home .bcell { flex: 1 1 40%; }
}
@media (max-width: 768px) {
  #page-home .home-panels { grid-template-columns: 1fr; }
  #page-home .home-overview-grid { grid-template-columns: 1fr; }
  #page-home .bquote-main { font-size: 19px; }
}

/* ============================================================
   品牌穿插元素 + 业务页统一皮肤（2026-08）
   ============================================================ */

/* ---- 登录页 H 屋顶水印（Logo 衍生元素） ---- */
.login-right-mark {
  position: absolute; width: 460px; height: 460px;
  right: -90px; bottom: -110px;
  opacity: .10; z-index: 0; pointer-events: none;
}

/* ---- 页面标题：去 emoji，改用品牌渐变条 ---- */
.section-title { font-size: 17px; font-weight: 700; color: var(--color-gray-900); letter-spacing: .01em; }
.section-title::before {
  content: ""; width: 4px; height: 16px; border-radius: 2px;
  background: var(--gradient-brand); flex: none; margin-right: 10px;
}

/* ---- 按钮：token 化 + 品牌渐变主按钮 ---- */
.btn { border-radius: var(--radius-md); transition: filter .15s ease, box-shadow .15s ease, background .15s ease, border-color .15s ease; font-family: var(--font-sans); }
.btn-primary { background: var(--gradient-brand); color: #fff; }
.btn-primary:hover { background: var(--gradient-brand); filter: brightness(1.06); box-shadow: var(--shadow-brand); }
.btn-primary:active { filter: brightness(.97); }
.btn-sm { border-radius: 8px; }

/* ---- 输入框：统一聚焦态 ---- */
.search-input, .filter-bar select, .market-area-quick {
  border: 1px solid var(--color-border-strong); border-radius: var(--radius-md);
  font-family: var(--font-sans); color: var(--color-gray-800);
  transition: border-color .15s ease, box-shadow .15s ease;
}
.search-input:focus, .market-area-quick:focus {
  outline: none; border-color: var(--color-primary-500);
  box-shadow: 0 0 0 3px rgba(59,130,246,.15);
}
.search-input::placeholder { color: var(--color-gray-400); }

/* ---- 筛选 / 视图切换按钮 ---- */
.filter-btn, .view-toggle-btn {
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  background: var(--color-surface); color: var(--color-gray-600);
  font-family: var(--font-sans); transition: all .15s ease;
}
.filter-btn:hover, .view-toggle-btn:hover {
  border-color: var(--color-primary-400); color: var(--color-primary-700);
  background: var(--color-primary-50);
}

/* ---- 房源卡片：轻边框 + 微阴影 + hover 浮起 ---- */
.prop-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xs);
  transition: box-shadow .18s ease, transform .18s ease, border-color .18s ease;
}
.prop-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
  border-color: var(--color-primary-200);
}
.prop-price { color: var(--color-danger); font-variant-numeric: tabular-nums; }
.prop-info { color: var(--color-gray-600); }

/* ---- 标签：语义色 token ---- */
.prop-tag { border-radius: 6px; font-weight: 500; }
.tag-rent { background: var(--color-info-bg); color: var(--color-info); }
.tag-sale { background: var(--color-warning-bg); color: #B45309; }

/* ---- 弹窗：圆角与阴影统一 ---- */
.modal-content, .modal-box, .modal-card {
  border-radius: var(--radius-xl) !important;
}

/* ---- 滚动条：全局细化 ---- */
.main-content::-webkit-scrollbar, .home-notify-list::-webkit-scrollbar { width: 8px; }
.main-content::-webkit-scrollbar-thumb, .home-notify-list::-webkit-scrollbar-thumb {
  background: var(--color-gray-200); border-radius: 4px;
}
.main-content::-webkit-scrollbar-thumb:hover, .home-notify-list::-webkit-scrollbar-thumb:hover {
  background: var(--color-gray-300);
}

/* ============================================================
   全站页面皮肤（2026-08 第二批：工具箱/管理/AI/租务/市场/门店）
   ============================================================ */

/* ---- 工具卡（工具箱 / 管理中心 / 平台运营） ---- */
.tool-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }
.tool-grid-2 { grid-template-columns: repeat(2, 1fr); }
@media (max-width: 1100px) { .tool-grid { grid-template-columns: repeat(3, 1fr); } }
@media (max-width: 768px) { .tool-grid, .tool-grid-2 { grid-template-columns: repeat(2, 1fr); } }
.tool-card {
  background: var(--color-surface); border: 1px solid var(--color-border);
  border-radius: var(--radius-lg); padding: 20px 18px;
  cursor: pointer; box-shadow: var(--shadow-xs);
  display: flex; flex-direction: column; align-items: flex-start; gap: 12px;
  transition: box-shadow .18s ease, transform .18s ease, border-color .18s ease;
}
.tool-card:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); border-color: var(--color-primary-200); }
.tool-card:active { transform: translateY(0) scale(.98); }
.tool-icon {
  width: 42px; height: 42px; border-radius: 12px; flex: none;
  display: flex; align-items: center; justify-content: center;
}
.tool-icon svg { width: 21px; height: 21px; }
.ti-blue   { background: var(--color-primary-50);  color: var(--color-primary-600); }
.ti-cyan   { background: rgba(6,182,212,.12);      color: var(--color-accent-600); }
.ti-green  { background: var(--color-success-bg);  color: var(--color-success); }
.ti-orange { background: var(--color-warning-bg);  color: var(--color-warning-text); }
.ti-red    { background: var(--color-danger-bg);   color: var(--color-danger); }
.ti-purple { background: #F1EEFE;                  color: #7B6BE8; }
.tool-name { font-size: 14px; font-weight: 600; color: var(--color-gray-800); }
.tool-desc { font-size: 11.5px; color: var(--color-gray-400); margin-top: -6px; }

/* ---- 软按钮（替换内联灰按钮） ---- */
.btn-soft { background: var(--color-gray-100); color: var(--color-gray-600); }
.btn-soft:hover { background: var(--color-gray-200); color: var(--color-gray-800); }

/* ---- AI 助手 ---- */
/* D4 formal AI visual shell */
#page-ai .d4-ai-root { min-height: 0; }
#page-ai .d4-ai-shell { display: flex; flex-direction: column; min-height: 0; }
#page-ai .d4-ai-header { display: flex; align-items: flex-start; justify-content: space-between; gap: 20px; margin-bottom: 12px; }
#page-ai .d4-ai-title { font-size: 18px; line-height: 1.35; font-weight: 700; color: var(--color-gray-900); }
#page-ai .d4-ai-description { margin-top: 5px; max-width: 820px; font-size: 12.5px; line-height: 1.55; color: var(--color-gray-500); }
#page-ai .d4-ai-badge { display: inline-flex; align-items: center; min-height: 28px; padding: 0 10px; border: 1px solid var(--color-primary-100); border-radius: var(--radius-pill); background: var(--color-primary-50); color: var(--color-primary-700); font-size: 12px; font-weight: 600; white-space: nowrap; }
#page-ai .d4-ai-session-bar { display: flex; align-items: center; gap: 10px; margin-bottom: 12px; }
#page-ai .d4-ai-session-bar label { font-size: 12px; font-weight: 600; color: var(--color-gray-500); }
#page-ai #d4AiSessionSelect { min-width: 210px; height: 36px; padding: 0 34px 0 12px; border: 1px solid var(--color-border-strong); border-radius: var(--radius-md); background: var(--color-surface); color: var(--color-gray-700); font: 13px var(--font-sans); cursor: pointer; }
#page-ai #d4AiSessionSelect:focus { outline: none; border-color: var(--color-primary-500); box-shadow: 0 0 0 3px rgba(59,130,246,.15); }
#page-ai .d4-ai-status { min-height: 24px; padding: 6px 2px 0; font-size: 12px; color: var(--color-gray-500); }
#page-ai .d4-ai-status-error { color: var(--color-danger); }

#page-ai .chat-container {
  background: var(--color-surface); border: 1px solid var(--color-border);
  border-radius: var(--radius-lg); box-shadow: var(--shadow-xs);
  height: calc(100vh - 190px); overflow: hidden;
}
#page-ai .chat-messages { padding: 20px 22px; background: var(--color-surface-secondary); }
#page-ai .chat-msg { border-radius: 14px; box-shadow: var(--shadow-xs); }
#page-ai .chat-msg.user { background: var(--gradient-brand); border-bottom-right-radius: 4px; }
#page-ai .chat-msg.ai { background: var(--color-surface); border: 1px solid var(--color-border); border-bottom-left-radius: 4px; }
#page-ai .ai-cap {
  display: inline-block; padding: 1px 8px; margin: 1px 0;
  background: var(--color-primary-50); color: var(--color-primary-700);
  border-radius: 6px; font-size: 12px; font-weight: 600;
}
#page-ai .ai-chip-bar {
  display: flex; gap: 8px; flex-wrap: wrap;
  padding: 10px 16px; border-top: 1px solid var(--color-gray-100);
  background: var(--color-surface);
}
#page-ai .ai-chip {
  height: 30px; padding: 0 14px; border-radius: var(--radius-pill);
  border: 1px solid var(--color-border); background: var(--color-surface);
  font-size: 12px; color: var(--color-gray-600); cursor: pointer;
  font-family: var(--font-sans); transition: all .15s ease;
}
#page-ai .ai-chip:hover { border-color: var(--color-primary-400); color: var(--color-primary-700); background: var(--color-primary-50); }
#page-ai .chat-input-bar { padding: 12px 16px; border-top: 1px solid var(--color-gray-100); background: var(--color-surface); }
#page-ai .chat-input-bar input {
  border: 1px solid var(--color-border-strong); border-radius: var(--radius-pill);
  padding: 10px 18px; font-family: var(--font-sans);
  transition: border-color .15s ease, box-shadow .15s ease;
}
#page-ai .chat-input-bar input:focus { outline: none; border-color: var(--color-primary-500); box-shadow: 0 0 0 3px rgba(59,130,246,.15); }

/* ---- 通用表格（租务等） ---- */
.rx-toolbar { display: flex; gap: 10px; align-items: center; flex-wrap: wrap; margin-bottom: 14px; }
.rx-toolbar .rental-search-input { width: 240px; height: 36px; padding: 0 14px; font-size: 13px; }
.rx-select {
  height: 36px; padding: 0 10px; border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-md); font-size: 13px; color: var(--color-gray-700);
  background: var(--color-surface); font-family: var(--font-sans); cursor: pointer;
}
.rx-select:focus { outline: none; border-color: var(--color-primary-500); box-shadow: 0 0 0 3px rgba(59,130,246,.15); }
.rx-table-wrap {
  overflow-x: auto; background: var(--color-surface);
  border: 1px solid var(--color-border); border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xs);
}
.rx-table { width: 100%; border-collapse: collapse; font-size: 13px; }
.rx-table thead th {
  text-align: left; padding: 12px 14px; white-space: nowrap;
  background: var(--color-gray-50); color: var(--color-gray-500);
  font-weight: 600; font-size: 12px; border-bottom: 1px solid var(--color-border);
}
.rx-table tbody td { padding: 12px 14px; border-bottom: 1px solid var(--color-gray-100); color: var(--color-gray-700); white-space: nowrap; }
.rx-table tbody tr:hover { background: var(--color-gray-50); }
.rx-table tbody tr:last-child td { border-bottom: none; }

/* ---- 房源市场表格 token 化 ---- */
.market-table-wrap { border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-xs); }
.market-table thead th { background: var(--color-gray-50); color: var(--color-gray-500); border-bottom: 1px solid var(--color-border); }
.market-table tbody td { border-bottom: 1px solid var(--color-gray-100); color: var(--color-gray-700); }
.market-table tbody tr.market-row:hover { background: var(--color-primary-50); }
.market-price-main { color: var(--color-danger); font-weight: 700; font-variant-numeric: tabular-nums; }
.market-price-sub { color: var(--color-gray-400); font-size: 11px; }
.market-empty {
  text-align: center; padding: 60px 20px; color: var(--color-gray-500);
  background: var(--color-surface); border: 1px dashed var(--color-border-strong);
  border-radius: var(--radius-lg); font-size: 14px; line-height: 2;
}

/* ---- 市场工具栏 / 最近浏览 ---- */
.market-toolbar {
  background: var(--color-surface); border: 1px solid var(--color-border);
  border-radius: var(--radius-lg); padding: 12px 14px; margin-bottom: 14px;
  box-shadow: var(--shadow-xs);
}
.recently-viewed-label { color: var(--color-gray-500); font-size: 12px; }

/* ---- 门店目录卡 ---- */
.store-dir-card { border: 1px solid var(--color-border); border-radius: var(--radius-lg); box-shadow: var(--shadow-xs); transition: box-shadow .18s ease, transform .18s ease; }
.store-dir-card:hover { box-shadow: var(--shadow-md); transform: translateY(-2px); }
.store-onboard-step { border-radius: var(--radius-lg); }
.store-onboard-step-num { background: var(--gradient-brand); color: #fff; }

/* ---- 配盘小卡（客户/AI 里的房源 mini 卡） ---- */
.prop-card-mini {
  border: 1px solid var(--color-border); border-radius: var(--radius-md);
  box-shadow: var(--shadow-xs); transition: box-shadow .15s ease;
}
.prop-card-mini:hover { box-shadow: var(--shadow-sm); border-color: var(--color-primary-200); }

/* ---- 页面顶部操作行统一 ---- */
.page > div:first-child > .btn-primary, .page > .btn-primary { box-shadow: var(--shadow-brand); }
/* ============================================================
   房源市场页 UI 美化（2026-08-05）
   说明：更新工具栏、搜索、按钮等样式，使用设计系统变量
   ============================================================ */

/* ---- 搜索输入框 ---- */
.market-search-input {
  width: 200px;
  min-width: 140px;
  flex-shrink: 0;
  padding: 8px 12px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  font-size: 14px;
  background: var(--color-surface);
  color: var(--color-gray-800);
  transition: border-color 0.15s, box-shadow 0.15s;
}
.market-search-input:focus {
  outline: none;
  border-color: var(--color-primary-400);
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
}

/* ---- 片区选择 ---- */
.market-area-quick {
  width: 108px;
  flex-shrink: 0;
  padding: 8px 8px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  font-size: 13px;
  background: var(--color-surface);
  color: var(--color-gray-700);
  cursor: pointer;
  transition: border-color 0.15s;
}
.market-area-quick:focus {
  outline: none;
  border-color: var(--color-primary-400);
}

/* ---- 地图按钮 ---- */
.market-map-btn {
  padding: 7px 9px !important;
  font-size: 12px !important;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 4px;
}
.market-map-btn svg {
  width: 16px;
  height: 16px;
}

/* ---- 工具栏右侧按钮组 ---- */
.market-toolbar-right {
  display: flex;
  gap: 6px;
  align-items: center;
  flex-shrink: 0;
  flex-wrap: wrap;
}
.market-toolbar-right .view-toggle-btn,
.market-toolbar-right .market-reset-btn {
  padding: 6px 10px;
  font-size: 12px;
  white-space: nowrap;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-gray-600);
  cursor: pointer;
  transition: all 0.15s;
}
.market-toolbar-right .view-toggle-btn:hover,
.market-toolbar-right .market-reset-btn:hover {
  background: var(--color-gray-50);
  border-color: var(--color-primary-300);
  color: var(--color-primary-600);
}
.market-toolbar-right .view-toggle-btn svg,
.market-toolbar-right .market-reset-btn svg {
  width: 14px;
  height: 14px;
}

/* ---- 同步按钮（特殊状态） ---- */
#marketSyncBtn {
  background: var(--color-primary-50);
  color: var(--color-primary-600);
  border: 1px solid var(--color-primary-200);
}
#marketSyncBtn:hover {
  background: var(--color-primary-100);
  border-color: var(--color-primary-300);
}
#marketSyncBtn:active {
  transform: scale(0.98);
}

/* ---- 最近浏览标签 ---- */
.recently-viewed-label {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  color: var(--color-gray-500);
  font-size: 12px;
  font-weight: 500;
}
.recently-viewed-label svg {
  width: 14px;
  height: 14px;
  color: var(--color-gray-400);
}

/* ---- 收藏横幅 ---- */
.market-favorites-banner {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 8px 12px;
  background: var(--color-primary-50);
  border: 1px solid var(--color-primary-100);
  border-radius: var(--radius-sm);
  margin-top: 8px;
}
.market-favorites-banner span {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  font-size: 13px;
  font-weight: 500;
  color: var(--color-primary-700);
}
.market-favorites-banner svg {
  width: 14px;
  height: 14px;
  color: var(--color-primary-500);
}

/* ---- 高级搜索箭头按钮 ---- */
.adv-combo-arrow {
  position: absolute;
  right: 4px;
  width: 24px;
  height: 24px;
  border: none;
  background: transparent;
  color: var(--color-gray-400);
  cursor: pointer;
  font-size: 10px;
  border-radius: 4px;
  display: flex;
  align-items: center;
  justify-content: center;
  transition: all 0.15s;
}
.adv-combo-arrow:hover {
  background: var(--color-gray-100);
  color: var(--color-primary-600);
}

/* ---- 市场空状态 ---- */
.market-empty {
  text-align: center;
  padding: 48px 24px;
  color: var(--color-gray-400);
  font-size: 15px;
  line-height: 1.6;
}
.market-empty span {
  display: block;
  margin-top: 8px;
  font-size: 13px;
  color: var(--color-gray-300);
}

/* ---- 市场徽章（已有样式更新） ---- */
.market-badge {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  padding: 2px 6px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 500;
  line-height: 1.3;
}
.market-badge.commission {
  background: var(--color-success-bg);
  color: var(--color-success);
}
.market-badge.off-market {
  background: var(--color-warning-bg);
  color: var(--color-warning);
}
.market-badge.store {
  background: var(--color-primary-50);
  color: var(--color-primary-600);
}
.market-badge.id {
  background: var(--color-gray-100);
  color: var(--color-gray-600);
}

/* ---- 响应式调整 ---- */
@media (max-width: 1200px) {
  .market-search-row {
    flex-wrap: wrap;
  }
  .market-search-input {
    width: 100%;
    max-width: 280px;
  }
}/* ============================================================
   自盘房源页 UI 美化（2026-08-05）
   说明：添加通用页面头部样式、按钮变体、更新工具栏
   ============================================================ */

/* ---- 通用页面头部（适用于所有页面） ---- */
.page-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 16px;
}
.page-header .section-title {
  margin-bottom: 0;
}

/* ---- 按钮变体 ---- */
.btn-danger {
  background: var(--color-danger-bg);
  color: var(--color-danger);
  border: 1px solid transparent;
}
.btn-danger:hover {
  background: #FEE2E2;
  border-color: #FECACA;
  color: #B91C1C;
}
.btn-warning {
  background: var(--color-warning-bg);
  color: var(--color-warning-text);
  border: 1px solid transparent;
}
.btn-warning:hover {
  background: #FEF3C7;
  border-color: #FDE68A;
  color: #B45309;
}
.btn-soft {
  background: var(--color-gray-100);
  color: var(--color-gray-600);
  border: 1px solid var(--color-border);
}
.btn-soft:hover {
  background: var(--color-gray-200);
  border-color: var(--color-border-strong);
  color: var(--color-gray-700);
}

/* ---- 自盘房源工具栏 ---- */
.my-prop-toolbar {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 12px 14px;
  margin-bottom: 14px;
  box-shadow: var(--shadow-xs);
}
.my-prop-search-row {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
  margin-bottom: 0;
}
.my-prop-search-input {
  width: 200px;
  min-width: 140px;
  flex-shrink: 0;
  padding: 8px 12px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  font-size: 14px;
  background: var(--color-surface);
  color: var(--color-gray-800);
  transition: border-color 0.15s, box-shadow 0.15s;
}
.my-prop-search-input:focus {
  outline: none;
  border-color: var(--color-primary-400);
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
}
.my-prop-filter-btn,
.my-prop-reset-btn {
  padding: 6px 10px;
  font-size: 12px;
  white-space: nowrap;
  flex-shrink: 0;
  display: inline-flex;
  align-items: center;
  gap: 4px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  background: var(--color-surface);
  color: var(--color-gray-600);
  cursor: pointer;
  transition: all 0.15s;
}
.my-prop-filter-btn:hover,
.my-prop-reset-btn:hover {
  background: var(--color-gray-50);
}

/* ========== AI对话多对话框样式 ========== */
.ai-chat-sidebar {
  background: var(--color-surface);
  border-right: 1px solid var(--color-border);
}

.ai-chat-sidebar-header {
  padding: 12px;
  border-bottom: 1px solid var(--color-border);
}

.ai-conversation-list {
  overflow-y: auto;
  flex: 1;
}

.ai-conv-item {
  padding: 12px;
  border-bottom: 1px solid var(--color-border);
  cursor: pointer;
  transition: background-color 0.2s;
}

.ai-conv-item:hover {
  background-color: var(--color-gray-50);
}

.ai-conv-item.active {
  background-color: var(--color-primary-50);
  border-left: 3px solid var(--color-primary-500);
}

.ai-conv-title {
  font-size: 14px;
  font-weight: 500;
  color: var(--color-gray-800);
  margin-bottom: 4px;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.ai-conv-time {
  font-size: 12px;
  color: var(--color-gray-400);
}

.ai-conv-delete {
  position: absolute;
  right: 8px;
  top: 50%;
  transform: translateY(-50%);
  background: none;
  border: none;
  color: var(--color-gray-400);
  cursor: pointer;
  font-size: 16px;
  opacity: 0;
  transition: opacity 0.2s;
}

.ai-conv-item:hover .ai-conv-delete {
  opacity: 1;
}

.ai-conv-delete:hover {
  color: var(--color-danger);
}

/* ========== 房源卡片样式 ========== */
.property-cards {
  margin-top: 12px;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.property-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  padding: 8px 12px;
  font-size: 13px;
  color: var(--color-gray-700);
}

/* ========== 建议按钮样式 ========== */
.suggestions {
  margin-top: 12px;
  display: flex;
  flex-wrap: wrap;
  gap: 8px;
}

.suggestion-btn {
  background: var(--color-primary-50);
  border: 1px solid var(--color-primary-200);
  border-radius: var(--radius-sm);
  padding: 6px 12px;
  font-size: 12px;
  color: var(--color-primary-600);
  cursor: pointer;
  transition: all 0.2s;
}

.suggestion-btn:hover {
  background: var(--color-primary-100);
  border-color: var(--color-primary-300);
}
  border-color: var(--color-primary-300);
  color: var(--color-primary-600);
}
.my-prop-batch-bar {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  margin-left: 8px;
  padding-left: 8px;
  border-left: 1px solid var(--color-border);
}
.my-prop-filter-summary {
  margin-top: 8px;
  padding: 8px 12px;
  background: var(--color-primary-50);
  border: 1px solid var(--color-primary-100);
  border-radius: var(--radius-sm);
  font-size: 13px;
  color: var(--color-primary-700);
}

/* ---- 响应式 ---- */
@media (max-width: 768px) {
  .page-header {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
  }
  .my-prop-search-row {
    flex-direction: column;
    align-items: stretch;
  }
  .my-prop-search-input {
    width: 100%;
  }
}/* ============================================================
   门店目录页 UI 美化（2026-08-05）
   说明：添加页面头部操作栏样式，更新搜索框宽度
   ============================================================ */

/* ---- 页面头部操作栏 ---- */
.page-header-actions {
  display: flex;
  gap: 8px;
  align-items: center;
  flex-wrap: wrap;
}

/* ---- 搜索输入框统一宽度 ---- */
.search-input {
  width: 280px;
  max-width: 100%;
}
@media (max-width: 768px) {
  .search-input {
    width: 100%;
  }
}

/* ---- 门店目录网格（已有样式更新） ---- */
.store-dir-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: 16px;
}
.store-dir-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 16px;
  box-shadow: var(--shadow-xs);
  transition: all 0.18s ease;
  cursor: pointer;
}
.store-dir-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-2px);
  border-color: var(--color-primary-200);
}
.store-dir-card-header {
  display: flex;
  justify-content: space-between;
  align-items: flex-start;
  margin-bottom: 12px;
}
.store-dir-card-name {
  font-size: 15px;
  font-weight: 600;
  color: var(--color-gray-800);
  line-height: 1.3;
}
.store-dir-card-badge {
  display: inline-flex;
  align-items: center;
  padding: 2px 6px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 500;
}
.store-dir-card-badge.active {
  background: var(--color-success-bg);
  color: var(--color-success);
}
.store-dir-card-badge.inactive {
  background: var(--color-gray-100);
  color: var(--color-gray-500);
}
.store-dir-card-meta {
  display: flex;
  flex-direction: column;
  gap: 6px;
  font-size: 13px;
  color: var(--color-gray-600);
  line-height: 1.4;
}
.store-dir-card-meta svg {
  width: 14px;
  height: 14px;
  color: var(--color-gray-400);
  flex-shrink: 0;
}
.store-dir-card-meta-item {
  display: flex;
  align-items: center;
  gap: 6px;
}
.store-dir-card-footer {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--color-gray-100);
}
.store-dir-card-count {
  font-size: 12px;
  color: var(--color-gray-500);
}
.store-dir-card-action {
  font-size: 12px;
  color: var(--color-primary-600);
  font-weight: 500;
  cursor: pointer;
  transition: color 0.15s;
}
.store-dir-card-action:hover {
  color: var(--color-primary-700);
}

/* ---- 门店接入步骤 ---- */
.store-onboard-steps {
  display: flex;
  gap: 12px;
  margin-bottom: 20px;
  flex-wrap: wrap;
}
.store-onboard-step {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 10px 14px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  font-size: 13px;
  color: var(--color-gray-600);
  transition: all 0.15s;
}
.store-onboard-step.active {
  background: var(--color-primary-50);
  border-color: var(--color-primary-200);
  color: var(--color-primary-700);
}
.store-onboard-step-number {
  width: 24px;
  height: 24px;
  border-radius: 50%;
  background: var(--color-gray-200);
  color: var(--color-gray-600);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 12px;
  font-weight: 600;
}
.store-onboard-step.active .store-onboard-step-number {
  background: var(--color-primary-500);
  color: white;
}/* ============================================================
   工作日志页 UI 美化（2026-08-05）
   说明：添加通用下拉选择框样式，更新页面头部
   ============================================================ */

/* ---- 通用下拉选择框 ---- */
.rx-select {
  padding: 8px 12px;
  border: 1px solid var(--color-border);
  border-radius: var(--radius-sm);
  font-size: 13px;
  font-family: var(--font-sans);
  background: var(--color-surface);
  color: var(--color-gray-700);
  cursor: pointer;
  transition: border-color 0.15s, box-shadow 0.15s;
  min-width: 120px;
}
.rx-select:focus {
  outline: none;
  border-color: var(--color-primary-400);
  box-shadow: 0 0 0 3px rgba(37, 99, 235, 0.1);
}
.rx-select:hover {
  border-color: var(--color-primary-300);
}

/* ---- 工作日志摘要 ---- */
.wl-summary {
  display: flex;
  gap: 16px;
  margin-bottom: 16px;
  flex-wrap: wrap;
}
.wl-summary-item {
  display: flex;
  align-items: center;
  gap: 8px;
  padding: 12px 16px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-xs);
}
.wl-summary-item svg {
  width: 20px;
  height: 20px;
  color: var(--color-primary-500);
}
.wl-summary-item:nth-child(2) svg {
  color: var(--color-success);
}
.wl-summary-item:nth-child(3) svg {
  color: var(--color-warning);
}
.wl-summary-item:nth-child(4) svg {
  color: var(--color-danger);
}
.wl-summary-num {
  font-size: 20px;
  font-weight: 700;
  color: var(--color-gray-800);
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}
.wl-summary-label {
  font-size: 12px;
  color: var(--color-gray-500);
  margin-top: 2px;
}

/* ---- 工作日志列表 ---- */
.wl-list {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-xs);
}
.wl-item {
  display: flex;
  gap: 12px;
  padding: 12px 16px;
  border-bottom: 1px solid var(--color-gray-100);
  transition: background 0.15s;
}
.wl-item:last-child {
  border-bottom: none;
}
.wl-item:hover {
  background: var(--color-gray-50);
}
.wl-item-avatar {
  width: 36px;
  height: 36px;
  border-radius: 50%;
  background: var(--color-primary-50);
  color: var(--color-primary-600);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 14px;
  font-weight: 600;
  flex-shrink: 0;
}
.wl-item-content {
  flex: 1;
  min-width: 0;
}
.wl-item-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 4px;
}
.wl-item-user {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-gray-800);
}
.wl-item-time {
  font-size: 12px;
  color: var(--color-gray-400);
}
.wl-item-action {
  font-size: 13px;
  color: var(--color-gray-600);
  line-height: 1.5;
}
.wl-item-action strong {
  color: var(--color-gray-700);
  font-weight: 600;
}
.wl-item-target {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: 2px 6px;
  background: var(--color-primary-50);
  color: var(--color-primary-600);
  border-radius: 4px;
  font-size: 12px;
  font-weight: 500;
  margin-left: 4px;
}

/* ---- 空状态 ---- */
.wl-empty {
  text-align: center;
  padding: 48px 24px;
  color: var(--color-gray-400);
  font-size: 15px;
}
.wl-empty svg {
  width: 48px;
  height: 48px;
  margin-bottom: 12px;
  color: var(--color-gray-300);
}

/* ---- 响应式 ---- */
@media (max-width: 768px) {
  .wl-summary {
    flex-direction: column;
  }
  .wl-summary-item {
    width: 100%;
  }
  .wl-item {
    flex-direction: column;
  }
  .wl-item-avatar {
    width: 100%;
    height: 24px;
    border-radius: 4px;
  }
}/* ============================================================
   组织架构页 UI 美化（2026-08-05）
   说明：组织架构树、人员卡片样式
   ============================================================ */

/* ---- 组织架构提示 ---- */
.store-dir-hint {
  padding: 12px 16px;
  background: var(--color-primary-50);
  border: 1px solid var(--color-primary-100);
  border-radius: var(--radius-md);
  margin-bottom: 16px;
  font-size: 13px;
  color: var(--color-primary-700);
  line-height: 1.5;
}

/* ---- 组织架构树 ---- */
.org-tree {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-xs);
}
.org-node {
  border-bottom: 1px solid var(--color-gray-100);
  transition: background 0.15s;
}
.org-node:last-child {
  border-bottom: none;
}
.org-node:hover {
  background: var(--color-gray-50);
}
.org-node-header {
  display: flex;
  align-items: center;
  gap: 12px;
  padding: 12px 16px;
  cursor: pointer;
}
.org-node-avatar {
  width: 40px;
  height: 40px;
  border-radius: 50%;
  background: var(--color-primary-50);
  color: var(--color-primary-600);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 16px;
  font-weight: 600;
  flex-shrink: 0;
}
.org-node-info {
  flex: 1;
  min-width: 0;
}
.org-node-name {
  font-size: 15px;
  font-weight: 600;
  color: var(--color-gray-800);
  line-height: 1.3;
}
.org-node-meta {
  display: flex;
  gap: 8px;
  margin-top: 2px;
  font-size: 12px;
  color: var(--color-gray-500);
}
.org-node-role {
  display: inline-flex;
  align-items: center;
  padding: 2px 6px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 500;
}
.org-node-role.boss {
  background: var(--color-warning-bg);
  color: var(--color-warning-text);
}
.org-node-role.manager {
  background: var(--color-primary-50);
  color: var(--color-primary-600);
}
.org-node-role.agent {
  background: var(--color-success-bg);
  color: var(--color-success);
}
.org-node-role.platform_admin {
  background: var(--color-danger-bg);
  color: var(--color-danger);
}
.org-node-actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}
.org-node-actions .btn {
  padding: 4px 8px;
  font-size: 12px;
}
.org-node-children {
  padding-left: 40px;
  border-left: 2px solid var(--color-gray-200);
  margin-left: 19px;
}

/* ---- 人员列表（非树形） ---- */
.org-member-list {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
  gap: 12px;
}
.org-member-card {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: 16px;
  box-shadow: var(--shadow-xs);
  transition: all 0.18s ease;
}
.org-member-card:hover {
  box-shadow: var(--shadow-md);
  transform: translateY(-1px);
}
.org-member-header {
  display: flex;
  align-items: center;
  gap: 12px;
  margin-bottom: 12px;
}
.org-member-avatar {
  width: 44px;
  height: 44px;
  border-radius: 50%;
  background: var(--color-primary-50);
  color: var(--color-primary-600);
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 18px;
  font-weight: 600;
}
.org-member-info {
  flex: 1;
}
.org-member-name {
  font-size: 16px;
  font-weight: 600;
  color: var(--color-gray-800);
  line-height: 1.3;
}
.org-member-phone {
  font-size: 13px;
  color: var(--color-gray-500);
  margin-top: 2px;
}
.org-member-stats {
  display: flex;
  gap: 16px;
  margin-top: 12px;
  padding-top: 12px;
  border-top: 1px solid var(--color-gray-100);
}
.org-member-stat {
  display: flex;
  flex-direction: column;
  align-items: center;
}
.org-member-stat-num {
  font-size: 18px;
  font-weight: 700;
  color: var(--color-gray-800);
  font-variant-numeric: tabular-nums;
}
.org-member-stat-label {
  font-size: 11px;
  color: var(--color-gray-500);
  margin-top: 2px;
}

/* ---- 空状态 ---- */
.org-empty {
  text-align: center;
  padding: 48px 24px;
  color: var(--color-gray-400);
  font-size: 15px;
}
.org-empty svg {
  width: 48px;
  height: 48px;
  margin-bottom: 12px;
  color: var(--color-gray-300);
}

/* ---- 响应式 ---- */
@media (max-width: 768px) {
  .org-member-list {
    grid-template-columns: 1fr;
  }
  .org-node-children {
    padding-left: 20px;
    margin-left: 19px;
  }
}/* ============================================================
   地图找房页 UI 美化（2026-08-05）
   说明：地图容器、状态栏、结果列表样式
   ============================================================ */

/* ---- 地图页面工具栏 ---- */
.map-page-toolbar {
  display: flex;
  gap: 8px;
  align-items: center;
}
.map-page-toolbar .btn {
  display: inline-flex;
  align-items: center;
  gap: 4px;
}

/* ---- 地图状态栏 ---- */
.map-page-status {
  font-size: 12px;
  color: var(--color-gray-500);
  margin-bottom: 8px;
  padding: 6px 10px;
  background: var(--color-gray-50);
  border-radius: var(--radius-sm);
  border: 1px solid var(--color-gray-100);
}

/* ---- 地图容器 ---- */
.map-page-container {
  width: 100%;
  height: calc(100vh - 220px);
  min-height: 400px;
  border-radius: var(--radius-lg);
  border: 1px solid var(--color-border);
  box-shadow: var(--shadow-xs);
  overflow: hidden;
  background: var(--color-gray-100);
}

/* ---- 地图结果列表 ---- */
.map-page-results {
  max-height: 300px;
  overflow-y: auto;
  margin-top: 12px;
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow-xs);
}
.map-page-results:empty {
  display: none;
}
.map-result-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 10px 14px;
  border-bottom: 1px solid var(--color-gray-100);
  transition: background 0.15s;
  cursor: pointer;
}
.map-result-item:last-child {
  border-bottom: none;
}
.map-result-item:hover {
  background: var(--color-primary-50);
}
.map-result-name {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-gray-800);
  line-height: 1.3;
}
.map-result-meta {
  font-size: 12px;
  color: var(--color-gray-500);
  margin-top: 2px;
}
.map-result-count {
  font-size: 13px;
  color: var(--color-primary-600);
  font-weight: 500;
}

/* ---- 地图弹窗 ---- */
.map-popup {
  background: var(--color-surface);
  border-radius: var(--radius-md);
  box-shadow: var(--shadow-lg);
  padding: 12px;
  min-width: 200px;
}
.map-popup-title {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-gray-800);
  margin-bottom: 6px;
}
.map-popup-meta {
  font-size: 12px;
  color: var(--color-gray-500);
  margin-bottom: 8px;
  line-height: 1.4;
}
.map-popup-actions {
  display: flex;
  gap: 6px;
}
.map-popup-actions .btn {
  padding: 4px 8px;
  font-size: 12px;
}

/* ---- 圈选搜索提示 ---- */
.map-circle-hint {
  position: absolute;
  top: 12px;
  left: 50%;
  transform: translateX(-50%);
  background: var(--color-primary-600);
  color: white;
  padding: 8px 16px;
  border-radius: var(--radius-pill);
  font-size: 13px;
  font-weight: 500;
  box-shadow: var(--shadow-md);
  z-index: 1000;
  pointer-events: none;
}

/* ---- 响应式 ---- */
@media (max-width: 768px) {
  .map-page-container {
    height: calc(100vh - 180px);
    min-height: 300px;
  }
  .map-page-results {
    max-height: 200px;
  }
}/* ============================================================
   不合作名单页 UI 美化（2026-08-05）
   说明：提示文字、列表卡片样式
   ============================================================ */

/* ---- 提示文字 ---- */
.blacklist-hint {
  font-size: 13px;
  color: var(--color-gray-500);
  margin-bottom: 12px;
  line-height: 1.6;
  padding: 10px 14px;
  background: var(--color-gray-50);
  border: 1px solid var(--color-gray-100);
  border-radius: var(--radius-md);
}
.blacklist-hint strong {
  color: var(--color-gray-700);
  font-weight: 600;
}

/* ---- 黑名单列表 ---- */
.blacklist-list {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-xs);
}
.blacklist-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 12px 16px;
  border-bottom: 1px solid var(--color-gray-100);
  transition: background 0.15s;
}
.blacklist-item:last-child {
  border-bottom: none;
}
.blacklist-item:hover {
  background: var(--color-gray-50);
}
.blacklist-item-info {
  flex: 1;
  min-width: 0;
}
.blacklist-item-name {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-gray-800);
  line-height: 1.3;
}
.blacklist-item-meta {
  font-size: 12px;
  color: var(--color-gray-500);
  margin-top: 2px;
}
.blacklist-item-actions {
  display: flex;
  gap: 6px;
  flex-shrink: 0;
}
.blacklist-item-actions .btn {
  padding: 4px 8px;
  font-size: 12px;
}

/* ---- 空状态 ---- */
.blacklist-empty {
  text-align: center;
  padding: 48px 24px;
  color: var(--color-gray-400);
  font-size: 15px;
}
.blacklist-empty svg {
  width: 48px;
  height: 48px;
  margin-bottom: 12px;
  color: var(--color-gray-300);
}

/* ---- 响应式 ---- */
@media (max-width: 768px) {
  .blacklist-item {
    flex-direction: column;
    align-items: flex-start;
    gap: 8px;
  }
  .blacklist-item-actions {
    width: 100%;
    justify-content: flex-end;
  }
}/* ============================================================
   楼盘档案审核页 UI 美化（2026-08-05）
   说明：页面副标题、表单区域样式更新
   ============================================================ */

/* ---- 页面副标题 ---- */
.page-subtitle {
  font-size: 13px;
  color: var(--color-gray-500);
  margin-top: 4px;
  line-height: 1.5;
}
.page-subtitle strong {
  color: var(--color-gray-700);
  font-weight: 600;
}

/* ---- 楼盘档案区域 ---- */
.cmr-section {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-lg);
  padding: 16px;
  margin-bottom: 16px;
  box-shadow: var(--shadow-xs);
}
.cmr-section-title {
  font-size: 15px;
  font-weight: 600;
  color: var(--color-gray-800);
  margin-bottom: 12px;
  padding-bottom: 8px;
  border-bottom: 1px solid var(--color-gray-100);
  display: flex;
  align-items: center;
  gap: 8px;
}
.cmr-muted {
  font-size: 12px;
  font-weight: 400;
  color: var(--color-gray-400);
}

/* ---- 表单网格 ---- */
.cmr-form-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
}
.cmr-form-field {
  display: flex;
  flex-direction: column;
  gap: 4px;
}
.cmr-form-field-wide {
  grid-column: 1 / -1;
}
.cmr-form-field span {
  font-size: 13px;
  font-weight: 500;
  color: var(--color-gray-600);
}
.cmr-form-field .search-input,
.cmr-form-field select {
  width: 100%;
}

/* ---- 直接录入表单 ---- */
.cmr-direct-form {
  border: 2px dashed var(--color-primary-200);
  background: var(--color-primary-50);
}

/* ---- 审核项目卡片 ---- */
.cmr-item {
  background: var(--color-surface);
  border: 1px solid var(--color-border);
  border-radius: var(--radius-md);
  padding: 12px;
  margin-bottom: 8px;
  transition: all 0.15s;
}
.cmr-item:hover {
  border-color: var(--color-primary-200);
  box-shadow: var(--shadow-sm);
}
.cmr-item-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}
.cmr-item-name {
  font-size: 14px;
  font-weight: 600;
  color: var(--color-gray-800);
}
.cmr-item-status {
  display: inline-flex;
  align-items: center;
  padding: 2px 6px;
  border-radius: 4px;
  font-size: 11px;
  font-weight: 500;
}
.cmr-item-status.pending {
  background: var(--color-warning-bg);
  color: var(--color-warning-text);
}
.cmr-item-status.approved {
  background: var(--color-success-bg);
  color: var(--color-success);
}
.cmr-item-status.rejected {
  background: var(--color-danger-bg);
  color: var(--color-danger);
}
.cmr-item-meta {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 6px;
  font-size: 12px;
  color: var(--color-gray-500);
  line-height: 1.4;
}
.cmr-item-meta strong {
  color: var(--color-gray-600);
  font-weight: 500;
}
.cmr-item-actions {
  display: flex;
  gap: 6px;
  margin-top: 10px;
  padding-top: 10px;
  border-top: 1px solid var(--color-gray-100);
}

/* ---- 响应式 ---- */
@media (max-width: 768px) {
  .cmr-form-grid {
    grid-template-columns: 1fr;
  }
  .cmr-item-meta {
    grid-template-columns: 1fr;
  }
}

/* 房源标签：统一用于录入、编辑和筛选。 */
.property-tag-chips {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px;
  min-height: 34px;
  margin-top: 8px;
}
.property-tag-chip {
  min-height: 32px;
  padding: 5px 12px;
  border: 1px solid var(--color-border-strong);
  border-radius: var(--radius-pill);
  background: var(--color-surface);
  color: var(--color-gray-700);
  font: inherit;
  font-size: 13px;
  cursor: pointer;
  transition: background .15s, border-color .15s, color .15s, box-shadow .15s;
}
.property-tag-chip:hover { border-color: var(--color-primary-500); color: var(--color-primary-700); }
.property-tag-chip.active { border-color: var(--color-primary-600); background: var(--color-primary-600); color: #fff; }
.property-tag-chip:focus-visible { outline: 3px solid rgba(59,130,246,.25); outline-offset: 2px; }
.property-tag-chip:disabled { cursor: not-allowed; opacity: .55; }
.property-tag-state { color: var(--color-gray-500); font-size: 13px; }
.property-tag-retry { border: 0; background: transparent; color: var(--color-primary-700); cursor: pointer; text-decoration: underline; }

/* D5 accessibility primitives */
:where(button, a[href], input, select, textarea, [role="button"], [tabindex]:not([tabindex="-1"])):focus-visible {
  outline: 3px solid rgba(37,99,235,.38);
  outline-offset: 2px;
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}

/* D5 WCAG AA contrast corrections */
#page-home .bcell-num small { color: #15803d; }
#page-home .bquick-title, .tool-desc, .market-empty, .market-empty span, .store-dir-empty, #wlSummary { color: var(--color-gray-600) !important; }
.rx-toast.ok { background: #15803d; }
.btn-danger { color: #b91c1c; }
#page-rental td[colspan="9"] { color: var(--color-gray-600) !important; }
.leaflet-control-attribution a { text-decoration: underline !important; text-underline-offset: 2px; }

/* D5 login WCAG AA */
.login-brand-slogan { color: var(--color-gray-600); }
