/* SCREEN SHINE ------------------------------------------------------------- */
#screen-shine {
  position: fixed;
  top: -50%;
  left: -50%;
  width: 200%;
  height: 200%;
  pointer-events: none;
  z-index: 9999;
  opacity: 0;

  /* diagonal slanted gradient: white in middle, transparent at edges */
  background: linear-gradient(
    90deg,               /* gradient goes across its width */
    rgba(255,255,255,0) 0%,  /* start transparent */
    rgba(255, 255, 255, 0.2) 50%, /* center opaque */
    rgba(255,255,255,0) 100% /* end transparent */
  );

  transform: rotate(30deg) translateX(-100%);
  will-change: transform, opacity;  /* hint browser for GPU compositing */
  backface-visibility: hidden;      /* further GPU optimization */
}


/* SPINNER ------------------------------------------------------------------*/

/* Spinner container (minimal styling for centering) */
.loading-spinner {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 9999;

  display: flex;
  align-items: center;
  justify-content: center;
}

/* Spinner animation */
.spinner {
  width: 256px;
  height: 256px;
  border: 1px solid #ff00ff;
  border-top: 3px solid #00ffff;
  border-radius: 40%;
  animation: spin 0.8s linear infinite;
}

.hidden {
  display: none;
}

@keyframes spin {
  to {
    transform: rotate(720deg);
  }
}

@keyframes fadeInOut {
  0% { opacity: 0; }
  20% { opacity: 1; }
  80% { opacity: 1; }
  100% { opacity: 0; }
}

.fade-animation {
  animation: fadeInOut 1s ease-in-out forwards;
}

@keyframes scaleUp {
  0% {
    transform: translate(-50%, -50%) scale(0.5);
    opacity: 0;
  }
  100% {
    transform: translate(-50%, -50%) scale(1);
    opacity: 1;
  }
}

.scale-up {
  animation: scaleUp 0.6s ease-out forwards;
}


/*----- WIFI WARNING ----------------------------------------------*/
.wifi-warning {
  position: fixed;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%);
  z-index: 10000;
  text-align: center;
}

.wifi-icon {
  width: 48px;
  height: 48px;
  animation: wifi-blink 1s infinite ease-in-out;
}

@keyframes wifi-blink {
  0%, 100% { opacity: 0; transform: scale(0.95); }
  50% { opacity: 0.8; transform: scale(1); }
}

.hidden {
  display: none;
}