/* ── Ascension Festival — global styles & interactions ───────────────────── */

*, *::before, *::after { box-sizing: border-box; }

/* ── Sun pulse ──────────────────────────────────────────────────────────── */
@keyframes sun-pulse {
  0%, 100% { transform: scale(1);    opacity: 0.9; }
  50%       { transform: scale(1.05); opacity: 0.75; }
}

/* ── Page entry fade ────────────────────────────────────────────────────── */
@keyframes af-page-in {
  from { opacity: 0; transform: translateY(10px); }
  to   { opacity: 1; transform: translateY(0); }
}
#root > * {
  animation: af-page-in 0.35s ease forwards;
}

/* ── Scroll reveal ──────────────────────────────────────────────────────── */
.af-reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity 0.65s ease, transform 0.65s ease;
}
.af-reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}
@media (prefers-reduced-motion: reduce) {
  .af-reveal, .af-reveal.is-visible { opacity: 1; transform: none; transition: none; }
}

/* ── Hero fullscreen ────────────────────────────────────────────────────── */
.af-hero {
  height: 100vh;
  height: 100svh;
}

/* ── Logo hover ─────────────────────────────────────────────────────────── */
.af-logo-link {
  display: inline-block;
  transition: opacity 0.15s ease;
}
.af-logo-link:hover { opacity: 0.7; }

/* ── Nav links ──────────────────────────────────────────────────────────── */
.af-nav-link {
  position: relative;
  transition: opacity 0.15s ease;
  cursor: pointer;
}
.af-nav-link::after {
  content: '';
  position: absolute;
  bottom: -3px; left: 0; right: 0;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform 0.22s ease;
}
.af-nav-link:hover::after { transform: scaleX(1); }
.af-nav-link:hover { opacity: 0.8; }

/* ── Light CTA (white bg → Buy tickets on dark hero) ───────────────────── */
.af-cta-light {
  transition: background 0.18s ease, color 0.18s ease,
              transform 0.14s ease, box-shadow 0.18s ease;
  cursor: pointer;
}
.af-cta-light:hover {
  background: #e4e4e4 !important;
  transform: translateY(-2px);
  box-shadow: 0 6px 24px rgba(0, 0, 0, 0.22);
}

/* ── Dark CTA (dark bg button) ──────────────────────────────────────────── */
.af-cta-dark {
  transition: background 0.18s ease, transform 0.14s ease, box-shadow 0.18s ease;
  cursor: pointer;
}
.af-cta-dark:hover {
  background: #282828 !important;
  transform: translateY(-2px);
  box-shadow: 0 6px 24px rgba(0, 0, 0, 0.2);
}

/* ── Text / underline links (Buy ticket →, Full archive →…) ────────────── */
.af-link {
  transition: opacity 0.15s ease, letter-spacing 0.18s ease;
  cursor: pointer;
}
.af-link:hover {
  opacity: 0.55;
  letter-spacing: 0.26em;
}

/* ── Event row highlight ────────────────────────────────────────────────── */
.af-event-row {
  transition: background 0.18s ease, padding-left 0.18s ease;
  cursor: pointer;
}
.af-event-row:hover {
  background: rgba(10, 10, 10, 0.03);
  padding-left: 8px;
}

/* ── Gallery photo items — zoom inner image on hover ───────────────────── */
.af-photo-item {
  cursor: pointer;
}
.af-photo-item img,
.af-photo-item video {
  transition: transform 0.55s cubic-bezier(0.25, 0.46, 0.45, 0.94);
}
.af-photo-item:hover img,
.af-photo-item:hover video {
  transform: scale(1.06) !important;
}

/* ── Album cards ─────────────────────────────────────────────────────────── */
.af-album-card {
  transition: transform 0.22s ease, box-shadow 0.22s ease;
  cursor: pointer;
}
.af-album-card:hover {
  transform: translateY(-5px);
  box-shadow: 0 12px 36px rgba(0, 0, 0, 0.14) !important;
}

/* ── Mobile fullscreen menu items ───────────────────────────────────────── */
.af-mobile-item {
  transition: opacity 0.15s ease, transform 0.18s ease;
  cursor: pointer;
}
.af-mobile-item:hover {
  opacity: 0.6;
  transform: translateX(12px);
}

/* ── Footer / generic text links ────────────────────────────────────────── */
.af-footer-link {
  transition: opacity 0.15s ease;
  cursor: pointer;
}
.af-footer-link:hover { opacity: 0.55; }

/* ── Contact dept cards ─────────────────────────────────────────────────── */
.af-contact-card {
  transition: transform 0.2s ease, box-shadow 0.2s ease;
}
.af-contact-card:hover {
  transform: translateY(-4px);
  box-shadow: 0 10px 32px rgba(0, 0, 0, 0.10);
}

/* ── Form input focus ────────────────────────────────────────────────────── */
.af-form input,
.af-form textarea,
.af-form select {
  transition: border-bottom-color 0.18s ease, box-shadow 0.18s ease;
}
.af-form input:focus,
.af-form textarea:focus,
.af-form select:focus {
  border-bottom-color: #0a0a0a !important;
  box-shadow: 0 2px 0 rgba(10, 10, 10, 0.18);
}

/* ── Submit button ──────────────────────────────────────────────────────── */
.af-submit {
  transition: background 0.18s ease, transform 0.12s ease, box-shadow 0.18s ease;
  cursor: pointer;
}
.af-submit:hover {
  background: #282828 !important;
  transform: translateY(-2px);
  box-shadow: 0 6px 20px rgba(0, 0, 0, 0.2);
}

/* ── Events filter tags ──────────────────────────────────────────────────── */
.af-filter {
  transition: background 0.15s ease, color 0.15s ease, border-color 0.15s ease;
  cursor: pointer;
  user-select: none;
}
.af-filter:not([data-active]):hover {
  background: rgba(10, 10, 10, 0.06) !important;
}

/* ── Lightbox ────────────────────────────────────────────────────────────── */
@keyframes af-lb-fade {
  from { opacity: 0; }
  to   { opacity: 1; }
}
.af-lb-overlay {
  animation: af-lb-fade 0.22s ease forwards;
}
.af-lb-img {
  animation: af-lb-fade 0.2s ease forwards;
}

/* ── Mobile: nav bar ─────────────────────────────────────────────────────── */
@media (max-width: 767px) {
  /* Skip reveal animations entirely on mobile — IntersectionObserver is unreliable */
  .af-reveal {
    opacity: 1 !important;
    transform: none !important;
    transition: none !important;
  }

  /* Switch desktop nav to hamburger */
  .af-nav-bar {
    position: fixed !important;
    padding: 14px 20px !important;
    grid-template-columns: 1fr auto !important;
    background: transparent;
  }
  .af-nav-logo { height: 22px !important; }
  .af-nav-links, .af-nav-tickets { display: none !important; }
  .af-nav-ham { display: flex !important; }

  /* Inner page headers */
  .af-page-header { height: auto !important; min-height: 480px; padding-top: 56px; }
  .af-page-h1 { font-size: 52px !important; line-height: 0.96 !important; letter-spacing: -0.026em !important; }
  .af-page-header-content { left: 22px !important; right: 22px !important; bottom: 28px !important; }

  /* Homepage hero bottom bar — stack vertically */
  .af-hero-bar { flex-direction: column !important; align-items: flex-start !important; gap: 20px !important; }

  /* Events: single column card */
  .af-event-article { grid-template-columns: 1fr !important; gap: 24px !important; }
  .af-event-article > div:last-child > div:first-child { flex-direction: column !important; align-items: flex-start !important; gap: 16px !important; }

  /* Gallery: 2-column grid, uniform heights */
  .af-gallery-grid { grid-template-columns: repeat(2, 1fr) !important; }
  .af-gallery-grid > div { grid-column: span 1 !important; height: 180px !important; }

  /* Contact: single column */
  .af-contact-cards { grid-template-columns: 1fr !important; }
  .af-contact-layout { grid-template-columns: 1fr !important; padding: 32px 22px 60px !important; gap: 40px !important; }
  .af-form-fields { grid-template-columns: 1fr !important; gap: 24px !important; }

  /* Tickets: 2-column features */
  .af-ticket-features { grid-template-columns: repeat(2, 1fr) !important; padding: 40px 22px 60px !important; }

  /* Footer: single column */
  .af-footer-grid { grid-template-columns: 1fr !important; }

  /* Contact email — scale down so it fits */
  .af-contact-email { font-size: 6vw !important; letter-spacing: -0.02em !important; }

  /* Reduce horizontal padding on all sections on mobile */
  .af-reveal, .af-page-header { padding-left: 22px; padding-right: 22px; }
  /* Ensure first content section below fixed nav isn't hidden */
  .af-page-header { padding-top: 56px; }
}

/* ── Map / misc outline links ────────────────────────────────────────────── */
.af-outline-link {
  transition: background 0.15s ease, color 0.15s ease;
  cursor: pointer;
}
.af-outline-link:hover {
  background: #0a0a0a !important;
  color: #fafafa !important;
}
