.contacts-heading h1{margin-top:0}.contacts-heading-actions,.contacts-summary,.contacts-toolbar,.contacts-pagination,.contacts-modal-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.contacts-heading-actions{flex-shrink:0}.contacts-workspace{background:var(--white,#fff);border:1px solid var(--line);border-radius:12px;overflow:hidden}.contacts-summary{padding:20px 24px;border-bottom:1px solid var(--line);font-size:12px;color:#57645b;gap:20px}.contacts-summary strong{font-size:17px;color:var(--ink)}.contacts-complete{margin-left:auto;color:var(--green)}.contacts-missing-link{color:#6c5121;text-decoration:underline;text-underline-offset:4px;margin-left:auto}.contacts-toolbar{padding:20px 24px;gap:12px 18px;align-items:flex-end}.contacts-search,.contacts-sort{display:flex;flex-direction:column;gap:7px;font-size:12px;color:#57645b}.contacts-search{flex:1;min-width:220px;max-width:360px}.contacts-search input,.contacts-sort select{height:40px;min-height:40px;font-size:13px;padding:8px 12px}.contacts-filters{display:flex;gap:16px;align-self:flex-end;min-height:40px}.contacts-filters button{border-bottom:2px solid transparent;padding:9px 0;color:#57645b;font-size:12px}.contacts-filters button[aria-pressed=true]{border-bottom-color:var(--green);color:var(--green);font-weight:600}.contacts-filters span{font-variant-numeric:tabular-nums;margin-left:4px}.contacts-sort{margin-left:auto}.contacts-table-wrap{overflow-x:auto}.contacts-table{border-collapse:collapse;width:100%;text-align:left;table-layout:fixed}.contacts-table th{background:var(--soft-green);font-size:12px;font-weight:500;color:#57645b;padding:12px 24px;border-block:1px solid var(--line)}.contacts-table th:nth-child(1){width:27%}.contacts-table th:nth-child(2){width:28%}.contacts-table th:nth-child(3){width:20%}.contacts-table th:nth-child(4){width:25%}.contacts-table td{padding:14px 24px;border-bottom:1px solid var(--line);font-size:13px;vertical-align:middle;overflow-wrap:anywhere}.contacts-table tr:last-child td{border-bottom:0}.contacts-table tbody tr:hover{background:#f8faf6}.contact-name{font-weight:600;color:var(--ink)}.contact-name-missing{color:#6c5121;font-weight:400}.contact-phone{font-variant-numeric:tabular-nums;white-space:nowrap;letter-spacing:.02em}.contact-status{font-size:11px;color:#57645b}.contact-status.is-missing{color:#6c5121;background:#faf5e8;padding:4px 8px;border-radius:5px}.contact-actions button{color:var(--green);font-size:12px;padding:6px 0;min-height:30px;text-decoration:underline;text-underline-offset:4px;margin-right:18px;white-space:nowrap}.contact-actions .contact-remove{color:#6c766d;text-decoration:none}.contact-actions .contact-remove:hover{color:var(--red);text-decoration:underline}.contacts-pagination{padding:16px 24px;border-top:1px solid var(--line);color:#57645b;font-size:12px;justify-content:space-between}.contacts-pagination>label{margin-left:auto;display:flex;gap:8px;align-items:center}.contacts-pagination select{min-height:36px;padding:5px 10px}.contacts-pagination>div{display:flex;align-items:center;gap:12px;margin-left:12px}.contacts-pagination button{min-height:36px;padding:6px 12px}.contacts-workspace button:disabled{opacity:.45;cursor:not-allowed}.contacts-note{font-size:12px;color:#57645b;line-height:1.8;margin:16px 0;max-width:75ch}.contacts-empty{text-align:center;padding:40px 24px}.contacts-empty strong{font-size:17px;font-weight:500}.contacts-empty p{font-size:12px;color:#57645b;margin:10px 0 18px}.contacts-file-label{margin:14px 0}.contacts-import-preview{max-height:340px;overflow:auto;border:1px solid var(--line);border-radius:8px}.contacts-import-preview th,.contacts-import-preview td{padding:10px 14px;width:auto!important}.contacts-import-preview small{display:block;color:#6c5121;margin-top:5px;line-height:1.7}.contacts-import-counts{font-size:14px;margin-bottom:16px}.contacts-modal-actions{justify-content:flex-end;margin-top:18px}.contacts-workspace :is(input,select,button):focus-visible{outline:2px solid var(--green);outline-offset:3px}.contacts-workspace input{caret-color:var(--green)}.contacts-workspace ::selection{color:#fff;background:var(--green)}@media(max-width:1200px){.contacts-toolbar{gap:12px}.contacts-search{max-width:none;flex-basis:250px}.contacts-table :is(th,td){padding-inline:18px}.contact-actions button{margin-right:12px}.contacts-sort{margin-left:0}}@media print{.contacts-heading-actions,.contacts-toolbar,.contacts-pagination,.contact-actions,.contacts-table th:last-child{display:none!important}.contacts-workspace{border:0}.contacts-table th,.contacts-table td{font-size:11px;padding:8px}.contacts-note{display:none}}

.contacts-workspace .contacts-table{min-width:900px;table-layout:auto}.contacts-workspace .contacts-table th{width:auto}.contact-balance{text-align:right;font-variant-numeric:tabular-nums;white-space:nowrap}.contact-actions{min-width:200px}.contacts-wallet-history{max-height:380px;overflow:auto}.contacts-wallet-history article{padding:14px 0;border-bottom:1px solid var(--line)}.contacts-wallet-history p{font-size:12px;overflow-wrap:anywhere;margin:6px 0}.contacts-wallet-history strong{color:var(--green);font-variant-numeric:tabular-nums}
/* 用户管理 redesign (2026-10-12): filter tabs with counts, status chips, live import preview, recharge options. */
.ct-tabs{display:flex;gap:6px;align-self:flex-end;padding-bottom:2px}
.ct-tabs button{min-height:36px;padding:4px 14px;border:1px solid var(--bd-line);border-radius:18px;background:#fff;color:var(--bd-ink);font-size:12px}
.ct-tabs button span{font-variant-numeric:tabular-nums;opacity:.8}
.ct-tabs .ct-tab-warn{border-color:var(--bd-notice-line);background:var(--bd-pending-bg);color:var(--bd-pending-ink)}
.ct-tabs button[aria-pressed="true"]{border-color:var(--bd-brand);background:var(--bd-brand);color:#fff}
.ct-toolbar-end{margin-left:auto;display:flex;gap:12px}
.contact-name-missing{color:var(--bd-muted);font-weight:400}
.ct-chip{display:inline-block;padding:2px 6px;border-radius:4px;font-size:11px;white-space:nowrap}
.ct-chip.is-ok{background:var(--bd-brand-soft);color:var(--bd-brand)}
.ct-chip.is-pending{background:var(--bd-pending-bg);color:var(--bd-pending-ink)}
.ct-chip.is-neutral{background:var(--bd-neutral-bg);color:var(--bd-neutral-ink)}
.ct-chip.is-bad{background:var(--bd-message-bg);color:var(--bd-message-ink)}
.admin-body .modal.ct-import-modal{max-width:1040px;width:min(1040px,calc(100vw - 40px))}
.ct-import{display:grid;grid-template-columns:minmax(0,5fr) minmax(0,7fr);gap:20px;align-items:start}
.ct-import-input{display:flex;flex-direction:column;gap:10px}
.ct-import-input textarea{width:100%;box-sizing:border-box;font-family:var(--bd-mono);font-size:12px;line-height:1.7}
.ct-import-counts{display:flex;flex-wrap:wrap;gap:8px;margin-bottom:10px;font-size:12px}
.ct-import-counts span{padding:2px 10px;border-radius:12px}
.ct-import-counts .is-ok{background:var(--bd-brand-soft);color:var(--bd-brand)}
.ct-import-counts .is-neutral{background:var(--bd-neutral-bg);color:var(--bd-neutral-ink)}
.ct-import-counts .is-bad{background:var(--bd-message-bg);color:var(--bd-message-ink)}
.ct-import-table{max-height:360px;overflow:auto;border:1px solid var(--bd-line);border-radius:8px}
.ct-import-table .contacts-table{min-width:0;font-size:12px}
.ct-import-table td small{display:block;margin-top:2px;color:var(--bd-muted);font-size:11px}
.ct-import-table .is-bad-row td{background:#fff8f5}
.ct-import-empty{padding:40px 16px;border:1px dashed var(--bd-line);border-radius:8px;color:var(--bd-muted);font-size:12px;text-align:center}
.ct-import-foot{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:12px;margin-top:16px}
.ct-import-foot .wb-dialog-actions{margin-top:0}
.ct-options{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin-bottom:8px}
.ct-options label{cursor:pointer}
.ct-options input{position:absolute;opacity:0;pointer-events:none}
.ct-options span{display:flex;align-items:center;justify-content:center;min-height:36px;box-sizing:border-box;padding:4px 8px;border:1px solid var(--bd-line);border-radius:8px;background:#fff;font-size:12px}
.ct-options input:checked+span{border-color:var(--bd-brand);background:var(--bd-brand-soft);color:var(--bd-brand);font-weight:600}
.ct-options input:focus-visible+span{outline:2px solid var(--bd-gold);outline-offset:2px}
#user-recharge-form input[name="amount"],#user-recharge-form input[name="reference"]{width:100%;box-sizing:border-box}
.ct-balance{display:flex;align-items:baseline;justify-content:space-between;margin:12px 0;padding:12px 14px;border-radius:10px;background:var(--bd-sunken);font-size:13px}
.ct-balance strong{font-size:20px;font-variant-numeric:tabular-nums}
.ct-balance-after{background:var(--bd-brand-soft);color:var(--bd-brand)}
.ct-subhead{margin:16px 0 8px;font-size:13px;font-weight:600}
.ct-wallet-list{max-height:320px;overflow:auto}
.ct-wallet-row{display:grid;grid-template-columns:1fr auto;gap:2px 12px;padding:10px 0;border-top:1px solid var(--bd-line);font-size:12px}
.ct-wallet-row strong{color:var(--bd-brand);font-variant-numeric:tabular-nums}
.ct-wallet-row small{grid-column:1/-1;color:var(--bd-muted);font-size:11px}
@media (max-width:900px){.ct-import{grid-template-columns:1fr}.ct-options{grid-template-columns:repeat(2,minmax(0,1fr))}}
