* { font-family: 'IBM Plex Sans', sans-serif; }
.mono { font-family: 'IBM Plex Mono', monospace; }

body { margin: 0; }

.login-bg {
  background: radial-gradient(circle at 30% 20%, #117ACA 0%, #0A2540 55%, #061829 100%);
}

/* animations */
@keyframes fadeUp { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: translateY(0); } }
.fade-up { animation: fadeUp .5s cubic-bezier(.2,.8,.2,1) both; }

@keyframes toastIn { from { opacity: 0; transform: translate(-50%, 20px); } to { opacity: 1; transform: translate(-50%, 0); } }
.toast { animation: toastIn .3s ease both; }

@keyframes barGrow { from { width: 0 !important; } }
.bar-grow { animation: barGrow .8s cubic-bezier(.2,.8,.2,1) both; }

.card-hover { transition: transform .2s ease, box-shadow .2s ease; }
.card-hover:hover { transform: translateY(-3px); box-shadow: 0 10px 30px rgba(10,37,64,.12); }

/* 3D flip card */
.card-scene { perspective: 1000px; cursor: pointer; }
.card-3d {
  position: relative;
  width: 100%;
  height: 200px;
  transform-style: preserve-3d;
  transition: transform .6s cubic-bezier(.2,.8,.2,1);
}
.card-3d.flipped { transform: rotateY(180deg); }
.card-face {
  position: absolute;
  inset: 0;
  border-radius: 18px;
  padding: 20px;
  backface-visibility: hidden;
  box-shadow: 0 14px 40px rgba(10,37,64,.35);
  overflow: hidden;
}
.card-back { transform: rotateY(180deg); }

.frost {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  font-size: 3rem;
  background: rgba(200,230,255,.35);
  backdrop-filter: blur(4px);
  border-radius: 18px;
}

/* scrollbar tidy */
::-webkit-scrollbar { width: 8px; height: 8px; }
::-webkit-scrollbar-thumb { background: #cbd5e1; border-radius: 8px; }