/*
 * This is a manifest file that'll be compiled into application.css.
 *
 * With Propshaft, assets are served efficiently without preprocessing steps. You can still include
 * application-wide styles in this file, but keep in mind that CSS precedence will follow the standard
 * cascading order, meaning styles declared later in the document or manifest will override earlier ones,
 * depending on specificity.
 *
 * Consider organizing styles into separate files for maintainability.
 */

/* Alpine.js x-cloak directive */
[x-cloak] {
  display: none !important;
}

/* ---------------------------------------------------------------------------
 * Motion tokens + scroll reveal
 * A single fluid easing curve (mass + spring feel) used across the public site,
 * and the progressive-enhancement classes applied by reveal_controller.js.
 * ------------------------------------------------------------------------- */
:root {
  --ease-fluid: cubic-bezier(0.32, 0.72, 0, 1);
}

.reveal-init {
  opacity: 0;
  transform: translateY(1.75rem);
}

.reveal-active {
  transition:
    opacity 0.9s var(--ease-fluid),
    transform 0.9s var(--ease-fluid);
  will-change: opacity, transform;
}

.reveal-in {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .reveal-init,
  .reveal-active,
  .reveal-in {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }
}

/* ---------------------------------------------------------------------------
 * Turbo Frame loading state
 * While a frame navigation is in flight, Turbo sets aria-busy="true" on the
 * <turbo-frame>. Gently dim its contents so the swap reads as intentional
 * (e.g. filtering the events list). Opacity-only — GPU-safe.
 * ------------------------------------------------------------------------- */
turbo-frame[aria-busy="true"] {
  opacity: 0.55;
  transition: opacity 0.25s var(--ease-fluid);
  cursor: progress;
}
