/* ============================================================
   MONCHIS · base.css
   Reset, layout movil-primero, tipografia base y el sistema
   de pantallas (show/hide) que usa el router.
   ============================================================ */

*, *::before, *::after { box-sizing: border-box; }

* { margin: 0; padding: 0; }

html, body {
  height: 100%;
}

body {
  background: var(--bg);
  color: var(--texto);
  font-family: var(--fuente);
  font-size: var(--fs-md);
  line-height: 1.5;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
  /* Evita zoom por doble toque y resalta el modo app */
  touch-action: manipulation;
  overscroll-behavior: none;
}

/* ---------- Reset de <button> (8F-3) ----------
   Por defecto el navegador pinta el texto de los <button> con su color de
   sistema (oscuro) y su propia tipografia, NO los hereda de la app. Cualquier
   boton que no fijara su color propio (p. ej. .bn-barco-card en la colocacion
   de Batalla Naval) mostraba su nombre casi negro sobre el fondo oscuro, apenas
   legible. Con este reset de baja especificidad, todo <button> hereda el color
   de texto y la tipografia de la app; las clases que YA fijan su propio color
   (.btn, .pic-juego-card, .chip, etc.) siguen mandando por especificidad. */
button {
  color: inherit;
  font-family: inherit;
  font-size: inherit;
  line-height: inherit;
}

/* ---------- Fondo de portada (todas las pantallas Idle y de resultados) ----
   Capa fija detras de todo el contenido. La imagen lleva un velo oscuro
   horneado encima para que el texto siga legible; su intensidad se ajusta
   por pantalla con la opacidad. Aparece en TODAS las pantallas Idle
   (inicio, nombre, lobby, crear, unir, sala y el pregame/espera de cada
   juego) y en las de resultados; solo queda apagada durante el juego ACTIVO
   (lienzo/teclado/tablero) y en las pantallas tecnicas (health, demo). (8F-1) */
body::before {
  content: "";
  position: fixed;
  inset: 0;
  z-index: -1;
  pointer-events: none;
  background:
    linear-gradient(180deg, rgba(14,17,23,.62), rgba(14,17,23,.86)),
    url("../assets/portada.jpg") center 18% / cover no-repeat;
  opacity: 0;
  transition: opacity var(--t-media);
}
/* Visible y nitida en inicio y al poner el nombre */
body[data-pantalla="inicio"]::before,
body[data-pantalla="nombre"]::before { opacity: .85; }
/* Menus de crear / unir sala: mismos pasos que el lobby (son pantallas Idle
   de navegacion; antes quedaban apagadas y desentonaban con el lobby). (8F-1) */
body[data-pantalla="lobby"]::before,
body[data-pantalla="crear"]::before,
body[data-pantalla="unir"]::before   { opacity: .50; }
/* Casi imperceptible dentro de la sala (fondo del chat) */
body[data-pantalla="sala"]::before   { opacity: .20; }
/* Pantallas de un juego con fondo tenue. Cubre los CUATRO juegos en dos casos:
     · data-fase="resultados" → fin de partida / reveal (S8-A).
     · data-fase="espera"     → pantallas IDLE del juego: pregame del host,
       "esperando al host", espera de revancha, sincronizacion (8F-1).
   Durante el juego ACTIVO (lienzo/teclado/tablero) no hay data-fase, asi que
   el fondo permanece apagado, como hasta ahora. */
body[data-pantalla="anagramas"][data-fase="resultados"]::before,
body[data-pantalla="pictionary"][data-fase="resultados"]::before,
body[data-pantalla="operaciones"][data-fase="resultados"]::before,
body[data-pantalla="batalla_naval"][data-fase="resultados"]::before,
body[data-pantalla="anagramas"][data-fase="espera"]::before,
body[data-pantalla="pictionary"][data-fase="espera"]::before,
body[data-pantalla="operaciones"][data-fase="espera"]::before,
body[data-pantalla="batalla_naval"][data-fase="espera"]::before { opacity: .20; }

/* El contenedor de la app ocupa el alto real del viewport movil */
#app {
  min-height: 100dvh;
  max-width: 560px;          /* base movil; centrado en pantallas grandes */
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  position: relative;
}

/* --- Tipografia --- */
h1, h2, h3 {
  font-family: var(--fuente-titulo);
  line-height: 1.2;
  letter-spacing: -0.01em;
}
h1 { font-size: var(--fs-xxl); font-weight: 800; }
h2 { font-size: var(--fs-xl);  font-weight: 700; }
h3 { font-size: var(--fs-lg);  font-weight: 700; }

a { color: var(--acento); text-decoration: none; }

.mut { color: var(--texto-mut); }
.centro { text-align: center; }

/* --- Sistema de PANTALLAS (router) ---
   Cada <section class="pantalla"> esta oculta salvo la activa. */
.pantalla {
  display: none;
  flex: 1;
  flex-direction: column;
  padding: var(--gap-lg);
  gap: var(--gap-lg);
  animation: aparecer var(--t-media);
}
.pantalla.activa { display: flex; }

@keyframes aparecer {
  from { opacity: 0; transform: translateY(8px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* --- Marca --- */
.marca {
  font-weight: 900;
  letter-spacing: 0.04em;
  background: linear-gradient(120deg, var(--acento), var(--acento-2));
  -webkit-background-clip: text;
  background-clip: text;
  color: transparent;
}

/* --- Utilidades de layout --- */
.fila    { display: flex; align-items: center; gap: var(--gap); }
.columna { display: flex; flex-direction: column; gap: var(--gap); }
.entre   { justify-content: space-between; }
.crece   { flex: 1; }
.zona-pulgar { margin-top: auto; }   /* empuja contenido a la mitad inferior */

/* Respeta usuarios que prefieren menos movimiento */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

/* ---------- Portada de la pantalla de inicio ---------- */
.portada {
  display: block;
  width: 100%;
  max-width: 340px;
  height: auto;
  margin: 16px auto 0;
  border-radius: var(--radio);
  border: 1px solid var(--borde);
  box-shadow: 0 8px 24px rgba(0, 0, 0, .35);
}
