/* --- AIO Video - Mobile Apps: the Smart TV interface. Author: MD OMAR FARUK | www.faruk.bd | Copyright (c) 2026 --- */
/* The TV interface (plugins/mobile-apps/tv.php). Everything is sized in rem and 1rem is 1/120 of the screen's width,
   so 1920x1080 and 1280x720 look the same. Low-end TV browsers: no blur, no big shadows,
   only transform and opacity move. Light is the default; data-mode="dark" switches.
   The remote moves the row's track (transform); a mouse or a finger (.tv-ptr) scrolls the row itself. */
:root{--tv-bg:#eef1f5;--tv-bg2:#ffffff;--tv-card:#ffffff;--tv-text:#121417;--tv-muted:#5a6270;--tv-line:#d5dae2;--tv-ring:var(--tv-focus,#121417);--tv-on:var(--tv-brand,#27c281);color-scheme:light}
:root[data-mode="dark"]{--tv-bg:#0f1115;--tv-bg2:#171a21;--tv-card:#1d212a;--tv-text:#f3f5f9;--tv-muted:#a1a9b8;--tv-line:#2b303b;--tv-ring:var(--tv-focus,#ffffff);color-scheme:dark}
html{font-size:clamp(8px,calc(100vw / 120),24px);background:var(--tv-bg)}
*{box-sizing:border-box}
body.tv{margin:0;min-height:100vh;background:var(--tv-bg);color:var(--tv-text);font:400 1.5rem/1.35 system-ui,-apple-system,"Segoe UI",Roboto,"Noto Sans","Noto Sans Bengali",sans-serif;overflow-x:hidden;-webkit-font-smoothing:antialiased}
.tv a{color:inherit;text-decoration:none}
.tv svg{width:1em;height:1em;flex:none}

/* header: logo, the tabs, the clock */
.tvh{position:sticky;top:0;z-index:5;display:flex;align-items:center;gap:2.5rem;height:7rem;padding:0 4rem;background:var(--tv-bg)}
.tvh-logo img{height:3.25rem;width:auto;max-width:16rem;display:block}
.tvh-d{display:none!important}
:root[data-mode="dark"] .tvh-l{display:none!important}
:root[data-mode="dark"] .tvh-d{display:block!important}
.tvt{display:flex;gap:.75rem;flex:1;min-width:0}
.tvt-a{display:inline-flex;align-items:center;gap:.6rem;height:3.5rem;padding:0 1.4rem;border-radius:1.75rem;border:0;background:transparent;color:var(--tv-muted);font:inherit;font-size:1.35rem;font-weight:600;cursor:pointer;transition:transform .15s ease-out;white-space:nowrap;outline:none}
.tvt-a svg{width:1.5rem;height:1.5rem}
.tvt-a.on{color:var(--tv-text);background:var(--tv-card)}
.tvt-a:focus,.tvt-a.is-f,.tvt-a:hover{color:#fff;background:var(--tv-on);transform:scale(1.08)}
.tvt-mode{margin-left:auto}
.tvt-mode svg+svg{display:none}
:root[data-mode="dark"] .tvt-mode svg:first-child{display:none}
:root[data-mode="dark"] .tvt-mode svg+svg{display:block}
.tvt-a{text-decoration:none}
.tvc,.tvbtn{cursor:pointer;-webkit-tap-highlight-color:transparent}
.tvh-clock{font-size:1.6rem;font-weight:600;color:var(--tv-muted);font-variant-numeric:tabular-nums}

/* rows of cards */
.tvm{padding:1rem 0 6rem}
.tvr{padding:1.25rem 0 .75rem}
.tvr-h{display:flex;align-items:center;gap:.8rem;padding:0 4rem;margin-bottom:1rem;color:var(--tv-muted)}
.tvr-h svg{width:1.8rem;height:1.8rem;color:var(--tv-on)}
.tvr-h h2{margin:0;font-size:2rem;font-weight:700;color:var(--tv-text)}
.tvr-n{font-size:1.2rem;padding:.1rem .7rem;border-radius:1rem;background:var(--tv-card)}
.tvr.is-cur .tvr-h h2{color:var(--tv-on)}
.tvr-view{position:relative;overflow:hidden;padding:1rem 4rem 1.5rem}
/* a mouse or a finger: the row scrolls itself, the arrows show on the row under the pointer */
.tv-ptr .tvr-view{overflow-x:auto;overflow-y:hidden;scrollbar-width:none;-webkit-overflow-scrolling:touch;scroll-behavior:smooth}
.tv-ptr .tvr-view::-webkit-scrollbar{display:none}
.tv-ptr .tvr-track{transform:none!important}
.tvr-arr{display:none;z-index:4;width:4rem;height:4rem;border:0;border-radius:50%;background:var(--tv-card);color:var(--tv-text);box-shadow:0 .2rem .8rem rgba(0,0,0,.25);cursor:pointer;align-items:center;justify-content:center}
.tvr-arr svg{width:2rem;height:2rem}
.tvr{position:relative}
.tv-ptr .tvr .tvr-arr{position:absolute;top:calc(50% - .5rem);margin:0}
.tv-ptr .tvr-prev{left:.5rem}.tv-ptr .tvr-next{right:.5rem}
.tv-ptr .tvr:hover .tvr-arr{display:flex}
.tv-ptr .tvr-arr[disabled]{display:none!important}
.tvr-arr:hover{background:var(--tv-on);color:#fff}
.tvr-track{display:flex;gap:2rem;transition:transform .22s ease-out;will-change:transform}
.tvr-grid .tvr-view{padding-top:.5rem}

.tvc{position:relative;flex:none;display:flex;flex-direction:column;border-radius:1rem;background:var(--tv-card);transition:transform .15s ease-out;outline:.3rem solid transparent;outline-offset:.35rem}
.tvc:focus,.tvc.is-f,.tvc:hover{transform:scale(1.07);outline-color:var(--tv-ring);z-index:2}
.tvc-pic{position:relative;display:block;overflow:hidden;border-radius:1rem 1rem 0 0;background:var(--tv-bg2)}
.tvc-pic img{display:block;width:100%;height:100%;object-fit:cover}
.tvc-ph{display:flex;align-items:center;justify-content:center;width:100%;height:100%;color:var(--tv-muted)}
.tvc-ph svg{width:3.5rem;height:3.5rem}
.tvc-badge{position:absolute;right:.6rem;bottom:.6rem;padding:.15rem .55rem;border-radius:.4rem;background:rgba(0,0,0,.78);color:#fff;font-size:1.1rem;font-weight:600}
.tvc-t{display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden;padding:.8rem 1rem 0;font-size:1.35rem;font-weight:600;line-height:1.3}
.tvc-m{display:block;padding:.3rem 1rem .9rem;font-size:1.1rem;color:var(--tv-muted);white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tvc-wide{width:21rem}
.tvc-wide .tvc-pic{height:11.8rem}
.tvc-tall{width:12rem}
.tvc-tall .tvc-pic{height:21.3rem}
.tvc-text{width:26.4rem;height:15rem;padding:1.2rem 1.4rem;gap:.8rem}
.tvc-who{display:flex;align-items:center;gap:.8rem;min-width:0}
.tvc-who img{width:3rem;height:3rem;border-radius:50%;object-fit:cover;flex:none}
.tvc-who b{font-size:1.3rem;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}
.tvc-who small{margin-left:auto;color:var(--tv-muted);font-size:1.05rem;white-space:nowrap}
.tvc-x{display:-webkit-box;-webkit-line-clamp:5;-webkit-box-orient:vertical;overflow:hidden;font-size:1.3rem;line-height:1.4;color:var(--tv-text)}
.tvc-more .tvc-pic{display:flex;align-items:center;justify-content:center;color:var(--tv-on)}
.tvc-more .tvc-pic svg{width:3.5rem;height:3.5rem}
.tvc-more.tvc-text{align-items:center;justify-content:center}
.tvc-more.tvc-text .tvc-pic{height:auto;background:none}
.tvm-empty{padding:2rem 4rem;font-size:1.6rem;color:var(--tv-muted)}
.tvr-none .tvm-empty{padding-top:0}
.tvm-keys{padding:2rem 4rem 0;font-size:1.1rem;color:var(--tv-muted)}

/* buttons, search */
.tvbtn{display:inline-flex;align-items:center;gap:.7rem;height:4rem;padding:0 2rem;border-radius:2rem;border:0;background:var(--tv-on);color:#fff;font:inherit;font-size:1.4rem;font-weight:700;cursor:pointer;transition:transform .15s ease-out;outline:.3rem solid transparent;outline-offset:.3rem}
.tvbtn svg{width:1.5rem;height:1.5rem}
.tvbtn.sec{background:var(--tv-card);color:var(--tv-text)}
.tvbtn:focus,.tvbtn.is-f,.tvbtn:hover{transform:scale(1.07);outline-color:var(--tv-ring)}
.tvs{display:flex;gap:1.5rem;padding:2rem 4rem 1rem}
.tvs-in{flex:1;max-width:60rem;height:4.5rem;padding:0 1.6rem;border-radius:1rem;border:.2rem solid var(--tv-line);background:var(--tv-card);color:var(--tv-text);font:inherit;font-size:1.6rem}
.tvs-in:focus{border-color:var(--tv-ring);outline:none}

/* sign in */
.tvsi{display:flex;gap:4rem;align-items:center;padding:3rem 4rem}
.tvsi-qr{flex:none;width:22rem;height:22rem;padding:1rem;border-radius:1.2rem;background:#fff;display:flex;align-items:center;justify-content:center}
.tvsi-qr svg{width:100%;height:100%}
.tvsi-spin{width:4rem;height:4rem;border-radius:50%;border:.4rem solid #d0d4da;border-top-color:#333;animation:tvspin 1s linear infinite}
@keyframes tvspin{to{transform:rotate(360deg)}}
.tvsi-side h1{margin:0 0 1.5rem;font-size:3rem}
.tvsi-side ol{margin:0 0 1.5rem;padding-left:2rem;font-size:1.6rem;line-height:1.6;max-width:60rem}
.tvsi-code{display:inline-block;margin-left:.4rem;padding:.1rem .8rem;border-radius:.5rem;background:var(--tv-card);font-size:2.2rem;letter-spacing:.3rem;font-family:ui-monospace,Consolas,monospace}
.tvsi-say{font-size:1.4rem;color:var(--tv-muted);margin:0 0 1.5rem}
.tvsi.is-out .tvsi-qr{opacity:.25}
.tvsi.is-done .tvsi-say{color:var(--tv-on);font-weight:700}
.tvsi-btns{display:flex;gap:1.5rem;flex-wrap:wrap}

/* profile */
.tvp{display:flex;align-items:center;gap:2rem;padding:2.5rem 4rem 1rem}
.tvp-av{width:8rem;height:8rem;border-radius:50%;object-fit:cover}
.tvp-who{margin-right:auto}
.tvp-who h1{margin:0;font-size:2.6rem}
.tvp-who p{margin:.2rem 0 0;color:var(--tv-muted);font-size:1.4rem}
.tvp form{margin:0}
.tvs+.tvm-empty{padding-top:.5rem}
.tvsi-code-only .tvsi-code{font-size:4rem;padding:.4rem 1.4rem}

/* the toast ("Press Back again to leave") and the screensaver */
.tvtoast{position:fixed;left:50%;bottom:4rem;z-index:20;transform:translateX(-50%);padding:1rem 2rem;border-radius:2rem;background:var(--tv-text);color:var(--tv-bg);font-size:1.4rem;font-weight:600}
.tvss{position:fixed;inset:0;z-index:30;background:#000;color:#fff;cursor:none}
.tvss-in{position:absolute;display:flex;flex-direction:column;align-items:center;gap:1rem;transition:left 2s ease,top 2s ease}
.tvss-in img{height:4rem;width:auto;display:none}
.tvss-in .tvh-d{display:block}
.tvss-in b{font-size:6rem;font-weight:300;font-variant-numeric:tabular-nums}
.tvss-in small{font-size:1.2rem;opacity:.55}
@media (prefers-reduced-motion:reduce){.tvc,.tvbtn,.tvt-a,.tvr-track{transition:none}}

/* AIO Video: the icons are filled paths */
.tv svg.tvi{fill:currentColor}
.tvc-badge.is-live{background:#e5484d}
.tvr-next svg{transform:none}.tvr-prev svg{transform:scaleX(-1)}

/* the watch page: the AIO Player on the whole screen */
body.tvw{background:#000;overflow:hidden}
.tvw-stage{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;background:#000}
.tvw-stage > *{width:100vw;max-width:none}
.tvw-stage .aiop,.tvw-stage .vwrap,.tvw-stage .player{width:100vw!important;height:100vh!important;max-width:none!important;max-height:none!important;aspect-ratio:auto!important;border-radius:0!important;margin:0!important}
.tvw-stage video{width:100%;height:100%;object-fit:contain;background:#000}
.tvw-stage .vblocked{width:100vw;height:100vh}
.tvw-top{position:fixed;left:0;right:0;top:0;z-index:50;display:flex;flex-direction:column;gap:.3rem;padding:2.2rem 4rem 4rem;color:#fff;background:linear-gradient(rgba(0,0,0,.75),rgba(0,0,0,0));transition:opacity .4s;pointer-events:none}
.tvw-top b{font-size:2.4rem;line-height:1.2}
.tvw-top span{font-size:1.4rem;opacity:.85}
.tvw-top small{font-size:1.15rem;opacity:.7}
.tvw-top.is-gone{opacity:0}
