/*
 * This is a manifest file that'll be compiled into application.css, which will include all the files
 * listed below.
 *
 * Any CSS (and SCSS, if configured) file within this directory, lib/assets/stylesheets, or any plugin's
 * vendor/assets/stylesheets directory can be referenced here using a relative path.
 *
 * You're free to add application-wide styles to this file and they'll appear at the bottom of the
 * compiled file so the styles you add here take precedence over styles defined in any other CSS
 * files in this directory. Styles in this file should be added after the last require_* statement.
 * It is generally better to create a new file per style scope.
 *


 */

/* Animation easing curves */
:root {
  --ease-out-quart: cubic-bezier(0.25, 1, 0.5, 1);
  --ease-out-expo: cubic-bezier(0.16, 1, 0.3, 1);
}

/* Flash message animations */
@keyframes flash-enter {
  from {
    opacity: 0;
    transform: translateY(-0.5rem);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@keyframes flash-exit {
  from {
    opacity: 1;
    transform: translateY(0);
  }
  to {
    opacity: 0;
    transform: translateY(-0.5rem);
  }
}

.flash-message {
  animation: flash-enter 0.3s var(--ease-out-quart);
}

.flash-message.removing {
  animation: flash-exit 0.2s var(--ease-out-quart) forwards;
}

/* Mobile menu animation */
@keyframes menu-enter {
  from {
    opacity: 0;
    transform: translateY(-0.25rem);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

#mobile-menu:not(.hidden) {
  animation: menu-enter 0.2s var(--ease-out-quart);
}

/* Button active state */
button:active:not(:disabled),
input[type="submit"]:active:not(:disabled) {
  transform: scale(0.97);
}

/* Smooth focus transitions */
input:focus,
button:focus,
a:focus {
  transition: box-shadow 0.15s var(--ease-out-quart),
              border-color 0.15s var(--ease-out-quart);
}

/* Card lift effect on hover */
.card-hover {
  transition: transform 0.2s var(--ease-out-quart),
              box-shadow 0.2s var(--ease-out-quart),
              border-color 0.2s var(--ease-out-quart);
}

.card-hover:hover {
  transform: translateY(-2px);
}

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