/*
 * idSwift — indicador de "campo calculándose", comun a la suite.
 * ---------------------------------------------------------------------------
 * POR QUE VIVE AQUI
 *   Mismo motivo que lang-toggle.css: `regcard/assets` es el directorio de
 *   assets COMPARTIDO en config/deploy-manifest.json y se copia como `assets/`
 *   a regcard, frontdesk, folio, precheckin-register, precheckin-dashboard y
 *   ses-web-control. scanner lo recibe por una entrada explicita en su
 *   `staticDirs`. Tres copias del mismo CSS es justo la deriva que ya nos ha
 *   costado sustos en este repo.
 *
 * PARA QUE
 *   El codigo postal no se escribe solo: sale de una o dos llamadas al
 *   geocodificador que pueden tardar segundos. Sin senal, recepcion ve un campo
 *   vacio y no sabe si esta pensando, si ha fallado o si tiene que teclearlo.
 *
 * USO
 *   <link rel="stylesheet" href="/assets/css/field-spinner.css" />
 *   IdswiftFieldSpinner.show(campo)  /  .hide(campo)
 *   El helper marca el contenedor con .idswift-field-busy y le cuelga el
 *   <span class="idswift-field-spinner">.
 */

/* El contenedor necesita ser el ancla del posicionamiento absoluto. Se aplica
   solo mientras hay spinner, para no cambiar el layout del resto del tiempo. */
.idswift-field-busy {
  position: relative;
}

.idswift-field-spinner {
  position: absolute;
  right: 8px;
  top: 50%;
  width: 12px;
  height: 12px;
  margin-top: -6px;
  border: 2px solid rgba(19, 85, 109, 0.25);
  border-top-color: #13556d;
  border-radius: 50%;
  animation: idswift-field-spin 0.7s linear infinite;
  /* No puede robarle el clic ni el foco al campo que decora. */
  pointer-events: none;
  z-index: 2;
}

@keyframes idswift-field-spin {
  to { transform: rotate(360deg); }
}

/* Un indicador de proceso no significa nada en un papel ni en el PDF firmado
   que se archiva: es estado de la pantalla, no dato de la tarjeta. */
@media print {
  .idswift-field-spinner { display: none !important; }
}

body.pdf-mode .idswift-field-spinner { display: none !important; }

/* Respeta a quien pide menos movimiento: se queda como un punto fijo, que
   sigue diciendo "esto esta ocupado" sin animacion. */
@media (prefers-reduced-motion: reduce) {
  .idswift-field-spinner { animation: none; border-top-color: rgba(19, 85, 109, 0.25); }
}

/* Spinner EN LÍNEA, junto al texto de un rótulo ("Country *  ◌"). Lo usa el juez
   de coherencia de dirección mientras espera al modelo: el contenedor del País
   incluye el chip y los botones, así que la variante absoluta caía fuera del
   campo. Mismo trazo y misma animación que el de campo, algo más pequeño. */
.idswift-inline-spinner {
  display: inline-block;
  width: 10px;
  height: 10px;
  margin-left: .45em;
  vertical-align: -1px;
  border: 2px solid rgba(19, 85, 109, 0.25);
  border-top-color: #13556d;
  border-radius: 50%;
  animation: idswift-field-spin 0.7s linear infinite;
}
