/* ==========================================================================
   Wave Invitaciones — estilos del front-end
   Los 4 colores base (--champagne, --olive, --cream, --ink) se inyectan
   inline por invitación (class-render.php); todos los demás tonos se
   derivan de esos 4 con color-mix() para que una sola paleta baste para
   personalizar por completo el tema de cada pareja.
   ========================================================================== */
.wave-invitacion{
  --champagne-deep: color-mix(in srgb, var(--champagne) 78%, black);
  --champagne-pale: color-mix(in srgb, var(--champagne) 42%, white);
  --olive-deep: color-mix(in srgb, var(--olive) 74%, black);
  --cream-deep: color-mix(in srgb, var(--cream) 88%, var(--olive) 12%);
  --ink-soft: color-mix(in srgb, var(--ink) 68%, white);
  --wi-shadow: 0 20px 50px rgba(0,0,0,.12);

  font-family:'Cormorant Garamond', serif;
  background:var(--cream);
  color:var(--ink);
  font-size:18px;
  line-height:1.6;
  -webkit-font-smoothing:antialiased;
  max-width:100%;
  overflow-x:hidden;
}
.wave-invitacion *{box-sizing:border-box;}
.wave-invitacion h1,.wave-invitacion h2,.wave-invitacion h3{font-weight:500; color:var(--ink); margin:0;}
.wave-invitacion img{max-width:100%; display:block;}
.wave-invitacion .wi-eyebrow{
  font-family:'Montserrat',sans-serif; text-transform:uppercase; letter-spacing:3.5px;
  font-size:.68rem; font-weight:600; color:var(--champagne-deep);
}
.wave-invitacion .wi-icon{fill:none; stroke:currentColor; stroke-width:1.4; stroke-linecap:round; stroke-linejoin:round; display:inline-block; vertical-align:middle;}
.wave-invitacion .wi-icon-feature{color:var(--champagne-deep); margin-bottom:12px;}
.wave-invitacion .wi-icon-inline{margin-right:8px; margin-top:-2px;}

.wave-invitacion .wi-reveal{opacity:0; transform:translateY(24px); transition:opacity .9s ease, transform .9s ease;}
.wave-invitacion .wi-reveal.wi-in{opacity:1; transform:translateY(0);}

/* ---------- Loader ---------- */
.wave-invitacion .wi-loader{
  position:fixed; inset:0; z-index:999; background:var(--ink);
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  color:var(--champagne-pale); cursor:pointer; text-align:center;
  transition:opacity 1s ease, visibility 1s ease;
}
.wave-invitacion .wi-loader.wi-hide{opacity:0; visibility:hidden; pointer-events:none;}
.wave-invitacion .wi-initials{font-family:'Great Vibes',cursive; font-size:3.2rem; color:var(--champagne);}
.wave-invitacion .wi-loader .wi-eyebrow{color:var(--champagne-pale); opacity:.8;}
.wave-invitacion .wi-tap{margin-top:28px; font-family:'Montserrat',sans-serif; font-size:.65rem; letter-spacing:3px; text-transform:uppercase; opacity:.6; animation:wiPulse 2.2s infinite;}
@keyframes wiPulse{0%,100%{opacity:.35;}50%{opacity:.85;}}

/* ---------- Hero ---------- */
.wave-invitacion .wi-hero{
  position:relative; min-height:100svh; display:flex; align-items:flex-end;
  background-size:cover; background-position:center 30%;
  color:#fffdf8; text-align:center; padding:0 24px 60px;
}
.wave-invitacion .wi-hero::before{
  content:""; position:absolute; inset:0;
  background:linear-gradient(180deg, rgba(0,0,0,.15) 0%, rgba(0,0,0,.25) 45%, rgba(0,0,0,.86) 100%);
}
.wave-invitacion .wi-hero-content{position:relative; z-index:1; width:100%; max-width:640px; margin:0 auto;}
.wave-invitacion .wi-hero-content .wi-eyebrow{color:var(--champagne-pale); margin-bottom:14px;}
.wave-invitacion .wi-hero h1{
  font-family:'Great Vibes',cursive; font-size:4.4rem; line-height:1; color:#fffdf8;
  text-shadow:0 4px 24px rgba(0,0,0,.25);
}
.wave-invitacion .wi-hero .wi-amp{display:block; font-size:1.6rem; color:var(--champagne-pale); margin:6px 0;}
.wave-invitacion .wi-date{
  font-family:'Montserrat',sans-serif; letter-spacing:3px; text-transform:uppercase; font-size:.85rem;
  margin-top:18px;
}
.wave-invitacion .wi-scroll-cue{position:relative; z-index:1; margin:34px auto 0; width:1px; height:46px; background:rgba(255,255,255,.5);}
.wave-invitacion .wi-scroll-cue::after{content:""; position:absolute; top:0; left:-3px; width:7px; height:7px; border-radius:50%; background:var(--champagne); animation:wiCue 2s infinite;}
@keyframes wiCue{0%{top:0; opacity:1;}90%{top:40px; opacity:0;}100%{top:40px; opacity:0;}}

/* ---------- Sections ---------- */
.wave-invitacion .wi-section{padding:90px 24px; max-width:720px; margin:0 auto; text-align:center;}
.wave-invitacion .wi-wide{max-width:920px;}
.wave-invitacion .wi-cream-deep{background:var(--cream-deep); max-width:100%;}
.wave-invitacion .wi-cream-deep > *{max-width:720px; margin-left:auto; margin-right:auto;}
.wave-invitacion .wi-section-head{margin-bottom:40px;}
.wave-invitacion .wi-section-head h2{font-size:2rem; font-style:italic;}
.wave-invitacion .wi-subtitle{font-size:1.7rem; font-style:italic; margin-top:6px;}

/* ---------- Bienvenida ---------- */
.wave-invitacion .wi-msg{font-size:1.3rem; font-style:italic; line-height:1.85; color:var(--ink-soft); max-width:560px; margin:0 auto;}
.wave-invitacion .wi-signature{margin-top:26px; font-family:'Great Vibes',cursive; font-size:1.7rem; color:var(--champagne-deep);}
.wave-invitacion .wi-years{margin-top:28px; font-family:'Montserrat',sans-serif; font-size:.72rem; letter-spacing:2px; text-transform:uppercase; color:var(--olive-deep);}

/* ---------- Guest card ---------- */
.wave-invitacion .wi-guestcard{
  display:none; background:#fffdf8; border:1px solid var(--champagne-pale);
  border-radius:4px; padding:30px 26px; margin:0 auto 10px; max-width:520px; box-shadow:var(--wi-shadow);
}
.wave-invitacion .wi-guestcard.wi-show{display:block;}
.wave-invitacion .wi-fam{font-family:'Cormorant Garamond',serif; font-size:1.5rem; font-style:italic;}
.wave-invitacion .wi-seats{margin-top:12px; font-family:'Cormorant Garamond',serif; font-style:italic; font-size:1.15rem; color:var(--olive-deep);}
.wave-invitacion .wi-meta{margin-top:10px; font-family:'Montserrat',sans-serif; font-size:.78rem; letter-spacing:1px; color:var(--ink-soft);}

/* ---------- Countdown ---------- */
.wave-invitacion .wi-countdown{display:flex; justify-content:center; gap:16px; margin-top:10px; flex-wrap:wrap;}
.wave-invitacion .wi-cd-box{width:84px;}
.wave-invitacion .wi-cd-num{font-family:'Cormorant Garamond',serif; font-size:2.6rem; font-weight:500; color:var(--champagne-deep);}
.wave-invitacion .wi-cd-lbl{font-family:'Montserrat',sans-serif; font-size:.62rem; letter-spacing:2px; text-transform:uppercase; color:var(--ink-soft);}
.wave-invitacion .wi-cd-sep{font-size:2rem; color:var(--champagne-pale); align-self:flex-start; margin-top:6px;}

/* ---------- Padres ---------- */
.wave-invitacion .wi-padres-grid{display:flex; justify-content:center; gap:60px; flex-wrap:wrap; margin-top:10px;}
.wave-invitacion .wi-padres-col .wi-rol{font-family:'Montserrat',sans-serif; font-size:.65rem; letter-spacing:2px; text-transform:uppercase; color:var(--champagne-deep); margin-bottom:10px;}
.wave-invitacion .wi-padres-col p{font-size:1.08rem; margin:2px 0;}

/* ---------- Evento ---------- */
.wave-invitacion .wi-venue-card{background:var(--cream); border-radius:6px; padding:44px 32px; margin-top:10px; box-shadow:var(--wi-shadow);}
.wave-invitacion .wi-venue-card h3{font-size:1.7rem; font-style:italic;}
.wave-invitacion .wi-addr{margin-top:8px; color:var(--ink-soft); font-size:1.02rem;}
.wave-invitacion .wi-time{margin-top:18px; font-family:'Montserrat',sans-serif; letter-spacing:2px; text-transform:uppercase; font-size:.78rem; color:var(--olive-deep);}
.wave-invitacion .wi-same-note{margin-top:16px; font-size:.9rem; font-style:italic; color:var(--olive-deep);}
.wave-invitacion .wi-btn{
  display:inline-block; margin-top:22px; padding:13px 34px; border:1px solid var(--champagne-deep);
  color:var(--champagne-deep); text-decoration:none; font-family:'Montserrat',sans-serif; font-size:.72rem;
  letter-spacing:2.5px; text-transform:uppercase; border-radius:2px; transition:.3s;
}
.wave-invitacion .wi-btn:hover{background:var(--champagne-deep); color:#fff;}
.wave-invitacion .wi-btn-solid{background:var(--champagne-deep); color:#fff;}
.wave-invitacion .wi-btn-solid:hover{background:var(--olive-deep); border-color:var(--olive-deep);}

/* ---------- Itinerario ---------- */
.wave-invitacion .wi-timeline{max-width:380px; margin:10px auto 0; text-align:left;}
.wave-invitacion .wi-timeline .wi-item{display:flex; align-items:flex-start; gap:16px; padding:16px 0; border-bottom:1px solid var(--champagne-pale);}
.wave-invitacion .wi-timeline .wi-item:last-child{border-bottom:none;}
.wave-invitacion .wi-timeline .wi-icon{color:var(--champagne-deep); flex:none; margin-top:2px;}
.wave-invitacion .wi-timeline .wi-time{font-family:'Montserrat',sans-serif; color:var(--champagne-deep); font-size:.78rem; letter-spacing:1px; min-width:64px; padding-top:2px;}
.wave-invitacion .wi-timeline .wi-what{font-size:1.08rem;}

/* ---------- Vestimenta ---------- */
.wave-invitacion .wi-dc-type{font-family:'Great Vibes',cursive; font-size:2.2rem; color:var(--champagne-deep); margin:6px 0 18px;}
.wave-invitacion .wi-palette-row{display:flex; justify-content:center; gap:16px; margin:20px 0;}
.wave-invitacion .wi-palette-row .wi-sw{width:44px; height:44px; border-radius:50%; box-shadow:0 4px 12px rgba(0,0,0,.12); border:2px solid #fff;}
.wave-invitacion .wi-dc-note{font-size:.98rem; color:var(--ink-soft); max-width:440px; margin:6px auto;}
.wave-invitacion .wi-dc-avoid{margin-top:18px; font-family:'Montserrat',sans-serif; font-size:.72rem; letter-spacing:1px; color:#9a5548; text-transform:uppercase;}

/* ---------- Galeria ---------- */
.wave-invitacion .wi-gallery-feature{max-width:460px; margin:10px auto 0; border-radius:4px; overflow:hidden; box-shadow:var(--wi-shadow); display:none;}
.wave-invitacion .wi-gallery-feature.wi-show{display:block;}
.wave-invitacion .wi-gallery-feature img{width:100%; height:auto;}
.wave-invitacion .wi-gallery-caption{margin-top:16px; font-family:'Great Vibes',cursive; font-size:1.5rem; color:var(--champagne-deep);}

/* ---------- Regalos ---------- */
.wave-invitacion .wi-gift-card{max-width:420px; margin:10px auto 0; padding:36px 28px; border:1px solid var(--champagne-pale); border-radius:6px;}
.wave-invitacion .wi-gift-title{font-size:1.3rem; font-style:italic; margin-top:8px;}
.wave-invitacion .wi-gift-card p{color:var(--ink-soft); margin-top:10px;}

/* ---------- RSVP ---------- */
.wave-invitacion .wi-deadline{font-family:'Montserrat',sans-serif; font-size:.78rem; letter-spacing:1.5px; text-transform:uppercase; color:var(--olive-deep); margin-top:6px;}
.wave-invitacion .wi-rsvp-toast{color:var(--champagne-deep); margin:0 auto 6px; display:block;}
.wave-invitacion #wiRsvpForm{max-width:420px; margin:34px auto 0; display:flex; flex-direction:column; gap:16px; text-align:left;}
.wave-invitacion #wiRsvpForm label{font-family:'Montserrat',sans-serif; font-size:.68rem; letter-spacing:1.5px; text-transform:uppercase; color:var(--ink-soft);}
.wave-invitacion #wiRsvpForm input, .wave-invitacion #wiRsvpForm select, .wave-invitacion #wiRsvpForm textarea{
  padding:13px 14px; border:1px solid var(--champagne-pale); border-radius:3px; font-family:'Cormorant Garamond',serif;
  font-size:1.05rem; background:#fff; color:var(--ink); width:100%;
}
.wave-invitacion #wiRsvpForm textarea{resize:vertical; min-height:70px;}
.wave-invitacion #wiRsvpForm button{
  margin-top:6px; padding:15px; background:var(--champagne-deep); color:#fff; border:none; border-radius:2px;
  font-family:'Montserrat',sans-serif; letter-spacing:2.5px; text-transform:uppercase; font-size:.75rem; cursor:pointer; transition:.3s;
}
.wave-invitacion #wiRsvpForm button:hover{background:var(--olive-deep);}
.wave-invitacion #wiRsvpForm button:disabled{opacity:.6; cursor:default;}
.wave-invitacion .wi-rsvp-note{margin-top:16px; font-size:.85rem; color:var(--olive-deep); display:none;}
.wave-invitacion .wi-rsvp-contact{margin-top:24px; font-size:.92rem; color:var(--ink-soft);}
.wave-invitacion .wi-rsvp-contact a{color:var(--champagne-deep);}

/* ---------- Cierre ---------- */
.wave-invitacion .wi-footer{background:var(--ink); color:var(--champagne-pale); padding:80px 24px 50px; text-align:center; max-width:100%;}
.wave-invitacion .wi-monogram{font-family:'Great Vibes',cursive; font-size:3rem; color:var(--champagne);}
.wave-invitacion .wi-footer .wi-date{margin-top:12px;}
.wave-invitacion .wi-footer-toast{color:var(--champagne); margin:22px auto 0; display:block;}
.wave-invitacion .wi-closing{margin-top:24px; font-style:italic; max-width:420px; margin-left:auto; margin-right:auto; opacity:.9;}
.wave-invitacion .wi-credit{margin-top:50px; font-family:'Montserrat',sans-serif; font-size:.62rem; letter-spacing:1.5px; opacity:.45;}

/* ---------- Nav dots ---------- */
.wave-invitacion .wi-navdots{position:fixed; top:50%; right:16px; transform:translateY(-50%); z-index:400; display:flex; flex-direction:column; gap:11px;}
.wave-invitacion .wi-navdots a{width:7px; height:7px; border-radius:50%; background:rgba(0,0,0,.18); display:block;}
.wave-invitacion .wi-navdots a.active{background:var(--champagne-deep); transform:scale(1.5);}

@media (max-width:640px){
  .wave-invitacion{font-size:16.5px;}
  .wave-invitacion .wi-hero h1{font-size:3.4rem;}
  .wave-invitacion .wi-navdots{display:none;}
  .wave-invitacion .wi-section{padding:70px 20px;}
  .wave-invitacion .wi-padres-grid{gap:34px;}
  .wave-invitacion .wi-cd-box{width:64px;}
  .wave-invitacion .wi-cd-num{font-size:1.9rem;}
}
