@keyframes mesh-gradient {
  0% { background-position: 0% 50%; }
  50% { background-position: 100% 50%; }
  100% { background-position: 0% 50%; }
}
@keyframes float-blob {
  0% { transform: translate(0px, 0px) scale(1); }
  33% { transform: translate(30px, -50px) scale(1.1); }
  66% { transform: translate(-20px, 20px) scale(0.9); }
  100% { transform: translate(0px, 0px) scale(1); }
}

/* FIX KHUSUS MOBILE: Mencegah area putih saat scroll */
html {
  background-color: #0f172a; /* Warna dasar agar transisi tidak putih */
  height: 100%;
}

body {
  margin: 0;
  font-family: 'Plus Jakarta Sans', sans-serif;
  /* Tambahan 'fixed' agar gradien mengunci di layar mobile */
  background: linear-gradient(-45deg, #0f172a, #1e293b, #0f172a, #111827) fixed;
  background-size: 400% 400%;
  animation: mesh-gradient 15s ease infinite;
  color: #e2e8f0;
  position: relative;
  min-height: 100vh;
  overflow-x: hidden; /* Mencegah geser kanan-kiri yang tidak sengaja di mobile */
}

.blob {
  position: fixed;
  width: 500px;
  height: 500px;
  border-radius: 50%;
  filter: blur(80px);
  z-index: -1;
  opacity: 0.25;
  animation: float-blob 20s infinite alternate;
}
.blob-1 { background: #3b82f6; top: -10%; left: -10%; animation-delay: 0s; }
.blob-2 { background: #06b6d4; bottom: -10%; right: -10%; animation-delay: -5s; }
.blob-3 { background: #6366f1; top: 40%; left: 30%; animation-delay: -10s; width: 300px; height: 300px; }

body.login-active { overflow: hidden; }
body.dashboard-active { overflow-y: auto; }

.glass-card { background: rgba(255, 255, 255, 0.05); backdrop-filter: blur(20px); border: 1px solid rgba(255, 255, 255, 0.1); }
.dashboard-card { background: rgba(255, 255, 255, 0.03); backdrop-filter: blur(25px); border: 1px solid rgba(255, 255, 255, 0.08); transition: all 0.3s ease; height: 100%; display: flex; flex-direction: column; }
.dashboard-card:hover { background: rgba(255, 255, 255, 0.06); border-color: rgba(255, 255, 255, 0.15); transform: translateY(-2px); }
.icon-box { background: rgba(255,255,255,0.08); border: 1px solid rgba(255,255,255,0.1); display: flex; align-items: center; justify-content: center; }
.glass-input { background: rgba(255, 255, 255, 0.05) !important; border: 1px solid rgba(255, 255, 255, 0.15) !important; color: white !important; }
.data-item-box { background: rgba(255, 255, 255, 0.02); border: 1px solid rgba(255, 255, 255, 0.05); border-radius: 1rem; padding: 1rem; }
.stat-item-box-small { 
  background: rgba(255, 255, 255, 0.03); 
  border: 1px solid rgba(255, 255, 255, 0.05); 
  border-radius: 1.25rem; 
  padding: 1.5rem 0.5rem; 
  display: flex; 
  flex-direction: column; 
  align-items: center; 
  justify-content: center; 
  text-align: center; 
  gap: 0.75rem; 
  flex: 1; 
}

/* Animasi tombol saat ditekan */
#btnSignIn:active {
  transform: scale(0.95);
}

/* Efek bercahaya saat hover */
#btnSignIn:hover {
  background-color: #f8fafc;
  box-shadow: 0 10px 25px -5px rgba(255, 255, 255, 0.2);
}

/* Transisi halus untuk konten tombol */
#btnText, #loader {
  transition: all 0.3s ease-in-out;
}