:root{
  --ivory:#EEE7DA;
  --ivory-rgb:238,231,218;
  --champagne:#F1BE99;
  --gold:#A2B46B;
  --gold-light:#FCEEA8;
  --ink:#2A251F;
  --gray:#57524B;
  --line: rgba(42,37,31,0.12);
  --glass: rgba(255,255,255,0.58);
  --accent-rgb:159,175,103;
  --sun-rgb:252,238,168;
  --loader-botanic-opacity:0.34;
  --loader-botanic-stroke:rgba(162,180,107,0.62);
  --intro-botanic-opacity:0.24;
  --divider-floral-opacity:0.9;
  --petal-back-opacity:0.4;
  --petal-mid-opacity:0.6;
  --petal-front-opacity:0.82;
}
body.night{
  --ivory:#211D19;
  --ivory-rgb:33,29,25;
  --ink:#F5F1E7;
  --gray:#C8C0B2;
  --line: rgba(245,241,231,0.14);
  --glass: rgba(44,38,34,0.58);
  --gold:#B7C987;
  --gold-light:#FCEEA8;
  --accent-rgb:179,197,122;
}
*{box-sizing:border-box; margin:0; padding:0;}
html{scroll-behavior:smooth;}
body{
  background:var(--ivory);
  color:var(--ink);
  font-family:'Poppins', sans-serif;
  font-weight:300;
  overflow-x:hidden;
  cursor:default;
  transition:background 0.6s ease, color 0.6s ease;
}
body.intro-locked{
  overflow:hidden;
}
body.floral-minimal{
  --loader-botanic-opacity:0.18;
  --intro-botanic-opacity:0.12;
  --divider-floral-opacity:0.5;
  --petal-back-opacity:0.22;
  --petal-mid-opacity:0.4;
  --petal-front-opacity:0.62;
}
body.floral-romantic{
  --loader-botanic-opacity:0.34;
  --intro-botanic-opacity:0.24;
  --divider-floral-opacity:0.9;
  --petal-back-opacity:0.4;
  --petal-mid-opacity:0.6;
  --petal-front-opacity:0.82;
}
body.floral-editorial{
  --loader-botanic-opacity:0.26;
  --intro-botanic-opacity:0.16;
  --divider-floral-opacity:0.72;
  --petal-back-opacity:0.16;
  --petal-mid-opacity:0.28;
  --petal-front-opacity:0.45;
}
h1,h2,h3,.serif{font-family:'Cormorant Garamond', serif;}
img{max-width:100%; display:block;}
button{font-family:inherit;}
a{color:inherit;}
:focus-visible{
  outline:2px solid var(--gold);
  outline-offset:2px;
}
.section{padding:120px 24px; max-width:1100px; margin:0 auto; position:relative;}
.eyebrow{
  font-size:11px; letter-spacing:0.34em; text-transform:uppercase;
  color:var(--gold); text-align:center; margin-bottom:18px;
}
.section-title{
  text-align:center; font-size:clamp(30px,6vw,46px); font-weight:400; margin-bottom:56px;
}
.section-sub{text-align:center; font-size:13px; color:var(--gray); max-width:520px; margin:-36px auto 56px; line-height:1.8;}
.reveal{opacity:0; transform:translateY(28px); transition:opacity 0.9s ease, transform 0.9s ease;}
.reveal.in{opacity:1; transform:translateY(0);}

/* ===== LOADER ===== */
#loader{
  position:fixed; inset:0; z-index:200;
  display:flex; align-items:center; justify-content:center;
  background:
    radial-gradient(circle at 30% 20%, rgba(var(--sun-rgb),0.28), transparent 42%),
    radial-gradient(circle at 75% 78%, rgba(var(--accent-rgb),0.14), transparent 46%),
    linear-gradient(160deg, #f7f1e6 0%, var(--ivory) 45%, #f5eee2 100%);
  transition:opacity 0.72s ease, visibility 0.72s ease;
}
#loader.hidden{opacity:0; visibility:hidden; pointer-events:none;}
.loader-aura{
  position:absolute;
  width:min(68vw, 540px);
  aspect-ratio:1/1;
  border-radius:50%;
  background:radial-gradient(circle, rgba(var(--sun-rgb),0.32) 0%, rgba(var(--sun-rgb),0.08) 44%, transparent 72%);
  filter:blur(2px);
  animation:loaderAura 4.6s ease-in-out infinite;
}
.loader-card{
  position:relative;
  width:min(86vw, 430px);
  border:1px solid rgba(162,180,107,0.26);
  background:rgba(255,255,255,0.53);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  padding:30px 28px 24px;
  text-align:center;
  box-shadow:0 18px 45px rgba(52,43,35,0.12);
}
.loader-card::before,
.loader-card::after{
  content:'';
  position:absolute;
  left:20px;
  right:20px;
  height:1px;
  background:linear-gradient(90deg, transparent 0%, rgba(162,180,107,0.55) 30%, rgba(162,180,107,0.55) 70%, transparent 100%);
}
.loader-card::before{top:10px;}
.loader-card::after{bottom:10px;}
.loader-seal{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  width:110px;
  height:110px;
  margin-bottom:16px;
  animation:sealFloat 3.4s ease-in-out infinite;
}
.loader-logo{
  width:110px;
  height:110px;
  object-fit:contain;
  display:block;
}
.loader-title{
  font-family:'Cormorant Garamond', serif;
  font-size:clamp(30px, 7vw, 42px);
  letter-spacing:0.03em;
  color:var(--ink);
  margin-bottom:8px;
}
.loader-sub{
  font-size:11px;
  letter-spacing:0.26em;
  text-transform:uppercase;
  color:var(--gray);
  margin-bottom:20px;
}
.loader-track{
  position:relative;
  height:2px;
  width:min(75%, 260px);
  margin:0 auto;
  background:rgba(42,37,31,0.14);
  overflow:hidden;
}
.loader-track-fill{
  display:block;
  width:100%;
  height:100%;
  transform-origin:left center;
  transform:scaleX(0);
  background:linear-gradient(90deg, var(--gold), var(--gold-light));
  box-shadow:0 0 12px rgba(var(--accent-rgb),0.55);
  transition:transform 0.25s ease-out;
}

@keyframes loaderAura{
  0%,100%{transform:scale(0.96); opacity:0.65;}
  50%{transform:scale(1.05); opacity:0.92;}
}
@keyframes sealFloat{
  0%,100%{transform:translateY(0px);}
  50%{transform:translateY(-4px);}
}

/* ===== INTRO ===== */
#intro{
  position:fixed; inset:0; z-index:150; background:var(--ivory);
  display:flex; align-items:center; justify-content:center;
  transition:transform 1s cubic-bezier(.7,0,.2,1), opacity 1s ease, background 0.6s ease;
}
#intro.open{transform:translateY(-100%); opacity:0.4; pointer-events:none;}
.intro-inner{text-align:center; padding:24px;}
.intro-logo{
  width:clamp(100px, 20vw, 150px);
  height:clamp(100px, 20vw, 150px);
  object-fit:contain;
  margin:0 auto 26px;
  display:block;
}
.intro-eyebrow{font-size:12px; letter-spacing:0.4em; text-transform:uppercase; color:var(--gray); margin-bottom:22px;}
.intro-names{font-family:'Cormorant Garamond', serif; font-size:clamp(40px,9vw,72px); font-weight:400; margin-bottom:34px;}
.intro-names .amp{font-style:italic; color:var(--gold); font-size:0.6em; display:block; margin:4px 0;}
.open-btn{
  border:1px solid var(--gold); background:transparent; color:var(--ink);
  padding:14px 38px; font-size:12px; letter-spacing:0.22em; text-transform:uppercase;
  cursor:pointer; position:relative; overflow:hidden; transition:color 0.4s ease;
}
.open-btn::before{
  content:''; position:absolute; inset:0; background:var(--gold);
  transform:scaleX(0); transform-origin:left; transition:transform 0.5s ease; z-index:-1;
}
.open-btn:hover::before{transform:scaleX(1);}
.open-btn:hover{color:var(--ink);}

.intro-botanic{
  position:absolute;
  width:230px;
  height:230px;
  opacity:var(--intro-botanic-opacity);
  pointer-events:none;
  z-index:0;
  transition:opacity 0.6s ease;
}
.intro-botanic svg{display:block; width:100%; height:100%;}
.intro-botanic .ib-line{fill:none; stroke:var(--gold); stroke-width:2; stroke-linecap:round;}
.intro-botanic .ib-bud{fill:var(--champagne);}
.intro-botanic .ib-bud-accent{fill:var(--gold-light);}
.intro-botanic.tl{top:-14px; left:-14px;}
.intro-botanic.br{bottom:-14px; right:-14px; transform:rotate(180deg);}
@media (max-width:640px){
  .intro-botanic{width:150px; height:150px;}
}

/* ===== PROGRESS BAR ===== */
#progress{
  position:fixed; top:0; left:0; height:2px; background:linear-gradient(90deg,var(--gold),var(--gold-light));
  width:0%; z-index:120; transition:width 0.1s linear;
}

/* ===== NAV ===== */
#nav{
  position:fixed;
  top:14px;
  left:50%;
  transform:translate(-50%,-14px);
  z-index:110;
  display:flex;
  gap:22px;
  align-items:center;
  padding:10px 22px;
  border:1px solid var(--line);
  border-radius:999px;
  background:var(--glass);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  opacity:0;
  visibility:hidden;
  transition:opacity 0.4s ease, transform 0.4s ease, visibility 0.4s ease;
  font-size:10px;
  letter-spacing:0.16em;
  text-transform:uppercase;
  white-space:nowrap;
}
body:not(.intro-locked) #nav{opacity:1; visibility:visible; transform:translate(-50%,0);}
#nav a{text-decoration:none; color:var(--gray); transition:color 0.3s ease;}
#nav a:hover{color:var(--gold);}
#nav .nav-brand{
  font-family:'Cormorant Garamond', serif;
  font-style:italic;
  font-size:17px;
  letter-spacing:0.04em;
  color:var(--gold);
  margin-right:4px;
}
@media(max-width:760px){
  #nav{
    top:8px;
    gap:14px;
    padding:9px 16px;
    max-width:calc(100vw - 20px);
    overflow-x:auto;
    justify-content:flex-start;
  }
  #nav .nav-brand{display:none;}
}

/* ===== FLOATING BUTTONS ===== */
.float-btn{
  position:fixed; z-index:120; width:52px; height:52px; border-radius:50%; border:1px solid var(--gold);
  background:var(--glass); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px);
  display:flex; align-items:center; justify-content:center; cursor:pointer;
  transition:box-shadow 0.3s ease, transform 0.3s ease;
}
.float-btn:hover{box-shadow:0 8px 22px rgba(var(--accent-rgb),0.35); transform:translateY(-2px);}
#music-toggle{bottom:24px; right:24px;}
#whatsapp-float{bottom:24px; right:88px;}
#whatsapp-float svg{width:22px; height:22px; fill:var(--gold);}
.wa-picker{
  position:fixed;
  z-index:121;
  right:88px;
  bottom:84px;
  min-width:220px;
  border:1px solid var(--line);
  background:var(--glass);
  -webkit-backdrop-filter:blur(8px);
  backdrop-filter:blur(8px);
  border-radius:8px;
  padding:8px;
  opacity:0;
  visibility:hidden;
  transform:translateY(8px);
  transition:opacity 0.2s ease, transform 0.2s ease, visibility 0.2s ease;
}
.wa-picker.show{
  opacity:1;
  visibility:visible;
  transform:translateY(0);
}
.wa-option{
  display:block;
  width:100%;
  text-decoration:none;
  border:1px solid transparent;
  border-radius:6px;
  padding:10px 12px;
  font-size:13px;
  color:var(--ink);
  transition:border-color 0.2s ease, background 0.2s ease;
}
.wa-option:hover{
  border-color:var(--gold);
  background:rgba(var(--sun-rgb),0.22);
}
.wa-option-name{font-weight:500;}
.wa-option-note{font-size:11px; color:var(--gray);}
.music-bars{display:flex; align-items:flex-end; gap:2px; height:14px;}
.music-bars span{width:2px; background:var(--gold); animation:musicbar 0.9s ease-in-out infinite; border-radius:1px;}
.music-bars span:nth-child(1){height:6px; animation-delay:0s;}
.music-bars span:nth-child(2){height:14px; animation-delay:0.15s;}
.music-bars span:nth-child(3){height:9px; animation-delay:0.3s;}
@keyframes musicbar{0%,100%{transform:scaleY(0.4);} 50%{transform:scaleY(1);}}
.music-bars.paused span{animation-play-state:paused; transform:scaleY(0.3);}

/* ===== PETALS ===== */
.petal{
  position:fixed;
  top:-34px;
  left:0;
  z-index:5;
  pointer-events:none;
  opacity:0.68;
  filter:blur(var(--blur, 0px));
  animation:fall linear infinite;
}
.petal--back{opacity:0.4; z-index:3;}
.petal--back{opacity:var(--petal-back-opacity); z-index:3;}
.petal--mid{opacity:var(--petal-mid-opacity); z-index:4;}
.petal--front{opacity:var(--petal-front-opacity); z-index:6;}
@keyframes fall{
  to{ transform:translateY(112vh) translateX(var(--drift)) rotate(var(--spin, 360deg)) scale(var(--scale, 1)); }
}

/* ===== Floral dividers ===== */
#historia .section-title,
#rsvp .section-title{
  position:relative;
  margin-bottom:86px;
}
#historia .section-title::after,
#rsvp .section-title::after{
  content:'';
  position:absolute;
  left:50%;
  bottom:-34px;
  width:220px;
  height:24px;
  transform:translateX(-50%);
  background:
    radial-gradient(circle at 50% 52%, rgba(162,180,107,0.65) 0 2px, transparent 3px),
    radial-gradient(circle at 34% 48%, rgba(241,190,153,0.45) 0 1.8px, transparent 2.8px),
    radial-gradient(circle at 66% 48%, rgba(241,190,153,0.45) 0 1.8px, transparent 2.8px),
    linear-gradient(90deg, transparent 0%, rgba(162,180,107,0.56) 20%, rgba(162,180,107,0.56) 80%, transparent 100%);
  background-size:220px 24px;
  background-repeat:no-repeat;
  opacity:var(--divider-floral-opacity);
}
body.night #historia .section-title::after,
body.night #rsvp .section-title::after{
  opacity:0.72;
}

/* ===== CUSTOM CURSOR (desktop) ===== */
#cursor-ring{
  position:fixed; width:34px; height:34px; border:1px solid var(--gold); border-radius:50%;
  pointer-events:none; z-index:300; transform:translate(-50%,-50%);
  transition:width 0.25s ease, height 0.25s ease, opacity 0.3s ease, border-color 0.3s ease;
  opacity:0;
}
#cursor-dot{
  position:fixed; width:4px; height:4px; background:var(--gold); border-radius:50%;
  pointer-events:none; z-index:300; transform:translate(-50%,-50%); opacity:0;
}
body.has-cursor #cursor-ring, body.has-cursor #cursor-dot{opacity:1;}
#cursor-ring.grow{width:56px; height:56px; border-color:var(--ink);}

/* ===== HERO ===== */
#hero{min-height:100vh; display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center; position:relative; padding:40px 24px; overflow:hidden;}
.hero-photo{
  position:absolute;
  inset:0;
  z-index:0;
  pointer-events:none;
  opacity:0.88;
}
.hero-photo img{width:100%; height:100%; object-fit:cover;}
.hero-photo::after{
  content:'';
  position:absolute;
  inset:0;
  background:linear-gradient(180deg,
    rgba(var(--ivory-rgb),0.97) 0%,
    rgba(var(--ivory-rgb),0.66) 26%,
    rgba(var(--ivory-rgb),0.8) 58%,
    rgba(var(--ivory-rgb),0.97) 100%);
}
.hero-glow{position:absolute; width:520px; height:520px; border-radius:50%; background:radial-gradient(circle, rgba(var(--sun-rgb),0.34), transparent 72%); top:50%; left:50%; transform:translate(-50%,-50%); pointer-events:none; z-index:1; will-change:transform;}
.hero-content{position:relative; z-index:2;}
.hero-eyebrow{font-size:12px; letter-spacing:0.35em; text-transform:uppercase; color:var(--gray); margin-bottom:20px;}
.hero-names{font-size:clamp(48px,12vw,96px); font-weight:400; line-height:1.02;}
.hero-amp{display:block; font-style:italic; color:var(--gold); font-size:0.5em; margin:10px 0; animation:pulse 3.4s ease-in-out infinite;}
@keyframes pulse{0%,100%{opacity:1;} 50%{opacity:0.5;}}
.hero-tag{margin-top:22px; font-size:13px; letter-spacing:0.08em; color:var(--gray);}
.hero-date{margin-top:14px; font-family:'Cormorant Garamond', serif; font-size:22px; color:var(--ink);}
.countdown{display:flex; gap:26px; justify-content:center; margin-top:44px;}
.cd-unit{text-align:center; min-width:56px;}
.cd-num{font-family:'Cormorant Garamond', serif; font-size:36px; color:var(--gold); font-weight:500; display:inline-block; transition:transform 0.2s ease;}
.cd-num.tick{transform:scale(1.15);}
.cd-label{font-size:9px; letter-spacing:0.2em; text-transform:uppercase; color:var(--gray); margin-top:4px;}
.cta-btn{margin-top:48px; border:1px solid var(--gold); background:transparent; color:var(--ink); padding:15px 40px; font-size:12px; letter-spacing:0.2em; text-transform:uppercase; cursor:pointer; position:relative; overflow:hidden; transition:color 0.4s ease;}
.cta-btn::before{content:''; position:absolute; inset:0; background:var(--gold); transform:scaleX(0); transform-origin:left; transition:transform 0.5s ease; z-index:-1;}
.cta-btn:hover::before{transform:scaleX(1);}
.cta-btn:hover{color:var(--ink);}
.hero-actions{display:flex; gap:12px; flex-wrap:wrap; justify-content:center; margin-top:36px;}
.hero-actions .cta-btn{margin-top:0;}
.mini-btn{
  border:1px solid var(--line);
  background:transparent;
  color:var(--ink);
  padding:15px 22px;
  font-size:11px;
  letter-spacing:0.14em;
  text-transform:uppercase;
  cursor:pointer;
}
.mini-btn:hover{border-color:var(--gold);}
.mini-btn.fill{background:var(--gold); color:var(--ink); border-color:var(--gold);}
.mini-btn.fill:hover{background:#879758; border-color:#879758;}
.scroll-hint{position:absolute; bottom:28px; left:50%; transform:translateX(-50%); font-size:10px; letter-spacing:0.25em; text-transform:uppercase; color:var(--gray); animation:bob 2.4s ease-in-out infinite;}
@keyframes bob{0%,100%{transform:translate(-50%,0);} 50%{transform:translate(-50%,8px);}}

/* ===== TIMELINE ===== */
.timeline{position:relative; margin-top:20px;}
.timeline::before{content:''; position:absolute; left:50%; top:0; bottom:0; width:1px; background:var(--line); transform:translateX(-50%);}
.tl-item{display:grid; grid-template-columns:1fr 40px 1fr; align-items:center; gap:0 28px; margin-bottom:70px;}
.tl-item:last-child{margin-bottom:0;}
.tl-dot{width:10px; height:10px; border-radius:50%; background:var(--gold); margin:0 auto; position:relative; z-index:2; box-shadow:0 0 0 6px var(--ivory);}
.tl-media{border-radius:2px; overflow:hidden; box-shadow:0 20px 40px rgba(34,31,28,0.08); will-change:transform;}
.tl-media img{transition:transform 0.6s ease;}
.tl-media:hover img{transform:scale(1.05);}
.tl-text{padding:0 8px;}
.tl-year{font-family:'Cormorant Garamond', serif; font-style:italic; color:var(--gold); font-size:18px; margin-bottom:8px;}
.tl-title{font-family:'Cormorant Garamond', serif; font-size:24px; margin-bottom:8px;}
.tl-desc{font-size:13px; color:var(--gray); line-height:1.8;}
.tl-item:nth-child(even) .tl-text{grid-column:1; text-align:right;}
.tl-item:nth-child(even) .tl-dot{grid-column:2;}
.tl-item:nth-child(even) .tl-media{grid-column:3;}
@media(max-width:720px){
  .timeline::before{left:20px;}
  .tl-item, .tl-item:nth-child(even){grid-template-columns:40px 1fr; grid-template-areas:"dot text" "media media";}
  .tl-item .tl-dot{grid-area:dot;}
  .tl-item .tl-text{grid-area:text; order:0 !important; text-align:left !important;}
  .tl-item .tl-media{grid-area:media; grid-column:1 / -1; grid-row:2; width:100%; justify-self:stretch; order:0 !important; margin-top:16px;}
  .tl-item .tl-media img{width:100%; height:auto; display:block;}
  .tl-item:nth-child(even) .tl-text{grid-area:text; grid-column:auto; text-align:left;}
  .tl-item:nth-child(even) .tl-dot{grid-area:dot; grid-column:auto;}
  .tl-item:nth-child(even) .tl-media{grid-area:media; grid-column:1 / -1; grid-row:2; width:100%; justify-self:stretch;}
}

/* ===== VENUES ===== */
.venue-grid{display:grid; grid-template-columns:1fr 1fr; gap:36px;}
@media(max-width:760px){.venue-grid{grid-template-columns:1fr;}}
.venue-card{background:var(--glass); -webkit-backdrop-filter:blur(6px); backdrop-filter:blur(6px); border:1px solid var(--line); padding:38px 32px; text-align:center; border-radius:2px; transition:transform 0.4s ease, box-shadow 0.4s ease;}
.venue-card:hover{transform:translateY(-6px); box-shadow:0 24px 48px rgba(34,31,28,0.08);}
.venue-icon{width:34px; height:34px; margin:0 auto 18px; stroke:var(--gold); fill:none;}
.venue-name{font-family:'Cormorant Garamond', serif; font-size:26px; margin-bottom:8px;}
.venue-detail{font-size:13px; color:var(--gray); margin-bottom:4px;}
.venue-note{margin-top:12px;}
.map-embed{margin-top:20px; border-radius:2px; overflow:hidden; filter:grayscale(35%) sepia(8%); border:1px solid var(--line);}
.map-embed iframe{width:100%; height:180px; border:0; display:block;}
.map-btn{display:inline-block; margin-top:16px; font-size:11px; letter-spacing:0.14em; text-transform:uppercase; color:var(--gold); text-decoration:none; border-bottom:1px solid var(--gold); padding-bottom:2px;}

/* ===== CORTEJO ===== */
.party-grid{display:grid; grid-template-columns:repeat(4,1fr); gap:28px 20px;}
@media(max-width:760px){.party-grid{grid-template-columns:repeat(2,1fr);}}
.party-card{text-align:center;}
.party-photo{width:88px; height:88px; border-radius:50%; overflow:hidden; margin:0 auto 14px; border:1px solid var(--line);}
.party-photo img{width:100%; height:100%; object-fit:cover;}
.party-name{font-family:'Cormorant Garamond', serif; font-size:17px;}
.party-role{font-size:10px; letter-spacing:0.14em; text-transform:uppercase; color:var(--gold); margin-top:3px;}

/* ===== DRESS CODE ===== */
.dress-grid{display:grid; grid-template-columns:repeat(2,1fr); gap:24px;}
@media(max-width:760px){.dress-grid{grid-template-columns:1fr;}}
.dress-card{border:1px solid var(--line); padding:34px 24px; text-align:center; border-radius:2px; transition:border-color 0.35s ease, transform 0.35s ease;}
.dress-card:hover{border-color:var(--gold); transform:translateY(-4px);}
.dress-title{font-family:'Cormorant Garamond', serif; font-size:22px; margin-bottom:10px;}
.dress-sub{font-size:12px; color:var(--gray); letter-spacing:0.02em;}

/* ===== HOSPEDAJE ===== */
.hotel-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:24px;}
@media(max-width:760px){.hotel-grid{grid-template-columns:1fr;}}
.hotel-card{border:1px solid var(--line); border-radius:2px; overflow:hidden; transition:transform 0.35s ease, box-shadow 0.35s ease;}
.hotel-card:hover{transform:translateY(-5px); box-shadow:0 20px 40px rgba(34,31,28,0.08);}
.hotel-card img{height:150px; object-fit:cover;}
.hotel-body{padding:20px;}
.hotel-name{font-family:'Cormorant Garamond', serif; font-size:19px; margin-bottom:6px;}
.hotel-meta{font-size:11px; color:var(--gray); line-height:1.7;}

/* ===== GALLERY ===== */
.gallery-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:12px;}
@media(max-width:760px){.gallery-grid{grid-template-columns:repeat(2,1fr);}}
.gallery-item{overflow:hidden; border-radius:2px; cursor:pointer; aspect-ratio:1/1.15; position:relative;}
@media(max-width:760px){.gallery-item:last-child:nth-child(odd){grid-column:1 / -1;}}
.gallery-item img{width:100%; height:100%; object-fit:cover; transition:transform 0.6s ease;}
.gallery-item:hover img{transform:scale(1.08);}
.gallery-item::after{content:''; position:absolute; inset:0; background:rgba(var(--accent-rgb),0); transition:background 0.35s ease;}
.gallery-item:hover::after{background:rgba(var(--accent-rgb),0.18);}
#lightbox{position:fixed; inset:0; background:rgba(20,18,16,0.92); z-index:250; display:flex; align-items:center; justify-content:center; opacity:0; visibility:hidden; transition:opacity 0.4s ease, visibility 0.4s ease; padding:24px;}
#lightbox.show{opacity:1; visibility:visible;}
#lightbox img{max-width:82vw; max-height:82vh; border-radius:2px;}
#lightbox-close{position:absolute; top:24px; right:28px; color:#fff; font-size:28px; cursor:pointer; background:none; border:none; z-index:2;}
.lb-nav{
  position:absolute;
  top:50%;
  transform:translateY(-50%);
  width:46px;
  height:46px;
  border-radius:50%;
  border:1px solid rgba(255,255,255,0.35);
  background:rgba(255,255,255,0.06);
  color:#fff;
  font-size:26px;
  line-height:1;
  cursor:pointer;
  transition:background 0.3s ease, border-color 0.3s ease;
}
.lb-nav:hover{background:rgba(255,255,255,0.16); border-color:#fff;}
#lb-prev{left:18px;}
#lb-next{right:18px;}
.lb-count{
  position:absolute;
  bottom:18px;
  left:50%;
  transform:translateX(-50%);
  color:rgba(255,255,255,0.85);
  font-size:12px;
  letter-spacing:0.14em;
}
@media(max-width:640px){
  .lb-nav{width:38px; height:38px; font-size:20px;}
  #lb-prev{left:8px;}
  #lb-next{right:8px;}
}

/* ===== FAQ ===== */
.faq-list{max-width:640px; margin:0 auto;}
.faq-item{border-bottom:1px solid var(--line);}
.faq-q{width:100%; text-align:left; background:none; border:none; padding:20px 4px; font-size:15px; color:var(--ink); cursor:pointer; display:flex; justify-content:space-between; align-items:center; font-family:'Poppins', sans-serif;}
.faq-q .plus{color:var(--gold); font-size:18px; transition:transform 0.35s ease;}
.faq-item.open .plus{transform:rotate(45deg);}
.faq-a{max-height:0; overflow:hidden; transition:max-height 0.45s ease, padding 0.4s ease; font-size:13px; color:var(--gray); line-height:1.8; padding:0 4px;}
.faq-item.open .faq-a{max-height:200px; padding-bottom:20px;}

/* ===== GIFTS ===== */
.gift-box{text-align:center; max-width:560px; margin:0 auto;}
.gift-text{font-size:14px; color:var(--gray); line-height:1.9; margin-bottom:34px;}
.gift-buttons{display:flex; gap:16px; justify-content:center; flex-wrap:wrap;}
.ghost-btn{border:1px solid var(--line); background:transparent; color:var(--ink); padding:13px 28px; font-size:11px; letter-spacing:0.16em; text-transform:uppercase; cursor:pointer; transition:border-color 0.3s ease, background 0.3s ease;}
.ghost-btn:hover{border-color:var(--gold); background:rgba(var(--sun-rgb),0.22);}
#bank-info{margin-top:24px; overflow:hidden; max-height:0; transition:max-height 0.5s ease, opacity 0.4s ease; opacity:0; font-size:13px; color:var(--gray); text-align:left; background:var(--glass); border:1px solid var(--line); border-radius:2px;}
#bank-info.open{max-height:220px; opacity:1; padding:20px 24px;}
#bank-info p{margin-bottom:6px;}
.bank-line{display:flex; align-items:center; gap:8px; flex-wrap:wrap;}
.bank-copy-btn{
  border:1px solid var(--line);
  background:transparent;
  color:var(--ink);
  width:28px;
  height:28px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  padding:0;
  cursor:pointer;
}
.bank-copy-btn:hover{border-color:var(--gold);}
.bank-copy-btn svg{width:14px; height:14px; fill:currentColor;}
.bank-copy-btn.copied{border-color:var(--gold); color:var(--gold);}
.bank-copy-btn.error{border-color:#a34f45; color:#a34f45;}

/* ===== RSVP ===== */
.rsvp-form{max-width:520px; margin:0 auto; display:flex; flex-direction:column; gap:20px;}
.field{display:flex; flex-direction:column; gap:8px; text-align:left;}
.field label{font-size:10px; letter-spacing:0.2em; text-transform:uppercase; color:var(--gray);}
.field input, .field textarea, .field select{border:none; border-bottom:1px solid var(--line); background:transparent; padding:10px 2px; font-family:'Poppins', sans-serif; font-size:14px; color:var(--ink); transition:border-color 0.3s ease;}
.field input:focus, .field textarea:focus, .field select:focus{outline:none; border-color:var(--gold);}
.honeypot-field{position:absolute; left:-9999px; top:auto; width:1px; height:1px; overflow:hidden;}
.rsvp-submit{margin-top:12px; border:1px solid var(--gold); background:var(--gold); color:var(--ink); padding:15px; font-size:12px; letter-spacing:0.2em; text-transform:uppercase; cursor:pointer; transition:background 0.3s ease, transform 0.2s ease, opacity 0.3s ease;}
.rsvp-submit:hover{background:#879758;}
.rsvp-submit:active{transform:scale(0.98);}
.rsvp-submit:disabled{opacity:0.5; cursor:not-allowed;}
#rsvp-loading{
  position:fixed; inset:0; z-index:270; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:18px;
  background:rgba(250,247,242,0.88); backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px);
  opacity:0; visibility:hidden; transition:opacity 0.3s ease, visibility 0.3s ease;
}
#rsvp-loading.show{opacity:1; visibility:visible;}
.rsvp-spinner{
  width:54px; height:54px; border-radius:50%;
  border:2px solid rgba(133,150,72,0.28); border-top-color:var(--gold);
  animation:rsvp-spin 0.9s linear infinite;
}
@keyframes rsvp-spin{to{transform:rotate(360deg);}}
.rsvp-loading-text{font-size:11px; letter-spacing:0.18em; text-transform:uppercase; color:var(--gray);}
#rsvp-success{display:none; text-align:center; font-family:'Cormorant Garamond', serif; font-style:italic; font-size:19px; color:var(--gold); margin-top:18px;}
#rsvp-success.show{display:block;}
#rsvp-error{display:none; text-align:center; font-size:13px; color:#a34f45; margin-top:10px;}
#rsvp-error.show{display:block;}
.rsvp-note{text-align:center; font-size:10px; color:var(--gray); margin-top:10px; letter-spacing:0.02em;}
.rsvp-inline-actions{display:flex; justify-content:center; gap:10px; margin-top:12px; flex-wrap:wrap;}
#rsvp-wa{display:none;}
#rsvp-wa.show-inline{display:inline-block;}
#guests-wrap.hidden{display:none;}

/* ===== QUICK INFO (mobile) ===== */
#quick-info-btn{bottom:24px; left:24px; font-family:'Cormorant Garamond', serif; font-size:24px; color:var(--gold);}
#quick-info-modal{
  position:fixed;
  inset:0;
  z-index:260;
  background:rgba(20,18,16,0.72);
  opacity:0;
  visibility:hidden;
  transition:opacity 0.35s ease, visibility 0.35s ease;
  display:flex;
  align-items:flex-end;
  justify-content:center;
  padding:14px;
}
#quick-info-modal.show{opacity:1; visibility:visible;}
.quick-card{
  width:min(100%,520px);
  background:var(--ivory);
  border:1px solid var(--line);
  border-radius:10px 10px 0 0;
  padding:22px;
}
.quick-head{display:flex; justify-content:space-between; align-items:center; margin-bottom:14px;}
.quick-title{font-family:'Cormorant Garamond', serif; font-size:28px;}
.quick-close{border:none; background:none; font-size:26px; color:var(--ink); cursor:pointer;}
.quick-row{font-size:13px; color:var(--gray); line-height:1.8; margin-bottom:8px;}
.quick-actions{display:flex; gap:10px; flex-wrap:wrap; margin-top:16px;}
.quick-actions .ghost-btn{padding:11px 16px;}

/* ===== QR ===== */
.qr-wrap{text-align:center;}
.qr-wrap img{margin:0 auto 16px; border:1px solid var(--line); padding:10px; background:#fff;}
.qr-caption{font-size:12px; color:var(--gray); letter-spacing:0.04em;}

/* ===== FINAL ===== */
#final{text-align:center; padding:140px 24px;}
.final-logo{
  width:clamp(84px, 16vw, 120px);
  height:clamp(84px, 16vw, 120px);
  object-fit:contain;
  margin:0 auto 30px;
  display:block;
}
.final-quote{font-family:'Cormorant Garamond', serif; font-style:italic; font-size:clamp(22px,4vw,32px); max-width:640px; margin:0 auto; line-height:1.5;}
.final-names{margin-top:30px; font-size:13px; letter-spacing:0.2em; text-transform:uppercase; color:var(--gray);}
footer{text-align:center; padding:30px; font-size:11px; color:var(--gray); letter-spacing:0.08em;}

/* ===== CONFETTI CANVAS ===== */
#confetti-canvas{position:fixed; inset:0; pointer-events:none; z-index:280;}

@media (prefers-reduced-motion: reduce){ *{animation-duration:0.01ms !important; transition-duration:0.01ms !important;} }
@media (hover:none){ #cursor-ring, #cursor-dot{display:none;} }
@media(max-width:640px){
  .hero-actions{flex-direction:column; align-items:center;}
  .mini-btn, .hero-actions .cta-btn{width:100%; max-width:280px;}
  .section-sub{font-size:14px;}
  .float-btn{width:46px; height:46px;}
  #music-toggle{bottom:calc(16px + env(safe-area-inset-bottom)); right:16px;}
  #whatsapp-float{bottom:calc(16px + env(safe-area-inset-bottom)); right:70px;}
  #quick-info-btn{bottom:calc(16px + env(safe-area-inset-bottom)); left:16px;}
  #whatsapp-float svg{width:20px; height:20px;}
  .wa-picker{
    right:16px;
    left:16px;
    bottom:calc(78px + env(safe-area-inset-bottom));
    min-width:0;
  }
}
@media(min-width:761px){
  #quick-info-btn, #quick-info-modal{display:none;}
}
