:root {
  font-family: Inter, "Microsoft YaHei", "PingFang SC", system-ui, -apple-system, sans-serif;
  color: #172033;
  background: #f3f6fb;
  font-synthesis: none;
  --primary: #316cf4;
  --primary-dark: #2358d5;
  --primary-soft: #edf3ff;
  --navy: #101b36;
  --muted: #76839b;
  --line: #e5eaf2;
  --surface: #fff;
  --danger: #e5484d;
  --success: #20a66a;
  --radius: 14px;
  --shadow: 0 8px 28px rgba(31, 49, 86, .08);
}

* { box-sizing: border-box; }
html, body { margin: 0; min-height: 100%; }
body { background: #f3f6fb; color: #172033; font-size: 14px; }
a { color: var(--primary); text-decoration: none; transition: .18s ease; }
a:hover { color: var(--primary-dark); }

/* 平台主框架 */
.admin-shell { display: grid; grid-template-columns: 248px minmax(0, 1fr); min-height: 100vh; }
.admin-sidebar { position: fixed; inset: 0 auto 0 0; z-index: 20; width: 248px; overflow-y: auto; background: linear-gradient(180deg, #142244 0%, #101a34 100%); color: #fff; box-shadow: 8px 0 30px rgba(15, 28, 57, .12); }
.brand { display: flex; align-items: center; gap: 12px; height: 76px; padding: 0 22px; border-bottom: 1px solid rgba(255,255,255,.08); }
.brand-mark { display: grid; place-items: center; width: 38px; height: 38px; border-radius: 12px; background: linear-gradient(135deg,#4d88ff,#746cf7); box-shadow: 0 8px 18px rgba(62,112,255,.35); font-size: 20px; font-weight: 800; }
.brand-copy strong { display:block; font-size: 16px; letter-spacing: .5px; }
.brand-copy span { display:block; margin-top:4px; color:#8fa0c3; font-size:12px; }
.sidebar-menu { padding: 16px 12px 28px; }
.menu-label { padding: 14px 12px 7px; color: #7184aa; font-size: 11px; font-weight: 700; letter-spacing: 1.4px; }
.sidebar-menu a { display:flex; align-items:center; gap:11px; min-height:42px; margin:3px 0; padding:0 13px; border-radius:10px; color:#b9c6df; font-size:14px; }
.sidebar-menu a:hover { color:#fff; background:rgba(255,255,255,.07); }
.sidebar-menu a.active { color:#fff; background:linear-gradient(90deg,#346ff5,#4d82f4); box-shadow:0 8px 18px rgba(39,98,235,.3); }
.menu-icon { width:25px; text-align:center; font-size:16px; opacity:.9; }
.menu-group { margin:3px 0; }
.menu-group-toggle { width:100%; display:flex; align-items:center; justify-content:space-between; gap:12px; min-height:48px; padding:0 8px 0 13px; border:0; border-radius:11px; background:transparent; color:#b9c6df; cursor:pointer; font:inherit; text-align:left; }
.menu-group-toggle:hover { color:#fff; background:rgba(255,255,255,.07); box-shadow:none; transform:none; }
.menu-group-toggle.active { color:#fff; background:rgba(255,255,255,.07); }
.menu-group-main { display:flex; align-items:center; gap:11px; min-width:0; }
.menu-group-arrow { position:relative; display:inline-flex; align-items:center; justify-content:center; width:30px; height:30px; flex:0 0 30px; border:1px solid rgba(151,173,216,.16); border-radius:9px; background:rgba(255,255,255,.055); transition:background .18s ease,border-color .18s ease; }
.menu-group-arrow::before { content:""; width:7px; height:7px; margin-top:-4px; border-right:2px solid #aebbd4; border-bottom:2px solid #aebbd4; transform:rotate(45deg); transition:transform .2s ease,border-color .18s ease,margin .2s ease; }
.menu-group-toggle:hover .menu-group-arrow,.menu-group-toggle.active .menu-group-arrow { border-color:rgba(164,187,233,.3); background:rgba(255,255,255,.1); }
.menu-group-toggle:hover .menu-group-arrow::before,.menu-group-toggle.active .menu-group-arrow::before { border-color:#fff; }
.menu-group.open .menu-group-arrow::before { margin-top:4px; transform:rotate(225deg); border-color:#fff; }
.menu-group-body { display:none; padding:4px 0 2px 16px; margin-left:10px; border-left:1px solid rgba(255,255,255,.08); }
.menu-group.open .menu-group-body { display:block; }
.menu-group-body a { min-height:38px; margin:5px 0; padding:0 12px 0 14px; border-radius:9px; color:#c8d3e8; font-size:13px; }
.menu-group-body a .menu-icon { width:18px; font-size:11px; opacity:.7; }
.admin-workspace { grid-column:2; min-width:0; }
.admin-topbar { position:sticky; top:0; z-index:15; display:flex; align-items:center; justify-content:space-between; height:76px; padding:0 28px; background:rgba(255,255,255,.92); border-bottom:1px solid var(--line); backdrop-filter:blur(12px); }
.topbar-left { display:flex; align-items:center; gap:14px; }
.sidebar-toggle { display:none; padding:8px 10px !important; background:#edf2fa !important; color:#31415f !important; }
.page-context small { display:block; color:var(--muted); margin-bottom:3px; }
.page-context strong { font-size:18px; }
.admin-user { display:flex; align-items:center; gap:11px; }
.admin-avatar { display:grid; place-items:center; width:36px; height:36px; border-radius:50%; color:#fff; background:linear-gradient(135deg,#346ff5,#7a68eb); font-weight:700; }
.admin-user-meta { line-height:1.3; }
.admin-user-meta small { display:block; color:var(--muted); }
.logout-btn { margin-left:9px; background:#f1f4f9 !important; color:#536079 !important; }
.admin-stage { height:calc(100vh - 76px); padding:20px 24px 24px; }
.admin-frame { display:block; width:100%; height:100%; border:0; border-radius:16px; background:#f3f6fb; }
.sidebar-mask { display:none; }

/* 通用内容页 */
.top { height:64px; padding:0 28px; background:var(--primary); color:#fff; display:flex; align-items:center; justify-content:space-between; }
.layout { display:grid; grid-template-columns:210px 1fr; min-height:calc(100vh - 64px); }
.layout nav { background:#fff; padding:18px; border-right:1px solid var(--line); }
.layout nav a { display:block; padding:11px 14px; color:#334155; border-radius:8px; margin:4px 0; }
.layout nav a:hover { background:var(--primary-soft); color:var(--primary); }
main, .page { padding:24px; }
.page { max-width:1600px; margin:0 auto; }
.page > a:first-child { display:inline-flex; align-items:center; margin-bottom:14px; color:var(--muted); }
.page > a:first-child::before { content:"←"; margin-right:6px; }
h1,h2,h3 { margin-top:0; color:#172033; }
h2 { font-size:21px; }
.card { background:var(--surface); border:1px solid rgba(226,232,241,.9); border-radius:var(--radius); padding:20px; box-shadow:var(--shadow); margin-bottom:18px; overflow:hidden; }
.card > h2:first-child,.card > h3:first-child { margin-bottom:18px; }
.cards { display:grid; grid-template-columns:repeat(4,minmax(0,1fr)); gap:16px; }
.cards .card { position:relative; min-height:142px; padding:22px; color:var(--muted); box-shadow:0 5px 20px rgba(39,60,104,.06); }
.cards .card::after { content:""; position:absolute; right:-20px; bottom:-34px; width:100px; height:100px; border-radius:50%; background:var(--primary-soft); }
.metric { position:relative; z-index:1; margin-top:16px; color:#172033; font-size:34px; line-height:1; font-weight:750; }
.hint { color:var(--muted); font-size:13px; line-height:1.7; }
.message { min-height:24px; color:var(--primary); }
.timestamp { color:var(--muted); font-size:12px; }

button,.btn { display:inline-flex; align-items:center; justify-content:center; min-height:38px; border:0; border-radius:8px; padding:8px 16px; background:var(--primary); color:#fff; cursor:pointer; font:inherit; line-height:1; transition:.18s ease; }
button:hover,.btn:hover { color:#fff; background:var(--primary-dark); transform:translateY(-1px); box-shadow:0 5px 14px rgba(49,108,244,.22); }
button:disabled,.btn:disabled { opacity:.55; cursor:not-allowed; transform:none; }
.danger { background:var(--danger) !important; }
.muted { background:#66758e !important; }

input,select,textarea { min-height:40px; max-width:100%; margin:5px; padding:9px 12px; border:1px solid #d8dfeb; border-radius:8px; outline:0; background:#fff; color:#243047; font:inherit; transition:.18s ease; }
textarea { min-height:112px; resize:vertical; }
input:focus,select:focus,textarea:focus { border-color:#7da4ff; box-shadow:0 0 0 3px rgba(49,108,244,.11); }
input::placeholder,textarea::placeholder { color:#a2adbf; }
label { color:#56637a; }
form > label { display:block; margin:12px 0 4px; }
form > label input,form > label select,form > label textarea { display:block; width:100%; margin:7px 0 0; }

table { width:100%; border-collapse:separate; border-spacing:0; background:#fff; }
th,td { padding:13px 12px; border-bottom:1px solid #edf0f5; text-align:left; vertical-align:middle; }
th { background:#f7f9fc; color:#66748d; font-size:13px; font-weight:650; white-space:nowrap; }
tbody tr { transition:.15s ease; }
tbody tr:hover { background:#f8faff; }
tbody tr:last-child td { border-bottom:0; }
td button,td .btn { min-height:32px; padding:6px 10px; }
.thumb { width:90px; height:70px; object-fit:cover; border-radius:8px; border:1px solid var(--line); }
.page-heading { display:flex; align-items:flex-start; justify-content:space-between; gap:16px; margin-bottom:18px; flex-wrap:wrap; }
.page-heading h1 { margin:0 0 6px; font-size:24px; }
.page-heading p { margin:0; color:var(--muted); }
.page-heading .action-group { margin-left:auto; flex-shrink:0; }
.page-heading .action-group .action-link,
.page-heading .action-group .btn,
.page-heading .action-group button { flex-shrink:0; }
.toolbar { display:flex; flex-wrap:wrap; align-items:center; gap:10px; margin-bottom:18px; }
.toolbar input,.toolbar select { margin:0; }
.toolbar .toolbar-spacer { flex:1; }
.table-card { padding:0; overflow:auto; }
.table-card .table-meta { display:flex; justify-content:space-between; align-items:center; padding:16px 18px; border-bottom:1px solid var(--line); color:var(--muted); }
.cell-title { max-width:420px; color:#243047; font-weight:600; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.cell-subtitle { max-width:420px; margin-top:4px; color:var(--muted); font-size:12px; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }
.status-badge { display:inline-flex; align-items:center; gap:6px; padding:5px 9px; border-radius:20px; font-size:12px; font-weight:600; white-space:nowrap; }
.status-badge i { width:6px; height:6px; border-radius:50%; background:currentColor; }
.status-badge.is-success { color:#17885a; background:#e9f8f1; }
.status-badge.is-muted { color:#78869d; background:#eef1f5; }
.status-badge.is-warning { color:#b87416; background:#fff4dc; }
.action-group { display:flex; flex-wrap:wrap; gap:7px; white-space:nowrap; }
.action-link { min-height:30px; padding:6px 9px; border-radius:7px; background:var(--primary-soft); color:var(--primary); border:0; cursor:pointer; }
.action-link:hover { background:#dfe9ff; color:var(--primary-dark); transform:none; box-shadow:none; }
.action-link.danger-link { color:var(--danger); background:#fff0f0; }
.empty-state { display:flex; flex-direction:column; align-items:center; gap:6px; padding:48px 20px; color:var(--muted); }
.empty-state strong { color:#526079; font-size:15px; }
.table-loading { padding:45px; text-align:center; color:var(--muted); }
.detail-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:14px 24px; }
.detail-item { padding:12px 0; border-bottom:1px solid var(--line); }
.detail-item label { display:block; margin-bottom:6px; color:var(--muted); font-size:12px; }
.detail-item div { color:#26324a; line-height:1.7; word-break:break-word; }
.admin-toast { position:fixed; right:28px; top:24px; z-index:1000; padding:12px 18px; border-radius:10px; color:#fff; background:#25344f; box-shadow:0 10px 30px rgba(20,35,64,.22); opacity:0; transform:translateY(-8px); transition:.2s ease; }
.admin-toast.success { background:#1b9a63; }.admin-toast.error { background:#d8474c; }
.admin-toast.show { opacity:1; transform:translateY(0); }
.text-clamp { max-width:480px; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; line-height:1.6; }

/* 题库工作台 */
.question-page { padding-top:22px; }
.question-heading { align-items:center; margin-bottom:16px; }
.question-heading h1 { font-size:26px; letter-spacing:-.4px; }
.question-primary-actions { gap:10px; }
.question-primary-actions button { min-height:42px; padding:9px 17px; font-weight:650; }
.question-primary-actions button span { margin-right:3px; font-size:17px; }
.outline-button { color:var(--primary); background:#fff; border:1px solid #cbd9f8; }
.outline-button:hover { color:var(--primary-dark); background:var(--primary-soft); border-color:#9bb8f8; }
.ghost-button { color:#536079; background:#f1f4f9; }
.ghost-button:hover { color:#34425d; background:#e7ecf4; box-shadow:none; }
.soft-button { color:#40506c; background:#edf1f7; }
.soft-button:hover { color:#20314f; background:#e1e7f0; box-shadow:none; }
.danger-soft { color:var(--danger); background:#fff0f0; }
.danger-soft:hover { color:#c9363c; background:#ffe4e5; }
.question-command-card { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:14px 16px; margin-bottom:16px; overflow:visible; }
.question-search,.question-batch-actions { display:flex; align-items:center; gap:9px; }
.question-search { min-width:0; flex:1; }
.question-search input { width:min(440px,45vw); min-height:42px; margin:0; }
.question-batch-actions { flex-shrink:0; }
.question-batch-actions button { min-height:36px; padding:7px 12px; }
.selection-count { min-width:100px; color:var(--muted); font-size:13px; text-align:right; }
.question-table-card { border-radius:16px; }
.question-table-card th:first-child,.question-table-card td:first-child { width:44px; text-align:center; }
.question-table-card input[type=checkbox] { width:16px; height:16px; min-height:0; margin:0; accent-color:var(--primary); cursor:pointer; }
.question-pagination { border-top:1px solid var(--line); border-bottom:0 !important; }

/* 页内弹窗 */
.admin-dialog { width:min(780px,calc(100vw - 32px)); max-height:calc(100vh - 42px); padding:0; border:0; border-radius:18px; color:#172033; background:#fff; box-shadow:0 28px 80px rgba(17,31,62,.28); overflow:hidden; }
.admin-dialog::backdrop { background:rgba(12,22,43,.52); backdrop-filter:blur(3px); }
.admin-dialog form { display:flex; flex-direction:column; max-height:calc(100vh - 42px); }
.dialog-header { display:flex; align-items:flex-start; justify-content:space-between; gap:20px; padding:21px 24px 18px; border-bottom:1px solid var(--line); }
.dialog-header h2 { margin:0 0 6px; font-size:21px; }
.dialog-header p { margin:0; color:var(--muted); font-size:13px; }
.dialog-close { width:34px; min-height:34px; padding:0; border-radius:9px; color:#7a879d; background:#f2f5f9; font-size:22px; line-height:1; }
.dialog-close:hover { color:#26344d; background:#e9eef5; box-shadow:none; transform:none; }
.dialog-body { padding:20px 24px; overflow-y:auto; }
.dialog-footer { display:flex; justify-content:flex-end; gap:10px; padding:15px 24px; border-top:1px solid var(--line); background:#fafbfd; }
.dialog-footer button { min-width:96px; }
.form-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:16px 20px; }
.form-grid label,.upload-field { display:flex; flex-direction:column; gap:7px; color:#47556e; font-weight:600; }
.form-grid label em,.upload-field em { color:var(--danger); font-style:normal; }
.form-label { display:flex; align-items:center; gap:4px; min-height:20px; line-height:20px; white-space:nowrap; }
.form-label em { display:inline; line-height:inherit; }
.form-grid input,.form-grid select,.form-grid textarea,.upload-field select { width:100%; margin:0; font-weight:400; }
.form-grid label small { margin-top:-2px; color:var(--muted); font-size:12px; font-weight:400; }
.form-grid textarea { min-height:92px; }
.form-grid .form-span-2 { grid-column:1/-1; }
.question-dialog.is-readonly input:not([type=hidden]),.question-dialog.is-readonly select,.question-dialog.is-readonly textarea { color:#42506a; background:#f5f7fa; border-color:#e3e8f0; cursor:default; }
.question-dialog.is-readonly textarea { resize:none; }
.upload-dialog { width:min(620px,calc(100vw - 32px)); }
.compact-dialog { width:min(620px,calc(100vw - 32px)); }
.compact-form-grid { align-items:start; }
.wide-dialog { width:min(1180px,calc(100vw - 32px)); }
.wide-dialog .dialog-shell { display:flex; flex-direction:column; max-height:calc(100vh - 42px); }
.user-toolbar-card { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:14px 16px; overflow:visible; }
.user-search { display:flex; align-items:center; gap:9px; flex:1; }
.user-search input { width:min(420px,45vw); margin:0; }
.user-total { flex-shrink:0; color:var(--muted); }
.company-filter-card { padding:16px; overflow:visible; }
.company-filter-grid { display:grid; grid-template-columns:minmax(180px,1.25fr) minmax(150px,1fr) minmax(150px,.9fr) minmax(150px,.9fr) minmax(140px,.8fr); gap:12px; align-items:end; }
.filter-field { display:flex; flex-direction:column; gap:7px; min-width:0; color:#637089; font-size:12px; font-weight:650; }
.filter-field input,.filter-field select { width:100%; min-height:40px; margin:0; color:#26324a; font-size:14px; font-weight:400; }
.company-filter-actions { display:flex; align-items:center; justify-content:space-between; gap:14px; margin-top:14px; padding-top:14px; border-top:1px solid var(--line); }
.user-filter-grid { display:grid; grid-template-columns:minmax(220px,1.4fr) minmax(180px,1fr) minmax(150px,.8fr); gap:12px; align-items:end; }
.user-filter-grid.has-company-filter { grid-template-columns:minmax(220px,1.35fr) minmax(160px,.9fr) minmax(140px,.75fr) minmax(180px,1fr); }
.status-toggle { display:inline-flex; align-items:center; gap:8px; min-height:32px; padding:4px 8px 4px 5px; border:0; border-radius:18px; background:#eef1f5; color:#76849a; box-shadow:none; cursor:pointer; }
.status-toggle:hover { box-shadow:none; transform:none; }
.status-toggle-track { position:relative; display:inline-block; width:34px; height:20px; border-radius:12px; background:#abb5c4; transition:.18s ease; }
.status-toggle-track i { position:absolute; left:3px; top:3px; width:14px; height:14px; border-radius:50%; background:#fff; box-shadow:0 1px 4px rgba(25,38,63,.25); transition:.18s ease; }
.status-toggle b { font-size:12px; font-weight:650; white-space:nowrap; }
.status-toggle.is-on { color:#15865a; background:#e9f8f1; }
.status-toggle.is-on .status-toggle-track { background:#24ac73; }
.status-toggle.is-on .status-toggle-track i { transform:translateX(14px); }
.status-toggle:disabled { opacity:.55; cursor:wait; }
.user-table-card { border-radius:16px; }
.user-cell { display:flex; align-items:center; gap:10px; min-width:150px; }
.user-avatar-image,.user-avatar-fallback { width:36px; height:36px; flex:0 0 36px; border-radius:50%; }
.user-avatar-image { object-fit:cover; border:1px solid var(--line); }
.user-avatar-fallback { display:grid; place-items:center; color:#fff; background:linear-gradient(135deg,#4d83f6,#776deb); font-weight:700; }
.company-logo { border-radius:10px; }
.company-logo-fallback { border-radius:10px; background:linear-gradient(135deg,#3876e8,#39a1c8); }
.balance-value { display:inline-flex; min-width:42px; justify-content:center; padding:5px 9px; border-radius:16px; color:#815c0c; background:#fff5d9; font-weight:650; }
.pagination-bar { display:grid; grid-template-columns:1fr auto 1fr; align-items:center; gap:14px; padding:15px 18px; border-top:1px solid var(--line); }
.page-size-control { display:flex; align-items:center; gap:8px; color:var(--muted); }
.page-size-control select { min-height:34px; margin:0; padding:6px 28px 6px 10px; }
.pagination { display:flex; align-items:center; justify-content:center; gap:6px; }
.page-button { min-width:34px; min-height:34px; padding:6px 9px; color:#536079; background:#f2f5f9; box-shadow:none; }
.page-button:hover { color:var(--primary); background:#e8efff; box-shadow:none; transform:none; }
.page-button.active { color:#fff; background:var(--primary); }
.page-button:disabled { color:#aeb7c5; background:#f6f7f9; }
.page-ellipsis { padding:0 2px; color:#8c98ab; }
.page-jump { justify-self:end; color:var(--muted); }
.answer-dialog-body { padding:16px 20px; }
.answer-summary { display:flex; justify-content:space-between; margin-bottom:12px; color:var(--muted); }
.answer-table-wrap { max-height:55vh; overflow:auto; border:1px solid var(--line); border-radius:12px; }
.answer-table-wrap table { min-width:1040px; }
.answer-text { min-width:150px; max-width:260px; max-height:76px; overflow:auto; color:#3e4b63; line-height:1.55; white-space:normal; word-break:break-word; }
.answer-audio { width:150px; height:32px; }
.answer-dialog-footer { align-items:center; justify-content:space-between; }
.user-detail-dialog { width:min(760px,calc(100vw - 32px)); }
.user-detail-profile { display:flex; align-items:center; gap:14px; margin-bottom:20px; padding:15px 16px; border:1px solid #dce5f4; border-radius:13px; background:linear-gradient(135deg,#f7faff,#f2f6ff); }
.user-detail-profile .detail-avatar { width:48px; height:48px; flex:0 0 48px; border-radius:14px; font-size:18px; overflow:hidden; }
.user-detail-profile .detail-avatar img { width:100%; height:100%; object-fit:cover; }
.user-detail-profile strong,.user-detail-profile span { display:block; }
.user-detail-profile strong { margin-bottom:5px; color:#1c2940; font-size:17px; }
.user-detail-profile span { color:var(--muted); font-size:12px; }
.user-detail-grid input[readonly] { color:#42506a; background:#f5f7fa; border-color:#e3e8f0; cursor:default; }
.answer-filter-grid { display:grid; grid-template-columns:minmax(220px,1.2fr) minmax(220px,1fr); gap:12px; align-items:end; max-width:720px; }
.answer-list-card table { min-width:1320px; }
.answer-record-text { min-width:160px; max-width:280px; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; color:#3e4b63; line-height:1.55; white-space:normal; word-break:break-word; }
.feedback-filter-grid { display:grid; grid-template-columns:minmax(240px,1.3fr) minmax(180px,1fr) minmax(160px,.8fr); gap:12px; align-items:end; }
.feedback-table-card table { min-width:1180px; }
.feedback-type-badge { display:inline-flex; padding:5px 9px; border-radius:16px; color:#3c68c5; background:#edf3ff; font-size:12px; font-weight:650; white-space:nowrap; }
.feedback-content-cell { min-width:180px; max-width:340px; display:-webkit-box; -webkit-box-orient:vertical; -webkit-line-clamp:2; overflow:hidden; color:#3e4b63; line-height:1.6; white-space:normal; word-break:break-word; }
.customer-table-card table { min-width:900px; }
.customer-avatar,.customer-qr { display:block; object-fit:cover; border:1px solid var(--line); background:#f5f7fa; }
.customer-avatar { width:46px; height:46px; border-radius:13px; }
.customer-qr { width:72px; height:72px; padding:3px; border-radius:10px; object-fit:contain; background:#fff; }
.customer-avatar.is-error,.customer-qr.is-error { visibility:hidden; }
.customer-image-empty { display:grid; place-items:center; width:46px; height:46px; border-radius:10px; color:#9aa6b8; background:#f2f4f8; }
.customer-dialog { width:min(720px,calc(100vw - 32px)); }
.customer-preview-row { display:flex; justify-content:center; gap:44px; margin-bottom:22px; padding:17px; border:1px solid #dfe6f2; border-radius:13px; background:#f8faff; }
.customer-preview-item { display:flex; flex-direction:column; align-items:center; gap:9px; color:#65728a; font-size:12px; font-weight:650; }
.customer-image-preview { position:relative; display:grid; place-items:center; width:92px; height:92px; overflow:hidden; border:1px dashed #b8c6df; border-radius:13px; color:#9aa6b8; background:#fff; }
.customer-image-preview.avatar-preview { border-radius:50%; }
.customer-image-preview img { display:none; width:100%; height:100%; object-fit:contain; background:#fff; }
.customer-image-preview.avatar-preview img { object-fit:cover; }
.customer-image-preview.has-image img { display:block; }
.customer-image-preview.has-image b { display:none; }
.customer-image-preview b { font-size:12px; font-weight:500; }
.customer-upload-field { display:flex; flex-direction:column; gap:7px; color:#47556e; font-weight:600; }
.hidden-file-input { position:absolute; width:1px !important; height:1px; min-height:0 !important; padding:0 !important; opacity:0; pointer-events:none; }
.customer-upload-button { display:flex; align-items:center; justify-content:center; gap:9px; width:100%; min-height:48px; padding:9px 14px; border:1px dashed #aabce2; color:#3769ce; background:#f6f9ff; box-shadow:none; }
.customer-upload-button:hover { border-color:var(--primary); color:var(--primary); background:#edf3ff; box-shadow:none; transform:none; }
.customer-upload-button span { font-size:20px; line-height:1; }
.customer-upload-button b { font-size:13px; }
.customer-upload-field small { color:var(--muted); font-size:12px; font-weight:400; line-height:1.5; }
.region-dialog { width:min(680px,calc(100vw - 32px)); }
.region-table-card table { min-width:940px; }
.region-name-cell { position:relative; }
.pact-dialog { width:min(820px,calc(100vw - 32px)); }
.pact-content-editor { min-height:360px; resize:vertical; line-height:1.75; font-family:inherit; }
.pact-table-card table { min-width:980px; }
.banner-dialog { width:min(760px,calc(100vw - 32px)); }
.banner-table-card table { min-width:900px; }
.banner-list-thumb { width:116px; height:60px; object-fit:cover; border-radius:8px; }
.banner-image-picker { display:grid; grid-template-columns:240px minmax(0,1fr); gap:20px; align-items:center; margin-top:8px; }
.banner-preview { display:flex; align-items:center; justify-content:center; height:138px; overflow:hidden; border:1px dashed #cbd5e1; border-radius:12px; background:#f8fafc; color:#94a3b8; }
.banner-preview img { width:100%; height:100%; object-fit:cover; }
.banner-picker-fields { display:flex; flex-direction:column; gap:12px; min-width:0; }
@media (max-width:680px) { .banner-image-picker { grid-template-columns:1fr; } .banner-preview { height:160px; } }
.config-page { max-width:1180px; padding-bottom:104px; }
.config-heading { align-items:center; }
.config-platform-badge { display:inline-flex; align-items:center; gap:7px; padding:8px 12px; border-radius:20px; color:#3768c8; background:#eaf1ff; font-size:12px; font-weight:650; }
.config-platform-badge i { width:7px; height:7px; border-radius:50%; background:#3972ee; box-shadow:0 0 0 4px rgba(57,114,238,.12); }
.config-section { padding:0; overflow:visible; }
.config-section-heading { display:flex; align-items:center; gap:13px; padding:19px 22px; border-bottom:1px solid var(--line); }
.config-section-heading h2 { margin:0 0 4px; font-size:18px; }
.config-section-heading p { margin:0; color:var(--muted); font-size:12px; }
.config-section-icon { display:grid; place-items:center; width:38px; height:38px; flex:0 0 38px; border-radius:11px; color:#356ce0; background:#eaf1ff; font-size:17px; font-weight:750; }
.config-fields { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px 22px; padding:22px; }
.config-fields.single-column { grid-template-columns:minmax(0,540px); }
.config-field { display:flex; flex-direction:column; gap:7px; min-width:0; color:#47556e; font-weight:650; }
.config-field em { color:var(--danger); font-style:normal; }
.config-field input,.config-field select,.config-field textarea { width:100%; margin:0; font-weight:400; }
.config-field small { color:var(--muted); font-size:12px; font-weight:400; line-height:1.55; }
.config-field.form-span-2,.config-structured-note.form-span-2 { grid-column:1/-1; }
.config-media-grid { display:grid; grid-template-columns:repeat(2,minmax(0,1fr)); gap:18px; padding:22px; }
.config-image-field { display:grid; grid-template-columns:132px minmax(0,1fr); gap:16px; align-items:center; padding:16px; border:1px solid #e1e7f1; border-radius:13px; background:#fafcff; }
.config-image-preview { display:grid; place-items:center; width:112px; height:112px; overflow:hidden; border:1px dashed #b9c7df; border-radius:18px; color:#9aa6b8; background:#fff; }
.config-image-preview.wide { width:132px; border-radius:13px; }
.config-image-preview img { display:none; width:100%; height:100%; object-fit:contain; }
.config-image-preview.has-image img { display:block; }
.config-image-preview.has-image b { display:none; }
.config-image-preview b { font-size:12px; font-weight:500; }
.config-image-controls { display:flex; flex-direction:column; gap:8px; min-width:0; color:#47556e; font-weight:650; }
.config-image-controls input { width:100%; margin:0; font-weight:400; }
.config-image-controls small { color:var(--muted); font-size:12px; font-weight:400; }
.config-input-suffix { display:flex; align-items:stretch; }
.config-input-suffix input { border-radius:8px 0 0 8px; }
.config-input-suffix > span { display:grid; place-items:center; min-width:50px; padding:0 12px; border:1px solid #d8dfeb; border-left:0; border-radius:0 8px 8px 0; color:#6f7c92; background:#f5f7fa; font-weight:500; }
.config-save-bar { position:fixed; left:48px; right:48px; bottom:22px; z-index:9; display:flex; align-items:center; justify-content:space-between; gap:18px; max-width:1132px; margin:0 auto; padding:14px 18px; border:1px solid rgba(218,226,239,.95); border-radius:14px; background:rgba(255,255,255,.94); box-shadow:0 14px 40px rgba(30,48,83,.16); backdrop-filter:blur(12px); }
.config-save-bar strong,.config-save-bar span { display:block; }
.config-save-bar strong { margin-bottom:4px; color:#26334b; }
.config-save-bar span { color:var(--muted); font-size:12px; }
.config-save-bar button { min-width:120px; }
.config-inline-actions { display:flex; justify-content:flex-end; padding:0 22px 22px; }
.config-structured-note { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:16px; border:1px solid #e1e7f1; border-radius:11px; background:#f8faff; }
.config-structured-note span { color:var(--muted); font-size:12px; }
.configured-badge { margin-left:5px; padding:3px 7px; border-radius:12px; color:#17885a; background:#e9f8f1; font-size:11px; font-weight:650; }
.config-share-image { display:grid; grid-template-columns:300px minmax(0,1fr); gap:24px; align-items:center; padding:22px; }
.config-image-preview.share-preview { width:300px; height:168px; border-radius:13px; }
.config-image-preview.share-preview img { object-fit:cover; }
@media (max-width:980px) { .config-save-bar { left:28px; right:28px; } .config-media-grid { grid-template-columns:1fr; } }
@media (max-width:720px) { .config-fields,.config-media-grid { grid-template-columns:1fr; padding:16px; } .config-field.form-span-2,.config-structured-note.form-span-2 { grid-column:auto; } .config-image-field,.config-share-image { grid-template-columns:1fr; } .config-share-image { padding:16px; } .config-image-preview,.config-image-preview.wide,.config-image-preview.share-preview { width:100%; height:150px; } .config-save-bar { left:14px; right:14px; bottom:12px; } .config-save-bar div { display:none; } .config-save-bar button { width:100%; } }
.asset-page { max-width:1500px; }
.asset-heading { align-items:center; }
.asset-workspace { display:grid; grid-template-columns:230px minmax(0,1fr); gap:18px; align-items:start; }
.asset-sidebar { position:sticky; top:0; padding:0; overflow:hidden; }
.asset-sidebar-title { display:flex; align-items:center; justify-content:space-between; min-height:58px; padding:0 16px; border-bottom:1px solid var(--line); }
.asset-icon-button { width:32px; min-height:32px; padding:0; color:#65728a; background:#f0f3f8; box-shadow:none; }
.asset-icon-button:hover { color:var(--primary); background:#e8efff; box-shadow:none; transform:none; }
.asset-group-list { padding:10px; max-height:calc(100vh - 270px); overflow:auto; }
.asset-group-item { display:flex; align-items:center; gap:9px; width:100%; min-height:40px; margin:2px 0; padding:7px 10px 7px calc(10px + var(--depth,0) * 16px); border-radius:9px; color:#58667e; background:transparent; box-shadow:none; text-align:left; }
.asset-group-item:hover { color:#245bd1; background:#f0f5ff; box-shadow:none; transform:none; }
.asset-group-item.active { color:#fff; background:linear-gradient(90deg,#356ff0,#4a82f4); box-shadow:0 7px 16px rgba(49,108,244,.2); }
.asset-group-item b { min-width:0; overflow:hidden; text-overflow:ellipsis; white-space:nowrap; font-size:13px; font-weight:600; }
.asset-folder-icon { flex:0 0 18px; opacity:.75; }
.asset-group-loading,.asset-group-empty { padding:22px 10px; color:var(--muted); font-size:12px; text-align:center; }
.asset-group-actions { display:grid; grid-template-columns:1fr auto; gap:7px; padding:12px; border-top:1px solid var(--line); }
.asset-group-actions[hidden],.asset-pagination[hidden],.asset-picker-tip[hidden] { display:none !important; }
.asset-group-actions button { min-height:34px; padding:7px 10px; }
.asset-main { min-width:0; padding:0; }
.asset-toolbar-card { display:flex; align-items:center; justify-content:space-between; gap:18px; padding:14px 16px; overflow:visible; }
.asset-toolbar-card > div strong,.asset-toolbar-card > div span { display:block; }
.asset-toolbar-card > div strong { margin-bottom:4px; font-size:16px; }
.asset-toolbar-card > div span { color:var(--muted); font-size:12px; }
.asset-search { display:flex; align-items:center; gap:8px; }
.asset-search input { width:min(320px,32vw); margin:0; }
.asset-picker-tip { display:flex; align-items:center; gap:9px; margin-bottom:14px; padding:11px 14px; border:1px solid #cfe0ff; border-radius:11px; color:#48617f; background:#f0f5ff; font-size:12px; }
.asset-picker-tip span { padding:4px 8px; border-radius:14px; color:#fff; background:var(--primary); font-weight:650; }
.asset-grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(210px,1fr)); gap:15px; }
.asset-card { padding:0; margin:0; min-width:0; transition:transform .18s ease,box-shadow .18s ease; }
.asset-card:hover { transform:translateY(-2px); box-shadow:0 13px 30px rgba(31,49,86,.13); }
.asset-card-preview { position:relative; display:grid; place-items:center; height:148px; overflow:hidden; background:linear-gradient(145deg,#f5f7fb,#eef2f8); }
.asset-card-preview > img,.asset-card-preview > video { width:100%; height:100%; object-fit:cover; }
.asset-type-badge { position:absolute; left:10px; top:10px; padding:4px 8px; border-radius:13px; color:#fff; background:rgba(25,38,62,.72); backdrop-filter:blur(5px); font-size:11px; }
.asset-video-mark { position:absolute; display:grid; place-items:center; width:42px; height:42px; border-radius:50%; color:#fff; background:rgba(20,31,51,.65); font-size:16px; }
.asset-file-icon { display:flex; flex-direction:column; align-items:center; gap:7px; }
.asset-file-icon strong { display:grid; place-items:center; width:62px; height:72px; border-radius:9px 9px 15px 9px; color:#fff; background:linear-gradient(145deg,#4b7ff1,#6f6ee9); font-size:14px; }
.asset-file-icon span { color:var(--muted); font-size:12px; }
.asset-card-body { padding:13px 13px 10px; }
.asset-card-body > strong { display:block; overflow:hidden; color:#26324a; text-overflow:ellipsis; white-space:nowrap; }
.asset-card-body > div { display:flex; justify-content:space-between; gap:8px; margin-top:7px; color:var(--muted); font-size:11px; }
.asset-card-actions { display:flex; gap:6px; padding:0 12px 13px; }
.asset-card-actions button { flex:1; min-width:0; min-height:32px; padding:6px 8px; }
.asset-empty { grid-column:1/-1; display:flex; flex-direction:column; align-items:center; justify-content:center; min-height:320px; margin:0; color:var(--muted); text-align:center; }
.asset-empty > span { margin-bottom:12px; color:#9eb1d0; font-size:48px; }
.asset-empty strong { color:#526079; }
.asset-empty p { margin:7px 0 0; }
.asset-loading-ring { width:34px; height:34px; margin-bottom:15px; border:3px solid #dfe7f5; border-top-color:var(--primary); border-radius:50%; animation:asset-spin .8s linear infinite; }
@keyframes asset-spin { to { transform:rotate(360deg); } }
.asset-pagination { display:flex; align-items:center; justify-content:space-between; margin-top:16px; padding:13px 16px; color:var(--muted); }
.asset-pagination #pageNumbers { display:inline-flex; gap:6px; }
@media (max-width:900px) { .asset-workspace { grid-template-columns:1fr; } .asset-sidebar { position:static; } .asset-group-list { display:flex; gap:7px; max-height:none; overflow:auto; } .asset-group-item { width:auto; min-width:max-content; padding:7px 11px; } .asset-group-actions { display:flex; } }
@media (max-width:640px) { .asset-toolbar-card,.asset-search,.asset-pagination { align-items:stretch; flex-direction:column; } .asset-search input { width:100%; } .asset-grid { grid-template-columns:repeat(2,minmax(0,1fr)); gap:10px; } .asset-card-preview { height:120px; } .asset-card-actions { flex-wrap:wrap; } }
.upload-field select { margin-top:1px; }
.upload-drop { display:flex; flex-direction:column; align-items:center; justify-content:center; gap:8px; min-height:180px; margin-top:18px; padding:24px; border:1.5px dashed #a9bce7; border-radius:14px; background:#f7f9ff; color:#344560; cursor:pointer; text-align:center; transition:.18s ease; }
.upload-drop:hover { border-color:var(--primary); background:#f1f5ff; }
.upload-drop input { position:absolute; width:1px; height:1px; min-height:0; opacity:0; pointer-events:none; }
.upload-drop strong::before { content:"⇧"; display:grid; place-items:center; width:48px; height:48px; margin:0 auto 12px; border-radius:14px; color:#fff; background:linear-gradient(135deg,#3974f5,#6b78ee); font-size:25px; box-shadow:0 10px 22px rgba(49,108,244,.24); }
.upload-drop span { color:var(--muted); font-size:12px; font-weight:400; line-height:1.6; }
.upload-note { margin-top:14px; padding:12px 14px; border-radius:10px; color:#6b7890; background:#f4f6f9; font-size:12px; line-height:1.65; }

/* 登录 */
.admin-login { min-height:100vh; display:grid; grid-template-columns:minmax(360px, .9fr) minmax(460px, 1.1fr); background:#fff; }
.login-visual { position:relative; display:flex; flex-direction:column; justify-content:center; padding:9vw; overflow:hidden; color:#fff; background:linear-gradient(145deg,#111d3a 0%,#24469f 58%,#5267d9 100%); }
.login-visual::before,.login-visual::after { content:""; position:absolute; border-radius:50%; border:1px solid rgba(255,255,255,.12); }
.login-visual::before { width:520px; height:520px; right:-180px; top:-180px; }
.login-visual::after { width:360px; height:360px; left:-170px; bottom:-160px; }
.login-visual h1 { position:relative; z-index:1; margin:0 0 15px; color:#fff; font-size:36px; }
.login-visual p { position:relative; z-index:1; color:#c7d4f3; font-size:16px; line-height:1.8; }
.login-panel { display:grid; place-items:center; padding:40px; }
.login-box { width:min(400px,100%); }
.login-box h2 { margin-bottom:9px; font-size:30px; }
.login-subtitle { margin:0 0 30px; color:var(--muted); }
.login-box input { width:100%; height:46px; margin:0 0 16px; }
.login-box button { width:100%; height:46px; }
.login-message { min-height:24px; margin-top:14px; color:var(--danger); }

.welcome-head { display:flex; align-items:flex-end; justify-content:space-between; margin-bottom:20px; }
.welcome-head h1 { margin-bottom:7px; font-size:26px; }
.welcome-head p { margin:0; color:var(--muted); }
.welcome-badge { padding:9px 13px; border-radius:20px; background:#eaf8f1; color:#16875a; font-weight:650; }

@media (max-width: 980px) {
  .admin-shell { grid-template-columns:1fr; }
  .admin-sidebar { transform:translateX(-100%); transition:.22s ease; }
  .admin-shell.menu-open .admin-sidebar { transform:translateX(0); }
  .admin-workspace { grid-column:1; }
  .sidebar-toggle { display:inline-flex; }
  .sidebar-mask { position:fixed; inset:0; z-index:19; background:rgba(10,18,37,.48); }
  .admin-shell.menu-open .sidebar-mask { display:block; }
  .cards { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .company-filter-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .user-filter-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .answer-filter-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
  .feedback-filter-grid { grid-template-columns:repeat(2,minmax(0,1fr)); }
}
@media (max-width: 720px) {
  main,.page { padding:14px; }
  .admin-topbar { height:66px; padding:0 14px; }
  .admin-stage { height:calc(100vh - 66px); padding:10px; }
  .admin-user-meta { display:none; }
  .cards { grid-template-columns:1fr; }
  .admin-login { grid-template-columns:1fr; }
  .login-visual { display:none; }
  .login-panel { padding:24px; }
  .card { padding:15px; overflow-x:auto; }
  table { min-width:680px; }
  .detail-grid { grid-template-columns:1fr; }
  .question-command-card,.question-search,.question-batch-actions { align-items:stretch; flex-direction:column; }
  .question-search input { width:100%; }
  .question-batch-actions { display:grid; grid-template-columns:repeat(3,1fr); width:100%; }
  .selection-count { grid-column:1/-1; text-align:left; }
  .form-grid { grid-template-columns:1fr; }
  .form-grid .form-span-2 { grid-column:auto; }
  .user-toolbar-card,.user-search { align-items:stretch; flex-direction:column; }
  .user-search input { width:100%; }
  .user-total { align-self:flex-start; }
  .company-filter-grid { grid-template-columns:1fr; }
  .user-filter-grid { grid-template-columns:1fr; }
  .answer-filter-grid { grid-template-columns:1fr; }
  .feedback-filter-grid { grid-template-columns:1fr; }
  .company-filter-actions { align-items:stretch; flex-direction:column; }
  .company-filter-actions .action-group { justify-content:flex-end; }
  .pagination-bar { grid-template-columns:1fr; }
  .page-size-control,.page-jump { justify-self:center; }
  .pagination { flex-wrap:wrap; }
}
.admin-asset-picker-dialog{width:min(1180px,calc(100vw - 48px));height:min(820px,calc(100vh - 48px));max-width:none;max-height:none;padding:0;border:0;border-radius:18px;overflow:hidden;background:#f4f7fc;box-shadow:0 24px 80px rgba(15,23,42,.28)}
.admin-asset-picker-dialog::backdrop{background:rgba(15,23,42,.56);backdrop-filter:blur(3px)}
.admin-asset-picker-shell{display:grid;grid-template-rows:72px 1fr;height:100%}
.admin-asset-picker-header{display:flex;align-items:center;justify-content:space-between;padding:0 24px;background:#fff;border-bottom:1px solid #e4e9f2}
.admin-asset-picker-header>div{display:flex;flex-direction:column;gap:5px}.admin-asset-picker-header strong{font-size:19px;color:#17233d}.admin-asset-picker-header span{font-size:13px;color:#8290aa}
.admin-asset-picker-header button{width:36px;height:36px;padding:0;border:0;border-radius:10px;background:#f1f4f9;color:#66758f;font-size:24px;line-height:1;cursor:pointer}.admin-asset-picker-header button:hover{background:#e8edf6;color:#24406f}
.admin-asset-picker-dialog iframe{display:block;width:100%;height:100%;border:0;background:#f4f7fc}
@media(max-width:720px){.admin-asset-picker-dialog{width:calc(100vw - 20px);height:calc(100vh - 20px)}.admin-asset-picker-header{padding:0 16px}.admin-asset-picker-header span{display:none}}
.asset-picker-embedded .asset-page{padding:18px;min-height:100vh}.asset-picker-embedded .asset-heading{display:none}.asset-picker-embedded .asset-workspace{margin-top:0}.asset-picker-embedded .asset-picker-tip{margin-top:0}
.payment-asset-picker{display:flex;align-items:center;gap:14px}.payment-asset-picker .config-image-preview{flex:0 0 72px;width:72px;height:72px}.payment-asset-picker>div:last-child{display:flex;align-items:center;gap:8px;flex-wrap:wrap}.payment-asset-picker small{flex-basis:100%}
.inline-asset-field{display:flex;align-items:center;gap:8px}.inline-asset-field input{min-width:0;flex:1}.inline-asset-field button{flex:0 0 auto;white-space:nowrap}
