/* Estilos que só existem no webplayer — carregado DEPOIS do style.css (cópia
   byte a byte do app Windows), pelo mesmo motivo do web-ui.js: quanto menos o
   style.css divergir, mais fácil comparar as plataformas. */

/* ---------- Home: posições proporcionais à altura da tela ----------
   O web-ui.js deixa tudo 15% menor, o que aumenta a altura de design do
   canvas (720 -> 720/0.85). As telas de TV ao vivo/Filmes/Séries acompanham
   sozinhas (colunas em % e altura var(--tv-h)), mas a Home tem medidas fixas:
   o banner era min(560px, ...) e parava em 560, então passou a ocupar menos
   da tela — "Escolha seu Streaming" subia e "Novos Filmes" aparecia
   (reportado: "perdemos a posição dos itens").

   Aqui as duas medidas viram fração da altura, com os números do desenho
   original em 720: banner 560/720 da tela e "Novos Filmes" começando em
   729/720 (logo abaixo da borda). Em 720 dá exatamente o de antes; acima
   disso tudo fica no mesmo lugar e só o conteúdo encolhe. */
#dynamic-hero-banner {
    height: calc(var(--tv-h) * 0.7778);
}

/* O conteúdo da seção (título + cards) continua 169px; a folga embaixo é que
   cresce, pra "Novos Filmes" continuar começando fora da primeira tela. */
#home-streaming-section {
    min-height: calc(var(--tv-h) * 0.2347);
}

/* ---------- Cards de streaming um pouco maiores ----------
   Pedido depois da redução geral de 15%: "os ícones dos streaming pode
   aumentar um pouco". +15% em cima dos 176x99 do style.css, mesma proporção
   16:9 das artes. Cabe na seção sem empurrar "Novos Filmes" pra dentro da
   primeira tela: o conteúdo vai a ~184px e o min-height acima reserva
   --tv-h * 0.2347 (~199px com a redução). */
.streaming-row .streaming-logo-card {
    width: 202px;
    height: 114px;
}

/* Cards mais próximos (pedido): o espaço somava 34px — gap de 20px do
   .streaming-row mais o margin-left de 14px do .home-row > * + *. Só o gap
   diminui, o margin fica: 6 + 14 = 20px entre um card e outro. */
.streaming-row {
    gap: 6px;
}

/* ---------- Risco no rodapé da foto da ficha ----------
   Foto (.sd-hero-backdrop) e degradê (.sd-hero-gradient) terminavam na mesma
   linha. Com a escala fracionada do canvas (zoom do Windows, monitor de
   cliente) essa linha cai no meio de um pixel: os dois pintam só metade dele
   e sobra a cor da foto aparecendo — um risco atravessando a ficha na altura
   do elenco (reportado com print de cliente, e continuou só encurtando).
   Agora são duas travas: a foto acaba bem antes do degradê (dentro da faixa
   em que ele já é #000 sólido, 90%+) e ela mesma some em transparência antes
   da própria borda — não sobra borda de foto nenhuma pra aparecer, em
   qualquer escala. */
#vod-modal-inner .sd-hero-backdrop {
    height: 700px;
    -webkit-mask-image: linear-gradient(to bottom, #000 82%, transparent 96%);
    mask-image: linear-gradient(to bottom, #000 82%, transparent 96%);
}
#series-modal-inner .sd-hero-backdrop {
    height: 432px;
    -webkit-mask-image: linear-gradient(to bottom, #000 82%, transparent 96%);
    mask-image: linear-gradient(to bottom, #000 82%, transparent 96%);
}

/* ---------- Barra "Voltar" nas telas de TV ao vivo / Filmes / Séries ----------
   Nessas telas a top-nav some (mostrarCategoria esconde) e a única saída era o
   Esc/Voltar do controle — no navegador, com mouse, ninguém adivinha. A barra
   (montada pelo web-ui.js) ocupa a faixa de cima; as colunas descem pra dar
   lugar a ela. */
.live-tv-layout.web-com-voltar {
    position: relative;
    padding-top: 58px;
}

.web-voltar-barra {
    position: absolute;
    top: 14px;
    /* 14px do padding da tela + 8px do padding da coluna de categorias: o
       botão alinha com a borda esquerda dos cards de categoria. */
    left: 22px;
    right: 22px;
    /* .live-tv-layout > * + * dá margin-left:10px a todo filho depois do
       primeiro — inclusive a barra, que deslocava o botão pra fora do
       alinhamento com os cards. */
    margin: 0;
    height: 36px;
    display: flex;
    align-items: center;
    gap: 16px;
    z-index: 5;
    pointer-events: none;
}

.web-voltar-btn {
    pointer-events: auto;
    display: inline-flex;
    align-items: center;
    gap: 6px;
    height: 36px;
    padding: 0 16px 0 10px;
    /* Canto de 8px, o mesmo das abas da top-nav (.nav-item) — pílula ficou
       fora do padrão do app (reportado). Cores do .vod-btn.secondary. */
    border-radius: 8px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    background: rgba(255, 255, 255, 0.08);
    color: #fff;
    font-family: inherit;
    font-size: 14px;
    font-weight: 600;
    line-height: 1;
    cursor: pointer;
    outline: none;
    transition: background-color 0.15s, color 0.15s, border-color 0.15s, transform 0.15s;
}

.web-voltar-btn svg {
    width: 18px;
    height: 18px;
    flex: 0 0 auto;
}

/* Hover igual ao resto do app (.nav-item.active:hover, .vod-btn:focus):
   fundo branco com texto preto. */
.web-voltar-btn:hover,
.web-voltar-btn:focus-visible {
    background: #fff;
    color: #000;
    border-color: #fff;
}

.web-voltar-btn:active {
    transform: scale(0.96);
}

.web-voltar-dica {
    color: var(--vf-text-dim);
    font-size: 13px;
    font-weight: 500;
    white-space: nowrap;
}

.web-voltar-dica kbd {
    display: inline-block;
    margin: 0 3px;
    padding: 3px 7px;
    border-radius: 6px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    background: rgba(255, 255, 255, 0.08);
    color: var(--vf-text);
    font-family: inherit;
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 0.04em;
    line-height: 1;
}

/* Mesma barra na ficha de filme e de série. Ali ela fica por cima da foto de
   fundo, não sobre preto: fundo do botão um pouco mais escuro e a dica em
   branco com sombra curta, senão some numa foto clara. */
.sd-screen > .web-voltar-barra {
    top: 18px;
    left: 24px;
    right: auto;
    z-index: 20;
}

.sd-screen > .web-voltar-barra .web-voltar-btn:not(:hover):not(:focus-visible),
.web-voltar-player .web-voltar-btn:not(:hover):not(:focus-visible) {
    background: rgba(0, 0, 0, 0.45);
    border-color: rgba(255, 255, 255, 0.3);
}

.sd-screen > .web-voltar-barra .web-voltar-dica,
.web-voltar-player .web-voltar-dica {
    color: rgba(255, 255, 255, 0.85);
    text-shadow: 0 1px 3px rgba(0, 0, 0, 0.8);
}

/* Botões da linha de controles do player (retroceder, play, avançar, ajustar,
   tela cheia): a bola de seleção (:focus do style.css) ficava fora do centro
   do ícone (reportado junto com o botão de tela cheia). Cada um tinha um
   tamanho (ícones de 36px e de 28px), e o play nem era flex — o ícone ficava
   na linha de base. Aqui todos viram o mesmo quadrado de 56px com o ícone no
   centro exato. !important no display/padding porque o index.html põe estilo
   inline (e o play precisa continuar trocando o ícone por style.display). */
#fs-controls-row .fs-control-btn {
    display: flex !important;
    align-items: center;
    justify-content: center;
    flex: 0 0 auto;
    box-sizing: border-box;
    width: 56px;
    height: 56px;
    padding: 0 !important;
    line-height: 0;
}
#fs-controls-row .fs-control-btn svg { flex: 0 0 auto; }
/* O desenho das setas duplas não é centrado no próprio viewBox: ◀◀ ocupa
   x 2,5–20 (centro 11,25 de 24) e ▶▶ x 4–21,5 (centro 12,75). ~1px de
   compensação no tamanho de 36px. */
#fs-btn-rewind svg { transform: translateX(1px); }
#fs-btn-forward svg { transform: translateX(-1px); }

/* Logo do filme/série no player: a caixa (150px, estilo inline no
   index.html) ficava em top:260px fixo — acima do meio (reportado: "logo um
   pouco acima, centralizar"). No web a altura do player acompanha a janela
   (--tv-h não é 720), então px fixo só acertaria um tamanho de tela: centro
   por 50% + translate. !important porque o original é style="" inline. */
#fs-ui > div:has(> #fs-logo) {
    top: 50% !important;
    transform: translateY(-50%);
}

/* Players (filme/série e tela cheia da TV ao vivo): canto de cima à
   esquerda, na altura do título centralizado do player de filme. */
.web-voltar-barra.web-voltar-player {
    top: 26px;
    left: 40px;
    right: auto;
    z-index: 20;
}

/* TV ao vivo: só em tela cheia, e só enquanto o mouse mexeu há pouco
   (web-voltar-acesa, timer no web-ui.js). visibility junto com opacity pra
   não sobrar botão invisível clicável por cima do vídeo. */
.live-player-container > .web-voltar-barra {
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s, visibility 0.3s;
}

.live-player-container.fullscreen.web-voltar-acesa > .web-voltar-barra {
    opacity: 1;
    visibility: visible;
}

/* Botão de tela cheia do navegador na TV ao vivo em tela cheia (web-ui.js):
   canto de cima à DIREITA, espelhando a barra Voltar da esquerda — mesma
   altura (36px), canto de 8px e fundo escuro; acende/apaga junto com ela. */
.web-tela-cheia-aovivo {
    position: absolute;
    top: 26px;
    right: 40px;
    z-index: 20;
    width: 36px;
    height: 36px;
    padding: 0;
    display: flex;
    align-items: center;
    justify-content: center;
    border-radius: 8px;
    border: 1px solid rgba(255, 255, 255, 0.3);
    background: rgba(0, 0, 0, 0.45);
    color: #fff;
    cursor: pointer;
    outline: none;
    opacity: 0;
    visibility: hidden;
    transition: opacity 0.3s, visibility 0.3s, background-color 0.15s, color 0.15s, border-color 0.15s, transform 0.15s;
}
.web-tela-cheia-aovivo svg { display: block; flex: 0 0 auto; }
.live-player-container.fullscreen.web-voltar-acesa > .web-tela-cheia-aovivo {
    opacity: 1;
    visibility: visible;
}
.web-tela-cheia-aovivo:hover {
    background: #fff;
    color: #000;
    border-color: #fff;
}
.web-tela-cheia-aovivo:active {
    transform: scale(0.96);
}

/* Player de filme/série: o .premium-video-player do style.css é object-fit:
   cover (feito pro mini-player 16:9). Na TV o VOD é o player nativo, mas no
   navegador é esse <video>, e a caixa segue a janela (--tv-w/--tv-h), que
   quase nunca é 16:9 — cover ampliava o vídeo e cortava as bordas
   (reportado: "player estourado"). contain igual à tela cheia do ao vivo;
   Zoom/Esticar continuam funcionando (transform no próprio elemento). */
#fullscreen-player {
    object-fit: contain;
    border-radius: 0;
}

/* TV ao vivo: branco um pouco mais baixo (cliente: "tá como se estivesse
   estourando o branco", 2026-09-12). Causa não achada — mesmo .ts e mesmo
   mpegts.js do webplayer antigo. Só brightness(0.94) deu "leve melhorada,
   mas ainda tá": contrast achata as pontas (branco desce mais, preto sobe um
   fio) e o brightness leve segura o meio-tom quase onde era.
   Branco 255 -> ~235, meio 128 -> ~123, preto 0 -> ~10. Pra desfazer, apagar
   este bloco e o do .player-vivo no celular.css. */
#live-player {
    filter: contrast(0.92) brightness(0.96);
}
/* Canal abaixo de 720p (classe posta pelo web-ui.js): "canal com muitas cores
   e baixa qualidade estoura mais". Mais contraste achatado e cor 12% menor.
   Branco ~228, meio ~121, preto ~14. */
#live-player.video-sd {
    filter: contrast(0.88) brightness(0.95) saturate(0.88);
}

/* ---------- Estilo do menu: "Visual clássico" (menu lateral) ----------
   Configurações > Aparência (web-ui.js). "Visual moderno" é a barra superior
   de sempre e não recebe nenhuma regra daqui: tudo abaixo depende de
   html.menu-lateral, menos as peças extras do menu, que ficam escondidas.

   A .top-nav vira filha direta de #home-screen (o web-ui.js muda de lugar)
   e fica fixa na esquerda na Home e em TV ao vivo/Filmes/Séries/Busca. O
   app.js esconde a barra fora da Home com style.display, por isso o
   !important. Recolhida mostra só ícones; abre por cima do conteúdo (sem
   empurrar nada) com o mouse em cima ou quando o teclado entra nela. */
:root {
    --web-rail: 72px;
    --web-rail-aberto: 232px;
}

/* Peças que só existem no menu lateral. */
.web-rail-marca { display: contents; }
.web-rail-simbolo,
.web-rail-icone,
.action-btn > .web-rail-rotulo { display: none; }

/* Espaço do menu: cada tela reserva o seu, em vez de uma faixa única no
   #home-screen. A faixa única ficava preta (fundo do .app-container) ao lado
   do cinza da TV ao vivo/Filmes/Séries (reportado: "essa diferença de cor").
   Assim o fundo de cada tela passa por baixo do menu, que recolhido é
   transparente. Na Home o fundo já é preto, então a margem basta. */
html.menu-lateral .home-scroll-area {
    margin-left: var(--web-rail);
    width: calc(100% - var(--web-rail));
}

html.menu-lateral #home-screen > .top-nav {
    display: flex !important;
    top: 0;
    bottom: 0;
    left: 0;
    right: auto;
    width: var(--web-rail);
    height: auto;
    flex-direction: column;
    justify-content: space-between;
    align-items: stretch;
    padding: 22px 0 18px;
    background: transparent;
    /* Abaixo das fichas (.sd-screen 9000), Configurações (9500), tela cheia
       do ao vivo (9999), player e modais. */
    z-index: 8500;
    overflow: hidden;
    transition: width 0.22s cubic-bezier(0.2, 0.8, 0.2, 1), box-shadow 0.22s ease, background-color 0.22s ease;
}

/* Tela de um streaming (Netflix etc.) já tem a própria barra lateral. */
html.menu-lateral.web-rail-oculto #home-screen > .top-nav { display: none !important; }

/* Aberto fica por cima do conteúdo: aí precisa de fundo sólido. */
html.menu-lateral #home-screen > .top-nav:hover,
html.menu-lateral #home-screen > .top-nav.web-rail-aberto {
    width: var(--web-rail-aberto);
    background-color: #0a0a0a;
    box-shadow: 40px 0 90px 30px rgba(0, 0, 0, 0.92);
}

html.menu-lateral .top-nav .nav-left,
html.menu-lateral .top-nav .nav-right {
    flex-direction: column;
    align-items: stretch;
}

/* Recolhido: só o símbolo. Aberto: a logo completa (que já tem o V). */
html.menu-lateral .web-rail-marca {
    display: block;
    position: relative;
    flex: 0 0 auto;
    height: 44px;
    margin: 0 0 20px 16px;
}
html.menu-lateral .web-rail-marca img {
    position: absolute;
    left: 0;
    margin: 0;
    transition: opacity 0.18s ease;
}
html.menu-lateral .web-rail-simbolo {
    display: block;
    top: 2px;
    width: 40px;
    height: 40px;
    border-radius: 10px;
}
html.menu-lateral .web-rail-marca .nav-logo {
    top: 6px;
    height: 32px;
    opacity: 0;
}
html.menu-lateral .top-nav:hover .web-rail-marca .nav-logo,
html.menu-lateral .top-nav.web-rail-aberto .web-rail-marca .nav-logo { opacity: 1; }
html.menu-lateral .top-nav:hover .web-rail-simbolo,
html.menu-lateral .top-nav.web-rail-aberto .web-rail-simbolo { opacity: 0; }

html.menu-lateral .top-nav .nav-item,
html.menu-lateral .top-nav .action-btn {
    position: relative;
    display: flex;
    align-items: center;
    justify-content: flex-start;
    gap: 16px;
    width: auto;
    height: 46px;
    margin: 6px 12px 0;
    padding: 0 14px;
    border: 0;
    border-radius: 8px;
    color: rgba(255, 255, 255, 0.62);
    font-size: 14.5px;
    font-weight: 700;
    text-align: left;
    white-space: nowrap;
}
html.menu-lateral .top-nav .nav-item:focus,
html.menu-lateral .top-nav .nav-item:hover,
html.menu-lateral .top-nav .action-btn:focus,
html.menu-lateral .top-nav .action-btn:hover {
    background: #fff;
    color: #000;
    transform: none;
    box-shadow: none;
}
html.menu-lateral .top-nav .nav-item.active:not(:focus):not(:hover) { color: #fff; }

/* Seção aberta: traço branco na borda do menu. */
html.menu-lateral .top-nav .nav-item.active::before {
    content: '';
    position: absolute;
    left: -12px;
    top: 11px;
    bottom: 11px;
    width: 3px;
    border-radius: 0 3px 3px 0;
    background: #fff;
}

html.menu-lateral .top-nav .web-rail-icone,
html.menu-lateral .top-nav .action-btn .icon {
    display: block;
    flex: 0 0 auto;
    width: 20px;
    height: 20px;
}

/* Nome some por opacidade, não por display: o handleAndroidBack do app.js
   lê o innerText do botão ativo ("início"), e texto com display:none não
   entra no innerText. */
html.menu-lateral .top-nav .web-rail-rotulo {
    display: inline;
    opacity: 0;
    transition: opacity 0.15s ease;
}
html.menu-lateral .top-nav:hover .web-rail-rotulo,
html.menu-lateral .top-nav.web-rail-aberto .web-rail-rotulo { opacity: 1; }

html.menu-lateral .top-nav .divider {
    width: auto;
    height: 1px;
    margin: 10px 18px 4px;
}

/* Home: sem a barra no topo, o banner não precisa descer 90px; e o conteúdo
   ganha respiro da borda do menu. */
html.menu-lateral .spotlight-content {
    padding-top: 30px;
    padding-left: 32px;
}
html.menu-lateral .home-section { padding-left: 32px; }

/* TV ao vivo/Filmes/Séries: o menu substitui a barra Voltar. position volta
   ao original (static) — com relative, a tela cheia do ao vivo (absolute,
   left:0) começaria depois do menu em vez da borda da tela. */
html.menu-lateral .live-tv-layout.web-com-voltar {
    position: static;
    padding-top: 20px;
}
html.menu-lateral .live-tv-layout > .web-voltar-barra { display: none; }

/* Espaço do menu por dentro da tela (os 14px/40px são os originais do
   style.css): o fundo cinza continua até a borda, por baixo do menu. */
html.menu-lateral .live-tv-layout { padding-left: calc(var(--web-rail) + 14px); }
html.menu-lateral .search-layout { padding-left: calc(var(--web-rail) + 40px); }

/* ---------- Configurações > Aparência ---------- */
.web-estilo-opcoes {
    display: flex;
    flex-wrap: wrap;
    gap: 18px;
}
.web-estilo-opcao {
    flex: 0 0 300px;
    padding: 14px;
    border: 2px solid transparent;
    border-radius: 10px;
    background: #242424;
    color: #fff;
    font-family: inherit;
    text-align: left;
    cursor: pointer;
    outline: none;
}
.web-estilo-opcao.selecionada {
    border-color: #fff;
    background: #2d2d2d;
}
.web-estilo-opcao:hover,
.web-estilo-opcao:focus {
    background: #3a3a3a;
    box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.35);
}
.web-estilo-rodape {
    display: flex;
    align-items: center;
    justify-content: space-between;
    margin-top: 12px;
}
.web-estilo-nome { font-size: 15px; font-weight: 700; }
.web-estilo-sub { margin-top: 3px; font-size: 12.5px; color: #999; }
.web-estilo-radio {
    display: grid;
    place-items: center;
    width: 20px;
    height: 20px;
    border: 2px solid #666;
    border-radius: 50%;
}
.web-estilo-opcao.selecionada .web-estilo-radio { border-color: #fff; }
.web-estilo-opcao.selecionada .web-estilo-radio::after {
    content: '';
    width: 10px;
    height: 10px;
    border-radius: 50%;
    background: #fff;
}

/* Miniaturas dos dois layouts */
.web-mini {
    position: relative;
    height: 140px;
    overflow: hidden;
    border: 1px solid #333;
    border-radius: 6px;
    background: #0b0b0b;
}
.web-mini i { position: absolute; display: block; border-radius: 3px; }
.web-mini .m-hero {
    right: 0; top: 0; width: 70%; height: 62%; border-radius: 0;
    background: linear-gradient(160deg, #6b4526, #1b110a);
    -webkit-mask-image: linear-gradient(to right, transparent, #000 30%);
    mask-image: linear-gradient(to right, transparent, #000 30%);
}
.web-mini .m-titulo { width: 70px; height: 9px; background: #ddd; }
.web-mini .m-sub { width: 50px; height: 5px; background: #777; }
.web-mini .m-card { bottom: 12px; width: 34px; height: 22px; background: #3a3a3a; }
.web-mini-topo .m-titulo { left: 10px; top: 44px; }
.web-mini-topo .m-sub { left: 10px; top: 60px; }
.web-mini-topo .m-aba { top: 8px; width: 22px; height: 6px; background: #666; }
.web-mini-topo .m-aba.ativa { width: 28px; background: #fff; }
.web-mini-topo .m-acoes { top: 8px; right: 10px; width: 30px; height: 6px; background: #555; }
.web-mini-lado .m-rail {
    left: 0; top: 0; bottom: 0; width: 22px; border-radius: 0;
    background: #000; border-right: 1px solid #2a2a2a;
}
.web-mini-lado .m-ico { left: 7px; width: 9px; height: 9px; border-radius: 2px; background: #666; }
.web-mini-lado .m-ico.ativa { left: 6px; width: 11px; height: 11px; background: #fff; }
.web-mini-lado .m-titulo { left: 32px; top: 36px; }
.web-mini-lado .m-sub { left: 32px; top: 52px; }

/* ---------- Busca (web-ui.js, mockup aprovado em 2026-09-13) ----------
   Campo grande no topo, abas Todos/Filmes/Séries e resultados embaixo, no
   lugar do painel da esquerda (que era do teclado de TV, escondido no web) e
   da grade da direita. Os painéis antigos ficam no DOM, escondidos. O app.js
   põe display:flex inline na tela, então a caixa nova é um item flex. */
#search-tv-screen.search-layout {
    padding-top: 26px;
    padding-bottom: 0;
}
#search-tv-screen > .search-left-panel,
#search-tv-screen > .search-right-panel { display: none; }

#search-tv-screen > .wb-busca {
    flex: 1 1 auto;
    min-width: 0;
    height: 100%;
    margin: 0;
    display: flex;
    flex-direction: column;
}

.wb-busca-topo {
    flex: 0 0 auto;
    display: flex;
    align-items: center;
    gap: 16px;
}
/* No menu lateral o Voltar é o próprio menu (e o Esc). */
html.menu-lateral #search-tv-screen .search-back-round-btn { display: none; }

.wb-campo {
    flex: 1 1 auto;
    max-width: 820px;
    height: 56px;
    display: flex;
    align-items: center;
    gap: 14px;
    padding: 0 10px 0 20px;
    background: #1a1a1c;
    border: 1.5px solid rgba(255, 255, 255, 0.14);
    border-radius: 14px;
    cursor: text;
    transition: border-color 0.15s ease, box-shadow 0.15s ease;
}
.wb-campo:focus-within {
    border-color: rgba(255, 255, 255, 0.9);
    box-shadow: 0 0 0 4px rgba(255, 255, 255, 0.06);
}
.wb-campo > svg {
    flex: 0 0 auto;
    width: 22px;
    height: 22px;
    color: #bbb;
}
#search-tv-screen .wb-campo #search-input-field {
    flex: 1 1 auto;
    min-width: 0;
    width: auto;
    height: 100%;
    padding: 0;
    border: 0;
    background: transparent;
    color: #fff;
    font-size: 19px;
    font-weight: 600;
}
#search-tv-screen .wb-campo #search-input-field::placeholder {
    color: #777;
    font-weight: 500;
}

.wb-limpar {
    flex: 0 0 auto;
    width: 36px;
    height: 36px;
    display: flex;
    align-items: center;
    justify-content: center;
    padding: 0;
    border: 0;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.1);
    color: #ddd;
    cursor: pointer;
    outline: none;
}
.wb-limpar svg { width: 16px; height: 16px; stroke-width: 2.5; }
.wb-limpar:hover,
.wb-limpar:focus {
    background: #fff;
    color: #000;
}

.wb-atalho {
    color: #777;
    font-size: 12.5px;
    white-space: nowrap;
}
.wb-atalho kbd {
    display: inline-block;
    margin: 0 3px;
    padding: 3px 7px;
    border-radius: 6px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    background: rgba(255, 255, 255, 0.08);
    color: #eee;
    font-family: inherit;
    font-size: 11px;
    font-weight: 700;
    line-height: 1;
}

/* Abas: branca = aba aberta; anel = onde está o foco do teclado. */
.wb-abas {
    flex: 0 0 auto;
    display: flex;
    gap: 10px;
    margin-top: 18px;
}
.wb-aba {
    height: 36px;
    display: inline-flex;
    align-items: center;
    padding: 0 16px;
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.06);
    color: #ccc;
    font-family: inherit;
    font-size: 13.5px;
    font-weight: 700;
    cursor: pointer;
    outline: none;
}
.wb-aba-qtd {
    margin-left: 8px;
    color: #888;
    font-weight: 600;
}
.wb-aba:hover,
.wb-aba:focus {
    border-color: #fff;
    box-shadow: 0 0 0 3px rgba(255, 255, 255, 0.35);
}
.wb-aba.ativa {
    background: #fff;
    border-color: #fff;
    color: #000;
}
.wb-aba.ativa .wb-aba-qtd { color: #555; }

.wb-resultados {
    flex: 1 1 auto;
    min-height: 0;
    margin-top: 18px;
    padding-bottom: 30px;
    overflow-x: hidden;
    overflow-y: auto;
}

.wb-secao { margin-bottom: 22px; }
.wb-secao-topo {
    display: flex;
    align-items: baseline;
    gap: 10px;
}
.wb-secao-titulo {
    margin: 0;
    font-size: 20px;
    font-weight: 800;
    color: #fff;
}
.wb-secao-qtd {
    color: #888;
    font-size: 13px;
    font-weight: 500;
}
.wb-ver-todos {
    margin-left: auto;
    display: inline-flex;
    align-items: center;
    gap: 4px;
    padding: 4px 8px;
    border: 0;
    border-radius: 6px;
    background: none;
    color: #bbb;
    font-family: inherit;
    font-size: 13px;
    font-weight: 600;
    cursor: pointer;
    outline: none;
}
.wb-ver-todos svg { width: 16px; height: 16px; }
.wb-ver-todos:hover,
.wb-ver-todos:focus {
    background: #fff;
    color: #000;
}

/* Fileira (aba Todos) e grade (Filmes/Séries). 10px em cima e embaixo pra
   borda branca de foco da capa não encostar no corte da rolagem. */
.wb-fileira {
    display: flex;
    gap: 14px;
    padding: 10px 0;
    overflow-x: auto;
    overflow-y: hidden;
}
.wb-grade {
    display: grid;
    grid-template-columns: repeat(auto-fill, 160px);
    gap: 18px 14px;
    padding: 10px 0;
}

.wb-card {
    flex: 0 0 160px;
    width: 160px;
    cursor: pointer;
}
.wb-card .vod-item { width: 100%; }
/* O nome vai embaixo da capa (2 linhas), não por cima cortado. */
.wb-card .vod-item-title { display: none; }
.wb-card-titulo {
    margin-top: 8px;
    min-height: 2.6em;
    color: rgba(255, 255, 255, 0.62);
    font-size: 13.5px;
    font-weight: 600;
    line-height: 1.3;
    display: -webkit-box;
    -webkit-line-clamp: 2;
    -webkit-box-orient: vertical;
    overflow: hidden;
}
.wb-card-titulo mark {
    background: none;
    color: #fff;
    font-weight: 700;
}
.wb-card:hover .wb-card-titulo,
.wb-card:focus-within .wb-card-titulo { color: #fff; }
.wb-card-meta {
    min-height: 16px;
    margin-top: 3px;
    color: var(--vf-accent, #f39c12);
    font-size: 12px;
    font-weight: 600;
}

/* Antes de digitar */
.wb-rotulo {
    margin: 0 0 12px;
    color: #999;
    font-size: 13px;
    font-weight: 700;
    letter-spacing: 1.2px;
    text-transform: uppercase;
}
.wb-chips {
    display: flex;
    flex-wrap: wrap;
    gap: 10px;
    margin-bottom: 8px;
}
.wb-chip {
    display: inline-flex;
    align-items: stretch;
    height: 38px;
    overflow: hidden;
    border: 1px solid rgba(255, 255, 255, 0.1);
    border-radius: 19px;
    background: rgba(255, 255, 255, 0.06);
}
.wb-chip-texto,
.wb-chip-x {
    display: inline-flex;
    align-items: center;
    border: 0;
    background: none;
    color: #ddd;
    font-family: inherit;
    cursor: pointer;
    outline: none;
}
.wb-chip-texto {
    gap: 8px;
    padding: 0 8px 0 14px;
    font-size: 13.5px;
    font-weight: 600;
}
.wb-chip-texto svg { width: 15px; height: 15px; color: #888; }
.wb-chip-x {
    justify-content: center;
    width: 32px;
    padding: 0 4px 0 0;
    color: #888;
}
.wb-chip-x svg { width: 13px; height: 13px; stroke-width: 2.5; }
.wb-chip-texto:hover,
.wb-chip-texto:focus,
.wb-chip-x:hover,
.wb-chip-x:focus {
    background: #fff;
    color: #000;
}
.wb-chip-texto:hover svg,
.wb-chip-texto:focus svg { color: #555; }

/* Sem resultado / nada pra mostrar */
.wb-vazio {
    display: flex;
    flex-direction: column;
    align-items: center;
    padding: 80px 20px;
    text-align: center;
}
.wb-vazio-bola {
    width: 84px;
    height: 84px;
    display: grid;
    place-items: center;
    margin-bottom: 20px;
    border-radius: 50%;
    background: rgba(255, 255, 255, 0.06);
}
.wb-vazio-bola svg { width: 36px; height: 36px; color: #888; }
.wb-vazio h3 {
    margin: 0 0 8px;
    color: #fff;
    font-size: 22px;
    font-weight: 800;
}
.wb-vazio p {
    margin: 0;
    color: #999;
    font-size: 14px;
    line-height: 1.6;
}

/* Carregando: capas cinzas no lugar do spinner */
.wb-esq-capa {
    height: 240px;
    border-radius: 8px;
    background: linear-gradient(100deg, #18181b 30%, #232327 50%, #18181b 70%);
    background-size: 300% 100%;
    animation: wb-brilho 1.3s ease-in-out infinite;
}
.wb-esq-linha {
    width: 90%;
    height: 11px;
    margin-top: 10px;
    border-radius: 4px;
    background: #1c1c1f;
}
.wb-esq-linha.curta { width: 45%; margin-top: 7px; }
@keyframes wb-brilho {
    from { background-position: 100% 0; }
    to { background-position: -50% 0; }
}
@media (prefers-reduced-motion: reduce) {
    .wb-esq-capa { animation: none; }
}

/* ---------- Dica "Novo em Configurações: Aparência" (web-ui.js) ----------
   Mockup opção C, aprovado em 2026-09-13. Uma vez por navegador. Acima do
   menu lateral/Configurações e abaixo dos modais do app (.vod-modal 100000). */
.web-dica-bloqueio {
    position: absolute;
    inset: 0;
    z-index: 99990;
    background: transparent;
}
/* O furo na tela escura é a sombra do próprio anel. */
.web-dica-anel {
    position: absolute;
    z-index: 99991;
    padding: 0;
    border: 2px solid #fff;
    border-radius: 50%;
    background: transparent;
    box-shadow: 0 0 0 9999px rgba(0, 0, 0, 0.66);
    cursor: pointer;
    outline: none;
}
.web-dica-balao {
    position: absolute;
    z-index: 99992;
    width: 340px;
    padding: 18px 18px 16px;
    background: #161616;
    border: 1px solid #333;
    border-radius: 12px;
    color: #fff;
    font-family: 'Inter', sans-serif;
    text-align: left;
}
.web-dica-balao::before {
    content: '';
    position: absolute;
    width: 14px;
    height: 14px;
    background: #161616;
    transform: rotate(45deg);
}
.web-dica-balao.topo::before {
    top: -8px;
    left: calc(var(--seta, 40px) - 7px);
    border-left: 1px solid #333;
    border-top: 1px solid #333;
}
.web-dica-balao.lado::before {
    left: -8px;
    top: calc(var(--seta, 40px) - 7px);
    border-left: 1px solid #333;
    border-bottom: 1px solid #333;
}
.web-dica-bloqueio,
.web-dica-anel,
.web-dica-balao {
    opacity: 0;
    transition: opacity 0.2s ease;
}
.web-dica-bloqueio.visivel,
.web-dica-anel.visivel,
.web-dica-balao.visivel { opacity: 1; }
@media (prefers-reduced-motion: reduce) {
    .web-dica-bloqueio, .web-dica-anel, .web-dica-balao { transition: none; }
}

.web-dica-rotulo {
    font-size: 11px;
    font-weight: 700;
    letter-spacing: 1.2px;
    text-transform: uppercase;
    color: #999;
}
.web-dica-titulo {
    display: flex;
    align-items: center;
    gap: 8px;
    margin: 4px 0 6px;
    font-size: 18px;
    font-weight: 700;
}
.web-dica-titulo svg { width: 18px; height: 18px; }
.web-dica-texto {
    margin: 0;
    font-size: 13.5px;
    line-height: 1.5;
    color: #aaa;
}
.web-dica-texto b { color: #ddd; font-weight: 600; }

/* Miniaturas: as de Configurações > Aparência, menores. */
.web-dica-minis {
    display: flex;
    gap: 8px;
    margin-top: 12px;
}
.web-dica-minis .web-mini { flex: 1 1 0; height: 70px; }
.web-dica-minis .web-mini .m-titulo { top: 26px; width: 44px; height: 6px; }
.web-dica-minis .web-mini .m-sub { top: 37px; width: 30px; height: 4px; }
.web-dica-minis .web-mini .m-card { bottom: 7px; width: 22px; height: 12px; }
.web-dica-minis .web-mini-topo .m-aba { top: 6px; width: 14px; height: 4px; }
.web-dica-minis .web-mini-topo .m-aba.ativa { width: 18px; }
.web-dica-minis .web-mini-topo .m-titulo,
.web-dica-minis .web-mini-topo .m-sub { left: 8px; }
.web-dica-minis .web-mini-lado .m-rail { width: 14px; }
.web-dica-minis .web-mini-lado .m-ico { left: 4px; width: 6px; height: 6px; }
.web-dica-minis .web-mini-lado .m-ico.ativa { left: 4px; width: 6px; height: 6px; }
.web-dica-minis .web-mini-lado .m-titulo,
.web-dica-minis .web-mini-lado .m-sub { left: 22px; }

.web-dica-botoes {
    display: flex;
    gap: 10px;
    margin-top: 14px;
}
.web-dica-btn {
    height: 36px;
    padding: 0 16px;
    border: 1px solid rgba(255, 255, 255, 0.2);
    border-radius: 8px;
    background: rgba(255, 255, 255, 0.08);
    color: #fff;
    font-family: inherit;
    font-size: 13.5px;
    font-weight: 700;
    cursor: pointer;
    outline: none;
}
.web-dica-btn.principal { background: rgba(255, 255, 255, 0.15); border-color: transparent; }
.web-dica-btn:hover,
.web-dica-btn:focus {
    background: #fff;
    border-color: #fff;
    color: #000;
}

/* Miniatura da busca nova (dica da lupa, mockup opção A aprovado em
   2026-09-14): campo, abas e uma fileira de capas com o nome embaixo. */
.web-dica-mini-busca {
    position: relative;
    height: 92px;
    margin-top: 12px;
    overflow: hidden;
    border: 1px solid #333;
    border-radius: 6px;
    background: #121212;
}
.web-dica-mini-busca i { position: absolute; display: block; }
.web-dica-mini-busca .m-campo {
    left: 10px;
    top: 9px;
    right: 40px;
    height: 16px;
    border-radius: 5px;
    background: #1f1f22;
    border: 1px solid #3a3a3e;
}
.web-dica-mini-busca .m-texto {
    left: 26px;
    top: 15px;
    width: 54px;
    height: 5px;
    border-radius: 2px;
    background: #ddd;
}
.web-dica-mini-busca .m-aba {
    top: 32px;
    height: 9px;
    border-radius: 3px;
    background: #333;
}
.web-dica-mini-busca .m-aba.ativa { background: #fff; }
.web-dica-mini-busca .m-card {
    top: 48px;
    width: 26px;
    height: 36px;
    border-radius: 3px;
}
.web-dica-mini-busca .m-nome {
    top: 86px;
    width: 22px;
    height: 3px;
    border-radius: 2px;
    background: #666;
}
