/* Estilos globais compartilhados por todas as páginas.
   Carregado depois do Tailwind CDN no <head> de cada página. */

/* ── Scrollbar ──────────────────────────────────────────────────────────
   Combina com o fundo do app (#0a0a0c) e usa o verde da marca com
   transparência no thumb, ficando mais opaco no hover. */

/* Firefox */
html {
  scrollbar-width: thin;
  scrollbar-color: #22C55E33 #0a0a0c;
}

/* Chrome/Edge/Safari */
::-webkit-scrollbar {
  width: 10px;
  height: 10px; /* barra horizontal (tabelas largas no financeiro/jogadores) */
}
::-webkit-scrollbar-track {
  background: #0a0a0c;
}
::-webkit-scrollbar-thumb {
  background: #22C55E33;
  border-radius: 6px;
}
::-webkit-scrollbar-thumb:hover {
  background: #22C55E66;
}

/* ── "Meu desempenho": estatísticas que reagem à altura do card ──────────
   (jogador.html — só de lg pra cima; o mobile tem tratamento próprio)

   O card fica lado a lado com "Rankings" num grid de 2 colunas. Os dois JÁ
   esticam sozinhos (align-items: stretch é o padrão do grid, e não há
   items-start/self-start em lugar nenhum) — o que sobrava vazio era o miolo:
   as 4 estatísticas ficam numa linha só de altura fixa, então todo espaço
   extra que o ranking cria virava buraco no rodapé do card.

   A correção é uma CONTAINER QUERY DE ALTURA, não JavaScript medindo nada:
   quando o miolo passa de 210px de altura, as 4 estatísticas viram 2x2 e se
   distribuem verticalmente. Como quem dita a altura é o ranking ao lado, isso
   passa a acompanhar sozinho o ranking crescer/encolher (mais ou menos
   jogadores, troca de aba, filtro de mês) — é reativo por construção.

   Por que id e não classe: o Tailwind via CDN injeta o <style> dele no fim do
   <head>, DEPOIS deste arquivo. Numa disputa de mesma especificidade (classe
   vs classe) `sm:grid-cols-4` venceria por ordem de fonte. O seletor de id
   ganha por especificidade e o resultado não depende dessa ordem. */
@media (min-width: 1024px) {
  #card-desempenho {
    display: flex;
    flex-direction: column;
  }

  #conteudo-desempenho {
    /* `size` (e não `inline-size`) porque a consulta é de ALTURA. O efeito
       colateral é que o conteúdo deixa de dimensionar este bloco, então o
       min-height abaixo é obrigatório: sem ele, um ranking vazio/curto faria
       o miolo colapsar e o texto vazaria pra fora do card.

       14rem = 224px, e não os 7rem de antes, porque o conteúdo cresceu: no
       estado de linha única são 58px de estatísticas + 20px de respiro +
       ~120px de painel da mensagem = ~198px, e o painel ganha mais uma linha
       (~18px) quando o detalhe quebra em duas — o que acontece já em 1024px de
       viewport. Com 7rem o miolo ficava menor que o conteúdo e a mensagem
       invadia o padding de baixo do card (medido: 10px pra fora).

       O preço é o card ter uma altura mínima maior que a do ranking ao lado
       quando a pelada tem 2-3 jogadores. É o lado certo do trade: sobra de
       alguns pixels no card vizinho (cuja lista é alinhada ao topo por
       natureza) contra texto vazando aqui. */
    container-type: size;
    container-name: desempenho;
    min-height: 14rem;

    flex: 1 1 auto;
    display: flex;
    flex-direction: column;

    /* Abaixo do limiar da container query o miolo continua esticado pelo card
       (que acompanha o ranking ao lado), mas o conteúdo ocupa só ~90px — o
       resto virava um vazio preso no rodapé, com estatísticas e mensagem
       grudadas no topo. Centrar distribui essa sobra em cima E embaixo, então
       o bloco fica flutuando no meio em vez de encostado numa borda só.
       `center` e não `space-between` de propósito: separar os dois filhos
       afastaria a linha divisória da mensagem, recriando o mesmo buraco que o
       ajuste do 2x2 (abaixo) veio eliminar. No estado alto isso não faz nada:
       #bloco-estatisticas ganha `flex: 1 1 auto` e come a sobra inteira, não
       deixando espaço livre pro justify-content distribuir. */
    justify-content: center;
  }

  /* ── Tipografia ampliada no desktop ──────────────────────────────────
     As classes Tailwind no markup (text-2xl / text-[11px]) são o tamanho do
     MOBILE, onde o card é estreito e não tem espaço sobrando. No desktop ele
     divide a linha com o card de Rankings e herda a altura dele — os mesmos
     números pequenos ficavam nadando no vazio. Aumentar aqui, e não trocando
     a classe no HTML, mantém o mobile intocado.

     Seletor com id pelo mesmo motivo do bloco acima: o Tailwind via CDN
     injeta o <style> dele DEPOIS deste arquivo, e numa disputa classe vs
     classe `text-2xl` venceria por ordem de fonte. */
  #bloco-estatisticas .valor-estatistica {
    font-size: 1.875rem; /* text-3xl */
    line-height: 1.2;
  }

  #bloco-estatisticas .rotulo-estatistica {
    font-size: 0.75rem; /* text-xs, era 11px */
  }

  /* ── A mensagem de destaque vira um PAINEL ────────────────────────────
     No mobile ela é um rodapé separado por um filete (mt-5 pt-5 border-t no
     markup) e está de bom tamanho. No desktop esse filete era o problema: a
     sobra de altura do card caía toda ABAIXO de uma frase de 12px, e o que
     se via era uma linha solta com um vazio embaixo.

     Como painel (mesma receita do #bloco-premio e do #area-confronto —
     fundo #0e0e11, borda gray-800, cantos arredondados) o espaço livre passa
     a ficar DENTRO de uma superfície desenhada, com a mensagem centrada
     nela. O vazio vira enquadramento em vez de buraco. O `border` completo
     substitui o border-top do Tailwind, e o padding substitui o pt-5. */
  #bloco-mensagem {
    margin-top: 1.25rem;
    padding: 1.25rem 1rem;
    border: 1px solid #1f2937; /* gray-800 */
    border-radius: 0.75rem;
    background: #0e0e11;

    display: flex;
    align-items: center;
    justify-content: center;

    /* `1 1 auto` nos DOIS estados (aqui e, com padding maior, dentro da
       container query): é o painel que come a sobra de altura do card, em
       qualquer altura. Sem o grow, a sobra voltava a ser distribuída pelo
       `justify-content: center` do miolo — metade acima das estatísticas,
       metade abaixo da mensagem — que é exatamente o buraco no rodapé que
       este bloco veio resolver. */
    flex: 1 1 auto;
  }

  #bloco-mensagem .mensagem-icone {
    font-size: 1.875rem;
  }

  #bloco-mensagem .mensagem-titulo {
    font-size: 1rem; /* text-base */
  }

  #bloco-mensagem .mensagem-detalhe {
    font-size: 0.8125rem;
  }

  /* Com o ranking cortado em 5 linhas (LINHAS_RANKING em js/gamificacao.js) o
     card tem só DOIS tamanhos reais, e eles caem em lados opostos deste
     limiar. Medido no navegador em 1440x900 (tests/testar_card_desempenho_navegador.py):

       pelada de 2-3 jogadores  ->  miolo de 224px (o min-height acima)
       pelada de 6+ jogadores   ->  miolo de 376px a 438px (top 5 + a linha do
                                    próprio jogador + o rodapé "Ver ranking
                                    completo")

     280px fica no meio dessa lacuna, com folga dos dois lados. Era 210px, o
     que hoje deixaria o limiar a 14px do estado curto (224px) — perto demais:
     um detalhe de mensagem que quebrasse numa linha a mais faria o card curto
     entrar no 2x2 sem ter altura pra ele. */
  @container desempenho (min-height: 280px) {
    #bloco-estatisticas {
      grid-template-columns: repeat(2, minmax(0, 1fr));
      flex: 1 1 auto;

      /* Duas linhas iguais + conteúdo centrado em cada uma, no lugar de
         `align-content: space-evenly`. Com space-evenly as linhas mantinham a
         altura do conteúdo e toda a folga virava UM vão grande no meio, o que
         lia como duas faixas soltas em vez de um bloco só. Com 1fr cada linha
         fica com metade da altura e o espaço se distribui ao redor de cada
         célula — as quatro estatísticas viram quadrantes de um bloco coeso. */
      grid-template-rows: repeat(2, minmax(0, 1fr));
      align-items: center;

      /* Teto do bloco. Enquanto o ranking crescia sem limite, deixar as
         estatísticas esticarem era o certo: a alternativa era vazio preso no
         rodapé. Agora que o teto é conhecido, esticar vira o problema — no card
         de 522px as duas linhas se afastavam 145px uma da outra e as quatro
         estatísticas liam como números soltos nos cantos, não como um bloco.

         11rem no lugar dos 10rem originais porque o conteúdo de cada célula
         cresceu (valor em 2.25rem + rótulo em 0.875rem): o teto acompanha a
         tipografia pra que a folga entre as duas linhas continue na mesma
         escala do respiro horizontal entre as colunas. O que sobrar de altura
         NÃO vira buraco — quem come a sobra agora é o painel da mensagem
         (#bloco-mensagem, logo abaixo). */
      max-height: 11rem;
    }

    /* Números e rótulos maiores ainda no estado alto: aqui cada célula é um
       quadrante de meia largura do card, então há espaço horizontal de sobra
       — o que não havia na linha única de 4 colunas. */
    #bloco-estatisticas .valor-estatistica {
      font-size: 2.25rem; /* text-4xl */
    }

    #bloco-estatisticas .rotulo-estatistica {
      font-size: 0.875rem; /* text-sm */
    }

    /* O `flex: 1 1 auto` vem do bloco de fora e é o que resolve a sobra: aqui
       ele estica o painel até o rodapé do miolo e a mensagem fica centrada no
       meio do que sobrou, em vez de o `justify-content: center` do
       #conteudo-desempenho espalhar ~150px de vazio em cima das estatísticas e
       embaixo da mensagem. O que muda no estado alto é só o respiro interno,
       proporcional ao painel maior. */
    #bloco-mensagem {
      padding: 1.5rem;
    }

    #bloco-mensagem .mensagem-icone {
      font-size: 2.5rem;
    }

    #bloco-mensagem .mensagem-titulo {
      font-size: 1.25rem; /* text-xl */
    }

    #bloco-mensagem .mensagem-detalhe {
      font-size: 0.9375rem;
    }

    /* Largura de leitura: sem teto, o detalhe (a frase mais longa das três)
       se esticava de ponta a ponta do card e virava uma linha só, longa e
       rasa. Com o teto ele quebra em 2–3 linhas centradas, que é o que dá
       corpo ao painel. O gap acompanha o aumento de tipografia. */
    #mensagem-motivacional {
      gap: 0.5rem;
      max-width: 24rem;
    }
  }
}
