/* ============================================================
   Estrella XV — v13 | By Game on Business LLC
   Mobile-first. Fonts: Pinyon Script / Cinzel / Cormorant Garamond
   ============================================================ */
:root{
  --exv-navy:#071843;
  --exv-navy2:#0d2154;
  --exv-midnight:#02071a;
  --exv-gold:#c9a76a;
  --exv-gold2:#f3d28a;
  --exv-gold3:#e9c886;
  --exv-ivory:#f8f4ea;
  --exv-white:#fffaf0;
  --exv-script:'Pinyon Script',cursive;
  --exv-caps:'Cinzel',serif;
  --exv-serif:'Cormorant Garamond',Georgia,serif;
}

/* ---------- Elementor full-bleed reset ---------- */
.elementor-widget[class*="xv_"]{width:100%!important;margin:0!important;padding:0!important}
.elementor-widget[class*="xv_"]>.elementor-widget-container{margin:0!important;padding:0!important}
.exv-envelope-stage,.exv-hero,.exv-section,.exv-footer{width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);box-sizing:border-box}
.exv-envelope-stage *,.exv-hero *,.exv-section *,.exv-footer *{box-sizing:border-box}

/* ---------- GATE: hide everything until the envelope is opened ---------- */
body.exv-locked{overflow:hidden!important;height:100dvh}
.exv-gate-hide{display:none!important}
body.elementor-editor-active .exv-gate-hide{display:revert!important}

/* ---------- Scroll reveal (sections fade up as you go down) ---------- */
.exv-reveal{opacity:0;transform:translateY(38px);transition:opacity .95s ease,transform .95s cubic-bezier(.2,.7,.2,1)}
.exv-reveal.exv-in{opacity:1;transform:none}
body.elementor-editor-active .exv-reveal{opacity:1!important;transform:none!important}
@media (prefers-reduced-motion:reduce){.exv-reveal{opacity:1;transform:none;transition:none}}

/* ---------- Stage (night sky) ---------- */
.exv-envelope-stage,.exv-hero{
  position:relative;overflow:hidden;color:var(--exv-white);
  background:radial-gradient(circle at 50% 18%,#1c3168 0,#0b1d51 32%,#051034 58%,#02081c 100%);
  min-height:100svh;display:flex;align-items:center;justify-content:center;text-align:center;
}
.exv-starfield{position:absolute;inset:0;pointer-events:none;
  background-image:
    radial-gradient(circle,rgba(243,210,138,.95) 0 1px,transparent 1.6px),
    radial-gradient(circle,rgba(255,255,255,.9) 0 1px,transparent 1.5px),
    radial-gradient(circle,rgba(201,167,106,.85) 0 1.6px,transparent 2.6px);
  background-size:137px 149px,191px 173px,313px 293px;
  background-position:17px 29px,73px 91px,101px 47px;
  opacity:.9;animation:exvStars 22s linear infinite}
.exv-starfield:before{content:"";position:absolute;inset:0;
  background-image:radial-gradient(circle,rgba(255,236,190,.9) 0 1.4px,rgba(243,210,138,.25) 2.5px,transparent 4px);
  background-size:257px 271px;background-position:43px 67px;
  animation:exvTwinkle 3.4s ease-in-out infinite alternate}
.exv-starfield:after{content:"✦          ✧          ✦";position:absolute;left:6%;right:6%;top:7%;
  font-size:clamp(16px,3.4vw,30px);letter-spacing:12vw;color:var(--exv-gold2);
  text-shadow:0 0 16px rgba(243,210,138,.9);opacity:.7;white-space:nowrap;overflow:hidden}

/* ---------- Envelope header (script name like the mockup) ---------- */
.exv-envelope-wrap{position:relative;z-index:2;width:min(760px,96vw);padding:26px 12px;transition:opacity .8s ease}
.exv-head{transition:opacity .9s ease,transform .9s ease}
.exv-crest{display:inline-flex;flex-direction:column;align-items:center;justify-content:center;
  width:58px;height:58px;border-radius:50%;border:1px solid rgba(233,200,134,.75);
  color:var(--exv-gold2);margin-bottom:10px;
  box-shadow:0 0 24px rgba(201,167,106,.28),inset 0 0 16px rgba(201,167,106,.16)}
.exv-crest .exv-crown{font-style:normal;font-size:15px;line-height:1;margin-bottom:2px}
.exv-crest .exv-mono{font-style:normal;font-family:var(--exv-caps);font-size:16px;letter-spacing:.06em}
.exv-script-name,.exv-envelope-wrap h1{
  font-family:var(--exv-script);font-weight:400;
  font-size:clamp(64px,17vw,140px);line-height:1.02;margin:0 0 4px;
  background:linear-gradient(180deg,#ffe9b8 0%,#f3d28a 42%,#c9a76a 78%,#a67f3e 100%);
  -webkit-background-clip:text;background-clip:text;color:transparent;-webkit-text-fill-color:transparent;
  filter:drop-shadow(0 0 22px rgba(243,210,138,.35)) drop-shadow(0 4px 14px rgba(0,0,0,.35))}
.exv-kicker{font-family:var(--exv-caps);text-transform:uppercase;letter-spacing:.52em;text-indent:.52em;
  color:var(--exv-gold3);font-size:clamp(12px,3.2vw,18px);margin-bottom:12px}
.exv-divider{display:flex;align-items:center;justify-content:center;gap:12px;margin:2px auto clamp(22px,5vw,42px);width:min(320px,72vw);color:var(--exv-gold2)}
.exv-divider i{flex:1;height:1px;background:linear-gradient(90deg,transparent,var(--exv-gold3));display:block}
.exv-divider i:last-child{background:linear-gradient(90deg,var(--exv-gold3),transparent)}
.exv-divider span{font-size:13px;text-shadow:0 0 10px rgba(243,210,138,.8)}

/* ---------- Envelope (navy + gold fold edges, like the sample) ---------- */
.exv-envelope{position:relative;display:block;margin:0 auto;
  width:min(560px,90vw);aspect-ratio:100/70;border:0;background:transparent;cursor:pointer;
  overflow:visible;-webkit-tap-highlight-color:transparent;
  filter:drop-shadow(0 26px 34px rgba(0,0,0,.5)) drop-shadow(0 0 30px rgba(201,167,106,.10));
  perspective:1400px;transition:transform .8s ease}
.exv-envelope:active{transform:scale(.985)}

.exv-back{position:absolute;inset:0;z-index:1;
  background:linear-gradient(150deg,#0e2158 0%,#071843 45%,#030b26 100%);
  box-shadow:inset 0 0 0 1.5px rgba(233,200,134,.85),inset 0 0 60px rgba(0,0,0,.35)}

/* Each fold panel = gold gradient base + navy inset with the same clip-path → crisp gold edge along the diagonals */
.exv-flap,.exv-left,.exv-right,.exv-front{position:absolute;background:linear-gradient(135deg,#f0d190,#9a7434)}
.exv-flap:after,.exv-left:after,.exv-right:after,.exv-front:after{content:"";position:absolute;inset:1.6px;clip-path:inherit}

.exv-flap{left:0;right:0;top:0;height:58%;z-index:7;clip-path:polygon(0 0,100% 0,50% 100%);
  transform-origin:top;transform:rotateX(0);transition:transform 1.05s cubic-bezier(.55,.06,.35,1),z-index 0s .5s;
  backface-visibility:hidden}
.exv-flap:after{background:linear-gradient(168deg,#142a63 0%,#081a4c 55%,#040d30 100%)}
.exv-left{left:0;bottom:0;width:51%;height:100%;z-index:5;clip-path:polygon(0 0,100% 50%,0 100%)}
.exv-left:after{background:linear-gradient(115deg,#0d2054 0%,#061540 60%,#030a24 100%)}
.exv-right{right:0;bottom:0;width:51%;height:100%;z-index:5;clip-path:polygon(100% 0,0 50%,100% 100%)}
.exv-right:after{background:linear-gradient(245deg,#0d2054 0%,#061540 60%,#030a24 100%)}
.exv-front{left:0;right:0;bottom:0;height:55%;z-index:6;clip-path:polygon(0 100%,50% 0,100% 100%)}
.exv-front:after{background:linear-gradient(180deg,#0c1f58 0%,#061340 55%,#02081f 100%);
  box-shadow:inset 0 -22px 40px rgba(0,0,0,.35)}

/* ---------- Wax seal (gold, crown + XV) ---------- */
.exv-seal{position:absolute;left:50%;top:52%;transform:translate(-50%,-50%);z-index:10;
  width:clamp(64px,17.5%,96px);aspect-ratio:1;border-radius:50%;
  display:flex;flex-direction:column;align-items:center;justify-content:center;gap:1px;
  color:#5c3d10;font-family:var(--exv-caps);
  background:
    radial-gradient(circle at 34% 26%,#ffedb9 0%,#f0cf88 28%,#c99d4e 55%,#93692a 82%,#6d4a17 100%);
  box-shadow:
    0 10px 22px rgba(0,0,0,.45),
    0 0 26px rgba(243,210,138,.35),
    inset 0 2px 4px rgba(255,255,255,.55),
    inset 0 -4px 8px rgba(74,48,10,.55);
  transition:transform .5s ease,opacity .4s ease;
  animation:exvSealGlow 3s ease-in-out infinite alternate}
.exv-seal:before{content:"";position:absolute;inset:9%;border-radius:50%;
  border:1.5px solid rgba(94,63,17,.55);
  box-shadow:inset 0 1px 2px rgba(255,255,255,.4),inset 0 -2px 4px rgba(74,48,10,.4)}
.exv-seal:after{content:"";position:absolute;inset:-4%;border-radius:48% 52% 50% 50%/51% 49% 52% 48%;
  background:radial-gradient(circle at 40% 30%,rgba(255,236,190,.35),rgba(147,105,42,.28) 70%,rgba(109,74,23,.32));
  z-index:-1;filter:blur(.4px)}
.exv-seal i{font-style:normal;font-size:clamp(11px,2.6vw,15px);line-height:1;text-shadow:0 1px 0 rgba(255,255,255,.35)}
.exv-seal em{font-style:normal;font-weight:600;font-size:clamp(16px,4vw,23px);letter-spacing:.05em;line-height:1.05;
  text-shadow:0 1px 0 rgba(255,255,255,.35),0 -1px 1px rgba(74,48,10,.5)}

/* ---------- Sparkle burst when the seal breaks ---------- */
.exv-burst{position:absolute;left:50%;top:52%;z-index:11;pointer-events:none}
.exv-burst i{position:absolute;left:0;top:0;font-style:normal;color:var(--exv-gold2);
  text-shadow:0 0 12px rgba(243,210,138,.95);font-size:18px;opacity:0;transform:translate(-50%,-50%) scale(.3)}
.is-breaking .exv-burst i,.is-open .exv-burst i{animation:exvBurst .85s ease-out forwards}
.exv-burst i:nth-child(1){--bx:-74px;--by:-46px;animation-delay:.02s}
.exv-burst i:nth-child(2){--bx:70px;--by:-58px;animation-delay:.06s;font-size:14px}
.exv-burst i:nth-child(3){--bx:-88px;--by:22px;animation-delay:.10s;font-size:15px}
.exv-burst i:nth-child(4){--bx:86px;--by:30px;animation-delay:.05s}
.exv-burst i:nth-child(5){--bx:-30px;--by:-84px;animation-delay:.12s;font-size:13px}
.exv-burst i:nth-child(6){--bx:34px;--by:74px;animation-delay:.08s;font-size:16px}

/* ---------- Invitation card (ivory + gold ornaments) ---------- */
.exv-letter{position:absolute;left:10%;right:10%;bottom:3%;height:94%;z-index:2;
  background:linear-gradient(178deg,#fffdf6 0%,#f8f1df 70%,#f1e6cc 100%);
  color:var(--exv-navy);border:1px solid #dfc286;border-radius:3px;
  box-shadow:0 18px 42px rgba(0,0,0,.35);
  display:flex;flex-direction:column;justify-content:center;align-items:center;
  padding:8% 6%;overflow:hidden;
  transform:translateY(0) scale(1);opacity:1;
  transition:transform 1.7s cubic-bezier(.16,.8,.22,1) .55s,box-shadow 1.2s ease .55s}
.exv-letter:before{content:"";position:absolute;inset:10px;border:1px solid rgba(178,138,66,.65);pointer-events:none}
.exv-letter:after{content:"";position:absolute;inset:15px;border:1px solid rgba(178,138,66,.3);pointer-events:none}
.exv-card-orn{position:absolute;inset:0;pointer-events:none;color:#b28a42;opacity:.8}
.exv-card-orn b{position:absolute;font-weight:400;font-size:clamp(14px,3.4vw,20px);line-height:1}
.exv-card-orn b:nth-child(1){left:16px;top:14px;transform:rotate(-90deg)}
.exv-card-orn b:nth-child(2){right:16px;top:14px;transform:rotate(180deg) scaleX(-1)}
.exv-card-orn b:nth-child(3){left:16px;bottom:14px;transform:scaleX(-1)}
.exv-card-orn b:nth-child(4){right:16px;bottom:14px}
.exv-card-crest{display:flex;flex-direction:column;align-items:center;justify-content:center;
  width:clamp(38px,10vw,52px);aspect-ratio:1;border-radius:50%;border:1px solid #b28a42;
  color:#a5792f;margin-bottom:clamp(6px,1.6vw,12px)}
.exv-card-crest i{font-style:normal;font-size:clamp(9px,2vw,12px);line-height:1}
.exv-card-crest em{font-style:normal;font-family:var(--exv-caps);font-size:clamp(10px,2.4vw,14px)}
.exv-card-name{font-family:var(--exv-script);font-weight:400;
  font-size:clamp(38px,11vw,72px);line-height:1;color:#132a67;
  text-shadow:0 1px 0 rgba(255,255,255,.6)}
.exv-letter small{font-family:var(--exv-caps);color:#a5792f;letter-spacing:.4em;text-indent:.4em;
  text-transform:uppercase;font-size:clamp(9px,2.3vw,13px);margin-top:clamp(4px,1.2vw,8px)}
.exv-card-div{display:flex;align-items:center;gap:8px;width:min(180px,52%);margin:clamp(8px,2vw,14px) auto;color:#b28a42}
.exv-card-div i{flex:1;height:1px;background:linear-gradient(90deg,transparent,#b28a42);display:block}
.exv-card-div i:last-child{background:linear-gradient(90deg,#b28a42,transparent)}
.exv-card-div span{font-size:10px}
.exv-card-date{font-style:normal;font-family:var(--exv-caps);color:#132a67;
  letter-spacing:.22em;text-indent:.22em;font-size:clamp(10px,2.6vw,15px)}

/* ---------- Tap indicator ---------- */
.exv-tap{margin-top:clamp(22px,5vw,34px);display:flex;flex-direction:column;align-items:center;gap:10px;
  font-family:var(--exv-caps);letter-spacing:.42em;text-indent:.42em;text-transform:uppercase;
  color:var(--exv-gold3);font-size:clamp(11px,2.8vw,14px);transition:opacity .5s ease}
.exv-hand{color:var(--exv-gold2);filter:drop-shadow(0 0 8px rgba(243,210,138,.6));animation:exvTapPulse 1.6s ease-in-out infinite}

/* ---------- Open sequence (matches the 5-step storyboard) ---------- */
.exv-envelope-stage.is-breaking .exv-seal{animation:exvSealCrack .55s ease forwards}
.exv-envelope-stage.is-open .exv-seal{transform:translate(-50%,-50%) scale(.1) rotate(30deg);opacity:0}
.exv-envelope-stage.is-open .exv-flap{transform:rotateX(180deg);z-index:1}
.exv-envelope-stage.is-open .exv-letter{transform:translateY(-112%) scale(1.05);z-index:4;
  box-shadow:0 34px 70px rgba(0,0,0,.5),0 0 40px rgba(243,210,138,.14)}
.exv-envelope-stage.is-open .exv-tap{opacity:0}
.exv-envelope-stage.is-open .exv-head{opacity:.14;transform:translateY(-8px)}
.exv-envelope-stage.is-open .exv-envelope{cursor:default}
.exv-envelope-stage.is-done .exv-envelope-wrap{opacity:.98}

/* ---------- Hero ---------- */
.exv-hero{background-size:cover;background-position:center}
.exv-hero-inner{position:relative;z-index:2;max-width:1300px;padding:32px 18px}
.exv-hero h1{font-family:var(--exv-script);font-weight:400;font-size:clamp(56px,13vw,132px);line-height:1.05;
  color:#ffe9b8;text-shadow:0 0 30px rgba(201,167,106,.45);margin:0 0 18px}
.exv-hero p{font-family:var(--exv-serif);font-size:clamp(16px,4vw,21px);letter-spacing:.06em;margin:0 0 14px}
.exv-hero .exv-date{font-family:var(--exv-caps);letter-spacing:.2em;font-size:clamp(13px,3.4vw,18px)}
.exv-btn{display:inline-block;background:linear-gradient(135deg,#f4d890,#c9a76a);color:#041132!important;
  font-family:var(--exv-caps);text-transform:uppercase;letter-spacing:.14em;font-weight:600;
  border-radius:999px;padding:15px 30px;text-decoration:none;border:0;margin-top:10px;
  box-shadow:0 12px 26px rgba(201,167,106,.3)}

/* ---------- Light sections ---------- */
.exv-section{background:var(--exv-ivory);color:var(--exv-navy);text-align:center;
  padding:clamp(64px,12vw,120px) 18px;margin:0!important;min-height:72svh;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  font-family:var(--exv-serif)}
.exv-section .exv-kicker{color:#a5792f;margin-bottom:10px}
.exv-section h2{font-family:var(--exv-script);font-size:clamp(46px,11vw,84px);font-weight:400;line-height:1.05;margin:0 0 18px;color:#132a67}
.exv-section p{max-width:720px;margin:0 auto 22px;font-size:clamp(17px,4.4vw,21px);line-height:1.6}
.exv-photo,.exv-demo-card{max-width:340px;width:74vw;border-radius:20px;margin:0 auto 28px;display:block;box-shadow:0 20px 45px rgba(7,24,79,.18)}
.exv-demo-card{height:200px;background:linear-gradient(135deg,#0a1c55,#02071a);border:1px solid var(--exv-gold);
  color:var(--exv-gold2);display:flex;align-items:center;justify-content:center;font-family:var(--exv-caps);font-size:52px}

.exv-countdown{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:8px}
.exv-countdown span{background:#fff;border:1px solid #ead8b8;border-radius:14px;min-width:70px;padding:14px 10px;color:var(--exv-navy)}
.exv-countdown b{display:block;font-family:var(--exv-caps);font-size:28px}
.exv-countdown span{font-family:var(--exv-caps);font-size:11px;letter-spacing:.1em;text-transform:uppercase}

.exv-gallery{display:grid;grid-template-columns:repeat(2,1fr);gap:10px;width:min(1000px,94vw);margin:26px auto 0}
.exv-gallery img,.exv-fake-photo{width:100%;height:160px;object-fit:cover;border-radius:16px}
.exv-fake-photo{background:linear-gradient(135deg,#0a1c55,#c9a76a);color:#fff;display:flex;align-items:center;justify-content:center;font-family:var(--exv-caps)}

.exv-video-box{width:min(760px,92vw);height:220px;background:#071843;color:var(--exv-gold2);border:1px solid var(--exv-gold);
  display:flex;align-items:center;justify-content:center;border-radius:20px;margin-top:20px;font-family:var(--exv-caps);letter-spacing:.15em}

.exv-timeline{list-style:none;margin:26px auto 0;padding:0;max-width:640px;width:94vw}
.exv-timeline li{background:#fff;margin:10px 0;padding:16px 18px;border-left:4px solid var(--exv-gold);border-radius:10px;
  font-size:clamp(16px,4.2vw,19px);text-align:left}

.exv-rsvp-demo{display:grid;gap:12px;width:min(520px,94vw);margin:24px auto 0}
.exv-rsvp-demo input,.exv-rsvp-demo select{padding:15px;border:1px solid #ead8b8;border-radius:12px;background:#fff;
  font-family:var(--exv-serif);font-size:16px}
.exv-rsvp-demo button{padding:16px;border-radius:999px;border:0;background:linear-gradient(135deg,#f4d890,#c9a76a);
  font-family:var(--exv-caps);font-weight:600;text-transform:uppercase;letter-spacing:.12em;color:#07184f;font-size:14px}

.exv-footer{background:var(--exv-midnight);color:#f8e5bd;text-align:center;padding:80px 18px;font-family:var(--exv-serif)}
.exv-footer h3{font-family:var(--exv-script);font-size:clamp(46px,12vw,64px);font-weight:400;margin:0 0 10px}
.exv-footer p{font-size:clamp(15px,4vw,18px);opacity:.85;margin:0}

/* ---------- Animations ---------- */
@keyframes exvStars{from{background-position:12px 24px,60px 80px,90px 44px}to{background-position:154px 178px,264px 264px,414px 340px}}
@keyframes exvTwinkle{from{opacity:.25}to{opacity:.85}}
@keyframes exvTapPulse{0%,100%{transform:translateY(0)}50%{transform:translateY(7px)}}
@keyframes exvSealGlow{from{box-shadow:0 10px 22px rgba(0,0,0,.45),0 0 18px rgba(243,210,138,.25),inset 0 2px 4px rgba(255,255,255,.55),inset 0 -4px 8px rgba(74,48,10,.55)}
to{box-shadow:0 10px 22px rgba(0,0,0,.45),0 0 34px rgba(243,210,138,.55),inset 0 2px 4px rgba(255,255,255,.55),inset 0 -4px 8px rgba(74,48,10,.55)}}
@keyframes exvSealCrack{0%{transform:translate(-50%,-50%) scale(1) rotate(0)}30%{transform:translate(calc(-50% - 3px),-50%) scale(1.06) rotate(-4deg)}55%{transform:translate(calc(-50% + 3px),-50%) scale(1.06) rotate(4deg)}100%{transform:translate(-50%,-50%) scale(1.04) rotate(0)}}
@keyframes exvBurst{0%{opacity:0;transform:translate(-50%,-50%) scale(.3)}25%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--bx)),calc(-50% + var(--by))) scale(1.15) rotate(60deg)}}

/* ---------- Tablet & up (min-width = mobile-first) ---------- */
@media (min-width:700px){
  .exv-gallery{grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:16px}
  .exv-gallery img,.exv-fake-photo{height:230px}
  .exv-video-box{height:360px}
  .exv-countdown{gap:14px}
  .exv-countdown span{min-width:88px;padding:18px 14px}
  .exv-countdown b{font-size:34px}
  .exv-section{min-height:60svh}
  .exv-timeline li{text-align:center}
}
@media (min-width:1024px){
  .exv-envelope{width:min(620px,60vw)}
  .exv-envelope-stage.is-open .exv-letter{transform:translateY(-108%) scale(1.08)}
}

/* ============================================================
   v14 additions — Venues, Multi-step RSVP, Music toggle
   ============================================================ */

/* ---------- Venues (two elegant cards) ---------- */
.exv-divider-dark{display:flex;align-items:center;justify-content:center;gap:12px;margin:0 auto clamp(26px,6vw,44px);width:min(300px,70vw);color:#b28a42}
.exv-divider-dark i{flex:1;height:1px;background:linear-gradient(90deg,transparent,#b28a42);display:block}
.exv-divider-dark i:last-child{background:linear-gradient(90deg,#b28a42,transparent)}
.exv-divider-dark span{font-size:12px}
.exv-venues{display:grid;grid-template-columns:1fr;gap:22px;width:min(940px,94vw);margin:0 auto}
.exv-venue{position:relative;background:linear-gradient(180deg,#ffffff,#faf6ec);border:1px solid #ead8b8;border-radius:16px;
  padding:clamp(30px,7vw,46px) clamp(20px,5vw,34px);text-align:center;
  box-shadow:0 14px 36px rgba(10,28,85,.08);transition:transform .35s ease,box-shadow .35s ease}
.exv-venue:before{content:"";position:absolute;inset:9px;border:1px solid rgba(178,138,66,.35);border-radius:11px;pointer-events:none}
.exv-venue:hover{transform:translateY(-4px);box-shadow:0 20px 48px rgba(10,28,85,.14)}
.exv-venue-icon{font-size:30px;display:block;margin-bottom:12px;filter:drop-shadow(0 4px 10px rgba(10,28,85,.18))}
.exv-venue-type{font-family:var(--exv-caps);text-transform:uppercase;letter-spacing:.4em;text-indent:.4em;
  font-size:clamp(11px,2.8vw,13px);color:#a5792f;margin-bottom:12px}
.exv-venue h3{font-family:var(--exv-serif);font-weight:600;font-size:clamp(22px,6vw,30px);color:#132a67;margin:0 0 12px;line-height:1.25}
.exv-venue-addr{font-family:var(--exv-serif);font-size:clamp(16px,4.4vw,18px);line-height:1.55;color:#2a3a63;margin:0 0 10px!important}
.exv-venue-time{font-family:var(--exv-serif);font-style:italic;color:#a5792f;font-size:clamp(15px,4.2vw,18px);margin:0 0 20px!important}
.exv-btn-outline{display:inline-block;font-family:var(--exv-caps);text-transform:uppercase;letter-spacing:.22em;text-indent:.22em;
  font-size:clamp(11px,3vw,13px);font-weight:600;color:#132a67!important;text-decoration:none;
  border:1px solid #c2a161;border-radius:999px;padding:14px 26px;background:#fff;
  transition:background .3s ease,color .3s ease,border-color .3s ease}
.exv-btn-outline:hover{background:#132a67;color:#fdf3dc!important;border-color:#132a67}

/* ---------- Multi-step RSVP ---------- */
.exv-rsvp{width:min(560px,94vw);margin:26px auto 0;background:#fff;border:1px solid #ead8b8;border-radius:18px;
  padding:clamp(26px,6vw,38px) clamp(18px,5vw,32px);box-shadow:0 16px 40px rgba(10,28,85,.09);text-align:center;position:relative}
.exv-rsvp:before{content:"";position:absolute;inset:8px;border:1px solid rgba(178,138,66,.28);border-radius:12px;pointer-events:none}
.exv-dots{display:flex;justify-content:center;gap:10px;margin-bottom:22px}
.exv-dots i{width:9px;height:9px;border-radius:50%;background:#ead8b8;transition:background .3s ease,transform .3s ease}
.exv-dots i.on{background:#132a67;transform:scale(1.25)}
.exv-step{display:none;animation:exvStepIn .5s ease}
.exv-step.on{display:block}
.exv-step label{display:block;font-family:var(--exv-serif);font-weight:600;font-size:clamp(19px,5vw,24px);
  color:#132a67;margin:0 0 16px;line-height:1.3}
.exv-rsvp input[type="text"],.exv-rsvp select,.exv-rsvp textarea{width:100%;padding:16px;border:1px solid #e3d3ae;
  border-radius:12px;background:#fffaf0;font-family:var(--exv-serif);font-size:17px;color:#132a67;outline:none;
  transition:border-color .25s ease,box-shadow .25s ease;-webkit-appearance:none;appearance:none}
.exv-rsvp input:focus,.exv-rsvp select:focus,.exv-rsvp textarea:focus{border-color:#c2a161;box-shadow:0 0 0 4px rgba(201,167,106,.18)}
.exv-rsvp select{background-image:linear-gradient(45deg,transparent 50%,#a5792f 50%),linear-gradient(135deg,#a5792f 50%,transparent 50%);
  background-position:calc(100% - 22px) 50%,calc(100% - 16px) 50%;background-size:6px 6px;background-repeat:no-repeat}
.exv-rsvp textarea{resize:vertical;min-height:88px}
.exv-choice{display:grid;gap:12px}
.exv-choice button{padding:18px 16px;border-radius:14px;font-family:var(--exv-serif);font-weight:600;font-size:clamp(17px,4.6vw,19px);
  cursor:pointer;transition:transform .2s ease,box-shadow .25s ease,background .25s ease;border:1.5px solid #132a67}
.exv-choice .exv-yes{background:linear-gradient(135deg,#0e2158,#050f33);color:#fdf3dc;box-shadow:0 10px 24px rgba(10,28,85,.25)}
.exv-choice .exv-no{background:#fff;color:#132a67}
.exv-choice button:hover{transform:translateY(-2px)}
.exv-choice .exv-yes:hover{box-shadow:0 14px 30px rgba(10,28,85,.35)}
.exv-step-nav{display:flex;justify-content:center;align-items:center;gap:14px;margin-top:20px;flex-wrap:wrap}
.exv-btn2{padding:16px 30px;border:0;border-radius:999px;cursor:pointer;font-family:var(--exv-caps);font-weight:600;
  text-transform:uppercase;letter-spacing:.14em;text-indent:.14em;font-size:13px;color:#0a1c55;
  background:linear-gradient(135deg,#f4d890,#c9a76a);box-shadow:0 10px 24px rgba(201,167,106,.35);
  transition:transform .2s ease,box-shadow .25s ease}
.exv-btn2:hover{transform:translateY(-2px);box-shadow:0 14px 30px rgba(201,167,106,.5)}
.exv-btn2[disabled]{opacity:.55;cursor:wait;transform:none}
.exv-back-btn{background:none;border:0;color:#a5792f;font-family:var(--exv-caps);font-size:12px;letter-spacing:.12em;
  text-transform:uppercase;cursor:pointer;padding:10px}
.exv-back-btn:hover{color:#132a67}
.exv-only-yes{margin-bottom:18px}
.exv-rsvp .exv-err{color:#b42318;font-family:var(--exv-serif);font-size:15px;margin-top:10px}
.exv-step-done .exv-check{width:74px;height:74px;margin:6px auto 18px;border-radius:50%;
  display:flex;align-items:center;justify-content:center;font-size:34px;color:#fffaf0;
  background:linear-gradient(135deg,#0e2158,#050f33);box-shadow:0 14px 32px rgba(10,28,85,.3),0 0 26px rgba(201,167,106,.4);
  animation:exvPop .6s cubic-bezier(.2,1.4,.4,1)}
.exv-done-msg{font-family:var(--exv-serif);font-size:clamp(17px,4.6vw,20px);color:#132a67;line-height:1.5;margin:0!important}
@keyframes exvStepIn{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}
@keyframes exvPop{from{transform:scale(.4);opacity:0}to{transform:scale(1);opacity:1}}

/* ---------- Floating music chip (like the wedding site) ---------- */
.exv-music-toggle{position:fixed;left:14px;top:14px;z-index:9999;display:inline-flex;align-items:center;gap:8px;
  padding:9px 16px;border-radius:999px;border:1px solid rgba(243,210,138,.6);cursor:pointer;
  background:rgba(3,10,32,.82);backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px);color:#f3d28a;
  font-family:var(--exv-caps);font-size:11px;letter-spacing:.18em;text-transform:uppercase;
  box-shadow:0 10px 26px rgba(2,9,31,.45);transition:transform .25s ease,opacity .4s ease,background .3s ease;
  opacity:0;pointer-events:none}
.exv-music-toggle.show{opacity:1;pointer-events:auto}
.exv-music-toggle:hover{transform:scale(1.05);background:rgba(7,24,67,.92)}
.exv-music-toggle .exv-note{font-size:15px;line-height:1}
.exv-music-toggle.playing .exv-note{animation:exvNote 1.4s ease-in-out infinite}
.exv-music-toggle.muted{color:#b7a681;border-color:rgba(201,167,106,.35)}
@keyframes exvNote{0%,100%{transform:translateY(0)}50%{transform:translateY(-3px)}}


@media (min-width:700px){
  .exv-venues{grid-template-columns:1fr 1fr;gap:28px}
  .exv-choice{grid-template-columns:1fr 1fr}
}


/* ============================================================
   v16 additions — Photo Divider, Photo Mosaic, Party Grid
   ============================================================ */

/* ---------- Cinematic photo divider ---------- */
.exv-photodiv{position:relative;overflow:hidden;height:clamp(46vh,62vh,80vh);
  width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw)}
.exv-photodiv-bg{position:absolute;inset:-6%;background-size:cover;background-position:center 30%;
  transform:scale(1.04);transition:transform 8s ease}
.exv-photodiv.exv-in .exv-photodiv-bg{transform:scale(1.12)}
.exv-photodiv-fade-top{position:absolute;top:0;left:0;right:0;height:22%;z-index:1;
  background:linear-gradient(to bottom,var(--exv-ivory) 0%,transparent 100%)}
.exv-photodiv-fade-bot{position:absolute;bottom:0;left:0;right:0;height:22%;z-index:1;
  background:linear-gradient(to top,var(--exv-ivory) 0%,transparent 100%)}
.exv-photodiv-quote{position:absolute;inset:0;z-index:2;display:flex;align-items:center;justify-content:center;padding:2rem}
.exv-photodiv-quote p{font-family:var(--exv-serif);font-style:italic;font-size:clamp(20px,5vw,34px);
  color:rgba(255,252,242,.95);margin:0;text-align:center;max-width:820px;line-height:1.45;
  background:rgba(7,24,79,.32);padding:16px 26px;border-radius:14px;
  text-shadow:0 2px 18px rgba(0,0,0,.65);backdrop-filter:blur(2px);-webkit-backdrop-filter:blur(2px)}

/* ---------- Photo mosaic ---------- */
.exv-mosaic{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:clamp(150px,42vw,380px);gap:6px;
  width:100vw;margin-left:calc(50% - 50vw);margin-right:calc(50% - 50vw);background:var(--exv-ivory);padding:6px 0}
.exv-mos{position:relative;overflow:hidden}
.exv-mos img{width:100%;height:100%;object-fit:cover;display:block;
  filter:brightness(.94) saturate(.92);transition:transform 1.1s cubic-bezier(.2,.7,.2,1),filter .6s ease}
.exv-mos:hover img{transform:scale(1.07);filter:brightness(1) saturate(1.05)}
.exv-mos-a{grid-column:span 2}
.exv-mos-cap{position:absolute;left:0;right:0;bottom:0;padding:clamp(12px,3vw,22px);
  background:linear-gradient(to top,rgba(7,24,79,.6) 0%,transparent 100%);
  font-family:var(--exv-serif);font-style:italic;font-size:clamp(15px,4vw,20px);color:rgba(255,252,242,.95);text-align:left}

/* ---------- Party grid (papás, chambelanes, corte de honor) ---------- */
.exv-party{display:grid;grid-template-columns:1fr;gap:14px;width:min(900px,94vw);margin:0 auto}
.exv-pc{text-align:center;padding:clamp(20px,5vw,32px) clamp(14px,3vw,20px);
  border-bottom:1px solid rgba(201,167,106,.35);transition:transform .4s ease;background:rgba(255,255,255,.5);border-radius:12px}
.exv-pc:hover{transform:translateY(-3px)}
.exv-pc-lbl{font-family:var(--exv-caps);font-weight:500;font-size:clamp(10px,2.8vw,12px);
  letter-spacing:.42em;text-indent:.42em;text-transform:uppercase;color:#a5792f;margin-bottom:10px}
.exv-pc-names{font-family:var(--exv-serif);font-style:italic;font-size:clamp(17px,4.6vw,20px);
  color:#132a67;line-height:1.7}

@media (min-width:700px){
  .exv-mosaic{grid-template-columns:1.1fr .9fr 1fr;grid-template-rows:clamp(200px,30vw,380px) clamp(200px,30vw,380px);grid-auto-rows:unset}
  .exv-mos-a{grid-column:1;grid-row:span 2}
  .exv-mos-b{grid-column:2;grid-row:1}
  .exv-mos-c{grid-column:3;grid-row:1}
  .exv-mos-d{grid-column:2;grid-row:2}
  .exv-mos-e{grid-column:3;grid-row:2}
  .exv-party{grid-template-columns:repeat(3,1fr);gap:18px}
}
