/* ChinaHomeRent unified admin */
.admin-body { margin:0; font-family:'Segoe UI',system-ui,sans-serif; background:#f0f2f5; color:#1f2937; }
.admin-wrap { max-width:1280px; margin:0 auto; padding:20px 16px 48px; }
.admin-top { display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; gap:12px; margin-bottom:20px; }
.admin-top h1 { margin:0; font-size:1.4rem; }
.admin-nav { display:flex; flex-wrap:wrap; gap:8px; margin-bottom:20px; }
.admin-nav a { padding:8px 14px; background:#fff; border:1px solid #e5e7eb; border-radius:8px; text-decoration:none; color:#374151; font-size:0.88rem; font-weight:500; }
.admin-nav a:hover, .admin-nav a.active { background:#2c3e50; color:#fff; border-color:#2c3e50; }
.admin-card { background:#fff; border-radius:12px; padding:20px; box-shadow:0 2px 8px rgba(0,0,0,0.04); margin-bottom:16px; }
.admin-grid { display:grid; grid-template-columns:repeat(auto-fit,minmax(200px,1fr)); gap:14px; }
.admin-stat .num { font-size:1.8rem; font-weight:700; color:#2c3e50; }
.admin-stat .lbl { font-size:0.82rem; color:#6b7280; }
.admin-table-wrap { overflow:auto; }
table.admin-table { width:100%; border-collapse:collapse; min-width:900px; font-size:0.86rem; }
.admin-table th, .admin-table td { padding:10px 8px; border-bottom:1px solid #f1f5f9; text-align:left; vertical-align:middle; }
.admin-table th { background:#f8fafc; font-weight:600; }
.admin-table tr:hover td { background:#fafbfc; }
.admin-table .check-col { width:42px; text-align:center; vertical-align:middle; }
.admin-table .check-col input[type=checkbox] { width:16px; height:16px; margin:0; cursor:pointer; vertical-align:middle; position:relative; z-index:2; }
.admin-filters { display:flex; flex-wrap:wrap; gap:10px; margin-bottom:14px; align-items:end; }
.admin-filters input, .admin-filters select { padding:8px 10px; border:1px solid #d1d5db; border-radius:8px; font-size:0.88rem; }
.btn { display:inline-block; padding:8px 14px; border:none; border-radius:8px; font-weight:600; cursor:pointer; font-size:0.86rem; text-decoration:none; }
.btn-primary { background:#2c3e50; color:#fff; }
.btn-secondary { background:#e5e7eb; color:#374151; }
.btn-danger { background:#fee2e2; color:#b91c1c; }
.btn-success { background:#d1fae5; color:#047857; }
.btn-sm { padding:5px 10px; font-size:0.78rem; }
.login-card { max-width:400px; margin:60px auto; background:#fff; border-radius:14px; padding:32px 28px; box-shadow:0 8px 30px rgba(0,0,0,0.08); }
.login-card input[type=password] { width:100%; padding:12px; border:1px solid #d1d5db; border-radius:8px; margin:12px 0; box-sizing:border-box; }
.badge { display:inline-block; padding:2px 8px; border-radius:999px; font-size:0.72rem; font-weight:600; }
.badge-on { background:#d1fae5; color:#047857; }
.badge-off { background:#fee2e2; color:#b91c1c; }
.msg-ok { background:#ecfdf5; color:#047857; padding:10px; border-radius:8px; margin-bottom:12px; }
.msg-err { background:#fef2f2; color:#b91c1c; padding:10px; border-radius:8px; margin-bottom:12px; }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:12px; margin-bottom:12px; }
.form-row label { display:block; font-size:0.78rem; color:#6b7280; margin-bottom:4px; }
.form-row input, .form-row textarea, .form-row select { width:100%; padding:8px; border:1px solid #d1d5db; border-radius:8px; box-sizing:border-box; }
.form-row.full { grid-template-columns:1fr; }
@media(max-width:768px){ .form-row{ grid-template-columns:1fr; } }
.th-select-filter { cursor:pointer; user-select:none; color:#2563eb; white-space:nowrap; }
.th-select-filter:hover { background:#eff6ff !important; text-decoration:underline; }
.th-select-filter-active { background:#dbeafe !important; color:#1d4ed8; }
.agent-photo-panel { position:relative; display:flex; flex-direction:column; gap:10px; margin-bottom:18px; padding:16px; background:#f8fafc; border:2px dashed #cbd5e1; border-radius:10px; outline:none; transition:border-color 0.2s, background 0.2s; }
.agent-photo-panel:focus { border-color:#93c5fd; box-shadow:0 0 0 3px rgba(59,130,246,0.15); }
.agent-photo-panel.drag-over { border-color:#2563eb; background:#eff6ff; }
.agent-photo-panel.uploading { opacity:0.85; pointer-events:none; }
.agent-photo-drop-hint { font-size:0.82rem; color:#64748b; text-align:center; }
.agent-photo-panel-inner { display:flex; gap:20px; flex-wrap:wrap; align-items:flex-start; }
.agent-photo-status { font-size:0.82rem; padding:6px 10px; border-radius:6px; text-align:center; }
.agent-photo-status.is-ok { background:#ecfdf5; color:#047857; }
.agent-photo-status.is-err { background:#fef2f2; color:#b91c1c; }
.agent-photo-preview-wrap { flex:0 0 auto; }
.agent-photo-preview { width:120px; height:120px; border-radius:50%; object-fit:cover; border:3px solid #e8f5e9; display:block; background:#fff; }
.agent-photo-placeholder { width:120px; height:120px; border-radius:50%; background:#e5e7eb; color:#6b7280; display:flex; align-items:center; justify-content:center; font-size:0.82rem; text-align:center; padding:8px; }
.agent-photo-controls { flex:1; min-width:220px; }
.agent-photo-upload-btn { display:inline-block; padding:8px 14px; background:#2c3e50; color:#fff; border-radius:8px; font-size:0.86rem; font-weight:600; cursor:pointer; }
.agent-photo-upload-btn input[type=file] { display:none; }
.agent-photo-hint { margin:8px 0 0; font-size:0.78rem; color:#6b7280; }
.agent-photo-remove { display:block; margin-top:10px; font-size:0.85rem; color:#b91c1c; }
.agent-photo-url-row { margin-top:12px; }
.agent-photo-url-row label { display:block; font-size:0.78rem; color:#6b7280; margin-bottom:4px; }
.agent-photo-url-row input { width:100%; padding:8px; border:1px solid #d1d5db; border-radius:8px; box-sizing:border-box; }
.agent-thumb-cell { width:52px; }
.agent-thumb { width:40px; height:40px; border-radius:50%; object-fit:cover; border:1px solid #e5e7eb; }
.agent-thumb-empty { color:#9ca3af; font-size:0.85rem; }
.agent-actions-cell { white-space:nowrap; }
.filter-batch-bar { margin-bottom:14px; padding:14px 16px; background:#eff6ff; border:1px solid #bfdbfe; border-radius:10px; }
.filter-batch-title { font-size:0.92rem; font-weight:600; color:#1e40af; margin-bottom:10px; }
.filter-batch-count { font-weight:700; }
.filter-batch-actions { display:flex; flex-wrap:wrap; gap:8px; }
.page-batch-bar { margin-bottom:14px; padding:12px 16px; background:#f8fafc; border:1px solid #e5e7eb; border-radius:10px; }
.page-batch-title { font-size:0.88rem; font-weight:600; color:#374151; margin-bottom:8px; }
.page-batch-hint { font-weight:400; color:#6b7280; font-size:0.82rem; }
.page-batch-actions { display:flex; flex-wrap:wrap; gap:8px; }
