/* Анимации появления */
@keyframes fadeInUp {
  from {
    opacity: 0;
    transform: translateY(16px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes fadeIn {
  from { opacity: 0; }
  to { opacity: 1; }
}

/* Карточки и блоки с задержкой по очереди */
.dashboard-card,
.stat-card,
.module-card {
  animation: fadeInUp 0.45s ease both;
}

.dashboard-card:nth-child(1) { animation-delay: 0.05s; }
.dashboard-card:nth-child(2) { animation-delay: 0.1s; }
.dashboard-card:nth-child(3) { animation-delay: 0.15s; }
.dashboard-card:nth-child(4) { animation-delay: 0.2s; }
.dashboard-card:nth-child(5) { animation-delay: 0.25s; }
.dashboard-card:nth-child(6) { animation-delay: 0.3s; }
.dashboard-card:nth-child(7) { animation-delay: 0.35s; }
.dashboard-card:nth-child(8) { animation-delay: 0.4s; }
.dashboard-card:nth-child(9) { animation-delay: 0.45s; }
.dashboard-card:nth-child(10) { animation-delay: 0.5s; }

.director-shell .director-header,
.student-shell .student-header,
.teacher-shell .teacher-header,
.curator-shell .curator-header,
.admin-dashboard .admin-header {
  animation: fadeInUp 0.4s ease both;
}

.director-summary-card,
.student-profile-card,
.teacher-profile-card,
.curator-profile-card,
.admin-profile-card {
  animation: fadeInUp 0.4s ease 0.08s both;
}

/* Плавные переходы для кнопок и карточек */
.soft-btn,
.table-btn,
.teacher-primary-btn,
.teacher-secondary-btn,
.dashboard-card {
  transition: transform 0.2s ease, box-shadow 0.2s ease, opacity 0.2s ease;
}

.soft-btn:hover,
.table-btn:hover {
  transform: translateY(-2px);
  box-shadow: 0 8px 20px rgba(74, 65, 111, 0.2);
}

.dashboard-card:hover {
  box-shadow: 0 18px 40px rgba(120, 110, 160, 0.12);
}

/* Тост */
.app-toast {
  position: fixed;
  bottom: 24px;
  left: 50%;
  transform: translateX(-50%);
  padding: 12px 20px;
  background: #333;
  color: #fff;
  border-radius: 10px;
  font-size: 14px;
  opacity: 0;
  transition: opacity 0.3s ease;
  pointer-events: none;
  z-index: 9999;
  max-width: 90%;
}
.app-toast.is-visible {
  opacity: 1;
}

.auth-message {
  min-height: 22px;
  margin: 14px 4px 0;
  font-size: 14px;
  font-weight: 600;
  color: #b44f6b;
}
.auth-message.is-success {
  color: #4d7d57;
}
