html {
  scroll-behavior: smooth;
}

body {
  font-family: 'Inter', ui-sans-serif, system-ui, sans-serif;
  color: #191612;
}

h1, h2, h3, h4 {
  font-family: 'Fraunces', ui-serif, Georgia, serif;
}

:focus-visible {
  outline: 3px solid #191612;
  outline-offset: 3px;
}

@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;
  }
}

@keyframes fadeUp {
  0% { opacity: 0; transform: translateY(20px); }
  100% { opacity: 1; transform: translateY(0); }
}
@keyframes fadeIn {
  0% { opacity: 0; }
  100% { opacity: 1; }
}
.animate-fadeUp { animation: fadeUp 0.6s cubic-bezier(0.16, 1, 0.3, 1) forwards; }
.animate-fadeIn { animation: fadeIn 0.7s ease-out forwards; }

.reveal {
  opacity: 0;
  transform: translateY(16px);
  transition: opacity 0.7s ease, transform 0.7s ease;
}
.reveal.is-visible {
  opacity: 1;
  transform: translateY(0);
}

/* mobile menu collapse */
#mobile-menu {
  max-height: 0;
  overflow: hidden;
  transition: max-height 0.3s ease;
}
#mobile-menu.open {
  max-height: 30rem;
}

/* gallery lightbox */
#lightbox {
  display: none;
}
#lightbox.open {
  display: flex;
}

/* page bottom spacer so sticky mobile CTA never covers footer content */
.mobile-cta-spacer {
  height: 5rem;
}
@media (min-width: 1024px) {
  .mobile-cta-spacer { display: none; }
}
