:root{--bg:#f3f5f7;--panel:#fff;--text:#172033;--muted:#647084;--line:#d8dee8;--primary:#1e4f88;--primary-dark:#153b67;--danger:#a72c36;--success:#1e6f45;--warning:#8a5a00;--info:#eaf2fb}
*{box-sizing:border-box}html,body{margin:0;padding:0;background:var(--bg);color:var(--text);font-family:Arial,Helvetica,sans-serif;font-size:14px}a{color:var(--primary);text-decoration:none}button,input{font:inherit}input{width:100%;height:40px;border:1px solid var(--line);background:#fff;padding:0 10px;color:var(--text);border-radius:0;outline:none}input:focus{border-color:var(--primary)}
.topbar{height:58px;background:#182235;color:#fff;display:flex;align-items:center;justify-content:space-between;padding:0 24px;border-bottom:3px solid var(--primary)}.topbar>div{display:flex;gap:12px;align-items:baseline}.topbar span{color:#c9d2df;font-size:12px}.topbar a{color:#fff}.topbar nav{display:flex;gap:18px}
.container{max-width:1500px;margin:0 auto;padding:22px}.panel{background:var(--panel);border:1px solid var(--line);padding:20px;margin-bottom:18px}.panel-head{display:flex;align-items:flex-start;justify-content:space-between;gap:20px;margin-bottom:16px}.panel h1,.panel h2{margin:0 0 6px}.panel h1{font-size:22px}.panel h2{font-size:18px}.panel p{margin:0;color:var(--muted)}
.field-label{display:block;font-weight:700;margin:0 0 6px}.drop-zone{border:2px dashed #9aa8ba;background:#f8fafc;min-height:180px;margin:14px 0;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:24px;cursor:pointer}.drop-zone.drag{border-color:var(--primary);background:#edf4fb}.drop-zone strong{font-size:17px;margin-bottom:6px}.drop-zone span{color:var(--muted);margin-bottom:16px;max-width:700px}.selection{border-left:4px solid var(--primary);background:#eef4fa;padding:10px 12px;margin-bottom:12px}.hidden{display:none!important}
.btn{display:inline-flex;align-items:center;justify-content:center;min-height:38px;padding:0 14px;border:1px solid #aeb8c7;background:#fff;color:var(--text);cursor:pointer;border-radius:0;text-decoration:none}.btn:hover{background:#f4f6f8}.btn.primary{background:var(--primary);border-color:var(--primary);color:#fff}.btn.primary:hover{background:var(--primary-dark)}.btn:disabled{opacity:.55;cursor:not-allowed}.btn.small{min-height:30px;padding:0 9px;font-size:12px}.btn.full{width:100%;margin-top:12px}
.progress-box{margin-top:16px}.progress-track{height:10px;border:1px solid #b8c1cf;background:#eef1f5}.progress-bar{height:100%;width:0;background:var(--primary);transition:width .15s}.progress-meta{display:flex;justify-content:space-between;margin-top:7px;color:var(--muted)}
.table-wrap{overflow:auto;border:1px solid var(--line)}table{width:100%;border-collapse:collapse;background:#fff;min-width:900px}th,td{border-bottom:1px solid var(--line);padding:9px 10px;text-align:left;vertical-align:top}th{background:#25364e;color:#fff;font-size:12px;white-space:nowrap}tbody tr:hover{background:#f8fafc}.actions{display:flex;gap:6px;white-space:nowrap}.empty{text-align:center;color:var(--muted);padding:24px}.mono{font-family:Consolas,Monaco,monospace}.key-cell{font-size:11px;max-width:300px;word-break:break-all}
.status{display:inline-block;padding:4px 7px;border:1px solid #bcc5d1;font-size:11px;font-weight:700}.status.processed{color:var(--success);border-color:#8ec2a7;background:#edf8f2}.status.error{color:var(--danger);border-color:#d8a1a6;background:#fff1f2}.status.processing{color:var(--primary);border-color:#9cb8d7;background:#edf4fb}.status.queued{color:var(--warning);border-color:#d8c28b;background:#fff8e6}.error-mini{max-width:220px;color:var(--danger);font-size:11px;margin-top:4px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.notice{border:1px solid var(--line);padding:10px 12px;margin:12px 0}.notice.error{border-color:#d9a0a6;background:#fff1f2;color:var(--danger)}.notice.success{border-color:#98c8ad;background:#edf8f2;color:var(--success)}.notice.info{background:var(--info);border-color:#b8cee7}
.auth-page{min-height:100vh;display:flex;align-items:center;justify-content:center;padding:20px}.auth-box{width:100%;max-width:430px;background:#fff;border:1px solid var(--line);padding:28px}.auth-box h1{margin:0 0 8px;font-size:24px}.auth-box p{color:var(--muted);margin:0 0 20px}.auth-box label{display:block;font-weight:700;margin-top:12px}.auth-box label input{margin-top:6px}.install-box{max-width:720px}.form-grid{display:grid;grid-template-columns:1fr 1fr;gap:12px}.form-grid label{margin:0}.span-2{grid-column:1/-1}
.batch-head{align-items:center}.section-title{font-size:16px!important;margin:0 0 12px!important;padding-bottom:8px;border-bottom:2px solid #25364e}.kv-table{border:1px solid var(--line)}.kv-table>div{display:grid;grid-template-columns:minmax(160px,30%) 1fr;border-bottom:1px solid var(--line)}.kv-table>div:last-child{border-bottom:0}.kv-table strong,.kv-table span{padding:8px 10px}.kv-table strong{background:#f3f5f7}.line-card{border:1px solid var(--line);margin-bottom:12px}.line-card h3{margin:0;padding:8px 10px;background:#25364e;color:#fff;font-size:13px}.line-card .kv-table{border:0}.detail-grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}.detail-grid>.panel:first-child{grid-column:1/-1}
@media(max-width:800px){.topbar{padding:0 14px}.topbar span{display:none}.container{padding:12px}.panel{padding:14px}.panel-head,.batch-head{flex-direction:column}.form-grid{grid-template-columns:1fr}.span-2{grid-column:auto}.detail-grid{grid-template-columns:1fr}.detail-grid>.panel:first-child{grid-column:auto}.kv-table>div{grid-template-columns:1fr}.kv-table strong{border-bottom:1px solid var(--line)}}
