/* NEXUS visual layer. Streaming and session logic stay in the original app.js. */
@font-face{font-family:Space;src:url('./nexus-font-3.woff2') format('woff2'),url('./nexus-font-3.ttf') format('truetype');font-weight:400;font-display:swap}
@font-face{font-family:Space;src:url('./nexus-font-5.woff2') format('woff2'),url('./nexus-font-5.ttf') format('truetype');font-weight:600 800;font-display:swap}
@font-face{font-family:Barlow;src:url('./nexus-font-0.woff2') format('woff2'),url('./nexus-font-0.ttf') format('truetype');font-weight:600;font-display:swap}
:root{color-scheme:dark;--bg:#050607;--panel:#101315;--panel2:#171b1d;--border:#ffffff18;--cyan:#b7ff3c;--green:#b7ff3c;--text:#f5f7f4;--muted:#a8b0aa;--danger:#ff6b6b;--header:80px}
*{box-sizing:border-box;margin:0;padding:0}html,body{min-height:100%;height:100%}body{background:radial-gradient(ellipse at 20% 0%,#b7ff3c06,transparent 50%),var(--bg);color:var(--text);font:400 14px/1.5 Space,sans-serif;display:flex;flex-direction:column}a{color:var(--green);text-decoration:none}button,input,select{font:inherit}button{cursor:pointer;touch-action:manipulation}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--green);outline-offset:4px}button{transition:background .14s,border-color .14s,transform .14s}button:active{transform:translateY(1px)}button:disabled{opacity:.5;cursor:not-allowed}::-webkit-scrollbar{width:6px;height:6px}::-webkit-scrollbar-thumb{background:#363d37;border-radius:8px}
header.topbar{height:var(--header);flex-shrink:0;display:flex;align-items:center;justify-content:space-between;gap:16px;padding:0 32px;border-bottom:1px solid var(--border);background:#080a09ed;position:sticky;top:0;z-index:50;backdrop-filter:blur(16px)}.brand{display:flex;align-items:center;gap:12px;font-size:23px;letter-spacing:1.2px;font-weight:600;white-space:nowrap}.brand b{font-weight:400;font-size:10px;letter-spacing:2px;color:var(--muted);display:block;line-height:1}.brand img{object-fit:contain}.status-pill{font-size:11px;padding:7px 12px;border:1px solid var(--border);border-radius:30px;color:var(--muted);white-space:nowrap}.status-pill.live{color:var(--green);border-color:#b7ff3c38;background:#b7ff3c08}.status-pill.err{color:var(--danger);border-color:#ff6b6b50}
main{flex:1;display:flex;min-height:0}.stage{flex:1;min-width:0;padding:32px;display:flex;flex-direction:column;gap:24px}.player-wrap{position:relative;width:100%;aspect-ratio:16/9;background:#000;overflow:hidden;border:1px solid #ffffff1c;border-radius:18px;box-shadow:0 24px 80px #0008}.player-wrap:fullscreen{border:0;border-radius:0;aspect-ratio:auto}video{width:100%;height:100%;display:block;background:#000}.overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:center;flex-direction:column;gap:14px;padding:24px;text-align:center;background:radial-gradient(ellipse at center,#182210c9,#050607ef 65%)}.overlay.hidden{display:none}.overlay p{max-width:340px;color:var(--muted);font-size:13px}.overlay .big{font:600 28px/1.1 Barlow,sans-serif;color:var(--text)}.spinner{height:48px;width:48px;border:2px solid #b7ff3c1a;border-top-color:var(--green);border-radius:50%;animation:spin 1.8s linear infinite;margin-bottom:8px}@keyframes spin{to{transform:rotate(360deg)}}
.meta-row{display:flex;justify-content:space-between;align-items:center;gap:20px;flex-wrap:wrap}.now-playing{min-width:0}.now-playing span{display:block;font-size:12px;color:var(--muted);overflow-wrap:anywhere}#npChannel{font:600 28px/1.2 Barlow,sans-serif;color:var(--text);margin-bottom:6px}.controls-row{display:flex;gap:8px;flex-wrap:wrap}.icon-btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;min-height:44px;border:1px solid var(--border);border-radius:10px;background:#ffffff04;padding:10px 15px;font-size:12px;font-weight:600;color:var(--text)}.icon-btn:hover{background:#b7ff3c0c;border-color:#b7ff3c50;color:var(--green)}
.icon-only-btn{width:44px;min-width:44px;height:44px;padding:0!important;border-radius:10px;background:#111416;border:1px solid rgba(255,255,255,.1);color:#a2afb8;transition:all .2s ease}
.icon-only-btn:hover{background:rgba(183,255,60,.1);border-color:rgba(183,255,60,.45);color:var(--green);transform:translateY(-1px)}
aside.sidebar{width:350px;flex-shrink:0;display:flex;flex-direction:column;min-height:0;background:#0b0e0e;border-left:1px solid var(--border);transition:margin-right .25s ease,width .25s ease}
aside.sidebar.collapsed{margin-right:-350px;display:none}
.side-head{padding:26px 20px 14px;display:flex;flex-direction:column}
.list-kicker,.login-kicker,.scene-kicker,.scene-foot{font-size:10px;font-weight:700;letter-spacing:2.5px;color:var(--muted);text-transform:uppercase}
.list-kicker{margin-bottom:8px}
.side-head h2{font:600 25px/1.2 Barlow,sans-serif;letter-spacing:-.4px;margin:0 0 18px;color:#fff}
.side-search{width:100%;min-height:46px;border:1px solid var(--border);border-radius:10px;padding:11px 14px;background:#131718;color:var(--text);font-size:13px;margin-bottom:12px;transition:border-color .2s,background .2s}
.side-search:focus{border-color:rgba(183,255,60,.5);background:#171c1e}
.side-search::placeholder{color:#717c74}
.list{flex:1;overflow-y:auto;padding:10px 16px;overscroll-behavior:contain}.chan{display:flex;align-items:center;gap:13px;padding:12px;min-height:64px;border:1px solid transparent;border-radius:12px;cursor:pointer;color:var(--text);font-size:13px;margin-bottom:3px}.chan:hover{background:#ffffff05}.chan.active{background:#b7ff3c0b;border-color:#b7ff3c35;color:var(--green)}.chan .logo{width:38px;height:38px;object-fit:contain;flex-shrink:0;border-radius:8px;background:#24292a;padding:4px}.chan .name{flex:1;min-width:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.empty-hint{padding:35px 18px;text-align:center;line-height:1.7;color:var(--muted);font-size:13px}
#loginGate{position:fixed;inset:0;z-index:100;display:grid;grid-template-columns:minmax(0,1.2fr) minmax(390px,1fr);align-items:center;background:var(--bg);overflow-y:auto}#loginGate.hidden{display:none}.login-scene{align-self:stretch;min-height:100svh;display:flex;flex-direction:column;justify-content:space-between;padding:48px 56px;position:relative;isolation:isolate;background:linear-gradient(0deg,#050607 0%,#05060760 50%,#0506079c 100%),url('./stadium.webp') center/cover;border-right:1px solid var(--border)}.scene-copy{padding:100px 0 70px}.scene-copy>span{color:var(--green);font-size:11px;letter-spacing:2px}.scene-copy h2{font:600 clamp(62px,7vw,110px)/.94 Barlow,Impact,sans-serif;letter-spacing:-1px;margin:22px 0 26px}.scene-copy p{max-width:290px;color:#c3cbc2;line-height:1.7}.scene-foot{font-size:9px}.login-card{width:100%;max-width:460px;margin:auto;padding:48px 42px}.login-mark{display:block;object-fit:contain;margin-bottom:35px}.login-kicker{color:var(--green)}.login-card h1{font:600 48px/1.1 Barlow,sans-serif;letter-spacing:-.5px;margin:12px 0}.login-card .sub{font-size:12px;color:var(--muted);margin-bottom:36px}.field{margin-bottom:20px}.field label{font-size:12px;color:#c3cbc2}.field input{width:100%;min-height:54px;margin-top:8px;border:1px solid #ffffff22;border-radius:10px;background:#121617;color:var(--text);padding:14px 16px;font-size:16px}.field input::placeholder{color:#717c74}.field input:focus{border-color:#b7ff3c88}
.pass-wrapper{position:relative;display:flex;align-items:center;width:100%}
.pass-wrapper input{padding-right:48px!important}
.btn-toggle-pass{position:absolute;right:12px;top:calc(50% + 4px);transform:translateY(-50%);background:transparent;border:0;padding:6px;cursor:pointer;color:#717c74;display:flex;align-items:center;justify-content:center;border-radius:6px;transition:color .15s ease}
.btn-toggle-pass:hover{color:var(--green)}
.btn{background:var(--green);color:#101606;border:1px solid var(--green);border-radius:10px;min-height:52px;padding:14px 22px;font-weight:600;font-size:14px}.btn:hover{background:#cbff72}.btn.ghost{background:var(--panel);color:var(--text);border-color:var(--border)}.login-card .btn{width:100%;margin-top:8px}.login-err{display:none;color:var(--danger);font-size:13px;margin-top:18px;padding:12px;border-left:2px solid var(--danger);background:#ff6b6b08}.login-foot{font-size:11px;color:var(--muted);line-height:1.8;margin-top:28px;padding-top:24px;border-top:1px solid var(--border)}
@media(min-width:861px){body{height:100vh;height:100dvh;overflow:hidden}.player-wrap{max-height:calc(100vh - 230px);max-height:calc(100dvh - 230px)}.stage{overflow-y:auto}}

/* ================= FORMATOS DE ANÚNCIOS (NEXUS ADS) ================= */

/* Formato 1: Lower-Third Flutuante Transitório (Colado na base inferior, proporção ampla) */
.ad-lower-third{position:absolute;bottom:30px;left:50%;transform:translateX(-50%) translateY(160%);opacity:0;pointer-events:none;z-index:25;width:auto;max-width:96%;background:transparent!important;border:none!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;padding:0;display:flex;align-items:flex-end;justify-content:center;transition:transform .65s cubic-bezier(.16,1,.3,1),opacity .5s ease}
.ad-lower-third.active{transform:translateX(-50%) translateY(0);opacity:1;pointer-events:auto}
.ad-lt-card{position:relative;background:transparent!important;border-radius:0;box-shadow:none!important;border:none!important;overflow:visible;display:inline-flex}
.ad-lt-img-link{display:block}
.ad-lt-img-link img{height:auto;max-height:160px;width:auto;max-width:min(1100px,94vw);display:block;object-fit:contain;filter:drop-shadow(0 12px 32px rgba(0,0,0,.9));transition:transform .2s ease}
.ad-lt-img-link:hover img{transform:scale(1.008)}
.ad-lt-close{position:absolute;top:6px;right:8px;background:transparent!important;border:none!important;box-shadow:none!important;color:rgba(255,255,255,.6);font-size:12px;font-weight:400;cursor:pointer;padding:2px 4px;line-height:1;z-index:27;transition:all .15s ease}
.ad-lt-close:hover{color:#fff;transform:scale(1.25)}

/* Formato 2: Badge de Patrocínio Transitório (Topo e Centro da Tela) */
.ad-corner-badge{position:absolute;top:20px;left:50%;right:auto;z-index:35;display:block;background:transparent;border:none;padding:0;opacity:0;pointer-events:none;transform:translateX(-50%) translateY(-150%);transition:opacity .4s ease,transform .55s cubic-bezier(.16,1,.3,1);filter:drop-shadow(0 10px 24px rgba(0,0,0,.85))}
.ad-corner-badge.visible{opacity:1;pointer-events:auto;transform:translateX(-50%) translateY(0)}
.ad-corner-badge img{height:72px;width:auto;max-width:min(440px,90vw);display:block;object-fit:contain;transition:transform .2s ease}
.ad-corner-badge:hover img{transform:scale(1.04)}

/* MODO TELA CHEIA GARANTIDO COM ANÚNCIOS (NATIVE & CSS FULLSCREEN) */
.player-wrap:fullscreen,.player-wrap:-webkit-full-screen,.player-wrap.fullscreen-mode{position:fixed!important;inset:0!important;width:100vw!important;height:100vh!important;max-height:none!important;z-index:9999999!important;border-radius:0!important;border:none!important;background:#000!important;aspect-ratio:auto!important;box-shadow:none!important;overflow:hidden!important;margin:0!important;padding:0!important}
body.in-fullscreen{overflow:hidden!important}
.player-wrap:fullscreen video,.player-wrap:-webkit-full-screen video,.player-wrap.fullscreen-mode video{width:100%!important;height:100%!important;background:#000!important}
.player-wrap:fullscreen.zoom-fill video,.player-wrap:-webkit-full-screen.zoom-fill video,.player-wrap.fullscreen-mode.zoom-fill video{object-fit:cover!important;transform:scale(1.04)}

.player-wrap:fullscreen .ad-corner-badge,.player-wrap:-webkit-full-screen .ad-corner-badge,.player-wrap.fullscreen-mode .ad-corner-badge{z-index:2147483647!important;top:28px!important;left:50%!important;right:auto!important;position:absolute!important}
.player-wrap:fullscreen .ad-lower-third,.player-wrap:-webkit-full-screen .ad-lower-third,.player-wrap.fullscreen-mode .ad-lower-third{z-index:2147483647!important;position:absolute!important;bottom:24px!important;left:50%!important;width:auto!important;max-width:96%!important}
.player-wrap:fullscreen .ad-lt-img-link img,.player-wrap:-webkit-full-screen .ad-lt-img-link img,.player-wrap.fullscreen-mode .ad-lt-img-link img{max-height:220px!important;max-width:min(1300px,96vw)!important;width:auto!important}

/* Opção de ajuste de ampliar (estilo YouTube para caber na tela inteira) */
.player-wrap video{width:100%!important;height:100%!important;display:block;background:#000;object-fit:contain;transition:object-fit .2s ease,transform .2s ease}
.player-wrap.zoom-fill video,.player-wrap:fullscreen.zoom-fill video,.player-wrap:-webkit-full-screen.zoom-fill video,.player-wrap.fullscreen-mode.zoom-fill video{object-fit:cover!important;transform:scale(1.08)!important}

/* Indicador sutil de enquadramento (estilo YouTube) */
.zoom-toast{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%) scale(.92);background:rgba(8,10,9,.88);border:1px solid rgba(183,255,60,.35);color:#fff;padding:10px 18px;border-radius:12px;font-size:13px;font-weight:600;letter-spacing:.5px;pointer-events:none;opacity:0;z-index:2147483647;transition:opacity .2s ease,transform .2s ease;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}
.zoom-toast.show{opacity:1;transform:translate(-50%,-50%) scale(1)}

/* Seletor de Categorias no Padrão dos Canais (Direto na lista, até embaixo, sem quadrante verde) */
.cat-select-row{display:flex;align-items:center;gap:10px;margin-top:0;margin-bottom:14px;position:relative}
.cat-dropdown-trigger{flex:1;min-height:46px;border:1px solid var(--border);border-radius:10px;padding:11px 14px;background:#131718;color:var(--text);font-size:13px;display:flex;align-items:center;justify-content:space-between;gap:8px;cursor:pointer;transition:border-color .2s,background .2s}
.cat-dropdown-trigger:hover{border-color:rgba(183,255,60,.4);background:#171c1e}
.cat-dropdown-trigger.active-mode{border-color:rgba(183,255,60,.6);background:rgba(183,255,60,.08);color:var(--green)}
.cat-dropdown-trigger.active-mode .cat-dropdown-arrow{transform:rotate(180deg);color:var(--green)}
.cat-current-label{white-space:nowrap;overflow:hidden;text-overflow:ellipsis;font-weight:600}
.cat-dropdown-arrow{color:#a2afb8;transition:transform .25s ease;flex-shrink:0}

/* Cards de categoria na lista principal: IDÊNTICO aos canais, rola até embaixo, sem quadrante verde */
.chan.cat-card{display:flex;align-items:center;gap:13px;padding:12px 14px;min-height:58px;border:1px solid transparent;border-radius:12px;cursor:pointer;color:var(--text);font-size:13px;margin-bottom:3px;background:transparent;transition:background .15s}
.chan.cat-card:hover{background:#ffffff05}
.chan.cat-card.active{background:#b7ff3c0b;border-color:#b7ff3c35;color:var(--green)}
.chan.cat-card .cat-icon-badge{width:38px;height:38px;border-radius:10px;background:#14181a;display:flex;align-items:center;justify-content:center;flex-shrink:0;border:1px solid rgba(255,255,255,.07);box-shadow:inset 0 1px 0 rgba(255,255,255,.04);transition:all .2s ease}
.chan.cat-card:hover .cat-icon-badge{border-color:rgba(183,255,60,.35);background:rgba(183,255,60,.06)}
.cat-n-icon{width:18px;height:20px;display:block;object-fit:contain}
.chan.cat-card .cat-count-badge{font-size:11px;color:#717c74;margin-left:auto;font-variant-numeric:tabular-nums}

.btn-toggle-compact{width:46px;height:46px;background:#131718;border:1px solid var(--border);border-radius:10px;color:#a2afb8;cursor:pointer;display:inline-flex;align-items:center;justify-content:center;flex-shrink:0;transition:all .2s ease}
.btn-toggle-compact:hover{background:rgba(183,255,60,.12);border-color:rgba(183,255,60,.4);color:#b7ff3c}
.toggle-icon{transition:transform .3s cubic-bezier(.16,1,.3,1)}
.sidebar.channels-retracted .toggle-icon{transform:rotate(180deg)}
.sidebar:not(.channels-retracted) .toggle-icon{transform:rotate(0deg)}

/* Comportamento da lista: RETRAÍDA = lista 100% oculta (só banner)
   EXPANDIDA = lista ocupa tudo e passa POR CIMA do banner */
aside.sidebar{position:relative}
.sidebar.channels-retracted .list{display:none!important}
.sidebar:not(.channels-retracted) .list{flex:1;min-height:0;max-height:none;overflow-y:auto;position:relative;z-index:3;background:#0b0e0e}
.sidebar:not(.channels-retracted) .ad-vertical-billboard{display:none}

/* Banner Vertical de Anúncio na Barra Lateral: NUNCA CORTA (object-fit: contain) */
.ad-vertical-billboard{flex:1;min-height:280px;margin:16px 18px 24px;display:flex;align-items:center;justify-content:center;position:relative;background:transparent;border:none;overflow:hidden}
.ad-billboard-img-link{width:100%;height:100%;display:flex;align-items:center;justify-content:center;position:relative;opacity:0;transform:translateY(8px);transition:opacity .6s cubic-bezier(.16,1,.3,1),transform .6s ease;pointer-events:none}
.ad-billboard-img-link.visible{opacity:1;transform:translateY(0);pointer-events:auto}
.ad-billboard-img-link img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;border-radius:14px;display:block;box-shadow:0 12px 35px rgba(0,0,0,.85),0 0 20px rgba(183,255,60,.1);transition:transform .2s ease}
.ad-billboard-img-link:hover img{transform:scale(1.02)}

@media(max-width:1000px){
  main{flex-direction:column;overflow-y:auto;height:auto}
  .stage{padding:18px 16px;gap:16px}
  .player-wrap{max-height:none}
  .meta-row{align-items:flex-start}
  aside.sidebar{
    width:100%!important;
    max-width:none!important;
    border-left:none!important;
    border-top:1px solid var(--border)!important;
    position:static!important;
    transform:none!important;
    visibility:visible!important;
    box-shadow:none!important;
    background:#0b0e0e!important;
    display:flex!important;
    flex-direction:column!important;
    padding-bottom:30px!important;
  }
  .sidebar.channels-retracted .list{display:none!important}
  .sidebar:not(.channels-retracted) .list{max-height:500px;overflow-y:auto}
  .side-head{padding:20px 16px 12px}
  .cat-select-row{margin-bottom:12px}
  .login-scene{display:none}
  #loginGate{display:flex;padding:24px;background:radial-gradient(ellipse at 50% 0%,#b7ff3c0b,transparent 60%),var(--bg)}
  .login-card{padding:32px 12px;max-width:420px}
  .login-card h1{font-size:48px}
  .login-mark{margin-bottom:28px}
}
@media(max-width:480px){header.topbar{gap:8px;padding:0 12px}.topbar>div:last-child{gap:5px!important}.topbar .icon-btn{font-size:11px;padding:8px 10px}.status-pill{max-width:106px;overflow:hidden;text-overflow:ellipsis}.brand img{width:23px}.brand{font-size:16px}.brand b{letter-spacing:1.3px}.stage{padding:16px 12px}.player-wrap{border-radius:12px}.overlay{padding:12px;gap:7px}.overlay .big{font-size:22px}.overlay p{font-size:11px}.spinner{width:30px;height:30px;margin:0}.controls-row{width:100%}.controls-row .icon-btn{flex:1}#npChannel{font-size:26px}.login-card h1{font-size:44px}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}

/* Cinematic entry, based on the user's supplied still and 11-second recording. */
#loginGate{grid-template-columns:minmax(0,1fr) minmax(390px,32%);background:#070809;isolation:isolate}
.login-scene{display:block;min-height:100svh;height:100%;padding:0;overflow:hidden;border:0;background:#090b0c;position:relative;isolation:isolate}
.poster-wall{position:absolute;left:-12%;top:-32%;width:124%;height:164%;display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:18px;transform:rotate(-11deg);transform-origin:center;filter:saturate(.85)}
.poster-column{min-width:0;overflow:visible}.poster-column:nth-child(even){padding-top:100px}.poster-column:nth-child(3){padding-top:45px}.poster-reel{animation:poster-rise 88s linear infinite;will-change:transform}.poster-column:nth-child(even) .poster-reel{animation-direction:reverse;animation-duration:104s}.poster-column:nth-child(3) .poster-reel{animation-duration:96s}
.poster-group{display:flex;flex-direction:column;gap:18px;padding-bottom:18px}.poster-tile{aspect-ratio:2/3;border-radius:10px;overflow:hidden;background:#14181a;box-shadow:0 8px 20px #0005;border:1px solid #ffffff14}.poster-tile img{width:100%;height:100%;display:block;object-fit:cover}.poster-veil{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,#05060712 0%,#05060720 50%,#070809 100%),linear-gradient(0deg,#070809eb 0%,#07080940 25%,#07080926 70%,#07080966 100%)}
.mural-signature{position:absolute;bottom:70px;left:50px;right:90px;display:flex;align-items:center;justify-content:space-between;gap:25px;color:#d1d7cc;font-size:10px;letter-spacing:2px;line-height:1.8;z-index:1}
.mural-brand-mark{display:flex;align-items:center}
.mural-n-icon{width:32px;height:36px;display:block;object-fit:contain;filter:drop-shadow(0 4px 14px rgba(0,0,0,.95))}
.mural-signature>span:last-child{text-align:right;font-size:9px;color:#aab3a4}
.pause-glyph{font-size:15px;line-height:1}
.login-card{max-width:430px;padding:42px 36px;align-self:center;position:relative;background:transparent;border:0;box-shadow:none}
.login-identity{text-align:center;margin-bottom:50px}.mark-stage{display:grid;place-items:center;perspective:450px;height:86px;margin-bottom:13px}.login-mark{width:58px;height:65px;object-fit:contain;margin:0;filter:drop-shadow(0 5px 16px #b7ff3c22);animation:brand-turn 14s ease-in-out infinite;transform-origin:center}.login-wordmark{font:600 31px/1 Space,sans-serif;letter-spacing:2px;color:#f5f7f4}.login-wordmark span{display:block;font-size:9px;font-weight:400;letter-spacing:5.5px;color:#b7ff3c;margin-top:9px;margin-left:5px}.login-identity p{font-size:12px;color:#8e9890;margin-top:16px}
.login-heading{text-align:center;margin-bottom:24px}.login-card h1{font:600 23px/1.3 Space,sans-serif;letter-spacing:-.6px;margin:0 0 8px}.login-card .sub{margin:0;font-size:12px;color:#9ba59b}.login-card .field{margin-bottom:18px}.login-card .field label{display:block;font-size:11px;letter-spacing:.25px;color:#aab3aa;margin-bottom:8px}.login-card .field input{margin:0;min-height:58px;border-radius:13px;background:#111314;border-color:#ffffff1c;padding:16px 18px;box-shadow:inset 0 1px 0 #ffffff03}.login-card .field input:hover{border-color:#ffffff30}.login-card .field input:focus{border-color:#b7ff3c80;background:#141914}.login-card .btn{display:flex;align-items:center;justify-content:space-between;min-height:54px;border-radius:12px;margin-top:12px;padding:14px 20px;font-size:14px;box-shadow:0 5px 24px #b7ff3c09}.login-card .btn span{font-size:20px;font-weight:400}

/* QR Code Integrado e Compacto na tela de Login */
.login-qr-inline{display:flex;align-items:center;gap:15px;margin-top:22px;padding:12px 14px;background:#0d1113;border:1px solid rgba(183,255,60,.25);border-radius:14px;box-shadow:0 8px 24px rgba(0,0,0,.6)}
.qr-inline-box{background:#fff;padding:6px;border-radius:10px;display:flex;align-items:center;justify-content:center;flex-shrink:0;box-shadow:0 0 16px rgba(183,255,60,.2)}
.qr-inline-img{width:86px;height:86px;display:block;border-radius:4px}
.qr-inline-info{flex:1;min-width:0}
.qr-inline-title{font-size:11px;font-weight:700;letter-spacing:1.5px;color:var(--green);display:block;margin-bottom:3px}
.qr-inline-sub{font-size:11px;color:#9ba59b;margin:0 0 6px;line-height:1.35}
.qr-inline-pin{font-size:12px;color:#c3cbc2;font-family: Space, sans-serif; font-variant-numeric: tabular-nums}
.qr-inline-pin strong{color:#b7ff3c;font-size:16px;letter-spacing:2px;font-weight:700}
.login-foot{text-align:center;font-size:10px;line-height:1.9;padding-top:20px;margin-top:20px;color:#869187}
@keyframes poster-rise{to{transform:translateY(-50%)}}@keyframes brand-turn{0%,100%{transform:rotateY(-18deg) rotateZ(-3deg)}50%{transform:rotateY(18deg) rotateZ(3deg)}}
#loginGate.motion-paused .poster-reel,#loginGate.motion-paused .login-mark,#loginGate.hidden .poster-reel,#loginGate.hidden .login-mark{animation-play-state:paused}
@media(min-width:1800px){#loginGate{grid-template-columns:minmax(0,1fr) 560px}.login-card{max-width:460px}.poster-wall{gap:22px}.poster-group{gap:22px;padding-bottom:22px}.login-identity{margin-bottom:62px}}
@media(max-width:1100px) and (min-width:761px){#loginGate{grid-template-columns:minmax(0,1fr) 390px}.poster-wall{width:158%;left:-35%;grid-template-columns:repeat(4,minmax(0,1fr))}.poster-column:last-child{display:none}.login-card{padding:36px 30px}.mural-signature{left:28px;right:28px}.mural-signature>span:last-child{display:none}}
@media(max-width:760px){#loginGate{display:flex;flex-direction:column;justify-content:flex-start;align-items:stretch;padding:0;overflow-x:hidden;background:#070809}.login-scene{display:block;height:280px;min-height:280px;max-height:280px;width:100%;flex-shrink:0;align-self:auto}.poster-wall{width:130%;left:-15%;top:-105%;height:245%;gap:12px;grid-template-columns:repeat(4,minmax(0,1fr));transform:rotate(-12deg)}.poster-column:last-child{display:none}.poster-column:nth-child(even){padding-top:65px}.poster-group{gap:12px;padding-bottom:12px}.poster-tile{border-radius:8px}.poster-veil{background:linear-gradient(0deg,#070809 0%,#07080960 35%,#07080922 100%)}.mural-signature{display:none}.motion-label{display:none}.login-card{width:100%;max-width:410px;padding:0 28px calc(28px + env(safe-area-inset-bottom));margin:-50px auto 0;align-self:center;z-index:1}.login-identity{margin-bottom:28px}.mark-stage{height:60px;margin-bottom:10px}.login-mark{width:43px;height:49px}.login-wordmark{font-size:26px}.login-wordmark span{font-size:8px;letter-spacing:4.5px}.login-identity p{display:none}.login-heading{margin-bottom:24px}.login-card h1{font-size:22px}.login-card .field{margin-bottom:15px}.login-card .field input{min-height:55px}.login-foot{margin-top:22px;padding-top:19px}}
@media(max-width:380px){.login-scene{height:225px;min-height:225px}.login-card{padding-left:22px;padding-right:22px;margin-top:-38px}.login-card h1{font-size:20px}}
@media(prefers-reduced-motion:reduce){.poster-reel,.login-mark{animation:none!important;will-change:auto}.poster-column:nth-child(even) .poster-reel{transform:translateY(-12%)}}

/* ==========================================================================
   JOGO OFICIAL DE TV — SEMPRE 100% TELA CHEIA, NUNCA REDIMENSIONA
   Exigência do Daniel: o <video> nunca encolhe, nunca transforma, nunca
   recebe transições de width/height/transform (isso quebra o decodificador
   de hardware da Smart TV Samsung e causa "squeezes" esquisitos).
   O antigo formato de anúncio "squeeze-back" (que encolhia o vídeo a 76%)
   foi eliminado. O painel de publicidade abaixo é somente um card
   discreto que aparece por cima, SEM jamais tocar em width/height/transform
   do <video>.
   ========================================================================== */
.player-shell.squeeze-active video,
.player-shell.colab-active video {
  width: 100% !important;
  height: 100% !important;
  transform: none !important;
}

/* ==========================================================================
   MODO TELA DIVIDIDA "BRADESCO" (DVE / SPLIT LATERAL SUAVE)
   A tag <video> NUNCA muda de width/height (isso é o que travava o
   decodificador de hardware da Smart TV Samsung). O <video> permanece
   SEMPRE 100%/100% de .player-shell (constante). O encolhimento visual é
   feito só por "transform: scale()" (GPU/compositing, não afeta o buffer
   de decodificação) + um frame externo com overflow:hidden que recorta
   exatamente no limite do valor escalado (calculado via JS em --split-scale
   para não distorcer nem cortar o jogo). Mantém 16:9 perfeito, sem esticar.
   ========================================================================== */
.player-video-frame {
  width: 100%;
  height: 100%;
  overflow: hidden;
  transition: width 0.6s cubic-bezier(0.22, 1, 0.36, 1);
}

.player-shell.split-active .player-video-frame {
  width: calc(100% - 340px);
}

.player-shell.split-active video {
  transform: scale(var(--split-scale, 0.72)) !important;
}

/* Coluna direita do modo Bradesco: streamer (PiP) no topo + publi/QR abaixo */
.player-shell.split-active .yt-pip-container {
  top: 20px !important;
  right: 20px !important;
  left: auto !important;
  bottom: auto !important;
  width: 300px !important;
}

.player-shell.split-active .ad-squeeze-col {
  top: 254px !important;
  bottom: auto !important;
  right: 20px !important;
  left: auto !important;
  width: 300px !important;
  max-width: 300px !important;
}

/* Painel discreto de publicidade/QR (companion) — some abaixo do PiP quando
   ele estiver em um canto direito, nunca encolhe ou distorce o jogo. */
.ad-squeeze-col {
  position: absolute;
  width: 380px;
  max-width: 42vw;
  right: 28px;
  bottom: 70px;
  top: auto;
  left: auto;
  background: linear-gradient(180deg, rgba(11,17,20,0.85) 0%, rgba(7,9,10,0.92) 100%);
  border: 1px solid rgba(183,255,60,0.25);
  border-radius: 12px;
  box-shadow: 0 12px 30px rgba(0,0,0,0.6);
  z-index: 40;
  display: flex;
  flex-direction: column;
  padding: 14px 16px;
  transform: translateY(12px);
  opacity: 0;
  pointer-events: none;
  transition: transform 0.5s cubic-bezier(0.22, 1, 0.36, 1), opacity 0.4s ease;
  will-change: transform, opacity;
}

.ad-squeeze-col.panel-active {
  transform: translateY(0);
  opacity: 1;
  pointer-events: auto;
}

.squeeze-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 10px;
  border-bottom: 1px solid rgba(255,255,255,0.1);
  padding-bottom: 8px;
}

.squeeze-badge {
  font-family: Space, sans-serif; font-variant-numeric: tabular-nums;
  font-size: 10px;
  letter-spacing: 1.5px;
  color: var(--neon);
  font-weight: 700;
}

.squeeze-timer {
  font-family: Space, sans-serif; font-variant-numeric: tabular-nums;
  font-size: 12px;
  color: #8f9a90;
  background: rgba(255,255,255,0.06);
  padding: 2px 8px;
  border-radius: 10px;
}

.squeeze-content {
  display: flex;
  flex-direction: row;
  align-items: center;
  text-align: left;
  flex: 1;
  justify-content: flex-start;
  gap: 12px;
}

.squeeze-brand-logo {
  max-width: 48px;
  height: auto;
  filter: drop-shadow(0 4px 14px rgba(183,255,60,0.3));
  flex-shrink: 0;
}

.squeeze-text {
  display: flex;
  flex-direction: column;
  gap: 3px;
  min-width: 0;
}

.squeeze-title {
  font-size: 13px;
  font-weight: 700;
  color: #fff;
  letter-spacing: -0.3px;
}

.squeeze-desc {
  font-size: 11px;
  color: #9ba59b;
  line-height: 1.35;
  max-width: 210px;
}

.squeeze-qr-box {
  margin-left: auto;
  background: #fff;
  padding: 6px;
  border-radius: 8px;
  display: flex;
  flex-direction: column;
  align-items: center;
  box-shadow: 0 0 20px rgba(183,255,60,0.25);
  flex-shrink: 0;
}

.squeeze-qr-img {
  width: 56px;
  height: 56px;
  object-fit: contain;
}

.squeeze-qr-box span {
  display: none;
}

/* ==========================================================================
   MINI-PLAYER PIP YOUTUBE FLUTUANTE (MODO COLAB)
   Janela flutuante sólida de 400px que pode ser movida entre os 4 cantos
   da tela. NUNCA altera a estrutura nem redimensiona o <video> da TV.
   ========================================================================== */

.yt-pip-container {
  position: absolute;
  width: 380px;
  background: #090c0e !important;
  border: 1px solid rgba(183,255,60,0.5);
  border-radius: 12px;
  overflow: hidden;
  box-shadow: 0 15px 45px rgba(0,0,0,0.95), 0 0 25px rgba(183,255,60,0.2);
  z-index: 65;
  display: none;
  flex-direction: column;
  transition: top 0.35s ease, bottom 0.35s ease, left 0.35s ease, right 0.35s ease;
}

.yt-pip-container.active {
  display: flex !important;
}

/* 4 Posições do PiP nos cantos da TV */
.yt-pip-container.pos-tr {
  top: 24px;
  right: 28px;
  bottom: auto;
  left: auto;
}
.yt-pip-container.pos-br {
  bottom: 70px;
  right: 28px;
  top: auto;
  left: auto;
}
.yt-pip-container.pos-bl {
  bottom: 70px;
  left: 28px;
  top: auto;
  right: auto;
}
.yt-pip-container.pos-tl {
  top: 24px;
  left: 28px;
  bottom: auto;
  right: auto;
}

/* Botões e controles do Colab na Barra Inferior */
.colab-bottom-bar {
  display: flex;
  align-items: center;
  gap: 6px;
  background: rgba(11, 16, 13, 0.65);
  border: 1px solid rgba(255, 255, 255, 0.08);
  border-radius: 8px;
  padding: 3px 8px;
  margin-left: 8px;
}

.bottom-colab-btn {
  background: transparent !important;
  border: 1px solid rgba(255, 255, 255, 0.12) !important;
  border-radius: 6px !important;
  color: #cfd8ce !important;
  padding: 4px 8px !important;
  font-size: 11px !important;
  font-weight: 600 !important;
  cursor: pointer;
  transition: all 0.15s ease;
}

.bottom-colab-btn:hover {
  color: #f4f6f1 !important;
}

/* Foco do controle remoto: o unico verde da barra, para a TV mostrar onde esta. */
.bottom-colab-btn:focus-visible {
  color: var(--neon) !important;
}

/* 23/09 (Daniel): sem vermelho. "Fechar" segue os vizinhos; o X ja diz o que faz. */

/* Estado ligado: texto verde, sem fundo cheio. */
.bottom-colab-btn.btn-split-toggle.btn-split-on {
  color: var(--neon) !important;
}

.bottom-sync-val {
  font-family: Space, sans-serif; font-variant-numeric: tabular-nums;
  font-size: 12px;
  font-weight: 700;
  color: #cfd8ce;
  min-width: 22px;
  text-align: center;
}
.player-shell video {
  width: 100% !important;
  height: 100% !important;
  object-fit: contain;
  background: #000;
}

/* 4 Posições do PiP nos cantos da tela */
.yt-pip-container.pos-tr {
  top: 24px;
  right: 28px;
  bottom: auto;
  left: auto;
}
.yt-pip-container.pos-br {
  bottom: 70px;
  right: 28px;
  top: auto;
  left: auto;
}
.yt-pip-container.pos-bl {
  bottom: 70px;
  left: 28px;
  top: auto;
  right: auto;
}
.yt-pip-container.pos-tl {
  top: 24px;
  left: 28px;
  bottom: auto;
  right: auto;
}

/* Cabeçalho do PiP / Lateral — Auto-hide com fade suave */
.yt-pip-header {
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  display: flex;
  justify-content: space-between;
  align-items: center;
  background: linear-gradient(180deg, rgba(9, 12, 14, 0.95) 0%, rgba(9, 12, 14, 0.8) 70%, transparent 100%);
  padding: 8px 10px 14px;
  z-index: 10;
  opacity: 0;
  transform: translateY(-8px);
  pointer-events: none;
  transition: opacity 0.25s ease, transform 0.25s ease;
  gap: 5px;
}

/* Revela ao passar o cursor / mouse ou tocar no PiP */
.yt-pip-container:hover .yt-pip-header,
.yt-pip-container.show-header .yt-pip-header {
  opacity: 1;
  transform: translateY(0);
  pointer-events: auto;
}

.yt-pip-title-box {
  display: flex;
  align-items: center;
  gap: 5px;
  min-width: 0;
  flex: 1;
}

.yt-pip-live-dot {
  color: #ef4444;
  font-size: 8px;
  animation: pulse 1.5s infinite;
  flex-shrink: 0;
}

.yt-pip-title {
  font-size: 11px;
  font-weight: 700;
  color: #f0f3f5;
  white-space: nowrap;
  overflow: hidden;
  text-overflow: ellipsis;
}

.yt-pip-tools {
  display: flex;
  align-items: center;
  gap: 3px;
  flex-shrink: 0;
}

.yt-sync-btn {
  background: #182228;
  border: 1px solid #2a3a44;
  color: #f0f3f5;
  font-family: Space, sans-serif; font-variant-numeric: tabular-nums;
  font-size: 10px;
  font-weight: 700;
  padding: 3px 5px;
  border-radius: 4px;
  cursor: pointer;
}

.yt-sync-btn:hover {
  border-color: var(--neon);
  color: var(--neon);
}

.yt-sync-val {
  font-family: Space, sans-serif; font-variant-numeric: tabular-nums;
  font-size: 11px;
  font-weight: 700;
  color: var(--neon);
  min-width: 22px;
  text-align: center;
}

.yt-pip-btn-audio {
  background: rgba(183,255,60,0.15);
  border: 1px solid rgba(183,255,60,0.4);
  color: var(--neon);
  font-size: 10px;
  font-weight: 700;
  padding: 3px 6px;
  border-radius: 4px;
  cursor: pointer;
  white-space: nowrap;
}

.yt-pip-tool-btn {
  background: #182228;
  border: 1px solid #2a3a44;
  color: #c0cad0;
  font-size: 10px;
  font-weight: 700;
  padding: 3px 5px;
  border-radius: 4px;
  cursor: pointer;
  white-space: nowrap;
}

.yt-pip-tool-btn:hover {
  border-color: var(--neon);
  color: var(--neon);
}

.yt-pip-btn-close {
  background: transparent;
  border: 0;
  color: #cfd8ce;
  font-size: 12px;
  font-weight: 900;
  padding: 2px 7px;
  border-radius: 4px;
  cursor: pointer;
  margin-left: 2px;
  flex-shrink: 0;
}

.yt-pip-btn-close:hover {
  color: #f4f6f1;
}

.yt-pip-body {
  width: 100%;
  aspect-ratio: 16/9;
  background: #000;
  position: relative;
  flex-shrink: 0;
}

.yt-pip-body iframe, .yt-pip-body #ytPlayerMount {
  width: 100%;
  height: 100%;
  border: none;
}

@media (max-width: 650px) {
  /* Jogo permanece 100% tela cheia mesmo em modo Colab no mobile/tablet.
     Apenas o PiP flutuante encolhe um pouco para caber na tela menor. */
  .yt-pip-container {
    width: 220px;
  }
}

/* Aviso do Collab: mesma tipografia e paleta do player, sem chamada para outro parceiro. */
.yt-offline {
  width: 100%;
  height: 100%;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 8px;
  padding: 20px;
  text-align: center;
  background: var(--panel);
}
.yt-offline-title {
  font-family: Space, sans-serif;
  font-variant-numeric: tabular-nums;
  font-size: 12px;
  font-weight: 600;
  line-height: 1.5;
  max-width: 260px;
  color: var(--text);
}
.yt-offline-msg {
  font-family: Space, sans-serif;
  font-size: 10px;
  line-height: 1.45;
  color: var(--muted);
}
.yt-offline-msg:empty { display: none; }

.yt-pip-footer {
  background: #0d1114;
  padding: 8px 12px;
  border-top: 1px solid rgba(255,255,255,0.06);
}

.yt-pip-sync-bar {
  display: flex;
  align-items: center;
  justify-content: space-between;
}

.yt-sync-label {
  font-size: 11px;
  color: #8f9a90;
}

.yt-sync-btn {
  background: #182228;
  border: 1px solid #2a3a44;
  color: #f0f3f5;
  font-family: Space, sans-serif; font-variant-numeric: tabular-nums;
  font-size: 12px;
  font-weight: 700;
  padding: 4px 10px;
  border-radius: 6px;
  cursor: pointer;
}

.yt-sync-btn:hover {
  border-color: var(--neon);
  color: var(--neon);
}

.yt-sync-val {
  font-family: Space, sans-serif; font-variant-numeric: tabular-nums;
  font-size: 13px;
  font-weight: 700;
  color: var(--neon);
  min-width: 32px;
  text-align: center;
}

/* ==========================================================================
   MODAL DE SELEÇÃO DE LIVE DO YOUTUBE
   ========================================================================== */
.yt-modal-overlay {
  position: fixed;
  inset: 0;
  background: rgba(0,0,0,0.85);
  backdrop-filter: blur(14px);
  -webkit-backdrop-filter: blur(14px);
  z-index: 100;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 20px;
}

.yt-modal-overlay.active {
  display: flex;
}

.yt-modal-card {
  background: #0d1215;
  border: 1px solid rgba(183,255,60,0.3);
  border-radius: 16px;
  padding: 28px 24px;
  max-width: 600px;
  width: 100%;
  box-shadow: 0 25px 60px rgba(0,0,0,0.9);
}

.yt-modal-header {
  display: flex;
  justify-content: space-between;
  align-items: center;
  margin-bottom: 8px;
}

.yt-modal-header h2 {
  font-size: 18px;
  font-weight: 700;
  color: #fff;
}

.yt-modal-close {
  background: transparent;
  border: none;
  color: #8f9a90;
  font-size: 18px;
  cursor: pointer;
}

.yt-modal-desc {
  font-size: 13px;
  color: #9ba59b;
  margin-bottom: 20px;
  line-height: 1.45;
}

.yt-presets-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
  margin-bottom: 22px;
}

.yt-preset-card {
  background: #12181b;
  border: 1px solid #1f2a30;
  border-radius: 12px;
  padding: 14px 16px;
  text-align: left;
  cursor: pointer;
  display: flex;
  flex-direction: column;
  gap: 4px;
  transition: all 0.2s;
}

.yt-preset-card:hover, .yt-preset-card:focus {
  background: rgba(183,255,60,0.08);
  border-color: var(--neon);
  box-shadow: inset 0 0 0 1px var(--neon);
}

.yt-preset-badge {
  font-size: 10px;
  font-weight: 700;
  letter-spacing: 1px;
  color: var(--neon);
}

.yt-preset-card strong {
  font-size: 14px;
  color: #fff;
}

.yt-preset-card small {
  font-size: 11px;
  color: #8f9a90;
}

.yt-custom-input-box {
  border-top: 1px solid rgba(255,255,255,0.08);
  padding-top: 18px;
}

.yt-custom-input-box label {
  font-size: 12px;
  color: #8f9a90;
  margin-bottom: 8px;
  display: block;
}

.yt-input-row {
  display: flex;
  gap: 8px;
}

.yt-input-row input {
  flex: 1;
  background: #090c0e;
  border: 1px solid #233139;
  border-radius: 8px;
  padding: 10px 12px;
  color: #fff;
  font-size: 13px;
  outline: none;
}

.yt-input-row input:focus {
  border-color: var(--neon);
}

.yt-btn-start {
  background: var(--neon);
  color: #07090a;
  border: none;
  border-radius: 8px;
  font-weight: 700;
  font-size: 13px;
  padding: 10px 18px;
  cursor: pointer;
}


/* Seletor de qualidade (23/09): retangulo discreto com as opcoes lado a lado.
   Mesma cor de texto dos vizinhos ("Ampliar"); verde so na opcao atual e no
   foco do controle remoto. Especificidade .player-bottom para vencer a regra
   generica de botao da barra no tv.css. */
.player-bottom .seletor-qualidade {
  display: inline-flex;
  align-items: stretch;
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: 7px;
  overflow: hidden;
  align-self: center;
  flex-shrink: 0;   /* barra apertada (celular) nao pode espremer e cortar as opcoes */
}
.player-bottom .seletor-qualidade button {
  background: transparent;
  border: 0;
  border-radius: 0;
  padding: 5px 11px;
  font-size: 11px;
  font-weight: 600;
  letter-spacing: 0.6px;
  color: #abb5aa;
  box-shadow: none;
}
.player-bottom .seletor-qualidade button + button {
  border-left: 1px solid rgba(255, 255, 255, 0.14);
}
.player-bottom .seletor-qualidade button:hover {
  color: #f4f6f1;
  background: transparent;
}
.player-bottom .seletor-qualidade button[aria-pressed="true"] {
  color: var(--neon);
}
.player-bottom .seletor-qualidade button:focus-visible {
  outline: 1px solid var(--neon);
  outline-offset: -1px;
  box-shadow: none;
}

/* Icones da barra nunca encolhem: em barra apertada o flex espremia o icone de
   "Tela cheia" para 10px enquanto os outros ficavam em 16px (medido 23/09). */
.player-bottom svg.icon {
  flex-shrink: 0;
}
