.fade-in { animation: fadeIn 0.25s ease-out; }

@keyframes fadeIn {
  from { opacity: 0; transform: translateY(6px); }
  to { opacity: 1; transform: translateY(0); }
}

.card-usuario, .btn, .btn-secundario, .btn-peligro, .sidebar-link, .tab-btn, .tabla tbody tr, .form-grid input, .form-grid select, .buscador, .theme-toggle {
  transition: transform 0.15s ease, box-shadow 0.15s ease, background 0.15s ease, border-color 0.15s ease, color 0.15s ease, opacity 0.15s ease;
}

.modal-overlay { animation: fadeIn 0.15s ease-out; }
.modal-card { animation: modalIn 0.18s var(--ease-out, ease-out); }

@keyframes modalIn {
  from { opacity: 0; transform: scale(0.96) translateY(4px); }
  to { opacity: 1; transform: scale(1) translateY(0); }
}

.card-usuario:hover, .btn:hover, .btn-secundario:hover, .btn-peligro:hover { transform: translateY(-2px); box-shadow: var(--sombra-md); }
.tabla tbody tr:hover { background: var(--color-superficie-alt); }

.btn:active, .btn-secundario:active, .btn-peligro:active, .card-usuario:active {
  transform: scale(0.97) translateY(0);
  box-shadow: none;
}

.btn:disabled, .btn-secundario:disabled, .btn-peligro:disabled {
  opacity: 0.55;
  cursor: not-allowed;
  transform: none;
  box-shadow: none;
}

.sidebar-link.activo {
  background: rgba(255, 255, 255, 0.14);
  color: #fff;
  font-weight: 600;
  border-left: 3px solid var(--color-primario);
  padding-left: 13px;
}

@media (max-width: 720px) {
  .sidebar-link.activo {
    border-left: none;
    border-bottom: 3px solid var(--color-primario);
    padding-left: var(--sp-4);
    padding-bottom: calc(var(--sp-3) - 3px);
  }
}

.tabla tbody tr {
  animation: filaIn 0.2s ease-out both;
}

@keyframes filaIn {
  from { opacity: 0; transform: translateY(4px); }
  to { opacity: 1; transform: translateY(0); }
}

.toast-enter { animation: toastIn 0.2s ease-out; }

@keyframes toastIn {
  from { opacity: 0; transform: translateY(12px); }
  to { opacity: 1; transform: translateY(0); }
}

@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: 0.001ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.001ms !important;
    scroll-behavior: auto !important;
  }
}
