:root{
  --bg:#0A0E17; --surface:#121826; --elev:#1B2334; --on:#EAF0FF; --muted:#8A96B2;
  --blue:#2B6FF0; --blue2:#3D8BFF; --divider:#232C40; --err:#ff6b6b;
}
*{box-sizing:border-box}
html,body{margin:0;height:100%;background:var(--bg);color:var(--on);
  font-family:-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,sans-serif;-webkit-font-smoothing:antialiased}
.hidden{display:none!important}
.muted{color:var(--muted)}
.err{color:var(--err);margin-top:10px;min-height:18px;font-size:14px}
input,select,button{font-size:16px;font-family:inherit}

/* login */
.login{min-height:100%;display:grid;place-items:center;padding:24px;
  background:radial-gradient(60rem 30rem at 80% -8%,rgba(61,139,255,.12),transparent 60%),var(--bg)}
.login-card{width:100%;max-width:380px}
.login-card h1{color:var(--blue2);margin:0 0 4px;font-size:34px}
.login-card input{width:100%;margin:8px 0;padding:14px;border-radius:12px;border:1px solid var(--divider);
  background:#0e1420;color:var(--on);outline:none}
.login-card input:focus{border-color:var(--blue)}
.login-card .row{display:flex;align-items:center;gap:8px;margin:6px 0 12px;font-size:14px}
.login-card button,#loginBtn{width:100%;padding:14px;border:0;border-radius:999px;background:var(--blue);
  color:#fff;font-weight:700;cursor:pointer}

/* app */
.app{min-height:100%;display:flex;flex-direction:column;padding-bottom:64px}
.topbar{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:10px;padding:12px 14px;
  background:var(--surface);border-bottom:1px solid var(--divider);padding-top:calc(12px + env(safe-area-inset-top))}
.topbar strong{color:var(--blue2)}
.topbar select{flex:1;min-width:0;padding:8px;border-radius:10px;background:var(--elev);color:var(--on);border:1px solid var(--divider)}
.ghost{background:transparent;border:1px solid var(--divider);color:var(--on);border-radius:999px;padding:8px 12px;cursor:pointer}

/* grid / list */
.grid{flex:1;display:grid;grid-template-columns:repeat(auto-fill,minmax(110px,1fr));gap:10px;padding:12px;align-content:start}
.card{cursor:pointer}
.card .poster{width:100%;aspect-ratio:2/3;border-radius:10px;background:var(--elev) center/cover no-repeat;
  display:grid;place-items:center;color:var(--muted);font-size:26px}
.card .name{font-size:12px;margin-top:4px;line-height:1.2;max-height:2.4em;overflow:hidden}
.rowitem{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;gap:10px;
  padding:14px 6px;border-bottom:1px solid var(--divider);cursor:pointer}
.rowitem .fav{font-size:20px;color:var(--muted);padding:4px 8px}
.rowitem .fav.on{color:var(--blue2)}
.loading{grid-column:1/-1;text-align:center;color:var(--muted);padding:40px}

/* tabs */
.tabs{position:fixed;bottom:0;left:0;right:0;display:flex;background:var(--surface);
  border-top:1px solid var(--divider);padding-bottom:env(safe-area-inset-bottom)}
.tabs button{flex:1;padding:14px 0;background:transparent;border:0;color:var(--muted);font-weight:600;cursor:pointer}
.tabs button.on{color:var(--blue2)}

/* search */
.searchbar{position:fixed;top:calc(56px + env(safe-area-inset-top));left:0;right:0;padding:10px 12px;background:var(--surface);z-index:6;border-bottom:1px solid var(--divider)}
.searchbar input{width:100%;padding:12px;border-radius:12px;border:1px solid var(--divider);background:#0e1420;color:var(--on);outline:none}

/* player */
.player{position:fixed;inset:0;background:#000;z-index:20;display:flex;align-items:center;justify-content:center}
.player video{width:100%;height:100%;background:#000}
.close{position:absolute;top:calc(10px + env(safe-area-inset-top));left:12px;z-index:21;background:rgba(0,0,0,.5);
  color:#fff;border:0;border-radius:999px;padding:10px 16px;cursor:pointer}
.playermsg{position:absolute;bottom:16px;left:0;right:0;text-align:center;color:var(--muted);font-size:13px}
