/* Login cross-device (number-matching) — estilos COMPARTIDOS por el Portal de Padres y el Panel
   de Administración (#291279).

   Vivían sólo en el site.css del Portal. Al darle number-matching también al Panel había que
   elegir entre copiarlos o compartirlos; copiarlos significaba que el día que alguien retocara la
   caja del código, una de las dos pantallas se quedaría atrás sin que nadie se enterara.

   Cada color se pide como variable CON VALOR DE RESPALDO: donde la app define su paleta (el
   Portal) manda la paleta; donde no (el Panel), el respaldo deja la caja presentable sin obligar
   al Panel a adoptar variables que no son suyas. */
.nm-box {
  margin-top: .9rem; text-align: center;
  background: var(--tint-cream, #F8F5F4);
  border: 1px solid var(--line, #ece6e3);
  border-radius: var(--r, .75rem);
  padding: .95rem 1rem;
}
.nm-label { font-size: .84rem; color: var(--ink-soft, #6b6560); }
.nm-code {
  font-weight: 700; letter-spacing: .28em;
  color: var(--brand-blue-text, #33424A);
  font-size: 2.2rem; line-height: 1.2; margin: .35rem 0 .25rem;
  font-variant-numeric: tabular-nums;
}
.nm-code-lg { font-size: 3.2rem; margin: 1rem 0 1.25rem; text-align: center; }
.nm-hint { font-size: .8rem; color: var(--ink-soft, #6b6560); }
.nm-status {
  display: flex; align-items: center; justify-content: center; gap: .45rem;
  margin-top: .7rem; font-size: .82rem; color: var(--brand-slate-strong, #4A5A62);
}
.nm-dot {
  width: .55rem; height: .55rem; border-radius: 50%;
  background: var(--brand-green, #7BBC75); box-shadow: 0 0 0 0 rgba(123,188,117,.55);
  animation: nm-pulse 1.4s ease-out infinite;
}
@keyframes nm-pulse {
  0%   { box-shadow: 0 0 0 0 rgba(123,188,117,.55); }
  70%  { box-shadow: 0 0 0 .5rem rgba(123,188,117,0); }
  100% { box-shadow: 0 0 0 0 rgba(123,188,117,0); }
}
@media (prefers-reduced-motion: reduce) { .nm-dot { animation: none; } }
