*{box-sizing:border-box}html,body,#root{min-height:100%}body{margin:0;background:#f8fafc;color:#171717;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,Microsoft YaHei,sans-serif}button,input,select{font:inherit}button{cursor:pointer}.admin-shell{height:100vh;display:flex;overflow:hidden;background:#f8fafc}.admin-sidebar{width:220px;flex:0 0 220px;min-height:100vh;display:flex;flex-direction:column;background:#111827;color:#d1d5db}.admin-brand{height:56px;padding:0 16px;border-bottom:1px solid #1f2937;display:flex;align-items:center;gap:10px;color:#fff;font-size:14px;font-weight:800}.admin-brand-mark{width:28px;height:28px;border-radius:7px;display:inline-flex;align-items:center;justify-content:center;background:#059669;color:#ecfdf5;font-size:11px;letter-spacing:0}.admin-nav{flex:1;padding:10px 8px 14px;overflow:auto}.admin-nav-section+.admin-nav-section{margin-top:10px}.admin-nav-section-title{padding:8px 10px 5px;color:#6b7280;font-size:11px;font-weight:800;letter-spacing:0}.admin-nav a{min-height:34px;padding:7px 12px;border-radius:6px;display:flex;align-items:center;gap:10px;color:#d1d5db;text-decoration:none;font-size:14px;transition:color .12s ease,background .12s ease}.admin-nav-icon{width:16px;height:16px;flex:0 0 16px;font-size:16px}.admin-nav a:hover{background:#1f2937;color:#fff}.admin-nav a.active{background:#05966924;color:#34d399;font-weight:700}.sidebar-footer{margin:0 12px 16px;padding:10px 12px;border:1px solid #1f2937;border-radius:8px;display:flex;align-items:center;justify-content:space-between;color:#9ca3af;font-size:12px}.sidebar-footer strong{color:#34d399}.admin-main{min-width:0;flex:1;display:flex;flex-direction:column}.admin-topbar{height:56px;padding:0 24px;border-bottom:1px solid #e5e7eb;display:flex;align-items:center;justify-content:space-between;gap:18px;background:#fff;color:#6b7280;font-size:14px;flex-shrink:0}.topbar-left{display:flex;flex-direction:column;gap:2px}.topbar-left strong{color:#111827;font-size:14px}.topbar-left span{color:#9ca3af;font-size:12px}.topbar-right{display:flex;align-items:center;gap:16px}.admin-env{min-height:24px;padding:3px 8px;border:1px solid #bbf7d0;border-radius:999px;background:#f0fdf4;color:#15803d;font-size:12px;font-weight:700}.admin-user,.logout-button{display:inline-flex;align-items:center;gap:7px}.logout-button{border:0;background:transparent;color:#6b7280}.logout-button:hover{color:#111827}.admin-content{flex:1;overflow:auto;padding:24px}.page-stack{display:flex;flex-direction:column;gap:24px}.page-head{display:flex;align-items:center;justify-content:space-between;gap:16px}.page-title{margin:0;color:#171717;font-size:20px;line-height:1.25;font-weight:800}.page-actions{display:inline-flex;align-items:center;gap:10px;flex-wrap:wrap}.card{border:1px solid #e5e7eb;border-radius:8px;overflow:hidden;background:#fff;box-shadow:0 1px 2px #0f172a0a}.card-pad{padding:20px}.card-head{padding:14px 20px;border-bottom:1px solid #e5e7eb}.card-head h3{margin:0;color:#111827;font-size:14px;font-weight:700}.card-title-row,.task-row,.detail-row{display:flex;align-items:center;justify-content:space-between;gap:14px}.task-row{color:#4b5563;font-size:14px}.task-row strong{display:inline-flex;align-items:center;gap:8px;color:#111827;font-size:13px}.separated{padding-top:14px;border-top:1px solid #f3f4f6}.progress-track{height:8px;margin:14px 0;border-radius:999px;overflow:hidden;background:#f3f4f6}.progress-track span{display:block;height:100%;border-radius:inherit;background:#22c55e}.btn{min-height:34px;padding:7px 14px;border-radius:6px;border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center;gap:7px;color:#fff;background:#16a34a;font-size:14px;font-weight:700;line-height:1;white-space:nowrap;transition:background .12s ease,border .12s ease,color .12s ease}.btn .anticon{font-size:14px}.btn.secondary{border-color:#d1d5db;background:#fff;color:#374151}.btn.secondary:hover{background:#f9fafb}.btn.ghost{min-height:30px;padding:5px 8px;border-color:transparent;background:transparent;color:#2563eb}.btn.ghost:hover{background:#eff6ff}.btn.warn,.btn.ghost.warn{color:#ea580c}.btn.danger,.btn.ghost.danger{color:#dc2626}.btn.success,.btn.ghost.success{color:#16a34a}.btn:disabled{opacity:.5;cursor:not-allowed}.dash-button{width:100%;border-style:dashed}.filter-bar{padding:16px;border-bottom:1px solid #e5e7eb;display:flex;flex-wrap:wrap;gap:16px;background:#f9fafbb8}.input,.select{height:36px;min-width:160px;padding:0 12px;border:1px solid #d1d5db;border-radius:6px;outline:none;background:#fff;color:#111827;font-size:14px}.input:focus,.select:focus{border-color:#16a34a;box-shadow:0 0 0 3px #16a34a1f}.input.full{width:100%}.input.search{width:260px;min-width:260px;padding-left:34px}.search-field{position:relative;display:inline-flex;align-items:center}.search-field .anticon{position:absolute;left:12px;z-index:1;color:#9ca3af}.table-scroll{overflow-x:auto}.data-table{width:100%;border-collapse:collapse;font-size:14px;text-align:left;white-space:nowrap}.data-table th{padding:12px 20px;border-bottom:1px solid #e5e7eb;background:#f9fafb;color:#6b7280;font-size:13px;font-weight:700}.data-table td{padding:12px 20px;border-bottom:1px solid #f3f4f6;color:#4b5563;vertical-align:middle}.data-table tr:hover td{background:#f9fafb}.mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px}.strong{color:#111827;font-weight:700}.table-title{display:block;max-width:320px;overflow:hidden;text-overflow:ellipsis}.muted,.metric-label{color:#6b7280;font-size:12px}.danger-text{color:#dc2626}.success-text{color:#16a34a}.warning-text{color:#ea580c}.save-ok{color:#16a34a;font-size:13px;font-weight:700}.tag{display:inline-flex;align-items:center;min-height:22px;padding:0 8px;border:1px solid #e5e7eb;border-radius:4px;background:#f3f4f6;color:#374151;font-size:12px;font-weight:700}.tag.success{border-color:#bbf7d0;background:#dcfce7;color:#166534}.tag.info{border-color:#bfdbfe;background:#dbeafe;color:#1d4ed8}.tag.warning{border-color:#fed7aa;background:#ffedd5;color:#c2410c}.tag.error{border-color:#fecaca;background:#fee2e2;color:#b91c1c}.metric-grid,.dashboard-grid,.settings-grid,.sync-grid{display:grid;gap:16px}.metric-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.metric-grid.four{grid-template-columns:repeat(4,minmax(0,1fr))}.dashboard-grid,.settings-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.sync-grid{grid-template-columns:repeat(3,minmax(0,1fr))}.metric-title{margin:0 0 16px;color:#6b7280;font-size:14px;font-weight:700}.metric-values{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:14px;text-align:center}.metric-value{color:#111827;font-size:24px;line-height:1.1;font-weight:800}.config-card{max-width:960px}.config-section{margin-bottom:30px}.config-section:last-child{margin-bottom:0}.config-section h3,.detail-title,.validation-panel h3,.sync-card h3{margin:0 0 12px;border-left:4px solid #22c55e;padding-left:8px;color:#111827;font-size:14px;font-weight:800}.config-section.compact{margin-bottom:0}.config-row,.list-row{min-height:46px;padding:10px 12px;border:1px solid #e5e7eb;border-radius:6px;display:flex;align-items:center;justify-content:space-between;gap:12px;background:#fff}.list-row+.list-row{margin-top:8px}.hint{padding:12px;border:1px solid #e5e7eb;border-radius:6px;background:#f9fafb;color:#6b7280;font-size:13px}.hint.warning{border-color:#fed7aa;background:#fff7ed;color:#9a3412}.hint.info{border-color:#bfdbfe;background:#eff6ff;color:#1d4ed8}.settlement-grid{display:grid;grid-template-columns:minmax(0,2fr) minmax(320px,1fr);gap:24px}.row-button{min-width:160px;padding:0;border:0;display:flex;flex-direction:column;align-items:flex-start;gap:3px;background:transparent;color:inherit;text-align:left}.row-button.active strong{color:#16a34a}.score-text{color:#111827;font-size:18px;font-weight:800}.action-column{display:flex;flex-direction:column;align-items:flex-start;gap:4px}.row-actions{display:inline-flex;align-items:center;gap:6px}.detail-stack{display:flex;flex-direction:column;gap:14px}.detail-row{padding:12px;border-radius:6px;background:#f9fafb;font-size:13px}.detail-row.error{border:1px solid #fecaca;background:#fef2f2;color:#dc2626}.empty-detail{min-height:220px;display:grid;place-items:center;color:#9ca3af;font-size:14px}.modal-mask{position:fixed;top:0;right:0;bottom:0;left:0;z-index:50;display:flex;align-items:center;justify-content:center;background:#11182780}.modal{width:420px;border:1px solid #e5e7eb;border-radius:8px;overflow:hidden;background:#fff;box-shadow:0 20px 50px #0f172a38}.modal-head,.modal-foot{padding:14px 16px;border-bottom:1px solid #e5e7eb;display:flex;align-items:center;justify-content:space-between}.modal-foot{border-top:1px solid #e5e7eb;border-bottom:0;justify-content:flex-end;gap:10px;background:#f9fafb}.modal-close{width:28px;height:28px;border:0;border-radius:6px;display:inline-flex;align-items:center;justify-content:center;background:transparent;color:#6b7280}.modal-close:hover{background:#f3f4f6;color:#111827}.modal-body{padding:18px}.modal-match{margin-bottom:14px;padding:12px;border-radius:6px;background:#f9fafb;color:#4b5563;font-size:13px}.score-input-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:14px}.score-input-grid label,.field{display:flex;flex-direction:column;gap:8px;color:#374151;font-size:13px;font-weight:700}.form-grid{display:grid;grid-template-columns:minmax(0,1fr) minmax(360px,1fr);gap:14px;margin-bottom:16px}.form-grid.two{grid-template-columns:repeat(2,minmax(0,1fr))}.textarea{min-height:138px;padding:10px 12px;border:1px solid #d1d5db;border-radius:6px;background:#fff;color:#111827;font:inherit;line-height:1.55;resize:vertical}.form-stack{display:flex;flex-direction:column;gap:18px}.upload-zone{min-height:154px;border:2px dashed #d1d5db;border-radius:10px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;background:#f9fafb;color:#6b7280}.upload-zone .anticon{color:#9ca3af;font-size:30px}.upload-zone.selected{border-color:#22c55e;background:#f0fdf4;color:#15803d}.upload-zone.selected .anticon{color:#22c55e}.validation-panel{border-left:1px solid #e5e7eb;padding-left:32px}.validation-stats{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;margin-bottom:18px}.validation-stats div{padding:12px;border:1px solid #bbf7d0;border-radius:6px;background:#f0fdf4;color:#15803d;text-align:center}.validation-stats div.error{border-color:#fecaca;background:#fef2f2;color:#dc2626}.validation-stats strong{display:block;font-size:24px}.validation-stats span{font-size:12px}.mini-table{width:100%;border:1px solid #e5e7eb;border-collapse:collapse;font-size:13px}.mini-table th,.mini-table td{padding:7px 9px;border-bottom:1px solid #e5e7eb;text-align:left}.mini-table th{background:#f9fafb;color:#6b7280}.mini-table td:last-child{color:#dc2626}.sync-card{min-height:180px;display:flex;flex-direction:column;justify-content:space-between}.section-title{margin:0 0 14px;color:#111827;font-size:14px;font-weight:800}.json-block{max-height:360px;margin:0;padding:14px;border:1px solid #e5e7eb;border-radius:6px;overflow:auto;background:#0f172a;color:#d1fae5;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,monospace;font-size:12px;line-height:1.6}.sync-card.emph{background:#f9fafb}.table-avatar,.asset-thumb{width:40px;height:40px;border-radius:10px;object-fit:cover;background:#f3f4f6;border:1px solid #e5e7eb}.asset-thumb{border-radius:6px}.avatar-fallback{width:40px;height:40px;display:inline-grid;place-items:center;border-radius:10px;background:#111827;color:#fff;font-size:12px;font-weight:800}.table-url{display:inline-block;max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;vertical-align:middle}.login-page{min-height:100vh;padding:48px 24px;display:grid;place-items:center;background:#f9fafb}.login-card{width:min(420px,100%)}.login-brand{margin-bottom:28px;text-align:center}.login-brand h1{margin:0;color:#111827;font-size:30px;line-height:1.2;font-weight:800}.login-brand p{margin:8px 0 0;color:#6b7280;font-size:14px}@media (max-width: 1100px){.metric-grid,.metric-grid.four,.dashboard-grid,.settings-grid,.sync-grid,.settlement-grid,.form-grid{grid-template-columns:1fr}.validation-panel{border-left:0;border-top:1px solid #e5e7eb;padding:24px 0 0}}
