:root{color:#17202a;background:#f4f6f8;font-family:Arial,Helvetica,sans-serif}*{box-sizing:border-box}body{background:radial-gradient(circle at 0 0,#2d80ff1f,#0000 32rem),linear-gradient(#fbfcfe 0%,#eef2f6 100%);min-height:100vh;margin:0}a{color:inherit;text-decoration:none}.shell{width:min(980px,100% - 32px);margin:0 auto;padding:44px 0}.intro{gap:14px;margin-bottom:24px;display:grid}.intro h1{max-width:760px;margin:0;font-size:46px;line-height:1.04}.intro p{color:#637083;max-width:680px;margin:0;font-size:18px;line-height:1.55}.eyebrow{color:#2563eb;letter-spacing:0;text-transform:uppercase;font-size:12px;font-weight:800}.upload-card,.progress-card,.metrics,.log-panel{background:#ffffffeb;border:1px solid #dce3ec;border-radius:8px;box-shadow:0 18px 50px #11182714}.upload-card{gap:18px;padding:18px;display:grid}.dropzone{color:#17202a;cursor:pointer;background:#f8fafc;border:1px dashed #9aa8ba;border-radius:8px;place-items:center;gap:10px;width:100%;min-height:280px;transition:border-color .2s,background .2s,transform .2s;display:grid}.dropzone:hover,.dropzone-active{background:#eef5ff;border-color:#2563eb;transform:translateY(-1px)}.dropzone-icon{color:#fff;background:#2563eb;border-radius:999px;place-items:center;width:54px;height:54px;font-size:26px;font-weight:900;display:grid}.dropzone-title{overflow-wrap:anywhere;text-align:center;max-width:100%;padding:0 12px;font-size:22px;font-weight:800}.dropzone-subtitle{color:#64748b;font-size:15px}.upload-footer{justify-content:space-between;align-items:center;gap:16px;display:flex}.upload-step{color:#475569;margin:4px 0 0}.button{color:#fff;cursor:pointer;background:#111827;border:0;border-radius:8px;min-width:150px;min-height:46px;padding:0 18px;font-weight:800}.button:disabled{cursor:wait;opacity:.55}.error{color:#b42318;margin:0;font-weight:700}.visually-hidden{opacity:0;width:1px;height:1px;position:absolute;overflow:hidden}.job-view{gap:16px;display:grid}.status-hero{color:#fff;background:linear-gradient(135deg,#111827,#27548a);border-radius:8px;justify-content:space-between;align-items:flex-start;gap:18px;padding:22px;display:flex}.status-completed{background:linear-gradient(135deg,#0f5132,#248b68)}.status-failed{background:linear-gradient(135deg,#7f1d1d,#c2410c)}.status-hero h2{margin:8px 0;font-size:38px;line-height:1.05}.status-hero p{overflow-wrap:anywhere;color:#ffffffd1;margin:0}.status-badge{background:#ffffff24;border-radius:999px;flex:none;padding:8px 12px;font-size:13px;font-weight:800}.progress-card{gap:12px;padding:16px;display:grid}.progress-bar{background:#e2e8f0;border-radius:999px;height:10px;overflow:hidden}.progress-bar span{border-radius:inherit;background:#2563eb;height:100%;transition:width .35s;display:block}.steps{color:#8a96a8;justify-content:space-between;gap:10px;font-size:13px;font-weight:800;display:flex}.step-active{color:#17202a}.metrics{grid-template-columns:repeat(3,1fr);display:grid}.metrics div{border-right:1px solid #e5eaf1;gap:6px;padding:16px;display:grid}.metrics div:last-child{border-right:0}.metrics span{color:#64748b;font-size:13px}.metrics strong{overflow-wrap:anywhere}.downloads{flex-wrap:wrap;gap:10px;display:flex}.download-link{background:#fff;border:1px solid #cad3df;border-radius:8px;justify-content:center;align-items:center;min-width:92px;min-height:42px;padding:0 16px;font-weight:900;display:inline-flex}.log-panel{overflow:hidden}.log-head{border-bottom:1px solid #e5eaf1;justify-content:space-between;align-items:center;gap:12px;padding:14px 16px;display:flex}.log-head h3{margin:0;font-size:16px}.log-head span{color:#64748b;font-size:13px}.log-box{background:#0b1220;gap:6px;max-height:360px;padding:14px 16px;display:grid;overflow:auto}.log-box code{color:#dbeafe;white-space:pre-wrap;overflow-wrap:anywhere;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:13px;line-height:1.5}.skeleton{color:#64748b;background:#fff;border-radius:8px;padding:22px}@media (max-width:680px){.shell{width:min(100% - 20px,980px);padding:22px 0}.intro h1{font-size:34px}.intro p{font-size:16px}.dropzone{min-height:220px}.upload-footer,.status-hero{display:grid}.button{width:100%}.metrics{grid-template-columns:1fr}.metrics div{border-bottom:1px solid #e5eaf1;border-right:0}.metrics div:last-child{border-bottom:0}.status-hero h2{font-size:32px}}.admin-grid{gap:16px;display:grid}.admin-card{background:#fffffff0;border:1px solid #dce3ec;border-radius:8px;gap:14px;padding:16px;display:grid;box-shadow:0 18px 50px #11182714}.admin-card h2{margin:0}.admin-row{flex-wrap:wrap;align-items:center;gap:10px;display:flex}.admin-row input{border:1px solid #cad3df;border-radius:8px;flex:1;min-width:220px;min-height:44px;padding:0 12px}.secondary{background:#475569}.admin-metrics{box-shadow:none}.wide{overflow:hidden}.job-table{gap:10px;display:grid}.job-row{border:1px solid #e5eaf1;border-radius:8px;justify-content:space-between;gap:14px;padding:12px;display:flex}.job-row div:first-child{gap:4px;display:grid}.job-row span{color:#64748b;font-size:13px}.job-actions{align-items:center;gap:8px;display:flex}.job-actions button{cursor:pointer;background:#fff;border:1px solid #cad3df;border-radius:8px;min-height:36px;padding:0 10px;font-weight:700}@media (max-width:680px){.job-row,.job-actions{display:grid}.job-actions button{width:100%}}.status-actions{justify-items:end;gap:10px;display:grid}.cancel-button{color:#fff;cursor:pointer;background:#ffffff24;border:1px solid #ffffff73;border-radius:8px;min-height:38px;padding:0 12px;font-weight:800}.cancel-button:disabled{opacity:.6;cursor:wait}.notice{color:#1e3a8a;background:#eff6ff;border:1px solid #bfdbfe;border-radius:8px;margin:0;padding:12px 14px;font-weight:700}@media (max-width:680px){.status-actions{justify-items:stretch}.cancel-button{width:100%}}
