:root{
  --bg:#0f172a; --panel:#ffffff; --ink:#1e293b; --muted:#64748b;
  --line:#e2e8f0; --brand:#2563eb; --brand-d:#1d4ed8;
  --ok:#16a34a; --err:#dc2626; --warn:#b45309; --okbg:#f0fdf4; --errbg:#fef2f2;
}
*{box-sizing:border-box}
body{
  margin:0; font:15px/1.5 system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial,sans-serif;
  color:var(--ink); background:linear-gradient(180deg,#0f172a,#1e293b) fixed; min-height:100vh;
}
.wrap{max-width:760px; margin:0 auto; padding:24px 16px 60px}
.topbar{display:flex; align-items:center; justify-content:space-between; color:#e2e8f0}
h1{font-size:22px; margin:.2em 0}
h2{font-size:17px; margin:0 0 .3em}
h3{font-size:14px; margin:1.1em 0 .3em; color:var(--muted); text-transform:uppercase; letter-spacing:.03em}
.card{background:var(--panel); border:1px solid var(--line); border-radius:14px; padding:20px; margin:16px 0; box-shadow:0 8px 24px rgba(0,0,0,.18)}
.card.disabled{opacity:.6}
.muted{color:var(--muted); font-size:13.5px}
.link{color:#93c5fd; text-decoration:none}
.link:hover{text-decoration:underline}
label.file{display:block; margin:14px 0}
label.file span{display:block; font-weight:600; margin-bottom:6px; font-size:13.5px}
label{display:block}
input[type=file],input[type=password]{
  width:100%; padding:9px; border:1px solid var(--line); border-radius:9px; background:#f8fafc; font:inherit;
}
button{
  appearance:none; border:0; background:var(--brand); color:#fff; font:600 15px/1 inherit;
  padding:11px 18px; border-radius:9px; cursor:pointer; margin-top:6px;
}
button:hover{background:var(--brand-d)}
button:disabled{background:#94a3b8; cursor:not-allowed}
.status{font-weight:600; font-size:13.5px; margin:.4em 0}
.status.good{color:var(--ok)} .status.bad{color:var(--err)}
.alert{padding:11px 14px; border-radius:9px; margin:12px 0; font-size:14px; border:1px solid transparent}
.alert.ok{background:var(--okbg); color:var(--ok); border-color:#bbf7d0}
.alert.error{background:var(--errbg); color:var(--err); border-color:#fecaca}
.downloads{display:flex; flex-wrap:wrap; gap:10px; margin:6px 0 4px}
a.download{
  display:inline-block; background:#0f172a; color:#fff; text-decoration:none;
  padding:12px 16px; border-radius:10px; font-weight:600;
}
a.download.zip{background:var(--brand)}
a.download:hover{opacity:.9}
.filelist{list-style:none; padding:0; margin:.3em 0}
.filelist li{padding:5px 0; border-bottom:1px solid var(--line); font-size:14px}
.ok-dot{color:var(--ok)} .err-dot{color:var(--err)}
.warn{color:var(--warn); font-size:13px}
.foot{color:#94a3b8; text-align:center; margin-top:24px; font-size:12.5px}
code{background:#0b1220; color:#cbd5e1; padding:1px 6px; border-radius:5px; font-size:12px}
