

@keyframes dgPageIn { from { opacity: 0; transform: translateY(10px); } to { opacity: 1; transform: none; } }
@keyframes dgModalIn { from { opacity: 0; transform: translateY(18px) scale(.96); } to { opacity: 1; transform: none; } }
@keyframes dgOverlayIn { from { opacity: 0; } to { opacity: 1; } }
@keyframes dgDropIn { from { opacity: 0; transform: translateY(-6px) scale(.98); } to { opacity: 1; transform: none; } }
@keyframes dgToastIn { from { opacity: 0; transform: translateY(-10px) scale(.97); } to { opacity: 1; transform: none; } }
@keyframes dgShine { from { background-position: 150% 0; } to { background-position: -100% 0; } }
@keyframes dgPulse { 0%, 100% { opacity: 1; } 50% { opacity: .45; } }
@keyframes dgSlideInRight { from { transform: translateX(28px); opacity: 0; } to { transform: none; opacity: 1; } }

.page { animation: dgPageIn .45s var(--dg-ease) both; }
.popup-overlay, .modal-overlay, .dg-confirm-overlay { animation: dgOverlayIn .2s ease both; }
.popup-box, .modal-content, .dg-confirm-dialog { animation: dgModalIn .3s var(--dg-ease) both; }
.home-quick-access__panel { animation: dgSlideInRight .35s var(--dg-ease) both; }
.notification-panel:not([hidden]) { animation: dgDropIn .22s var(--dg-ease) both; }

.team-member-card, .player-manager-card, .query-server-card, .role-group-card, .whitelist-server-card, .moderation-preset-entry {
  transition: transform .3s var(--dg-ease), border-color .3s var(--dg-ease), background .3s var(--dg-ease);
}

.team-member-card:hover, .player-manager-card:hover, .query-server-card:hover, .role-group-card:hover, .whitelist-server-card:hover, .moderation-preset-entry:hover {
  transform: translateY(-2px);
  border-color: rgba(var(--dg-highlight-rgb), .35);
}

.team-member-grid > * { animation: dgPageIn .5s var(--dg-ease) both; }
.team-member-grid > *:nth-child(2) { animation-delay: .04s; }
.team-member-grid > *:nth-child(3) { animation-delay: .08s; }
.team-member-grid > *:nth-child(4) { animation-delay: .12s; }
.team-member-grid > *:nth-child(n+5) { animation-delay: .16s; }

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition: none !important; scroll-behavior: auto !important; }
}

@keyframes dgAlertBlink { 0%, 100% { opacity: 1; } 50% { opacity: .25; } }
.nav-alert { flex: 0 0 auto; display: grid; width: 18px; height: 18px; place-items: center; border-radius: 50%; background: var(--dg-danger); color: #fff; font-size: 12px; font-weight: 800; line-height: 1; animation: dgAlertBlink 1.1s ease-in-out infinite; }
@media (prefers-reduced-motion: reduce) { .nav-alert { animation: none; } }
