:root{
  --bg:#0f1420; --bg2:#161c2b; --card:#1b2233; --line:#28324a;
  --txt:#e6ebf5; --muted:#8a97b1; --accent:#3b82f6; --accent2:#2563eb;
  --ok:#22c55e; --err:#ef4444; --warn:#f59e0b;
  --radius:12px; --mono:'SFMono-Regular',Consolas,'Liberation Mono',Menlo,monospace;
}
*{box-sizing:border-box}
body{margin:0;font-family:system-ui,-apple-system,Segoe UI,Roboto,Arial,sans-serif;
  background:var(--bg);color:var(--txt);line-height:1.5}
a{color:var(--accent);text-decoration:none}
a:hover{text-decoration:underline}
code{font-family:var(--mono);background:#0d1424;padding:1px 5px;border-radius:5px;font-size:.85em;color:#cbd5e1}

.login-body{display:flex;align-items:center;justify-content:center;min-height:100vh;
  background:radial-gradient(1200px 600px at 50% -10%,#1c2a4a,var(--bg))}
.login-card{background:var(--card);border:1px solid var(--line);border-radius:16px;
  padding:34px 30px;width:100%;max-width:380px;box-shadow:0 20px 60px rgba(0,0,0,.45)}
.brand{text-align:center;margin-bottom:20px}
.logo{width:56px;height:56px;border-radius:14px;display:flex;align-items:center;justify-content:center;
  font-weight:800;font-size:20px;letter-spacing:1px;color:#fff;margin:0 auto 12px;
  background:linear-gradient(135deg,var(--accent),#7c3aed)}
.logo.sm{width:32px;height:32px;font-size:13px;border-radius:9px;margin:0}
.brand h1{margin:0;font-size:22px}
.brand .sub{margin:4px 0 0;color:var(--muted);font-size:13px}
.login-card label{display:block;margin:14px 0 6px;font-size:13px;color:var(--muted)}
.login-card input{width:100%;padding:11px 12px;background:#0d1424;border:1px solid var(--line);
  border-radius:9px;color:var(--txt);font-size:14px}
.login-card input:focus{outline:none;border-color:var(--accent)}
.foot-note{margin-top:16px;font-size:12px;color:var(--muted);text-align:center}

.btn{display:inline-flex;align-items:center;justify-content:center;gap:6px;cursor:pointer;
  border:1px solid transparent;border-radius:9px;padding:10px 16px;font-size:14px;font-weight:600;
  color:var(--txt);background:#222b40;transition:.15s}
.btn:hover{text-decoration:none;filter:brightness(1.08)}
.btn-primary{background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff}
.btn-ghost{background:transparent;border-color:var(--line);color:var(--muted)}
.btn-block{width:100%;margin-top:18px}
.btn-sm{padding:6px 12px;font-size:13px}
.btn:disabled{opacity:.6;cursor:not-allowed}

.topbar{background:var(--bg2);border-bottom:1px solid var(--line);position:sticky;top:0;z-index:5}
.topbar-in{max-width:1100px;margin:0 auto;padding:12px 18px;display:flex;align-items:center;justify-content:space-between}
.brand-row{display:flex;align-items:center;gap:10px}
.brand-row strong{font-size:16px}
.tag{font-size:11px;color:var(--muted);border:1px solid var(--line);padding:2px 8px;border-radius:20px}
.top-right{display:flex;align-items:center;gap:12px}
.user{font-size:13px;color:var(--muted)}

.wrap{max-width:1100px;margin:22px auto;padding:0 18px}
.grid{display:grid;grid-template-columns:1fr 1fr;gap:18px}
@media(max-width:820px){.grid{grid-template-columns:1fr}}
.card{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:20px;margin-bottom:18px}
.card h2{margin:0 0 12px;font-size:17px}
.muted{color:var(--muted)}
.hint{font-size:12.5px;color:var(--warn);background:rgba(245,158,11,.08);
  border:1px solid rgba(245,158,11,.25);padding:8px 10px;border-radius:8px;margin:8px 0 0}

.fld-label{display:block;margin:16px 0 6px;font-size:13px;color:var(--muted);font-weight:600}
.inp{width:100%;padding:10px 12px;background:#0d1424;border:1px solid var(--line);
  border-radius:9px;color:var(--txt);font-size:14px;font-family:inherit}
.inp:focus{outline:none;border-color:var(--accent)}
textarea.inp{resize:vertical;font-family:var(--mono);font-size:12.5px}
.dropzone{position:relative;border:2px dashed var(--line);border-radius:11px;padding:26px 14px;
  text-align:center;color:var(--muted);background:#0d1424;cursor:pointer;transition:.15s}
.dropzone.drag{border-color:var(--accent);color:var(--txt)}
.dropzone input[type=file]{position:absolute;inset:0;opacity:0;cursor:pointer}

.alert{padding:11px 14px;border-radius:9px;margin-bottom:16px;font-size:14px}
.alert-ok{background:rgba(34,197,94,.1);border:1px solid rgba(34,197,94,.35);color:#86efac}
.alert-err{background:rgba(239,68,68,.1);border:1px solid rgba(239,68,68,.35);color:#fca5a5}

.stat-row{display:flex;gap:12px;margin-bottom:14px}
.stat{flex:1;background:#0d1424;border:1px solid var(--line);border-radius:10px;padding:14px;text-align:center}
.stat .num{display:block;font-size:26px;font-weight:800;color:#fff}
.stat .lbl{font-size:12px;color:var(--muted)}

.how{margin:0;padding-left:18px}
.how li{margin:7px 0;font-size:13.5px;color:#c7d1e6}

.filelist{margin-top:14px}
.filelist summary{cursor:pointer;color:var(--muted);font-size:13px}
.fl-scroll{max-height:260px;overflow:auto;margin-top:10px}
.fl-row{display:flex;align-items:center;gap:10px;padding:5px 0;border-bottom:1px solid #212a3f;font-size:12.5px}
.fl-path{font-family:var(--mono);color:#c7d1e6;word-break:break-all}
.fl-badge{font-size:10.5px;padding:2px 7px;border-radius:20px;font-weight:700;text-transform:uppercase;letter-spacing:.4px}
.fl-encoded{background:rgba(34,197,94,.15);color:#86efac}
.fl-skipped{background:rgba(245,158,11,.15);color:#fcd34d}
.fl-copy-failed-encode{background:rgba(239,68,68,.15);color:#fca5a5}

.table-scroll{overflow:auto}
.tbl{width:100%;border-collapse:collapse;font-size:13px}
.tbl th,.tbl td{text-align:left;padding:9px 10px;border-bottom:1px solid #212a3f}
.tbl th{color:var(--muted);font-weight:600;font-size:12px;text-transform:uppercase;letter-spacing:.4px}
.tbl tbody tr:hover{background:#0d1424}

.foot{text-align:center;color:var(--muted);font-size:12px;padding:18px 0 8px}
