:root{
  --bg:#0d1014; --panel:#151a21; --panel2:#1b222b; --line:#252d38;
  --ink:#e6edf3; --muted:#8b98a8; --accent:#3ea6ff; --accent2:#6ee7b7;
  --run:#3ea6ff; --pend:#c9a227; --done:#3fb950; --fail:#f85149;
  --radius:10px; --mono:'SFMono-Regular',ui-monospace,Menlo,Consolas,monospace;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%}
body{
  background:radial-gradient(1200px 600px at 80% -10%,#141b24,var(--bg));
  color:var(--ink);
  font:14px/1.5 system-ui,-apple-system,Segoe UI,Roboto,sans-serif;
}
b{font-weight:650}

.topbar{
  display:flex;align-items:center;gap:20px;
  padding:14px 22px;border-bottom:1px solid var(--line);
  background:rgba(13,16,20,.7);backdrop-filter:blur(8px);
  position:sticky;top:0;z-index:5;
}
.brand{font-weight:700;font-size:18px;letter-spacing:.5px}
.brand .logo{color:var(--accent);margin-right:6px}
.brand .accent,.accent{color:var(--accent)}
.counts{display:flex;gap:8px;flex-wrap:wrap}
.chip{
  font:600 12px var(--mono);padding:4px 10px;border-radius:20px;
  background:var(--panel2);border:1px solid var(--line);color:var(--muted);
}
.chip b{color:var(--ink);margin-right:3px}
.chip.running b{color:var(--run)} .chip.pending b{color:var(--pend)}
.chip.done b{color:var(--done)} .chip.failed b{color:var(--fail)}
.host{margin-left:auto;color:var(--muted);font:12px var(--mono)}

main{max-width:1080px;margin:22px auto;padding:0 20px;display:flex;flex-direction:column;gap:18px}
.panel{background:var(--panel);border:1px solid var(--line);border-radius:var(--radius);padding:18px 20px}
.controls{display:grid;grid-template-columns:1fr 1.4fr;gap:22px}
@media(max-width:760px){.controls{grid-template-columns:1fr}}
.ctl label{display:block;font:600 12px var(--mono);color:var(--muted);text-transform:uppercase;letter-spacing:.6px;margin-bottom:8px}
.row{display:flex;gap:8px;flex-wrap:wrap}
.hint{color:var(--muted);font-size:12px;margin-top:8px}

input[type=text],select{
  background:var(--panel2);border:1px solid var(--line);color:var(--ink);
  padding:9px 11px;border-radius:8px;font:13px var(--mono);flex:1;min-width:120px;
}
input[type=file]{color:var(--muted);font-size:12px;flex:1}
input:focus,select:focus{outline:none;border-color:var(--accent)}
button{
  background:var(--accent);color:#04121f;border:none;padding:9px 16px;
  border-radius:8px;font-weight:650;cursor:pointer;white-space:nowrap;
}
button:hover{filter:brightness(1.08)}
button:disabled{opacity:.4;cursor:not-allowed}
button.ghost{background:transparent;color:var(--ink);border:1px solid var(--line)}
button.ghost:hover{border-color:var(--accent);color:var(--accent)}

.queuehead{display:flex;align-items:center;justify-content:space-between;margin-bottom:12px}
.queuehead h2{margin:0;font-size:15px;letter-spacing:.4px}
.bulk{display:flex;align-items:center;gap:10px}

.tablewrap{overflow-x:auto}
table{width:100%;border-collapse:collapse;font-size:13px}
th,td{text-align:left;padding:9px 10px;border-bottom:1px solid var(--line)}
th{color:var(--muted);font:600 11px var(--mono);text-transform:uppercase;letter-spacing:.5px}
th.ck,td.ck{width:28px}
td.mono,.num{font-family:var(--mono)}
tbody tr:hover{background:var(--panel2)}
.pdfname{max-width:280px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}

.badge{font:600 11px var(--mono);padding:2px 8px;border-radius:12px;text-transform:uppercase;letter-spacing:.4px}
.badge.running{background:rgba(62,166,255,.15);color:var(--run)}
.badge.pending{background:rgba(201,162,39,.15);color:var(--pend)}
.badge.done{background:rgba(63,185,80,.15);color:var(--done)}
.badge.failed{background:rgba(248,81,73,.15);color:var(--fail)}
.badge.running::before{content:"";display:inline-block;width:6px;height:6px;border-radius:50%;background:var(--run);margin-right:6px;animation:pulse 1s infinite}
@keyframes pulse{0%,100%{opacity:1}50%{opacity:.3}}

td.act{white-space:nowrap;text-align:right}
.iconbtn{background:transparent;border:1px solid var(--line);color:var(--muted);padding:3px 8px;border-radius:6px;margin-left:5px;font-size:12px}
.iconbtn:hover{border-color:var(--accent);color:var(--accent)}
.iconbtn.danger:hover{border-color:var(--fail);color:var(--fail)}
.err{color:var(--fail);font:11px var(--mono);max-width:260px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.empty{color:var(--muted);text-align:center;padding:26px;font-size:13px}
