:root{--forest:#15392f;--forest2:#214a3e;--sage:#aebba2;--sage-light:#e4e9de;--paper:#f5f1e8;--ink:#20302a;--gold:#b59c67;--white:#fbfaf6}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--paper);color:var(--ink);font-family:"DM Sans",sans-serif;font-weight:300;overflow-x:hidden}a{color:inherit}.progress{position:fixed;z-index:999;top:0;left:0;width:0;height:2px;background:#cbd6bd}.nav{position:absolute;z-index:50;left:5vw;right:5vw;top:0;height:84px;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid #ffffff40;color:#fff}.monogram{font:30px "Italiana",serif;text-decoration:none}.navlinks{display:flex;align-items:center;gap:30px}.navlinks a{font-size:10px;letter-spacing:1.6px;text-decoration:none;text-transform:uppercase}.nav-rsvp{padding:10px 16px;border:1px solid #ffffff70}.menu{display:none}.hero{height:100svh;min-height:680px;position:relative;background:var(--forest);color:#fff;overflow:hidden}.hero-media{position:absolute;inset:0 0 0 44%}.hero-media img{width:100%;height:100%;object-fit:cover;object-position:center 35%;filter:saturate(.72) contrast(.96);animation:heroZoom 18s ease-out both}.hero-wash{position:absolute;inset:0;background:linear-gradient(90deg,#15392f 0%,#15392ff8 35%,#15392f9e 51%,#15392f10 78%)}.hero-copy{position:absolute;z-index:4;left:7.5vw;top:50%;transform:translateY(-48%)}.overline{font-size:10px;letter-spacing:3px;font-weight:500}.overline.dark{color:#63756c}.hero h1{font:400 clamp(80px,11vw,170px)/.65 "Italiana",serif;letter-spacing:-6px;margin:26px 0 28px}.hero h1 span,.hero h1 em{display:block}.hero h1 em{font:400 .7em "Parisienne",cursive;margin-left:8vw;margin-top:16px}.last{font-size:10px;letter-spacing:8px}.hero-note{font:28px/1.2 "Italiana",serif;margin-top:38px}.hero-xv{position:absolute;z-index:3;right:4vw;bottom:-3vw;font:180px "Italiana",serif;color:#ffffff12}.scrollcue{position:absolute;z-index:5;bottom:4vh;left:7.5vw;text-decoration:none;font-size:9px;letter-spacing:2px;display:flex;align-items:center;gap:15px}.scrollcue i{width:55px;height:1px;background:#fff;position:relative}.scrollcue i:after{content:"";position:absolute;right:0;top:-3px;width:7px;height:7px;border-right:1px solid;border-bottom:1px solid;transform:rotate(-45deg)}.botanical{fill:none;stroke:#d9dfd1;stroke-width:1.2;stroke-linecap:round;stroke-linejoin:round}.botanical .leaf{fill:#d9dfd112;stroke:#d9dfd1}.botanical-a{position:absolute;z-index:3;width:300px;right:-40px;top:4vh;opacity:.55;animation:sway 7s ease-in-out infinite alternate;transform-origin:bottom}.opening{position:relative;min-height:1200px;padding:130px 9vw;text-align:center;overflow:hidden}.ornament{display:flex;justify-content:center;align-items:center;gap:18px;color:var(--gold)}.ornament span{width:65px;height:1px;background:#c9b786}.script{font:42px "Parisienne",cursive;color:#617566;margin:28px 0 5px}.opening h2,.section-heading h2,.dress h2,.gifts h2,.rsvp h2{font:400 clamp(55px,7vw,105px)/.9 "Italiana",serif;letter-spacing:-3px;margin:10px 0}.opening h2 em,.section-heading h2 em,.dress h2 em,.gifts h2 em,.rsvp h2 em{font:400 .78em "Parisienne",cursive}.bodycopy{max-width:590px;margin:35px auto 80px;line-height:1.9;font-size:13px}.portrait-wrap{width:min(540px,75vw);margin:auto;position:relative}.arch{overflow:hidden;border-radius:280px 280px 4px 4px;padding:10px;border:1px solid #a7b19f}.arch img{width:100%;display:block;border-radius:270px 270px 2px 2px;filter:saturate(.78)}.portrait-botanical{position:absolute;width:230px;left:-130px;bottom:-70px;stroke:#738677}.vertical-label{position:absolute;right:-45px;bottom:50px;transform:rotate(90deg);font-size:8px;letter-spacing:3px}.count-section{position:relative;overflow:hidden;background:var(--forest);color:#fff;text-align:center;padding:130px 7vw}.count-section h2{font:400 clamp(50px,6vw,90px) "Italiana",serif;margin:20px 0 55px}.count-section h2 em{font:400 .9em "Parisienne",cursive}.rings{position:absolute;width:620px;height:620px;left:50%;top:50%;transform:translate(-50%,-50%);fill:none;stroke:#ffffff0c;animation:rotate 50s linear infinite}.counter{position:relative;display:grid;grid-template-columns:repeat(4,1fr);max-width:920px;margin:auto;border-top:1px solid #ffffff35;border-bottom:1px solid #ffffff35}.counter div{padding:28px 10px;border-right:1px solid #ffffff25}.counter div:last-child{border:0}.counter b{display:block;font:clamp(52px,7vw,96px) "Italiana",serif;font-weight:400}.counter small{font-size:8px;letter-spacing:2px}.calendar{position:relative;margin-top:35px;display:flex;justify-content:center;gap:30px}.calendar a,.actions a{font-size:9px;letter-spacing:1.5px;text-decoration:none;border-bottom:1px solid;padding-bottom:5px}.timeline{position:relative;padding:140px 14vw 160px}.section-heading{max-width:850px}.timeline-line{position:absolute;left:calc(14vw + 108px);top:470px;bottom:170px;width:1px;background:#bdc4ba}.event{display:grid;grid-template-columns:220px 1fr;gap:50px;margin-top:90px;position:relative}.event:before{content:"";position:absolute;left:103px;top:32px;width:11px;height:11px;border-radius:50%;background:var(--paper);border:1px solid #64766c;z-index:2}.time b{font:86px/.8 "Italiana",serif;font-weight:400}.time span{font:26px "Parisienne",cursive}.event-card{padding-top:5px}.event-card h3{font:46px "Italiana",serif;font-weight:400;margin:8px 0 18px}.event-card>p:not(.overline){max-width:650px;font-size:12px;line-height:1.8}.actions{display:flex;gap:22px;flex-wrap:wrap;margin-top:25px}.dress{position:relative;overflow:hidden;min-height:700px;background:var(--sage);padding:140px 9vw;display:flex;align-items:center}.dress>div{position:relative;z-index:2}.dress .overline{color:#294238}.dress h2{max-width:1050px}.color-rule{display:flex;align-items:center;gap:22px;margin-top:45px}.color-rule i{width:70px;height:70px;border-radius:50%;background:#718a72;box-shadow:0 0 0 14px #ffffff20}.color-rule p{font:25px "Parisienne",cursive}.dress-leaf{position:absolute;right:-50px;bottom:-80px;width:420px;stroke:#f3f1e6;opacity:.5;animation:sway 8s ease-in-out infinite alternate}.gallery{padding:140px 7vw;background:#e9ebe3}.gallery-grid{margin-top:80px;display:grid;grid-template-columns:repeat(12,1fr);gap:14px;align-items:start}.g{border:0;padding:0;background:none;cursor:zoom-in;overflow:hidden}.g img{display:block;width:100%;height:100%;object-fit:cover;transition:transform .7s}.g:hover img{transform:scale(1.025)}.g1{grid-column:1/6;grid-row:1/3}.g2{grid-column:6/9}.g3{grid-column:9/13;grid-row:1/3}.g4{grid-column:6/9}.g5{grid-column:2/7}.g6{grid-column:7/12}.gifts{position:relative;overflow:hidden;background:var(--forest2);color:#fff;padding:150px 9vw;min-height:720px;display:flex;align-items:center}.gifts>div:last-child{position:relative;z-index:2;max-width:760px}.gifts .script{color:#c9d2c2}.gifts p:not(.script){max-width:520px;line-height:1.8;font-size:13px}.giant-xv{position:absolute;right:-2vw;bottom:-9vw;font:430px "Italiana",serif;color:#ffffff08}.btn{display:inline-flex;justify-content:space-between;align-items:center;gap:35px;min-width:270px;padding:18px 22px;text-decoration:none;font-size:9px;letter-spacing:1.5px;font-weight:500;margin-top:25px}.ghost{border:1px solid #ffffff80}.rsvp{text-align:center;padding:140px 7vw;min-height:700px;display:flex;flex-direction:column;align-items:center;justify-content:center}.rsvp>p:not(.script){max-width:550px;line-height:1.8;font-size:13px}.rsvp-ornament{color:var(--gold);font-size:24px}.primary{background:var(--forest);color:#fff}.share{margin-top:25px;border:0;border-bottom:1px solid #708078;background:none;padding:8px 0;font:500 9px "DM Sans";letter-spacing:1.5px;cursor:pointer}.rsvp small{margin-top:15px;letter-spacing:2px;font-size:8px}.finale{height:90svh;position:relative;color:#fff;overflow:hidden}.finale>img{width:100%;height:100%;object-fit:cover;object-position:center 30%;filter:saturate(.75)}.finale>div:nth-child(2){position:absolute;inset:0;background:linear-gradient(0deg,#0f2d25e8 0%,transparent 70%)}.finale-copy{position:absolute;left:8vw;bottom:9vh}.finale-copy p{font-size:9px;letter-spacing:3px}.finale-copy h2{font:clamp(80px,11vw,160px)/.7 "Italiana",serif;font-weight:400;margin:20px 0 40px}.finale-copy h2 em{display:block;font: .7em "Parisienne",cursive;margin-left:7vw}.finale-copy span{font:23px "Parisienne",cursive}footer{padding:70px 8vw;background:#0f2d25;color:#fff;text-align:center;display:flex;flex-direction:column;gap:15px;align-items:center}footer b{font:42px "Italiana",serif;font-weight:400}footer span,footer a{font-size:8px;letter-spacing:2px}footer a{text-decoration:none}.lightbox{display:none;position:fixed;inset:0;z-index:500;background:#0b201bf2;place-items:center;padding:5vw}.lightbox.open{display:grid}.lightbox img{max-width:90vw;max-height:88vh}.lightbox button{position:absolute;right:3vw;top:2vw;background:none;border:0;color:#fff;font-size:42px;cursor:pointer}.dock{position:fixed;z-index:200;right:18px;bottom:18px}.dock button{background:#15392fe8;color:#fff;border:1px solid #ffffff50;border-radius:99px;padding:12px 16px;font:500 9px "DM Sans";letter-spacing:1px;backdrop-filter:blur(12px)}.dock a{display:none}.petal{position:fixed;z-index:2;top:-40px;width:8px;height:13px;border-radius:100% 0 100% 0;background:#dce5d4aa;pointer-events:none;animation:fall linear forwards}
.reveal{opacity:0;transform:translateY(26px);transition:opacity .9s ease,transform .9s ease}.reveal.visible{opacity:1;transform:none}
@keyframes heroZoom{from{transform:scale(1.05)}to{transform:scale(1)}}@keyframes sway{from{transform:rotate(-2deg)}to{transform:rotate(3deg)}}@keyframes rotate{to{transform:translate(-50%,-50%) rotate(360deg)}}@keyframes fall{to{transform:translate3d(var(--drift),110vh,0) rotate(480deg);opacity:0}}
@media(max-width:800px){.nav{height:68px;left:6vw;right:6vw}.menu{display:block;width:32px;border:0;background:none}.menu i{display:block;height:1px;background:#fff;margin:7px}.navlinks{display:none;position:absolute;top:0;left:-6vw;right:-6vw;padding:95px 8vw 40px;background:#15392f;flex-direction:column;align-items:flex-start}.navlinks.open{display:flex}.hero-media{inset:0}.hero-media img{object-position:center 27%}.hero-wash{background:linear-gradient(0deg,#15392ff5 0%,#15392f91 43%,transparent 73%)}.hero-copy{left:7vw;right:7vw;top:auto;bottom:13vh;transform:none}.hero h1{font-size:21vw;letter-spacing:-3px;margin:15px 0}.hero h1 em{margin-left:15vw}.last{letter-spacing:5px}.hero-note{font-size:19px;margin-top:20px}.hero-xv{font-size:38vw;right:-5vw;bottom:12vh}.botanical-a{width:190px;right:-55px;top:5vh}.scrollcue{left:7vw;bottom:4vh}.opening{padding:95px 7vw;min-height:auto}.script{font-size:34px}.opening h2,.section-heading h2,.dress h2,.gifts h2,.rsvp h2{font-size:14vw;letter-spacing:-1px}.bodycopy{margin-bottom:55px}.portrait-wrap{width:85vw}.portrait-botanical{width:150px;left:-70px}.vertical-label{display:none}.count-section{padding:100px 4vw}.count-section h2{font-size:13vw}.rings{width:100vw}.counter b{font-size:11vw}.counter small{font-size:6px}.calendar{flex-direction:column;gap:15px}.timeline{padding:100px 7vw}.timeline-line{display:none}.event{grid-template-columns:1fr;gap:12px;margin-top:65px}.event:before{display:none}.time b{font-size:68px}.event-card h3{font-size:38px}.dress{min-height:650px;padding:100px 7vw}.dress-leaf{width:280px;right:-90px}.color-rule{align-items:flex-start}.color-rule i{width:52px;height:52px;flex:0 0 auto}.color-rule p{font-size:21px;margin-top:8px}.gallery{padding:100px 4vw}.gallery .section-heading{padding:0 3vw}.gallery-grid{grid-template-columns:1fr 1fr;gap:7px;margin-top:50px}.g{grid-column:auto!important;grid-row:auto!important}.g1,.g4{grid-column:span 2!important}.gifts{min-height:650px;padding:100px 7vw}.giant-xv{font-size:85vw;right:-20vw}.rsvp{padding:100px 7vw}.btn{width:100%}.finale{height:80svh}.finale>img{object-position:center 24%}.finale-copy{left:7vw;right:7vw}.finale-copy h2{font-size:21vw}.dock{left:12px;right:12px;bottom:12px;display:flex;gap:8px}.dock button{flex:0 0 44px}.dock button span{display:none}.dock a{display:flex;flex:1;align-items:center;justify-content:center;border-radius:99px;background:#f5f1e8;color:#15392f;text-decoration:none;font-size:9px;font-weight:500;letter-spacing:1.4px;box-shadow:0 8px 30px #0002}.lightbox button{right:7vw;top:5vw}}
@media(prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}.petals{display:none}}

/* ===== V3.2 · GALERÍA REAL ===== */
.gallery-intro{
  max-width:620px;
  margin:34px 0 0;
  font:400 22px/1.45 "Italiana",serif;
  color:#52665d;
}
.gallery-real{
  grid-template-columns:repeat(12,1fr);
  grid-auto-rows:145px;
  gap:12px;
}
.gallery-real .g{position:relative;width:100%;height:100%;min-height:0}
.gallery-real .g img{width:100%;height:100%;object-fit:cover}
.gallery-real .g1{grid-column:1/7;grid-row:1/5}
.gallery-real .g2{grid-column:7/10;grid-row:1/4}
.gallery-real .g3{grid-column:10/13;grid-row:1/5}
.gallery-real .g4{grid-column:7/10;grid-row:4/8}
.gallery-real .g5{grid-column:1/4;grid-row:5/9}
.gallery-real .g6{grid-column:4/7;grid-row:5/8}
.gallery-real .g7{grid-column:10/13;grid-row:5/8}
.gallery-real .g8{grid-column:4/7;grid-row:8/12}
.gallery-real .g9{grid-column:7/10;grid-row:8/12}
.gallery-real .g10{grid-column:10/13;grid-row:8/12}
.gallery-real .g1 img{object-position:center center}
.gallery-real .g2 img{object-position:center 35%}
.gallery-real .g3 img{object-position:center 30%}
.gallery-real .g4 img{object-position:center 28%}
.gallery-real .g5 img{object-position:center 25%}
.gallery-real .g6 img{object-position:center 38%}
.gallery-real .g7 img{object-position:center center}
.gallery-real .g8 img{object-position:center 30%}
.gallery-real .g9 img{object-position:center 30%}
.gallery-real .g10 img{object-position:center 30%}
.gallery-real .g:after{
  content:"";position:absolute;inset:0;
  box-shadow:inset 0 0 0 1px rgba(255,255,255,.12);
  pointer-events:none;
}
@media(max-width:800px){
 .gallery-intro{font-size:19px;line-height:1.5;padding:0 3vw}
 .gallery-real{display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:190px;gap:7px}
 .gallery-real .g{grid-column:auto!important;grid-row:auto!important}
 .gallery-real .g1,.gallery-real .g4,.gallery-real .g9{grid-column:span 2!important;grid-row:span 2!important}
 .gallery-real .g2,.gallery-real .g3,.gallery-real .g5,.gallery-real .g6,.gallery-real .g7,.gallery-real .g8,.gallery-real .g10{grid-row:span 2!important}
}

/* ===== V3.3 · MUSICAL ENTRY EXPERIENCE ===== */
body.gate-open{overflow:hidden}
.entry-gate{position:fixed;inset:0;z-index:1000;background:#15392f;color:#fff;overflow:hidden;transition:opacity 1.1s ease,visibility 1.1s ease}
.entry-gate.leaving{opacity:0;visibility:hidden}
.entry-bg,.entry-shade{position:absolute;inset:0}
.entry-bg img{width:100%;height:100%;object-fit:cover;object-position:center 29%;filter:saturate(.68) brightness(.8);transform:scale(1.035);animation:entryZoom 12s ease-out forwards}
.entry-shade{background:linear-gradient(90deg,#102e27ed 0%,#15392fbf 42%,#15392f38 76%),linear-gradient(0deg,#102e27d9 0%,transparent 55%)}
.entry-content{position:absolute;z-index:3;left:8vw;top:50%;transform:translateY(-48%);display:flex;flex-direction:column;align-items:flex-start}
.entry-monogram{font:42px "Italiana",serif;margin-bottom:48px}
.entry-content>p{font-size:9px;letter-spacing:3px;margin:0 0 20px}
.entry-content h2{font:400 clamp(78px,10vw,150px)/.67 "Italiana",serif;letter-spacing:-5px;margin:0}
.entry-content h2 em{display:block;font:400 .68em "Parisienne",cursive;margin-left:6vw;margin-top:18px}
.entry-copy{font:23px "Parisienne",cursive;margin:42px 0 28px}
.entry-content button{border:1px solid #ffffff8c;background:#f5f1e8;color:#15392f;padding:17px 21px;min-width:290px;display:flex;justify-content:space-between;gap:30px;font:500 9px "DM Sans";letter-spacing:1.7px;cursor:pointer;transition:background .25s,transform .25s}
.entry-content button:hover{background:#fff;transform:translateY(-2px)}
.entry-content small{font-size:8px;letter-spacing:1.4px;margin-top:14px;opacity:.7}
.entry-botanical{position:absolute;z-index:2;right:-25px;top:5vh;width:330px;fill:none;stroke:#e2e8db;stroke-width:1.1;opacity:.58;animation:sway 8s ease-in-out infinite alternate;transform-origin:bottom}
.entry-botanical .leaf{fill:#e2e8db12}
.music-bars{display:inline-flex;height:12px;gap:2px;align-items:end;margin-right:7px}
.music-bars b{display:block;width:2px;background:currentColor;animation:musicBar .65s ease-in-out infinite alternate}
.music-bars b:nth-child(1){height:5px}.music-bars b:nth-child(2){height:11px;animation-delay:-.25s}.music-bars b:nth-child(3){height:7px;animation-delay:-.4s}
#music:not(.playing) .music-bars b{animation-play-state:paused;height:3px}
@keyframes musicBar{to{height:3px}}@keyframes entryZoom{to{transform:scale(1)}}
@media(max-width:800px){
 .entry-shade{background:linear-gradient(0deg,#102e27f5 0%,#15392f9c 49%,transparent 78%)}
 .entry-bg img{object-position:center 25%}
 .entry-content{left:7vw;right:7vw;top:auto;bottom:8vh;transform:none}
 .entry-monogram{font-size:32px;margin-bottom:25px}
 .entry-content h2{font-size:20vw;letter-spacing:-3px}
 .entry-content h2 em{margin-left:13vw}
 .entry-copy{font-size:19px;margin:26px 0 20px}
 .entry-content button{width:100%;min-width:0}
 .entry-botanical{width:190px;right:-55px}
}

/* V3.4 — Recuerdos exclusivamente B&N */
.gallery-real{grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-auto-rows:minmax(520px,68vh)!important;max-width:1050px;margin-inline:auto}
.gallery-real .g4,.gallery-real .g8{grid-column:auto!important;grid-row:auto!important}
.gallery-real .g4 img,.gallery-real .g8 img{width:100%;height:100%;object-fit:cover}
@media(max-width:800px){.gallery-real{grid-template-columns:1fr!important;grid-auto-rows:72vh!important}.gallery-real .g4,.gallery-real .g8{grid-column:auto!important;grid-row:auto!important}}

/* V3.5 nueva galeria */
.gallery-real{display:grid!important;grid-template-columns:repeat(12,minmax(0,1fr))!important;grid-auto-rows:135px!important;gap:12px!important;max-width:1220px!important;margin-inline:auto!important}.gallery-real .gallery-item{border:0;padding:0;background:none;overflow:hidden;cursor:zoom-in;min-width:0}.gallery-real .gallery-item img{width:100%;height:100%;display:block;object-fit:cover;filter:grayscale(100%);transition:transform .65s cubic-bezier(.2,.7,.2,1)}.gallery-real .gallery-item:hover img{transform:scale(1.025)}.gallery-real .ng1{grid-column:1/7!important;grid-row:1/5!important}.gallery-real .ng2{grid-column:7/10!important;grid-row:1/4!important}.gallery-real .ng3{grid-column:10/13!important;grid-row:1/5!important}.gallery-real .ng4{grid-column:7/10!important;grid-row:4/8!important}.gallery-real .ng5{grid-column:1/4!important;grid-row:5/9!important}.gallery-real .ng6{grid-column:4/7!important;grid-row:5/8!important}.gallery-real .ng7{grid-column:10/13!important;grid-row:5/8!important}.gallery-real .ng8{grid-column:4/10!important;grid-row:8/12!important}@media(max-width:800px){.gallery-real{grid-template-columns:repeat(2,minmax(0,1fr))!important;grid-auto-rows:190px!important;gap:7px!important}.gallery-real .gallery-item{grid-column:auto!important;grid-row:span 2!important}.gallery-real .ng1,.gallery-real .ng4,.gallery-real .ng8{grid-column:1/-1!important;grid-row:span 2!important}}

/* =========================================================
   V3.6 · RECUERDOS — TRUE CSS MASONRY / NO OVERLAPS
   Column layout preserves each photograph's natural ratio.
   ========================================================= */
.gallery-real{
  display:block !important;
  column-count:3 !important;
  column-gap:12px !important;
  max-width:1220px !important;
  margin-inline:auto !important;
  grid-template-columns:none !important;
  grid-auto-rows:unset !important;
}
.gallery-real .gallery-item,
.gallery-real .ng1,.gallery-real .ng2,.gallery-real .ng3,.gallery-real .ng4,
.gallery-real .ng5,.gallery-real .ng6,.gallery-real .ng7,.gallery-real .ng8{
  display:inline-block !important;
  width:100% !important;
  height:auto !important;
  margin:0 0 12px !important;
  padding:0 !important;
  break-inside:avoid !important;
  -webkit-column-break-inside:avoid !important;
  page-break-inside:avoid !important;
  grid-column:auto !important;
  grid-row:auto !important;
  position:relative !important;
  vertical-align:top !important;
  overflow:hidden !important;
  border:0 !important;
  background:none !important;
}
.gallery-real .gallery-item img{
  display:block !important;
  width:100% !important;
  height:auto !important;
  aspect-ratio:auto !important;
  object-fit:contain !important;
  filter:grayscale(100%);
}
@media (max-width:900px){
  .gallery-real{column-count:2 !important;column-gap:8px !important}
  .gallery-real .gallery-item{margin-bottom:8px !important}
}
@media (max-width:520px){
  .gallery-real{column-count:2 !important;column-gap:6px !important}
  .gallery-real .gallery-item{margin-bottom:6px !important}
}
