:root {
  --casa: #ef4444;         /* Banker */
  --visitante: #3b82f6;    /* Player */
  --empate: #f5a623;
  --ok: #34d399;
  /* Vermelho SEMÂNTICO de erro (LOSS/alerta). NÃO é a cor de um lado do jogo —
     por isso não é sobrescrito quando um jogo troca --casa (ex.: Futebol Brasil = verde). */
  --loss: #ef4444;
  --ouro: #d4af37;         /* cor do botão de menu */
  --bg: #05080f;
  --painel: #0d1522;
  --linha: #1b2740;
  --txt: #eef3fc;
  --sub: #7a89a6;
  --cor: var(--linha);     /* cor da sequência atual (o body troca) */

  /* Fundo "synthwave" trazido do cyber: brilhos rosa/roxo/azul sobre roxo escuro,
     + grade de 42px. Aplicado no <html>, então vale pra TODAS as páginas. */
  --bg-synthwave:
    radial-gradient(72% 60% at 6% 84%, rgba(236,72,153,0.30), transparent 55%),
    radial-gradient(72% 66% at 97% 14%, rgba(139,92,246,0.32), transparent 55%),
    radial-gradient(48% 50% at 94% 84%, rgba(59,130,246,0.22), transparent 55%),
    radial-gradient(65% 60% at 50% 44%, rgba(8,6,18,0.72), transparent 72%),
    linear-gradient(160deg,#0a0818,#07060f 55%,#0b0820);
  --bg-grid-line: rgba(255,255,255,0.05);
}

/* Fundo global (todas as páginas). O gradiente vai no <html> e fica fixo; a grade
   entra num pseudo-elemento fixo por cima. O .glow (que muda de cor por jogo)
   continua funcionando em cima disso. */
html {
  background: var(--bg-synthwave);
  background-attachment: fixed;
  background-color: #07060f;
  min-height: 100%;
}
/* A GRADE DE FUNDO SAIU (a pedido do dono).
   Era um body::before fixo desenhando linhas de 42px em toda página. O .glow, que é o
   brilho colorido por jogo, continua — ele é outra camada (z-index -1) e não tem relação
   com a grade. */

* { box-sizing: border-box; margin: 0; padding: 0; }

/* Banner de instalação do app: desce do topo e empurra o conteúdo (insiste em toda página) */
#pwa-banner {
  position: fixed; top: 0; left: 0; right: 0; z-index: 10000;
  transform: translateY(-100%); transition: transform .45s cubic-bezier(.2, .85, .25, 1);
  background: linear-gradient(180deg, #0f1b2e, #0b1424);
  border-bottom: 1px solid color-mix(in srgb, var(--ok) 42%, var(--linha));
  box-shadow: 0 16px 34px -16px rgba(0, 0, 0, .85);
}
#pwa-banner.show { transform: translateY(0); }
.pwab-in { display: flex; align-items: center; gap: 12px; max-width: 660px; margin: 0 auto; padding: 10px 14px; }
.pwab-logo { width: 42px; height: 42px; border-radius: 11px; overflow: hidden; flex: none; background: #0a1120; border: 1px solid color-mix(in srgb, var(--ok) 40%, var(--linha)); }
.pwab-logo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.pwab-txt { flex: 1; min-width: 0; }
.pwab-t1 { font-size: 14px; font-weight: 800; color: var(--txt); line-height: 1.15; }
.pwab-t2 { font-size: 11.5px; color: var(--sub); margin-top: 2px; }
.pwab-btn { flex: none; background: var(--ok); color: #05221a; font-weight: 800; font-size: 13px; border: 0; border-radius: 999px; padding: 10px 18px; cursor: pointer; box-shadow: 0 8px 20px -8px color-mix(in srgb, var(--ok) 80%, transparent); }
.pwab-btn:active { transform: scale(.96); }
.pwab-x { flex: none; background: transparent; border: 0; color: var(--sub); font-size: 22px; line-height: 1; cursor: pointer; padding: 2px 6px; }
body.pwa-push { padding-top: 74px; }

/* ---------- Tendência (gráfico estilo forex) ---------- */
.tend-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.tend-badge {
  font-size: 11px; font-weight: 800; letter-spacing: .8px; text-transform: uppercase;
  padding: 4px 11px; border-radius: 999px; color: var(--c);
  background: color-mix(in srgb, var(--c) 16%, #0a1120);
  border: 1px solid color-mix(in srgb, var(--c) 45%, var(--linha));
}
.tend-svg { display: block; width: 100%; height: 108px; overflow: visible; }
.tend-zero { stroke: var(--linha); stroke-width: 1; stroke-dasharray: 3 3; }
.tend-area { stroke: none; }
.tend-area.acima { fill: color-mix(in srgb, var(--casa) 26%, transparent); }
.tend-area.abaixo { fill: color-mix(in srgb, var(--visitante) 26%, transparent); }
.tend-linha { fill: none; stroke: var(--txt); stroke-width: 2; stroke-linejoin: round; stroke-linecap: round; }
.tend-mm { fill: none; stroke-linejoin: round; stroke-linecap: round; }
.tend-mm.rapida { stroke: var(--ok); stroke-width: 1.6; }
.tend-mm.lenta { stroke: var(--sub); stroke-width: 1.4; stroke-dasharray: 5 4; opacity: .85; }
.tend-legenda { display: flex; align-items: center; gap: 14px; margin-top: 10px; font-size: 11px; font-weight: 700; color: var(--sub); }
.tend-legenda i { display: inline-block; width: 14px; height: 3px; border-radius: 2px; margin-right: 6px; vertical-align: middle; }
.tend-legenda .lg-mmr { background: var(--ok); }
.tend-legenda .lg-mml { background: var(--sub); }
.tend-saldo { margin-left: auto; font-size: 13px; font-weight: 900; color: var(--txt); font-variant-numeric: tabular-nums; }
/* Bloqueio VIP do gráfico (sem acesso): desenho falso ofuscado + cadeado por cima */
.tend.locked { position: relative; overflow: hidden; }
.tend-blur { filter: blur(4px); opacity: .5; pointer-events: none; }
.tend-lock {
  position: absolute; inset: 0; z-index: 5; display: flex; align-items: center; gap: 14px;
  padding: 16px 18px; border-radius: 16px; background: rgba(7, 13, 24, .55);
}

/* Zoom do gráfico: − (mais rodadas) / + (menos rodadas) */
.tend-zoomer { display: inline-flex; align-items: center; gap: 6px; margin-left: 8px; }
.tend-zoomer button {
  width: 22px; height: 22px; border-radius: 7px; cursor: pointer; line-height: 1;
  font-size: 14px; font-weight: 900; color: var(--sub);
  background: #0a1120; border: 1px solid var(--linha);
}
.tend-zoomer button:hover { color: var(--txt); border-color: color-mix(in srgb, var(--ok) 45%, var(--linha)); }
.tend-zoomer b { font-size: 11px; font-weight: 800; color: var(--txt); min-width: 22px; text-align: center; font-variant-numeric: tabular-nums; }

/* Botão de ampliar + modo tela cheia do gráfico */
.tend-zoom {
  flex: none; display: grid; place-items: center; width: 30px; height: 30px;
  border-radius: 9px; cursor: pointer; color: var(--sub);
  background: #0a1120; border: 1px solid var(--linha);
}
.tend-zoom:hover { color: var(--txt); border-color: color-mix(in srgb, var(--ok) 45%, var(--linha)); }
.tend-zoom svg { width: 15px; height: 15px; }
.tend.expandido {
  position: fixed; inset: 10px; z-index: 9998; margin: 0;
  display: flex; flex-direction: column; justify-content: center;
  box-shadow: 0 30px 80px -20px rgba(0, 0, 0, .9);
}
.tend.expandido .tend-svg { height: auto; flex: 1; min-height: 200px; max-height: 72vh; }
.tend.expandido .tend-legenda { font-size: 13px; }
body.tend-aberto { overflow: hidden; }

/* ---------- Loader de navegação ("Acessando…" ao trocar de página) ---------- */
#nav-loader {
  position: fixed; inset: 0; z-index: 99999;
  display: flex; align-items: center; justify-content: center;
  background: rgba(5, 8, 15, .72); backdrop-filter: blur(3px);
  opacity: 0; pointer-events: none; transition: opacity .2s ease;
}
#nav-loader.show { opacity: 1; pointer-events: all; }
.nl-box { display: flex; flex-direction: column; align-items: center; gap: 14px; }
.nl-spin {
  width: 46px; height: 46px; border-radius: 50%;
  border: 3px solid rgba(255, 255, 255, .1); border-top-color: var(--ok);
  animation: nl-spin .8s linear infinite; box-shadow: 0 0 18px -4px var(--ok);
}
.nl-txt { font-size: 13px; font-weight: 800; letter-spacing: 1.5px; color: var(--txt); text-transform: uppercase; }
@keyframes nl-spin { to { transform: rotate(360deg); } }

/* ---------- Splash de abertura (logo animada 5s, depois revela a página) ---------- */
#splash {
  position: fixed; inset: 0; z-index: 100000;
  display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 22px;
  background: radial-gradient(80% 60% at 50% 38%, #0b1a2a, #05080f 70%);
  opacity: 1; transition: opacity .55s ease, transform .55s ease;
}
#splash.hide { opacity: 0; transform: scale(1.06); pointer-events: none; }
html.no-splash #splash { display: none; }
.sp-core { position: relative; width: 150px; height: 150px; display: grid; place-items: center; }
.sp-ring {
  position: absolute; inset: 0; border-radius: 50%;
  background: conic-gradient(from 0deg, transparent 0 58%, var(--ok) 90%, transparent 100%);
  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 6px), #000 calc(100% - 5px));
  mask: radial-gradient(farthest-side, transparent calc(100% - 6px), #000 calc(100% - 5px));
  animation: sp-spin 1.1s linear infinite; filter: drop-shadow(0 0 8px var(--ok));
}
.sp-logo {
  width: 96px; height: 96px; border-radius: 24px; overflow: hidden;
  box-shadow: 0 0 44px -6px color-mix(in srgb, var(--ok) 75%, transparent);
  animation: sp-pop .7s cubic-bezier(.2, 1.3, .35, 1) both;   /* sem "respiração" em loop: o pop de entrada basta */
}
.sp-logo img { width: 100%; height: 100%; object-fit: cover; display: block; }
.sp-nome { font-size: 20px; font-weight: 900; letter-spacing: 3px; color: var(--txt); opacity: 0; animation: sp-fade .8s ease .4s forwards; }
.sp-frase {
  font-size: 12.5px; font-weight: 600; color: var(--sub); text-align: center;
  max-width: 280px; min-height: 17px; line-height: 1.35; padding: 0 16px;
  opacity: 1; transition: opacity .28s ease; margin-top: -8px;
}
.sp-bar { width: 170px; height: 4px; border-radius: 999px; background: rgba(255, 255, 255, .08); overflow: hidden; }
.sp-bar span { display: block; height: 100%; width: 0; border-radius: 999px; background: var(--ok); box-shadow: 0 0 10px var(--ok); animation: sp-load 5s linear forwards; }
@keyframes sp-spin { to { transform: rotate(360deg); } }
@keyframes sp-pop { 0% { transform: scale(.5); opacity: 0; } 100% { transform: scale(1); opacity: 1; } }
@keyframes sp-fade { to { opacity: 1; } }
@keyframes sp-load { to { width: 100%; } }

body {
  background: transparent;   /* deixa o fundo synthwave do <html> aparecer */
  color: var(--txt);
  font-family: system-ui, -apple-system, "Segoe UI", Roboto, sans-serif;
  font-variant-numeric: tabular-nums;
  min-height: 100vh;
  padding: 20px clamp(14px, 2.4vw, 48px);
  margin: 0;
  position: relative;
  overflow-x: hidden;
}

/* Cada bloco carrega sua cor em --c; no body, --cor (que o glow/hero herdam). */
.cor-V { --c: var(--casa); --cor: var(--casa); }
.cor-A { --c: var(--visitante); --cor: var(--visitante); }
.cor-E { --c: var(--empate); --cor: var(--empate); }
/* Fantan — leitura de 4 cores por número (1=Preto, 2=Branco, 3=Azul[=A], 4=Vermelho[=V]) */
/* Marble Race — uma cor por bolinha (1..6). Mesmo mecanismo do Fantan (cor4), só que com 6. */
/* Marble Race: as cores são as MESMAS da mesa (conferidas na faixa de aposta do jogo). */
.cor-M1 { --c: #2b2b2f; --cor: #2b2b2f; }   /* 1 preto */
.cor-M2 { --c: #1e4fa8; --cor: #1e4fa8; }   /* 2 azul */
.cor-M3 { --c: #1b7a4a; --cor: #1b7a4a; }   /* 3 verde */
.cor-M4 { --c: #d32f2f; --cor: #d32f2f; }   /* 4 vermelho */
.cor-M5 { --c: #eef2f7; --cor: #eef2f7; }   /* 5 branco */
.cor-M6 { --c: #f28c00; --cor: #f28c00; }   /* 6 laranja */
/* A bolinha preta é #2b2b2f: dentro da bolinha funciona, mas como COR DE TEXTO ou como
   tinta da página ela some no fundo escuro. Nesses dois usos ela vira um cinza legível —
   a bolinha em si continua preta. */
body.cor-M1 { --c: #6b7280; --cor: #6b7280; }
.hero-label.cor-M1, .an-brow.cor-M1 .an-lab, .tend-badge.cor-M1 { color: #94a3b8; }
/* O preto some no fundo escuro; o branco e o laranja engolem o texto branco. */
.b.cor-M1, .trio-b.cor-M1 { box-shadow: inset 0 0 0 1.5px rgba(255,255,255,.35); }
.b.cor-M5, .trio-b.cor-M5 { box-shadow: inset 0 0 0 1.5px rgba(0,0,0,.35); }
.b.cor-M5, .b.cor-M6, .trio-b.cor-M5, .trio-b.cor-M6 { color: #0a1120; text-shadow: none; }

/* Sinal do Marble Race: as 3 bolinhas do trio dentro do card, cada uma na sua cor. */
.sinal-lado.trio { display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.sinal-lado.trio .trio-b {
  width: 38px; height: 38px; border-radius: 50%;
  display: inline-flex; align-items: center; justify-content: center;
  background: var(--c); color: #fff; font-weight: 900; font-size: 20px; line-height: 1;
  box-shadow: 0 0 14px color-mix(in srgb, var(--c) 55%, transparent);
}
.sinal-lado.trio .trio-b.cor-M5, .sinal-lado.trio .trio-b.cor-M6 { color: #0a1120; }
.hero-label.cor-M1, .hero-label.cor-M2, .hero-label.cor-M3,
.hero-label.cor-M4, .hero-label.cor-M5, .hero-label.cor-M6 { color: var(--c); }
.cor-P { --c: #1f2937; --cor: #1f2937; }
.cor-G { --c: #16a34a; --cor: #16a34a; }   /* verde da roleta (o zero) */
/* Painel de mercados da roleta (cor, coluna, dúzia, par/ímpar, alto/baixo) */
.roleta-panel { display: flex; align-items: center; gap: 14px; flex-wrap: wrap; margin: 12px 0 2px; padding: 12px 16px; background: var(--painel); border: 1px solid var(--linha); border-radius: 16px; }
.roleta-panel .rp-tit { font-size: 11px; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: var(--sub); white-space: nowrap; }
.roleta-det { display: flex; flex-wrap: wrap; gap: 8px; align-items: center; flex: 1; }
.roleta-det .rd-item { font-size: 12.5px; font-weight: 800; padding: 6px 13px; border-radius: 999px; background: rgba(255,255,255,.05); border: 1px solid var(--linha); color: #eaf6ff; letter-spacing: .01em; }
.roleta-det .rd-cor-V { background: rgba(239,68,68,.20); border-color: rgba(239,68,68,.55); color: #ffd7dd; }
.roleta-det .rd-cor-P { background: rgba(31,41,55,.75); border-color: rgba(148,163,184,.45); color: #e2e8f0; }
.roleta-det .rd-cor-G { background: rgba(22,163,74,.20); border-color: rgba(22,163,74,.55); color: #b7f5c9; }
.cor-B { --c: #eef2f7; --cor: #eef2f7; }
.b.cor-B { color: #0a1120; text-shadow: none; box-shadow: inset 0 0 0 1px rgba(0,0,0,.4); }
.cor-x { --c: var(--linha); --cor: var(--linha); }
/* Tempo certo no CRASH (Spaceman): entrada fixa "2x" — sem cor de lado (V/A/E), usa o roxo do crash. */
.cor-2x { --c: #7c3aed; --cor: #7c3aed; }

/* Glow ambiente: assume a cor de quem está na sequência (vale pra TODOS os jogos) */
.glow {
  position: fixed; inset: 0; z-index: -1; pointer-events: none;
  background:
    radial-gradient(100% 62% at 50% -8%, color-mix(in srgb, var(--cor) 42%, transparent), transparent 72%),
    radial-gradient(60% 45% at 100% 0%, color-mix(in srgb, var(--cor) 26%, transparent), transparent 70%);
  transition: background .8s ease;
}

/* ---------- Topo ---------- */
.topo { display: flex; align-items: center; justify-content: space-between; padding: 2px 2px 20px; }
.marca { display: flex; align-items: center; gap: 12px; }
/* Botão ← Voltar (topo do Ao Vivo): volta pra lista de jogos sem abrir o Menu. */
.voltar-jogos {
  display: inline-flex; align-items: center; justify-content: center;
  width: 40px; height: 40px; flex: none;
  border-radius: 12px; border: 1px solid var(--linha);
  background: var(--painel); color: var(--sub);
  text-decoration: none; -webkit-tap-highlight-color: transparent;
  transition: border-color .15s, color .15s, background .15s, transform .08s;
}
.voltar-jogos:hover { border-color: var(--cor); color: var(--txt, #fff); background: rgba(255,255,255,.04); }
.voltar-jogos:active { transform: scale(.92); }
.live {
  display: inline-flex; align-items: center; gap: 7px;
  font-size: 11px; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; color: var(--ok);
}
.live i { width: 8px; height: 8px; border-radius: 50%; background: var(--ok); box-shadow: 0 0 10px var(--ok); animation: pulse 1.5s infinite; }
.live.off { color: var(--sub); }
.live.off i { background: var(--sub); box-shadow: none; animation: none; }
.nome { font-size: 15px; font-weight: 700; color: var(--sub); letter-spacing: .3px; }
@keyframes pulse { 50% { opacity: .3; } }

.relogio { display: flex; flex-direction: column; align-items: flex-end; line-height: 1; }
.hora { font-size: 26px; font-weight: 800; letter-spacing: 1px; font-variant-numeric: tabular-nums; }
.tz { font-size: 10px; font-weight: 700; letter-spacing: 2px; text-transform: uppercase; color: var(--sub); margin-top: 3px; }

/* Conteúdo centralizado: sem o teto de largura, em monitor grande tudo esticava de ponta a
   ponta e os selos dos cards iam parar no canto direito, longe do nome. */
.wrap { display: flex; flex-direction: column; gap: 14px; width: 100%; max-width: 1100px; margin: 0 auto; }

/* ---------- Painel SINAL AO VIVO ---------- */
.sinal {
  --sc: var(--linha);
  position: relative; overflow: hidden;
  display: flex; align-items: center; gap: 18px;
  padding: 16px 20px; border-radius: 18px;
  background: linear-gradient(120deg, #0b1424, #0d1522);
  border: 1px solid color-mix(in srgb, var(--sc) 45%, var(--linha));
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--sc) 14%, transparent),
              0 16px 42px -20px color-mix(in srgb, var(--sc) 65%, transparent);
  transition: border-color .5s, box-shadow .5s;
}
.sinal.lado-V { --sc: var(--casa); }
.sinal.lado-A { --sc: var(--visitante); }
.sinal.lado-2x { --sc: #7c3aed; }   /* Tempo certo no CRASH (Spaceman): entrada "2x" */
.sinal.estado-analisando, .sinal.estado-espera { --sc: var(--empate); }

/* varredura radar (só quando está analisando/aguardando) */
.sinal-sweep {
  position: absolute; top: 0; left: 0; height: 100%; width: 38%;
  background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--sc) 22%, transparent), transparent);
  transform: translateX(-120%); opacity: 0; pointer-events: none;
}
.sinal.estado-analisando .sinal-sweep,
.sinal.estado-espera .sinal-sweep { opacity: 1; animation: sinal-sweep 2.2s linear infinite; }
@keyframes sinal-sweep { to { transform: translateX(330%); } }

/* anel que pulsa no núcleo quando entra sinal */
.sinal-ring {
  position: absolute; left: 40px; top: 50%; width: 46px; height: 46px;
  margin: -23px 0 0 -23px; border-radius: 50%;
  border: 2px solid var(--sc); opacity: 0; pointer-events: none;
}
.sinal.estado-entrada .sinal-ring { animation: sinal-ring 1.6s ease-out infinite; }
@keyframes sinal-ring { 0% { transform: scale(.5); opacity: .7; } 100% { transform: scale(2.7); opacity: 0; } }

/* núcleo / orbe */
.sinal-core {
  position: relative; z-index: 1; flex: none;
  width: 62px; height: 62px; border-radius: 50%;
  display: grid; place-items: center;
  background: radial-gradient(circle at 50% 40%, color-mix(in srgb, var(--sc) 40%, #0a1120), #0a1120);
  border: 1px solid color-mix(in srgb, var(--sc) 60%, var(--linha));
}
.sinal-orbe {
  width: 20px; height: 20px; border-radius: 50%;
  background: var(--sc); box-shadow: 0 0 16px var(--sc);
  animation: sinal-pulse 1.6s ease-in-out infinite;
}
@keyframes sinal-pulse { 50% { transform: scale(1.35); opacity: .75; } }
.sinal-seta { display: none; position: absolute; font-size: 24px; color: var(--sc); font-weight: 900; text-shadow: 0 0 12px var(--sc); }
.sinal.estado-entrada .sinal-orbe { display: none; }
/* A seta aparece com UM empurrãozinho e para. Antes balançava pra sempre: o anel + o pulso
   já dizem "entra agora", e movimento eterno vira ruído justamente na hora de decidir. */
.sinal.estado-entrada .sinal-seta { display: block; animation: sinal-nudge .9s ease-in-out 2; }
@keyframes sinal-nudge { 50% { transform: translateX(4px); } }

/* info central */
.sinal-info { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1; z-index: 1; }
.sinal-tag { font-size: 10px; font-weight: 800; letter-spacing: 2px; color: var(--sub); text-transform: uppercase; }
.sinal-lado { font-size: clamp(20px, 3.4vw, 28px); font-weight: 900; letter-spacing: .5px; color: var(--txt); line-height: 1.05; }
/* Máquina de escrever (mesmo modelo da Análise Pro) — cursor piscando */
.tw-cur { display: inline-block; width: 7px; height: .92em; vertical-align: -1px; background: currentColor; margin-left: 2px; opacity: .75; animation: twblink 1s steps(1) infinite; }
@keyframes twblink { 50% { opacity: 0; } }
.sinal.estado-entrada .sinal-lado { color: var(--sc); }
.sinal-status { font-size: 12px; color: var(--sub); }
.sinal-occ { font-size: 11px; font-weight: 800; letter-spacing: .3px; color: var(--ok); }

/* trilha do histórico do padrão: bolinhas das últimas ocorrências (mais recente à esquerda).
   verde = win · amarelo = win no empate · vermelho = loss. Simples e legível no mobile. */
.sinal-hist { display: flex; align-items: center; flex-wrap: wrap; gap: 5px; margin-top: 4px; }
.sinal-hist .sh-cap { font-size: 9px; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; color: var(--sub); margin-right: 2px; }
.sinal-hist .shb { width: 9px; height: 9px; border-radius: 50%; flex: none; }
.sinal-hist .shb.w { background: var(--ok); box-shadow: 0 0 6px color-mix(in srgb, var(--ok) 65%, transparent); }
.sinal-hist .shb.e { background: var(--empate); box-shadow: 0 0 6px color-mix(in srgb, var(--empate) 65%, transparent); }
.sinal-hist .shb.l { background: var(--loss); box-shadow: 0 0 6px color-mix(in srgb, var(--loss) 65%, transparent); }

/* badges à direita */
.sinal-meta { display: flex; flex-direction: column; align-items: flex-end; gap: 6px; z-index: 1; flex: none; }
.sinal-badge {
  padding: 4px 11px; border-radius: 999px; font-size: 12px; font-weight: 800;
  background: color-mix(in srgb, var(--sc) 16%, #0a1120);
  border: 1px solid color-mix(in srgb, var(--sc) 40%, var(--linha)); color: var(--txt);
}
.sinal-badge.alt { background: #0a1120; color: var(--sub); border-color: var(--linha); font-weight: 700; }
.sinal-hora { font-size: 11px; color: var(--sub); font-variant-numeric: tabular-nums; }

/* Gale do sinal: fica mais "quente" conforme sobe (SG → G1 → G2) */
.sinal-badge.gale { min-width: 40px; text-align: center; }
.sinal-badge.gale-SG { background: color-mix(in srgb, var(--ok) 16%, #0a1120); border-color: color-mix(in srgb, var(--ok) 45%, var(--linha)); color: var(--ok); }
.sinal-badge.gale-G1 { background: color-mix(in srgb, var(--empate) 18%, #0a1120); border-color: color-mix(in srgb, var(--empate) 50%, var(--linha)); color: var(--empate); }
.sinal-badge.gale-G2 { background: color-mix(in srgb, var(--loss) 20%, #0a1120); border-color: color-mix(in srgb, var(--loss) 55%, var(--linha)); color: #ff8a8a; animation: sinal-pulse 1s ease-in-out infinite; }
.sinal-badge.prot { background: color-mix(in srgb, var(--empate) 14%, #0a1120); border-color: color-mix(in srgb, var(--empate) 40%, var(--linha)); color: var(--empate); font-weight: 700; }

/* Tempo certo: card #tc-sinal reaproveita o .sinal; estado extra p/ mostrar o resultado (~4s) */
#tc-sinal.estado-resolvido { --sc: var(--ok); }
#tc-sinal.estado-resolvido.resultado-empate { --sc: var(--empate); }
#tc-sinal.estado-resolvido.resultado-loss { --sc: var(--loss); }
#tc-sinal.estado-resolvido .sinal-status { color: var(--sc); font-weight: 800; }

/* Bloqueio VIP do painel de sinal (sem acesso) */
.sinal.locked { --sc: var(--empate); }
.sinal.locked .sinal-info, .sinal.locked .sinal-meta, .sinal.locked .sinal-core { filter: blur(4px); opacity: .5; pointer-events: none; }
.sinal-lock {
  position: absolute; inset: 0; z-index: 5; display: flex; align-items: center; gap: 16px;
  padding: 14px 20px; border-radius: 18px; background: rgba(7, 13, 24, .55);
}
.lock-ic {
  flex: none; width: 46px; height: 46px; border-radius: 12px; display: grid; place-items: center;
  color: var(--empate); background: color-mix(in srgb, var(--empate) 16%, #0a1120);
  border: 1px solid color-mix(in srgb, var(--empate) 45%, var(--linha));
}
.lock-ic svg { width: 22px; height: 22px; }
.lock-txt { display: flex; flex-direction: column; gap: 2px; flex: 1; min-width: 0; }
.lock-txt b { font-size: 16px; font-weight: 900; color: var(--txt); }
.lock-txt span { font-size: 12.5px; color: var(--sub); }
.lock-btn {
  flex: none; cursor: pointer; font-family: inherit; font-size: 13px; font-weight: 800;
  padding: 9px 20px; border-radius: 999px; color: #04120c; background: var(--ok); border: none;
  box-shadow: 0 0 18px color-mix(in srgb, var(--ok) 45%, transparent); transition: transform .15s;
}
.lock-btn:hover { transform: translateY(-1px); }
@media (max-width: 560px) {
  .sinal-lock { flex-wrap: wrap; gap: 10px; padding: 14px; }
  .lock-txt { flex-basis: 55%; }
}

@media (max-width: 560px) {
  .sinal { gap: 12px; padding: 14px; }
  .sinal-core { width: 52px; height: 52px; }
  .sinal-ring { left: 33px; }
  .sinal-badge { font-size: 11px; padding: 3px 9px; }
}

/* ---------- SINAL AO VIVO — modelo HUD SCANNER (disco girando + scanline + % de acerto) ---------- */
.hud {
  --sc: var(--empate);
  position: relative; overflow: hidden; border-radius: 18px; padding: 16px 20px;
  background: linear-gradient(160deg, #0a1220, #0b1526);
  border: 1px solid color-mix(in srgb, var(--sc) 34%, var(--linha));
  box-shadow: 0 20px 50px -26px color-mix(in srgb, var(--sc) 80%, transparent);
  transition: border-color .5s, box-shadow .5s;
}
.hud.lado-V { --sc: var(--casa); }
.hud.lado-A { --sc: var(--visitante); }
.hud.lado-2x { --sc: #7c3aed; }
.hud.estado-analisando, .hud.estado-espera { --sc: var(--empate); }
.hud.estado-entrada { animation: hud-glow 2s ease-in-out infinite; }
/* DESFECHO segurado por 1 rodada: WIN (verde) / EMPATE (amarelo) / LOSS (vermelho) */
.hud.estado-resultado.res-win   { --sc: var(--ok); }
.hud.estado-resultado.res-empate{ --sc: var(--empate); }
.hud.estado-resultado.res-loss  { --sc: var(--loss); }
.hud.estado-resultado .sinal-lado { color: var(--sc); }
.hud.estado-resultado .sinal-status { color: var(--sc); font-weight: 800; }
@keyframes hud-glow { 50% { box-shadow: 0 22px 56px -20px color-mix(in srgb, var(--sc) 92%, transparent); } }
/* A GRADE E A VARREDURA DO HUD SAIRAM (a pedido do dono, junto com a grade de fundo
   das paginas). Eram o .hud::before de 26px e o .hud-scan deslizando de cima a baixo —
   apareciam no card de sinal, entao voltavam a aparecer no modo Lista mesmo depois de
   a grade do body ter sido removida. O <span class="hud-scan"> continua no sinal.ejs,
   so que sem desenho nenhum; os cantos .hud-cn e o disco girando (que indicam que o
   robo esta analisando) continuam de pe — aquilo e informacao, nao enfeite. */
.hud-scan { display: none; }
/* cantos HUD */
.hud-cn { position: absolute; width: 16px; height: 16px; border: 2px solid color-mix(in srgb, var(--sc) 70%, transparent); z-index: 2; }
.hud-cn.tl { top: 9px; left: 9px; border-right: 0; border-bottom: 0; }
.hud-cn.br { bottom: 9px; right: 9px; border-left: 0; border-top: 0; }

.hud-row { position: relative; z-index: 1; display: flex; align-items: center; gap: 18px; }
/* disco: anel conic girando + núcleo */
.hud-disc { position: relative; flex: none; width: 84px; height: 84px; border-radius: 50%; display: grid; place-items: center; }
.hud-disc::before { content: ''; position: absolute; inset: 0; border-radius: 50%;
  background: conic-gradient(from 0deg, transparent, var(--sc), transparent 55%); animation: hud-spin 3s linear infinite;
  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 3px));
  mask: radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 3px)); }
@keyframes hud-spin { to { transform: rotate(360deg); } }
.hud-core { position: relative; z-index: 1; width: 60px; height: 60px; border-radius: 50%; display: grid; place-items: center;
  background: radial-gradient(circle at 50% 40%, color-mix(in srgb, var(--sc) 34%, #0a1120), #0a1120);
  border: 1px solid color-mix(in srgb, var(--sc) 45%, var(--linha)); }
.hud-core .sinal-orbe { width: 15px; height: 15px; }
.hud-val { display: none; font-size: 18px; font-weight: 900; color: var(--sc); font-variant-numeric: tabular-nums;
  text-shadow: 0 0 12px color-mix(in srgb, var(--sc) 70%, transparent); }
.hud.estado-entrada .sinal-orbe { display: none; }
.hud.estado-entrada .hud-val { display: block; }

.hud-info { flex: 1; min-width: 0; z-index: 1; }
.hud-live { display: inline-flex; align-items: center; gap: 6px; font-size: 10px; font-weight: 900; letter-spacing: 2px; color: var(--sc); text-transform: uppercase; }
.hud-live i { width: 7px; height: 7px; border-radius: 50%; background: var(--sc); box-shadow: 0 0 8px var(--sc); animation: sinal-pulse 1.4s ease-in-out infinite; }
.hud .sinal-lado { font-size: clamp(21px, 3.6vw, 30px); margin: 3px 0 2px; color: var(--txt); }
.hud.estado-entrada .sinal-lado { color: var(--sc); }
.hud-bar { height: 6px; border-radius: 6px; margin-top: 9px; background: #0a1424; overflow: hidden; border: 1px solid var(--linha); max-width: 340px; }
.hud-bar i { display: block; height: 100%; border-radius: 6px; transition: width .5s ease;
  background: linear-gradient(90deg, color-mix(in srgb, var(--sc) 55%, #0a1120), var(--sc)); box-shadow: 0 0 12px var(--sc); }
.hud-foot { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; margin-top: 8px; }

.hud-meta { flex: none; display: flex; flex-direction: column; align-items: flex-end; gap: 7px; z-index: 1;
  padding-left: 16px; border-left: 1px solid color-mix(in srgb, var(--sc) 20%, var(--linha)); align-self: stretch; justify-content: center; }
.hud-streak { font-size: 11px; font-weight: 700; color: var(--sub); }
.hud-clk { font-size: 11px; color: var(--sub); font-variant-numeric: tabular-nums; }

/* VIP lock no HUD */
.hud.locked .hud-row { filter: blur(4px); opacity: .5; pointer-events: none; }

@media (max-width: 560px) {
  .hud { padding: 14px 15px; }
  .hud-row { gap: 13px; }
  .hud-disc { width: 66px; height: 66px; }
  .hud-core { width: 48px; height: 48px; }
  .hud-val { font-size: 15px; }
  .hud-meta { padding-left: 11px; }
}

/* ---------- Barra de entradas (base de padrões) ---------- */
.entradas-wrap {
  background: var(--painel); border: 1px solid var(--linha); border-radius: 18px; padding: 16px 18px;
}
.entradas-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.streak {
  flex: none; display: inline-flex; align-items: center; gap: 5px;
  font-size: 12px; font-weight: 700; color: var(--ok);
  padding: 4px 11px; border-radius: 999px;
  background: color-mix(in srgb, var(--ok) 14%, transparent);
  border: 1px solid color-mix(in srgb, var(--ok) 40%, var(--linha));
}
.streak b { font-size: 14px; font-weight: 900; }
.entradas { display: flex; gap: 11px; overflow-x: auto; padding: 2px 0 6px; scrollbar-width: thin; }
.entradas::-webkit-scrollbar { height: 6px; }
.entradas::-webkit-scrollbar-thumb { background: var(--linha); border-radius: 999px; }
.ent {
  --c: var(--ok);
  flex: none; width: 138px; padding: 12px 13px; border-radius: 15px;
  background: linear-gradient(180deg, color-mix(in srgb, var(--c) 9%, #0a1120), #0a1120);
  border: 1px solid color-mix(in srgb, var(--c) 24%, var(--linha));
  display: flex; flex-direction: column; gap: 9px; position: relative; overflow: hidden;
}
.ent.loss { --c: var(--loss); }
.ent.via-empate { --c: var(--empate); }
.ent::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--c); box-shadow: 0 0 10px color-mix(in srgb, var(--c) 75%, transparent); }
.ent-top { display: flex; align-items: center; gap: 8px; font-size: 14.5px; font-weight: 800; color: #eef3fc; }
.ent-bola { width: 12px; height: 12px; border-radius: 50%; flex: none; }
.ent.lado-A .ent-bola { background: var(--visitante); }
.ent.lado-V .ent-bola { background: var(--casa); }
.ent.via-empate .ent-bola { background: var(--empate); box-shadow: 0 0 9px color-mix(in srgb, var(--empate) 75%, transparent); }
.ent-mid { display: flex; align-items: center; justify-content: space-between; gap: 6px; }
.ent-gale { font-size: 11px; font-weight: 800; color: var(--sub); letter-spacing: .5px; }
.ent-badges { display: inline-flex; align-items: center; gap: 5px; }
.ent-res { font-size: 11.5px; font-weight: 900; letter-spacing: .5px; padding: 3px 10px; border-radius: 999px; color: var(--c); background: color-mix(in srgb, var(--c) 17%, transparent); border: 1px solid color-mix(in srgb, var(--c) 38%, transparent); }
.ent-mult { font-size: 10.5px; font-weight: 900; color: #3a2a05; background: var(--empate); padding: 2px 7px; border-radius: 999px; }
.ent-bot { display: flex; align-items: center; font-size: 11.5px; color: var(--sub); font-variant-numeric: tabular-nums; letter-spacing: .2px; }

/* Botão "Ver todas as entradas" (abre o painel sob demanda) */
.ent-vertodas {
  display: block; width: 100%; margin-top: 12px; padding: 9px; border-radius: 12px; cursor: pointer;
  background: color-mix(in srgb, var(--ouro) 8%, transparent);
  border: 1px solid color-mix(in srgb, var(--ouro) 30%, var(--linha));
  color: var(--ouro); font-weight: 800; font-size: 13px; letter-spacing: .3px;
  transition: background .15s, border-color .15s;
}
.ent-vertodas:hover { background: color-mix(in srgb, var(--ouro) 15%, transparent); }

/* Painel "Ver todas" (bottom-sheet) */
.ent-modal { position: fixed; inset: 0; z-index: 1200; display: flex; align-items: flex-end; justify-content: center; }
.ent-modal[hidden] { display: none; }
.ent-modal .modal-bg { position: absolute; inset: 0; background: rgba(5, 8, 15, .62); backdrop-filter: blur(3px); }
.ent-modal-box {
  position: relative; width: 100%; max-width: 640px; max-height: 84vh;
  background: var(--painel); border: 1px solid var(--linha); border-bottom: 0;
  border-radius: 20px 20px 0 0; padding: 16px 16px calc(14px + env(safe-area-inset-bottom));
  display: flex; flex-direction: column; box-shadow: 0 -20px 50px -10px rgba(0, 0, 0, .6);
  animation: entUp .28s cubic-bezier(.2, .8, .2, 1);
}
@keyframes entUp { from { transform: translateY(34px); opacity: .3; } to { transform: none; opacity: 1; } }
.ent-modal-head { display: flex; align-items: center; justify-content: space-between; margin-bottom: 12px; }
.ent-modal-head b { font-size: 16px; font-weight: 800; }
.ent-sub { font-size: 12px; color: var(--sub); font-weight: 600; margin-left: 4px; }
.ent-modal-x { background: none; border: 0; color: var(--sub); font-size: 17px; cursor: pointer; padding: 4px 9px; border-radius: 9px; line-height: 1; }
.ent-modal-x:hover { color: var(--txt); background: var(--linha); }
/* 1 COLUNA: linhas largas, legíveis, ocupam a largura toda (não espreme/corta). */
.ent-modal-grid {
  display: flex; flex-direction: column; gap: 8px; flex: 1 1 auto; min-height: 0;
  overflow-y: auto; padding: 2px 2px 4px; -webkit-overflow-scrolling: touch;
}
.ent-vazio { text-align: center; color: var(--sub); font-size: 13px; padding: 34px 0; }

/* Linha do painel "Ver todas" (lado · WIN/LOSS · gale · hora · confiança) */
.emc {
  --c: var(--ok); flex: none;   /* NÃO deixar o flex-column do painel ESPREMER a linha (senão corta o texto) */
  position: relative; border-radius: 12px; padding: 10px 15px 10px 16px; overflow: hidden;
  background: linear-gradient(90deg, color-mix(in srgb, var(--c) 12%, #0b1322), #0a1018 62%);
  border: 1px solid color-mix(in srgb, var(--c) 26%, var(--linha));
  display: flex; flex-direction: column; gap: 6px;
}
.emc.loss { --c: var(--loss); }
.emc.emp { --c: var(--empate); }
.emc::before { content: ""; position: absolute; inset: 0 auto 0 0; width: 4px; background: var(--c); box-shadow: 0 0 12px color-mix(in srgb, var(--c) 80%, transparent); }
.emc-r1 { display: flex; align-items: center; gap: 9px; }
.emc-dot { width: 13px; height: 13px; border-radius: 50%; flex: none; }
.emc.lado-V .emc-dot { background: var(--casa); }
.emc.lado-A .emc-dot { background: var(--visitante); }
.emc.emp .emc-dot { background: var(--empate); box-shadow: 0 0 9px color-mix(in srgb, var(--empate) 75%, transparent); }
.emc-label { font-weight: 800; font-size: 15px; color: #eef3fc; flex: 1; }
.emc-badge { font-size: 11px; font-weight: 900; letter-spacing: .4px; padding: 3px 11px; border-radius: 999px; flex: none; color: var(--c); background: color-mix(in srgb, var(--c) 18%, transparent); border: 1px solid color-mix(in srgb, var(--c) 42%, transparent); }
.emc-mult { font-size: 10.5px; font-weight: 900; color: #3a2a05; background: var(--empate); padding: 2px 7px; border-radius: 999px; margin-left: 6px; flex: none; }
.emc-r2 { display: flex; align-items: center; gap: 10px; font-size: 12px; color: var(--sub); font-variant-numeric: tabular-nums; }
.emc-gale { font-weight: 800; letter-spacing: .5px; color: #aab7cc; background: #141d30; padding: 2px 8px; border-radius: 6px; }
.emc-conf { margin-left: auto; display: inline-flex; align-items: center; gap: 5px; font-weight: 800; color: var(--ouro); }
.emc-conf::before { content: ""; width: 6px; height: 6px; border-radius: 50%; background: var(--ouro); box-shadow: 0 0 6px var(--ouro); }
.ent-modal-foot { display: flex; justify-content: center; padding-top: 12px; }
.ent-mais {
  padding: 9px 22px; border-radius: 999px; cursor: pointer; color: var(--ouro); font-weight: 800; font-size: 13px;
  background: color-mix(in srgb, var(--ouro) 10%, transparent);
  border: 1px solid color-mix(in srgb, var(--ouro) 35%, var(--linha));
}
body.ent-open { overflow: hidden; }

/* ---------- Pós Loss (snapshot 1h) ---------- */
.pos-los {
  background: var(--painel); border: 1px solid var(--linha); border-radius: 18px; padding: 16px 18px;
}
.pos-los-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }
.pos-los-hora { font-size: 11px; font-weight: 700; color: var(--sub); font-variant-numeric: tabular-nums; }
.pos-los-corpo { display: flex; align-items: center; justify-content: space-between; gap: 14px; flex-wrap: wrap; margin-bottom: 12px; }
.pos-los-num { display: flex; align-items: baseline; gap: 8px; flex-wrap: wrap; }
.pos-los-num b { font-size: 30px; font-weight: 900; color: var(--txt); line-height: 1; }
.pos-los-num span { font-size: 12px; color: var(--sub); font-weight: 700; }
.pos-los-num small { flex-basis: 100%; font-size: 11px; color: var(--sub); }
.pos-los-num small b { font-size: 11px; font-weight: 800; color: var(--sub); }
.pos-los-faixa {
  flex: none; display: inline-flex; align-items: center; gap: 6px;
  font-size: 12px; font-weight: 800; padding: 6px 13px; border-radius: 999px;
  background: color-mix(in srgb, var(--sub) 14%, transparent);
  border: 1px solid color-mix(in srgb, var(--sub) 40%, var(--linha));
  color: var(--sub);
}
.pos-los-faixa.nivel-bom {
  color: var(--ok); background: color-mix(in srgb, var(--ok) 14%, transparent);
  border-color: color-mix(in srgb, var(--ok) 40%, var(--linha));
}
.pos-los-faixa.nivel-atencao {
  color: var(--empate); background: color-mix(in srgb, var(--empate) 16%, transparent);
  border-color: color-mix(in srgb, var(--empate) 45%, var(--linha));
}
.pos-los-faixa.nivel-ruim {
  color: var(--loss); background: color-mix(in srgb, var(--loss) 16%, transparent);
  border-color: color-mix(in srgb, var(--loss) 45%, var(--linha));
}
/* Aviso de 3 loss seguidos: verde = nenhum (bom), vermelho = teve (alerta) */
.pos-los-tres {
  font-size: 12.5px; font-weight: 700; padding: 9px 12px; border-radius: 11px; margin-bottom: 12px;
  border: 1px solid var(--linha); background: color-mix(in srgb, var(--sub) 10%, transparent); color: var(--sub);
}
.pos-los-tres.tres-nao {
  color: var(--ok); background: color-mix(in srgb, var(--ok) 12%, transparent);
  border-color: color-mix(in srgb, var(--ok) 35%, var(--linha));
}
.pos-los-tres.tres-sim {
  color: #ff8a8a; background: color-mix(in srgb, var(--loss) 15%, transparent);
  border-color: color-mix(in srgb, var(--loss) 45%, var(--linha));
}
.pos-los-tres b { font-weight: 900; }

.pos-los-casos { display: flex; flex-direction: column; gap: 6px; }
.plc {
  display: flex; align-items: center; gap: 9px; padding: 7px 10px;
  background: #0a1120; border: 1px solid var(--linha); border-radius: 10px;
  font-size: 12px; color: var(--sub);
}
.plc-bola { width: 9px; height: 9px; border-radius: 50%; flex: none; }
.plc-bola.lado-V { background: var(--casa); }
.plc-bola.lado-A { background: var(--visitante); }
.plc-gale { font-weight: 800; color: var(--txt); letter-spacing: .5px; }
.plc-label { flex: 1; font-weight: 700; color: var(--txt); }
.plc-hora { font-variant-numeric: tabular-nums; }
.pos-los-vazio { font-size: 12px; color: var(--sub); padding: 10px 0; text-align: center; }

/* Bloqueio VIP do card Pós Loss (sem acesso): conteúdo ofuscado + cadeado por cima */
.pos-los.locked { position: relative; overflow: hidden; }
.pos-los-blur { filter: blur(4px); opacity: .5; pointer-events: none; }
.pos-los-lock {
  position: absolute; inset: 0; z-index: 5; display: flex; align-items: center; gap: 14px;
  padding: 16px 18px; border-radius: 16px; background: rgba(7, 13, 24, .55);
}

/* ---------- Números que puxam cores (tempo real) ---------- */
.puxa-cores {
  background: var(--painel); border: 1px solid var(--linha); border-radius: 18px; padding: 16px 18px;
}
.puxa-cores-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-bottom: 12px; }

/* 2 cards por linha (maiores) com ALTURA FIXA + scroll interno (não estica a tela toda) */
/* Faixa horizontal (igual ao histórico de entradas): quadrados lado a lado, arrasta pro lado. */
.puxa-cores-grid {
  display: flex; gap: 12px; overflow-x: auto; padding-bottom: 4px; scrollbar-width: thin;
}
.puxa-cores-grid::-webkit-scrollbar { height: 6px; }
.puxa-cores-grid::-webkit-scrollbar-thumb { background: var(--linha); border-radius: 999px; }
.puxa-cores-grid::-webkit-scrollbar-track { background: transparent; }
.pc-card {
  flex: none; width: 160px;
  background: #0a1120; border: 1px solid var(--linha); border-radius: 14px; padding: 14px 16px;
  display: flex; flex-direction: column; gap: 12px;
}
.pc-num { font-size: 13px; color: var(--sub); font-weight: 700; }
.pc-num b { font-size: 18px; color: var(--txt); font-weight: 900; }
.pc-bolas { display: flex; align-items: center; justify-content: space-between; gap: 8px; }
.pc-bola { display: flex; flex-direction: column; align-items: center; gap: 4px; flex: 1; opacity: .55; }
.pc-bola.puxa { opacity: 1; }
.pc-dot { width: 12px; height: 12px; border-radius: 50%; }
.pc-bola.cor-b .pc-dot { background: var(--casa); }
.pc-bola.cor-p .pc-dot { background: var(--visitante); }
.pc-bola.cor-t .pc-dot { background: var(--empate); }
.pc-lbl { font-size: 11px; font-weight: 800; color: var(--sub); letter-spacing: .5px; }
.pc-qtd { font-size: 16px; font-weight: 800; color: var(--txt); }
.pc-bola.puxa .pc-qtd { color: var(--ok); font-weight: 900; }
.pc-rodape { font-size: 12px; color: var(--sub); text-align: center; border-top: 1px solid var(--linha); padding-top: 9px; }
.pc-rodape b { color: var(--txt); font-weight: 800; }
.puxa-cores-vazio { grid-column: 1 / -1; font-size: 12px; color: var(--sub); padding: 10px 0; text-align: center; }

/* Bloqueio VIP do card Números que puxam cores (sem acesso): conteúdo ofuscado + cadeado por cima */
.puxa-cores.locked { position: relative; overflow: hidden; }
.puxa-blur { filter: blur(4px); opacity: .5; pointer-events: none; }
.puxa-lock {
  position: absolute; inset: 0; z-index: 5; display: flex; align-items: center; gap: 14px;
  padding: 16px 18px; border-radius: 16px; background: rgba(7, 13, 24, .55);
}

/* ---------- Hero ---------- */
/* PC: a sequência estica e o "último" fica à direita (preenche a linha).
   No mobile vira faixa deslizante (ver @media 560). */
/* Faixa Hero + Pós Loss: lado a lado no desktop, desliza no celular (snap). */
.hrow {
  display: flex; gap: 12px; align-items: stretch;
  overflow-x: auto; scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch; scrollbar-width: thin;
  overscroll-behavior-x: contain;
  padding-bottom: 2px; max-width: 100%;
}
.hrow::-webkit-scrollbar { height: 6px; }
.hrow::-webkit-scrollbar-thumb { background: var(--linha); border-radius: 999px; }
.hrow > .hero, .hrow > .pos-los {
  flex: 1 1 340px; min-width: min(92%, 340px);
  scroll-snap-align: start; margin: 0;
}

.hero {
  display: flex; gap: 14px; align-items: stretch;
  overflow: hidden;
}
.hero-seq {
  flex: 1; min-width: 0;
  display: flex; align-items: center; gap: 20px;
  padding: 26px 28px; border-radius: 22px;
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--cor) 24%, transparent), transparent 65%),
    var(--painel);
  border: 1px solid color-mix(in srgb, var(--cor) 50%, var(--linha));
  box-shadow: 0 18px 40px -12px color-mix(in srgb, var(--cor) 35%, transparent);
}
.hero-num {
  flex: none;
  font-size: clamp(52px, 12vw, 104px); font-weight: 900; line-height: .82; color: var(--cor);
  letter-spacing: -3px; text-shadow: 0 0 34px color-mix(in srgb, var(--cor) 60%, transparent);
}
.hero-num em { font-size: .5em; font-style: normal; opacity: .7; }
/* min-width:0 deixa a coluna encolher; sem isso a label ("Empate"/"Visitante") empurrava e
   estourava o card no celular. A label pode quebrar em vez de vazar. */
.hero-txt { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1 1 auto; }
.hero-label {
  font-size: clamp(22px, 5.4vw, 34px); font-weight: 800; letter-spacing: -.5px;
  line-height: 1.05; overflow-wrap: anywhere; word-break: break-word;
}
.hero-sub { font-size: 13px; color: var(--sub); }

.ult {
  flex: none;
  display: flex; flex-direction: column; justify-content: center; align-items: center; gap: 4px;
  min-width: 200px; padding: 18px 20px; border-radius: 22px;
  background: var(--painel); border: 1px solid var(--linha); border-top: 3px solid var(--c);
}
.ult-tit { font-size: 10px; font-weight: 800; letter-spacing: 1.5px; text-transform: uppercase; color: var(--sub); }
.ult-placar { display: flex; align-items: baseline; gap: 10px; }
.ult-placar b { font-size: 42px; font-weight: 900; letter-spacing: -1px; }
.ult-placar .vis { color: var(--visitante); }
.ult-placar .casa { color: var(--casa); }
.ult-placar i { color: var(--sub); font-style: normal; font-size: 18px; }
.ult-venceu { font-size: 13px; font-weight: 700; color: var(--c); }
/* Jogos com só o lado vencedor (Baccarat): esconde o "× perdedor" */
.ult-placar.so-vencedor i, .ult-placar.so-vencedor .casa { display: none; }

/* ---------- Painéis ---------- */
.linha { display: grid; grid-template-columns: 1fr; gap: 14px; }
.painel { background: var(--painel); border: 1px solid var(--linha); border-radius: 20px; padding: 18px; }
.painel-tit { font-size: 11px; font-weight: 800; letter-spacing: 1.2px; text-transform: uppercase; color: var(--sub); margin-bottom: 16px; }
.painel-tit small { font-weight: 600; letter-spacing: .5px; opacity: .7; margin-left: 4px; }

/* Distribuição — medidor share tri-cor */
.share { display: flex; height: 26px; border-radius: 999px; overflow: hidden; background: #0a1120; margin-bottom: 18px; }
.seg { height: 100%; min-width: 0; transition: width .6s ease; display: flex; align-items: center; justify-content: center; overflow: hidden; }
.seg b { font-size: 11px; font-weight: 800; color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,.4); white-space: nowrap; }
.seg.casa { background: var(--casa); }
.seg.visitante { background: var(--visitante); }
.seg.empate { background: var(--empate); }
.legenda { display: flex; flex-wrap: wrap; gap: 6px 18px; font-size: 13px; }
.lg { display: inline-flex; align-items: center; gap: 6px; color: var(--sub); }
.lg i { width: 9px; height: 9px; border-radius: 3px; }
.lg b { color: var(--txt); font-weight: 800; }
.lg small { color: var(--sub); font-size: 11px; }
.lg.casa i { background: var(--casa); } .lg.casa b { color: var(--casa); }
.lg.visitante i { background: var(--visitante); } .lg.visitante b { color: var(--visitante); }
.lg.empate i { background: var(--empate); } .lg.empate b { color: var(--empate); }

/* Médias (card Força) */
.medias { display: flex; flex-direction: column; }
.med { display: flex; flex: 1; align-items: stretch; min-height: 90px; }
.med-item { flex: 1; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 2px; }
.med-item + .med-item { border-left: 1px solid var(--linha); }
.med-item b { font-size: 38px; font-weight: 900; letter-spacing: -1px; }
.med-item span { font-size: 11px; color: var(--sub); text-transform: uppercase; letter-spacing: .8px; }
.med-item.ganha b { color: var(--ok); }
.med-item.perde b { color: var(--sub); }

/* ---------- Bead road (grade estilo cassino) ---------- */
.bead {
  display: grid; grid-template-rows: repeat(6, 1fr); grid-auto-flow: column; grid-auto-columns: 34px;
  gap: 7px; justify-content: center; align-items: center;
}
.b {
  width: 30px; height: 30px; border-radius: 50%;
  background: var(--c); box-shadow: inset 0 0 0 1px rgba(0,0,0,.3);
  display: grid; place-items: center;
  font-size: 13px; font-weight: 900; color: #fff; text-shadow: 0 1px 2px rgba(0,0,0,.35);
  line-height: 1;
}
.b.atual { box-shadow: 0 0 0 2px var(--bg), 0 0 0 4px var(--c), 0 0 12px var(--c); animation: pulse 1.4s infinite; }
/* Toque alterna letra (B/P/T) ↔ número (placar). Número em fonte menor pra caber 2 dígitos. */
.bead { cursor: pointer; }
.b .b-n { display: none; font-size: 11.5px; }
.bead.mostra-num .b .b-l { display: none; }
.bead.mostra-num .b .b-n { display: inline; }

/* ---------- Bead + Empates lado a lado ---------- */
.road-empates { display: grid; grid-template-columns: 1.5fr 1fr; gap: 14px; align-items: stretch; }
.road-empates.road-solo { grid-template-columns: 1fr; }   /* leitura única de 4 cores (Fantan) ocupa a linha toda */
.road-empates .road { min-width: 0; }
/* Barra de proporção de 4 fatias (Fantan): cada segmento pega a cor do número */
.share4 .seg { background: var(--c); }
.share4 .seg.cor-B b { color: #0a1120; text-shadow: none; }
.chip.cor-B .chip-bola { box-shadow: inset 0 0 0 1px rgba(0,0,0,.45); }   /* bolinha branca ganha contorno */
.road-empates .bead { justify-content: safe center; overflow-x: auto; padding-bottom: 4px; }
.empates { display: flex; flex-direction: column; min-width: 0; }
.emp-lista { display: flex; flex-direction: column; overflow-y: auto; max-height: 250px; padding-right: 4px; scrollbar-width: thin; }
.emp-lista::-webkit-scrollbar { width: 5px; }
.emp-lista::-webkit-scrollbar-thumb { background: var(--linha); border-radius: 999px; }
.emp-row { display: flex; align-items: center; gap: 10px; padding: 7px 2px; border-bottom: 1px solid var(--linha); }
.emp-row:last-child { border-bottom: none; }
.emp-num { flex: none; width: 26px; height: 26px; border-radius: 50%; display: grid; place-items: center; font-size: 12px; font-weight: 900; color: #04120c; background: var(--empate); box-shadow: 0 0 10px color-mix(in srgb, var(--empate) 45%, transparent); }
.emp-hora { flex: 1; font-size: 13px; color: var(--sub); font-variant-numeric: tabular-nums; }
.emp-mult { font-size: 14px; font-weight: 900; color: var(--empate); }
.emp-vazio { color: var(--sub); font-size: 13px; padding: 10px 2px; }
@media (max-width: 720px) {
  /* celular: bead + empates viram faixa deslizante (arrasta pro lado), 1 scroll só */
  .road-empates {
    display: flex; gap: 12px; align-items: stretch;
    overflow-x: auto; scroll-snap-type: x mandatory;
    -webkit-overflow-scrolling: touch; scrollbar-width: thin;
    overscroll-behavior-x: contain; max-width: 100%; padding-bottom: 2px;
  }
  .road-empates::-webkit-scrollbar { height: 6px; }
  .road-empates::-webkit-scrollbar-thumb { background: var(--linha); border-radius: 999px; }
  .road-empates > .road, .road-empates > .empates {
    flex: 0 0 92%; min-width: 92%; scroll-snap-align: start;
  }
  .road-empates .bead { justify-content: center; overflow-x: visible; }
  /* Fantan (leitura única) ocupa a linha toda, sem faixa */
  .road-empates.road-solo { display: block; }
  .road-empates.road-solo > .road { min-width: 0; }
  .emp-lista { max-height: 220px; }
}

/* Painel bloqueado (empates e afins): conteúdo borrado + cadeado VIP */
.painel.locked { position: relative; overflow: hidden; }
.emp-blur { filter: blur(4px); opacity: .5; pointer-events: none; }
.painel-lock {
  position: absolute; inset: 0; z-index: 5; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 8px; text-align: center; padding: 12px;
  background: rgba(7, 13, 24, .55);
}
.painel-lock .lock-ic {
  width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; color: var(--empate);
  background: color-mix(in srgb, var(--empate) 16%, #0a1120); border: 1px solid color-mix(in srgb, var(--empate) 45%, var(--linha));
}
.painel-lock .lock-ic svg { width: 22px; height: 22px; }
.painel-lock b { font-size: 15px; font-weight: 900; color: var(--txt); letter-spacing: .3px; }
.painel-lock small { font-size: 12px; color: var(--sub); font-weight: 600; }

/* ---------- Histórico ao vivo (bolinhas coloridas: número dentro + hora embaixo) ---------- */
/* Card "Último": destaca o resultado mais recente no topo */
.ultimo-card {
  display: flex; align-items: center; gap: 14px;
  padding: 12px 16px; border-radius: 16px; margin-bottom: 16px;
  background: linear-gradient(180deg, color-mix(in srgb, var(--c) 12%, #0a1120), #0a1120);
  border: 1px solid color-mix(in srgb, var(--c) 34%, var(--linha));
}
.ultimo-card[hidden] { display: none; }
.ultimo-lbl { font-size: 12.5px; font-weight: 700; color: var(--sub); }
.ultimo-bola {
  width: 54px; height: 54px; border-radius: 50%; background: var(--c); flex: none;
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 2px 8px rgba(0, 0, 0, .4);
}
.ultimo-card.cor-E .ultimo-bola { box-shadow: 0 0 0 3px color-mix(in srgb, var(--empate) 60%, transparent), 0 2px 8px rgba(0, 0, 0, .4); }
.ultimo-card.cor-B .ultimo-bola .chip-placar { color: #0a1120; }
.ultimo-card.cor-M5 .ultimo-bola .chip-placar { color: #0a1120; }   /* Marble branco: número escuro */
.ultimo-bola .chip-placar { font-size: 20px; }
.ultimo-bola .chip-placar:has(i) { font-size: 15px; }
.ultimo-mult {
  font-size: 11px; font-weight: 800; color: #3a2a05; line-height: 1.35;
  padding: 1px 8px; border-radius: 999px; background: var(--empate);
}
.ultimo-hora { margin-left: auto; font-size: 13px; color: var(--sub); font-variant-numeric: tabular-nums; }

/* Grade de bolinhas */
.feed-grid {
  display: grid; grid-template-columns: repeat(auto-fill, minmax(54px, 1fr));
  gap: 16px 8px; justify-items: center;
}
.chip {
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  cursor: pointer;
}
.chip-bola {
  position: relative; width: 50px; height: 50px; border-radius: 50%; background: var(--c);
  display: flex; align-items: center; justify-content: center;
  box-shadow: 0 2px 6px rgba(0, 0, 0, .35);
  transition: box-shadow .15s, transform .15s;
}
.chip-placar { color: #fff; font-weight: 800; font-size: 18px; line-height: 1; letter-spacing: .2px; }
.chip-placar:has(i) { font-size: 13.5px; letter-spacing: 0; }
.chip-placar i { font-style: normal; font-weight: 600; font-size: 10px; opacity: .75; margin: 0 1px; }
.chip.cor-B .chip-placar { color: #0a1120; }          /* Branco (Fantan): número escuro */
.chip.cor-M5 .chip-placar { color: #0a1120; }         /* Marble branco (5): número escuro */
.chip.cor-M5 .chip-bola { box-shadow: inset 0 0 0 1px rgba(0,0,0,.45), 0 2px 6px rgba(0,0,0,.35); }  /* contorno na bolinha branca */
.chip.cor-E .chip-bola { box-shadow: 0 0 0 3px color-mix(in srgb, var(--empate) 60%, transparent), 0 2px 6px rgba(0, 0, 0, .35); }
.chip-mult {
  position: absolute; bottom: -6px; left: 50%; transform: translateX(-50%);
  font-size: 10px; font-weight: 800; color: #3a2a05; line-height: 1.3; white-space: nowrap;
  padding: 0 6px; border-radius: 999px; background: var(--empate); border: 2px solid #0a1120;
}
.chip-hora { font-size: 11px; color: var(--sub); font-variant-numeric: tabular-nums; letter-spacing: .2px; }
/* Botão "Limpar filtro" (aparece só quando há um resultado selecionado) */
.limpar-filtro {
  display: block; margin: 0 auto 14px; padding: 7px 16px; border-radius: 999px; cursor: pointer;
  background: color-mix(in srgb, #38bdf8 12%, transparent);
  border: 1px solid color-mix(in srgb, #38bdf8 45%, var(--linha));
  color: #7dd3fc; font-weight: 700; font-size: 13px; letter-spacing: .2px;
  transition: background .15s, border-color .15s;
}
.limpar-filtro:hover { background: color-mix(in srgb, #38bdf8 20%, transparent); }
.limpar-filtro[hidden] { display: none; }

/* Filtro ligado: escurece os não-selecionados, deixa só os iguais acesos */
.feed-grid.filtrando .chip:not(.marcado) { opacity: .2; }
.feed-grid.filtrando .chip:not(.marcado) .chip-bola { box-shadow: none; }
/* Resultado selecionado (todos os iguais ao que foi tocado) — anel ciano em destaque */
.chip.marcado .chip-bola {
  box-shadow: 0 0 0 3px #38bdf8, 0 0 16px color-mix(in srgb, #38bdf8 55%, transparent);
  transform: translateY(-2px);
}
.chip.cor-E.marcado .chip-bola { box-shadow: 0 0 0 3px #38bdf8, 0 0 16px color-mix(in srgb, #38bdf8 55%, transparent); }
.chip.marcado .chip-hora { color: #7dd3fc; font-weight: 700; }

/* Cabeçalho do bloco de resultados: título + paginação lado a lado */
.lista-topo { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; margin-bottom: 16px; }

/* Extensor "ver mais / recolher" */
.extensor { display: flex; justify-content: center; margin-top: 14px; }
.extensor:empty { margin-top: 0; }
.ext-btn {
  padding: 9px 22px; border-radius: 999px; cursor: pointer;
  background: #0a1120; border: 1px solid var(--linha); color: var(--sub);
  font-weight: 700; font-size: 13px; letter-spacing: .3px;
  transition: border-color .15s, color .15s;
}
.ext-btn:hover { border-color: var(--cor); color: var(--txt); }

/* ---------- Menu lateral (sidebar desktop + drawer mobile), estilo cyber ---------- */
.side {
  position: fixed; top: 0; left: 0; bottom: 0; width: 260px; z-index: 1000;
  display: flex; flex-direction: column; padding: 22px 14px;
  /* Vidro (glass): translúcido + blur, deixa o fundo synthwave brilhar por trás. */
  background:
    radial-gradient(85% 220px at 50% 0%, color-mix(in srgb, var(--ok) 14%, transparent), transparent 72%),
    linear-gradient(180deg, rgba(15, 23, 46, .72), rgba(8, 10, 24, .88));
  backdrop-filter: blur(16px) saturate(1.2);
  -webkit-backdrop-filter: blur(16px) saturate(1.2);
  border-right: 1px solid color-mix(in srgb, var(--ok) 22%, rgba(255, 255, 255, .06));
  overflow-y: auto; overflow-x: hidden;
  box-shadow: 10px 0 40px rgba(0, 0, 0, .6), inset 0 1px 0 rgba(255, 255, 255, .05);
}
.side::-webkit-scrollbar { width: 4px; }
.side::-webkit-scrollbar-thumb { background: color-mix(in srgb, var(--ok) 25%, transparent); border-radius: 2px; }

.side-logo { display: flex; align-items: center; gap: 11px; margin: 4px 6px 26px; }
.side-brand { display: flex; align-items: center; gap: 11px; text-decoration: none; color: inherit; }
.side-brand:hover { opacity: .85; }
.side-mark {
  width: 34px; height: 34px; flex: none; border-radius: 10px; display: grid; place-items: center;
  background: color-mix(in srgb, var(--ok) 18%, #0a1120);
  border: 1px solid color-mix(in srgb, var(--ok) 45%, var(--linha)); color: var(--ok);
}
.side-mark svg { width: 19px; height: 19px; filter: drop-shadow(0 0 5px color-mix(in srgb, var(--ok) 70%, transparent)); }
.side-mark-img { padding: 0; overflow: hidden; background: #0a1120; }
.side-mark-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.side-nome {
  font-size: 18px; font-weight: 900; letter-spacing: 1px; text-transform: uppercase;
  line-height: 1.05;
  background: linear-gradient(90deg, #fff, var(--ok));
  -webkit-background-clip: text; background-clip: text; -webkit-text-fill-color: transparent;
}
.side-nome small {
  display: block; font-size: 8.5px; letter-spacing: 2px; font-weight: 800;
  color: var(--sub); -webkit-text-fill-color: var(--sub); margin-top: 2px;
}
.side-x { display: none; margin-left: auto; background: none; border: none; color: var(--sub); cursor: pointer; padding: 4px; }
.side-x svg { width: 22px; height: 22px; }

.side-sec {
  margin: 18px 0 8px; padding: 0 10px; display: flex; align-items: center; gap: 8px;
  font-size: 10px; font-weight: 800; letter-spacing: 2px; text-transform: uppercase; color: var(--sub);
}
.side-sec::before { content: ""; width: 15px; height: 2px; border-radius: 2px; background: linear-gradient(90deg, var(--ok), transparent); flex: none; }

.nav {
  position: relative; display: flex; align-items: center; gap: 11px;
  min-height: 44px; padding: 8px 11px; margin: 3px 0; border-radius: 12px;
  color: color-mix(in srgb, var(--txt) 72%, transparent); text-decoration: none;
  font-size: 13.5px; font-weight: 600; border: 1px solid transparent;
  transition: background .2s, color .2s, border-color .2s, transform .18s ease;
}
.nav:hover { transform: translateX(3px); }
.nav .nav-ic { transition: all .18s ease; }
.nav:hover .nav-ic { transform: scale(1.06); }
.nav-ic {
  width: 32px; height: 32px; flex: none; border-radius: 10px; display: grid; place-items: center;
  background: rgba(255, 255, 255, .045); border: 1px solid rgba(255, 255, 255, .07); transition: all .2s;
}
.nav-ic svg { width: 17px; height: 17px; }
.nav:hover { background: color-mix(in srgb, var(--ok) 7%, transparent); color: var(--txt); border-color: color-mix(in srgb, var(--ok) 16%, var(--linha)); }
.nav:hover .nav-ic { background: color-mix(in srgb, var(--ok) 14%, transparent); border-color: color-mix(in srgb, var(--ok) 32%, var(--linha)); }
.nav:hover .nav-ic svg { color: var(--ok); }

.nav.active { background: linear-gradient(100deg, color-mix(in srgb, var(--ok) 18%, transparent), transparent); color: var(--txt); border-color: color-mix(in srgb, var(--ok) 30%, var(--linha)); font-weight: 800; }
.nav.active { box-shadow: inset 0 0 20px color-mix(in srgb, var(--ok) 12%, transparent); }
.nav.active::before { content: ""; position: absolute; left: -4px; top: 50%; transform: translateY(-50%); width: 4px; height: 26px; border-radius: 0 4px 4px 0; background: linear-gradient(180deg, var(--ok), color-mix(in srgb, var(--ok) 50%, #fff)); box-shadow: 0 0 16px var(--ok); }
.nav.active .nav-ic { background: color-mix(in srgb, var(--ok) 20%, transparent); border-color: color-mix(in srgb, var(--ok) 45%, var(--linha)); }
.nav.active .nav-ic svg { color: var(--ok); filter: drop-shadow(0 0 3px color-mix(in srgb, var(--ok) 60%, transparent)); }

/* Destaque (caixa + varredura neon) SÓ quando o Ao Vivo é a página ativa.
   Fora dele, o item fica normal — só mantém a tag LIVE + bolinha pulsando. */
/* A varredura neon que corria em loop aqui foi removida: o item ativo já se identifica pela
   caixa, pela cor e pela tag LIVE — o brilho passando era ruído (e animava 'left', que força
   recálculo de layout, o pior tipo de animação). */
.nav.featured { overflow: hidden; }

.nav-tag { margin-left: auto; font-size: 8.5px; font-weight: 800; letter-spacing: 1px; padding: 3px 7px; border-radius: 999px; background: color-mix(in srgb, var(--ok) 22%, transparent); border: 1px solid color-mix(in srgb, var(--ok) 50%, var(--linha)); color: var(--ok); }

/* ANÁLISE PRO (admin): nome BRILHANDO em dourado (glow pulsante) + badge PRO. */
.nav-pro .nav-ic { background: color-mix(in srgb, var(--ouro) 16%, transparent); border-color: color-mix(in srgb, var(--ouro) 40%, var(--linha)); }
.nav-pro .nav-ic svg { color: var(--ouro); }
.nav-pro:hover { background: color-mix(in srgb, var(--ouro) 8%, transparent); border-color: color-mix(in srgb, var(--ouro) 38%, var(--linha)); }
/* Brilho VARRENDO o texto — escolha do dono, o item PRO tem que chamar atenção.
   Antes eram DUAS animações empilhadas: proShine (varredura) + proGlow (pulso do brilho).
   Ficou só a varredura, que anima 'background-position' — não mexe em layout nem repinta a
   página. O glow virou 'filter' FIXO: era ele o caro (drop-shadow animado a cada quadro). */
.nav-pro .nav-pro-txt { font-weight: 900; letter-spacing: .5px;
  background: linear-gradient(90deg, #f7e39b, var(--ouro) 30%, #fff6cf 50%, var(--ouro) 70%, #f7e39b);
  background-size: 200% auto;
  -webkit-background-clip: text; background-clip: text; color: transparent;
  filter: drop-shadow(0 0 5px color-mix(in srgb, var(--ouro) 50%, transparent));
  animation: proShine 3.2s linear infinite; }
@keyframes proShine { to { background-position: 200% center; } }
.nav-tag.pro { background: color-mix(in srgb, var(--ouro) 22%, transparent); border-color: color-mix(in srgb, var(--ouro) 55%, var(--linha)); color: var(--ouro); text-shadow: 0 0 8px color-mix(in srgb, var(--ouro) 60%, transparent); }

/* Bolinha "LIVE" pulsando, colada na tag do item Ao Vivo. */
.nav-live { margin-left: auto; width: 6px; height: 6px; flex: none; border-radius: 50%; background: var(--ok); box-shadow: 0 0 8px var(--ok); animation: pulse 1.3s infinite; }
.nav-live + .nav-tag { margin-left: 8px; }

.side-footer { display: flex; align-items: center; justify-content: space-between; margin-top: auto; padding: 15px 10px 2px; border-top: 1px solid var(--linha); font-size: 12px; color: var(--sub); }
.side-status { display: inline-flex; align-items: center; gap: 8px; }
.side-status i { width: 8px; height: 8px; border-radius: 50%; background: var(--ok); box-shadow: 0 0 0 4px color-mix(in srgb, var(--ok) 16%, transparent), 0 0 8px var(--ok); animation: pulse 1.6s infinite; }

/* Perfil no menu (Conta) */
.side-perfil { display: flex; align-items: center; gap: 11px; padding: 10px 11px; margin: 3px 0; border-radius: 12px; background: color-mix(in srgb, var(--ok) 6%, transparent); border: 1px solid var(--linha); }
.sp-ava { width: 34px; height: 34px; flex: none; border-radius: 10px; display: grid; place-items: center; background: color-mix(in srgb, var(--ok) 16%, #0a1120); border: 1px solid color-mix(in srgb, var(--ok) 40%, var(--linha)); color: var(--ok); }
.sp-ava svg { width: 18px; height: 18px; }
.sp-info { display: flex; flex-direction: column; min-width: 0; }
.sp-info b { font-size: 14px; font-weight: 800; color: var(--txt); white-space: nowrap; overflow: hidden; text-overflow: ellipsis; }
.sp-info small { font-size: 11px; font-weight: 700; }
.sp-info small.adm { color: var(--empate); }
.sp-info small.ok { color: var(--ok); }
.sp-info small.exp { color: #ff8a8a; }
.sp-info small.sessao { color: var(--sub); margin-top: 2px; font-variant-numeric: tabular-nums; }
.sp-info small.sessao b { color: var(--txt); font-weight: 800; }
.sp-info small.sessao.acabando { color: #ff8a8a; animation: pulse 1.2s infinite; }
.sp-info small.sessao.acabando b { color: #ff8a8a; }
.nav-sair { color: #ff8a8a; }
.nav-sair:hover { background: color-mix(in srgb, var(--loss) 8%, transparent); border-color: color-mix(in srgb, var(--loss) 30%, var(--linha)); }
.nav-sair .nav-ic svg { color: #ff8a8a; }

/* Botão flutuante + overlay + barra inferior: só no mobile (escondidos por padrão) */
.menu-btn, .menu-overlay, .botnav, .bn-fab { display: none; }

/* Menu de rodapé (botnav) em TODAS as larguras — inclusive PC. A barra lateral vira
   drawer escondido (não usamos mais no desktop; navegação é toda pela barra inferior). */
@media all {
  .side { width: 280px; transform: translateX(-100%); transition: transform .3s cubic-bezier(.4, 0, .2, 1); }
  body.menu-open .side { transform: translateX(0); }
  .side-x { display: flex; }

  .menu-btn {
    display: inline-flex; align-items: center; justify-content: center;
    position: fixed; bottom: calc(20px + env(safe-area-inset-bottom)); left: calc(50% - 29px);
    width: 58px; height: 58px; border-radius: 50%; z-index: 1001; cursor: pointer; color: #3a2905;
    background:
      radial-gradient(130% 105% at 32% 24%, rgba(255,255,255,.78), rgba(255,255,255,0) 44%),
      linear-gradient(150deg, #f8d67c 0%, #e2ad42 50%, #b17d22 100%);
    border: 1px solid rgba(255, 240, 200, .55);
    box-shadow:
      0 12px 26px -6px rgba(0,0,0,.6),
      0 4px 10px rgba(0,0,0,.4),
      inset 0 1.5px 1px rgba(255,255,255,.75),
      inset 0 -4px 9px rgba(120,78,12,.55);
    transition: transform .15s, box-shadow .2s, opacity .2s;
  }
  /* glow dourado suave atrás do botão — FIXO (o pulso infinito virava respiração eterna
     num botão que está sempre na tela). O keyframes fica: o pontinho de aviso ainda usa. */
  .menu-btn::before {
    content: ""; position: absolute; inset: -7px; border-radius: 50%; z-index: -1;
    background: radial-gradient(circle, color-mix(in srgb, var(--ouro) 55%, transparent), transparent 70%);
    filter: blur(7px); opacity: .6;
  }
  @keyframes fabPulse { 0%,100% { opacity: .4; transform: scale(.94); } 50% { opacity: .85; transform: scale(1.1); } }
  .menu-btn svg { width: 25px; height: 25px; }
  .menu-btn:active { transform: scale(.93); }
  body.menu-open .menu-btn { opacity: 0; pointer-events: none; transform: scale(.9); }

  .menu-overlay { display: block; position: fixed; inset: 0; z-index: 999; background: rgba(5, 8, 15, .55); backdrop-filter: blur(2px); opacity: 0; pointer-events: none; transition: opacity .3s; }
  body.menu-open .menu-overlay { opacity: 1; pointer-events: auto; }

  /* A barra inferior substitui a bolinha flutuante no mobile */
  .menu-btn { display: none !important; }
  /* espaço reservado no fim da página: a faixa é fina agora (só letreiro), mas o botão
     flutuante sobe acima dela — a folga considera o botão, não a faixa. */
  body { padding-bottom: calc(64px + env(safe-area-inset-bottom)); }

  /* ---------- Faixa inferior — LETREIRO (era a barra de atalhos) ----------
     Os atalhos saíram: agora vivem no menu lateral. Esta faixa é a casa dos avisos do /editar
     (banner e temporizador correm por cima dela) e, em silêncio, do raio de descanso. */
  .botnav {
    display: flex; position: fixed; left: 0; right: 0; bottom: 0; z-index: 992;
    min-height: 42px; padding: 0 8px calc(0px + env(safe-area-inset-bottom));
    background:
      radial-gradient(120% 82% at 50% 0%, color-mix(in srgb, var(--ouro) 15%, transparent), transparent 62%),
      linear-gradient(180deg, rgba(10, 14, 26, .82), rgba(6, 9, 18, .97));
    backdrop-filter: blur(18px); -webkit-backdrop-filter: blur(18px);
    /* Fita LED dourada no topo (gradiente na borda) + glow que pulsa feito neon */
    border-top: 2px solid transparent;
    border-image: linear-gradient(90deg,
      color-mix(in srgb, var(--ouro) 8%, transparent) 0%,
      #f8d67c 28%, #ffe9a8 50%, #f8d67c 72%,
      color-mix(in srgb, var(--ouro) 8%, transparent) 100%) 1;
    box-shadow: 0 -10px 30px -12px rgba(0, 0, 0, .6), 0 -2px 16px -3px color-mix(in srgb, var(--ouro) 50%, transparent);
    /* glow do rodapé agora é FIXO (era um loop infinito só decorativo) */
    justify-content: center; align-items: center; flex-wrap: nowrap;
    overflow: hidden;                 /* o raio corre por dentro, sem criar barra de rolagem */
    transition: transform .3s ease;
  }

  /* Em silêncio a faixa fica VAZIA mesmo (sem enfeite): é só a base dourada que ancora o
     botão do menu e recebe os avisos quando existirem. */
  .botnav::-webkit-scrollbar { display: none; }
  .botnav a, .botnav button {
    flex: 0 0 auto; min-width: 58px; scroll-snap-align: center;
    display: flex; flex-direction: column; align-items: center; gap: 2px;
    background: none; border: 0; color: var(--sub); font: inherit; font-size: 9.5px; font-weight: 700;
    letter-spacing: .2px; cursor: pointer; padding: 2px 9px; border-radius: 12px;
    text-decoration: none; position: relative; transition: color .15s, transform .12s;
  }
  .botnav a span, .botnav button span { white-space: nowrap; }
  .botnav .bn-sair { color: #ff8a8a; }
  .botnav svg { width: 20px; height: 20px; transition: filter .15s; filter: drop-shadow(0 0 3px color-mix(in srgb, var(--ouro) 22%, transparent)); }
  .botnav a:active, .botnav button:active { transform: scale(.9); }
  .botnav .on { color: var(--ouro); text-shadow: 0 0 8px color-mix(in srgb, var(--ouro) 55%, transparent); }
  .botnav .on svg { filter: drop-shadow(0 0 8px color-mix(in srgb, var(--ouro) 85%, transparent)) drop-shadow(0 0 3px #ffe9a8); }
  /* traço indicador do item ativo */
  .botnav .on::before {
    content: ""; position: absolute; top: -9px; left: 50%; transform: translateX(-50%);
    width: 22px; height: 3px; border-radius: 999px; background: var(--ouro);
    box-shadow: 0 0 8px color-mix(in srgb, var(--ouro) 80%, transparent);
  }
  /* pontinho "ao vivo" */
  .botnav-live {
    position: absolute; top: 3px; left: calc(50% + 8px); width: 6px; height: 6px; border-radius: 50%;
    background: #ef4444; box-shadow: 0 0 6px #ef4444; animation: fabPulse 1.6s ease-in-out infinite;
  }
  /* (o antigo botão Menu quadrado dourado saiu daqui: o Menu virou o botão flutuante central,
     e este slot da direita passou a ser a Análise PRO — regras de .bn-pro mais abaixo.) */
  body.menu-open .botnav { transform: translateY(110%); }

  /* Vão central na barra (só admin) — reserva o espaço do botão flutuante pra ele NÃO
     sobrepor os outros itens. */
  /* align-items:flex-end alinha os itens pela BASE → todos os labels ficam na mesma linha,
     mesmo o Menu (ícone maior) — o ícone dele sobe, o texto fica alinhado com os outros. */
  .botnav .bn-side { flex: 1 1 0; min-width: 0; display: flex; align-items: flex-end; justify-content: space-around; gap: 2px; }
  .botnav .bn-side > a, .botnav .bn-side > button { flex: 1 1 0; min-width: 0; padding: 2px 3px; justify-content: flex-end; }
  .botnav .bn-gap { flex: 0 0 auto; width: 60px; align-self: stretch; pointer-events: none; }

  /* Borda superior da barra: filete dourado FIXO. Antes era um "raio" correndo em loop
     infinito — puro enfeite, repintava a barra o tempo todo e não dizia nada ao cliente. */
  .botnav::after {
    content: ""; position: absolute; top: -2px; left: 0; right: 0; height: 2px; pointer-events: none;
    background: linear-gradient(90deg, transparent, color-mix(in srgb, var(--ouro) 70%, transparent) 35%, #ffe9a8 50%, color-mix(in srgb, var(--ouro) 70%, transparent) 65%, transparent);
  }

  /* Botão flutuante CENTRAL: hoje é o MENU (trocou de lugar com a Análise Pro). Fica no VÃO
     central (não cobre os outros), saliente pra cima.
     É <button> agora, não <a> — por isso o reset de border/font/cursor, senão o navegador
     desenha borda cinza e troca a fonte por Arial dentro do círculo dourado. */
  .bn-fab {
    display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 1px;
    position: fixed; left: 50%; transform: translateX(-50%);
    /* encostado na faixa (que agora é fina): o botão fica meio dentro, meio acima dela.
       z-index acima do letreiro DE PROPÓSITO — com os atalhos removidos, este botão virou a
       única navegação do app e não pode ficar coberto por um aviso passando. */
    bottom: calc(8px + env(safe-area-inset-bottom)); z-index: 995;
    width: 58px; height: 58px; border-radius: 50%; text-decoration: none;
    background: linear-gradient(160deg, #fff3c4, #f0cf7a 30%, #e6b73e 60%, #c9962a);
    color: #241803; isolation: isolate;
    border: 0; font: inherit; padding: 0; cursor: pointer; -webkit-appearance: none; appearance: none;
    box-shadow: 0 0 0 4px #070b16, 0 7px 18px -6px var(--ouro), 0 0 16px color-mix(in srgb, var(--ouro) 55%, transparent);
  }
  /* Aro dourado FIXO em volta (antes um conic girando a 1.8s sem parar — enfeite caro,
     visível só pro admin, girando 24h por dia atrás do botão). */
  .bn-fab::before {
    content: ""; position: absolute; inset: -3px; border-radius: 50%; z-index: -1;
    background: linear-gradient(160deg, #ffedb0, #e6b73e 60%, #c9962a);
  }
  .bn-fab svg { width: 22px; height: 22px; stroke: #241803; filter: none; }
  .bn-fab b { font-size: 8.5px; font-weight: 900; letter-spacing: .6px; color: #241803; }
  .bn-fab:active { transform: translateX(-50%) scale(.92); }
  /* o traço do "hambúrguer" pede um pouco mais de ar que o ícone de gráfico que estava aqui */
  .bn-fab-menu svg { width: 24px; height: 24px; }

  /* ANÁLISE PRO no slot da direita: mesma forma dos outros itens da barra, mas dourado —
     é o único item pago, então tem que se destacar sem virar outro botão gigante. */
  .bn-pro { color: var(--ouro) !important; }
  .bn-pro svg { stroke: var(--ouro); filter: drop-shadow(0 0 5px color-mix(in srgb, var(--ouro) 55%, transparent)); }
  .bn-pro span { font-weight: 900; letter-spacing: .3px; }
  .bn-pro.on { text-shadow: 0 0 8px color-mix(in srgb, var(--ouro) 60%, transparent); }
  .bn-pro.on svg { filter: drop-shadow(0 0 8px color-mix(in srgb, var(--ouro) 85%, transparent)) drop-shadow(0 0 3px #ffe9a8); }
}

/* Sem barra lateral no desktop: conteúdo centralizado (o .wrap já tem max-width + margin auto),
   sem o antigo vão de 260px. A navegação é feita pela barra inferior (botnav). */

/* ---------- Login: botão no topo + janela do QR ---------- */
.topo-dir { display: flex; align-items: center; gap: clamp(10px, 2vw, 18px); }
.auth { display: flex; align-items: center; gap: 10px; }
.auth-nome { font-size: 13px; font-weight: 700; color: var(--txt); max-width: 110px; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.auth-plan { font-size: 10.5px; font-weight: 800; letter-spacing: .5px; padding: 3px 9px; border-radius: 999px; text-transform: uppercase; }
.auth-plan.admin { color: var(--empate); background: color-mix(in srgb, var(--empate) 16%, transparent); border: 1px solid color-mix(in srgb, var(--empate) 45%, var(--linha)); }
.auth-plan.ativo { color: var(--ok); background: color-mix(in srgb, var(--ok) 14%, transparent); border: 1px solid color-mix(in srgb, var(--ok) 40%, var(--linha)); }
.auth-plan.expirado { color: #ff8a8a; background: color-mix(in srgb, var(--loss) 14%, transparent); border: 1px solid color-mix(in srgb, var(--loss) 40%, var(--linha)); }
.auth-btn {
  cursor: pointer; font-family: inherit; font-size: 13px; font-weight: 800; letter-spacing: .3px;
  padding: 8px 18px; border-radius: 999px; color: #04120c;
  background: var(--ok); border: 1px solid var(--ok);
  box-shadow: 0 0 18px color-mix(in srgb, var(--ok) 45%, transparent);
  transition: transform .15s, box-shadow .2s;
}
.auth-btn:hover { transform: translateY(-1px); box-shadow: 0 0 26px color-mix(in srgb, var(--ok) 60%, transparent); }
.auth-btn.sair { background: transparent; color: var(--sub); border-color: var(--linha); box-shadow: none; text-decoration: none; }
.auth-btn.sair:hover { color: var(--txt); border-color: var(--loss); }

.login-ov {
  position: fixed; inset: 0; z-index: 2000; display: flex; align-items: center; justify-content: center;
  padding: 20px; background: rgba(3, 6, 12, .72); backdrop-filter: blur(6px); animation: login-fade .2s ease;
}
.login-ov[hidden] { display: none; }
@keyframes login-fade { from { opacity: 0; } }
.login-card {
  position: relative; width: 100%; max-width: 360px; text-align: center;
  background: linear-gradient(180deg, #0e1a2e, #0b1322);
  border: 1px solid color-mix(in srgb, var(--ok) 30%, var(--linha)); border-radius: 22px;
  padding: 30px 26px 26px;
  box-shadow: 0 30px 80px -20px rgba(0, 0, 0, .8), 0 0 40px -10px color-mix(in srgb, var(--ok) 40%, transparent);
}
.login-x {
  position: absolute; top: 14px; right: 14px; width: 32px; height: 32px; display: grid; place-items: center;
  cursor: pointer; background: #0a1120; border: 1px solid var(--linha); border-radius: 9px; color: var(--sub);
}
.login-x svg { width: 16px; height: 16px; }
.login-x:hover { color: var(--txt); border-color: var(--loss); }
.login-tag { font-size: 10px; font-weight: 800; letter-spacing: 2px; text-transform: uppercase; color: var(--ok); }
.login-tit { font-size: 22px; font-weight: 900; margin: 8px 0 6px; }
.login-sub { font-size: 13px; color: var(--sub); margin: 0 0 20px; line-height: 1.5; }
.login-qr {
  width: 220px; height: 220px; margin: 0 auto 18px; border-radius: 16px; overflow: hidden;
  background: #fff; display: grid; place-items: center; padding: 10px;
}
.login-qr svg { width: 100%; height: 100%; display: block; }
.login-load { font-size: 13px; color: #64748b; }
.login-status { display: inline-flex; align-items: center; gap: 8px; font-size: 13px; font-weight: 600; color: var(--sub); margin-bottom: 16px; }
.login-status i { width: 8px; height: 8px; border-radius: 50%; background: var(--empate); box-shadow: 0 0 10px var(--empate); animation: pulse 1.4s infinite; }
.login-status.ok { color: var(--ok); }
.login-status.ok i { background: var(--ok); box-shadow: 0 0 10px var(--ok); animation: none; }
.login-status.erro { color: var(--loss); }
.login-status.erro i { background: var(--loss); box-shadow: 0 0 10px var(--loss); animation: none; }
.login-tg { display: block; font-size: 13px; font-weight: 700; color: var(--visitante); text-decoration: none; }
.login-tg:hover { text-decoration: underline; }

@media (max-width: 560px) {
  .hora { font-size: 20px; }
  .auth-btn { padding: 7px 15px; }
}

/* ---------- Páginas internas: cabeçalho + vitrine de jogos ---------- */
.cor-ok { --c: var(--ok); --cor: var(--ok); }
.pagina-head { margin-bottom: 4px; }
.pagina-tit { font-size: clamp(26px, 5vw, 38px); font-weight: 900; letter-spacing: -.5px; }
.pagina-sub { font-size: 14px; color: var(--sub); margin-top: 4px; }

/* Seções por empresa (provedor): título com filete + contagem de jogos */
.empresa-bloco { margin-top: 22px; }
.empresa-bloco:first-of-type { margin-top: 12px; }
.empresa-tit {
  display: flex; align-items: center; gap: 10px;
  font-size: 13px; font-weight: 800; letter-spacing: 1.5px; text-transform: uppercase; color: var(--txt);
  margin-bottom: 12px;
}
.empresa-tit .empresa-linha { width: 22px; height: 3px; border-radius: 999px; background: var(--ouro); }
.empresa-tit small { font-weight: 600; letter-spacing: .5px; text-transform: none; color: var(--sub); margin-left: auto; }
.jogos-grid { display: grid; grid-template-columns: 1fr; gap: 12px; margin-top: 8px; }
.jcard {
  position: relative; display: flex; align-items: center; gap: 16px;
  padding: 16px 18px; border-radius: 18px; text-decoration: none; overflow: hidden;
  background:
    radial-gradient(120% 140% at 0% 0%, color-mix(in srgb, var(--c) 20%, transparent), transparent 60%),
    var(--painel);
  border: 1px solid color-mix(in srgb, var(--c) 38%, var(--linha));
  box-shadow: 0 14px 34px -22px color-mix(in srgb, var(--c) 70%, transparent);
  transition: transform .15s, box-shadow .2s, border-color .2s;
}
/* filete de cor na borda esquerda */
.jcard::before { content: ""; position: absolute; left: 0; top: 0; bottom: 0; width: 4px; background: var(--c); }
.jcard:hover { transform: translateY(-3px); border-color: var(--c); box-shadow: 0 22px 50px -20px color-mix(in srgb, var(--c) 80%, transparent); }
.jcard:hover .jcard-seta { transform: translateX(4px); opacity: 1; }
.jcard.em-breve { opacity: .5; filter: saturate(.5); pointer-events: none; }

/* ícone temático do jogo */
.jcard-ic {
  flex: none; width: 58px; height: 58px; border-radius: 15px; font-size: 27px;
  display: grid; place-items: center; overflow: hidden;
  background: color-mix(in srgb, var(--c) 20%, #0a1120);
  border: 1px solid color-mix(in srgb, var(--c) 45%, var(--linha));
  box-shadow: inset 0 0 18px -8px var(--c);
}
.jcard-ic-img { padding: 0; background: #0a1120; }
.jcard-ic-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.jcard-body { display: flex; flex-direction: column; gap: 3px; min-width: 0; flex: 1; }
.jcard-nome { font-size: 19px; font-weight: 900; letter-spacing: -.5px; color: var(--txt); line-height: 1.15; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.jcard-var {
  font-size: 12px; font-weight: 800; letter-spacing: .5px; text-transform: uppercase;
  padding: 2px 9px; border-radius: 999px; color: var(--c);
  background: color-mix(in srgb, var(--c) 18%, #0a1120);
  border: 1px solid color-mix(in srgb, var(--c) 55%, var(--linha));
}
.jcard-casa { font-size: 12.5px; color: var(--sub); font-weight: 600; margin-top: 3px; display: flex; align-items: center; gap: 8px; }
/* Wins seguidos do jogo (ao vivo) no rodapé do card */
.jcard-streak { font-size: 11.5px; font-weight: 800; color: var(--ok); }
.jcard-streak:empty { display: none; }

/* Placar da janela atual da lista, no card da vitrine: ✅ win / ❌ loss / 🟠 empate.
   Fica embaixo do nome (à esquerda) de propósito — no canto direito a informação
   ficava longe demais do jogo em telas largas. */
.jcard-placar { display: flex; align-items: center; gap: 7px; margin-top: 9px; flex-wrap: wrap; }
.jplac {
  display: inline-flex; align-items: center; gap: 5px;
  font-size: 12.5px; font-weight: 800;
  padding: 3px 9px; border-radius: 999px;
  background: #0a1120; border: 1px solid var(--linha);
}
.jplac.win { color: var(--ok); border-color: color-mix(in srgb, var(--ok) 42%, var(--linha)); }
.jplac.loss { color: var(--loss); border-color: color-mix(in srgb, var(--loss) 42%, var(--linha)); }
.jplac.emp { color: var(--empate); border-color: color-mix(in srgb, var(--empate) 42%, var(--linha)); }

.jcard-side { display: flex; flex-direction: column; align-items: flex-end; gap: 8px; flex: none; }
.jcard-status {
  display: inline-flex; align-items: center; gap: 6px;
  font-size: 10px; font-weight: 800; letter-spacing: 1.2px; text-transform: uppercase; color: var(--sub);
  padding: 4px 10px; border-radius: 999px; background: #0a1120; border: 1px solid var(--linha);
}
.jcard-status.live { color: var(--ok); border-color: color-mix(in srgb, var(--ok) 45%, var(--linha)); background: color-mix(in srgb, var(--ok) 14%, #0a1120); }
.jcard-status.live i { width: 7px; height: 7px; border-radius: 50%; background: var(--ok); box-shadow: 0 0 8px var(--ok); animation: pulse 1.5s infinite; }
/* Sessão AO VIVO agora (vermelho pulsante) — sobrescreve o "ativo" verde quando há sessão rolando. */
.jcard-status.aovivo { color: var(--loss); border-color: color-mix(in srgb, var(--loss) 50%, var(--linha)); background: color-mix(in srgb, var(--loss) 16%, #0a1120); }
.jcard-status.aovivo i { background: var(--loss); box-shadow: 0 0 8px var(--loss); animation: pulse 1s infinite; }
/* Mesa parada (sem resultado há muito tempo) */
.jcard-status.parado { color: var(--empate); border-color: color-mix(in srgb, var(--empate) 45%, var(--linha)); background: color-mix(in srgb, var(--empate) 12%, #0a1120); }
.jcard-status.parado i { width: 7px; height: 7px; border-radius: 50%; background: var(--empate); box-shadow: none; animation: none; }
.jcard-seta { font-size: 22px; font-weight: 800; color: var(--c); opacity: .8; transition: transform .15s, opacity .15s; }

/* Paginação */
.paginacao { display: flex; flex-wrap: wrap; gap: 6px; }
.pg {
  min-width: 34px; height: 34px; padding: 0 8px;
  background: #0a1120; border: 1px solid var(--linha); border-radius: 9px;
  color: var(--txt); font-weight: 700; font-size: 14px; cursor: pointer;
  transition: border-color .15s, background .15s;
}
.pg:hover:not(:disabled) { border-color: var(--cor); }
.pg:disabled { opacity: .35; cursor: default; }
.pg.ativa { background: var(--visitante); border-color: var(--visitante); color: #fff; }
.pg-nav { color: var(--sub); }

/* Responsivo: os blocos se completam conforme a tela aumenta/diminui */
@media (max-width: 820px) {
  .linha { grid-template-columns: 1fr; }
}
@media (max-width: 560px) {
  .relogio .hora { font-size: 22px; }
  /* mobile: hero é um slide da faixa .hrow — não rola sozinho (evita 2 scrolls) */
  .hero { overflow: hidden; padding-bottom: 0; }
  .hero-seq { flex: 1 1 auto; min-width: 0; padding: 20px; gap: 14px; }
  .ult { flex: 0 0 auto; min-width: 0; }
  .med-item b { font-size: 30px; }
  /* bead road: colunas fluidas pra caber todas na tela do celular */
  .bead { grid-auto-columns: 1fr; justify-content: stretch; gap: 6px 4px; }
  .b { width: 100%; height: auto; aspect-ratio: 1; max-width: 30px; margin: 0 auto; }
}

/* ===== Landing (Sobre) ===== */
.landing-hero {
  text-align: center;
  padding: clamp(36px, 8vw, 72px) 16px clamp(24px, 5vw, 40px);
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
}
.landing-tag {
  display: inline-flex;
  align-items: center;
  gap: 6px;
  font-size: 12px;
  font-weight: 800;
  letter-spacing: .5px;
  text-transform: uppercase;
  color: var(--ok);
  background: color-mix(in srgb, var(--ok) 14%, transparent);
  border: 1px solid color-mix(in srgb, var(--ok) 35%, transparent);
  padding: 6px 14px;
  border-radius: 999px;
}
.landing-tit {
  font-size: clamp(34px, 7vw, 58px);
  font-weight: 900;
  letter-spacing: -1px;
  color: var(--txt);
  line-height: 1.05;
}
/* Parte digitada (máquina de escrever) — branca; a segunda parte é o degradê fixo. */
.landing-tit .tw { color: var(--txt); }
.landing-tit .tw-grad {
  background: linear-gradient(120deg, #22d3ee, var(--ok) 70%);
  -webkit-background-clip: text; background-clip: text; color: transparent;
}
/* Cursor que pisca, logo depois da palavra digitada. */
.tw-caret {
  display: inline-block; width: 3px; height: .92em; margin: 0 2px -0.08em 1px;
  background: var(--ok); border-radius: 2px; vertical-align: baseline;
  animation: tw-blink 1s steps(1) infinite;
}
@keyframes tw-blink { 50% { opacity: 0; } }
.landing-sub {
  max-width: 560px;
  font-size: clamp(14px, 2vw, 16.5px);
  color: var(--sub);
  line-height: 1.6;
}
.landing-cta { display: flex; flex-wrap: wrap; justify-content: center; gap: 12px; margin-top: 8px; }
.btn-cta {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 800;
  font-size: 15px;
  font-family: inherit;
  padding: 13px 26px;
  border-radius: 12px;
  text-decoration: none;
  border: 0;
  cursor: pointer;
  background: var(--ok);
  color: #04150e;
  box-shadow: 0 16px 34px -14px color-mix(in srgb, var(--ok) 80%, transparent);
  transition: transform .15s ease, box-shadow .15s ease;
}
.btn-cta:hover { transform: translateY(-2px); }
.btn-cta-sec {
  background: transparent;
  color: var(--txt);
  border: 1px solid var(--linha);
  box-shadow: none;
}
.btn-cta-sec:hover { border-color: var(--ouro); }

/* Botão de teste grátis: dourado, chama atenção sem competir com o "Ver ao vivo" verde. */
.btn-teste {
  display: inline-flex; align-items: center; gap: 8px;
  font-weight: 800; font-size: 15px; padding: 13px 24px; border-radius: 12px;
  cursor: pointer; color: #1a1205;
  background: linear-gradient(135deg, var(--ouro), color-mix(in srgb, var(--ouro) 70%, #fff));
  border: 0;
  box-shadow: 0 16px 34px -14px color-mix(in srgb, var(--ouro) 80%, transparent);
  transition: transform .15s ease;
}
.btn-teste:hover { transform: translateY(-2px); }

.landing-cards {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
  gap: 14px;
  margin-top: 10px;
}
.lcard {
  background: var(--painel);
  border: 1px solid var(--linha);
  border-radius: 16px;
  padding: 20px 18px;
  display: flex;
  flex-direction: column;
  gap: 6px;
}
.lcard-ic { font-size: 26px; }
.lcard-tit { font-size: 15.5px; font-weight: 800; color: var(--txt); }
.lcard-desc { font-size: 13px; color: var(--sub); line-height: 1.5; }

.landing-rodape {
  text-align: center;
  font-size: 12px;
  color: var(--sub);
  padding: 28px 0 10px;
}

@media (max-width: 560px) {
  .landing-cards { grid-template-columns: 1fr; }
}

/* ==========================================================================
   LISTA — 15 sinais fixos por janela + telinha do sinal ativo (prefixo lst-)
   ========================================================================== */

/* ---- Placar da janela + contagem pra próxima lista ---- */
.lst-placar { display: flex; flex-direction: column; gap: 14px; }
.lst-placar-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 10px; }
.lst-pl-item {
  display: flex; flex-direction: column; align-items: center; gap: 2px;
  padding: 12px 8px; border-radius: 14px; background: #0a1120; border: 1px solid var(--linha);
}
.lst-pl-item b { font-size: 22px; font-weight: 900; color: var(--txt); font-variant-numeric: tabular-nums; }
.lst-pl-item span { font-size: 11px; font-weight: 700; letter-spacing: .4px; text-transform: uppercase; color: var(--sub); }
.lst-pl-item.empate b { color: var(--empate); }
.lst-pl-item.loss b { color: var(--loss); }
.lst-pl-item.assert b { color: var(--ok); }
.lst-pl-item.alta b { color: #f472b6; }   /* velas altas (crash) = rosa */
.lst-pl-prox {
  text-align: center; font-size: 13px; color: var(--sub);
  padding-top: 12px; border-top: 1px dashed var(--linha);
}
.lst-pl-prox b { color: var(--txt); font-variant-numeric: tabular-nums; }
@media (max-width: 520px) {
  .lst-placar-grid { grid-template-columns: repeat(2, 1fr); }
}

/* ---- Lista dos 15 sinais ---- */
.lst-lista-painel .painel-tit { margin-bottom: 12px; }
.lst-lista { display: flex; flex-direction: column; gap: 6px; }
.lst-row {
  display: grid; grid-template-columns: 32px 44px 1fr auto; align-items: center; gap: 10px;
  padding: 9px 12px; border-radius: 12px; background: #0a1120; border: 1px solid var(--linha);
  transition: border-color .2s, background .2s;
}
.lst-row.status-pendente { opacity: .48; }
.lst-row-idx { font-size: 11px; font-weight: 800; color: var(--sub); }
.lst-row-hora { font-size: 12.5px; color: var(--sub); font-variant-numeric: tabular-nums; }
.lst-row-lado { display: flex; align-items: center; gap: 8px; min-width: 0; font-size: 13.5px; font-weight: 700; color: var(--txt); }
.lst-bola { width: 11px; height: 11px; border-radius: 50%; flex: none; background: var(--linha); }
.lst-row-lado.lado-V .lst-bola { background: var(--casa); box-shadow: 0 0 8px color-mix(in srgb, var(--casa) 60%, transparent); }
.lst-row-lado.lado-A .lst-bola { background: var(--visitante); box-shadow: 0 0 8px color-mix(in srgb, var(--visitante) 60%, transparent); }
.lst-row-lado.lado-E .lst-bola { background: var(--empate); box-shadow: 0 0 8px color-mix(in srgb, var(--empate) 60%, transparent); }
.lst-row-label { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
/* Marble Race na lista: as 3 bolinhas do trio, cada uma na cor da mesa. */
.lst-trio { display: inline-flex; gap: 4px; flex: none; }
.lst-trio .lst-bola { background: var(--c); box-shadow: 0 0 8px color-mix(in srgb, var(--c) 60%, transparent); }
.lst-trio .lst-bola.cor-M1 { box-shadow: inset 0 0 0 1px rgba(255,255,255,.45); }
.lst-trio .lst-bola.cor-M5 { color: #0a1120; box-shadow: inset 0 0 0 1px rgba(0,0,0,.35); }
/* Crash: multiplicador da vela que decidiu o sinal (encostado à direita da coluna) */
.lst-row-mult { margin-left: auto; padding-left: 10px; font-size: 12.5px; font-weight: 800; font-variant-numeric: tabular-nums; color: var(--sub); flex: none; }
.lst-row.status-win .lst-row-mult { color: var(--ok); }
.lst-row.status-loss .lst-row-mult { color: var(--loss); }
/* Sinal futuro pra quem NÃO é VIP: além de borrar o texto, NEUTRALIZA a cor da bolinha.
   O blur sozinho não bastava — dava pra ver vermelho/azul e adivinhar o lado de graça.
   Aqui a bolinha vira cinza (a cor do lado é sobrescrita) e o texto some no blur. */
.lst-row-lado.lst-blur { filter: blur(5px); user-select: none; }
.lst-row-lado.lst-blur .lst-bola,
.lst-row-lado.lst-blur.lado-V .lst-bola,
.lst-row-lado.lst-blur.lado-A .lst-bola,
.lst-row-lado.lst-blur.lado-E .lst-bola {
  background: var(--sub);
  box-shadow: none;
  opacity: .5;
}
.lst-row-badge {
  justify-self: end; font-size: 10.5px; font-weight: 800; letter-spacing: .4px; text-transform: uppercase;
  padding: 4px 10px; border-radius: 999px; background: #0d1522; border: 1px solid var(--linha); color: var(--sub); white-space: nowrap;
}
.lst-row-badge.badge-win { color: var(--ok); background: color-mix(in srgb, var(--ok) 16%, #0a1120); border-color: color-mix(in srgb, var(--ok) 40%, var(--linha)); }
.lst-row-badge.badge-empate { color: var(--empate); background: color-mix(in srgb, var(--empate) 16%, #0a1120); border-color: color-mix(in srgb, var(--empate) 45%, var(--linha)); }
.lst-row-badge.badge-loss { color: var(--loss); background: color-mix(in srgb, var(--loss) 16%, #0a1120); border-color: color-mix(in srgb, var(--loss) 45%, var(--linha)); }
.lst-row-badge.badge-conferindo { color: var(--empate); background: color-mix(in srgb, var(--empate) 14%, #0a1120); border-color: color-mix(in srgb, var(--empate) 45%, var(--linha)); animation: sinal-pulse 1.2s ease-in-out infinite; }
.lst-row-badge.badge-aguardando { color: var(--sub); }
.lst-row-badge.badge-api_off { color: var(--loss); }
.lst-row.lst-row-ativo { border-color: color-mix(in srgb, var(--ouro) 55%, var(--linha)); box-shadow: 0 0 0 1px color-mix(in srgb, var(--ouro) 30%, transparent); background: color-mix(in srgb, var(--ouro) 8%, #0a1120); }
@media (max-width: 480px) {
  .lst-row { grid-template-columns: 26px 1fr auto; }
  .lst-row-hora { display: none; }
}

/* ---- Telinha do sinal ativo: a estrela da tela, logo abaixo da lista ---- */
.lst-ativo {
  position: relative; display: flex; flex-direction: column; align-items: center; gap: 12px;
  padding: 26px 20px; border-radius: 22px; text-align: center; overflow: hidden;
  --sc: var(--linha);
  background: radial-gradient(120% 160% at 50% 0%, color-mix(in srgb, var(--sc) 20%, transparent), var(--painel) 65%);
  border: 1px solid color-mix(in srgb, var(--sc) 45%, var(--linha));
  box-shadow: 0 20px 50px -28px color-mix(in srgb, var(--sc) 70%, transparent);
}
/* ===== Card da Lista — modelo REVEAL (suspense): esconde o LADO até a ENTRADA sair ===== */
.lst-ativo.prep { --sc: var(--empate); }   /* preparando/aguardando: cor NEUTRA (âmbar), não vaza o lado */
.lst-ativo .lst-lock { z-index: 6; }
.la-tag { font-size: 11px; font-weight: 800; letter-spacing: 1.5px; text-transform: uppercase; color: var(--sub); }
.la-tag small { opacity: .8; margin-left: 3px; text-transform: none; letter-spacing: .3px; }
.la-body { display: flex; flex-direction: column; align-items: center; gap: 12px; width: 100%; }
/* -- preparando / aguardando (lado escondido) -- */
.la-prep { display: flex; flex-direction: column; align-items: center; gap: 12px; }
.la-alert { display: inline-flex; align-items: center; gap: 8px; font-size: 12.5px; font-weight: 900; letter-spacing: 1px; text-transform: uppercase; color: var(--sc);
  padding: 7px 16px; border-radius: 999px; background: color-mix(in srgb, var(--sc) 14%, #0a1120); border: 1px solid color-mix(in srgb, var(--sc) 45%, var(--linha)); animation: la-beat 1.1s ease-in-out infinite; }
@keyframes la-beat { 50% { transform: scale(1.05); box-shadow: 0 0 22px color-mix(in srgb, var(--sc) 42%, transparent); } }
.la-alert .dot { width: 9px; height: 9px; border-radius: 50%; background: var(--sc); box-shadow: 0 0 10px var(--sc); }
.la-hidden { position: relative; overflow: hidden; min-width: 210px; padding: 13px 20px; border-radius: 16px; background: #0a1322;
  border: 1px dashed color-mix(in srgb, var(--sc) 40%, var(--linha)); font-size: 32px; font-weight: 900; letter-spacing: 8px; color: #26324a; }
.la-hidden::after { content: ''; position: absolute; inset: 0; background: linear-gradient(110deg, transparent 30%, color-mix(in srgb, var(--sc) 22%, transparent), transparent 70%); transform: translateX(-100%); animation: la-shine 1.8s linear infinite; }
@keyframes la-shine { to { transform: translateX(100%); } }
.la-hint { font-size: 13px; color: var(--sub); font-weight: 700; }
.la-hint b { color: var(--txt); font-variant-numeric: tabular-nums; }
/* -- revelado (entrada saiu) -- */
.la-reveal { display: flex; flex-direction: column; align-items: center; gap: 10px; animation: la-pop .45s cubic-bezier(.2, 1.3, .4, 1); }
@keyframes la-pop { 0% { transform: scale(.72); opacity: 0; } 60% { transform: scale(1.06); } 100% { transform: scale(1); opacity: 1; } }
.la-go { font-size: 11px; font-weight: 900; letter-spacing: 2px; text-transform: uppercase; color: var(--sc); }
.la-side { display: flex; align-items: center; gap: 14px; }
.la-disc { width: 24px; height: 24px; border-radius: 50%; background: var(--sc); box-shadow: 0 0 26px color-mix(in srgb, var(--sc) 80%, transparent); animation: sinal-pulse 1.4s ease-in-out infinite; }
.la-name { font-size: clamp(30px, 8vw, 44px); font-weight: 900; letter-spacing: -1px; color: var(--sc); text-shadow: 0 0 30px color-mix(in srgb, var(--sc) 42%, transparent); line-height: 1; }
.la-step { display: flex; gap: 8px; }
.la-step span { font-size: 13px; font-weight: 800; padding: 7px 15px; border-radius: 12px; color: var(--sub); background: #0a1120; border: 1px solid var(--linha); }
.la-step .atual { color: var(--sc); background: color-mix(in srgb, var(--sc) 18%, #0a1120); border-color: color-mix(in srgb, var(--sc) 55%, var(--linha)); box-shadow: 0 0 16px color-mix(in srgb, var(--sc) 30%, transparent); animation: sinal-pulse 1s ease-in-out infinite; }
.la-step .passou { opacity: .45; text-decoration: line-through; }
.la-res { font-size: clamp(28px, 7vw, 40px); font-weight: 900; color: var(--sc); text-shadow: 0 0 26px color-mix(in srgb, var(--sc) 42%, transparent); animation: la-pop .4s ease; }
.la-hora { font-size: 12px; color: var(--sub); font-variant-numeric: tabular-nums; }
.lst-ativo.locked .la-body { filter: blur(4px); opacity: .5; pointer-events: none; }
/* A cor da telinha (--sc) é a COR DO LADO enquanto a operação está de pé: é a informação
   que o operador precisa bater o olho e ver (Banker vermelho, Player azul). Antes os
   status "aguardando"/"conferindo" pintavam tudo de dourado e escondiam o lado. */
.lst-ativo.lado-V { --sc: var(--casa); }
.lst-ativo.lado-A { --sc: var(--visitante); }
.lst-ativo.lado-E { --sc: var(--empate); }
/* Crash (Spaceman): entrada 2X = verde */
.lst-ativo.lado-2X { --sc: var(--ok); }
.lst-row-lado.lado-2X { color: var(--ok); }
.lst-row-lado.lado-2X .lst-bola { background: var(--ok); box-shadow: 0 0 8px color-mix(in srgb, var(--ok) 60%, transparent); }
.lst-row-lado.lst-blur.lado-2X .lst-bola { background: var(--linha); box-shadow: none; }
/* No DESFECHO a cor passa a comunicar o resultado, não o lado — por isso vem depois. */
.lst-ativo.status-win { --sc: var(--ok); }
.lst-ativo.status-empate { --sc: var(--empate); }
.lst-ativo.status-loss { --sc: var(--loss); }
.lst-ativo.status-api_off { --sc: var(--loss); }
.lst-ativo-tag {
  font-size: 11px; font-weight: 800; letter-spacing: 1.4px; text-transform: uppercase; color: var(--sub);
}
.lst-ativo-tag small { font-weight: 700; opacity: .8; margin-left: 4px; text-transform: none; letter-spacing: .3px; }
.lst-ativo-core { display: flex; align-items: center; gap: 12px; }
.lst-bola.grande {
  width: 20px; height: 20px; border-radius: 50%; background: var(--sc);
  box-shadow: 0 0 22px color-mix(in srgb, var(--sc) 75%, transparent);
}
.lst-ativo-lado { font-size: clamp(22px, 6vw, 30px); font-weight: 900; letter-spacing: -.5px; color: var(--txt); }
.lst-ativo-estado { min-height: 28px; display: flex; align-items: center; justify-content: center; gap: 8px; font-size: 14px; color: var(--sub); font-weight: 700; }
.lst-ativo-hora { font-size: 12px; color: var(--sub); font-variant-numeric: tabular-nums; }
.lst-count { color: var(--txt); font-variant-numeric: tabular-nums; }

/* Loader (aguardando o resultado-gatilho abrir o sinal) */
.lst-loader {
  width: 15px; height: 15px; border-radius: 50%; flex: none;
  border: 2px solid color-mix(in srgb, var(--sc) 30%, transparent); border-top-color: var(--sc);
  animation: nl-spin .8s linear infinite;
}

/* Stepper Entrada → G1 → G2 */
.lst-stepper { display: flex; align-items: center; gap: 6px; }
.lst-step {
  font-size: 11px; font-weight: 800; letter-spacing: .3px; padding: 5px 11px; border-radius: 999px;
  background: #0a1120; border: 1px solid var(--linha); color: var(--sub);
}
.lst-step.passou { color: var(--sub); opacity: .5; text-decoration: line-through; }
/* O passo atual acompanha a cor do lado (--sc), não uma cor fixa: assim "Entrada", "G1"
   e "G2" ficam na mesma cor da bolinha e do sinal. */
.lst-step.atual { color: var(--sc); background: color-mix(in srgb, var(--sc) 18%, #0a1120); border-color: color-mix(in srgb, var(--sc) 50%, var(--linha)); animation: sinal-pulse 1s ease-in-out infinite; }

.lst-resultado { font-size: 16px; font-weight: 900; }
.lst-resultado.res-win { color: var(--ok); }
.lst-resultado.res-empate { color: var(--empate); }
.lst-resultado.res-loss { color: var(--loss); }
.lst-off { color: var(--loss); font-weight: 700; }

/* Gate VIP da telinha: mesmo padrão do partials/sinal.ejs (cadeado + blur) */
.lst-ativo.locked { --sc: var(--empate); }
.lst-ativo.locked .lst-ativo-core,
.lst-ativo.locked .lst-ativo-estado { filter: blur(4px); opacity: .5; pointer-events: none; }
.lst-lock {
  position: absolute; inset: 0; z-index: 5; display: flex; flex-direction: column;
  align-items: center; justify-content: center; gap: 8px; text-align: center; padding: 16px;
  background: rgba(7, 13, 24, .6);
}
.lst-lock .lock-ic {
  width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; color: var(--empate);
  background: color-mix(in srgb, var(--empate) 16%, #0a1120); border: 1px solid color-mix(in srgb, var(--empate) 45%, var(--linha));
}
.lst-lock .lock-ic svg { width: 22px; height: 22px; }

/* ---------- Notificações (views/notificacoes.ejs) ---------- */

/* Aviso de push desligado no servidor (chaves VAPID ausentes) */
.ntf-aviso {
  display: flex; align-items: flex-start; gap: 12px; padding: 14px 16px; border-radius: 16px;
  margin-bottom: 14px;
}
.ntf-aviso-off {
  background: color-mix(in srgb, var(--empate) 14%, var(--painel));
  border: 1px solid color-mix(in srgb, var(--empate) 45%, var(--linha));
}
.ntf-aviso-ic { font-size: 20px; line-height: 1; flex: none; }
.ntf-aviso b { display: block; font-size: 14px; color: var(--txt); }
.ntf-aviso span { font-size: 12.5px; color: var(--sub); }

/* Bloco de ativação: primeira coisa que a pessoa vê na tela */
.ntf-ativa { display: flex; flex-direction: column; gap: 14px; margin-bottom: 18px; }
.ntf-ativa-off, .ntf-ativa-on { display: flex; align-items: center; gap: 14px; }
.ntf-ativa-ic {
  flex: none; width: 46px; height: 46px; border-radius: 14px; display: grid; place-items: center;
  font-size: 22px; background: color-mix(in srgb, var(--sub) 14%, #0a1120); border: 1px solid var(--linha);
}
.ntf-ativa-ic.ok {
  background: color-mix(in srgb, var(--ok) 16%, #0a1120); border-color: color-mix(in srgb, var(--ok) 45%, var(--linha));
}
.ntf-ativa-txt { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.ntf-ativa-txt b { font-size: 15px; font-weight: 900; color: var(--txt); }
.ntf-ativa-txt span { font-size: 12.5px; color: var(--sub); }
.ntf-ativa-acoes { display: flex; align-items: center; justify-content: space-between; gap: 12px; flex-wrap: wrap; }

.ntf-btn {
  font-family: inherit; font-size: 14px; font-weight: 800; cursor: pointer; border: none;
  border-radius: 999px; padding: 12px 22px; transition: transform .15s, opacity .15s;
}
.ntf-btn:active { transform: scale(.97); }
.ntf-btn:disabled { opacity: .5; cursor: not-allowed; }
.ntf-btn-grande {
  width: 100%; color: #04120c; background: var(--ok);
  box-shadow: 0 10px 26px -12px color-mix(in srgb, var(--ok) 70%, transparent);
}
.ntf-btn-sec {
  color: var(--txt); background: #0a1120; border: 1px solid var(--linha);
}
.ntf-link-off {
  font-family: inherit; font-size: 12.5px; font-weight: 700; color: var(--sub);
  background: none; border: none; cursor: pointer; text-decoration: underline; padding: 4px;
}
.ntf-link-off:hover { color: var(--loss); }

.ntf-status {
  font-size: 12.5px; font-weight: 700; padding: 10px 12px; border-radius: 12px;
}
.ntf-status.ok { color: var(--ok); background: color-mix(in srgb, var(--ok) 14%, #0a1120); border: 1px solid color-mix(in srgb, var(--ok) 40%, var(--linha)); }
.ntf-status.erro { color: var(--loss); background: color-mix(in srgb, var(--loss) 14%, #0a1120); border: 1px solid color-mix(in srgb, var(--loss) 40%, var(--linha)); }

/* Cabeçalho da lista de jogos + atalhos ligar/desligar todos */
.ntf-jogos-head { display: flex; align-items: center; justify-content: space-between; gap: 12px; margin-top: 6px; }
.ntf-jogos-tit { font-size: 11px; font-weight: 800; letter-spacing: 1.2px; text-transform: uppercase; color: var(--sub); }
.ntf-jogos-atalhos { display: flex; align-items: center; gap: 8px; font-size: 12px; color: var(--sub); }
.ntf-atalho {
  font-family: inherit; font-size: 12px; font-weight: 700; color: var(--ok); background: none;
  border: none; cursor: pointer; padding: 2px 4px; text-decoration: underline;
}

/* Linhas de jogo com o interruptor */
.ntf-lista { display: flex; flex-direction: column; gap: 7px; }
.ntf-row {
  display: flex; align-items: center; gap: 13px; padding: 10px 14px; border-radius: 14px;
  background: var(--painel); border: 1px solid var(--linha); cursor: pointer; transition: border-color .15s, background .15s;
}
.ntf-row:hover { border-color: color-mix(in srgb, var(--ok) 35%, var(--linha)); background: color-mix(in srgb, var(--ok) 5%, var(--painel)); }
.ntf-row-ic {
  flex: none; width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center;
  font-size: 20px; background: #0a1120; border: 1px solid var(--linha);
}
.ntf-row-ic-img { padding: 0; overflow: hidden; }
.ntf-row-ic-img img { width: 100%; height: 100%; object-fit: cover; display: block; }
.ntf-row-nome { flex: 1; min-width: 0; display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
/* Nome do jogo em evidência + rótulo da variação sempre legível (não depende da cor do jogo) */
.ntf-row-txt { font-size: 16.5px; font-weight: 800; letter-spacing: -.3px; color: var(--txt); }
.ntf-var {
  font-size: 10.5px; font-weight: 800; letter-spacing: .6px; text-transform: uppercase; white-space: nowrap;
  padding: 3px 9px; border-radius: 999px; color: color-mix(in srgb, var(--txt) 82%, transparent);
  background: color-mix(in srgb, var(--txt) 10%, transparent);
  border: 1px solid color-mix(in srgb, var(--txt) 20%, var(--linha));
}

/* Interruptor (toggle switch): checkbox real escondido, label estilizado no lugar */
.ntf-switch { position: relative; flex: none; width: 44px; height: 26px; }
.ntf-check {
  position: absolute; inset: 0; margin: 0; opacity: 0; cursor: pointer; z-index: 1;
}
.ntf-switch-track {
  position: absolute; inset: 0; border-radius: 999px; background: #0a1120;
  border: 1px solid var(--linha); transition: background .18s, border-color .18s;
}
.ntf-switch-track::before {
  content: ''; position: absolute; top: 2px; left: 2px; width: 20px; height: 20px;
  border-radius: 50%; background: var(--sub); transition: transform .18s, background .18s;
}
.ntf-check:checked ~ .ntf-switch-track {
  background: color-mix(in srgb, var(--ok) 30%, #0a1120); border-color: color-mix(in srgb, var(--ok) 55%, var(--linha));
}
.ntf-check:checked ~ .ntf-switch-track::before { transform: translateX(18px); background: var(--ok); }
.ntf-check:focus-visible ~ .ntf-switch-track { outline: 2px solid var(--ok); outline-offset: 2px; }

/* Barra de salvar: fixa no rodapé no mobile, pra sempre estar visível */
.ntf-salvar-barra {
  position: sticky; bottom: 0; z-index: 20; display: flex; flex-direction: column; gap: 8px;
  margin-top: 20px; padding: 14px 0 4px; background: linear-gradient(180deg, transparent, var(--bg) 30%);
}
.ntf-salvar-msg { font-size: 12.5px; font-weight: 700; text-align: center; }
.ntf-salvar-msg.ok { color: var(--ok); }
.ntf-salvar-msg.erro { color: var(--loss); }

@media (max-width: 560px) {
  .ntf-ativa-acoes { flex-direction: column; align-items: stretch; }
  .ntf-link-off { text-align: center; }
}

/* ── AULAS ─────────────────────────────────────────────────────────────────── */
/* Vídeo responsivo 16:9 — usado no destaque e nos cards. */
.aula-video {
  position: relative; width: 100%; aspect-ratio: 16 / 9;
  background: #000; border-radius: 14px; overflow: hidden;
  border: 1px solid var(--linha);
}
.aula-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }

/* Etiqueta (badge) da aula */
.aula-etq {
  display: inline-block; font-size: 10px; font-weight: 800; letter-spacing: 1px;
  text-transform: uppercase; color: var(--ok); padding: 4px 10px; border-radius: 999px;
  background: color-mix(in srgb, var(--ok) 14%, transparent);
  border: 1px solid color-mix(in srgb, var(--ok) 40%, var(--linha));
}
.aula-etq.etq-dest { color: var(--ouro); background: color-mix(in srgb, var(--ouro) 14%, transparent); border-color: color-mix(in srgb, var(--ouro) 40%, var(--linha)); }

/* Destaque: vídeo + info lado a lado no PC, empilhado no mobile */
.aula-destaque {
  display: grid; grid-template-columns: 1.4fr 1fr; gap: 20px; align-items: center;
  margin: 14px 0 26px; padding: 16px; border-radius: 18px;
  background: radial-gradient(120% 140% at 0% 0%, color-mix(in srgb, var(--ouro) 10%, transparent), var(--painel) 60%);
  border: 1px solid color-mix(in srgb, var(--ouro) 30%, var(--linha));
}
.aula-dest-info { display: flex; flex-direction: column; gap: 12px; }
.aula-dest-tit { font-size: clamp(20px, 3vw, 28px); font-weight: 900; letter-spacing: -.4px; }
.aula-dest-desc { color: var(--sub); font-size: 14px; line-height: 1.55; }

/* Título de seção (mesma linguagem da vitrine de jogos) */
.aula-sec-tit {
  display: flex; align-items: center; gap: 10px; margin: 8px 0 14px;
  font-size: 13px; font-weight: 800; letter-spacing: 1px; text-transform: uppercase; color: var(--txt);
}
.aula-sec-linha { width: 22px; height: 3px; border-radius: 999px; background: var(--ouro); }
.aula-sec-tit small { font-weight: 600; letter-spacing: .5px; text-transform: none; color: var(--sub); margin-left: auto; }

/* Grade das demais aulas */
.aula-grade { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 16px; }
.aula-card {
  display: flex; flex-direction: column; border-radius: 16px; overflow: hidden;
  background: var(--painel); border: 1px solid var(--linha);
  transition: border-color .2s, transform .2s;
}
.aula-card:hover { border-color: color-mix(in srgb, var(--ok) 45%, var(--linha)); transform: translateY(-2px); }
.aula-card .aula-video { border-radius: 0; border: 0; border-bottom: 1px solid var(--linha); }
.aula-card-corpo { display: flex; flex-direction: column; gap: 10px; padding: 14px; }
.aula-card-tit { font-size: 16px; font-weight: 800; letter-spacing: -.2px; }
.aula-card-desc { color: var(--sub); font-size: 13px; line-height: 1.5; flex: 1; }

/* Tags */
.aula-tags { display: flex; flex-wrap: wrap; gap: 6px; }
.aula-tag {
  font-size: 11px; font-weight: 600; color: var(--sub); padding: 3px 9px; border-radius: 999px;
  background: #0a1120; border: 1px solid var(--linha);
}

.aula-rodape { text-align: center; color: var(--sub); font-size: 13px; margin: 26px 0 10px; }
.aula-rodape b { color: var(--txt); }

@media (max-width: 720px) {
  .aula-destaque { grid-template-columns: 1fr; }
}

/* ---------- Tempo certo ✔️ (sala de sinais por horário) ---------- */
.tc-wrap { display: flex; flex-direction: column; gap: 16px; }
.tc-titulo { display: flex; align-items: center; gap: 12px; padding: 2px 0 4px; flex-wrap: wrap; }
.tc-voltar {
  flex: none; font-size: 13px; font-weight: 800; color: var(--sub); text-decoration: none;
  padding: 6px 12px; border-radius: 999px; background: #0a1120; border: 1px solid var(--linha);
  transition: color .15s, border-color .15s;
}
.tc-voltar:hover { color: var(--ok); border-color: color-mix(in srgb, var(--ok) 45%, var(--linha)); }
.tc-titulo-wrap { display: flex; flex-direction: column; gap: 2px; min-width: 0; }
.tc-titulo-wrap h1 { font-size: 20px; font-weight: 900; margin: 0; letter-spacing: .2px; display: flex; align-items: center; gap: 8px; flex-wrap: wrap; }
.tc-titulo-casa { font-size: 12px; font-weight: 800; color: var(--sub); background: #0a1120; border: 1px solid var(--linha); padding: 2px 9px; border-radius: 999px; }
.tc-titulo-wrap > span { font-size: 12px; color: var(--sub); font-weight: 600; }

/* ---------- Bloco: Próxima sessão ---------- */
.tc-next {
  --c: var(--visitante);
  position: relative; overflow: hidden;
  background: linear-gradient(180deg, color-mix(in srgb, var(--c) 10%, var(--painel)), var(--painel));
  border: 1px solid color-mix(in srgb, var(--c) 30%, var(--linha));
  border-radius: 20px; padding: 22px 20px 20px;
  display: flex; flex-direction: column; align-items: center; text-align: center; gap: 10px;
  box-shadow: 0 10px 30px -14px rgba(0,0,0,.6);
}
.tc-next::before {
  content: ""; position: absolute; inset: 0 0 auto 0; height: 3px;
  background: var(--c); box-shadow: 0 0 14px color-mix(in srgb, var(--c) 80%, transparent);
}
.tc-next-label {
  font-size: 12.5px; font-weight: 800; letter-spacing: .4px; color: var(--sub);
  display: inline-flex; align-items: center; gap: 6px;
}
.tc-countdown {
  font-size: 52px; font-weight: 900; line-height: 1; letter-spacing: .5px;
  font-variant-numeric: tabular-nums; color: var(--txt);
  text-shadow: 0 0 24px color-mix(in srgb, var(--c) 45%, transparent);
}
.tc-next-alvo {
  font-size: 12.5px; font-weight: 700; color: var(--sub);
  display: inline-flex; align-items: center; gap: 6px;
  background: #0a1120; border: 1px solid var(--linha);
  padding: 5px 12px; border-radius: 999px; max-width: 100%;
}
.tc-next-alvo b { color: var(--txt); font-weight: 800; }

.tc-next.tc-next--aviso { --c: var(--ouro); }
.tc-next.tc-next--aviso .tc-countdown { color: var(--ouro); }
.tc-next.tc-next--aviso .tc-next-label { color: var(--ouro); }

.tc-next.tc-next--live { --c: var(--ok); }
.tc-live-dot {
  width: 8px; height: 8px; border-radius: 50%; background: var(--loss);
  box-shadow: 0 0 8px var(--loss); animation: tcPulse 1.1s ease-in-out infinite;
}
@keyframes tcPulse { 0%,100% { opacity: 1; } 50% { opacity: .35; } }

/* O atributo [hidden] tem que vencer o display:flex/block destes cards (senão o JS
   `el.hidden = true` não esconde — foi por isso que o card ficava aparecendo na sessão). */
.tc-next[hidden], .tc-aviso[hidden] { display: none !important; }

/* ---------- Bloco: Banner de aviso (5 min) ---------- */
.tc-aviso {
  display: flex; align-items: center; gap: 10px;
  background: linear-gradient(90deg, color-mix(in srgb, var(--ouro) 20%, #0a1120), #0a1120 75%);
  border: 1px solid color-mix(in srgb, var(--ouro) 45%, var(--linha));
  border-radius: 14px; padding: 12px 14px;
  box-shadow: 0 0 0 1px color-mix(in srgb, var(--ouro) 12%, transparent) inset, 0 6px 20px -10px rgba(212,175,55,.35);
  animation: tcGlow 2.2s ease-in-out infinite;
}
@keyframes tcGlow {
  0%,100% { box-shadow: 0 0 0 1px color-mix(in srgb, var(--ouro) 12%, transparent) inset, 0 6px 20px -10px rgba(212,175,55,.35); }
  50% { box-shadow: 0 0 0 1px color-mix(in srgb, var(--ouro) 30%, transparent) inset, 0 6px 26px -8px rgba(212,175,55,.55); }
}
.tc-aviso-ico { font-size: 20px; flex: none; }
.tc-aviso-txt { display: flex; flex-direction: column; gap: 1px; min-width: 0; }
.tc-aviso-txt b { font-size: 13.5px; font-weight: 900; color: var(--ouro); }
.tc-aviso-txt span { font-size: 11.5px; color: var(--sub); font-weight: 600; }

/* ---------- Bloco: Sessão ao vivo (5 slots) ---------- */
.tc-card-base {
  background: var(--painel); border: 1px solid var(--linha); border-radius: 18px;
  padding: 16px 16px 15px;
}
.tc-secao-head { display: flex; align-items: center; justify-content: space-between; gap: 10px; margin-bottom: 13px; flex-wrap: wrap; }
.tc-secao-head h2 { font-size: 14.5px; font-weight: 800; margin: 0; }
.tc-secao-head .tc-secao-sub { font-size: 11.5px; color: var(--sub); font-weight: 600; }

.tc-slots { display: flex; flex-direction: column; gap: 9px; }
.tc-slot {
  --c: var(--linha);
  position: relative; display: flex; align-items: center; gap: 12px;
  background: linear-gradient(90deg, color-mix(in srgb, var(--c) 10%, #0a1120), #0a1018 65%);
  border: 1px solid color-mix(in srgb, var(--c) 26%, var(--linha));
  border-radius: 13px; padding: 10px 13px; overflow: hidden;
}
.tc-slot::before {
  content: ""; position: absolute; inset: 0 auto 0 0; width: 3px; background: var(--c);
  box-shadow: 0 0 10px color-mix(in srgb, var(--c) 75%, transparent);
}
.tc-slot-num {
  flex: none; width: 26px; height: 26px; border-radius: 50%;
  background: #0a1120; border: 1px solid var(--linha); color: var(--sub);
  display: flex; align-items: center; justify-content: center;
  font-size: 12px; font-weight: 900;
}
.tc-slot-bola { width: 13px; height: 13px; border-radius: 50%; flex: none; background: var(--linha); }
.tc-slot.cor-V .tc-slot-bola { background: var(--casa); }
.tc-slot.cor-A .tc-slot-bola { background: var(--visitante); }
.tc-slot.cor-E .tc-slot-bola { background: var(--empate); box-shadow: 0 0 9px color-mix(in srgb, var(--empate) 75%, transparent); }
.tc-slot.cor-2x .tc-slot-bola { background: #7c3aed; box-shadow: 0 0 9px color-mix(in srgb, #7c3aed 75%, transparent); }
.tc-slot-label { font-size: 14px; font-weight: 800; color: var(--txt); flex: 1; min-width: 0; word-break: break-word; }
.tc-slot-gale {
  flex: none; font-size: 10.5px; font-weight: 800; letter-spacing: .4px; color: #aab7cc;
  background: #141d30; padding: 3px 8px; border-radius: 6px;
}
.tc-slot-estado {
  flex: none; font-size: 11px; font-weight: 900; letter-spacing: .4px; padding: 4px 11px;
  border-radius: 999px; color: var(--c);
  background: color-mix(in srgb, var(--c) 18%, transparent);
  border: 1px solid color-mix(in srgb, var(--c) 42%, transparent);
}
.tc-slot-mult {
  flex: none; font-size: 10px; font-weight: 900; color: #3a2a05; background: var(--empate);
  padding: 2px 7px; border-radius: 999px; margin-left: -2px;
}
.tc-slot.win { --c: var(--ok); }
.tc-slot.empate { --c: var(--empate); }
.tc-slot.loss { --c: var(--loss); }
.tc-slot.aguardando { --c: var(--linha); }
.tc-slot.aguardando .tc-slot-label { color: var(--sub); font-weight: 700; }
.tc-slot.aguardando .tc-slot-bola {
  background: var(--linha);
  animation: tcSlotPulse 1.3s ease-in-out infinite;
}
@keyframes tcSlotPulse { 0%,100% { opacity: .4; } 50% { opacity: 1; } }
.tc-slot.vazio { --c: var(--linha); opacity: .45; }
.tc-slot.vazio .tc-slot-label { color: var(--sub); font-weight: 600; }
.tc-slot.vazio .tc-slot-estado { background: transparent; border-style: dashed; color: var(--sub); }

.tc-encerrada {
  margin-top: 11px; text-align: center; font-size: 12px; font-weight: 800;
  color: var(--loss); background: color-mix(in srgb, var(--loss) 12%, transparent);
  border: 1px solid color-mix(in srgb, var(--loss) 32%, transparent);
  border-radius: 10px; padding: 8px;
}

/* ---------- Bloco: 4 cards de estatística ---------- */
.tc-stats-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 11px; }
.tc-stat-card {
  --c: var(--ok);
  background: linear-gradient(180deg, color-mix(in srgb, var(--c) 8%, var(--painel)), var(--painel));
  border: 1px solid color-mix(in srgb, var(--c) 24%, var(--linha));
  border-radius: 16px; padding: 13px 13px 12px;
  display: flex; flex-direction: column; gap: 9px;
}
.tc-stat-head { display: flex; align-items: center; gap: 7px; }
.tc-stat-ico { font-size: 15px; flex: none; }
.tc-stat-titulo { font-size: 11.5px; font-weight: 800; color: var(--sub); line-height: 1.25; }
.tc-stat-destaque { display: flex; align-items: baseline; gap: 7px; flex-wrap: wrap; }
.tc-stat-destaque b { font-size: 24px; font-weight: 900; color: var(--c); line-height: 1; }
.tc-stat-destaque span { font-size: 12px; font-weight: 700; color: var(--sub); }
.tc-stat-lista { display: flex; flex-direction: column; gap: 5px; }
.tc-stat-item { display: flex; align-items: center; justify-content: space-between; font-size: 12px; font-weight: 700; color: var(--txt); gap: 8px; }
.tc-stat-item span { color: var(--sub); font-weight: 600; }
.tc-stat-item b { color: var(--c); font-weight: 900; }

.tc-stat-card.tc-stat--acerto { --c: var(--ok); }
.tc-stat-card.tc-stat--empate { --c: var(--empate); }
.tc-stat-card.tc-stat--loss { --c: var(--loss); }
.tc-stat-card.tc-stat--top { --c: var(--ouro); }

@media (max-width: 480px) {
  .tc-stats-grid { grid-template-columns: 1fr; }
}

/* ---------- Bloco: Histórico de sessões ---------- */
.tc-hist-lista { display: flex; flex-direction: column; gap: 9px; }
.tc-hist-item {
  --c: var(--ok);
  position: relative; border-radius: 13px; padding: 10px 14px 10px 16px; overflow: hidden;
  background: linear-gradient(90deg, color-mix(in srgb, var(--c) 11%, #0b1322), #0a1018 62%);
  border: 1px solid color-mix(in srgb, var(--c) 25%, var(--linha));
  display: flex; flex-direction: column; gap: 6px;
}
.tc-hist-item::before {
  content: ""; position: absolute; inset: 0 auto 0 0; width: 4px; background: var(--c);
  box-shadow: 0 0 12px color-mix(in srgb, var(--c) 80%, transparent);
}
.tc-hist-item.loss { --c: var(--loss); }
.tc-hist-r1 { display: flex; align-items: center; gap: 9px; flex-wrap: wrap; }
.tc-hist-hora { font-size: 14px; font-weight: 800; color: var(--txt); flex: none; font-variant-numeric: tabular-nums; }
.tc-hist-badge {
  font-size: 11px; font-weight: 900; letter-spacing: .3px; padding: 3px 10px; border-radius: 999px;
  color: var(--c); background: color-mix(in srgb, var(--c) 18%, transparent);
  border: 1px solid color-mix(in srgb, var(--c) 42%, transparent); flex: none;
}
.tc-hist-resumo { font-size: 12px; color: var(--sub); font-weight: 600; flex: 1; text-align: right; }
.tc-hist-r2 { display: flex; align-items: center; gap: 12px; font-size: 11.5px; color: var(--sub); font-weight: 700; flex-wrap: wrap; }
.tc-hist-r2 b { color: var(--txt); font-weight: 800; }
.tc-hist-r2 .tc-hist-emp b { color: var(--empate); }
.tc-hist-r2 .tc-hist-win b { color: var(--ok); }
.tc-hist-vazio { padding: 18px; text-align: center; color: var(--sub); font-size: 13px; border: 1px dashed var(--linha); border-radius: 12px; }

.tc-vermais {
  display: block; width: 100%; margin-top: 3px; padding: 9px; border-radius: 12px; cursor: pointer;
  background: color-mix(in srgb, var(--ouro) 8%, transparent);
  border: 1px solid color-mix(in srgb, var(--ouro) 30%, var(--linha));
  color: var(--ouro); font-weight: 800; font-size: 13px; text-align: center; letter-spacing: .3px;
}

/* Botão discreto de teste (só admin) */
.tc-testar {
  align-self: center; margin-top: 4px; padding: 8px 16px; border-radius: 999px; cursor: pointer;
  background: #0a1120; border: 1px dashed var(--linha); color: var(--sub);
  font-size: 12px; font-weight: 700; letter-spacing: .3px;
}
.tc-testar:hover { color: var(--ok); border-color: color-mix(in srgb, var(--ok) 45%, var(--linha)); }

/* ---------- Análise PRO: 5 cards (quente/frio, Markov, heatmap, curva de banca, calendário) ---------- */
.an-hint { font-size: 11.5px; color: var(--sub); margin-top: 10px; line-height: 1.5; }

/* Barras (quente/frio + Markov): cada linha recebe cor-V/A/E e herda --c pros filhos */
.an-bars { display: flex; flex-direction: column; gap: 10px; }
.an-brow { display: grid; grid-template-columns: 78px 1fr 68px; align-items: center; gap: 10px; font-size: 13px; }
.an-brow .an-lab { font-weight: 800; color: var(--c); }
.an-track { height: 8px; border-radius: 999px; background: color-mix(in srgb, var(--linha) 65%, transparent); overflow: hidden; }
.an-fill { display: block; height: 100%; border-radius: 999px; background: var(--c); transition: width .6s ease; }
.an-brow .an-val { font-size: 11.5px; color: var(--sub); text-align: right; font-variant-numeric: tabular-nums; }
.an-seq { margin-top: 12px; font-size: 13px; color: var(--sub); }
.an-seq b { font-weight: 900; }
.an-seq .an-seq-n { color: var(--txt); font-weight: 800; }

/* Heatmap: grade de células coloridas por resultado (V/A/E), antigo → novo */
/* Faixa das análises (heatmap + curva + calendário): lado a lado no PC, desliza no celular */
.an-strip {
  display: flex; gap: 12px; align-items: stretch;
  overflow-x: auto; scroll-snap-type: x mandatory;
  -webkit-overflow-scrolling: touch; scrollbar-width: thin;
  overscroll-behavior-x: contain; max-width: 100%; padding-bottom: 2px;
}
.an-strip::-webkit-scrollbar { height: 6px; }
.an-strip::-webkit-scrollbar-thumb { background: var(--linha); border-radius: 999px; }
.an-strip > .painel {
  flex: 1 1 300px; min-width: min(92%, 300px);
  scroll-snap-align: start; margin: 0;
}

.an-heat { display: grid; grid-template-columns: repeat(14, 1fr); gap: 4px; }
.an-heat i { aspect-ratio: 1; border-radius: 4px; background: var(--c); display: block; }
@media (max-width: 480px) { .an-heat { grid-template-columns: repeat(10, 1fr); } }

/* KPIs (curva de banca) */
.an-kpis { display: grid; grid-template-columns: repeat(auto-fit, minmax(96px, 1fr)); gap: 9px; margin-top: 14px; }
.an-kpi { background: #0a1120; border: 1px solid var(--linha); border-radius: 12px; padding: 11px; }
.an-kpi .k { display: block; font-size: 9.5px; letter-spacing: .06em; text-transform: uppercase; color: var(--sub); font-weight: 700; }
.an-kpi .v { display: block; font-size: 20px; font-weight: 900; margin-top: 3px; font-variant-numeric: tabular-nums; overflow-wrap: anywhere; }
.an-kpi .v.up { color: var(--ok); } .an-kpi .v.g { color: var(--ouro); } .an-kpi .v.dn { color: var(--loss); }
.an-kpi .v.pf { color: var(--visitante); font-size: 14.5px; line-height: 1.15; }

/* Curva de banca: SVG desenhado via JS a partir dos pontos (mesmo espírito do gráfico de tendência) */
.an-svg { display: block; width: 100%; height: auto; }
.an-curva-linha { fill: none; stroke: var(--ok); stroke-width: 2.5; stroke-linecap: round; stroke-linejoin: round; }
.an-curva-area { fill: color-mix(in srgb, var(--ok) 30%, transparent); }

/* Calendário de resultados: grade de 7 colunas (D-S-T-Q-Q-S-S) */
.an-cal-head, .an-cal-grid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 5px; }
.an-cal-head { margin-bottom: 6px; }
.an-cal-head span { text-align: center; font-size: 10px; font-weight: 700; color: var(--sub); text-transform: uppercase; }
.an-cal-grid i {
  aspect-ratio: 1; border-radius: 6px; background: color-mix(in srgb, var(--linha) 55%, transparent);
  display: flex; align-items: center; justify-content: center;
  font-size: 10px; font-weight: 800; color: var(--txt); font-variant-numeric: tabular-nums;
}
.an-cal-grid i.up { background: var(--ok); }
.an-cal-grid i.dn { background: var(--loss); }
.an-cal-vazio { grid-column: 1 / -1; padding: 14px 4px; text-align: center; color: var(--sub); font-size: 12.5px; }

/* Placeholder borrado das versões bloqueadas (mesmo espírito de .emp-blur) */
.an-blur { filter: blur(4px); opacity: .5; pointer-events: none; }

/* ===== Perfil do usuário (card na home + modal do rodapé) ===== */
.nv-perfil { background: var(--painel); border: 1px solid var(--linha); border-radius: 18px; padding: 18px; margin-bottom: 20px; }
.perfil-box { display: flex; flex-direction: column; gap: 12px; }
.perfil-topo { display: flex; align-items: center; gap: 13px; }
.perfil-ava { flex: none; width: 46px; height: 46px; border-radius: 14px; display: grid; place-items: center; font-size: 20px; font-weight: 900; color: #1a1400; background: linear-gradient(135deg, var(--ouro), #d9a521); }
.perfil-id { display: flex; flex-direction: column; gap: 4px; min-width: 0; }
.perfil-nome { font-size: 16px; font-weight: 800; }
.perfil-tag { align-self: flex-start; font-size: 10px; font-weight: 900; letter-spacing: .8px; padding: 3px 9px; border-radius: 999px; text-transform: uppercase; }
.perfil-tag.adm { background: color-mix(in srgb, var(--ouro) 20%, transparent); color: var(--ouro); border: 1px solid color-mix(in srgb, var(--ouro) 45%, var(--linha)); }
.perfil-tag.vip { background: color-mix(in srgb, var(--ok) 18%, transparent); color: var(--ok); border: 1px solid color-mix(in srgb, var(--ok) 45%, var(--linha)); }
.perfil-tag.teste { background: color-mix(in srgb, var(--visitante) 18%, transparent); color: var(--visitante); border: 1px solid color-mix(in srgb, var(--visitante) 45%, var(--linha)); }
.perfil-tag.sem { background: color-mix(in srgb, var(--loss) 16%, transparent); color: var(--loss); border: 1px solid color-mix(in srgb, var(--loss) 40%, var(--linha)); }
.perfil-dados { list-style: none; margin: 0; padding: 0; display: flex; flex-direction: column; }
.perfil-dados li { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 10px 2px; border-bottom: 1px solid var(--linha); }
.perfil-dados li:last-child { border-bottom: none; }
.perfil-dados span { color: var(--sub); font-size: 13px; }
.perfil-dados b { font-weight: 800; font-variant-numeric: tabular-nums; }
.perfil-dados b.ok { color: var(--ok); }
.perfil-dados b.loss { color: var(--loss); }
.perfil-sessao { color: var(--ouro); }
.perfil-sessao.acabando { color: var(--loss); animation: pulse 1.3s infinite; }

/* Modal do perfil (aberto pelo botão Perfil do rodapé) */
.perfil-modal { position: fixed; inset: 0; z-index: 1200; display: none; align-items: center; justify-content: center; padding: 18px; }
body.perfil-open .perfil-modal { display: flex; }
.perfil-modal-bg { position: absolute; inset: 0; background: rgba(5, 8, 15, .6); backdrop-filter: blur(3px); }
.perfil-modal-card { position: relative; z-index: 1; width: 100%; max-width: 380px; background: linear-gradient(180deg, rgba(15, 23, 46, .96), rgba(8, 10, 24, .98)); border: 1px solid var(--linha); border-radius: 20px; padding: 20px; box-shadow: 0 30px 70px -20px #000; animation: perfilPop .18s ease; }
@keyframes perfilPop { from { transform: translateY(10px) scale(.98); opacity: 0; } to { transform: none; opacity: 1; } }
.perfil-modal-tit { font-size: 13px; font-weight: 900; letter-spacing: .5px; color: var(--sub); text-transform: uppercase; margin-bottom: 14px; }
.perfil-x { position: absolute; top: 12px; right: 12px; width: 34px; height: 34px; display: grid; place-items: center; background: rgba(255, 255, 255, .05); border: 1px solid var(--linha); border-radius: 10px; color: var(--sub); cursor: pointer; }
.perfil-x svg { width: 18px; height: 18px; }
.perfil-x:hover { color: var(--txt); }
.perfil-modal-sair { display: block; text-align: center; margin-top: 16px; padding: 11px; border-radius: 12px; text-decoration: none; font-weight: 800; color: #ff8a8a; border: 1px solid color-mix(in srgb, var(--loss) 40%, var(--linha)); background: color-mix(in srgb, var(--loss) 8%, transparent); }
.perfil-modal-sair:hover { background: color-mix(in srgb, var(--loss) 16%, transparent); }

/* ─────────────────────────────────────────────────────────────────────────────
   As animações do FENIX (brilhos, piscadas, glows, HUD scanner, typewriter etc.)
   tocam SEMPRE, mesmo com "reduzir movimento" ligado no sistema do cliente —
   decisão do dono. Por isso não há bloco @media (prefers-reduced-motion: reduce)
   desligando animação/transição aqui.
   ───────────────────────────────────────────────────────────────────────────── */
