/* =============================================
   HERO — Full-Screen Video / Image Section
   ============================================= */

.hero {
  position: relative;
  width: 100%;
  height: 100vh;
  height: 100dvh;
  overflow: hidden;
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
}

/* ===== MEDIA BACKGROUND ===== */
.hero-media {
  position: absolute;
  inset: 0;
  z-index: 0;
}

/* Video element */
.hero-video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}

/* Fallback gradient (shown when no video/image is loaded) */
.hero-media-fallback {
  position: absolute;
  inset: 0;
  background:
    radial-gradient(ellipse at 30% 20%, rgba(200, 184, 224, 0.4) 0%, transparent 60%),
    radial-gradient(ellipse at 70% 80%, rgba(168, 197, 160, 0.3) 0%, transparent 60%),
    radial-gradient(ellipse at 50% 50%, rgba(244, 199, 195, 0.3) 0%, transparent 70%),
    linear-gradient(160deg, var(--lavender-light) 0%, var(--blush-light) 25%, var(--ivory) 50%, var(--sage-light) 75%, var(--champagne) 100%);
  animation: heroShimmer 14s ease-in-out infinite alternate;
  z-index: 0;
}

/* Dark overlay for text contrast over video/image */
.hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(
    180deg,
    rgba(0, 0, 0, 0.45) 0%,
    rgba(0, 0, 0, 0.30) 40%,
    rgba(0, 0, 0, 0.50) 100%
  );
  z-index: 1;
}

/* When using video/image, hide the fallback */
.hero.has-media .hero-media-fallback {
  display: none;
}

/* When using fallback (no video), lighter overlay */
.hero:not(.has-media) .hero-overlay {
  background: rgba(255, 248, 240, 0.08);
}

/* ===== HERO CONTENT ===== */
.hero-content {
  position: relative;
  z-index: 2;
  text-align: center;
  padding: 0 28px;
  max-width: 600px;
  width: 100%;
  margin: 0 auto;
  box-sizing: border-box;
}

/* Adapt text color based on media */
.hero.has-media .hero-content {
  color: white;
}

.hero-subtitle-top {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.65rem;
  font-weight: 400;
  letter-spacing: 6px;
  text-transform: uppercase;
  color: var(--brown-light);
  margin-bottom: 16px;
  opacity: 0;
  animation: heroFadeIn 1s ease 0.3s forwards;
}

.hero.has-media .hero-subtitle-top {
  color: rgba(255, 255, 255, 0.8);
}

.hero-names {
  font-family: 'Great Vibes', cursive;
  font-size: 3.8rem;
  color: var(--brown);
  line-height: 1.15;
  margin-bottom: 16px;
  opacity: 0;
  animation: heroFadeIn 1s ease 0.6s forwards;
}

.hero.has-media .hero-names {
  color: white;
  text-shadow: 0 2px 24px rgba(0, 0, 0, 0.5), 0 1px 6px rgba(0, 0, 0, 0.3);
}

.hero-ampersand {
  display: block;
  font-size: 2.2rem;
  color: var(--gold);
  margin: 4px 0;
}

.hero.has-media .hero-ampersand {
  color: var(--gold-light);
}

.hero-line {
  width: 50px;
  height: 1px;
  background: linear-gradient(90deg, transparent, var(--gold), transparent);
  margin: 16px auto;
  opacity: 0;
  animation: heroFadeIn 1s ease 0.9s forwards;
}

.hero.has-media .hero-line {
  background: linear-gradient(90deg, transparent, rgba(255,255,255,0.6), transparent);
}

.hero-date {
  font-family: 'Cormorant Garamond', serif;
  font-size: 1.2rem;
  font-weight: 600;
  letter-spacing: 5px;
  text-transform: uppercase;
  color: var(--brown-light);
  opacity: 0;
  animation: heroFadeIn 1s ease 1.1s forwards;
}

.hero.has-media .hero-date {
  color: rgba(255, 255, 255, 0.9);
}

.hero-location {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.75rem;
  font-weight: 300;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--brown-light);
  margin-top: 8px;
  opacity: 0;
  animation: heroFadeIn 1s ease 1.3s forwards;
}

.hero.has-media .hero-location {
  color: rgba(255, 255, 255, 0.7);
}

.hero-tagline {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 1rem;
  font-weight: 300;
  color: var(--dusty-rose);
  margin-top: 20px;
  opacity: 0;
  animation: heroFadeIn 1s ease 1.5s forwards;
}

.hero.has-media .hero-tagline {
  color: rgba(255, 255, 255, 0.75);
}

/* ===== SCROLL INDICATOR ===== */
.scroll-indicator {
  position: absolute;
  bottom: 36px;
  left: 0;
  right: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  opacity: 0;
  animation: heroFadeIn 1s ease 2.2s forwards;
  transition: opacity 0.5s ease;
}

.scroll-indicator span {
  font-family: 'Montserrat', sans-serif;
  font-size: 0.55rem;
  font-weight: 400;
  letter-spacing: 3px;
  text-transform: uppercase;
  color: var(--brown-light);
}

.hero.has-media .scroll-indicator span {
  color: rgba(255, 255, 255, 0.6);
}

.scroll-arrow {
  width: 18px;
  height: 18px;
  border-right: 1.5px solid var(--brown-light);
  border-bottom: 1.5px solid var(--brown-light);
  transform: rotate(45deg);
  animation: scrollBounce 2s ease-in-out infinite;
}

.hero.has-media .scroll-arrow {
  border-color: rgba(255, 255, 255, 0.5);
}

/* ===== KEYFRAMES ===== */
@keyframes heroShimmer {
  0%   { filter: hue-rotate(0deg) brightness(1); }
  50%  { filter: hue-rotate(5deg) brightness(1.03); }
  100% { filter: hue-rotate(-5deg) brightness(0.98); }
}

@keyframes heroFadeIn {
  from { opacity: 0; transform: translateY(15px); }
  to   { opacity: 1; transform: translateY(0); }
}

@keyframes scrollBounce {
  0%, 100% { transform: rotate(45deg) translateY(0); opacity: 0.6; }
  50%      { transform: rotate(45deg) translateY(6px); opacity: 1; }
}
