/* ===================================================================
   OJPJ JOGOS — sistema visual compartilhado (tema claro)
   Paleta por categoria:
     --azul     arcade
     --laranja  reflexo
     --verde    lógica
     --dourado  palavras / memória
   Sem roxo, sem rosa. Mobile-first, responsivo para desktop.
   =================================================================== */

@import url('https://fonts.googleapis.com/css2?family=Baloo+2:wght@600;700;800&family=Nunito:wght@500;600;700;800&family=Share+Tech+Mono&display=swap');

:root {
  --azul: #2563eb;
  --laranja: #f97316;
  --verde: #16a34a;
  --dourado: #ca8a04;
  --vermelho: #dc2626;

  --bg-pagina-1: #eef4ff;
  --bg-pagina-2: #fdf6e8;
  --bg-cartao: #ffffff;
  --bg-painel: #f3f6fc;
  --bg-fosco: #e6ecf7;
  --borda: #dbe3f2;
  --borda-forte: #b9c6e3;

  --texto: #1e2a44;
  --texto-fraco: #64748b;
  --tinta: var(--texto);
  --tinta-fraca: var(--texto-fraco);

  --cor-jogo: var(--azul);
  --fonte-titulo: 'Baloo 2', 'Nunito', sans-serif;
  --fonte-corpo: 'Nunito', Tahoma, Arial, sans-serif;
  --fonte-mono: 'Share Tech Mono', monospace;
}

* { box-sizing: border-box; }

html, body {
  margin: 0; padding: 0;
  min-height: 100%;
  background-color: var(--bg-pagina-1);
  background-image:
    radial-gradient(circle at 12% 8%, rgba(37,99,235,0.10), transparent 45%),
    radial-gradient(circle at 88% 92%, rgba(202,138,4,0.12), transparent 45%),
    linear-gradient(160deg, var(--bg-pagina-1), var(--bg-pagina-2));
  background-attachment: fixed;
  color: var(--texto);
  font-family: var(--fonte-corpo);
}

.arcade-envolucro {
  max-width: 620px;
  margin: 20px auto 36px;
  padding: 0 14px;
}

/* ---------- MARQUISE / cabeçalho ---------- */
.marquise {
  position: relative;
  border-radius: 22px 22px 10px 10px;
  padding: 20px 18px 16px;
  text-align: center;
  background: linear-gradient(135deg, var(--cor-jogo), color-mix(in srgb, var(--cor-jogo) 65%, #000 12%));
  box-shadow: 0 10px 26px -8px color-mix(in srgb, var(--cor-jogo) 55%, transparent);
}

.marquise .categoria {
  display: inline-block;
  font-family: var(--fonte-corpo);
  font-weight: 800;
  font-size: 11px;
  letter-spacing: 2px;
  padding: 4px 12px;
  border-radius: 20px;
  background: rgba(255,255,255,0.25);
  color: #ffffff;
  margin-bottom: 8px;
}

.marquise h1 {
  font-family: var(--fonte-titulo);
  font-weight: 800;
  font-size: 24px;
  line-height: 1.3;
  margin: 4px 0 0;
  color: #ffffff;
  letter-spacing: 0.5px;
  text-shadow: 0 2px 0 rgba(0,0,0,0.12);
}

/* ---------- gabinete / tela do jogo ---------- */
.gabinete {
  margin-top: 14px;
  padding: 18px;
  border-radius: 20px;
  background: var(--bg-cartao);
  border: 1px solid var(--borda);
  box-shadow: 0 14px 34px -18px rgba(30,42,68,0.35), 0 2px 8px rgba(30,42,68,0.06);
}

.tela {
  position: relative;
  border-radius: 14px;
  background: var(--bg-painel);
  border: 2px solid var(--borda);
  padding: 12px;
  overflow: auto;
  max-width: 100%;
}

.tela canvas { display:block; margin: 0 auto; max-width: 100%; height: auto; border-radius: 8px; }

/* qualquer tabuleiro/grade de jogo não pode estourar a tela no celular */
#tabuleiro, #tabuleiro-2048, #tabuleiro-c4, table.grade, table.grade-resta,
table.grade-naval, table.grade-toupeira, .grade-toupeira, .tabuleiro-simon,
.grade-memoria, .colunas {
  max-width: 100%;
  overflow-x: auto;
}

/* ---------- controles ---------- */
.barra-controles, .controles {
  display: flex; flex-wrap: wrap; gap: 10px;
  justify-content: center; align-items: center;
  margin: 14px 0;
}

.botao-arcade, .arcade-envolucro select, .gabinete button, .gabinete select {
  font-family: var(--fonte-corpo);
  font-weight: 800;
  font-size: 14px;
  letter-spacing: 0.2px;
  padding: 10px 20px;
  border-radius: 999px;
  border: none;
  cursor: pointer;
  color: #ffffff;
  background: linear-gradient(180deg, var(--cor-jogo), color-mix(in srgb, var(--cor-jogo) 78%, #000 10%));
  box-shadow: 0 4px 0 color-mix(in srgb, var(--cor-jogo) 55%, #000 25%), 0 6px 14px -6px color-mix(in srgb, var(--cor-jogo) 60%, transparent);
  transition: transform 0.08s ease;
  margin: 2px;
}
.botao-arcade:active, .gabinete button:active { transform: translateY(2px); box-shadow: 0 2px 0 color-mix(in srgb, var(--cor-jogo) 55%, #000 25%); }

.botao-arcade.secundario {
  background: linear-gradient(180deg, #eef2f8, #dde5f2);
  color: var(--texto);
  box-shadow: 0 4px 0 var(--borda-forte);
}

.arcade-envolucro select, .gabinete select {
  background: var(--bg-fosco);
  color: var(--texto);
  border: 2px solid var(--borda);
  box-shadow: none;
  padding: 9px 14px;
}

/* ---------- HUD / status ---------- */
.hud, .status, .mensagem {
  text-align: center;
  font-family: var(--fonte-mono);
  font-size: 15px;
  font-weight: 700;
  letter-spacing: 0.5px;
  color: var(--texto);
  background: var(--bg-fosco);
  border-radius: 999px;
  padding: 8px 16px;
  width: fit-content;
  display: block;
  margin: 10px auto 0;
  min-height: 18px;
}

.mensagem.erro, .erro { color: var(--vermelho) !important; background: #fde7e7; }

.instrucoes {
  text-align: center;
  font-size: 13px;
  color: var(--texto-fraco);
  margin-top: 10px;
  font-family: var(--fonte-corpo);
  font-weight: 600;
}

/* ---------- botões touch mobile ---------- */
.botoes-mobile { display:none; text-align:center; margin-top:14px; }
.botoes-mobile button {
  font-size: 20px; padding: 12px 18px; margin: 4px;
  border-radius: 14px;
  background: linear-gradient(180deg, var(--bg-cartao), var(--bg-fosco));
  color: var(--cor-jogo);
  border: 2px solid var(--borda);
  box-shadow: 0 3px 0 var(--borda-forte);
  font-weight: 800;
}
@media (max-width: 640px){ .botoes-mobile { display:block; } }

/* ---------- rodapé / voltar ---------- */
.rodape-arcade { text-align:center; margin-top: 18px; }
.rodape-arcade a {
  font-family: var(--fonte-corpo);
  font-weight: 700;
  font-size: 13px;
  letter-spacing: 0.3px;
  color: var(--texto-fraco);
  text-decoration: none;
  border: 2px solid var(--borda);
  padding: 8px 16px;
  border-radius: 999px;
  background: var(--bg-cartao);
}
.rodape-arcade a:hover { color: var(--cor-jogo); border-color: var(--cor-jogo); }

/* ---------- responsivo: telas pequenas ---------- */
@media (max-width: 420px){
  .marquise h1 { font-size: 19px; }
  .gabinete { padding: 12px; border-radius: 16px; }
  .botao-arcade, .gabinete button { padding: 9px 16px; font-size: 13px; }
}

/* ---------- responsivo: telas grandes (desktop) ---------- */
@media (min-width: 900px){
  .arcade-envolucro { max-width: 720px; }
  .marquise h1 { font-size: 28px; }
}
