@keyframes dh-toast-in { from { opacity: 0; transform: translateY(-12px) scale(0.96); } to { opacity: 1; transform: translateY(0) scale(1); } }
.dh-toast { animation: dh-toast-in 200ms ease-out both; }

@keyframes dh-modal-in { from { opacity: 0; transform: scale(0.95) translateY(6px); } to { opacity: 1; transform: scale(1) translateY(0); } }
.dh-modal-overlay { opacity: 0; transition: opacity 150ms ease; }
.dh-modal-overlay.dh-modal-open { opacity: 1; }
.dh-modal-overlay.dh-modal-open .dh-modal-card { animation: dh-modal-in 200ms ease-out both; }

@keyframes dh-lightbox-in { from { opacity: 0; transform: scale(0.96); } to { opacity: 1; transform: scale(1); } }
.dh-lightbox { opacity: 0; transition: opacity 150ms ease; }
.dh-lightbox.dh-lightbox-open { opacity: 1; }
.dh-lightbox.dh-lightbox-open img { animation: dh-lightbox-in 200ms ease-out both; }

@keyframes dh-skeleton { 0% { background-position: -200% 0; } 100% { background-position: 200% 0; } }
.dh-skeleton {
  background: linear-gradient(90deg, #e2e8f0 0%, #f1f5f9 50%, #e2e8f0 100%);
  background-size: 200% 100%;
  animation: dh-skeleton 1.4s ease-in-out infinite;
  border-radius: 8px;
}

.scrollbar-hide { scrollbar-width: none; -ms-overflow-style: none; }
.scrollbar-hide::-webkit-scrollbar { display: none; }

@media (prefers-reduced-motion: reduce) {
  .dh-toast, .dh-modal-overlay, .dh-modal-overlay .dh-modal-card,
  .dh-lightbox, .dh-lightbox img, .dh-skeleton { animation: none !important; transition: none !important; }
}
