:root{
  --accent:#7c5cff;--accent2:#00d4ff;--bg:#0b0d12;--surface:#151821;
  --surface2:#13161f;--border:#232838;--text:#e8eaf0;--dim:#9aa0b0;--radius:14px;
  --good:#4ade80;
}
*{box-sizing:border-box}
html,body{margin:0;padding:0}
body{background:var(--bg);color:var(--text);
  font-family:-apple-system,BlinkMacSystemFont,system-ui,sans-serif;
  -webkit-font-smoothing:antialiased;padding-bottom:64px}
.logo{font-weight:800;letter-spacing:.02em;
  background:linear-gradient(90deg,var(--accent),var(--accent2));
  -webkit-background-clip:text;background-clip:text;color:transparent}
.topbar{display:flex;align-items:center;justify-content:space-between;
  padding:14px 16px;position:sticky;top:0;background:rgba(11,13,18,.85);
  backdrop-filter:blur(10px);z-index:10}
.topbar .logo{font-size:18px}
.logout button{background:none;border:0;color:var(--dim);font-size:13px}
main{padding:12px 16px}
/* login */
.login{max-width:360px;margin:12vh auto;text-align:center}
.login h1{font-size:24px}.login .sub{color:var(--dim);font-size:14px}
.login form{display:flex;flex-direction:column;gap:12px;margin-top:18px}
.login input{padding:14px;border-radius:var(--radius);border:1px solid var(--border);
  background:var(--surface);color:var(--text);font-size:16px}
.login button,.getbtn{padding:14px;border:0;border-radius:var(--radius);
  background:linear-gradient(135deg,var(--accent),var(--accent2));color:#fff;
  font-weight:700;font-size:15px;box-shadow:0 8px 22px rgba(124,92,255,.4)}
.error{color:#ff6b6b;font-size:13px}
/* search */
.searchbox{width:100%;padding:13px 14px;border-radius:var(--radius);
  border:1px solid var(--border);background:var(--surface);color:var(--text);
  font-size:16px;margin-bottom:14px}
.htmx-indicator{opacity:0;transition:opacity .2s}.htmx-request .htmx-indicator{opacity:1}
.grid{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
@media(min-width:560px){.grid{grid-template-columns:repeat(5,1fr)}}
.poster{position:relative;border-radius:10px;overflow:hidden;aspect-ratio:2/3;
  background:var(--surface);display:block;text-decoration:none}
.poster img{width:100%;height:100%;object-fit:cover;display:block}
.poster .noart{display:flex;align-items:center;justify-content:center;
  height:100%;padding:8px;font-size:11px;color:var(--dim);text-align:center}
.poster .ttl{position:absolute;left:0;right:0;bottom:0;padding:16px 6px 6px;
  font-size:11px;font-weight:600;color:#fff;
  background:linear-gradient(transparent,rgba(0,0,0,.85))}
.empty{color:var(--dim);text-align:center;padding:24px;font-size:14px}
/* detail */
.detail .back{color:var(--dim);text-decoration:none;font-size:14px}
.backdrop{height:180px;margin:10px -16px;background-size:cover;background-position:center;
  position:relative}
.backdrop:after{content:"";position:absolute;inset:0;
  background:linear-gradient(transparent,var(--bg))}
.detail h1{font-size:22px;margin:8px 0 6px}
.detail .meta{display:flex;gap:10px;align-items:center;color:var(--dim);font-size:13px}
.star{color:#ffd166}
.badge{background:#1c2130;border:1px solid var(--border);border-radius:6px;
  padding:1px 7px;font-size:11px;text-transform:capitalize}
.overview{color:#aab0c0;font-size:14px;line-height:1.55;margin:12px 0}
.getbtn{width:100%;margin-top:6px}
.altsrc{display:block;text-align:center;color:var(--accent);font-size:13px;
  margin-top:12px;text-decoration:none}
/* bottom sheet */
.sheet-scrim{position:fixed;inset:0;background:rgba(0,0,0,.5);z-index:20}
.sheet{position:fixed;left:0;right:0;bottom:0;z-index:21;background:var(--surface);
  border-top:1px solid var(--border);border-radius:18px 18px 0 0;padding:8px 0 20px;
  max-height:70vh;overflow:auto}
.grab{width:36px;height:4px;border-radius:2px;background:#3a4154;margin:8px auto}
.sheet h5{margin:4px 16px 8px;font-size:13px;color:#cdd2e0}
.src{display:flex;align-items:center;gap:10px;width:100%;text-align:left;
  padding:12px 16px;background:none;border:0;border-top:1px solid #1d2230;color:var(--text)}
.src .q{font-weight:800;font-size:12px;min-width:46px;color:var(--accent)}
.src .sz{flex:1;font-size:12px;color:#aab0c0;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis}
.src .seed{font-size:12px;color:var(--good)}
/* toast */
.toast{display:flex;gap:10px;align-items:center;margin-top:14px;padding:12px;
  border-radius:12px;background:var(--surface);border:1px solid var(--border)}
.toast .ck{width:24px;height:24px;border-radius:50%;display:flex;align-items:center;
  justify-content:center;flex:none;color:#fff;
  background:linear-gradient(135deg,var(--accent),var(--accent2))}
.toast.err .ck{background:#ff6b6b}
.toast .sub{color:var(--dim);font-size:12px}
/* downloads (compact list) */
.downloads h1{font-size:20px;margin:4px 0 12px}
.cr{display:flex;align-items:center;gap:12px;padding:11px 2px;
  border-bottom:1px solid #181c27}
.cr .m{flex:1;min-width:0}
.cr .t{font-size:13px;font-weight:600;white-space:nowrap;overflow:hidden;
  text-overflow:ellipsis}
.bar{height:6px;border-radius:3px;background:#222838;overflow:hidden;margin-top:6px}
.bar i{display:block;height:100%;
  background:linear-gradient(90deg,var(--accent),var(--accent2))}
.cr.done .bar i{background:var(--good)}
.cr .sub{font-size:11px;color:var(--dim);margin-top:5px}
.cr .pct{font-size:13px;font-weight:700;min-width:34px;text-align:right}
.cr.done .pct{color:var(--good)}
.cr .acts{display:flex;gap:4px}
.cr .acts button{width:30px;height:30px;border-radius:8px;border:0;
  background:#222a3a;color:var(--text);font-size:13px}
/* bottom tab bar */
.tabbar{position:fixed;left:0;right:0;bottom:0;display:flex;
  background:rgba(17,20,28,.92);backdrop-filter:blur(10px);
  border-top:1px solid var(--border);padding-bottom:env(safe-area-inset-bottom)}
.tabbar a{flex:1;text-align:center;padding:11px 0 13px;font-size:11px;
  color:var(--dim);text-decoration:none}
.tabbar a.on{color:var(--accent)}
