/* Estilos para el sistema de loading */

/* Preloader - solo se muestra brevemente durante la carga inicial */
.preloader {
  position: fixed;
  top: 0;
  left: 0;
  width: 100%;
  height: 100%;
  background-color: #ffffff;
  display: flex;
  justify-content: center;
  align-items: center;
  z-index: 9999;
  transition: opacity 0.5s ease-in-out, visibility 0.5s ease-in-out;
}

.preloader.hidden {
  opacity: 0;
  visibility: hidden;
}

.spinner {
  width: 60px;
  height: 60px;
  border: 5px solid rgba(76, 175, 80, 0.2);
  border-radius: 50%;
  border-top-color: #4caf50;
  animation: spin 1s ease-in-out infinite;
}

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

/* Placeholder para imágenes con lazy loading */
.img-placeholder {
  background-color: #f0f0f0;
  position: relative;
  overflow: hidden;
}

.img-placeholder::before {
  content: "";
  display: block;
  position: absolute;
  left: -150px;
  top: 0;
  height: 100%;
  width: 150px;
  background: linear-gradient(to right, transparent 0%, rgba(255, 255, 255, 0.6) 50%, transparent 100%);
  animation: shimmer 1.5s infinite;
}

@keyframes shimmer {
  to {
    left: 100%;
  }
}

/* Botón de carga */
.loading-btn {
  position: relative;
  overflow: hidden;
}

.loading-btn.loading {
  pointer-events: none;
}

.loading-btn.loading .btn-text {
  visibility: hidden;
}

.loading-btn.loading::after {
  content: "";
  position: absolute;
  width: 20px;
  height: 20px;
  border: 3px solid rgba(255, 255, 255, 0.3);
  border-top-color: white;
  border-radius: 50%;
  left: calc(50% - 10px);
  top: calc(50% - 10px);
  animation: spin 1s linear infinite;
}
