/* ============================================================
   Academia Artistas — sistema visual

   ORDEN DEL ARCHIVO (respetarlo al agregar cosas):
     1. Tokens          — colores, espaciado, tipografía
     2. Base            — reset y elementos sueltos
     3. Layout          — app, cabecera, scroll, nav
     4. Componentes     — botones, campos, fichas, tags…
     5. Bloques         — gate, hoja, toast
     6. Utilidades      — helpers de una línea

   REGLA: ningún archivo .js escribe estilos inline. Si algo necesita
   un estilo, se le hace una clase acá. Así cambiar el color de todos
   los botones es tocar --acento y nada más.
   ============================================================ */

/* ============================================================
   1. TOKENS
   ============================================================ */
:root {
  /* Tipografía del sistema, a propósito: la app se usa en el celular
     con datos móviles y una webfont agrega salto de layout y espera. */
  --fuente: ui-sans-serif, -apple-system, "Segoe UI", Roboto,
            "Helvetica Neue", Arial, sans-serif;

  /* --- Grises. El texto nunca es negro puro: cansa en pantalla. --- */
  --tinta:        #1a1a1a;
  --tinta-media:  #5c5c5c;
  --tinta-suave:  #8e8e8e;
  --linea:        #e6e4e0;
  --linea-fuerte: #d4d1cc;
  --fondo:        #ffffff;
  --fondo-tenue:  #faf9f7;
  --fondo-hover:  #f2f0ed;

  /* --- Acento. TODOS los botones primarios salen de acá. --- */
  --acento:       #1a1a1a;
  --acento-texto: #ffffff;

  /* --- Semánticos --- */
  --ok:           #2f6f4e;
  --ok-fuerte:    #21cd79;
  --ok-tenue:     #eef5f1;
  --alerta:       #8a5a1f;
  --alerta-tenue: #fdf5e9;
  --error:        #a33a30;
  --error-tenue:  #fdf1f0;

  /* --- Colores de marca, para los tags de grupo --- */
  --marca-1: #1a1a1a;
  --marca-2: #f2bb06;
  --marca-3: #0390fa;
  --marca-4: #ff5225;
  --marca-5: #ff99ff;
  --marca-6: #21cd79;

  /* Los mismos colores, oscurecidos para usarse como TEXTO sobre el fondo
     claro. Los de arriba están pensados como fondo con tinta encima: el
     amarillo y el rosa sobre blanco no se leen. Mismo tono, contraste
     suficiente. */
  --marca-1-texto: #1a1a1a;
  --marca-2-texto: #8a6a00;
  --marca-3-texto: #0369a1;
  --marca-4-texto: #c2410c;
  --marca-5-texto: #a021a0;
  --marca-6-texto: #157f4a;

  --radio:    10px;
  --radio-sm: 7px;
  --radio-pill: 999px;

  /* Escala de 4px: todo el layout sale de acá */
  --e1: 4px;  --e2: 8px;  --e3: 12px; --e4: 16px;
  --e5: 24px; --e6: 32px; --e7: 48px; --e8: 64px;

  --sombra: 0 1px 2px rgba(0,0,0,.05), 0 8px 24px rgba(0,0,0,.08);
  --toque: 46px;                       /* alto mínimo de lo que se toca */
  --ancho-app: 640px;
  --alto-nav: calc(58px + env(safe-area-inset-bottom, 0px));
}

/* ============================================================
   2. BASE
   ============================================================ */
*, *::before, *::after { box-sizing: border-box; }

/* `hidden` tiene que ganar siempre. El navegador lo aplica con una regla
   propia que pierde contra cualquier display nuestro: sin esto, un
   .cargando { display:flex } deja el spinner girando para siempre. */
[hidden] { display: none !important; }

html, body {
  margin: 0;
  height: 100%;
  overscroll-behavior-y: none;
}

body {
  font-family: var(--fuente);
  font-size: 16px;               /* menos de 16 hace que iOS zoomee al enfocar */
  line-height: 1.5;
  color: var(--tinta);
  background: var(--fondo);
  -webkit-font-smoothing: antialiased;
  -webkit-tap-highlight-color: transparent;
}

h1, h2, h3 { margin: 0; font-weight: 600; letter-spacing: -0.015em; }
h1 { font-size: 1.375rem; }
h2 { font-size: 1.0625rem; }
h3 { font-size: .9375rem; }
p  { margin: 0; }

button, input, select, textarea { font: inherit; color: inherit; }
button { cursor: pointer; }

:focus-visible {
  outline: 2px solid var(--tinta);
  outline-offset: 2px;
  border-radius: var(--radio-sm);
}

/* ============================================================
   3. LAYOUT
   ============================================================ */
.app {
  display: flex;
  flex-direction: column;
  height: 100%;
  max-width: var(--ancho-app);
  margin: 0 auto;
  border-inline: 1px solid var(--linea);
  overflow: hidden;              /* nada se pasa del ancho de la app */
}

.cabecera {
  position: sticky;
  top: 0;
  z-index: 20;
  display: flex;
  align-items: center;
  gap: var(--e3);
  padding: var(--e4);
  padding-top: calc(var(--e4) + env(safe-area-inset-top, 0px));
  background: rgba(255,255,255,.88);
  backdrop-filter: blur(12px);
  border-bottom: 1px solid var(--linea);
}
.cabecera__titulo { flex: 1; min-width: 0; }
.cabecera__sub { font-size: .8125rem; color: var(--tinta-suave); margin-top: 1px; }

/* Único contenedor con scroll real. El IntersectionObserver del scroll
   infinito apunta acá: dejarlo en el viewport lo rompe en una PWA. */
.scroll {
  flex: 1;
  overflow-y: auto;
  overflow-x: hidden;
  -webkit-overflow-scrolling: touch;
  padding-bottom: var(--e7);
}

/* Contenedor donde se monta cada sección */
.seccion {
  flex: 1;
  display: flex;
  flex-direction: column;
  min-height: 0;
  min-width: 0;
}

.nav {
  display: flex;
  border-top: 1px solid var(--linea);
  background: var(--fondo);
  padding-bottom: env(safe-area-inset-bottom, 0px);
}
.nav__item {
  flex: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 3px;
  padding: var(--e2) var(--e1) var(--e3);
  border: 0;
  background: none;
  color: var(--tinta-suave);
  font-size: .6875rem;
  transition: color .15s ease;
}
.nav__item svg { width: 21px; height: 21px; stroke-width: 1.6; }
.nav__item[aria-current="page"] { color: var(--tinta); font-weight: 550; }
.nav__item:active { background: var(--fondo-hover); }
.nav__item--pendiente { opacity: .38; }

/* Barra de filtros/controles arriba de una lista */
.controles {
  padding: var(--e3) var(--e4);
  border-bottom: 1px solid var(--linea);
  display: grid;
  gap: var(--e2);
  min-width: 0;
}
.controles--fila {
  /* Las dos columnas con minmax(0,·): `auto` a secas deja que la segunda
     imponga su ancho intrínseco y se coma el borde derecho. Pasa con el
     <input type="date">, que trae un ancho propio que no se achica y que
     además cambia entre navegadores — en Safari e iOS es bastante más
     ancho que en Chrome, así que en Chrome el recorte no se ve. */
  grid-template-columns: minmax(0, 1fr) minmax(0, auto);
  align-items: center;
}
/* Los modificadores de los controles de esta barra viven en el bloque 4,
   después de .campo__control y .campo__label: son un solo nombre de clase
   cada uno, así que si estuvieran acá los pisaría el que viene después. */

/* Barra pegada abajo con la acción principal */
.barra-accion {
  padding: var(--e3) var(--e4);
  padding-bottom: calc(var(--e3) + env(safe-area-inset-bottom, 0px));
  border-top: 1px solid var(--linea);
  background: var(--fondo);
}

/* ============================================================
   4. COMPONENTES
   ============================================================ */

/* ---------- Botones ---------- */
.btn {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: var(--e2);
  min-height: var(--toque);
  padding: 0 var(--e5);
  border: 1px solid transparent;
  border-radius: var(--radio);
  font-size: .9375rem;
  font-weight: 550;
  text-decoration: none;
  transition: opacity .15s ease, background .15s ease;
}
.btn--primario   { background: var(--acento); color: var(--acento-texto); }
.btn--primario:active { opacity: .82; }
.btn--secundario { background: var(--fondo); color: var(--tinta); border-color: var(--linea-fuerte); }
.btn--secundario:active { background: var(--fondo-hover); }
.btn--peligro    { background: var(--fondo); color: var(--error); border-color: var(--linea-fuerte); }
.btn--ancho      { width: 100%; }
.btn--chico      { min-height: 36px; padding: 0 var(--e3); font-size: .875rem; }
.btn:disabled    { opacity: .45; pointer-events: none; }

.btn-flotante {
  position: fixed;
  right: var(--e4);
  bottom: calc(var(--alto-nav) + var(--e4));
  z-index: 15;
  display: grid;
  place-items: center;
  width: 54px; height: 54px;
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: var(--acento);
  color: var(--acento-texto);
  font-size: 26px;
  font-weight: 300;
  text-decoration: none;
  box-shadow: var(--sombra);
}
@media (min-width: 680px) {
  .btn-flotante { right: calc(50vw - (var(--ancho-app) / 2) + var(--e4)); }
}
/* Cuando la pantalla tiene el buscador abajo, el flotante sube para no
   taparlo. 68px es el alto del buscador con su padding. */
.btn-flotante--sobre-buscador {
  bottom: calc(var(--alto-nav) + 68px + var(--e3));
}

/* ---------- Campos ---------- */
.campo { display: block; margin-bottom: var(--e4); }
.campo__label {
  display: block;
  font-size: .8125rem;
  font-weight: 550;
  color: var(--tinta-media);
  margin-bottom: var(--e2);
}
.campo__ayuda { font-size: .75rem; color: var(--tinta-suave); margin-top: var(--e1); }
.campo__control {
  width: 100%;
  max-width: 100%;
  /* Los input date/time nativos traen un ancho intrínseco propio que no se
     achica solo: con width:100% pero sin min-width:0 se pasan del
     contenedor y quedan comidos a la derecha. Se ve en Safari e iOS, donde
     ese ancho es bastante mayor que en Chrome. */
  min-width: 0;
  min-height: var(--toque);
  padding: var(--e3);
  background: var(--fondo);
  border: 1px solid var(--linea-fuerte);
  border-radius: var(--radio);
  transition: border-color .15s ease;
}
.campo__control:focus { outline: none; border-color: var(--tinta); }
.campo__control--chico { min-height: 40px; padding: var(--e2) var(--e3); }

/* Control dentro de una .controles--fila (el date de Asistencia). El tope es
   para que, cuando el input pida más ancho del que hay, lo que se achique sea
   él y no el nombre del día que tiene al lado. Va acá, después de
   .campo__control, porque tiene la misma especificidad y gana el último. */
.controles__campo { min-width: 0; max-width: 190px; }
/* Etiqueta al lado de un campo: sin el margen inferior que traen los labels. */
.controles__dia { margin-bottom: 0; }
textarea.campo__control { min-height: 88px; resize: vertical; }
.campo__error { font-size: .8125rem; color: var(--error); margin-top: var(--e1); }

/* Sí/No en dos mitades */
.opciones { display: flex; gap: var(--e2); }
.opciones__btn {
  flex: 1;
  min-height: var(--toque);
  border: 1px solid var(--linea-fuerte);
  border-radius: var(--radio);
  background: var(--fondo);
  font-weight: 550;
}
.opciones__btn[aria-pressed="true"] {
  background: var(--acento);
  color: var(--acento-texto);
  border-color: var(--acento);
}

/* El buscador va abajo, justo arriba de la nav: la lista se recorre con el
   pulgar y el teclado del teléfono sale de abajo. Arriba obligaba a
   estirar la mano hasta el otro extremo de la pantalla para filtrar. */
.buscador {
  padding: var(--e3) var(--e4);
  border-top: 1px solid var(--linea);
  background: var(--fondo);
}
.buscador__input {
  width: 100%;
  min-height: 42px;
  padding: 0 var(--e4);
  background: var(--fondo-tenue);
  border: 1px solid transparent;
  border-radius: var(--radio-pill);
}
.buscador__input:focus { outline: none; border-color: var(--linea-fuerte); background: var(--fondo); }

/* ---------- Fichas de lista ---------- */
.ficha {
  display: block;
  width: 100%;
  text-align: left;
  border: 0;
  border-bottom: 1px solid var(--linea);
  background: none;
  padding: var(--e4);
  transition: background .12s ease;
}
.ficha:active { background: var(--fondo-hover); }
.ficha__fila { display: flex; align-items: baseline; gap: var(--e3); }
.ficha__nombre { font-weight: 550; flex: 1; min-width: 0; }
.ficha__dato {
  font-size: .8125rem;
  color: var(--tinta-media);
  margin-top: 2px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Fila genérica "algo a la izquierda, algo a la derecha" */
.fila {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: var(--e3);
  padding: var(--e2) 0;
  border-bottom: 1px solid var(--linea);
}
.fila__principal { min-width: 0; flex: 1; }
.fila__valor { font-variant-numeric: tabular-nums; font-weight: 550; white-space: nowrap; }
.fila__valor--alerta { color: var(--alerta); }

/* Fila "etiqueta: valor" de las fichas */
.dato { display: flex; gap: var(--e3); padding: 7px 0; border-bottom: 1px solid var(--linea); }
.dato__etiqueta { color: var(--tinta-suave); font-size: .8125rem; min-width: 132px; }
.dato__valor { flex: 1; font-size: .9375rem; min-width: 0; }


/* ---------- Splash ----------
   Pantalla de marca mientras arranca. Vive en el HTML y no la dibuja el JS:
   tiene que estar pintada en el primer frame, antes de que cargue ningún
   script, o el saludo llega tarde y se ve el fondo pelado.

   El logo va incrustado como data URI por el mismo motivo que el avatar: el
   deploy sube los archivos como texto UTF-8 (ver deploy.py) y un binario no
   llega. A 560px pesa 26 KB y se muestra a 240, así que entra nítido en
   pantallas retina. */
#splash {
  position: fixed;
  inset: 0;
  /* Sobre TODO, incluido el gate, que también está en 100: con el mismo
     z-index gana el que se agrega último al DOM, y el gate se crea después
     — así que tapaba al splash y parecía que no existía. */
  z-index: 200;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--fondo);
  /* Reserva el alto del "hecho por" de abajo, así el logo queda centrado en
     el espacio que queda arriba y no en toda la pantalla. */
  padding-bottom: calc(96px + env(safe-area-inset-bottom, 0px));
  transition: opacity .4s ease;
}
#splash.saliendo { opacity: 0; }

.splash__logo {
  width: min(240px, 62vw);
  height: auto;
  display: block;
  background-image: url("data:image/png;base64,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");
  background-size: contain;
  background-repeat: no-repeat;
  background-position: center;
  aspect-ratio: 1308 / 496;
}

.splash__por {
  position: absolute;
  left: 50%;
  transform: translateX(-50%);
  bottom: calc(38px + env(safe-area-inset-bottom, 0px));
  text-align: center;
  color: var(--tinta-suave);
}
.splash__por-txt { font-size: 11px; margin-bottom: 5px; letter-spacing: .02em; }
.splash__dfrnt { width: 62px; height: auto; display: block; margin: 0 auto; }
.splash__dfrnt path { fill: #f91a2a; }

/* ---------- Avatar ----------
   La foto de perfil va incrustada como data URI y no como archivo: el
   deploy sube los archivos como texto UTF-8 (ver deploy.py), así que un
   binario no llega. A 96px pesa 7 KB, que es el tamaño real al que se
   muestra — nunca se ve más grande que 40px. */
:root {
  --avatar: url("data:image/png;base64,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");
}
.avatar {
  flex: 0 0 auto;
  border-radius: 50%;
  background-image: var(--avatar);
  background-size: cover;
  background-position: center;
  background-color: var(--fondo-hover);
}
.avatar--chico { width: 22px; height: 22px; }
.avatar--grande { width: 44px; height: 44px; }
/* En la cabecera, el avatar va pegado al nombre del perfil. */
#btnPerfil { gap: var(--e2); }

/* ---------- Etiquetas de estado ---------- */
.etiq {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  font-size: .75rem;
  font-weight: 550;
  padding: 2px var(--e2);
  border-radius: var(--radio-pill);
  white-space: nowrap;
}
.etiq--ok     { background: var(--ok-tenue);     color: var(--ok); }
.etiq--alerta { background: var(--alerta-tenue); color: var(--alerta); }
.etiq--error  { background: var(--error-tenue);  color: var(--error); }
.etiq--neutro { background: var(--fondo-hover);  color: var(--tinta-media); }

/* ---------- Tags de grupo (colores de marca) ----------
   Color pleno: en una lista de 146 alumnos el color deja reconocer el
   grupo sin leer. Cada grupo cae siempre en el mismo (sale de su nombre,
   ver colorDeGrupo en core.js) y el color es el MISMO en toda la app.

   El texto es oscuro en cinco de los seis: sobre el amarillo, el rosa,
   el verde, el naranja y el celeste de la marca, el blanco no llega al
   contraste necesario para un texto chico. Sobre el negro, blanco. */
.tags { display: flex; flex-wrap: wrap; gap: 5px; margin-top: 5px; min-width: 0; }

.tag {
  display: inline-flex;
  align-items: center;
  gap: 5px;
  max-width: 100%;
  padding: 3px var(--e2);
  border: 0;
  border-radius: var(--radio-pill);
  font-size: .75rem;
  font-weight: 600;
  line-height: 1.45;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* El tag son dos partes: el programa y, pegada, la letra de la comisión.
   Van juntas y del mismo color porque son una sola cosa — "DOS - Minis B"
   es la B de DOS - Minis, no dos etiquetas distintas. */
.tag__programa { overflow: hidden; text-overflow: ellipsis; }
.tag__sufijo {
  flex: 0 0 auto;
  padding: 0 6px;
  border-radius: var(--radio-pill);
  /* Se recorta sobre el propio color del tag, así no hace falta una
     segunda paleta para las letras. */
  background: rgba(255, 255, 255, .28);
  box-shadow: inset 0 0 0 1px rgba(0, 0, 0, .06);
}
.tag--1 .tag__sufijo { background: rgba(255, 255, 255, .22); }
button.tag { cursor: pointer; }
button.tag:active { opacity: .78; }

.tag--1 { background: var(--marca-1); color: #ffffff; }
.tag--2 { background: var(--marca-2); color: var(--tinta); }
.tag--3 { background: var(--marca-3); color: var(--tinta); }
.tag--4 { background: var(--marca-4); color: var(--tinta); }
.tag--5 { background: var(--marca-5); color: var(--tinta); }
.tag--6 { background: var(--marca-6); color: var(--tinta); }
.tag--vacio {
  background: transparent;
  border: 1px dashed var(--linea-fuerte);
  color: var(--tinta-suave);
  font-weight: 500;
}

/* Punto del mismo color, para donde no entra el tag entero */
.punto {
  display: inline-block;
  width: 9px; height: 9px;
  border-radius: 50%;
  flex: 0 0 auto;
}
.punto--1 { background: var(--marca-1); }
.punto--2 { background: var(--marca-2); }
.punto--3 { background: var(--marca-3); }
.punto--4 { background: var(--marca-4); }
.punto--5 { background: var(--marca-5); }
.punto--6 { background: var(--marca-6); }

/* ---------- Chips de clase (accesos rápidos de asistencia) ---------- */
.chips { display: grid; gap: var(--e2); }
.chip {
  display: flex;
  align-items: center;
  gap: var(--e3);
  width: 100%;
  min-height: 54px;
  padding: var(--e2) var(--e4);
  border: 1px solid var(--linea-fuerte);
  border-radius: var(--radio);
  background: var(--fondo);
  text-align: left;
}
.chip:active { background: var(--fondo-hover); }
.chip[aria-pressed="true"] { border-color: var(--tinta); box-shadow: inset 0 0 0 1px var(--tinta); }
.chip__texto { flex: 1; min-width: 0; }
.chip__nombre { font-weight: 550; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; }
.chip__detalle { font-size: .8125rem; color: var(--tinta-suave); }

/* ---------- Check de asistencia ----------
   Uno solo, no dos botones: vacío = faltó, tildado = vino. Es como se
   toma asistencia en papel, se tilda a quien está. */
.persona {
  display: flex;
  align-items: center;
  gap: var(--e3);
  width: 100%;
  padding: var(--e3) var(--e4);
  border: 0;
  border-bottom: 1px solid var(--linea);
  background: none;
  text-align: left;
}
.persona:active { background: var(--fondo-hover); }
.persona__nombre { flex: 1; min-width: 0; font-weight: 550; overflow: hidden; text-overflow: ellipsis; }
.persona__extra { font-size: .8125rem; color: var(--tinta-suave); font-weight: 500; }
/* Lo que va a la derecha del nombre y no es el nombre: reemplazo + check. */
.persona__acciones { flex: 0 0 auto; display: flex; align-items: center; gap: var(--e2); }

/* Nombre en el color del programa. Distingue de un vistazo a un profesor
   de un alumno dentro de la misma lista de asistencia, sin agregarle nada
   al costado: la fila del profesor se lee igual que la del alumno. */
.texto-programa--1 { color: var(--marca-1-texto); }
.texto-programa--2 { color: var(--marca-2-texto); }
.texto-programa--3 { color: var(--marca-3-texto); }
.texto-programa--4 { color: var(--marca-4-texto); }
.texto-programa--5 { color: var(--marca-5-texto); }
.texto-programa--6 { color: var(--marca-6-texto); }

.check {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  width: 30px; height: 30px;
  border: 2px solid var(--linea-fuerte);
  border-radius: 50%;
  background: var(--fondo);
  color: transparent;
  font-size: 15px;
  font-weight: 700;
  transition: background .12s ease, border-color .12s ease, color .12s ease;
}
.check[aria-pressed="true"] {
  background: var(--ok-fuerte);
  border-color: var(--ok-fuerte);
  color: #ffffff;
}

/* Detalle del profesor debajo de su fila (horas y reemplazo) */
.detalle-profe {
  display: grid;
  gap: var(--e2);
  padding: 0 var(--e4) var(--e3);
  border-bottom: 1px solid var(--linea);
}

/* ---------- Tarjetas del resumen ---------- */
.tarjetas { display: grid; grid-template-columns: 1fr 1fr; gap: var(--e2); margin-bottom: var(--e2); }
.tarjeta {
  padding: var(--e3);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  min-width: 0;
}
.tarjeta--ancha { grid-column: 1 / -1; }
.tarjeta__titulo { font-size: .8125rem; color: var(--tinta-suave); }
.tarjeta__valor  { font-size: 1.5rem; font-weight: 600; margin-top: 2px; font-variant-numeric: tabular-nums; }
.tarjeta__detalle { font-size: .8125rem; color: var(--tinta-media); margin-top: 2px; }

/* Selector de período */
.periodo { display: flex; align-items: center; gap: var(--e2); }
.periodo__actual { flex: 1; text-align: center; font-weight: 550; }
/* La caja se mueve de a un día, así que en vez de una etiqueta lleva el
   campo de fecha entre las dos flechas: saltar al 3 del mes pasado no
   puede costar treinta toques. */
.periodo__fecha { flex: 1; text-align: center; }

/* ---------- Caja ---------- */
/* Fila de movimiento: monta sobre .persona (que ya da el alto de toque,
   el separador y el estado activo) y le agrega las dos líneas de texto
   con el monto a la derecha. */
.mov__texto { flex: 1; min-width: 0; }
.mov__titulo {
  font-weight: 550;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mov__detalle {
  font-size: .8125rem;
  color: var(--tinta-suave);
  margin-top: 1px;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.mov__monto {
  flex: 0 0 auto;
  font-variant-numeric: tabular-nums;
  font-weight: 550;
  white-space: nowrap;
}
.mov__monto--egreso { color: var(--error); }

/* Monto + estado de cobro, en la liquidación de profesores */
.liq__estado {
  flex: 0 0 auto;
  display: grid;
  justify-items: end;
  gap: 3px;
}

/* ---------- Asistente de carga (una pregunta por pantalla) ---------- */
.asis__pregunta { font-size: 1.25rem; margin-bottom: var(--e3); }
.opciones-lista { display: grid; gap: var(--e2); margin-top: var(--e3); }
/* Alto y de ancho completo: se toca con el pulgar, parado en el mostrador
   y con alguien esperando el vuelto. */
.opcion {
  display: flex;
  align-items: center;
  width: 100%;
  min-height: 58px;
  padding: var(--e3) var(--e4);
  border: 1px solid var(--linea-fuerte);
  border-radius: var(--radio);
  background: var(--fondo);
  text-align: left;
}
.opcion:active { background: var(--fondo-hover); }
/* Opción que se puede dejar marcada (elegir varios profesores, por ej.) */
.opcion--elegible[aria-pressed="true"] {
  background: var(--acento);
  color: var(--acento-texto);
  border-color: var(--acento);
}
.opcion--elegible[aria-pressed="true"] .opcion__detalle { color: inherit; opacity: .75; }
.opcion__texto { min-width: 0; display: grid; gap: 2px; }
.opcion__titulo {
  font-weight: 550;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.opcion__detalle {
  font-size: .8125rem;
  color: var(--tinta-suave);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}
/* El monto es lo único que se tipea: grande y en tabular. */
.campo__monto {
  font-size: 1.75rem;
  font-weight: 600;
  text-align: center;
  font-variant-numeric: tabular-nums;
  min-height: 64px;
}

/* ---------- Marca de programa / grupo, versión TEXTO ----------
   La otra versión es `.tag` (color pleno). Esta se usa donde el programa o
   el grupo ES la fila — Catálogo, Asistencia — porque un renglón de
   pastillas de color pleno una abajo de la otra no se lee. Ver el bloque
   de comentarios de marcaDeGrupo en core.js. */
.marca {
  display: flex;
  align-items: center;
  gap: var(--e2);
  min-width: 0;
}
.marca__nombre {
  font-weight: 550;
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* La letra del grupo. Igual en las dos versiones y en todas las pantallas:
   el (A) del Catálogo es el mismo (A) de Asistencia. */
.letra {
  flex: 0 0 auto;
  display: grid;
  place-items: center;
  min-width: 24px;
  height: 24px;
  padding: 0 6px;
  border-radius: var(--radio-pill);
  font-size: .75rem;
  font-weight: 700;
}
.letra--1 { background: var(--marca-1); color: #ffffff; }
.letra--2 { background: var(--marca-2); color: var(--tinta); }
.letra--3 { background: var(--marca-3); color: var(--tinta); }
.letra--4 { background: var(--marca-4); color: var(--tinta); }
.letra--5 { background: var(--marca-5); color: var(--tinta); }
.letra--6 { background: var(--marca-6); color: var(--tinta); }

/* ---------- Acordeón del Catálogo ---------- */
.acorde { border-bottom: 1px solid var(--linea); }

.acorde__cabeza {
  display: flex;
  align-items: center;
  gap: var(--e3);
  width: 100%;
  min-height: var(--toque);
  padding: var(--e3) 0;
  border: 0;
  background: none;
  text-align: left;
}
.acorde__cabeza:active { background: var(--fondo-hover); }
.acorde__cabeza .marca { flex: 1; }

/* A la derecha y girando: es donde se la busca. */
.acorde__flecha {
  flex: 0 0 auto;
  color: var(--tinta-suave);
  font-size: 1.125rem;
  line-height: 1;
  transition: transform .18s ease;
}
.acorde__cabeza[aria-expanded="true"] .acorde__flecha { transform: rotate(180deg); }

/* El panel se separa por FONDO, no por un margen con línea al costado: la
   línea parecía un adorno y no agrupaba nada. */
.acorde__panel {
  background: var(--fondo-tenue);
  border-top: 1px solid var(--linea);
  border-radius: var(--radio);
  padding: var(--e2) var(--e3) var(--e3);
  margin-bottom: var(--e3);
}

/* Acciones del panel: van juntas al final y con otra forma, para que no se
   lean como una fila más de la lista de grupos. */
.acorde__acciones {
  display: flex;
  gap: var(--e2);
  margin-top: var(--e2);
}
.acorde__acciones .btn { flex: 1; }

/* Fila de grupo, adentro del panel o suelta */
.grupo-fila {
  display: flex;
  align-items: center;
  gap: var(--e3);
  width: 100%;
  min-height: var(--toque);
  padding: var(--e2) 0;
  border: 0;
  border-bottom: 1px solid var(--linea);
  background: none;
  text-align: left;
}
.grupo-fila:last-of-type { border-bottom: 0; }
.grupo-fila:active { background: var(--fondo-hover); }
.grupo-fila__texto { flex: 1; min-width: 0; display: grid; gap: 2px; }
/* Siempre una sola línea: si no entra, se corta. */
.grupo-fila__detalle {
  font-size: .875rem;
  color: var(--tinta-media);
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Resultados de la búsqueda de alumno, dentro de la hoja de alta */
.resultados {
  margin-top: var(--e2);
  border: 1px solid var(--linea);
  border-radius: var(--radio);
  max-height: 240px;
  overflow-y: auto;
}
.resultados .persona { padding: var(--e3); }
.resultados .persona:last-child { border-bottom: 0; }

/* ---------- Estados de lista ---------- */
.vacio { padding: var(--e8) var(--e5); text-align: center; color: var(--tinta-suave); }
.vacio__titulo { font-weight: 550; color: var(--tinta-media); margin-bottom: var(--e1); }

.cargando { padding: var(--e5); display: flex; justify-content: center; }
.spinner {
  width: 20px; height: 20px;
  border: 2px solid var(--linea-fuerte);
  border-top-color: var(--tinta);
  border-radius: 50%;
  animation: girar .7s linear infinite;
}
@keyframes girar { to { transform: rotate(360deg); } }

/* Encabezado de grupo dentro de una lista */
.grupo-titulo {
  padding: var(--e4) var(--e4) var(--e2);
  font-size: .8125rem;
  font-weight: 550;
  color: var(--tinta-suave);
  letter-spacing: .02em;
  text-transform: uppercase;
}

.aviso {
  display: flex;
  gap: var(--e3);
  padding: var(--e3) var(--e4);
  border-bottom: 1px solid var(--linea);
  font-size: .875rem;
}
.aviso--alerta { background: var(--alerta-tenue); color: var(--alerta); }
.aviso--error  { background: var(--error-tenue);  color: var(--error); }
.aviso--suelto { border-radius: var(--radio); border-bottom: 0; margin-bottom: var(--e1); }

/* ============================================================
   5. BLOQUES
   ============================================================ */

/* ---------- Mensaje momentáneo ---------- */
.toast {
  position: fixed;
  left: 50%;
  bottom: calc(var(--alto-nav) + var(--e5));
  transform: translate(-50%, 12px);
  z-index: 60;
  max-width: min(420px, calc(100vw - 32px));
  padding: var(--e3) var(--e4);
  border-radius: var(--radio);
  background: var(--tinta);
  color: #fff;
  font-size: .875rem;
  box-shadow: var(--sombra);
  opacity: 0;
  pointer-events: none;
  transition: opacity .2s ease, transform .2s ease;
}
.toast--visible { opacity: 1; transform: translate(-50%, 0); }
.toast--error { background: var(--error); }

/* ---------- Gate de PIN ---------- */
.gate {
  position: fixed;
  inset: 0;
  z-index: 100;
  display: flex;
  flex-direction: column;
  justify-content: center;
  gap: var(--e5);
  padding: var(--e6) var(--e5);
  background: var(--fondo);
}
.gate__marca { font-size: 1.5rem; font-weight: 600; letter-spacing: -0.03em; }
.gate__sub { color: var(--tinta-suave); font-size: .9375rem; margin-top: var(--e1); }
.gate__pin {
  width: 100%;
  min-height: 60px;
  padding: 0 var(--e4);
  text-align: center;
  font-size: 1.75rem;
  font-weight: 600;
  letter-spacing: .6em;
  text-indent: .6em;              /* compensa el espaciado del último dígito */
  border: 1px solid var(--linea-fuerte);
  border-radius: var(--radio);
}
.gate__pin:focus { outline: none; border-color: var(--tinta); }
.gate__error { color: var(--error); font-size: .875rem; min-height: 20px; text-align: center; }

.sacudir { animation: sacudir .3s ease; }
@keyframes sacudir {
  25% { transform: translateX(-6px); }
  75% { transform: translateX(6px); }
}

/* ---------- Selector de perfil ---------- */
.perfiles { display: grid; gap: var(--e3); }
.perfil {
  display: flex;
  align-items: center;
  gap: var(--e4);
  padding: var(--e4);
  border: 1px solid var(--linea-fuerte);
  border-radius: var(--radio);
  background: var(--fondo);
  text-align: left;
}
.perfil:active { background: var(--fondo-hover); }
.perfil__inicial {
  width: 40px; height: 40px;
  display: grid; place-items: center;
  border-radius: 50%;
  background: var(--fondo-hover);
  font-weight: 600;
}
.perfil__nombre { font-weight: 550; }
.perfil__rol { font-size: .8125rem; color: var(--tinta-suave); }

/* ---------- Hoja inferior ---------- */
.hoja-fondo {
  position: fixed; inset: 0; z-index: 40;
  background: rgba(26,26,26,.28);
  opacity: 0; pointer-events: none;
  transition: opacity .2s ease;
}
.hoja-fondo--visible { opacity: 1; pointer-events: auto; }
.hoja {
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: 41;
  max-width: var(--ancho-app);
  margin: 0 auto;
  max-height: 88vh;
  display: flex;
  flex-direction: column;
  background: var(--fondo);
  border-radius: 16px 16px 0 0;
  box-shadow: var(--sombra);
  transform: translateY(100%);
  transition: transform .24s cubic-bezier(.32,.72,0,1);
}
.hoja--visible { transform: translateY(0); }
.hoja__asa {
  width: 34px; height: 4px;
  margin: var(--e2) auto var(--e1);
  border-radius: 2px;
  background: var(--linea-fuerte);
}
.hoja__cabecera {
  display: flex; align-items: center; gap: var(--e3);
  padding: var(--e3) var(--e4);
  border-bottom: 1px solid var(--linea);
}
.hoja__titulo { flex: 1; min-width: 0; }
.hoja__cuerpo { flex: 1; overflow-y: auto; padding: var(--e4); }
.hoja__pie {
  display: flex; gap: var(--e2); flex-wrap: wrap;
  padding: var(--e4);
  padding-bottom: calc(var(--e4) + env(safe-area-inset-bottom, 0px));
  border-top: 1px solid var(--linea);
}
.hoja__pie .btn { flex: 1; }

/* Caja destacada dentro de una ficha (el total pagado) */
.destacado {
  margin: var(--e4) 0;
  padding: var(--e3);
  background: var(--fondo-tenue);
  border-radius: var(--radio);
}
.destacado__titulo { font-size: .8125rem; color: var(--tinta-suave); }
.destacado__valor { font-size: 1.25rem; font-weight: 600; font-variant-numeric: tabular-nums; }

/* ============================================================
   6. UTILIDADES
   ============================================================ */
.num        { font-variant-numeric: tabular-nums; }
.subtitulo  { margin: var(--e5) 0 var(--e1); color: var(--tinta-media); }
.apilado    { display: grid; gap: var(--e2); }
.con-aire   { padding: var(--e4); }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
  }
}
