/* ═══════════════════════════════════════════
   WEDDING INVITE · style.css
   Praveenkrishna weds Saranya · 21.06.2026
═══════════════════════════════════════════ */

/* ── RESET & TOKENS ── */
*, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }

:root {
  --gold:     #D4A843;
  --gold2:    #F0C96B;
  --marigold: #E8831A;
  --rose:     #C4506A;
  --deep:     #05030F;
  --cream:    #FDF8EE;
  --gap-sm:   10px;
  --gap-md:   16px;
  --gap-lg:   22px;
}

html {
  scroll-behavior: smooth;
  scroll-snap-type: y proximity;
  overscroll-behavior-y: contain;
}

body {
  width: 100%;
  min-height: 100vh;
  background: var(--deep);
  font-family: 'Cormorant Garamond', serif;
  overflow-x: hidden;
  -webkit-tap-highlight-color: transparent;
  -webkit-overflow-scrolling: touch;
}

/* ── CANVAS & VIGNETTE ── */
#canvas-bg {
  position: fixed;
  inset: 0;
  z-index: 0;
  touch-action: none;
}

#vignette {
  position: fixed;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background: radial-gradient(ellipse at 50% 50%, transparent 22%, rgba(5,3,15,.82) 100%);
}

/* ── SCROLL WRAP ── */
#scroll-wrap {
  position: relative;
  z-index: 10;
}

/* ════════════════════════════════
   HERO SECTION
════════════════════════════════ */
#hero {
  min-height: 100svh;
  scroll-snap-align: start;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 52px 28px 110px;
  text-align: center;
  position: relative;
}

.om {
  font-size: 28px;
  display: block;
  margin-bottom: var(--gap-sm);
  filter: drop-shadow(0 0 14px rgba(212,168,67,.8));
  opacity: 0;
  animation: riseIn 1.2s .15s cubic-bezier(.16,1,.3,1) forwards;
}

.tag-line {
  font-family: 'Cinzel', serif;
  font-size: 8.5px;
  letter-spacing: .55em;
  color: rgba(212, 168, 67, 0.8);
  text-transform: uppercase;
  margin-bottom: var(--gap-lg);
  opacity: 0;
  animation: riseIn 1.2s .35s cubic-bezier(.16,1,.3,1) forwards;
}

.n-groom {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 300;
  font-size: clamp(40px, 12.5vw, 80px);
  line-height: .95;
  color: var(--cream);
  letter-spacing: .025em;
  opacity: 0;
  animation: riseIn 1.4s .55s cubic-bezier(.16,1,.3,1) forwards;
  text-shadow: 0 0 80px rgba(212,168,67,.22), 0 4px 28px rgba(0,0,0,.9);
}

.weds-row {
  display: flex;
  align-items: center;
  gap: 14px;
  margin: 14px 0;
  width: 100%;
  max-width: 290px;
  opacity: 0;
  animation: riseIn 1.2s .85s cubic-bezier(.16,1,.3,1) forwards;
}
.wl   { flex: 1; height: 1px; background: linear-gradient(90deg, transparent, rgba(212,168,67,.45)); }
.wl.r { background: linear-gradient(270deg, transparent, rgba(212,168,67,.45)); }
.wt {
  font-family: 'IM Fell English', serif;
  font-style: italic;
  font-size: 15px;
  color: var(--gold);
  letter-spacing: .18em;
  white-space: nowrap;
}

.n-bride {
  font-family: 'Cormorant Garamond', serif;
  font-weight: 300;
  font-size: clamp(40px, 12.5vw, 80px);
  line-height: .95;
  color: var(--cream);
  letter-spacing: .025em;
  opacity: 0;
  animation: riseIn 1.4s 1.0s cubic-bezier(.16,1,.3,1) forwards;
  text-shadow: 0 0 80px rgba(196,80,106,.22), 0 4px 28px rgba(0,0,0,.9);
}

.lotus-svg {
  margin: 20px auto 0;
  width: 148px;
  opacity: 0;
  animation: riseIn 1.2s 1.3s cubic-bezier(.16,1,.3,1) forwards;
}

/* ════════════════════════════════
   SCROLL CUE  (3-state system)
   State 1 → CSS animation fades it IN
   State 2 → JS adds .visible (switches
             to transition-driven opacity)
   State 3 → JS adds .hidden (fades out)
════════════════════════════════ */
.scroll-cue {
  position: absolute;
  bottom: 28px;
  left: 50%;
  /* keep translateX so centering never breaks */
  transform: translateX(-50%);
  z-index: 20;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 6px;
  pointer-events: none;

  /* State 1: invisible → visible via keyframe */
  opacity: 0;
  animation: scrollCueFadeIn 1s 1.8s forwards;
}

/* State 2: animation done, transition takes over */
.scroll-cue.visible {
  animation: none;
  opacity: 1;
  transition: opacity .5s ease;
}

/* State 3: fade out */
.scroll-cue.visible.hidden {
  opacity: 0;
}

@keyframes scrollCueFadeIn {
  from { opacity: 0; transform: translateX(-50%) translateY(10px); }
  to   { opacity: 1; transform: translateX(-50%) translateY(0);    }
}

.scroll-cue__label {
  font-family: 'Cinzel', serif;
  font-size: 16px;
  letter-spacing: .48em;
  color: rgba(255, 255, 255, 0.5);
  text-transform: uppercase;
}

.scroll-cue__arrow {
  display: flex;
  align-items: center;
  justify-content: center;
  animation: arrowBounce 1.5s ease-in-out infinite;
}

@keyframes arrowBounce {
  0%, 100% { transform: translateY(0);   opacity: .4; }
  50%       { transform: translateY(7px); opacity: 1;  }
}

/* ════════════════════════════════
   SHARED SECTION STYLES
════════════════════════════════ */
.section {
  min-height: 100svh;
  scroll-snap-align: start;
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  padding: 52px 28px;
  text-align: center;
  position: relative;
}

.sec-lbl {
  font-family: 'Cinzel', serif;
  font-size: 8px;
  letter-spacing: .55em;
  color: rgba(212, 168, 67, 0.8);
  text-transform: uppercase;
  margin-bottom: 14px;
}

/* ── ORNAMENT ── */
.orni {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: var(--gap-sm);
  margin: var(--gap-lg) auto;
}
.o-line { height: 1px; width: 52px; background: linear-gradient(90deg, transparent, rgba(212,168,67,.36), transparent); }
.o-dot  { width: 5px; height: 5px; border-radius: 50%; background: var(--gold); opacity: .62; }
.o-dot.sm { width: 3px; height: 3px; opacity: .32; }

/* ════════════════════════════════
   DATE SECTION
════════════════════════════════ */
.date-row { display: flex; align-items: center; gap: 8px; justify-content: center; }

.date-big {
  font-family: 'Cinzel', serif;
  font-size: clamp(46px, 15vw, 92px);
  font-weight: 600;
  color: var(--gold);
  letter-spacing: .04em;
  line-height: 1;
  text-shadow: 0 0 60px rgba(212,168,67,.55), 0 0 120px rgba(212,168,67,.16);
}
.date-sep {
  font-family: 'Cormorant Garamond', serif;
  font-size: clamp(28px, 9vw, 55px);
  color: rgba(212, 168, 67, 0.8);
  font-weight: 300;
}
.date-sub {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: 15px;
  color: rgba(212, 168, 67, 0.8);
  letter-spacing: .25em;
  margin-top: 10px;
}

.cd-row { display: flex; gap: 14px; margin-top: 28px; justify-content: center; }
.cd-box {
  display: flex; flex-direction: column; align-items: center;
  background: rgba(212,168,67,.04);
  border: 1px solid rgba(212,168,67,.13);
  border-radius: 10px;
  padding: 12px 14px;
  min-width: 62px;
}
.cd-n { font-family: 'Cinzel', serif; font-size: 26px; font-weight: 600; color: var(--gold); line-height: 1; }
.cd-l { font-family: 'Cormorant Garamond', serif; font-style: italic; font-size: 10px; color: rgba(212,168,67,.42); letter-spacing: .12em; margin-top: 4px; }

/* ════════════════════════════════
   VENUE SECTION
════════════════════════════════ */
.venue-card {
  background: rgba(212,168,67,.035);
  border: 1px solid rgba(212,168,67,.11);
  border-radius: 18px;
  padding: 30px 24px;
  width: 100%; max-width: 330px;
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
}
.vn-icon  { font-size: 28px; margin-bottom: 14px; display: block; }
.vn-title { font-family: 'Cormorant Garamond', serif; font-size: 21px; color: var(--cream); line-height: 1.35; letter-spacing: .04em; margin-bottom: 7px; }
.vn-city  { font-family: 'IM Fell English', serif; font-style: italic; font-size: 14px; color:  rgba(199, 153, 46, 0.842); letter-spacing: .15em; margin-bottom: 16px; }
.vn-div   { height: 1px; background: linear-gradient(90deg, transparent, rgba(212,168,67,.27), transparent); margin: 12px 0; }
.vn-time  { font-family: 'Cinzel', serif; font-size: 10.5px; letter-spacing: .3em; color: rgba(212,168,67,.52); }

.map-btn {
  display: inline-block; margin-top: 20px;
  font-family: 'Cinzel', serif;
  font-size: 9px; letter-spacing: .4em; text-transform: uppercase;
  color: var(--gold);
  border: 1px solid rgba(212,168,67,.27);
  padding: 11px 22px; border-radius: 40px; text-decoration: none;
  background: rgba(212,168,67,.05);
  transition: background .25s; pointer-events: all;
}
.map-btn:active { background: rgba(212,168,67,.16); }

/* ════════════════════════════════
   BLESSING SECTION
════════════════════════════════ */
.bless-text {
  font-family: 'Cormorant Garamond', serif;
  font-style: italic;
  font-size: clamp(21px, 5.8vw, 33px);
  color: var(--cream); line-height: 1.62;
  letter-spacing: .03em; max-width: 280px;
  text-shadow: 0 0 40px rgba(212,168,67,.16);
  border: none;
}
.bless-by {
  font-family: 'Cinzel', serif;
  font-size: 9px; letter-spacing: .5em;
  color: rgba(212,168,67,.7);
  margin-top: 20px; text-transform: uppercase;
}

/* ════════════════════════════════
   FOOTER
════════════════════════════════ */
footer {
  padding: 28px 28px 48px;
  text-align: center;
  position: relative;
  z-index: 10;
  min-height: auto; /* never snap-forced to full height */
}
.f-txt {
  font-family: 'Cormorant Garamond', serif;
  font-size: 11px; letter-spacing: .22em;
  color: rgba(212,168,67,.7); font-style: italic;
}

/* ════════════════════════════════
   SCROLL REVEAL
════════════════════════════════ */
.reveal {
  opacity: 0;
  transform: translateY(24px);
  transition:
    opacity   .8s cubic-bezier(.16,1,.3,1),
    transform .8s cubic-bezier(.16,1,.3,1);
}
.reveal.vis { opacity: 1; transform: translateY(0); }
.reveal.d1  { transition-delay: .07s; }
.reveal.d2  { transition-delay: .14s; }
.reveal.d3  { transition-delay: .22s; }
.reveal.d4  { transition-delay: .30s; }

/* ════════════════════════════════
   KEYFRAMES
════════════════════════════════ */
@keyframes riseIn {
  from { opacity: 0; transform: translateY(24px); }
  to   { opacity: 1; transform: translateY(0); }
}

/* ════════════════════════════════
   TOUCH RIPPLE
════════════════════════════════ */
.ripple {
  position: fixed; border-radius: 50%;
  pointer-events: none;
  background: radial-gradient(circle, rgba(212,168,67,.25), transparent);
  transform: scale(0);
  animation: rippleOut .7s ease-out forwards;
  z-index: 99;
}
@keyframes rippleOut { to { transform: scale(5); opacity: 0; } }
/* ════════════════════════════════
   SCROLL HAND GESTURE
════════════════════════════════ */
.scroll-hand {
  position: fixed;
  bottom: 36px;
  left: 50%;
  transform: translateX(-50%);
  z-index: 100;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 8px;
  pointer-events: none;
  animation: handFadeIn 1s 2.5s both;
  transition: opacity 0.5s ease;
}
.scroll-hand.hide {
  opacity: 0 !important;
}
.scroll-hand__label {
  font-family: 'Cinzel', serif;
  font-size: 8px;
  letter-spacing: 0.5em;
  color: rgba(212,168,67,0.45);
  text-transform: uppercase;
}
.scroll-hand__icon {
  font-size: 28px;
  animation: handSwipe 1.6s ease-in-out infinite;
  filter: drop-shadow(0 0 8px rgba(212,168,67,0.5));
  display: block;
}

@keyframes handFadeIn {
  from { opacity: 0; transform: translateX(-50%) translateY(12px); }
  to   { opacity: 1; transform: translateX(-50%) translateY(0); }
}
@keyframes handSwipe {
  0%   { transform: translateY(0px);  opacity: 0.5; }
  30%  { transform: translateY(-10px); opacity: 1; }
  60%  { transform: translateY(4px);  opacity: 0.7; }
  100% { transform: translateY(0px);  opacity: 0.5; }
}