:root{--bg:#0f1115;--panel:#171a21;--line:#262b36;--text:#e8eaf0;--mute:#8a92a6;--acc:#4f8cff;--ok:#2ecc71;--err:#ff5f5f;--warn:#f5b041}
*{box-sizing:border-box}
html,body{margin:0;background:var(--bg);color:var(--text);font:15px/1.45 system-ui,-apple-system,Segoe UI,Roboto,sans-serif}
.wrap{max-width:960px;margin:0 auto;padding:32px 16px 64px}
header h1{font-size:28px;margin:0 0 4px;letter-spacing:.5px}
header h1 span{font-weight:400;color:var(--mute);font-size:18px;margin-left:8px}
.sub{margin:0 0 24px;color:var(--mute)}
.drop{border:2px dashed var(--line);border-radius:14px;background:var(--panel);padding:44px 16px;text-align:center;cursor:pointer;transition:border-color .15s,background .15s;outline:none}
.drop:hover,.drop:focus,.drop.over{border-color:var(--acc);background:#1a1f2b}
.drop-icon{font-size:34px;color:var(--acc);margin-bottom:8px}
.drop-text{color:var(--mute)}
.drop-text strong{color:var(--text)}
.toolbar{display:flex;gap:12px;align-items:center;margin:18px 0}
.spacer{flex:1}
.btn{border:1px solid var(--line);background:#20242e;color:var(--text);border-radius:9px;padding:11px 18px;font-weight:600;letter-spacing:.4px;cursor:pointer;font-size:14px}
.btn:disabled{opacity:.45;cursor:not-allowed}
.btn.primary{background:var(--acc);border-color:var(--acc);color:#fff}
.btn.primary:not(:disabled):hover{background:#3b7af0}
.btn.ghost{background:transparent}
.btn.small{padding:7px 12px;font-size:13px}
.btn.danger{color:var(--err);border-color:#4a2a2a}
.list{display:flex;flex-direction:column;gap:10px}
.item{background:var(--panel);border:1px solid var(--line);border-radius:12px;padding:14px 16px;display:grid;grid-template-columns:1fr auto;gap:10px 16px;align-items:center}
.item .name{font-weight:600;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.item .meta{color:var(--mute);font-size:13px}
.item .actions{display:flex;gap:8px;grid-row:span 2}
.bar{grid-column:1/-1;height:8px;background:#0b0d12;border-radius:6px;overflow:hidden}
.bar i{display:block;height:100%;width:0;background:var(--acc);transition:width .3s}
.item.done .bar i{background:var(--ok)}
.item.error .bar i{background:var(--err);width:100%}
.item.queued .bar i{background:var(--warn);width:4%}
.item.processing .bar i{background-image:linear-gradient(90deg,rgba(255,255,255,0) 0,rgba(255,255,255,.25) 50%,rgba(255,255,255,0) 100%);background-size:200% 100%;animation:sh 1.2s linear infinite}
@keyframes sh{from{background-position:200% 0}to{background-position:-200% 0}}
.pill{display:inline-block;padding:2px 8px;border-radius:999px;font-size:12px;font-weight:600;margin-right:8px;background:#20242e;color:var(--mute)}
.item.local .pill{color:var(--text)}
.item.queued .pill{color:var(--warn)}
.item.processing .pill{color:var(--acc)}
.item.done .pill{color:var(--ok)}
.item.error .pill{color:var(--err)}
.foot{margin-top:28px;color:var(--mute);font-size:13px}
.empty{color:var(--mute);text-align:center;padding:24px 0}
@media (max-width:600px){.item{grid-template-columns:1fr}.item .actions{grid-row:auto}}
