@charset "utf-8";
/* CSS Document */

/* ==========================================================================
   Tokens de cor/tipografia - ver .claude/skills/brgol-frontend-layout/
   references/design-tokens.css para a versão de referência da skill.
   Mantenha os dois em sincronia se algum valor mudar aqui.

   v3 - base preta (era azul-marinho na v2), verde continua sendo a cor de
   AÇÃO, laranja/azul foram removidos (ranking se diferencia pelos escudos
   reais, não por cor decorativa). Ver histórico completo no
   design-tokens.css da skill.
   ========================================================================== */
:root {
	/* Base escura - chrome do jogo: menu esquerdo, header do topo */
	--brgol-fundo-escuro: #0d0d0d;
	--brgol-fundo-escuro-2: #191919;
	--brgol-fundo-escuro-3: #333333;

	/* Base clara - área de conteúdo central */
	--brgol-fundo-claro: #f3f1e6;
	--brgol-fundo-claro-alt: #e8e4d2;
	--brgol-borda: #ddd8c8;
	--brgol-borda-forte: #0d0d0d;

	/* Cor de AÇÃO */
	--brgol-acento-verde: #4cb324;
	--brgol-acento-verde-escuro: #2e7d1a;
	--brgol-acento-verde-claro: #6bcf3f;

	/* Alerta/ao vivo - único acento fora de preto/verde/osso, uso raro */
	--brgol-acento-vermelho: #d3352b;
	/* VIP - também semântico (não decorativo), só pra marcar status VIP real:
	   anel do avatar, chip de VIP. Não usar em mais nada. */
	--brgol-acento-vip: #e8b23a;
	/* Pódio (1º/2º/3º dos rankings de "Melhores") - ouro reaproveita
	   --brgol-acento-vip (mesmo significado de "posição especial" já usado
	   ali); prata/bronze são semânticos do mesmo jeito (posição real do
	   ranking, não decoração) - não usar fora de badge/linha de pódio. */
	--brgol-acento-prata: #adb5bd;
	--brgol-acento-bronze: #cd7f32;

	/* Texto */
	--brgol-texto-claro: #f7f6ef;
	--brgol-texto-escuro: #14140f;
	--brgol-texto-suave-claro: #a9a89c;
	--brgol-texto-suave-escuro: #55543f;

	/* Tipografia */
	--brgol-font-display: 'Anton', 'Arial Narrow', sans-serif;
	--brgol-font-corpo: 'Rubik', system-ui, sans-serif;

	/* Forma */
	--brgol-raio: 5px;
	--brgol-raio-pill: 999px;
	--brgol-sombra: 3px 3px 0 var(--brgol-borda-forte);
}

/* ==========================================================================
   Base / layout de página
   ========================================================================== */
html, body{
	background: var(--brgol-fundo-claro-alt);
	font-family: var(--brgol-font-corpo);
	width:auto;
	height:100%;
	margin: 0;
	}

#site{
	width: 100%;
	max-width: 1800px;
	margin: 0 auto;
	/* sem padding-top: a barra preta (.brgol-rodada-status) é o primeiro
	   elemento da página e deve ficar colada no topo da viewport - o
	   usuário notou a folga e pediu pra tirar. Mantém só o respiro
	   lateral/inferior. */
	padding: 0 24px 0;
	box-sizing: border-box;
	}

.brgol-rodada-status{
	background: var(--brgol-fundo-escuro);
	color: var(--brgol-texto-claro);
	border-radius: var(--brgol-raio);
	padding: 10px 24px;
	display: flex;
	justify-content: space-between;
	align-items: center;
	font-size: 13px;
	}

/* Avatar do usuário (painel direito) - ainda não existe foto de verdade no
   banco, então mostra a inicial do usuário. .brgol-avatar img é o gancho
   pronto pra quando a foto existir (basta trocar o conteúdo do
   .brgol-avatar por <img>, o círculo/anel já está pronto). O anel dourado é
   status real (VIP), não decoração - só aparece com --vip. */
.brgol-avatar-wrap {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	padding: 20px 14px 4px;
}
.brgol-avatar {
	width: 70px;
	height: 70px;
	border-radius: 50%;
	background: var(--brgol-fundo-escuro-2);
	border: 3px solid var(--brgol-borda-forte);
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--brgol-font-display);
	font-size: 28px;
	color: var(--brgol-texto-claro);
	overflow: hidden;
	box-sizing: border-box;
}
.brgol-avatar img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.brgol-avatar--vip {
	border-color: var(--brgol-acento-vip);
	box-shadow: 0 0 0 3px var(--brgol-fundo-escuro);
}
/* Preview grande em paginas/avatar.php (tela de trocar o ícone) - mesma
   moldura "selo" do avatar do sidebar, só maior pra dar pra ver a foto
   de verdade antes/depois de trocar. Fica sobre fundo CLARO (corpo de
   card), diferente do avatar do sidebar (fundo escuro), então também
   troca a cor de fundo/texto da inicial. */
.brgol-avatar--grande {
	width: 120px;
	height: 120px;
	font-size: 48px;
	background: var(--brgol-fundo-claro-alt);
	color: var(--brgol-texto-escuro);
	flex: none;
}
.brgol-avatar-config {
	display: flex;
	align-items: center;
	gap: 20px;
	flex-wrap: wrap;
}
.brgol-avatar-config-form {
	flex: 1 1 260px;
}
/* Selo de título/geral por cima do ícone do usuário (brgol-campeonatos,
   "Selos de título", pedido do usuário 2026-09-18) - PNG/JPG de verdade
   (imagens/icones/ - estrela/medalha/troféu/bola em ouro/prata/bronze),
   não Font Awesome (o usuário já tinha os arquivos prontos). Ver
   brgol_render_selos_usuario() em configs/ranking_helpers.php.

   v2 (mesmo dia, correção): a v1 desenhava o selo como badge pequeno (46%)
   num canto do avatar - o usuário reportou "voando pra fora toda torta"
   nas tabelas de ranking e "pequenininha" no perfil (print em anexo). O
   selo tem que ocupar EXATAMENTE o mesmo espaço que a foto de perfil
   ocupa - `inset:0` (não uma % arbitrária) cobre 100% da caixa do
   `.brgol-avatar-selos` mais próximo, do mesmo jeito que `.brgol-avatar
   img`/`.brgol-rank-avatar img` já cobrem 100% do círculo do avatar -,
   então funciona igual em qualquer tamanho (28px na tabela, 70px no
   sidebar, 120px no perfil) sem precisar de classe --grande separada.
   Como agora o selo cobre o avatar INTEIRO, só 1 por vez (não dá pra
   empilhar 2 sem um cobrir o outro) - `brgol_render_selos_usuario()` já
   resolve isso (periódico prevalece sobre geral). No hover, o selo some
   (pointer-events:none garante que o hover é sempre do avatar por baixo)
   revelando a foto/inicial de verdade. */
.brgol-avatar-selos {
	position: relative;
	display: inline-flex;
	flex: none;
}
.brgol-selo {
	position: absolute;
	inset: 0;
	width: 100%;
	height: 100%;
	border-radius: 50%;
	object-fit: cover;
	pointer-events: none;
	transition: opacity 0.15s ease;
}
.brgol-avatar-selos:hover .brgol-selo {
	opacity: 0;
}
.brgol-chip-vip {
	font-family: var(--brgol-font-corpo);
	font-size: 10px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.5px;
	color: var(--brgol-acento-vip);
	border: 1px solid var(--brgol-acento-vip);
	border-radius: var(--brgol-raio-pill);
	padding: 2px 9px;
}
/* Timer de Vip ATIVO, dentro de .brgol-avatar-wrap (perto do ícone de
   usuário, pedido do usuário 2026-09-18) - só o tempo (dia+hora) até
   acabar, sem quantidade (isso já mora na linha "Vips" embaixo do nome). */
.brgol-vip-timer {
	display: flex;
	align-items: center;
	gap: 5px;
	font-size: 11px;
	font-weight: 600;
	color: var(--brgol-acento-vip);
}
.brgol-vip-timer span {
	font-family: var(--brgol-font-display);
	letter-spacing: 0.3px;
}

/* Marca (logo) dentro do menu esquerdo. Logo virou o wordmark "JOGA10"
   (2026-09-18, rebrand pedido pelo usuário).

   `imagens/logo.png` já é um recorte apertado com transparência REAL de
   fundo (338x137) - o fundo foi removido por classificação de cor
   (cinza/baixa saturação na faixa de brilho do fundo pontilhado do
   gerador, preservando o contorno preto mais escuro e as letras
   brancas/verde mais claras) + filtro de componente conectado (some com
   pontinhos isolados do padrão pontilhado que sobrariam soltos) - os
   pixels do PRÓPRIO logo (branco/verde/contorno) nunca foram alterados,
   só o fundo ganhou alpha=0. Por isso não precisa mais do truque de
   "sprite crop" (janela fixa + imagem ampliada/deslocada por cima) que
   existia aqui antes pra esconder a franja de fundo do screenshot
   original - com o arquivo já limpo, um `<img>` normal com largura fixa
   basta. */
.brgol-marca {
	text-align: center;
	padding: 18px 14px 10px;
}
.brgol-marca-logo {
	display: block;
	width: 190px;
	height: auto;
	margin: 0 auto;
}
.brgol-marca-nome {
	color: var(--brgol-texto-claro);
	font-size: 13px;
	font-weight: bold;
	margin-top: 6px;
	line-height: 1.3;
}

/* Busca de jogador */
.brgol-busca {
	display: flex;
	margin: 0 14px 14px;
}
.brgol-busca input[type="text"] {
	flex: 1;
	padding: 8px 10px;
	border-radius: var(--brgol-raio) 0 0 var(--brgol-raio);
	border: 1px solid var(--brgol-fundo-escuro-3);
	background: var(--brgol-fundo-escuro-2);
	color: var(--brgol-texto-claro);
	font-size: 12px;
	min-width: 0;
}
.brgol-busca button {
	border: 1px solid var(--brgol-fundo-escuro-3);
	border-left: none;
	background: var(--brgol-fundo-escuro-2);
	color: var(--brgol-texto-claro);
	border-radius: 0 var(--brgol-raio) var(--brgol-raio) 0;
	padding: 0 12px;
	cursor: pointer;
}

#conteudo{
	width:100%;
	margin-top:10px;
	display: flex;
	align-items: flex-start;
	gap: 20px;
	box-sizing: border-box;
	}

#esquerda{
	width:230px;
	flex: 0 0 230px;
	background: var(--brgol-fundo-escuro);
	border-radius: var(--brgol-raio);
	box-shadow: var(--brgol-sombra);
	padding-bottom: 12px;
	box-sizing: border-box;
	overflow: hidden;
	}

#centro{
	flex: 1 1 auto;
	min-width: 0;
	}

#principal{
	width:100%;
	max-width: 960px;
	margin: 0 auto;
	box-sizing: border-box;
	}

#direita{
	width:230px;
	flex: 0 0 230px;
	background: var(--brgol-fundo-escuro);
	border-radius: var(--brgol-raio);
	box-shadow: var(--brgol-sombra);
	padding-bottom: 12px;
	box-sizing: border-box;
	overflow: hidden;
	}

#rodape{
	background: var(--brgol-fundo-escuro);
	color: var(--brgol-texto-suave-claro);
	border-radius: var(--brgol-raio);
	width:100%;
	margin:10px 0;
	padding: 10px 0;
	text-align: center;
	font-size: 12px;
	box-sizing: border-box;
	}

/* ==========================================================================
   Componentes - ver .claude/skills/brgol-frontend-layout/references/
   components.md para a documentação de cada um.
   ========================================================================== */

/* Barra de navegação superior */
.brgol-topnav {
	display: flex;
	flex-wrap: wrap;
	align-items: center;
	justify-content: center;
	gap: 2px;
	width: fit-content;
	max-width: 100%;
	margin: 0 auto 16px;
	background: var(--brgol-fundo-escuro);
	border-radius: 16px;
	padding: 8px;
	box-shadow: var(--brgol-sombra);
}
.brgol-topnav-item {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 9px 16px;
	border-radius: 10px;
	background: transparent;
	color: var(--brgol-texto-claro);
	text-decoration: none;
	font-family: var(--brgol-font-display);
	font-size: 14px;
	letter-spacing: 0.3px;
	white-space: nowrap;
}
.brgol-topnav-item:hover {
	background: rgba(255, 255, 255, 0.08);
}
.brgol-topnav-item img {
	width: 16px;
	height: 16px;
	vertical-align: middle;
}
.brgol-topnav-item i,
.brgol-topnav-dropdown-menu i {
	font-size: 13px;
	width: 14px;
	text-align: center;
}
.brgol-topnav-item--icone {
	padding: 9px 11px;
	background: var(--brgol-fundo-claro);
}
.brgol-topnav-item--icone:hover {
	background: var(--brgol-fundo-claro);
	opacity: 0.9;
}
.brgol-topnav-item--ativo {
	background: var(--brgol-acento-verde) !important;
	color: var(--brgol-fundo-escuro) !important;
	border: 2px solid var(--brgol-borda-forte);
	opacity: 1 !important;
}

/* Dropdowns da barra superior (agrupam itens secundários) */
.brgol-topnav-dropdown {
	position: relative;
}
.brgol-topnav-item--dropdown {
	border: none;
	font-family: inherit;
	cursor: pointer;
}
.brgol-topnav-seta {
	font-size: 9px;
	opacity: 0.6;
}
.brgol-topnav-dropdown-menu {
	display: none;
	flex-direction: column;
	position: absolute;
	top: 100%;
	left: 0;
	margin-top: 8px;
	background: var(--brgol-fundo-claro);
	border-radius: var(--brgol-raio);
	box-shadow: var(--brgol-sombra);
	padding: 6px;
	min-width: 190px;
	z-index: 20;
}
.brgol-topnav-dropdown-menu--direita {
	left: auto;
	right: 0;
}
.brgol-topnav-dropdown:hover .brgol-topnav-dropdown-menu,
.brgol-topnav-dropdown:focus-within .brgol-topnav-dropdown-menu,
.brgol-topnav-dropdown--aberto .brgol-topnav-dropdown-menu {
	display: flex;
}
.brgol-topnav-dropdown-menu a {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 8px 10px;
	border-radius: 6px;
	color: var(--brgol-texto-escuro);
	text-decoration: none;
	font-size: 12px;
	font-weight: 600;
	white-space: nowrap;
}
.brgol-topnav-dropdown-menu a:hover {
	background: var(--brgol-fundo-claro-alt);
}
.brgol-topnav-dropdown-menu a img {
	width: 16px;
	height: 16px;
}

/* Card de seção (conteúdo central) */
.brgol-card {
	background: var(--brgol-fundo-claro);
	border: 2px solid var(--brgol-borda-forte);
	border-radius: var(--brgol-raio);
	overflow: hidden;
	margin-bottom: 14px;
}
.brgol-card-header {
	background: var(--brgol-fundo-escuro);
	color: var(--brgol-texto-claro);
	padding: 10px 14px;
	display: flex;
	align-items: center;
	gap: 8px;
	text-transform: uppercase;
	font-family: var(--brgol-font-display);
	font-size: 17px;
	letter-spacing: 0.4px;
	border-left: 8px solid var(--brgol-acento-verde);
}
.brgol-card-icon {
	font-size: 16px;
}
/* Seta de voltar no cabeçalho do card (paginas/rank_*.php, via
   brgol_card_ranking($voltarPara) em configs/ranking_helpers.php) - fica
   antes do ícone/título, mesmo `gap` do header cuida do espaçamento.
   Telas que são "o destino final" de um fluxo (ex: entrar por um pill do
   hub de Rankings) e só tinham o menu do topo pra voltar usam isso. */
.brgol-card-voltar {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 22px;
	height: 22px;
	border-radius: 4px;
	color: var(--brgol-texto-claro);
	font-size: 13px;
	flex: none;
}
.brgol-card-voltar:hover {
	background: rgba(255, 255, 255, 0.14);
}
/* <details class="brgol-card"><summary class="brgol-card-header">...
   pra tabelas longas que não precisam ficar abertas por padrão (ex:
   paginas/niveis.php - 100 linhas era "tela gigante" antes disso, ver
   skill brgol-niveis). O <summary> herda o visual de card-header de
   graça; só precisa esconder o marcador nativo do navegador e trocar por
   um chevron que gira ao abrir. */
.brgol-niveis-tabela > summary {
	cursor: pointer;
	list-style: none;
}
.brgol-niveis-tabela > summary::-webkit-details-marker {
	display: none;
}
.brgol-niveis-tabela-seta {
	margin-left: auto;
	transition: transform 0.15s ease-out;
}
.brgol-niveis-tabela[open] .brgol-niveis-tabela-seta {
	transform: rotate(180deg);
}

/* FAQ (paginas/duvidas.php, 2026-09-19) - lista de <details> mais leve que
   um .brgol-card inteiro por pergunta (seria uma parede de barras pretas
   pra ~6 perguntas) - borda fina + fundo claro, reaproveitando o
   comportamento (cursor, some marcador nativo, chevron que gira) de
   .brgol-niveis-tabela acima, só com um visual mais discreto. */
.brgol-faq {
	display: flex;
	flex-direction: column;
	gap: 8px;
}
.brgol-faq-item {
	border: 1px solid var(--brgol-borda);
	border-radius: var(--brgol-raio);
	background: var(--brgol-fundo-claro-alt);
	overflow: hidden;
}
.brgol-faq-pergunta {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 12px 14px;
	font-weight: 700;
	font-size: 13px;
	color: var(--brgol-texto-escuro);
}
.brgol-faq-resposta {
	padding: 0 14px 14px;
	font-size: 13px;
	line-height: 1.6;
	color: var(--brgol-texto-escuro);
}

/* Legenda dos selos de premiação (dentro da pergunta "O que significa cada
   ícone de premiação?") - mostra os 3 arquivos de verdade (ouro/prata/
   bronze) de imagens/icones/ lado a lado com a explicação, em vez de só
   descrever em texto - o usuário pediu explicitamente pra explicar o
   significado de cada ícone aqui. */
.brgol-selo-legenda-lista {
	margin-top: 10px;
}
.brgol-selo-legenda {
	display: flex;
	align-items: center;
	gap: 12px;
	padding: 10px 0;
}
.brgol-selo-legenda + .brgol-selo-legenda {
	border-top: 1px solid var(--brgol-borda);
}
.brgol-selo-legenda-icones {
	display: flex;
	gap: 4px;
	flex: none;
}
.brgol-selo-legenda-icones img {
	width: 30px;
	height: 30px;
	object-fit: cover;
	border-radius: 50%;
	border: 1px solid var(--brgol-borda);
	background: #fff;
}
.brgol-selo-legenda-texto {
	font-size: 13px;
	line-height: 1.5;
	color: var(--brgol-texto-escuro);
}

/* Feed de Movimentações (paginas/movimentacoes.php, 2026-09-19) - troca
   de time e contratação, uma linha por evento (ícone + frase + hora),
   mais parecido com uma lista de notificação do que uma tabela de
   ranking (não tem posição/gols, só uma frase). */
.brgol-movimentacoes {
	display: flex;
	flex-direction: column;
	gap: 10px;
}
.brgol-movimentacao {
	display: flex;
	align-items: flex-start;
	gap: 10px;
	padding-bottom: 10px;
	border-bottom: 1px solid var(--brgol-borda);
}
.brgol-movimentacao:last-child {
	border-bottom: none;
	padding-bottom: 0;
}
.brgol-movimentacao-icone {
	flex: none;
	width: 28px;
	height: 28px;
	display: flex;
	align-items: center;
	justify-content: center;
	border-radius: 50%;
	background: var(--brgol-fundo-claro-alt);
	color: var(--brgol-acento-verde-escuro);
	font-size: 12px;
}
.brgol-movimentacao-texto {
	flex: 1;
	min-width: 0;
	font-size: 13px;
	line-height: 1.5;
	color: var(--brgol-texto-escuro);
}
.brgol-movimentacao-texto a {
	color: var(--brgol-texto-escuro);
	font-weight: 700;
	text-decoration: none;
}
.brgol-movimentacao-texto a:hover {
	color: var(--brgol-acento-verde-escuro);
}
.brgol-movimentacao-hora {
	flex: none;
	font-size: 11px;
	color: var(--brgol-texto-suave-escuro);
	white-space: nowrap;
}

.brgol-card-body {
	padding: 16px;
	color: var(--brgol-texto-escuro);
}

/* Recorde histórico (paginas/principal.php, brgol_card_recorde()) - dourado
   em vez do verde padrão do header, reaproveitando --brgol-acento-vip que
   já carrega esse significado de "status especial" em outro lugar (anel do
   avatar, chip Vip, estrela de level up) - não é um acento novo inventado
   só pra variar cor, é a mesma cor com o mesmo significado. Diferencia
   visualmente de "Top" (ranking da janela atual, zera) pra "Recorde"
   (histórico, permanente). */
.brgol-card-header--recorde {
	border-left-color: var(--brgol-acento-vip);
}
/* .brgol-rank-valor sozinho não estiliza nada fora de .brgol-rank-table
   (é um seletor composto, `td.brgol-rank-valor`) - este card usa
   .brgol-rank-time (flex) sem tabela, por isso precisa do próprio estilo
   completo, não só um empurrão de margin. */
.brgol-recorde-valor {
	margin-left: auto;
	font-family: var(--brgol-font-display);
	font-size: 15px;
	white-space: nowrap;
}

/* Badge "Atual" (ex: campeonato em andamento) - substitui a antiga variante
   de cor laranja do header; encoda o estado em texto, não em cor decorativa. */
.brgol-chip-atual {
	margin-left: auto;
	font-family: var(--brgol-font-corpo);
	font-size: 10px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.5px;
	color: var(--brgol-acento-verde-claro);
	border: 1px solid var(--brgol-acento-verde-claro);
	border-radius: var(--brgol-raio-pill);
	padding: 2px 9px;
}
/* --claro: mesmo chip, mas pro texto ler dentro de um card claro (fundo
   osso/branco) - o verde-claro padrão foi pensado pra contraste sobre
   fundo escuro (card-header preto) e ficaria com contraste ruim aqui
   (verde claro sobre fundo quase-branco). */
.brgol-chip-atual--claro {
	color: var(--brgol-acento-verde-escuro);
	border-color: var(--brgol-acento-verde-escuro);
}

/* Título de grupo dentro do sidebar escuro (esquerda/direita) */
.brgol-stat-group-title {
	background: var(--brgol-fundo-escuro-2);
	color: var(--brgol-texto-claro);
	padding: 10px 14px;
	font-weight: bold;
	font-size: 13px;
	text-transform: uppercase;
	letter-spacing: 0.5px;
}

/* Linha de stat (sidebar escuro) */
.brgol-stat-row {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 8px 14px;
	color: var(--brgol-texto-claro);
	border-bottom: 1px solid var(--brgol-fundo-escuro-3);
	font-size: 13px;
}
.brgol-stat-label {
	flex: 1;
	color: var(--brgol-texto-suave-claro);
}
.brgol-stat-value {
	font-weight: bold;
}
.brgol-stat-value a {
	color: var(--brgol-texto-claro);
}
/* Linha de chute liberado (Falta/Pênalti quando já pode chutar) - vira um
   link inteiro, com o valor destacado em verde pra chamar atenção, mesma
   lógica de "pronto pra ação" dos botões gamificados. */
.brgol-stat-row--disponivel {
	text-decoration: none;
	cursor: pointer;
}
.brgol-stat-row--disponivel:hover {
	background: var(--brgol-fundo-escuro-2);
}
/* "Disponível!" virou um selo/botão de verdade (pedido do usuário
   2026-09-18, "gamificado verde, bem cara de video game") em vez de só
   texto verde - mesma identidade "selo" de sempre (cor chapada, borda
   preta grossa, sombra sólida deslocada, SEM gradiente/glow - ver
   histórico da paleta no topo desta skill) só que em miniatura, pra
   caber ao lado do rótulo "Falta"/"Pênalti" na linha do sidebar. O
   pulso contínuo (`brgolDisponivelPulso`) chama atenção pro chute liberado
   sem precisar de cor/forma nova - desativado em prefers-reduced-motion
   junto com o resto do "juice" do jogo. */
.brgol-stat-valor-disponivel {
	display: inline-flex;
	align-items: center;
	background: var(--brgol-acento-verde);
	color: var(--brgol-fundo-escuro) !important;
	font-family: var(--brgol-font-display);
	font-size: 11px;
	letter-spacing: 0.4px;
	text-transform: uppercase;
	padding: 3px 10px;
	border-radius: 999px;
	border: 2px solid var(--brgol-borda-forte);
	box-shadow: 2px 2px 0 var(--brgol-borda-forte);
	animation: brgolDisponivelPulso 1.6s ease-in-out infinite;
}
.brgol-stat-row--disponivel:hover .brgol-stat-valor-disponivel {
	filter: brightness(1.08);
}
@keyframes brgolDisponivelPulso {
	0%, 100% { transform: scale(1); }
	50% { transform: scale(1.08); }
}
/* Juice do instante em que o cooldown chega a zero (js/tempo.js,
   brgolContagem) - pop + flash verde, uma vez só, na troca da linha de
   cronômetro pra link "Disponível!". Pedido explícito do usuário pra
   gamificar esse momento. */
.brgol-stat-row--pop {
	animation: brgolStatDisponivelPop 600ms ease-out both;
}
@keyframes brgolStatDisponivelPop {
	0% { transform: scale(0.92); background: rgba(76, 179, 36, 0.4); }
	60% { transform: scale(1.03); }
	100% { transform: scale(1); background: transparent; }
}

.brgol-oculto {
	display: none;
}

/* Barra de progresso */
.brgol-progress {
	background: var(--brgol-fundo-escuro-3);
	border-radius: var(--brgol-raio-pill);
	height: 8px;
	overflow: hidden;
	margin: 4px 14px;
}
.brgol-progress-fill {
	background: var(--brgol-acento-verde);
	height: 100%;
}
.brgol-progress-label {
	font-size: 11px;
	color: var(--brgol-texto-suave-claro);
	padding: 0 14px;
}
/* Variantes pra usar dentro de card claro (ex: paginas/niveis.php) - o
   padrão acima foi desenhado pro sidebar escuro, cor de fundo/texto erradas
   num card claro (texto quase invisível). */
.brgol-progress--claro {
	background: var(--brgol-fundo-claro-alt);
	border: 1px solid var(--brgol-borda);
	margin: 0;
}
.brgol-progress-label--claro {
	color: var(--brgol-texto-suave-escuro);
	padding: 4px 0 0;
}

/* Caixa de nível (gamificada, estilo "XP bar" de jogo casual) */
.brgol-nivel-box {
	padding: 14px 14px 10px;
}
.brgol-nivel-header {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	color: var(--brgol-texto-claro);
	font-weight: bold;
	font-size: 13px;
	margin-bottom: 6px;
}
.brgol-nivel-pct {
	color: var(--brgol-acento-verde-claro);
	font-size: 12px;
}
.brgol-progress--nivel {
	height: 14px;
	margin: 0 0 4px;
	border: 2px solid var(--brgol-fundo-escuro-3);
}
.brgol-progress--nivel .brgol-progress-fill {
	background: var(--brgol-acento-verde);
}
.brgol-nivel-box .brgol-progress-label {
	padding: 0;
	text-align: right;
}

/* Botão de ação rápida (sidebar escuro) - visual "selo/figurinha": cor
   chapada, borda preta grossa, sombra sólida deslocada que "afunda" (some)
   ao clicar. v3: sem gradiente/glow (era "glossy dashboard", leu como IA
   genérica - ver histórico em design-tokens.css). */
.brgol-btn-acao {
	display: block;
	position: relative;
	text-align: center;
	background: var(--brgol-acento-verde);
	color: var(--brgol-fundo-escuro) !important;
	padding: 10px 10px;
	border: 2px solid var(--brgol-borda-forte);
	border-radius: var(--brgol-raio);
	text-decoration: none !important;
	font-family: var(--brgol-font-display);
	font-size: 16px;
	letter-spacing: 0.3px;
	margin: 10px 14px;
	cursor: pointer;
	width: calc(100% - 28px);
	box-sizing: border-box;
	box-shadow: var(--brgol-sombra);
	transition: transform 0.05s, box-shadow 0.05s;
}
.brgol-btn-acao:hover {
	filter: brightness(1.06);
}
.brgol-btn-acao:active {
	transform: translate(3px, 3px);
	box-shadow: 0 0 0 var(--brgol-borda-forte);
}
/* Variante inline - largura pelo conteúdo, sem a margem de "botão de
   sidebar de largura cheia". Usada em formulários dentro de card claro
   (ex: paginas/niveis.php, .brgol-chat-form). */
.brgol-btn-acao--inline {
	display: inline-block;
	width: auto;
	margin: 0;
	padding: 8px 16px;
	font-size: 13px;
}
/* Variante "fantasma" - ação secundária/custosa (ex: resetar pontos de
   habilidade por dinheiro), não deve competir visualmente com a ação
   primária verde. Mesma borda preta grossa/sombra "selo" de sempre, só
   troca o preenchimento. */
.brgol-btn-acao--fantasma {
	background: var(--brgol-fundo-claro-alt);
	color: var(--brgol-texto-escuro) !important;
}
.brgol-btn-acao--fantasma:hover {
	filter: none;
	background: var(--brgol-borda);
}

/* Item de menu (lista de ações no sidebar escuro) */
.brgol-menu-item {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 9px 14px;
	text-decoration: none;
	color: var(--brgol-texto-claro);
	border-bottom: 1px solid var(--brgol-fundo-escuro-3);
	font-size: 13px;
}
.brgol-menu-item:hover {
	background: var(--brgol-fundo-escuro-2);
}
.brgol-menu-item img {
	width: 16px;
	height: 16px;
}
/* "Sair" dentro do grupo Minha Conta (sidebar direito) - mesmo tratamento
   vermelho que o link já tinha no dropdown "Minha Conta" da barra superior
   (removido junto com essa mudança, ver index.php) - vermelho é reservado
   pra alerta nesta identidade, e logout é a única ação "destrutiva" desse
   grupo. */
.brgol-menu-item--sair {
	color: var(--brgol-acento-vermelho);
}
.brgol-menu-item--sair:hover {
	background: rgba(211, 53, 43, 0.12);
}

/* Formulário de login (sidebar direito, visitante) */
.brgol-login-form {
	padding: 12px 14px;
	display: flex;
	flex-direction: column;
	gap: 4px;
}
.brgol-login-form label {
	color: var(--brgol-texto-suave-claro);
	font-size: 12px;
	margin-top: 6px;
}
.brgol-login-form input[type="text"],
.brgol-login-form input[type="password"] {
	padding: 8px 10px;
	border-radius: var(--brgol-raio);
	border: 1px solid var(--brgol-fundo-escuro-3);
	background: var(--brgol-fundo-escuro-2);
	color: var(--brgol-texto-claro);
	font-size: 13px;
}
.brgol-login-form input[type="submit"] {
	margin-top: 10px;
}

/* Chat geral (sala única, ver js/chat.js) - corpo claro de .brgol-card na
   tela inicial (paginas/principal.php). Já foi um painel escuro no sidebar
   direito; migrado pra cá porque ficava espremido numa coluna de 230px -
   ver .claude/skills/brgol-frontend-layout. Cores agora seguem o corpo
   claro do card (texto escuro, campos com fundo "osso"), não mais o chrome
   escuro do jogo. */
.brgol-chat-mensagens {
	display: flex;
	flex-direction: column;
	gap: 7px;
	padding: 4px 2px 12px;
	/* Era 240px; diminuído pra 190px (2026-09-19, pedido do usuário) agora
	   que tem paginação (js/chat.js) - só 10 mensagens de cada vez (não
	   mais 60 acumuladas rolando), sobra menos motivo pro painel ser alto.
	   overflow-y continua como rede de segurança pra mensagem longa/
	   quebrada em várias linhas dentro da página de 10. */
	max-height: 190px;
	overflow-y: auto;
}
.brgol-chat-msg {
	font-size: 13px;
	line-height: 1.4;
	color: var(--brgol-texto-escuro);
	word-wrap: break-word;
}
.brgol-chat-autor {
	font-weight: 700;
	color: var(--brgol-acento-verde-escuro);
}
.brgol-chat-hora {
	color: var(--brgol-texto-suave-escuro);
	font-size: 10px;
}
.brgol-chat-vazio {
	color: var(--brgol-texto-suave-escuro);
	font-size: 12px;
	font-style: italic;
	padding: 4px 0;
}
.brgol-chat-form {
	display: flex;
	gap: 6px;
	padding: 8px 2px 0;
	border-top: 1px solid var(--brgol-borda);
}
.brgol-chat-form input[type="text"] {
	flex: 1;
	min-width: 0;
	padding: 8px 10px;
	border-radius: var(--brgol-raio);
	border: 1px solid var(--brgol-borda);
	background: var(--brgol-fundo-claro-alt);
	color: var(--brgol-texto-escuro);
	font-size: 13px;
	box-sizing: border-box;
}
.brgol-chat-erro {
	display: block;
	padding: 6px 2px 0;
	font-size: 11px;
	color: var(--brgol-acento-vermelho);
}
.brgol-chat-login-aviso {
	padding: 8px 2px 0;
	font-size: 12px;
	color: var(--brgol-texto-suave-escuro);
}
.brgol-chat-login-aviso a {
	color: var(--brgol-acento-verde-escuro);
}

/* Medidor "de jogo" (paginas/niveis.php) - barra de nível e barras de
   habilidade usam o mesmo componente: moldura preta grossa tipo selo (não
   a barra fina/lisa de .brgol-progress) + marcações a cada 10% (::after,
   overlay semi-transparente por cima do preenchimento - não é decoração
   gratuita, é o que lê como "medidor de jogo" em vez de barra de carregamento
   de site). Pedido explícito do usuário: "parecer 100% um jogo de futebol". */
.brgol-medidor {
	position: relative;
	height: 22px;
	border: 2px solid var(--brgol-borda-forte);
	border-radius: var(--brgol-raio);
	background: var(--brgol-fundo-claro-alt);
	overflow: hidden;
	flex: 1;
	min-width: 0;
}
.brgol-medidor-fill {
	height: 100%;
	background: var(--brgol-acento-verde);
	transition: width 350ms ease-out;
}
.brgol-medidor::after {
	content: '';
	position: absolute;
	inset: 0;
	background-image: repeating-linear-gradient(90deg, rgba(13, 13, 13, 0.18) 0, rgba(13, 13, 13, 0.18) 2px, transparent 2px, transparent 10%);
	pointer-events: none;
}
.brgol-medidor-linha {
	display: flex;
	align-items: center;
	gap: 8px;
}
/* Botão "+" - investe 1 ponto por clique (ajax_investir_ponto.php,
   js/niveis.js), substitui o form antigo de digitar quantidade + escolher
   select + confirmar. */
.brgol-medidor-btn {
	flex: none;
	width: 34px;
	height: 34px;
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--brgol-font-display);
	font-size: 20px;
	line-height: 1;
	padding: 0;
	background: var(--brgol-acento-verde);
	color: var(--brgol-fundo-escuro);
	border: 2px solid var(--brgol-borda-forte);
	border-radius: var(--brgol-raio);
	cursor: pointer;
	box-shadow: var(--brgol-sombra);
	transition: transform 0.05s, box-shadow 0.05s;
}
.brgol-medidor-btn:hover {
	filter: brightness(1.06);
}
.brgol-medidor-btn:active {
	transform: translate(2px, 2px);
	box-shadow: 0 0 0 var(--brgol-borda-forte);
}
.brgol-medidor-btn:disabled {
	opacity: 0.4;
	cursor: default;
	filter: none;
	box-shadow: none;
}
/* Pop rápido no medidor ao investir um ponto (juice, ver skill
   brgol-frontend-layout) - dispara via JS toda vez que a barra cresce. */
.brgol-medidor--pop {
	animation: brgolMedidorPop 400ms ease-out both;
}
@keyframes brgolMedidorPop {
	0% { box-shadow: 0 0 0 3px rgba(76, 179, 36, 0.5); }
	100% { box-shadow: 0 0 0 0 rgba(76, 179, 36, 0); }
}

/* ==========================================================================
   Confronto ao vivo (paginas/confronto.php, js/confronto.js) - placar em
   tempo real de uma partida, com jogadores online e posição na tabela de
   cada time (brgol-campeonatos). Referência: print que o usuário mandou de
   um jogo parecido (crachá "AO VIVO" + cronômetro, escudo+nome+contadores
   por time, barra de domínio embaixo). */
.brgol-confronto {
	display: flex;
	flex-direction: column;
	gap: 16px;
	max-width: 520px;
	margin: 0 auto;
}
.brgol-confronto-topo {
	display: flex;
	align-items: center;
	justify-content: center;
	gap: 10px;
	flex-wrap: wrap;
}
.brgol-confronto-status {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	font-weight: 700;
	font-size: 13px;
	text-transform: uppercase;
	letter-spacing: 0.4px;
	padding: 5px 12px;
	border-radius: var(--brgol-raio-pill);
	border: 2px solid var(--brgol-borda-forte);
	color: #fff;
}
.brgol-confronto-status--vivo {
	background: var(--brgol-acento-vermelho);
}
.brgol-confronto-status--fim {
	background: var(--brgol-texto-suave-escuro);
}
.brgol-confronto-dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: #fff;
	animation: brgolConfrontoPisca 1s ease-in-out infinite;
}
@keyframes brgolConfrontoPisca {
	0%, 100% { opacity: 1; }
	50% { opacity: 0.25; }
}
.brgol-confronto-nota {
	font-size: 12px;
	font-weight: 600;
	color: var(--brgol-texto-suave-escuro);
	border: 1px solid var(--brgol-borda);
	border-radius: var(--brgol-raio-pill);
	padding: 4px 10px;
	cursor: help;
}
.brgol-confronto-times {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: 10px;
}
.brgol-confronto-time {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 6px;
	text-align: center;
}
.brgol-confronto-time img {
	border-radius: var(--brgol-raio);
}
.brgol-confronto-nome {
	font-weight: 700;
	color: var(--brgol-texto-escuro);
	text-decoration: none;
}
.brgol-confronto-nome:hover {
	color: var(--brgol-acento-verde-escuro);
}
.brgol-confronto-posicao {
	margin: 0;
	padding: 3px 10px;
	font-size: 12px;
}
.brgol-confronto-online {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	font-size: 13px;
	color: var(--brgol-texto-suave-escuro);
}
.brgol-confronto-online-dot {
	width: 8px;
	height: 8px;
	border-radius: 50%;
	background: var(--brgol-acento-verde);
	border: 1px solid var(--brgol-borda-forte);
}
/* Top 5 artilheiros da rodada de cada time - lista compacta embaixo do
   escudo/online, mesma paleta suave de .brgol-confronto-online. */
.brgol-confronto-artilheiros-titulo {
	margin-top: 6px;
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.4px;
	color: var(--brgol-texto-suave-escuro);
}
.brgol-confronto-artilheiros {
	list-style: none;
	margin: 4px 0 0;
	padding: 0;
	width: 100%;
	max-width: 160px;
	font-size: 12px;
}
.brgol-confronto-artilheiros li {
	display: flex;
	align-items: center;
	gap: 6px;
	padding: 2px 0;
	color: var(--brgol-texto-escuro);
}
/* Bolinha de online/offline à esquerda do nome - mesmo padrão visual do
   .brgol-confronto-online-dot (só o time inteiro), mas cinza quando o
   jogador específico está offline (janela de 600s, ver
   brgol_top_artilheiros_rodada()). */
.brgol-confronto-artilheiro-dot {
	flex: none;
	width: 7px;
	height: 7px;
	border-radius: 50%;
	background: var(--brgol-texto-suave-claro);
	border: 1px solid var(--brgol-borda-forte);
}
.brgol-confronto-artilheiro-dot--online {
	background: var(--brgol-acento-verde);
}
.brgol-confronto-artilheiro-nome {
	flex: 1;
	min-width: 0;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.brgol-confronto-artilheiro-gols {
	font-weight: 700;
	flex: none;
}
.brgol-confronto-artilheiros-vazio {
	justify-content: center !important;
	color: var(--brgol-texto-suave-escuro);
	font-style: italic;
}
.brgol-confronto-placar {
	font-family: var(--brgol-font-display);
	font-size: 44px;
	color: var(--brgol-texto-escuro);
	white-space: nowrap;
	padding: 0 6px;
}
.brgol-confronto-x {
	color: var(--brgol-texto-suave-escuro);
	font-size: 28px;
	margin: 0 4px;
}
/* % de domínio dos DOIS times, sempre visível em cima da barra (pedido
   explícito do usuário) - cada número encostado na sua borda, alinhado com
   o time correspondente logo acima. Era um número só, centralizado e da
   casa, até 2026-09-17: num placar unilateral a tela mostrava só "0%", que
   lê como "não aconteceu nada" em vez de "o visitante domina tudo".
   Texto em preto, não na cor do clube: a cor identifica na barra (bloco
   grande), mas num número de 13px times amarelos/claros ficariam ilegíveis
   sobre o fundo osso. Quem diz de quem é a % aqui é a POSIÇÃO.
   0x0 mostra 50%/50% (ninguém domina ainda). */
.brgol-confronto-medidor-pct {
	display: flex;
	justify-content: space-between;
	font-family: var(--brgol-font-display);
	font-size: 13px;
	color: var(--brgol-texto-escuro);
	margin-bottom: 2px;
}
/* Barra de domínio - reaproveita a moldura "selo" de .brgol-medidor
   (niveis.php: borda grossa, cantos, marcações de 10% via ::after), mas com
   dois preenchimentos (casa/fora) em vez de um só. `.brgol-medidor` foi
   desenhado pra ficar dentro de uma linha horizontal (.brgol-medidor-linha)
   onde `flex: 1 1 0%` estica ele no espaço que sobra ao lado do botão "+" -
   aqui o pai (.brgol-confronto) é uma coluna, e nesse eixo o mesmo
   flex-basis:0% zera a altura em vez de esticar (não tem "espaço sobrando"
   pra crescer numa coluna que só cresce até o tamanho do conteúdo). `flex:
   none` cancela isso e deixa a altura fixa de verdade. */
.brgol-confronto-medidor {
	display: flex;
	flex: none;
	height: 14px;
}
/* Cada lado usa a COR DE IDENTIDADE do próprio clube, vinda inline do PHP
   (configs/cores_times.php) - o `background` aqui é só o fallback pra quando
   o inline não vier. Era verde (casa) / vermelho (fora) até 2026-09-17,
   quando o usuário apontou que essa dupla lê como "certo/errado" em vez de
   "dois times"; a tentativa seguinte (preto x osso) resolveu a semântica mas
   ficou apagada, e num placar unilateral a barra toda osso parecia vazia.
   Ver skill brgol-campeonatos, "Tela de confronto ao vivo" (v5 e v6).
   A divisa branca entre os dois lados não é decoração: é o que mantém a
   proporção legível quando os dois clubes têm a MESMA cor - acontece de
   verdade dentro de um mesmo grupo regional (Botafogo-SP x XV de
   Piracicaba, Villa Nova x Tombense, Cascavel x Criciúma). Ela é box-shadow
   no bloco da casa, e não border-left no do visitante, de propósito: borda
   entra no fluxo do flex e sobraria um risco branco mesmo com o lado em
   `width: 0%`; o shadow não ocupa espaço e o overflow:hidden da moldura
   recorta ele nos extremos. */
.brgol-confronto-medidor-casa {
	height: 100%;
	background: var(--brgol-fundo-escuro);
	box-shadow: 3px 0 0 var(--brgol-fundo-claro);
	transition: width 400ms ease-out;
}
.brgol-confronto-medidor-fora {
	height: 100%;
	background: var(--brgol-fundo-escuro-3);
	transition: width 400ms ease-out;
}
/* Nota de secagem (brgol-secar) - tom de aviso (borda vermelha fina, sem
   preencher com a cor toda - não é erro, é só informativo). */
.brgol-confronto-secar-nota {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
	color: var(--brgol-texto-escuro);
	background: var(--brgol-fundo-claro-alt);
	border: 1px solid var(--brgol-acento-vermelho);
	border-radius: var(--brgol-raio);
	padding: 8px 12px;
	margin-top: 8px;
}
.brgol-confronto-secar-nota i {
	color: var(--brgol-acento-vermelho);
	flex: none;
}
.brgol-confronto-legenda {
	text-align: center;
	font-size: 13px;
	color: var(--brgol-texto-suave-escuro);
}

/* paginas/niveis.php inteira (card "Minha Evolução" + tabela completa)
   ficava esticada até a largura cheia de #principal - o usuário pediu
   "quanto menos espaço melhor" (mesmo ajuste já aplicado em vip.php e
   gol.php: menos espaço lateral desperdiçado, não uma tela cheia de
   barra vazia). Os medidores (.brgol-medidor) já são flexíveis
   (flex:1), então encolhem sozinhos com o container, sem precisar
   mudar mais nada dentro dos cards. */
.brgol-niveis-pagina {
	max-width: 480px;
	margin: 0 auto;
}

/* Nível + progresso pro próximo, no topo do card único "Minha Evolução"
   (era um card separado - o usuário pediu pra juntar numa seção só). */
.brgol-evolucao-nivel {
	margin-bottom: 20px;
	padding-bottom: 16px;
	border-bottom: 1px solid var(--brgol-borda);
}
.brgol-evolucao-nivel .brgol-habilidade-banco-valor {
	display: block;
	margin-bottom: 8px;
}

.brgol-habilidade-banco {
	display: flex;
	align-items: baseline;
	gap: 10px;
	margin-bottom: 18px;
}
.brgol-habilidade-banco-valor {
	font-family: var(--brgol-font-display);
	font-size: 36px;
	color: var(--brgol-acento-verde-escuro);
	line-height: 1;
}
.brgol-habilidade-banco-label {
	font-size: 13px;
}
.brgol-habilidade-item {
	margin-bottom: 16px;
}
.brgol-habilidade-cabecalho {
	display: flex;
	justify-content: space-between;
	align-items: baseline;
	font-weight: 700;
	margin-bottom: 6px;
}
.brgol-habilidade-chance {
	font-family: var(--brgol-font-display);
	color: var(--brgol-acento-verde-escuro);
	font-size: 16px;
}
.brgol-habilidade-reset {
	display: flex;
	gap: 8px;
	flex-wrap: wrap;
	margin-top: 4px;
}

/* Linha do nível atual do jogador, na tabela de Níveis - sem isso a tabela
   é 100 linhas idênticas, sem nenhuma pista de onde o jogador está. */
.brgol-nivel-linha-atual {
	background: var(--brgol-fundo-claro-alt);
	font-weight: 700;
}
.brgol-nivel-linha-atual td {
	border-left: 4px solid var(--brgol-acento-verde);
}

/* Pill de estatística (inline, dentro de cards claros) */
.brgol-pill {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: var(--brgol-fundo-claro-alt);
	color: var(--brgol-texto-escuro);
	padding: 4px 12px;
	border-radius: var(--brgol-raio-pill);
	font-size: 12px;
	white-space: nowrap;
	border: 1px solid var(--brgol-borda);
}
.brgol-pill-label {
	color: var(--brgol-texto-suave-escuro);
}
.brgol-pill-value {
	font-weight: bold;
}

/* Pill clicável (links de navegação dentro de um card claro, ex: hub de
   Rankings/Campeonatos) - mesma forma do .brgol-pill, mas como link */
.brgol-link-pill {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	background: var(--brgol-fundo-claro-alt);
	color: var(--brgol-texto-escuro);
	padding: 8px 16px;
	border-radius: var(--brgol-raio-pill);
	font-size: 13px;
	font-weight: 600;
	white-space: nowrap;
	border: 1px solid var(--brgol-borda);
	text-decoration: none;
	margin: 0 6px 6px 0;
}
.brgol-link-pill:hover {
	background: var(--brgol-acento-verde);
	color: #fff;
	border-color: var(--brgol-acento-verde-escuro);
}
.brgol-link-pill--ativo {
	background: var(--brgol-acento-verde);
	color: #fff;
	border-color: var(--brgol-acento-verde-escuro);
}

/* Subseção genérica DENTRO de um card (paginas/equipe.php: Administradores/
   Moderadores/Divulgadores; paginas/premios.php: Série A/B/C/Divisão de
   Acesso dentro do card "Brasileiro") - rótulo pequeno igual o de
   .brgol-form-grupo label, em vez de <strong> solto com <br><br>. Nasceu
   em equipe.php (2026-09-19) mas o nome já era genérico o bastante pra
   reaproveitar sem precisar de uma cópia quase idêntica. */
.brgol-subsecao {
	margin-bottom: 18px;
}
.brgol-subsecao:last-child {
	margin-bottom: 0;
}
.brgol-subsecao-titulo {
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.4px;
	color: var(--brgol-texto-suave-escuro);
	margin-bottom: 8px;
}

/* Vitrine de premiações (paginas/usuario.php, card "Premiações",
   2026-09-19) - 1 .brgol-subsecao por período (Hora/Rodada/Temporada),
   cada uma com os 3 selos (ouro/prata/bronze) + quantas vezes já foi
   conquistado. Grid em vez de empilhado - os 3 períodos cabem lado a
   lado em tela larga, colapsa pra 1 coluna em tela estreita sozinho. */
.brgol-premiacoes-grade {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(160px, 1fr));
	gap: 16px;
}
.brgol-premiacao-itens {
	display: flex;
	gap: 14px;
}
.brgol-premiacao-item {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
}
.brgol-premiacao-item img {
	width: 40px;
	height: 40px;
	object-fit: cover;
	border-radius: 50%;
	border: 1px solid var(--brgol-borda);
	background: #fff;
}
.brgol-premiacao-item span {
	font-family: var(--brgol-font-display);
	font-size: 13px;
	color: var(--brgol-texto-escuro);
}
/* Ainda não conquistado (quantidade 0) - esmaecido/cinza, pra distinguir
   de cara do que já foi ganho pelo menos 1x (pedido do usuário: "destaque
   bonito" pro que já foi conquistado - contraste é o que cria o destaque). */
.brgol-premiacao-item--vazio img {
	opacity: 0.3;
	filter: grayscale(1);
}
.brgol-premiacao-item--vazio span {
	color: var(--brgol-texto-suave-escuro);
}

/* Premiações do TIME (paginas/time.php, 2026-09-19) - mesma ideia da
   vitrine de premiações do perfil de usuário (.brgol-premiacoes-grade/
   .brgol-premiacao-itens, reaproveitados), só que sem imagem própria por
   competição (Estadual/Brasileiro/Copa do Brasil/Copa Representantes não
   têm um PNG dedicado como hora/rodada/temporada têm) - um círculo
   colorido (ouro/prata/bronze, mesmos tokens do pódio de ranking) com um
   ícone de FontAwesome no lugar de um <img>. */
.brgol-premiacao-item-time {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 4px;
}
.brgol-premiacao-item-time i {
	width: 40px;
	height: 40px;
	border-radius: 50%;
	display: flex;
	align-items: center;
	justify-content: center;
	font-size: 16px;
	color: #fff;
}
.brgol-premiacao-item-time--ouro i {
	background: var(--brgol-acento-vip);
}
.brgol-premiacao-item-time--prata i {
	background: var(--brgol-acento-prata);
}
.brgol-premiacao-item-time--bronze i {
	background: var(--brgol-acento-bronze);
}
.brgol-premiacao-item-time span {
	font-family: var(--brgol-font-display);
	font-size: 13px;
	color: var(--brgol-texto-escuro);
}
.brgol-premiacao-item-time--vazio i {
	background: var(--brgol-fundo-claro-alt);
	color: var(--brgol-texto-suave-escuro);
	border: 1px solid var(--brgol-borda);
}
.brgol-premiacao-item-time--vazio span {
	color: var(--brgol-texto-suave-escuro);
}

/* Valor de Passe (paginas/usuario.php, card dedicado, 2026-09-19) -
   pedido do usuário pra ficar "bonito" em vez de uma pill pequena
   perdida dentro do card de Ações - número grande na tipografia de
   destaque do jogo, mesma ideia de .brgol-recorde-valor mas maior
   (é o conteúdo principal do card, não um detalhe de rodapé). */
.brgol-passe-valor {
	font-family: var(--brgol-font-display);
	font-size: 26px;
	color: var(--brgol-acento-verde-escuro);
	letter-spacing: 0.3px;
}

/* Título de agrupamento ENTRE cards (não dentro de 1 card) - "Ranking
   Pessoal" / "Prêmios de Campeonato" em paginas/premios.php, 2026-09-19.
   Mais chamativo que .brgol-subsecao-titulo (que vive dentro de um card
   só) porque esse aqui separa 2 grades de cards inteiras. */
.brgol-secao-titulo {
	font-family: var(--brgol-font-display);
	font-size: 15px;
	letter-spacing: 0.3px;
	/* --brgol-texto-claro (quase branco) - errado aqui: isso é pro fundo
	   ESCURO dos cards/sidebar, mas este título vive direto em cima do
	   fundo claro de #principal - ficava "transparente" (usuário reportou
	   com print, só a borda verde aparecia). --brgol-texto-escuro é o
	   mesmo tom usado no resto do texto solto fora de card. */
	color: var(--brgol-texto-escuro);
	margin: 20px 0 10px;
	padding-left: 10px;
	border-left: 4px solid var(--brgol-acento-verde);
}
.brgol-secao-titulo:first-child {
	margin-top: 0;
}

/* Grade responsiva de cards (paginas/premios.php, 2026-09-19) - o usuário
   pediu pra aproveitar melhor o espaço em telas grandes (cards lado a
   lado) em vez de empilhar tudo numa coluna só até 560px como a v1 fazia;
   em telas estreitas, `auto-fit`/`minmax` colapsa pra 1 coluna sozinho,
   sem media query. `align-items:start` evita que um card baixo (ex:
   "Recordes Históricos" fechado) estique pra ficar do tamanho do vizinho
   mais alto na mesma linha. */
.brgol-premios-grid {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
	gap: 16px;
	align-items: start;
}
.brgol-premios-grid > .brgol-card {
	margin-bottom: 0;
}
/* "Brasileiro" (v2, 2026-09-19) - o usuário pediu pra já vir aberto, mas
   aberto ele fica bem mais alto que os outros cards da mesma grade (4
   subdivisões). Numa grid comum isso estica a ALTURA DA LINHA inteira
   onde ele está (align-items:start só evita o CARD esticar, não evita a
   linha crescer) e empurra pra baixo qualquer card da linha SEGUINTE -
   exatamente o que o usuário reportou ("empurrando Copa Representantes
   pra baixo"). Fix: tira o Brasileiro do fluxo de colunas
   (`grid-column:1/-1`, ocupa a linha inteira sozinho) e ele fica por
   ÚLTIMO no HTML - os outros 3 cards compactos (Estadual/Copa do
   Brasil/Copa Representantes) preenchem a primeira linha sem interrupção,
   e o Brasileiro cresce livremente na própria linha depois deles, sem
   afetar mais ninguém. */
.brgol-premios-grid-full {
	grid-column: 1 / -1;
}
/* As 4 subdivisões (Série A/B/C/Divisão de Acesso) dentro do card
   "Brasileiro" full-width - sem isso, ficariam empilhadas verticalmente
   desperdiçando toda a largura nova que o card ganhou. */
.brgol-premios-grid-interna {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 4px 24px;
}

/* Rola por dentro em vez de estourar a largura do card em telas estreitas
   (paginas/classificacao.php - 8 colunas não cabem em ~375px). */
.brgol-tabela-scroll {
	overflow-x: auto;
}

/* Mini-tabela de ranking */
.brgol-rank-table {
	width: 100%;
	border-collapse: collapse;
	font-size: 13px;
}
.brgol-rank-table th {
	text-align: left;
	padding: 6px 10px;
	color: var(--brgol-texto-suave-escuro);
	font-weight: normal;
	border-bottom: 1px solid var(--brgol-borda);
}
.brgol-rank-table td {
	padding: 6px 10px;
	border-bottom: 1px solid var(--brgol-borda);
}
.brgol-rank-table tr:nth-child(even) {
	background: var(--brgol-fundo-claro-alt);
}
/* Linha do próprio time (paginas/classificacao.php) - precisa vir DEPOIS
   do nth-child acima na cascata (mesma especificidade, então a ordem no
   arquivo decide) pra ganhar mesmo em linha par/ímpar. */
.brgol-rank-table tr.brgol-rank-linha--meu {
	background: rgba(76, 179, 36, 0.14);
	font-weight: 700;
}

/* Grid de 2 ou 3 colunas para cards lado a lado (ex: os rankings de
   destaque na página inicial) - empilha em 1 coluna se a tela ficar
   estreita. */
.brgol-grid-2 {
	display: grid;
	grid-template-columns: 1fr 1fr;
	gap: 14px;
}
.brgol-grid-3 {
	display: grid;
	grid-template-columns: 1fr 1fr 1fr;
	gap: 14px;
}
@media (max-width: 900px) {
	.brgol-grid-3 { grid-template-columns: 1fr 1fr; }
}
@media (max-width: 700px) {
	.brgol-grid-2,
	.brgol-grid-3 { grid-template-columns: 1fr; }
}

/* Célula de time+jogador na mini-tabela de ranking - ícone do usuário +
   escudo real + nome, bem colados um no outro (pedido do usuário - "sem
   muito espaçamento") - é onde a variedade de cor do ranking vem (ver
   nota do componente 2 em components.md), não de um sistema de acento. */
.brgol-rank-time {
	display: flex;
	align-items: center;
	gap: 6px;
}
.brgol-rank-time img {
	width: 28px;
	height: 28px;
	object-fit: contain;
	flex: none;
}
/* Selo de cargo (P = presidente, R = representante) do lado direito do
   nome nos rankings (brgol_render_selo_cargo(), 2026-09-19) - PNG real
   (imagens/icones/presidente.png/representante.png), fundo já removido.
   Precisa de MAIS especificidade que `.brgol-rank-time img` acima (que
   pega TODO `<img>` dentro da linha, incluindo o escudo de 28px) - senão
   o selo, bem menor, herdava 28px também. `.brgol-rank-time` já é
   flex+gap, então o espaçamento em relação ao nome do lado vem de graça,
   sem margin manual. */
.brgol-rank-time .brgol-selo-cargo {
	width: 16px;
	height: 16px;
	object-fit: contain;
	flex: none;
}
/* Tag "ADMIN" (brgol_render_selo_cargo(), 2026-09-19, pedido do usuário -
   "ao lado do nome em todo lugar que o admin aparece, seja chat, top
   rodada etc") - texto, não imagem (não tem ícone próprio pronto, e um
   texto já comunica "cargo do JOGO" de um jeito bem diferente de P/R, que
   são cargos DO TIME). Cor própria (fundo+borda), não herda do container -
   aparece tanto em fundo claro (linha de ranking) quanto escuro (header de
   card, chat), então não pode depender do contexto ao redor pra ter
   contraste. Vermelho é o único acento do jogo reservado pra "alerta/
   destaque raro" (design-tokens.css) - autoridade de admin é exatamente
   esse tipo de destaque raro, então reaproveita em vez de introduzir uma
   cor nova. */
.brgol-selo-admin {
	display: inline-flex;
	align-items: center;
	flex: none;
	font-family: var(--brgol-font-corpo);
	font-size: 9px;
	font-weight: 800;
	letter-spacing: 0.4px;
	text-transform: uppercase;
	color: var(--brgol-texto-claro);
	background: var(--brgol-acento-vermelho);
	border-radius: var(--brgol-raio-pill);
	padding: 2px 7px;
	line-height: 1.4;
}
/* Nome/time deixaram de ser link azul sublinhado padrão do navegador
   (pedido do usuário - "deixar gamificado, usar a tipagia padrão do
   jogo") - mesma tipografia/cor de qualquer texto do jogo, sem
   text-decoration; só reage no hover, igual .brgol-chat-autor. */
.brgol-rank-time a,
/* paginas/classificacao.php usa .brgol-rank-time direto num <a> só (escudo
   + nome debaixo do mesmo link, não dois <a> separados como em
   principal.php) - precisa da MESMA cor/peso/sem-sublinhado quando o
   próprio elemento com a classe é o link, não só um `a` lá dentro. */
a.brgol-rank-time {
	color: var(--brgol-texto-escuro);
	font-weight: 600;
	text-decoration: none;
}
.brgol-rank-time a:hover,
a.brgol-rank-time:hover {
	color: var(--brgol-acento-verde-escuro);
}
/* Avatar compacto (ver brgol_render_avatar_mini() em
   configs/ranking_helpers.php) - a mesma "moldura selo" do .brgol-avatar
   grande do #direita, reduzida pra caber numa linha de tabela sem
   esticar demais a altura da linha. Aumentado de 20px pra 28px (pedido
   do usuário - com uma foto de verdade enviada, 20px "quase não
   aparece"; a inicial-em-círculo lia bem pequena, mas uma foto precisa
   de mais pixels pra ficar reconhecível). */
.brgol-rank-avatar {
	width: 28px;
	height: 28px;
	border-radius: 50%;
	background: var(--brgol-fundo-escuro-2);
	border: 2px solid var(--brgol-borda-forte);
	display: flex;
	align-items: center;
	justify-content: center;
	font-family: var(--brgol-font-display);
	font-size: 13px;
	line-height: 1;
	color: var(--brgol-texto-claro);
	flex: none;
	overflow: hidden;
	box-sizing: border-box;
}
.brgol-rank-avatar img {
	width: 100%;
	height: 100%;
	object-fit: cover;
}
.brgol-rank-avatar--vip {
	border-color: var(--brgol-acento-vip);
}
.brgol-rank-pos {
	font-family: var(--brgol-font-display);
	font-size: 16px;
	color: var(--brgol-texto-suave-escuro);
	width: 22px;
}
/* Pódio do 1º/2º/3º lugar (Melhores da Hora/Rodada/Temporada) - ouro,
   prata e bronze, mesmo significado de "recorde"/Vip já usado no resto
   do jogo (ver .brgol-card-header--recorde), não uma cor nova só pra
   decorar. Só as posições 1-3 recebem isso - 4º-10º ficam no padrão,
   pra não pesar a tabela nem crescer a altura da linha (pedido do
   usuário - "sem ficar muito grande"). */
.brgol-rank-linha--topo {
	background: rgba(232, 178, 58, 0.12);
}
.brgol-rank-linha--prata {
	background: rgba(173, 181, 189, 0.16);
}
.brgol-rank-linha--bronze {
	background: rgba(205, 127, 50, 0.14);
}
.brgol-rank-badge-topo,
.brgol-rank-badge-prata,
.brgol-rank-badge-bronze {
	display: inline-flex;
	align-items: center;
	justify-content: center;
	width: 18px;
	height: 18px;
	border-radius: 50%;
	color: var(--brgol-fundo-escuro);
	font-size: 12px;
}
.brgol-rank-badge-topo {
	background: var(--brgol-acento-vip);
}
.brgol-rank-badge-prata {
	background: var(--brgol-acento-prata);
}
.brgol-rank-badge-bronze {
	background: var(--brgol-acento-bronze);
}
.brgol-rank-table td.brgol-rank-valor {
	text-align: right;
	font-family: var(--brgol-font-display);
	font-size: 15px;
}
.brgol-rank-table thead th {
	font-size: 10px;
	text-transform: uppercase;
	letter-spacing: 0.6px;
}
/* Paginação das 6 telas dedicadas de ranking (brgol_render_paginacao(),
   configs/ranking_helpers.php) - Anterior/Próxima + "Página X de Y".
   Nunca aparece na mini-prévia da home (só 10 linhas, sem paginação). */
.brgol-paginacao {
	display: flex;
	align-items: center;
	justify-content: space-between;
	gap: 8px;
	padding: 10px 12px;
	border-top: 1px solid var(--brgol-borda);
	background: var(--brgol-fundo-claro-alt);
}
.brgol-paginacao-botao {
	display: inline-flex;
	align-items: center;
	gap: 6px;
	padding: 5px 12px;
	border-radius: 999px;
	border: 1px solid var(--brgol-borda-forte);
	background: var(--brgol-fundo-claro);
	color: var(--brgol-texto-escuro);
	font-family: var(--brgol-font-corpo);
	font-size: 12px;
	font-weight: 600;
	text-decoration: none;
}
.brgol-paginacao-botao:hover {
	background: var(--brgol-acento-verde);
	color: #fff;
	border-color: var(--brgol-acento-verde-escuro);
}
.brgol-paginacao-botao--desativado {
	opacity: 0.4;
	cursor: default;
}
.brgol-paginacao-botao--desativado:hover {
	background: var(--brgol-fundo-claro);
	color: var(--brgol-texto-escuro);
	border-color: var(--brgol-borda-forte);
}
.brgol-paginacao-info {
	font-family: var(--brgol-font-corpo);
	font-size: 12px;
	color: var(--brgol-texto-suave-escuro);
	white-space: nowrap;
}

.brgol-texto-vazio {
	color: var(--brgol-texto-suave-escuro);
	font-style: italic;
	margin: 0;
}

.brgol-texto-ajuda {
	color: var(--brgol-texto-suave-escuro);
	font-size: 13px;
	line-height: 1.5;
	margin: 0 0 16px;
}

/* Tabela genérica de relatório admin (paginas/suspeitas_autoclicker.php) -
   linhas zebradas, cabeçalho fixo em maiúsculas, mesma paleta preto/verde
   do resto do site. */
.brgol-tabela-relatorio {
	width: 100%;
	border-collapse: collapse;
	font-family: var(--brgol-font-corpo);
	font-size: 13px;
}
.brgol-tabela-relatorio th {
	text-align: left;
	text-transform: uppercase;
	font-size: 11px;
	letter-spacing: 0.04em;
	color: var(--brgol-texto-suave-escuro);
	padding: 8px 10px;
	border-bottom: 2px solid var(--brgol-borda-forte);
}
.brgol-tabela-relatorio td {
	padding: 8px 10px;
	border-bottom: 1px solid var(--brgol-borda-fraca, var(--brgol-borda-forte));
	color: var(--brgol-texto-escuro);
}
.brgol-tabela-relatorio tbody tr:nth-child(even) {
	background: var(--brgol-fundo-claro);
}
.brgol-tabela-relatorio a {
	color: var(--brgol-acento-verde-escuro);
	font-weight: 700;
	text-decoration: none;
}
.brgol-tabela-relatorio a:hover {
	text-decoration: underline;
}
.brgol-tabela-relatorio-mono {
	font-family: monospace;
	font-size: 12px;
	color: var(--brgol-texto-suave-escuro);
}

/* Lista de passos numerados (paginas/como_jogar.php) - mesma "moldura selo"
   verde/preto dos outros badges do jogo (.brgol-chip-atual, .brgol-medidor),
   só que redonda e com o número em Anton, pra reforçar hierarquia sem
   precisar de imagem nenhuma. */
.brgol-passo-lista {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 12px;
}
.brgol-passo {
	display: flex;
	align-items: flex-start;
	gap: 12px;
}
.brgol-passo-num {
	flex: none;
	width: 30px;
	height: 30px;
	border-radius: 50%;
	background: var(--brgol-acento-verde);
	border: 2px solid var(--brgol-borda-forte);
	box-shadow: 2px 2px 0 var(--brgol-borda-forte);
	color: var(--brgol-fundo-escuro);
	font-family: var(--brgol-font-display);
	font-size: 15px;
	display: flex;
	align-items: center;
	justify-content: center;
}
.brgol-passo-texto {
	padding-top: 4px;
}
.brgol-passo-texto strong {
	color: var(--brgol-texto-escuro);
}

/* Pacotes de Vip com dinheiro real (paginas/vip.php) - grade de tiles
   "selo" (mesmo vocabulário de .brgol-passo-num/.brgol-btn-acao: cor
   chapada, borda preta grossa, sombra sólida deslocada, sem gradiente).
   O card em si fica no --brgol-fundo-claro-alt (não pintado de verde -
   verde é só pro badge de desconto, que é o elemento de destaque real). */
.brgol-vip-pacotes {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(150px, 1fr));
	gap: 12px;
	margin-top: 10px;
}
.brgol-vip-pacote {
	background: var(--brgol-fundo-claro-alt);
	border: 2px solid var(--brgol-borda-forte);
	border-radius: var(--brgol-raio);
	box-shadow: var(--brgol-sombra);
	padding: 14px;
	display: flex;
	flex-direction: column;
	gap: 4px;
}
.brgol-vip-pacote-desconto {
	align-self: flex-start;
	background: var(--brgol-acento-verde);
	color: var(--brgol-fundo-escuro);
	font-family: var(--brgol-font-display);
	font-size: 11px;
	padding: 2px 8px;
	border-radius: var(--brgol-raio-pill);
	border: 2px solid var(--brgol-borda-forte);
	margin-bottom: 4px;
}
.brgol-vip-pacote-dias {
	font-family: var(--brgol-font-display);
	font-size: 22px;
	color: var(--brgol-texto-escuro);
}
.brgol-vip-pacote-dias span {
	font-family: var(--brgol-font-corpo);
	font-size: 12px;
	font-weight: 500;
	text-transform: uppercase;
	color: var(--brgol-texto-suave-escuro);
}
.brgol-vip-pacote-equivale {
	font-size: 12px;
	color: var(--brgol-texto-suave-escuro);
	margin-bottom: 4px;
}
.brgol-vip-pacote-preco-original {
	font-size: 12px;
	color: var(--brgol-texto-suave-escuro);
	text-decoration: line-through;
}
.brgol-vip-pacote-preco {
	font-family: var(--brgol-font-display);
	font-size: 24px;
	color: var(--brgol-acento-verde-escuro);
}
.brgol-vip-pacote-por-dia {
	font-size: 11px;
	color: var(--brgol-texto-suave-escuro);
}
.brgol-vip-pacote-doar {
	margin-top: 6px;
	display: inline-flex;
	align-items: center;
	gap: 4px;
	font-size: 11px;
	color: var(--brgol-acento-verde-escuro);
}
.brgol-vip-pacote-comprar {
	margin-top: 10px;
	width: 100%;
	text-align: center;
}

/* Comparativo Normal x Vip (paginas/vip.php) - substitui a antiga <table
   width="500"> crua (estourava a largura do card, sem estilo nenhum) por
   2 tiles "selo" lado a lado, mesma linguagem visual dos pacotes acima. */
.brgol-vip-comparativo {
	display: grid;
	grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
	gap: 12px;
	margin-top: 10px;
}
.brgol-vip-plano {
	background: var(--brgol-fundo-claro-alt);
	border: 2px solid var(--brgol-borda-forte);
	border-radius: var(--brgol-raio);
	padding: 14px;
}
.brgol-vip-plano-titulo {
	font-family: var(--brgol-font-display);
	font-size: 15px;
	text-transform: uppercase;
	color: var(--brgol-texto-escuro);
	margin-bottom: 8px;
	display: flex;
	align-items: center;
	gap: 6px;
}
.brgol-vip-plano--vip {
	border-color: var(--brgol-acento-vip);
}
.brgol-vip-plano--vip .brgol-vip-plano-titulo {
	color: var(--brgol-acento-vip);
}
.brgol-vip-lista {
	list-style: none;
	margin: 0;
	padding: 0;
	display: flex;
	flex-direction: column;
	gap: 7px;
}
.brgol-vip-lista li {
	display: flex;
	align-items: center;
	gap: 8px;
	font-size: 13px;
	color: var(--brgol-texto-escuro);
}
.brgol-vip-lista .fa-xmark {
	color: var(--brgol-texto-suave-escuro);
}
.brgol-vip-lista .fa-check {
	color: var(--brgol-acento-verde-escuro);
}

/* "Minha Vip" (estoque + ativar + comprar com dinheiro do jogo) - 2 tiles
   lado a lado dentro do mesmo card, mesmo padrão de tile dos outros dois
   componentes de Vip acima, pra parar de ser texto solto sem nenhum
   destaque visual. */
.brgol-vip-minha {
	display: flex;
	flex-wrap: wrap;
	gap: 14px;
	margin-top: 10px;
}
.brgol-vip-minha-bloco {
	flex: 1 1 240px;
	background: var(--brgol-fundo-claro-alt);
	border: 2px solid var(--brgol-borda-forte);
	border-radius: var(--brgol-raio);
	padding: 14px;
}
.brgol-vip-minha-numero {
	font-family: var(--brgol-font-display);
	font-size: 32px;
	line-height: 1;
	color: var(--brgol-texto-escuro);
}
.brgol-vip-minha-label {
	font-size: 11px;
	text-transform: uppercase;
	letter-spacing: 0.3px;
	font-weight: 600;
	color: var(--brgol-texto-suave-escuro);
	margin-bottom: 10px;
}
.brgol-vip-minha-texto {
	font-size: 13px;
	color: var(--brgol-texto-suave-escuro);
	margin: 0 0 10px;
}
.brgol-vip-minha-form {
	display: flex;
	gap: 8px;
	align-items: center;
	flex-wrap: wrap;
}

/* Input de texto genérico dentro de card claro - mesma "moldura selo" do
   .brgol-select, pra formulários curtos (quantidade) pararem de usar o
   campo cinza padrão do navegador. */
.brgol-input {
	font-family: var(--brgol-font-corpo);
	font-size: 13px;
	font-weight: 600;
	color: var(--brgol-texto-escuro);
	background: var(--brgol-fundo-claro);
	border: 2px solid var(--brgol-borda-forte);
	border-radius: var(--brgol-raio);
	padding: 7px 10px;
	box-sizing: border-box;
}

/* Select genérico dentro de card claro (ex: dropdown de campeonato em
   paginas/jogos.php) - mesma "moldura selo" dos outros controles do
   jogo, não o select cinza padrão do navegador. */
.brgol-select {
	font-family: var(--brgol-font-corpo);
	font-size: 13px;
	font-weight: 600;
	color: var(--brgol-texto-escuro);
	background: var(--brgol-fundo-claro-alt);
	border: 2px solid var(--brgol-borda-forte);
	border-radius: var(--brgol-raio);
	padding: 7px 10px;
	cursor: pointer;
	box-sizing: border-box;
}

/* Página inteira mais estreita, centralizada dentro de #principal - pro
   conteúdo não esticar até a largura cheia do card quando isso deixa
   "muito espaçado dos lados" (mesmo pedido já atendido em vip.php/
   niveis.php/gol.php: menos espaço lateral desperdiçado). Envolve TODOS
   os cards da página (não só 1), diferente de aplicar max-width no card
   em si - senão o card fica largo com o conteúdo grudado à esquerda. */
.brgol-pagina-compacta {
	max-width: 420px;
	margin: 0 auto;
}
/* Mesma ideia acima, só um pouco mais larga - pras páginas institucionais
   do dropdown "Mais" (Premiação/Equipe/Dúvidas, 2026-09-19), que têm mais
   conteúdo por página (várias tabelas, accordion de FAQ) do que cabe
   confortável em 420px, mas ainda longe da largura cheia de #principal. */
.brgol-pagina-media {
	max-width: 560px;
	margin: 0 auto;
}

/* Formulário genérico empilhado (label em cima, campo embaixo) - usado em
   paginas/cadastro.php e reaproveitável em qualquer outro formulário
   cru (tabela sem estilo) que for migrado depois. */
.brgol-form-grupo {
	margin-bottom: 14px;
}
.brgol-form-grupo label {
	display: block;
	font-size: 11px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.4px;
	color: var(--brgol-texto-suave-escuro);
	margin-bottom: 5px;
}
.brgol-form-grupo .brgol-input,
.brgol-form-grupo .brgol-select {
	width: 100%;
}
.brgol-form-linha {
	display: flex;
	gap: 12px;
}
.brgol-form-linha .brgol-form-grupo {
	flex: 1;
	min-width: 0;
}

/* ==========================================================================
   Jogos (paginas/jogos.php) - dropdown de campeonato + confronto do
   próprio jogador em destaque + lista de jogos com escudo-nome-placar-
   nome-escudo, cada linha clicável levando pro confronto ao vivo daquele
   jogo (paginas/confronto.php). */
.brgol-jogos-topo {
	display: flex;
	align-items: center;
	gap: 10px;
	flex-wrap: wrap;
	margin-bottom: 14px;
}
.brgol-jogos-topo label {
	font-size: 13px;
	font-weight: 700;
	color: var(--brgol-texto-suave-escuro);
}
.brgol-jogos-legenda {
	font-size: 13px;
	color: var(--brgol-texto-suave-escuro);
	margin-bottom: 4px;
}
.brgol-jogos-lista {
	display: flex;
	flex-direction: column;
	gap: 6px;
	margin-bottom: 10px;
}
.brgol-jogo-linha {
	display: grid;
	grid-template-columns: 1fr auto 1fr;
	align-items: center;
	gap: 10px;
	padding: 8px 10px;
	border-radius: var(--brgol-raio);
	background: var(--brgol-fundo-claro-alt);
	text-decoration: none;
	color: var(--brgol-texto-escuro);
	transition: background 0.1s;
}
.brgol-jogo-linha:hover {
	background: var(--brgol-borda);
}
/* Destaque do "Seu Confronto" - borda verde à esquerda via box-shadow (não
   border-left de verdade) pra não mudar o box model e desalinhar com as
   linhas normais quando as duas listas ficam lado a lado visualmente. */
.brgol-jogo-linha--meu {
	box-shadow: inset 4px 0 0 var(--brgol-acento-verde);
}
.brgol-jogos-lista--destaque .brgol-jogo-linha {
	background: var(--brgol-fundo-claro);
	border: 1px solid var(--brgol-borda);
}
.brgol-jogo-time {
	display: flex;
	align-items: center;
	gap: 8px;
	min-width: 0;
}
.brgol-jogo-time--casa {
	justify-content: flex-end;
}
.brgol-jogo-time--fora {
	justify-content: flex-start;
}
.brgol-jogo-time img {
	width: 26px;
	height: 26px;
	object-fit: contain;
	flex: none;
}
.brgol-jogo-nome {
	font-weight: 600;
	font-size: 13px;
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
}
.brgol-jogo-placar {
	font-family: var(--brgol-font-display);
	font-size: 18px;
	color: var(--brgol-texto-escuro);
	white-space: nowrap;
	padding: 0 4px;
}
.brgol-jogo-x {
	color: var(--brgol-texto-suave-escuro);
	font-size: 12px;
	margin: 0 6px;
}
.brgol-jogo-bye {
	text-align: center;
	font-size: 12px;
	font-style: italic;
	color: var(--brgol-texto-suave-escuro);
}
/* Aviso "seu time está no grupo X" quando o jogador está olhando um grupo
   diferente do próprio (só aparece se ele trocar o dropdown de grupo). */
.brgol-jogos-aviso {
	font-size: 13px;
	color: var(--brgol-texto-suave-escuro);
	margin: 0 0 10px;
}
.brgol-jogos-aviso a {
	color: var(--brgol-acento-verde-escuro);
	font-weight: 600;
}
@media (max-width: 560px) {
	.brgol-jogo-nome {
		max-width: 90px;
	}
}

/* ==========================================================================
   Campeonatos (paginas/campeonatos.php) - hub das 4 competições. Antes era
   1 card grande por competição (5 cards no total, incluindo o "Agora
   rolando") - o usuário achou "muito grande pra poucas informações".
   Virou 1 card só, com cada competição como uma linha compacta dentro de
   `.brgol-campeonatos-lista` (mesmo espírito de uma lista de
   configurações, não 4 cards empilhados). */
.brgol-campeonatos-lista {
	display: flex;
	flex-direction: column;
}
.brgol-campeonato-linha {
	padding: 12px 2px;
	border-bottom: 1px solid var(--brgol-borda);
}
.brgol-campeonato-linha:last-child {
	border-bottom: none;
	padding-bottom: 2px;
}
.brgol-campeonato-cabecalho {
	display: flex;
	align-items: center;
	gap: 8px;
	flex-wrap: wrap;
}
.brgol-campeonato-icone {
	color: var(--brgol-acento-verde-escuro);
	font-size: 14px;
	flex: none;
}
.brgol-campeonato-nome {
	font-family: var(--brgol-font-display);
	font-size: 15px;
	letter-spacing: 0.3px;
	text-transform: uppercase;
}
.brgol-campeonato-status {
	font-family: var(--brgol-font-corpo);
	font-size: 10px;
	font-weight: 700;
	text-transform: uppercase;
	letter-spacing: 0.4px;
	padding: 3px 9px;
	border-radius: 999px;
	white-space: nowrap;
}
.brgol-campeonato-status--andamento {
	background: rgba(46, 125, 26, 0.14);
	color: var(--brgol-acento-verde-escuro);
}
.brgol-campeonato-status--concluida {
	background: var(--brgol-acento-vip);
	color: #4a3a08;
}
.brgol-campeonato-status--naocomecou {
	background: var(--brgol-fundo-claro-alt);
	color: var(--brgol-texto-suave-escuro);
}
/* Pills de campeão - só aparecem quando a competição já terminou nesta
   temporada (Estadual: 1 por grupo regional; Brasileiro: 1 por divisão;
   Copa do Brasil/Representantes: 1 único). Somem sozinhas quando a
   temporada vira, porque tudo aqui é calculado a partir de `partidas`
   filtrado pela temporada ATUAL - nenhum estado próprio salvo. */
.brgol-campeonato-campeoes {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 8px;
}
.brgol-campeonato-campeao-pill {
	display: inline-flex;
	align-items: center;
	gap: 5px;
	padding: 3px 10px 3px 4px;
	border-radius: 999px;
	background: var(--brgol-fundo-claro-alt);
	border: 1px solid var(--brgol-borda);
	font-size: 11px;
}
.brgol-campeonato-campeao-pill img {
	width: 16px;
	height: 16px;
	object-fit: contain;
	flex: none;
}
.brgol-campeonato-campeao-pill .fa-trophy {
	color: var(--brgol-acento-vip);
	font-size: 10px;
}
.brgol-campeonato-campeao-rotulo {
	color: var(--brgol-texto-suave-escuro);
}
.brgol-campeonato-acoes {
	display: flex;
	flex-wrap: wrap;
	gap: 6px;
	margin-top: 8px;
}
.brgol-campeonato-acoes .brgol-link-pill {
	margin: 0;
}

/* ==========================================================================
   Chaveamento (paginas/chaveamento.php) - bracket de mata-mata de verdade:
   duas metades convergindo pro centro ("CAMPEÃO"), com linhas conectando
   quem avança pra quem. Construído por recursão no PHP
   (brgol_bracket_no()) - cada nível é um <div class="brgol-bracket-no">
   com os 2 galhos da fase anterior (.brgol-bracket-no-filhos, empilhados)
   e a própria caixa desta fase (.brgol-bracket-no-atual) alinhada ao
   centro deles - o `align-items:center` do flex já centraliza sozinho,
   sem precisar calcular altura de nada em CSS.

   Lado direito é construído com a MESMA função (mesmo HTML/ordem interna
   de fase-mais-cedo-primeiro) e só fica "espelhado" via
   `transform: scaleX(-1)` no container inteiro - inverte a estrutura
   (rodada mais recente passa a ficar mais perto do centro) E o conteúdo
   junto. Pra ler direito nesse lado, `.brgol-bracket-jogo-conteudo`
   recebe um SEGUNDO scaleX(-1) - as duas inversões se cancelam pro texto
   (fica legível de novo), mas a ORDEM visual dos filhos dentro dele
   (escudo/nome) já não volta sozinha ao original só por isso - por isso
   o `flex-direction: row-reverse` só no lado direito, uma regra
   independente do transform, pra escudo ficar na ponta de fora
   (nome-depois-escudo, espelhado) igual a referência do usuário. */
.brgol-bracket {
	display: flex;
	align-items: center;
	/* `safe center`: centraliza quando cabe, mas cai pro alinhamento normal
	   (início) quando o conteúdo estoura a largura - sem o `safe`, um
	   flexbox centralizado que ultrapassa o container fica com a metade
	   esquerda inacessível (a rolagem nunca alcança scrollLeft negativo,
	   então dá pra rolar até o fim da direita mas nunca ver o início da
	   esquerda) - foi exatamente o bug reportado (arrastar a barra pra
	   esquerda não mostrava o lado esquerdo do chaveamento). */
	justify-content: safe center;
	gap: 28px;
	overflow-x: auto;
	padding: 8px 4px 16px;
	/* Sem isso, o "scroll anchoring" do navegador (corrige a rolagem
	   sozinho quando percebe qualquer reflow dentro do container - aqui,
	   os escudos carregando de forma assíncrona) ficava "puxando" a
	   rolagem de volta pro centro sozinho alguns instantes depois de o
	   usuário (ou o próprio JS) posicionar em scrollLeft=0 - mesmo sintoma
	   do bug acima, só que causado pelo navegador em vez do CSS. Achado
	   testando via DevTools (scrollLeft voltava a subir sozinho ~300ms
	   depois de zerado, mesmo sem nenhum JS do jogo mexendo em scroll).
	   Confirmado dentro deste bloco - se um dia crescer conteúdo mais
	   dinâmico aqui, o comportamento padrão do navegador seria "ajudar"
	   e teria o mesmo efeito de novo. */
	overflow-anchor: none;
}
.brgol-bracket-lado {
	display: flex;
	flex-direction: row;
	align-items: center;
}
.brgol-bracket-lado--direita {
	transform: scaleX(-1);
}
.brgol-bracket-no {
	display: flex;
	flex-direction: row;
	align-items: center;
	gap: 22px;
}
.brgol-bracket-no-filhos {
	display: flex;
	flex-direction: column;
	gap: 14px;
}
/* Linhas de conexão do chaveamento - um "ramo" pra cada galho (escudo até
   a linha vertical compartilhada) + a própria linha vertical entre os 2
   galhos + um ramo saindo dela até a caixa desta rodada. Só decorativo
   (cor sólida, sem gradiente/glow - identidade "selo" do jogo). */
.brgol-bracket-galho {
	position: relative;
	padding-right: 22px;
}
.brgol-bracket-galho::after {
	content: '';
	position: absolute;
	top: 50%;
	right: 0;
	width: 22px;
	height: 2px;
	background: var(--brgol-borda-forte);
}
.brgol-bracket-no-filhos {
	position: relative;
	padding-right: 22px;
}
.brgol-bracket-no-filhos::before {
	content: '';
	position: absolute;
	top: 0;
	bottom: 0;
	right: 0;
	width: 2px;
	background: var(--brgol-borda-forte);
}
.brgol-bracket-no-atual {
	position: relative;
	padding-left: 22px;
}
.brgol-bracket-no-atual::before {
	content: '';
	position: absolute;
	top: 50%;
	left: 0;
	width: 22px;
	height: 2px;
	background: var(--brgol-borda-forte);
}
/* Caixa de uma partida - 2 times empilhados (não lado a lado), igual à
   referência do usuário. */
.brgol-bracket-jogo {
	display: block;
	width: 190px;
	border: 2px solid var(--brgol-borda-forte);
	border-radius: var(--brgol-raio);
	background: var(--brgol-fundo-claro);
	overflow: hidden;
	/* é um <a> pra tela de confronto ao vivo - reset do estilo padrão de
	   link, mesmo tratamento de .brgol-jogo-linha. */
	text-decoration: none;
	color: inherit;
	cursor: pointer;
	transition: background 0.1s;
}
.brgol-bracket-jogo:hover {
	background: var(--brgol-borda);
}
.brgol-bracket-jogo--vazio {
	opacity: 0.5;
	/* "A definir" é um <div>, não um link (não existe id de partida ainda) -
	   desfaz o cursor/hover de link que .brgol-bracket-jogo assume por
	   padrão. */
	cursor: default;
}
.brgol-bracket-jogo--vazio:hover {
	background: var(--brgol-fundo-claro);
}
.brgol-bracket-jogo-time {
	display: flex;
	align-items: center;
	gap: 8px;
	padding: 6px 8px;
	font-size: 12px;
}
.brgol-bracket-jogo-time:first-child {
	border-bottom: 1px solid var(--brgol-borda);
}
.brgol-bracket-jogo-time--vencedor {
	background: rgba(76, 179, 36, 0.14);
	font-weight: 700;
}
.brgol-bracket-jogo-time--meu {
	box-shadow: inset 3px 0 0 var(--brgol-acento-verde);
}
.brgol-bracket-jogo-time--bye {
	font-style: italic;
	color: var(--brgol-texto-suave-escuro);
}
.brgol-bracket-jogo-conteudo {
	display: flex;
	align-items: center;
	gap: 6px;
	min-width: 0;
	flex: 1;
}
.brgol-bracket-jogo-conteudo img {
	width: 18px;
	height: 18px;
	object-fit: contain;
	flex: none;
}
.brgol-bracket-jogo-nome {
	overflow: hidden;
	text-overflow: ellipsis;
	white-space: nowrap;
	font-family: var(--brgol-font-corpo);
}
.brgol-bracket-jogo-gols {
	flex: none;
	font-family: var(--brgol-font-display);
	font-size: 13px;
}
/* Espelha o conteúdo (não a estrutura/linhas) de volta pra legível, e
   inverte a ordem escudo/nome - ver comentário no topo do bloco. */
.brgol-bracket-lado--direita .brgol-bracket-jogo-conteudo {
	transform: scaleX(-1);
	flex-direction: row-reverse;
}
.brgol-bracket-lado--direita .brgol-bracket-jogo-time--meu {
	box-shadow: inset -3px 0 0 var(--brgol-acento-verde);
}

/* Centro do chaveamento: a caixa da FINAL de verdade (os 2 times que
   chegaram lá, com placar quando já rolou) em cima, e "CAMPEÃO" - sem
   troféu, só a palavra + espaço pro escudo/nome de quem vencer (pedido
   explícito do usuário) - embaixo, preenchido só depois da final decidida. */
.brgol-bracket-final {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 14px;
	flex: none;
}
.brgol-bracket-final-jogo {
	display: flex;
	flex-direction: column;
	align-items: center;
}
.brgol-bracket-final-rotulo {
	font-family: var(--brgol-font-display);
	font-size: 15px;
	letter-spacing: 1px;
	text-transform: uppercase;
	color: var(--brgol-texto-suave-escuro);
}
.brgol-bracket-final-slot {
	display: flex;
	flex-direction: column;
	align-items: center;
	gap: 8px;
	width: 140px;
	min-height: 90px;
	padding: 14px;
	border: 3px solid var(--brgol-borda-forte);
	border-radius: var(--brgol-raio);
	background: var(--brgol-fundo-claro-alt);
	text-align: center;
	font-weight: 700;
}
.brgol-bracket-final-slot--decidido {
	background: var(--brgol-acento-vip);
	border-color: var(--brgol-acento-vip);
}
.brgol-bracket-final-slot img {
	width: 48px;
	height: 48px;
	object-fit: contain;
}
.brgol-bracket-final-vazio {
	color: var(--brgol-texto-suave-escuro);
	font-weight: 400;
	font-style: italic;
	font-size: 12px;
}
/* Texto de introdução acima do campo de chute (paginas/cpenalti.php/
   cfalta.php) - chance de acerto + dica de clique. Era texto solto (link
   azul padrão do navegador, sem hierarquia) - só isso foi estilizado
   aqui, NADA do campo de chute/animação em si (ver aviso logo abaixo,
   "não mexer" é literal). */
.brgol-chute-intro {
	margin-bottom: 16px;
}
.brgol-chute-intro-chance {
	display: flex;
	align-items: center;
	flex-wrap: wrap;
	gap: 8px;
	font-size: 14px;
	color: var(--brgol-texto-escuro);
}
.brgol-chute-intro-chance .fa-bullseye {
	color: var(--brgol-acento-verde-escuro);
}
.brgol-chute-chance-valor {
	font-family: var(--brgol-font-display);
	font-size: 18px;
	color: var(--brgol-acento-verde-escuro);
}
.brgol-chute-intro-chance .brgol-link-pill {
	margin-left: auto;
}
.brgol-chute-intro-dica {
	margin: 6px 0 0;
	font-size: 12px;
	color: var(--brgol-texto-suave-escuro);
}

/* Campo de chute (Pênalti/Falta) - reprodução fiel do jogo original
   (chutes.zip do FUTLEAGUEBR: chutes/penalty/media/css/style6.css e
   chutes/falta/media/css/style6.css). Todas as medidas são as do original,
   em px, num palco fixo 632x396 (o iframe onde o jogo rodava) que
   js/chutes.js escala pra largura disponível. Não converta pra % nem
   "ajuste" posição de goleiro/bola/seta aqui: já foram feitas várias
   calibrações à mão antes e todas ficaram desalinhadas - estes números
   vieram do original e batem medidos lado a lado com ele.
   Classes (não IDs) com prefixo brgol-pen-/brgol-falta- pra um jogo nunca
   herdar ajuste do outro (ver skill brgol-niveis). */
.brgol-chute-moldura {
	position: relative;
	width: 100%;
	max-width: 608px;
	aspect-ratio: 608 / 388;
	margin: 0 auto;
	overflow: hidden;
	border-radius: var(--brgol-raio);
	box-shadow: var(--brgol-sombra);
	background: #000;
}
.brgol-chute-moldura[hidden],
.brgol-chute-tela [hidden] {
	display: none !important;
}
.brgol-chute-tela {
	position: absolute;
	top: 0;
	left: 0;
	width: 632px;
	height: 396px;
	overflow: hidden;
	transform-origin: 0 0;
	/* Só aparece nas bordas da placa GOL/ERROU do pênalti (574px de
	   largura) - branco pra emendar com a placa, como na falta. */
	background: #fff;
}
.brgol-chute-resultado {
	max-width: 608px;
	margin: 16px auto 0;
	text-align: center;
	font-weight: bold;
	font-size: 16px;
	animation: brgolFadeUp 400ms ease-out both;
}

/* --- Pênalti --- */
.brgol-pen-fundot {
	position: absolute;
	top: 8px;
	left: 8px;
	width: 632px;
	height: 396px;
}
.brgol-pen-fundo {
	position: relative;
	width: 632px;
	height: 396px;
	background-image: url(../imagens/chutes/penalti/fundo_penalti.jpg);
	transform: translateX(-5%);
}
.brgol-pen-goleiro {
	position: absolute;
	top: -49px;
	left: 0;
	width: 632px;
	height: 396px;
	background: url(../imagens/chutes/penalti/RESPIRANDO.gif) no-repeat 0 0;
	z-index: 2;
	pointer-events: none;
}
.brgol-pen-bola {
	position: absolute;
	top: 340px;
	left: 301px;
	z-index: 50;
}
.brgol-pen-bola img {
	display: block;
	position: relative;
	z-index: 100;
}
/* GIF de defesa injetado no chute. Laterais ficam NA FRENTE da bola
   (z 200), a do meio ATRÁS (z 1) - igual ao original. */
.brgol-pen-defesa {
	position: absolute;
	top: -49px;
	left: 0;
	width: 632px;
	height: 396px;
	background-repeat: no-repeat;
	pointer-events: none;
}
.brgol-pen-defesa--esquerda,
.brgol-pen-defesa--direita {
	background-position: 0 35px;
	z-index: 200;
}
.brgol-pen-defesa--meio {
	background-position: 0 0;
	z-index: 1;
}
.brgol-pen-seta {
	position: absolute;
	top: 241px;
	width: 77px;
	height: 110px;
	padding: 0;
	border: 0;
	background: url(../imagens/chutes/penalti/seta.png);
	cursor: pointer;
	z-index: 300;
}
.brgol-pen-seta:hover {
	background-image: url(../imagens/chutes/penalti/seta_hover.png);
}
.brgol-pen-seta--esquerda { left: 162px; }
.brgol-pen-seta--meio { left: 288px; }
.brgol-pen-seta--direita { left: 413px; }
.brgol-pen-comemoracao {
	position: absolute;
	top: 0;
	left: 0;
	margin-left: 28px;
	width: 574px;
	height: 409px;
	z-index: 10;
}

/* --- Falta --- */
.brgol-falta-p {
	position: absolute;
	top: 8px;
	left: -22px;
	width: 632px;
	height: 396px;
	overflow: hidden;
	background: #000;
}
.brgol-falta-fundo {
	position: relative;
	z-index: 1;
	width: 632px;
	height: 396px;
	background: url(../imagens/chutes/falta/fundo_falta.jpg) no-repeat center -10px / cover;
}
.brgol-falta-goleiro,
.brgol-falta-barreira {
	position: absolute;
	top: 0;
	left: 0;
	width: 632px;
	height: 396px;
	background-size: cover;
	background-repeat: no-repeat;
	background-position: center;
	pointer-events: none;
}
.brgol-falta-goleiro {
	background-image: url(../imagens/chutes/falta/parado.gif);
	z-index: 8;
}
.brgol-falta-barreira {
	background-image: url(../imagens/chutes/falta/barreira_parado.png);
	z-index: 15;
}
.brgol-falta-seta {
	position: absolute;
	top: 241px;
	width: 77px;
	height: 110px;
	padding: 0;
	border: 0;
	background: url(../imagens/chutes/falta/seta.png) no-repeat center / contain;
	cursor: pointer;
	z-index: 20;
}
.brgol-falta-seta:hover {
	background-image: url(../imagens/chutes/falta/seta_hover.png);
}
.brgol-falta-seta--esquerda { left: 140px; }
.brgol-falta-seta--meio { left: 270px; }
.brgol-falta-seta--direita { left: 395px; }
.brgol-falta-bola {
	position: absolute;
	bottom: 9px;
	left: 296px;
	width: 44px;
	height: 44px;
	z-index: 10;
	transform: rotate(360deg);
	animation-timing-function: cubic-bezier(0.57, 0.4, 0.55, 1.17);
}
.brgol-falta-goool {
	position: absolute;
	top: 0;
	left: 0;
	z-index: 10000;
	display: flex;
	align-items: center;
	justify-content: center;
	width: 632px;
	height: 396px;
	background: #fff;
}
.brgol-falta-conteudo-gol {
	width: 100%;
	height: 100%;
	background-size: contain;
	background-repeat: no-repeat;
	background-position: 0% center;
}

/* Trajetórias da bola na falta (keyframes do original, mesmos valores) */
@keyframes brgol-falta-chute-direita {
	0% { transform: translate(50%, -50%) rotate(0deg); }
	20% { transform: translate(150px, -200px) scale(0.9) rotate(180deg); }
	30% { transform: translate(110px, -245px) scale(0.7) rotate(360deg); z-index: 0; }
	100% { transform: translate(110px, -180px) scale(0.6) rotate(540deg); z-index: 0; }
}
@keyframes brgol-falta-chute-direita-2 {
	0% { transform: translate(50%, -50%) rotate(0deg); }
	20% { transform: translate(120px, -260px) scale(0.9) rotate(180deg); }
	30% { transform: translate(110px, -245px) scale(0.7) rotate(360deg); z-index: 0; }
	100% { transform: translate(110px, -180px) scale(0.6) rotate(540deg); z-index: 0; }
}
@keyframes brgol-falta-chute-direita-3 {
	0% { transform: translate(50%, -50%) rotate(0deg); }
	20% { transform: translate(120px, -260px) scale(0.9) rotate(180deg); }
	30% { transform: translate(110px, -245px) scale(0.7) rotate(360deg); z-index: 0; }
	100% { transform: translate(110px, -190px) scale(0.6) rotate(540deg); z-index: 0; }
}
@keyframes brgol-falta-chute-direita-4 {
	0% { transform: translate(50%, -50%) rotate(0deg); }
	20% { transform: translate(120px, -230px) scale(0.9) rotate(180deg); }
	30% { transform: translate(110px, -235px) scale(0.7) rotate(360deg); z-index: 0; }
	100% { transform: translate(110px, -150px) scale(0.6) rotate(540deg); z-index: 0; }
}
@keyframes brgol-falta-chute-esquerda {
	0% { transform: translate(-50%, -50%) rotate(0deg); }
	20% { transform: translate(-150px, -200px) scale(0.9) rotate(180deg); }
	30% { transform: translate(-110px, -245px) scale(0.7) rotate(360deg); z-index: 0; }
	100% { transform: translate(-110px, -180px) scale(0.6) rotate(540deg); z-index: 0; }
}
@keyframes brgol-falta-chute-esquerda-2 {
	0% { transform: translate(-50%, -50%) rotate(0deg); }
	20% { transform: translate(-120px, -290px) scale(0.9) rotate(180deg); }
	30% { transform: translate(-110px, -275px) scale(0.7) rotate(360deg); z-index: 0; }
	100% { transform: translate(-110px, -180px) scale(0.6) rotate(540deg); z-index: 0; }
}
@keyframes brgol-falta-chute-esquerda-4 {
	0% { transform: translate(-50%, -50%) rotate(0deg); }
	20% { transform: translate(-95px, -200px) scale(0.9) rotate(180deg); }
	30% { transform: translate(-95px, -200px) scale(0.7) rotate(360deg); z-index: 0; }
	90% { transform: translate(-95px, -200px) scale(0.6) rotate(540deg); z-index: 0; }
	100% { transform: translate(-95px, -200px) scale(0) rotate(540deg); z-index: 0; }
}
@keyframes brgol-falta-chute-meio {
	0% { transform: translate(0px, -50%) rotate(0deg); }
	20% { transform: translate(0px, -250px) scale(0.9) rotate(180deg); }
	30% { transform: translate(0px, -250px) scale(0.7) rotate(360deg); z-index: 0; }
	100% { transform: translate(0px, -180px) scale(0.6) rotate(540deg); z-index: 0; }
}
@keyframes brgol-falta-chute-meio-2 {
	0% { transform: translate(0px, -50%) rotate(0deg); }
	20% { transform: translate(0px, -300px) scale(0.9) rotate(180deg); }
	30% { transform: translate(0px, -270px) scale(0.7) rotate(360deg); z-index: 0; }
	100% { transform: translate(0px, -180px) scale(0.6) rotate(540deg); z-index: 0; }
}
@keyframes brgol-falta-chute-meio-3 {
	0% { transform: translate(0px, -50%) rotate(0deg); }
	20% { transform: translate(0px, -230px) scale(0.9) rotate(180deg); }
	30% { transform: translate(0px, -220px) scale(0.7) rotate(360deg); z-index: 0; }
	100% { transform: translate(0px, -190px) scale(0.6) rotate(540deg); z-index: 0; }
}
@keyframes brgol-falta-chute-meio-4 {
	0% { transform: translate(0px, -50%) rotate(0deg); }
	20% { transform: translate(0px, -250px) scale(0.9) rotate(180deg); }
	30% { transform: translate(0px, -220px) scale(0.7) rotate(360deg); z-index: 0; }
	100% { transform: translate(0px, -180px) scale(0.6) rotate(540deg); z-index: 0; }
}
.brgol-falta-bola.brgol-falta-chutando { animation: brgol-falta-chute-direita 0.5s ease-out forwards; }
.brgol-falta-bola.brgol-falta-chutando_direita_2 { animation: brgol-falta-chute-direita-2 0.5s ease-out forwards; }
.brgol-falta-bola.brgol-falta-chutando_direita_3 { animation: brgol-falta-chute-direita-3 0.5s ease-out forwards; }
.brgol-falta-bola.brgol-falta-chutando_direita_4 { animation: brgol-falta-chute-direita-4 0.5s ease-out forwards; }
.brgol-falta-bola.brgol-falta-chutando-esquerda { animation: brgol-falta-chute-esquerda 0.7s ease-out forwards; }
.brgol-falta-bola.brgol-falta-chutando-esquerda-2 { animation: brgol-falta-chute-esquerda-2 0.7s ease-out forwards; }
.brgol-falta-bola.brgol-falta-chutando-esquerda-4 { animation: brgol-falta-chute-esquerda-4 0.7s ease-out forwards; }
.brgol-falta-bola.brgol-falta-chutando-meio { animation: brgol-falta-chute-meio 0.7s ease-out forwards; }
.brgol-falta-bola.brgol-falta-chutando-meio-2 { animation: brgol-falta-chute-meio-2 0.7s ease-out forwards; }
.brgol-falta-bola.brgol-falta-chutando-meio-3 { animation: brgol-falta-chute-meio-3 0.7s ease-out forwards; }
.brgol-falta-bola.brgol-falta-chutando-meio-4 { animation: brgol-falta-chute-meio-4 0.7s ease-out forwards; }

/* Pulo do goleiro na falta (keyframes do original, mesmos valores) */
@keyframes brgol-falta-goleiro-pulo-esquerda {
	0% { transform: translate(0, 0); }
	100% { transform: translate(-10px, 0px); }
}
@keyframes brgol-falta-goleiro-pulo-esquerda-2 {
	0% { transform: translate(0, 0); }
	50% { transform: translate(-5px, -25px); }
	100% { transform: translate(-5px, 0px); }
}
@keyframes brgol-falta-goleiro-pulo-esquerda-4 {
	0% { transform: translate(0, 0); }
	50% { transform: translate(-5px, -35px); }
	100% { transform: translate(-5px, 0px); }
}
@keyframes brgol-falta-goleiro-pulo-meio-3 {
	0% { transform: translate(0, 0); }
	30% { transform: translate(80px, -20px) rotate(10deg); }
	70% { transform: translate(100px, 0px); }
	100% { transform: translate(100px, 0px); }
}
@keyframes brgol-falta-goleiro-pulo-meio-4 {
	0% { transform: translate(0, 0); }
	50% { transform: translate(100px, 0px); }
	100% { transform: translate(100px, 0px); }
}
@keyframes brgol-falta-goleiro-pulo-direita {
	0% { transform: translate(0, 0); }
	20% { transform: translate(50px, -30px) rotate(50deg); }
	100% { transform: translate(130px, 70px) rotate(90deg); }
}
@keyframes brgol-falta-goleiro-pulo-direita-2 {
	0% { transform: translate(0, 0); }
	20% { transform: translate(50px, 0px) rotate(0deg); }
	100% { transform: translate(150px, 0px) rotate(0deg); }
}
@keyframes brgol-falta-goleiro-pulo-direita-3 {
	0% { transform: translate(0, 0); }
	60% { transform: translate(200px, 0px) rotate(0deg); }
	100% { transform: translate(200px, 0px) rotate(0deg); }
}
@keyframes brgol-falta-goleiro-pulo-direita-4 {
	0% { transform: translate(0, 0); }
	20% { transform: translate(50px, -30px) rotate(50deg); }
	80% { transform: translate(120px, 90px) rotate(90deg); }
	100% { transform: translate(120px, 90px) rotate(90deg); }
}
.brgol-falta-goleiro-pulando-esquerda { animation: brgol-falta-goleiro-pulo-esquerda 0.3s ease-out forwards; }
.brgol-falta-goleiro-pulando-esquerda-2 { animation: brgol-falta-goleiro-pulo-esquerda-2 0.3s ease-out forwards; }
.brgol-falta-goleiro-pulando-esquerda-4 { animation: brgol-falta-goleiro-pulo-esquerda-4 0.3s ease-out forwards; }
.brgol-falta-goleiro-pulando-meio-3 { animation: brgol-falta-goleiro-pulo-meio-3 0.7s ease-out forwards; }
.brgol-falta-goleiro-pulando-meio-4 { animation: brgol-falta-goleiro-pulo-meio-4 0.7s ease-out forwards; }
.brgol-falta-goleiro-pulando-direita { animation: brgol-falta-goleiro-pulo-direita 0.7s ease-out forwards; }
.brgol-falta-goleiro-pulando-direita-2 { animation: brgol-falta-goleiro-pulo-direita-2 0.7s ease-out forwards; }
.brgol-falta-goleiro-pulando-direita-3 { animation: brgol-falta-goleiro-pulo-direita-3 0.7s ease-out forwards; }
.brgol-falta-goleiro-pulando-direita-4 { animation: brgol-falta-goleiro-pulo-direita-4 0.7s ease-out forwards; }
.brgol-falta-goleiro.brgol-falta-goleiro-parado {
	background-image: url(../imagens/chutes/falta/DEFESA-MEIO.gif) !important;
}

/* ==========================================================================
   Golaço / subida de nível (paginas/gol.php) - primeiro "juice" real do
   jogo: até aqui tudo era estilo estático, sem sensação de conquista no
   momento de marcar gol ou subir de nível. Sequência: escudo entra com pop
   -> mensagem -> contador de gols sobe animado (js/golaco.js) -> se rolou
   level up, o card dele entra por último, depois de tudo. Respeita
   prefers-reduced-motion no fim do bloco.
   ========================================================================== */
.brgol-golaco-card,
.brgol-levelup-card {
	max-width: 420px;
	margin-left: auto;
	margin-right: auto;
}
.brgol-golaco-body {
	position: relative;
	padding-top: 28px;
	overflow: hidden;
	text-align: center;
}
.brgol-golaco-confete {
	position: absolute;
	inset: 0;
	pointer-events: none;
}
.brgol-confete {
	position: absolute;
	top: 46%;
	left: 50%;
	width: 8px;
	height: 8px;
	border: 2px solid var(--brgol-borda-forte);
	transform: translate(-50%, -50%);
	opacity: 0;
	animation: brgolConfeteEstoura 900ms ease-out forwards;
}
.brgol-confete:nth-child(1) { --ang: 0deg; background: var(--brgol-acento-verde); animation-delay: 0.05s; }
.brgol-confete:nth-child(2) { --ang: 36deg; background: var(--brgol-fundo-claro); animation-delay: 0.09s; }
.brgol-confete:nth-child(3) { --ang: 72deg; background: var(--brgol-acento-verde-claro); animation-delay: 0.03s; }
.brgol-confete:nth-child(4) { --ang: 108deg; background: var(--brgol-fundo-claro); animation-delay: 0.12s; }
.brgol-confete:nth-child(5) { --ang: 144deg; background: var(--brgol-acento-verde); animation-delay: 0.06s; }
.brgol-confete:nth-child(6) { --ang: 180deg; background: var(--brgol-fundo-claro); animation-delay: 0.1s; }
.brgol-confete:nth-child(7) { --ang: 216deg; background: var(--brgol-acento-verde-claro); animation-delay: 0.02s; }
.brgol-confete:nth-child(8) { --ang: 252deg; background: var(--brgol-fundo-claro); animation-delay: 0.14s; }
.brgol-confete:nth-child(9) { --ang: 288deg; background: var(--brgol-acento-verde); animation-delay: 0.07s; }
.brgol-confete:nth-child(10) { --ang: 324deg; background: var(--brgol-fundo-claro); animation-delay: 0.11s; }
@keyframes brgolConfeteEstoura {
	0% { opacity: 1; transform: translate(-50%, -50%) rotate(var(--ang)) translateX(0) rotate(0deg); }
	100% { opacity: 0; transform: translate(-50%, -50%) rotate(var(--ang)) translateX(70px) rotate(200deg); }
}

.brgol-golaco-escudo-link {
	display: inline-block;
	position: relative;
	z-index: 1;
}
.brgol-golaco-escudo {
	border-radius: 50%;
	border: 3px solid var(--brgol-borda-forte);
	background: var(--brgol-fundo-claro);
	animation: brgolEscudoPop 550ms cubic-bezier(0.34, 1.56, 0.64, 1) both;
}
@keyframes brgolEscudoPop {
	0% { transform: scale(0.2) rotate(-25deg); opacity: 0; }
	60% { transform: scale(1.15) rotate(6deg); opacity: 1; }
	100% { transform: scale(1) rotate(0deg); }
}

.brgol-golaco-msg {
	position: relative;
	z-index: 1;
	font-family: var(--brgol-font-display);
	font-size: 26px;
	letter-spacing: 0.4px;
	margin: 14px 0 4px;
	opacity: 0;
	animation: brgolFadeUp 400ms ease-out 300ms both;
}
.brgol-golaco-contador {
	position: relative;
	z-index: 1;
	font-size: 14px;
	color: var(--brgol-texto-suave-escuro);
	opacity: 0;
	animation: brgolFadeUp 400ms ease-out 450ms both;
}
.brgol-golaco-num {
	font-family: var(--brgol-font-display);
	font-size: 18px;
	color: var(--brgol-acento-verde-escuro);
	font-variant-numeric: tabular-nums;
}
@keyframes brgolFadeUp {
	from { opacity: 0; transform: translateY(8px); }
	to { opacity: 1; transform: translateY(0); }
}

.brgol-levelup-card {
	opacity: 0;
	transform: scale(0.85) translateY(10px);
	animation: brgolLevelUpIn 500ms cubic-bezier(0.34, 1.56, 0.64, 1) 900ms both;
}
.brgol-levelup-body {
	text-align: center;
	padding: 22px 16px;
}
.brgol-levelup-estrela {
	font-size: 28px;
	color: var(--brgol-acento-vip);
}
.brgol-levelup-titulo {
	font-family: var(--brgol-font-display);
	font-size: 15px;
	letter-spacing: 1px;
	text-transform: uppercase;
	color: var(--brgol-texto-suave-escuro);
	margin: 6px 0 0;
}
.brgol-levelup-num {
	font-family: var(--brgol-font-display);
	font-size: 34px;
	color: var(--brgol-acento-verde-escuro);
	margin: 0;
}
@keyframes brgolLevelUpIn {
	from { opacity: 0; transform: scale(0.85) translateY(10px); }
	to { opacity: 1; transform: scale(1) translateY(0); }
}

/* Card de prêmio (paginas/ler_mensagem.php, mensagem com de='BRgol') -
   reaproveita a mesma entrada "pop" do level up (brgolLevelUpIn), é o
   mesmo tipo de momento (recompensa que o jogador não estava vendo
   acontecer, ver skill brgol-campeonatos "Premiações automáticas" - até
   aqui prêmio nenhum avisava ninguém). */
.brgol-premio-card {
	opacity: 0;
	transform: scale(0.85) translateY(10px);
	animation: brgolLevelUpIn 500ms cubic-bezier(0.34, 1.56, 0.64, 1) both;
}
.brgol-premio-body {
	text-align: center;
	padding: 26px 20px;
}
.brgol-premio-trofeu {
	font-size: 32px;
	color: var(--brgol-acento-vip);
}
.brgol-premio-titulo {
	font-family: var(--brgol-font-display);
	font-size: 22px;
	letter-spacing: 0.5px;
	text-transform: uppercase;
	margin: 6px 0 2px;
}
.brgol-premio-texto {
	font-size: 15px;
	color: var(--brgol-texto-escuro);
	max-width: 40ch;
	margin: 8px auto 0;
}

@media (prefers-reduced-motion: reduce) {
	.brgol-confete,
	.brgol-golaco-escudo,
	.brgol-golaco-msg,
	.brgol-golaco-contador,
	.brgol-levelup-card,
	.brgol-premio-card,
	.brgol-chute-resultado,
	.brgol-stat-row--pop,
	.brgol-stat-valor-disponivel,
	.brgol-medidor--pop,
	.brgol-confronto-dot {
		animation: none !important;
		opacity: 1 !important;
		transform: none !important;
	}
	/* O campo de chute (brgol-pen-... e brgol-falta-...) fica de fora de
	   propósito: a animação é o próprio resultado do chute (e a da falta
	   depende do animationend da bola pra mostrar a placa de GOL/ERROU). */
	.brgol-medidor-fill,
	.brgol-confronto-medidor-casa,
	.brgol-confronto-medidor-fora {
		transition: none !important;
	}
}

/* ==========================================================================
   Responsividade para celular (pedido do usuário 2026-09-19 - "responsivisar
   o jogo inteiro para celular", homologação já com jogadores de verdade
   acessando pelo aparelho). Duas peças fizeram falta até aqui:
   1. `<meta name="viewport">` (ver index.php) - sem ela nada abaixo importa,
      o celular renderiza a página como desktop e só dá zoom out.
   2. A casca de 3 colunas (#esquerda 230px fixo / #centro / #direita 230px
      fixo, ver #conteudo) nunca teve breakpoint - abaixo, empilha as 3
      verticalmente, cada uma ocupando a largura cheia, na ordem que faz
      mais sentido pra jogar no celular: conteúdo principal primeiro (é o
      que a pessoa abriu o link pra ver), sidebar direito (Minha Conta/chat/
      avatar) segundo, menu esquerdo (navegação) por último - CSS `order`
      muda a ordem visual sem mexer no HTML/PHP.
   ========================================================================== */
@media (max-width: 880px) {
	#site {
		/* Metade do padding lateral do desktop (24px) - em ~375px de
		   largura, 24px de cada lado já é 13% da tela só de respiro. */
		padding: 0 10px 0;
	}
	#conteudo {
		flex-direction: column;
		gap: 14px;
	}
	#esquerda,
	#direita {
		width: 100%;
		flex: 1 1 auto;
	}
	#centro {
		width: 100%;
		order: -2;
	}
	#direita {
		order: -1;
	}
	#principal {
		max-width: 100%;
	}
	.brgol-rodada-status {
		flex-direction: column;
		align-items: flex-start;
		gap: 4px;
		padding: 10px 14px;
	}
}

/* Telas bem estreitas (a maioria dos celulares em retrato, ~360-400px) -
   ajustes finos de espaçamento/tamanho que 880px sozinho não cobre. */
@media (max-width: 480px) {
	.brgol-card-body {
		padding: 12px;
	}
	.brgol-topnav {
		padding: 6px;
		gap: 1px;
	}
	.brgol-topnav-item {
		padding: 8px 10px;
		font-size: 12px;
	}
	/* Tabelas cruas antigas (paginas/banir_usuario.php e outras telas do
	   Painel do Administrador) ainda usam `<table width="200">` no HTML -
	   isso força a tabela a estourar a largura da tela num celular
	   pequeno, puxando a página inteira pro lado (scroll horizontal do
	   body, o pior tipo de quebra). Essas telas são só de admin (baixa
	   prioridade de polimento visual), mas ninguém deveria conseguir
	   quebrar o layout do site inteiro por causa de uma tabela de
	   formulário legada. */
	table[width] {
		width: 100% !important;
	}
}

/* Segurança geral (todas as larguras) - nenhuma imagem deve conseguir
   estourar o container e forçar scroll horizontal da página, custe o que
   custar de qualquer atributo width/height fixo deixado num <img> antigo
   sem classe (ex: banners crus em paginas/como_jogar.php/duvidas.php).
   Ícones/avatares/escudos do jogo já declaram width/height fixos com um
   seletor de classe (ex: `.brgol-avatar img { height:100% }`) - isso tem
   mais especificidade que o `img` global aqui e continua ganhando, então
   nenhum deles é afetado por esta regra. */
img {
	max-width: 100%;
	height: auto;
}
