/**
 * Poupex Play 4.0 — Jogos
 * Namespace: .pp4-* / --pp4-*  ·  Escopo: .pp4-games
 *
 * Sprint 10 do redesign visual.
 *
 * ------------------------------------------------------------------
 * ESTE ARQUIVO NÃO É "O CSS DA TELA DE JOGOS"
 * ------------------------------------------------------------------
 * É o componente de *catálogo jogável* da plataforma. `.pp4-game-card`
 * não sabe o que é Dominó: recebe capa, título, descrição, um par de
 * indicadores e um CTA. Dominó, Truco, Cacheta, Dados, Super Poupex e
 * qualquer jogo futuro usam a mesma peça — a instrução do Sprint foi
 * explícita: "Não criar componentes exclusivos para apenas um jogo."
 *
 * Reaproveitados de outros arquivos, sem cópia local:
 *   tabs.css      .task-tabs / .task-tab     filtros de categoria
 *   activity.css  .pp4-act-empty             categoria sem jogos
 *   activity.css  .pp4-act-skeleton          carregamento
 *   activity.css  .pp4-act-progress__bar     barra de XP do jogador
 *   shell.css     .page-header               cabeçalho (via parcial)
 *
 * ------------------------------------------------------------------
 * CONVIVÊNCIA COM `assets/css/jogos-hub.css`
 * ------------------------------------------------------------------
 * `jogos.php` injeta `jogos-hub.css` por `<link>` no corpo, portanto
 * DEPOIS de tudo que `_top.php` carrega. Aquele arquivo continua sendo
 * necessário: além do hub ele estiliza o lobby de Damas
 * (`.jogos-damas-lobby`, `.jogos-lobby-toolbar`) e as páginas de jogo
 * (`.jogos-game-page--*`, `.jogos-game-shell__*`). Não foi removido.
 *
 * A boa notícia é que ele não tem uma única declaração `!important` nem
 * um seletor composto — tudo é 0,1,0. Qualquer regra aqui, com o escopo
 * `.pp4-games` na frente, chega a 0,2,0 e vence por especificidade,
 * independentemente da ordem de carregamento.
 *
 * ------------------------------------------------------------------
 * ESTADOS DE SELO
 * ------------------------------------------------------------------
 * O Sprint pediu quatro: Novo, Popular, Em breve e Favorito. Os quatro
 * existem abaixo. Três têm origem real nos dados:
 *
 *   Em breve   `status === 'em_breve'` no catálogo
 *   Ao vivo    `jogadores_online > 0`
 *   Popular    maior `jogadores_online` do catálogo, quando > 0
 *   Favorito   `GamePlayer::profile()['favoriteGame']`
 *
 * `--novo` fica definido e SEM USO: não existe data de publicação de
 * jogo em lugar nenhum do catálogo nem do banco, e marcar um jogo como
 * novo por chute seria inventar informação. No dia em que o catálogo
 * ganhar esse campo, o selo já está pronto.
 */

/* ============================================================
   1 · CONTÊINER
   ============================================================ */

.pp4-games {
  display: flex;
  flex-direction: column;
  gap: var(--pp4-space-6);
  width: 100%;
  min-width: 0;
  color: var(--pp4-color-text);
}

/* O invólucro herdado traz padding e fundo próprios. */
.pp4-games.jogos-hub,
.pp4-games.bo-dashboard {
  padding: 0;
  margin: 0;
  background: none;
  border: 0;
}

.pp4-games .jogos-hub__section,
.pp4-games .bo-section {
  display: contents;
  padding: 0;
  margin: 0;
  background: none;
  border: 0;
  /* `display: contents` já tira o elemento do fluxo, mas a borda dourada
     continua computada e a varredura de cor acusa. A origem é
     `brand-theme.css:769` (`.shell--app .bo-section`, 0,2,0 !important),
     que empata com o seletor daqui — daí o `!important`. */
  border-color: transparent !important;
  box-shadow: none;
}

.pp4-games [hidden] { display: none !important; }

/* `.shell--app p` = 0,1,1 (creme). Aqui 0,2,1. */
.pp4-games p { color: var(--pp4-color-text-muted) !important; }

/* ============================================================
   2 · SEÇÃO  →  design-system/section.css
   ============================================================

   Movido no Sprint 11. `.pp4-games-section` nunca teve nada de jogos:
   é título de faixa com contagem e complemento. O Hub de Mini Apps
   precisava do mesmo componente, e essa seria a segunda cópia. Agora
   chama-se `.pp4-sec*` e vive em section.css. */

/* ============================================================
   3 · HERÓI DO JOGADOR
   ============================================================

   Substitui o cabeçalho "Escolha seu jogo", que era decorativo. Todos
   os números aqui já eram calculados por `GamePlayer::profile()` e
   `GameRanking::forUser()` — a tela antiga descartava quase todos. */

.pp4-games-hero {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  align-items: center;
  gap: var(--pp4-space-5);
  padding: var(--pp4-space-6);
  border: 1px solid rgba(91, 140, 255, 0.28);
  border-radius: var(--pp4-radius-lg);
  background: linear-gradient(135deg, #123bf9 0%, #0b1f8f 58%, #0a0e17 100%);
  overflow: hidden;
}

.pp4-games-hero__avatar {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 64px;
  height: 64px;
  border: 1px solid rgba(255, 255, 255, 0.22);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.12);
  color: #ffffff !important;
  font-size: var(--pp4-text-xl);
  font-weight: var(--pp4-weight-bold);
}

.pp4-games-hero__body {
  display: flex;
  flex-direction: column;
  gap: var(--pp4-space-2);
  min-width: 0;
}

.pp4-games-hero__name,
html[data-theme] .pp4-games-hero__name {
  margin: 0 !important;
  color: #ffffff !important;
  font-size: var(--pp4-text-2xl);
  font-weight: var(--pp4-weight-bold);
  letter-spacing: -0.01em;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.pp4-games-hero__tags {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: var(--pp4-space-2);
}

.pp4-games-hero__tag {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px var(--pp4-space-3);
  border-radius: var(--pp4-radius-pill);
  background: rgba(255, 255, 255, 0.14);
  color: #ffffff !important;
  font-size: var(--pp4-text-sm);
  font-weight: var(--pp4-weight-semibold);
}

.pp4-games-hero__tag--patent { background: var(--pp4-color-success); color: var(--pp4-color-success-ink) !important; }

/* Progresso de nível — `.pp4-act-progress__bar` / `__fill` vêm de
   activity.css; aqui só a legenda e a largura. */
.pp4-games-hero__xp {
  display: flex;
  flex-direction: column;
  gap: 5px;
  max-width: 360px;
}

.pp4-games-hero__xp-label {
  display: flex;
  justify-content: space-between;
  gap: var(--pp4-space-3);
  color: rgba(255, 255, 255, 0.72) !important;
  font-size: var(--pp4-text-xs);
  font-variant-numeric: tabular-nums;
}

.pp4-games-hero .pp4-act-progress__bar { background: rgba(255, 255, 255, 0.18); }

.pp4-games-hero__stats {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--pp4-space-3);
  flex: 0 0 auto;
}

.pp4-games-hero__stat {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 2px;
  min-width: 78px;
  padding: var(--pp4-space-3);
  border: 1px solid rgba(255, 255, 255, 0.14);
  border-radius: var(--pp4-radius-md);
  background: rgba(255, 255, 255, 0.08);
}

.pp4-games-hero__stat-value {
  color: #ffffff !important;
  font-size: var(--pp4-text-xl);
  font-weight: var(--pp4-weight-bold);
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}

.pp4-games-hero__stat-label {
  color: rgba(255, 255, 255, 0.68) !important;
  font-size: var(--pp4-text-xs);
  text-transform: uppercase;
  letter-spacing: 0.04em;
  text-align: center;
}

/* ============================================================
   4 · CARTÃO DE JOGO — o componente reutilizável
   ============================================================

   Estrutura mínima esperada:

     <article class="pp4-game-card">
       <div class="pp4-game-card__media" data-glyph="…">
         <span class="pp4-game-badges">…</span>
       </div>
       <div class="pp4-game-card__body">
         <h3 class="pp4-game-card__title">…</h3>
         <p  class="pp4-game-card__desc">…</p>
         <ul class="pp4-game-card__meta">…</ul>
         <a  class="pp4-game-card__cta">…</a>
       </div>
     </article>

   Nada aqui presume um jogo específico. A capa é uma superfície com
   gradiente por variante `--accent-*`; o glifo é conteúdo. */

.pp4-games-grid {
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(240px, 1fr));
  gap: var(--pp4-space-4);
  padding: 0;
  margin: 0;
  list-style: none;
}

/* Sem isto o <li> não estica e cartões com descrição de duas linhas
   ficam mais altos que os vizinhos na mesma fileira. */
.pp4-games-grid > li {
  display: flex;
  min-width: 0;
}

.pp4-games-grid > li > .pp4-game-card { width: 100%; }

.pp4-game-card,
html[data-theme] .pp4-game-card {
  display: flex;
  flex-direction: column;
  min-width: 0;
  padding: 0 !important;
  margin: 0 !important;
  border: 1px solid var(--pp4-color-border) !important;
  border-radius: var(--pp4-radius-lg) !important;
  background: var(--pp4-color-surface) !important;
  background-image: none !important;
  box-shadow: none !important;
  overflow: hidden;
  transition:
    border-color var(--pp4-duration) var(--pp4-ease),
    transform var(--pp4-duration-fast) var(--pp4-ease);
}

.pp4-game-card:hover {
  border-color: var(--pp4-color-blue-bright) !important;
  transform: translateY(-2px);
}

.pp4-game-card--soon { opacity: 0.78; }
.pp4-game-card--soon:hover { transform: none; }

/* --- Capa ------------------------------------------------------------ */

.pp4-game-card__media {
  position: relative;
  display: flex;
  align-items: center;
  justify-content: center;
  aspect-ratio: 16 / 10;
  border-bottom: 1px solid var(--pp4-color-border);
  background: var(--pp4-color-surface-2);
  overflow: hidden;
}

.pp4-game-card__glyph {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 62px;
  height: 62px;
  border: 1px solid rgba(255, 255, 255, 0.16);
  border-radius: 18px;
  background: rgba(255, 255, 255, 0.1);
  color: #ffffff !important;
  font-size: 1.75rem;
  font-weight: var(--pp4-weight-bold);
  line-height: 1;
  backdrop-filter: blur(2px);
}

.pp4-game-card__glyph svg { width: 30px; height: 30px; }

/* Variantes de acento. Os nomes (`gold`, `emerald`, `ruby`, `sapphire`,
   `amber`) vêm do catálogo em `lib/jogos_hub.php` e são preservados —
   mexer neles seria alterar dados. O que muda é a cor que cada um
   produz: tudo passa a derivar do Azul Royal e do Verde Neon, e o
   acento `gold` deixa de ser dourado. */
.pp4-game-card--gold     .pp4-game-card__media { background: linear-gradient(140deg, #1b47ff 0%, #0d1b52 100%); }
.pp4-game-card--emerald  .pp4-game-card__media { background: linear-gradient(140deg, #00b45c 0%, #06301f 100%); }
.pp4-game-card--ruby     .pp4-game-card__media { background: linear-gradient(140deg, #5b8cff 0%, #131c3a 100%); }
.pp4-game-card--sapphire .pp4-game-card__media { background: linear-gradient(140deg, #123bf9 0%, #0a0e17 100%); }
.pp4-game-card--amber    .pp4-game-card__media { background: linear-gradient(140deg, #00e676 0%, #0b3d27 100%); }

/* --- Selos ----------------------------------------------------------- */

.pp4-game-badges {
  position: absolute;
  top: var(--pp4-space-3);
  left: var(--pp4-space-3);
  right: var(--pp4-space-3);
  display: flex;
  flex-wrap: wrap;
  align-items: flex-start;
  gap: 6px;
}

.pp4-game-badge {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  padding: 3px var(--pp4-space-2);
  border-radius: var(--pp4-radius-pill);
  font-size: var(--pp4-text-xs);
  font-weight: var(--pp4-weight-bold);
  letter-spacing: 0.03em;
  text-transform: uppercase;
  white-space: nowrap;
  backdrop-filter: blur(3px);
}

.pp4-game-badge--live {
  background: var(--pp4-color-success);
  color: var(--pp4-color-success-ink) !important;
}

/* Ponto pulsante do "ao vivo". */
.pp4-game-badge--live::before {
  content: "";
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: currentColor;
  animation: pp4-game-pulse 1.8s var(--pp4-ease) infinite;
}

@keyframes pp4-game-pulse {
  0%, 100% { opacity: 1; transform: scale(1); }
  50%      { opacity: 0.35; transform: scale(0.72); }
}

.pp4-game-badge--popular {
  background: rgba(10, 14, 23, 0.72);
  color: #ffffff !important;
}

.pp4-game-badge--soon {
  background: rgba(10, 14, 23, 0.72);
  color: rgba(255, 255, 255, 0.78) !important;
}

/* Definido para quando o catálogo tiver data de publicação. Sem uso hoje. */
.pp4-game-badge--novo {
  background: var(--pp4-color-blue);
  color: #ffffff !important;
}

.pp4-game-badge--fav {
  margin-left: auto;
  padding: 3px 7px;
  background: rgba(10, 14, 23, 0.72);
  color: var(--pp4-color-warning) !important;
}

/* --- Corpo ----------------------------------------------------------- */

.pp4-game-card__body {
  display: flex;
  flex-direction: column;
  gap: var(--pp4-space-3);
  flex: 1 1 auto;
  padding: var(--pp4-space-4) var(--pp4-space-4) var(--pp4-space-5);
}

.pp4-game-card__title,
html[data-theme] .pp4-game-card__title {
  margin: 0 !important;
  color: var(--pp4-color-text) !important;
  font-size: var(--pp4-text-lg);
  font-weight: var(--pp4-weight-bold);
  line-height: 1.2;
}

.pp4-game-card__desc,
html[data-theme] .pp4-game-card__desc {
  margin: 0 !important;
  color: var(--pp4-color-text-muted) !important;
  font-size: var(--pp4-text-sm);
  line-height: var(--pp4-leading-snug);
}

.pp4-game-card__meta {
  display: flex;
  gap: var(--pp4-space-4);
  padding: 0 !important;
  margin: 0 !important;
  margin-top: auto !important;
  list-style: none;
}

.pp4-game-card__meta li {
  display: flex;
  flex-direction: column;
  gap: 1px;
  min-width: 0;
}

.pp4-game-card__meta-label {
  color: var(--pp4-color-text-subtle) !important;
  font-size: var(--pp4-text-xs);
  text-transform: uppercase;
  letter-spacing: 0.04em;
}

.pp4-game-card__meta-value {
  color: var(--pp4-color-text) !important;
  font-size: var(--pp4-text-md);
  font-weight: var(--pp4-weight-bold);
  font-variant-numeric: tabular-nums;
}

.pp4-game-card__meta-value--live { color: var(--pp4-color-success) !important; }

/* --- CTA -------------------------------------------------------------
   O botão dourado vinha de `.jogos-hub-card__cta` (0,1,0). */

.pp4-game-card__cta,
html[data-theme] .pp4-game-card__cta {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--pp4-space-2);
  min-height: var(--pp4-control-md);
  padding: 0 var(--pp4-space-4) !important;
  border: 0 !important;
  border-radius: var(--pp4-radius-md) !important;
  background: var(--pp4-color-blue) !important;
  background-image: none !important;
  color: #ffffff !important;
  font-family: inherit;
  font-size: var(--pp4-text-md);
  font-weight: var(--pp4-weight-semibold);
  text-decoration: none;
  box-shadow: none !important;
  transition: background var(--pp4-duration) var(--pp4-ease);
}

.pp4-game-card__cta svg { width: 18px; height: 18px; }

.pp4-game-card__cta:hover { background: #0f2ea8 !important; }

.pp4-game-card__cta:focus-visible {
  outline: 2px solid var(--pp4-color-blue-bright);
  outline-offset: 2px;
}

.pp4-game-card__cta--soon,
html[data-theme] .pp4-game-card__cta--soon {
  background: var(--pp4-color-surface-2) !important;
  color: var(--pp4-color-text-muted) !important;
  cursor: default;
  pointer-events: none;
}

/* ============================================================
   5 · FAIXA "CONTINUE JOGANDO"
   ============================================================

   Cartão compacto, horizontal. Usa a mesma paleta de acentos do
   `.pp4-game-card`, e por isso `--gold`, `--emerald` etc. valem aqui
   também — qualquer jogo futuro entra sem CSS novo. */

.pp4-games-resume {
  display: grid;
  /* 320px: "Última partida há 16 dias" precisa caber em uma linha ao
     lado da miniatura, do selo de resultado e da seta. */
  grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
  gap: var(--pp4-space-3);
  padding: 0;
  margin: 0;
  list-style: none;
}

.pp4-games-resume > li { display: flex; min-width: 0; }
.pp4-games-resume > li > .pp4-games-resume__item { width: 100%; }

.pp4-games-resume__item,
html[data-theme] .pp4-games-resume__item {
  display: flex;
  align-items: center;
  gap: var(--pp4-space-3);
  min-width: 0;
  padding: var(--pp4-space-3) !important;
  border: 1px solid var(--pp4-color-border) !important;
  border-radius: var(--pp4-radius-md) !important;
  background: var(--pp4-color-surface) !important;
  background-image: none !important;
  box-shadow: none !important;
  text-decoration: none;
  transition: border-color var(--pp4-duration) var(--pp4-ease), background var(--pp4-duration) var(--pp4-ease);
}

.pp4-games-resume__item:hover,
html[data-theme] .pp4-games-resume__item:hover {
  border-color: var(--pp4-color-blue-bright) !important;
  background: var(--pp4-color-surface-2) !important;
}

.pp4-games-resume__item:focus-visible {
  outline: 2px solid var(--pp4-color-blue-bright);
  outline-offset: 2px;
}

.pp4-games-resume__thumb {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  width: 48px;
  height: 48px;
  border-radius: var(--pp4-radius-sm);
  color: #ffffff !important;
  font-size: var(--pp4-text-lg);
  font-weight: var(--pp4-weight-bold);
}

.pp4-games-resume__item.pp4-game-card--gold     .pp4-games-resume__thumb { background: linear-gradient(140deg, #1b47ff, #0d1b52); }
.pp4-games-resume__item.pp4-game-card--emerald  .pp4-games-resume__thumb { background: linear-gradient(140deg, #00b45c, #06301f); }
.pp4-games-resume__item.pp4-game-card--ruby     .pp4-games-resume__thumb { background: linear-gradient(140deg, #5b8cff, #131c3a); }
.pp4-games-resume__item.pp4-game-card--sapphire .pp4-games-resume__thumb { background: linear-gradient(140deg, #123bf9, #0a0e17); }
.pp4-games-resume__item.pp4-game-card--amber    .pp4-games-resume__thumb { background: linear-gradient(140deg, #00e676, #0b3d27); }

.pp4-games-resume__body {
  display: flex;
  flex-direction: column;
  gap: 1px;
  flex: 1 1 auto;
  min-width: 0;
}

.pp4-games-resume__name {
  color: var(--pp4-color-text) !important;
  font-size: var(--pp4-text-md);
  font-weight: var(--pp4-weight-semibold);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.pp4-games-resume__when {
  color: var(--pp4-color-text-muted) !important;
  font-size: var(--pp4-text-sm);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

.pp4-games-resume__result {
  flex: 0 0 auto;
  padding: 2px var(--pp4-space-2);
  border-radius: var(--pp4-radius-pill);
  font-size: var(--pp4-text-xs);
  font-weight: var(--pp4-weight-bold);
  text-transform: uppercase;
  letter-spacing: 0.03em;
}

.pp4-games-resume__result--win {
  background: rgba(0, 230, 118, 0.16);
  color: var(--pp4-color-success) !important;
}

.pp4-games-resume__result--loss {
  background: var(--pp4-color-surface-3);
  color: var(--pp4-color-text-muted) !important;
}

.pp4-games-resume__result--draw {
  background: var(--pp4-color-surface-3);
  color: var(--pp4-color-text-muted) !important;
}

.pp4-games-resume__chev {
  width: 18px;
  height: 18px;
  flex: 0 0 auto;
  color: var(--pp4-color-text-subtle) !important;
}

/* ============================================================
   6 · CARTEIRA DE FICHAS
   ============================================================ */

.pp4-games-chips {
  display: flex;
  align-items: center;
  gap: var(--pp4-space-4);
  flex-wrap: wrap;
  padding: var(--pp4-space-4) var(--pp4-space-5);
  border: 1px solid var(--pp4-color-border);
  border-radius: var(--pp4-radius-lg);
  background: var(--pp4-color-surface);
}

.pp4-games-chips__value {
  display: flex;
  flex-direction: column;
  gap: 1px;
}

.pp4-games-chips__amount {
  color: var(--pp4-color-text) !important;
  font-size: var(--pp4-text-2xl);
  font-weight: var(--pp4-weight-bold);
  line-height: 1.1;
  font-variant-numeric: tabular-nums;
}

.pp4-games-chips__label {
  color: var(--pp4-color-text-muted) !important;
  font-size: var(--pp4-text-sm);
}

.pp4-games-chips__cost {
  margin-left: auto;
  color: var(--pp4-color-text-muted) !important;
  font-size: var(--pp4-text-sm);
}

.pp4-games-chips__cost strong { color: var(--pp4-color-text) !important; }

/* ============================================================
   7 · RANKING
   ============================================================

   `.gc-scoreboard` vem de `gamecore.css`, compartilhado com as telas
   de jogo. Escopado em `.pp4-games` para não afetar as partidas. */

.pp4-games .gc-scoreboard {
  display: flex;
  flex-direction: column;
  gap: 0;
  padding: 0;
  border: 1px solid var(--pp4-color-border);
  border-radius: var(--pp4-radius-lg);
  background: var(--pp4-color-surface);
  overflow: hidden;
}

.pp4-games .gc-scoreboard__row,
html[data-theme] .pp4-games .gc-scoreboard__row {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--pp4-space-3);
  padding: var(--pp4-space-3) var(--pp4-space-4) !important;
  border: 0 !important;
  border-bottom: 1px solid var(--pp4-color-border) !important;
  background: transparent !important;
  color: var(--pp4-color-text) !important;
  font-size: var(--pp4-text-md);
}

.pp4-games .gc-scoreboard__row:last-child { border-bottom: 0 !important; }

/* A linha do próprio jogador. */
.pp4-games .gc-scoreboard__row--me,
html[data-theme] .pp4-games .gc-scoreboard__row--me {
  background: var(--pp4-color-blue-soft) !important;
  font-weight: var(--pp4-weight-semibold);
}

.pp4-games-rank__pos {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex: 0 0 auto;
  min-width: 28px;
  height: 24px;
  padding: 0 6px;
  border-radius: var(--pp4-radius-sm);
  background: var(--pp4-color-surface-3);
  color: var(--pp4-color-text-muted) !important;
  font-size: var(--pp4-text-sm);
  font-weight: var(--pp4-weight-bold);
  font-variant-numeric: tabular-nums;
}

/* Pódio: 1º recebe Verde Neon, 2º e 3º ficam em azul decrescente.
   Nada de ouro/prata/bronze — sairia da identidade. */
.pp4-games-rank__pos--1 { background: var(--pp4-color-success); color: var(--pp4-color-success-ink) !important; }
.pp4-games-rank__pos--2 { background: var(--pp4-color-blue); color: #ffffff !important; }
.pp4-games-rank__pos--3 { background: rgba(18, 59, 249, 0.4); color: #ffffff !important; }

.pp4-games-rank__name {
  flex: 1 1 auto;
  min-width: 0;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* `gamecore.css` pinta o ELO de dourado. */
.pp4-games .gc-scoreboard__elo,
html[data-theme] .pp4-games .gc-scoreboard__elo {
  flex: 0 0 auto;
  color: var(--pp4-color-text-muted) !important;
  font-size: var(--pp4-text-sm);
  font-weight: var(--pp4-weight-semibold);
  font-variant-numeric: tabular-nums;
}

/* ============================================================
   8 · ESQUELETO DE CARREGAMENTO
   ============================================================

   `.pp4-act-skeleton` (activity.css) já traz a animação e a cor. Aqui
   só o formato de um cartão de jogo, para a faixa não “pular” quando
   os dados chegarem. */

.pp4-game-card-skeleton {
  display: flex;
  flex-direction: column;
  border: 1px solid var(--pp4-color-border);
  border-radius: var(--pp4-radius-lg);
  background: var(--pp4-color-surface);
  overflow: hidden;
}

.pp4-game-card-skeleton__media { aspect-ratio: 16 / 10; }

.pp4-game-card-skeleton__body {
  display: flex;
  flex-direction: column;
  gap: var(--pp4-space-2);
  padding: var(--pp4-space-4);
}

.pp4-game-card-skeleton__line { height: 12px; border-radius: var(--pp4-radius-sm); }
.pp4-game-card-skeleton__line--sm { width: 55%; }
.pp4-game-card-skeleton__line--cta { height: 40px; margin-top: var(--pp4-space-2); }

/* ============================================================
   9 · COR DOS LINKS — espelhos das regras genéricas
   ============================================================

   `brand-theme.css:644` = 0,7,1 !important e `:808` = 0,8,1 !important
   pintam todo `<a>` do conteúdo de dourado. As duas âncoras do lobby
   são links, então precisam da cadeia completa (0,10,1). */

.pp4-shell .content .pp4-games a.pp4-game-card__cta:not(.app-sidebar__link):not(.app-topbar__deposit):not(.dep-submit):not(.pp-painel-btn):not(.page-header__back):not(.app-topbar__tab) {
  color: #ffffff !important;
}

.pp4-shell .content .pp4-games a.pp4-games-resume__item:not(.app-sidebar__link):not(.app-topbar__deposit):not(.dep-submit):not(.pp-painel-btn):not(.page-header__back):not(.app-topbar__tab) {
  color: var(--pp4-color-text) !important;
}

.pp4-shell .content .pp4-games a.pp4-game-card__cta--soon:not(.app-sidebar__link):not(.app-topbar__deposit):not(.dep-submit):not(.pp-painel-btn):not(.page-header__back):not(.app-topbar__tab) {
  color: var(--pp4-color-text-muted) !important;
}

/* ============================================================
   10 · RESPONSIVIDADE
   ============================================================ */

@media (max-width: 1279px) {
  .pp4-games-hero { grid-template-columns: auto minmax(0, 1fr); }
  .pp4-games-hero__stats { grid-column: 1 / -1; grid-template-columns: repeat(3, minmax(0, 1fr)); }
}

@media (max-width: 1023px) {
  .pp4-games-grid { grid-template-columns: repeat(auto-fill, minmax(212px, 1fr)); }
}

@media (max-width: 767px) {
  .pp4-games { gap: var(--pp4-space-5); }

  .pp4-games-hero {
    grid-template-columns: minmax(0, 1fr);
    gap: var(--pp4-space-4);
    padding: var(--pp4-space-5);
  }
  .pp4-games-hero__avatar { width: 52px; height: 52px; }
  .pp4-games-hero__name { font-size: var(--pp4-text-xl); }
  .pp4-games-hero__xp { max-width: none; }
  .pp4-games-hero__stat { min-width: 0; padding: var(--pp4-space-2); }
  .pp4-games-hero__stat-value { font-size: var(--pp4-text-lg); }

  /* Duas colunas a 390px: cada capa fica com ~171px e o título de uma
     palavra cabe. Abaixo disso a grade vira coluna única. */
  .pp4-games-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: var(--pp4-space-3); }
  .pp4-game-card__body { padding: var(--pp4-space-3) var(--pp4-space-3) var(--pp4-space-4); }
  .pp4-game-card__title { font-size: var(--pp4-text-md); }
  .pp4-game-card__glyph { width: 48px; height: 48px; font-size: 1.35rem; }

  /* Numa capa de ~171px os dois selos não cabem lado a lado, quebram
     para a segunda linha e cobrem o glifo. "Ao vivo" carrega mais
     informação que "Popular" (é um número, e o número é a razão de o
     jogo ser popular), então o segundo sai quando os dois coexistem. */
  .pp4-game-badges { flex-wrap: nowrap; }
  .pp4-game-badge--live ~ .pp4-game-badge--popular { display: none; }
  .pp4-game-badge { font-size: 0.62rem; padding: 3px 6px; }
  .pp4-game-card__meta { gap: var(--pp4-space-3); }

  .pp4-games-resume { grid-template-columns: minmax(0, 1fr); }

  .pp4-games-chips { padding: var(--pp4-space-4); }
  .pp4-games-chips__cost { margin-left: 0; flex: 1 1 100%; }
}

@media (max-width: 359px) {
  .pp4-games-grid { grid-template-columns: minmax(0, 1fr); }
  .pp4-games-hero__stats { grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 6px; }
  .pp4-games-hero__stat-label { font-size: 0.6rem; }
}

/* ============================================================
   11 · MOVIMENTO REDUZIDO
   ============================================================ */

@media (prefers-reduced-motion: reduce) {
  .pp4-game-card,
  .pp4-games-resume__item,
  .pp4-game-card__cta { transition: none !important; }

  .pp4-game-card:hover { transform: none; }

  .pp4-game-badge--live::before { animation: none; }
}
