* { box-sizing: border-box; }
:root { --bg:#0b0e13; --panel:#161b22; --panel2:#1d232c; --line:#2c333d;
  --text:#e6edf3; --muted:#8b949e; --accent:#f5c518; --accent2:#58a6ff; --danger:#f85149; }
body { margin:0; background:var(--bg); color:var(--text);
  font-family:-apple-system,"PingFang SC","Microsoft YaHei",sans-serif; }
button, input, select { font:inherit; }
button { background:var(--panel2); color:var(--text); border:1px solid var(--line);
  border-radius:8px; padding:8px 16px; cursor:pointer; }
button:hover, button:focus-visible { border-color:var(--accent); outline:none; }
button.primary { background:var(--accent); border-color:var(--accent); color:#111; font-weight:600; }
input, select { background:var(--panel); color:var(--text); border:1px solid var(--line);
  border-radius:8px; padding:10px 12px; }
code { color:#79c0ff; word-break:break-all; }

/* 登录页（仿 APK LoginActivity） */
.login-wrap { min-height:100vh; display:flex; align-items:center; justify-content:center; padding:20px; }
.login-card { width:min(560px,100%); background:var(--panel); border:1px solid var(--line);
  border-radius:16px; padding:32px; }
.login-card h1 { margin:0 0 4px; font-size:28px; }
.login-card .ver { color:var(--muted); margin-bottom:20px; }
.login-card label { display:block; margin:14px 0 6px; color:var(--muted); font-size:14px; }
.login-card input, .login-card select { width:100%; }
.node-test { font-size:13px; color:var(--muted); margin-top:10px; white-space:pre-line; }
.login-card .row-btns { display:flex; gap:10px; margin-top:20px; flex-wrap:wrap; }
.login-foot { margin-top:24px; color:var(--muted); font-size:13px; text-align:center; }
.warn { color:#d29922; background:#2a2111; border:1px solid #5c4512; border-radius:8px;
  padding:10px 14px; font-size:13px; margin-top:16px; }

/* 主界面（仿 APK HomeActivity） */
.topbar { position:sticky; top:0; z-index:20; background:rgba(11,14,19,.95);
  border-bottom:1px solid var(--line); padding:10px 20px;
  display:flex; align-items:center; gap:16px; flex-wrap:wrap; }
.logo { font-size:22px; font-weight:700; color:var(--accent); }
.clock { color:var(--muted); font-size:14px; }
.tabs { display:flex; gap:8px; margin-left:auto; flex-wrap:wrap; }
.tabs button.active { background:var(--accent); border-color:var(--accent); color:#111; font-weight:600; }
.toolbar { display:flex; gap:10px; align-items:center; padding:14px 20px 0; flex-wrap:wrap; }
.toolbar .spacer { flex:1; }
.chips { display:flex; gap:8px; padding:14px 20px 0; flex-wrap:wrap; }
.chip { border-radius:999px; padding:6px 14px; font-size:14px; }
.chip.active { background:var(--accent2); border-color:var(--accent2); color:#fff; }
main { padding:20px; max-width:1400px; margin:0 auto; }
.grid { display:grid; grid-template-columns:repeat(auto-fill,minmax(150px,1fr)); gap:16px; }
.card { background:var(--panel); border:1px solid var(--line); border-radius:10px;
  overflow:hidden; cursor:pointer; }
.card:hover, .card:focus-visible { border-color:var(--accent); outline:none; }
.card img { width:100%; aspect-ratio:3/4; object-fit:cover; display:block; background:var(--panel2); }
.card .name { padding:8px 10px 2px; font-size:14px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.card .remark { padding:0 10px 10px; color:var(--muted); font-size:12px; white-space:nowrap; overflow:hidden; text-overflow:ellipsis; }
.pager { display:flex; gap:10px; justify-content:center; align-items:center; padding:20px 0; color:var(--muted); }
.empty { color:var(--muted); padding:30px 0; text-align:center; }
.error { color:var(--danger); white-space:pre-wrap; word-break:break-all; }

/* 直播（仿 APK LiveActivity：左分组/频道，右播放器） */
.live-layout { display:grid; grid-template-columns:300px 1fr; gap:16px; }
@media (max-width:820px){ .live-layout{ grid-template-columns:1fr; } }
.live-side { background:var(--panel); border:1px solid var(--line); border-radius:10px;
  padding:12px; max-height:75vh; overflow:auto; }
.live-side h3 { margin:8px 0; font-size:15px; color:var(--accent); }
.chan { display:block; width:100%; text-align:left; margin-bottom:6px; background:var(--panel2); }
.chan.active { background:var(--accent); color:#111; border-color:var(--accent); font-weight:600; }
.player-box { background:#000; border-radius:10px; overflow:hidden; }
.player-box video { width:100%; aspect-ratio:16/9; display:block; background:#000; }
.now { padding:10px 4px; color:var(--muted); font-size:14px; }
.now b { color:var(--text); }

/* 详情与播放 */
.detail-head { display:flex; gap:20px; flex-wrap:wrap; }
.detail-head img { width:200px; aspect-ratio:3/4; object-fit:cover; border-radius:10px; background:var(--panel2); }
.detail-info { flex:1; min-width:260px; }
.detail-info h2 { margin:0 0 8px; }
.detail-info p { color:var(--muted); margin:4px 0; font-size:14px; }
.eps { display:flex; gap:8px; flex-wrap:wrap; margin:10px 0 20px; }
.eps button.active { background:var(--accent); color:#111; border-color:var(--accent); }
video.big { width:100%; max-height:75vh; background:#000; border-radius:10px; }

#toast { position:fixed; left:50%; bottom:28px; transform:translateX(-50%);
  background:#21262d; border:1px solid var(--line); color:var(--text);
  padding:10px 18px; border-radius:999px; opacity:0; pointer-events:none; transition:opacity .25s; z-index:99; }
#toast.show { opacity:1; }
.kv { display:grid; grid-template-columns:110px 1fr; gap:8px 14px; font-size:14px; }
.kv dt { color:var(--muted); } .kv dd { margin:0; word-break:break-all; }
