/* Shared Admin loading visuals. Callers own geometry, placement and visibility.
 * Inline spans must generate a transformable box; centering stays on parents. */
.admin-route-loader__spinner,
.page-loader__spinner,
.cmd-spinner,
.cmd-spinner-inline,
.gl-spinner,
.cfg-cep-spinner,
.va-combobox-spinner,
.va-processing-spinner,
.va-version-spinner,
.va-loader-dot {
  border-radius: 50%;
  border-color: rgba(24, 35, 55, .18);
  border-top-color: #2563EB;
}
.page-loader__spinner { display: inline-block; }
.admin-route-loader__spinner,
.page-loader__spinner,
.cmd-spinner,
.cmd-spinner-inline,
.gl-spinner,
.cfg-cep-spinner,
.va-combobox-spinner,
.va-processing-spinner,
.va-version-spinner,
.va-loader-dot,
.assinatura-action .is-spinning,
.va-icon-only.is-loading svg {
  /* Loading feedback keeps rotating even when decorative motion is reduced. */
  --admin-spinner-duration: .9s;
  --admin-spinner-iterations: infinite;
  --admin-spinner-animation: vendeaki-admin-spinner-turn .9s linear infinite;
  animation: var(--admin-spinner-animation);
}
@keyframes vendeaki-admin-spinner-turn {
  from { transform: rotate(0deg); }
  to { transform: rotate(360deg); }
}
