body{margin:0;background:#f5f7fa;color:#1f2937;font-family:-apple-system,BlinkMacSystemFont,PingFang SC,sans-serif}button{border:0;border-radius:10px;padding:10px 16px;background:#1677ff;color:#fff;cursor:pointer}button:disabled{background:#d0d5dd;color:#667085;cursor:not-allowed}button.danger{background:#d92d20}button.secondary{background:#eef2f6;color:#344054}.layout{max-width:1200px;margin:0 auto;padding:40px 24px}.header{display:flex;justify-content:space-between;align-items:center;gap:24px;margin-bottom:20px}.header-actions{display:flex;gap:10px}.login-layout{min-height:100vh;display:grid;place-items:center;padding:24px}.login-card{width:min(420px,100%);padding:28px;border-radius:18px;background:#fff;box-shadow:0 8px 24px #0f172a14}.login-card h1{margin:0 0 10px}.login-card p{margin:0 0 18px;color:#667085;line-height:1.6}.login-card input{width:100%;box-sizing:border-box;border:1px solid #d0d5dd;border-radius:10px;padding:11px 12px;margin-bottom:14px;font-size:14px}.login-card button{width:100%}.header h1{margin:0;font-size:32px}.header p{color:#667085;margin:8px 0 0}.message{margin-bottom:16px;padding:12px 16px;border-radius:12px;background:#eaf3ff;color:#1677ff}.tabs{display:flex;gap:12px;margin-bottom:20px}.tabs button{background:#fff;color:#344054;box-shadow:0 4px 12px #0f172a0f}.tabs button.active{background:#1677ff;color:#fff}.panel{background:#fff;border-radius:18px;padding:24px;box-shadow:0 8px 24px #0f172a0f}.panel h2{margin:0 0 18px}.table{display:flex;flex-direction:column;gap:12px}.row{display:grid;grid-template-columns:minmax(320px,1fr) 120px 120px 120px 110px 110px;gap:16px;align-items:center;padding:16px;border:1px solid #eef2f6;border-radius:14px}.source-row{display:grid;grid-template-columns:minmax(280px,1fr) 150px 100px 90px 80px 250px;gap:16px;align-items:center;padding:16px;border:1px solid #eef2f6;border-radius:14px}.notice-row{display:grid;grid-template-columns:32px minmax(280px,1fr) 180px 120px 120px 120px 150px;gap:16px;align-items:center;padding:16px;border:1px solid #eef2f6;border-radius:14px}.job-row{display:grid;grid-template-columns:32px minmax(280px,1fr) 120px 100px 120px 120px 150px;gap:16px;align-items:center;padding:16px;border:1px solid #eef2f6;border-radius:14px}.source-row strong,.source-row span,.notice-row strong,.notice-row span,.job-row strong,.job-row span{display:block}.source-row span,.notice-row span,.job-row span{margin-top:6px;color:#667085;font-size:13px;word-break:break-all}.source-row input,.source-row select,.source-create input,.source-create select,.notice-row input,.notice-row select,.job-row input,.job-row select{width:100%;box-sizing:border-box;border:1px solid #d0d5dd;border-radius:10px;padding:9px 10px;font-size:14px}.source-row code{padding:4px 8px;border-radius:8px;background:#f2f4f7;color:#344054}.actions-cell{display:flex;gap:8px;flex-wrap:wrap}.actions-cell button{padding:9px 12px}.source-create{display:grid;grid-template-columns:160px minmax(260px,1fr) 170px 90px 120px;gap:12px;margin:-6px 0 16px;padding:12px;border-radius:12px;background:#f8fafc}.source-create button{padding:9px 12px}.batch-actions{display:flex;align-items:center;gap:12px;flex-wrap:wrap;margin:-6px 0 16px;padding:12px;border-radius:12px;background:#f8fafc;color:#475467;font-size:14px}.batch-actions:before{content:"操作前会二次确认";color:#b54708;font-weight:700}.batch-actions button{padding:8px 12px}.select-cell{display:flex;align-items:center;justify-content:center}.select-cell input,.batch-actions input{width:auto}.hint{margin:-8px 0 18px;color:#667085;font-size:13px}.checkbox{display:flex;gap:6px;align-items:center;color:#344054}.row strong,.row span{display:block}.row span{margin-top:6px;color:#667085;font-size:13px}.status.success{color:#039855;font-weight:700}.status.failed{color:#d92d20;font-weight:700}@media(max-width:860px){.header,.tabs{flex-wrap:wrap}.row,.source-row,.source-create,.notice-row,.job-row{grid-template-columns:1fr}}.preview{grid-column:1 / -1;color:#475467;font-size:13px;background:#f8fafc;border-radius:10px;padding:8px 12px}.preview p{margin:6px 0}.error-box{background:#fff1f3;color:#b42318}.quality-pass{color:#039855;font-weight:700}.quality-warn{color:#b54708;font-weight:700}.run-meta{color:#667085;font-size:13px}.detail-panel{margin-top:18px;padding:18px;border:1px solid #d0d5dd;border-radius:16px;background:#fff}.detail-header{display:flex;justify-content:space-between;gap:16px;align-items:flex-start;margin-bottom:12px}.detail-header strong,.detail-header span,.detail-item strong,.detail-item span{display:block}.detail-header span,.detail-item span{margin-top:6px;color:#667085;font-size:13px;word-break:break-all}.detail-summary{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:12px}.detail-summary span{padding:5px 9px;border-radius:999px;background:#f2f4f7;color:#344054;font-size:13px}.detail-message{padding:10px 12px;border-radius:10px;margin-bottom:12px}.detail-list{display:flex;flex-direction:column;gap:10px;margin-top:14px}.detail-list h3{margin:0;font-size:16px}.detail-item{padding:12px;border:1px solid #eef2f6;border-radius:12px;background:#f8fafc}details{margin-top:14px}summary{cursor:pointer;color:#1677ff;font-weight:700}pre{max-height:360px;overflow:auto;padding:12px;border-radius:12px;background:#101828;color:#f9fafb;font-size:12px}
