:root{
  --forest:#142c26;--forest-2:#23473a;--deep:#0d1c19;--gold:#d2aa60;--gold-pale:#f0dbad;
  --ivory:#fffaf1;--cream:#f8f0e4;--blush:#f4e3db;--fuchsia:#bf347b;--rose:#dd77a7;
  --ink:#29332e;--muted:#706d66;--font-display:'Playfair Display',Georgia,serif;
  --font-script:'Great Vibes','Brush Script MT',cursive;--font-body:'DM Sans',system-ui,sans-serif;
  --shadow:0 24px 75px rgba(18,34,25,.15);--radius:22px;
}
*{box-sizing:border-box}
html{scroll-behavior:smooth;scroll-padding-top:74px}
body{margin:0;background:var(--ivory);color:var(--ink);font-family:var(--font-body);font-size:16px;line-height:1.65;overflow-x:hidden}
img{max-width:100%;display:block}
button,input,textarea,select{font:inherit}
button{cursor:pointer}
a{color:inherit;text-decoration:none}
button:focus-visible,a:focus-visible,input:focus-visible,textarea:focus-visible,select:focus-visible{outline:3px solid var(--fuchsia);outline-offset:3px}
::selection{background:#f5afd0;color:var(--deep)}
.skip-link{position:absolute;left:10px;top:-100px;z-index:999;color:white;background:#182e27;padding:.6rem 1rem}.skip-link:focus{top:10px}
.site-header{position:fixed;top:0;left:0;right:0;height:77px;display:flex;align-items:center;justify-content:space-between;padding:0 clamp(20px,5vw,84px);z-index:90;color:#fff;border-bottom:1px solid rgba(255,255,255,.15);transition:background .3s,box-shadow .3s}
.site-header.scrolled{background:rgba(15,35,29,.97);box-shadow:0 6px 32px rgba(0,0,0,.18);backdrop-filter:blur(12px)}
.brand{display:flex;flex-direction:column;align-items:center;line-height:1}.brand-fl{font:italic 34px var(--font-display);letter-spacing:-3px;color:var(--gold-pale)}.brand-sub{font-size:7px;letter-spacing:.28em;margin-top:2px}
.desktop-nav{display:flex;gap:clamp(18px,3vw,38px);align-items:center}.desktop-nav a{font-size:12px;letter-spacing:.08em;text-transform:uppercase;opacity:.9;transition:color .2s}.desktop-nav a:hover{color:var(--gold-pale)}
.top-rsvp{padding:9px 20px;border:1px solid var(--gold-pale);border-radius:50px;color:var(--gold-pale);font-size:12px;text-transform:uppercase;letter-spacing:.08em;white-space:nowrap}.top-rsvp:hover{background:var(--gold-pale);color:var(--deep)}
.page-section{position:relative;overflow:hidden}.section-shell{width:min(1140px,calc(100% - 48px));margin:0 auto}
.eyebrow{font-size:11px;letter-spacing:.3em;font-weight:700;color:#ad6b7c;text-transform:uppercase;margin:0 0 18px}.eyebrow-light{color:var(--gold-pale)}
h2{font:400 clamp(37px,5vw,65px)/1.13 var(--font-display);letter-spacing:-.035em;margin:0 0 26px}h2 em{font-family:var(--font-script);font-size:1.13em;font-style:normal;color:var(--fuchsia);font-weight:400}
p{margin:0 0 1em}.btn{display:inline-flex;justify-content:center;align-items:center;gap:15px;min-height:51px;padding:12px 25px;border-radius:50px;border:1px solid transparent;font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;transition:transform .2s,background .2s,box-shadow .2s;line-height:1.25;text-align:center;cursor:pointer}.btn:hover{transform:translateY(-2px);box-shadow:0 12px 28px rgba(0,0,0,.12)}
.btn-gold{background:var(--gold-pale);color:#172820}.btn-dark{background:var(--forest);color:#fff}.btn-dark:hover{background:#2b5142}.btn-outline-dark{border-color:#a38d65;color:var(--forest);background:transparent}.btn-compact{font-size:11px;min-height:43px;padding:9px 16px}.btn-full{width:100%}
.sticker{pointer-events:none}
/* HERO */
.hero{position:relative;isolation:isolate;min-height:100vh;background:var(--deep);color:#fff;overflow:hidden;display:flex;align-items:center;padding:115px 0 70px}
.hero:before{content:"";position:absolute;inset:0;z-index:-2;background:linear-gradient(90deg,rgba(8,26,22,.89) 0%,rgba(8,26,22,.78) 49%,rgba(8,26,22,.45) 100%),url('../photos/portada-luau.webp') center/cover no-repeat}
.hero:after{content:"";position:absolute;inset:0;z-index:-1;opacity:.3;background-image:radial-gradient(ellipse at 30% 45%,transparent 20%,rgba(0,0,0,.5) 92%)}
.hero-inner{width:min(1240px,calc(100% - 64px));margin:0 auto;display:grid;grid-template-columns:1fr .82fr;align-items:center;gap:clamp(24px,6vw,90px)}
.hero-copy{text-align:center;position:relative;z-index:2}.hero-ornament{font-size:11px;letter-spacing:.33em;color:var(--gold-pale);margin-bottom:40px}.hero-before{font:italic 17px var(--font-display);color:#f0dfd4;margin-bottom:29px}.hero-small{font:35px var(--font-script);margin:0 0 -26px;color:#f3dca3;position:relative;z-index:2}.hero-small-after{margin:-42px 0 0 125px;font-size:38px}
.hero-xv{font:500 clamp(134px,19vw,240px)/.95 var(--font-display);letter-spacing:-.09em;margin:0;color:#f5dfb1;text-shadow:0 10px 50px rgba(220,161,80,.18)}
.hero h1{font:400 clamp(47px,6vw,90px)/1 var(--font-script);margin:24px auto 10px;color:#fff8eb;max-width:650px}.hero h1 em{font:inherit;color:var(--gold-pale)}.hero-surname{letter-spacing:.36em;font-size:11px;margin:0;color:#ecdcc6}
.hero-rule{display:flex;align-items:center;justify-content:center;gap:13px;margin:26px 0 16px;color:var(--gold)}.hero-rule span{width:60px;height:1px;background:rgba(241,204,136,.5)}.hero-date{font-size:12px;letter-spacing:.16em;margin:0;color:#f2e3cc}.hero-date b{font:400 31px var(--font-display);margin:0 8px;color:var(--gold-pale)}.hero-subdate{font:italic 14px var(--font-display);margin-top:3px;color:#f0dfd1}.hero-cta{margin-top:21px}.hero-subnote{font-size:10px;letter-spacing:.15em;margin-top:20px;opacity:.7;text-transform:uppercase}
.hero-portrait{height:min(730px,78vh);min-height:520px;max-width:480px;width:100%;margin:auto;position:relative;border-radius:250px 250px 12px 12px;padding:11px;box-shadow:0 25px 100px rgba(0,0,0,.42)}
.hero-portrait img{width:100%;height:100%;object-fit:cover;object-position:50% 37%;border-radius:240px 240px 6px 6px;filter:saturate(.91)}
.portrait-gold-border{position:absolute;inset:0;border:1px solid rgba(238,202,141,.95);border-radius:255px 255px 15px 15px;pointer-events:none;z-index:2}
.portrait-stamp{position:absolute;bottom:35px;right:-18px;height:94px;width:94px;border-radius:50%;display:flex;flex-direction:column;align-items:center;justify-content:center;background:#f5dfbd;color:var(--forest);box-shadow:0 0 0 5px rgba(245,223,189,.3);transform:rotate(-13deg);font:italic 13px var(--font-display)}.portrait-stamp strong{font:35px/1 var(--font-script);font-weight:400}
.hero-bottom-leaves{position:absolute;bottom:-42px;left:-40px;width:235px;height:235px;opacity:.8;background:url('../stickers/01_esquina_floral_tropical.png') center/contain no-repeat;pointer-events:none}
/* Story */
.story-section{padding:125px 0 118px;background:linear-gradient(140deg,#fffcf7,#fcf1e8)}.story-grid{display:grid;grid-template-columns:.91fr 1.09fr;gap:clamp(48px,8vw,120px);align-items:center}.story-floral{position:absolute;right:-50px;bottom:-90px;width:330px;transform:rotate(180deg);opacity:.78}
.story-image-card{position:relative;width:min(100%,405px);margin:auto}.story-image-border{padding:10px;border:1px solid #d9b876;border-radius:220px 220px 8px 8px;background:#fff4e8;box-shadow:var(--shadow)}.story-image-border img{width:100%;height:560px;object-fit:cover;object-position:center 37%;border-radius:210px 210px 3px 3px}.story-image-caption{position:absolute;bottom:28px;left:50%;transform:translateX(-50%);white-space:nowrap;font:30px var(--font-script);color:#fff;background:rgba(18,31,25,.55);padding:4px 24px;border-radius:30px}
.story-copy{max-width:530px}.story-copy h2{color:var(--forest);font-size:clamp(40px,4.4vw,63px)}.story-copy>p:not(.eyebrow){color:#5e645e;font-size:16px;max-width:505px}.fine-flourish{color:var(--gold);margin:-4px 0 28px;font-size:23px}.story-signature{margin-top:32px;font:italic 16px var(--font-display);color:#686a62}.story-signature span{display:block;font:43px/1.3 var(--font-script);color:var(--fuchsia);margin-top:9px}.story-divider{width:280px;margin:18px 0 0 -10px}
/* Family */
.family-section{background:#162d26;color:#f8f1e5;text-align:center;padding:125px 24px 130px;min-height:630px;isolation:isolate}.family-bg{position:absolute;inset:0;z-index:-1;background:radial-gradient(circle at 8% 100%,rgba(189,52,123,.25),transparent 34%),radial-gradient(circle at 100% 12%,rgba(211,167,87,.1),transparent 40%)}
.family-garland{position:absolute;top:-100px;left:50%;transform:translateX(-50%);width:min(850px,100%);height:245px;object-fit:contain;object-position:top;pointer-events:none}.family-content{max-width:800px}.family-content h2{color:var(--gold-pale);font-style:italic}.family-letter{font:italic 21px/1.95 var(--font-display);color:#f4e9d9;max-width:760px;margin:35px auto 50px}.family-letter strong{font-weight:500;color:var(--gold-pale)}.family-names{display:flex;align-items:start;justify-content:center;gap:48px;max-width:830px;margin:auto}.family-group{flex:1}.family-label{font-size:10px;letter-spacing:.3em;color:var(--gold-pale);font-weight:700}.family-group p{font:20px/1.7 var(--font-display);margin:15px 0 0}.family-divider{color:var(--gold);font-size:23px;margin-top:47px}
/* date */
.date-section{background:#fffbf6 url('../photos/fondo-claro.webp') center/cover;padding:115px 22px;text-align:center;isolation:isolate}.date-section:before{content:"";position:absolute;inset:0;background:rgba(255,253,247,.82);z-index:-1}.date-inner{position:relative;max-width:720px}.date-flowers{position:absolute;width:270px;right:-120px;top:-85px;opacity:.85;pointer-events:none}.date-inner h2{margin-bottom:12px;color:var(--forest)}.date-month{font-size:15px;letter-spacing:.55em;font-weight:600;color:#75664e;margin:35px 0 5px}.date-number-row{display:flex;align-items:center;justify-content:center;gap:clamp(18px,4vw,45px);margin:12px auto;color:#776959}.date-number-row span{font:12px var(--font-body);letter-spacing:.3em;border-top:1px solid #cdbd9d;border-bottom:1px solid #cdbd9d;padding:9px 0;min-width:110px}.date-number-row strong{font:400 clamp(95px,12vw,142px)/1 var(--font-display);color:var(--forest)}.date-tagline{font:italic 23px var(--font-display);margin:15px 0 45px;color:#795f62}.countdown-title{font:35px var(--font-script);color:var(--fuchsia);margin-bottom:10px}.countdown{display:flex;justify-content:center;gap:clamp(7px,2vw,22px);margin:0 auto 42px;max-width:600px}.countdown>div{display:flex;flex-direction:column;align-items:center;min-width:67px}.countdown strong{font:500 clamp(30px,5.5vw,60px)/1.15 var(--font-display);font-variant-numeric:tabular-nums;color:var(--forest)}.countdown span{font:700 9px var(--font-body);color:#8b7a69;letter-spacing:.1em;margin-top:9px}.countdown i{color:#b99a65;font:38px var(--font-display)}.countdown-message{font:italic 23px var(--font-display);color:var(--fuchsia)}
/* venue */
.venue-section{display:grid;grid-template-columns:1fr 1fr;min-height:710px;background:#f7f0e5}.venue-photo{min-height:650px;position:relative;overflow:hidden}.venue-photo img{width:100%;height:100%;position:absolute;inset:0;object-fit:cover;object-position:center 56%}.venue-copy{align-self:center;text-align:center;padding:70px clamp(30px,5vw,100px)}.venue-copy h2{color:var(--forest)}.venue-icon{height:88px;width:88px;object-fit:contain;margin:0 auto 24px}.venue-lead{font:italic 23px var(--font-display);color:#816e62;margin-bottom:35px}.venue-facts{display:grid;grid-template-columns:1fr 1fr;gap:15px;max-width:460px;margin:0 auto 39px}.venue-facts>div{padding:16px 8px;border-top:1px solid #d8c8ab;border-bottom:1px solid #d8c8ab}.venue-facts small{display:block;font-size:10px;font-weight:700;letter-spacing:.2em;color:#9a7c57;margin-bottom:10px}.venue-facts strong{display:block;font:20px/1.25 var(--font-display);color:var(--forest)}.venue-facts span{display:block;color:#7a7367;font-size:12px;margin-top:7px}.small-note{margin-top:17px;font-size:10px;color:#857c6c}
/* gallery */
.gallery-section{padding:120px 0 125px;background:#fffaf3}.gallery-heading{text-align:center;max-width:680px;margin:0 auto 45px}.gallery-heading h2{color:var(--forest);margin-bottom:13px}.gallery-heading>p:last-child{color:var(--muted)}.gallery-grid{display:grid;grid-template-columns:1.16fr .84fr .84fr .84fr;gap:14px;height:440px}.gallery-tile{min-width:0;border:0;padding:0;position:relative;overflow:hidden;border-radius:12px;background:#1c2b26;text-align:left;isolation:isolate}.gallery-tile img{width:100%;height:100%;object-fit:cover;transition:transform .6s cubic-bezier(.2,.7,.2,1);opacity:.93}.gallery-tile:hover img{transform:scale(1.06)}.gallery-tile:after{content:"";position:absolute;inset:45% 0 0;background:linear-gradient(transparent,rgba(6,19,13,.8));pointer-events:none}.gallery-caption{position:absolute;bottom:17px;left:17px;right:14px;z-index:1;color:white;font:italic 18px var(--font-display);display:flex;align-items:center;justify-content:space-between}.gallery-caption b{font:23px var(--font-body)}.gallery-disclaimer{text-align:center;color:#968c7f;font-size:11px;margin-top:20px}
/* details */
.details-section{padding:100px 0 140px;background:linear-gradient(180deg,#f3ece5,#fffaf3)}.details-top{text-align:center;margin-bottom:44px;padding:0 20px}.details-top h2{color:var(--forest)}.detail-cards{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;max-width:950px}.detail-card{background:rgba(255,255,255,.9);border:1px solid #e6d8c4;border-radius:var(--radius);padding:35px 40px 42px;min-height:450px;text-align:center;box-shadow:0 10px 60px rgba(30,40,26,.055);position:relative}.detail-card img{height:128px;width:170px;object-fit:contain;margin:0 auto 12px}.detail-card h3{font:32px var(--font-script);color:var(--fuchsia);font-weight:400;margin:0 0 11px}.detail-card p{font-size:14px;line-height:1.8;color:#666b63}.detail-card .detail-emphasis{font:italic 27px var(--font-display);color:var(--forest);margin:-4px 0 12px}.reserved-swatches{display:flex;justify-content:center;gap:12px;margin-top:18px}.reserved-swatches span{display:block;width:27px;height:27px;border-radius:50%;background:var(--swatch);border:1px solid #d5cbbb;box-shadow:0 3px 10px rgba(0,0,0,.08)}.yape-number{display:flex;align-items:center;justify-content:center;gap:15px;margin:20px 0 17px}.yape-number small{letter-spacing:.15em;font-weight:700;color:var(--fuchsia)}.yape-number strong{font:25px var(--font-display);letter-spacing:.1em;color:var(--forest)}.detail-cake{position:absolute;width:220px;height:220px;object-fit:contain;bottom:-120px;left:calc(50% - 110px);pointer-events:none;filter:drop-shadow(0 15px 24px rgba(0,0,0,.06))}
/* music */
.music-section{background:linear-gradient(105deg,rgba(15,44,35,.94),rgba(18,50,37,.92)),url('../photos/portada-luau.webp') center 45%/cover;color:white;padding:72px 0}.music-inner{display:flex;align-items:center;justify-content:center;gap:35px}.music-inner>img{width:116px;height:116px;object-fit:contain}.music-inner h2{font-size:35px;margin-bottom:8px;color:#fff9ef}.music-inner p{margin:0}.music-inner .eyebrow{margin-bottom:9px}.music-inner>div{flex:1;max-width:500px}.music-inner strong{color:var(--gold-pale)}.music-section-button{border:1px solid var(--gold-pale);background:transparent;color:var(--gold-pale);border-radius:30px;padding:12px 18px;letter-spacing:.06em;font-size:12px;white-space:nowrap}.music-section-button:hover{background:rgba(255,255,255,.1)}.music-section-button span{font-size:17px;margin-right:8px}
/* RSVP */
.rsvp-section{padding:140px 20px 120px;background:linear-gradient(90deg,rgba(255,249,239,.9),rgba(255,249,239,.88)),url('../photos/fondo-claro.webp') center/cover;isolation:isolate}.rsvp-hanging{position:absolute;width:min(800px,100%);height:210px;top:-76px;left:50%;transform:translateX(-50%);object-fit:contain;pointer-events:none}.rsvp-card{width:min(100%,640px);margin:0 auto;padding:65px clamp(25px,6vw,70px) 48px;background:rgba(255,255,255,.9);border-radius:260px 260px 18px 18px;border:1px solid #dfc795;box-shadow:0 25px 70px rgba(55,40,24,.12);text-align:center;position:relative}.rsvp-card:before{content:"";position:absolute;inset:10px;pointer-events:none;border:1px solid rgba(216,181,117,.5);border-radius:250px 250px 11px 11px}.rsvp-card h2{font-size:clamp(48px,6vw,69px);color:var(--forest)}.rsvp-card>p:not(.eyebrow):not(.rsvp-explanation):not(.script-farewell){font:italic 18px/1.7 var(--font-display);color:#605d56}.rsvp-card .rsvp-limit{padding:15px;background:#fcf5ed;font-size:16px!important;margin:25px auto 34px;border-radius:10px}.rsvp-form{text-align:left;display:flex;flex-direction:column;gap:9px;position:relative}.rsvp-form label{font-weight:700;font-size:12px;color:var(--forest);margin-top:9px}.rsvp-form label span{color:#a59d91;font-weight:400}.rsvp-form input,.rsvp-form textarea,.rsvp-form select{width:100%;border:1px solid #dbcfbd;border-radius:10px;background:#fffcf9;padding:13px 15px;color:#2e3631;min-height:48px;transition:border-color .2s}.rsvp-form input:focus,.rsvp-form textarea:focus,.rsvp-form select:focus{border-color:var(--fuchsia)}.rsvp-form textarea{resize:vertical}.rsvp-form .btn{margin-top:18px}.rsvp-explanation{font-size:11px;line-height:1.65;color:#8c857b;margin:18px auto 0}.rsvp-divider{width:min(310px,100%);height:70px;object-fit:contain;margin:15px auto 0}.script-farewell{font:40px var(--font-script);color:var(--fuchsia);margin:0}
/* footer */
.footer-section{background:var(--forest);color:var(--ivory);padding:90px 20px 42px;text-align:center;position:relative;overflow:hidden}.footer-leaves{position:absolute;right:-65px;bottom:-110px;width:290px;transform:rotate(180deg);opacity:.66;pointer-events:none}.footer-xv{font:100px/1 var(--font-display);color:var(--gold-pale);margin:0}.footer-name{font:58px/1.1 var(--font-script);margin:8px 0 0}.footer-day{font-size:13px;letter-spacing:.4em;color:var(--gold-pale);margin:10px 0 24px}.footer-section>p:last-of-type{font:italic 18px var(--font-display);opacity:.78}.footer-links{display:flex;justify-content:center;gap:26px;margin:33px auto 0;flex-wrap:wrap}.footer-links a,.footer-links button{background:transparent;border:0;color:var(--gold-pale);font-size:11px;text-transform:uppercase;letter-spacing:.12em;padding:10px;cursor:pointer}
/* floating music + toast */
.floating-tools{position:fixed;bottom:max(20px,env(safe-area-inset-bottom));right:20px;z-index:80;display:flex;flex-direction:column;gap:12px}.floating-button{display:flex;align-items:center;justify-content:center;border:1px solid rgba(255,255,255,.5);background:var(--forest);color:#fff;font-size:24px;border-radius:50%;width:51px;height:51px;box-shadow:0 8px 25px rgba(0,0,0,.2);transition:transform .2s}.floating-button:hover{transform:scale(1.07)}.floating-button.is-playing{background:#ae3476;animation:musicPulse 2.4s infinite}.whatsapp-float{font-size:19px;background:#3d7d58}.toast{position:fixed;z-index:200;bottom:92px;left:50%;transform:translate(-50%,15px);background:#183c31;color:white;padding:12px 20px;border-radius:12px;box-shadow:0 10px 34px rgba(0,0,0,.2);max-width:calc(100% - 48px);text-align:center;font-size:13px;opacity:0;visibility:hidden;transition:opacity .25s,transform .25s,visibility .25s}.toast.show{opacity:1;transform:translate(-50%,0);visibility:visible}
/* lightbox */
.gallery-dialog{width:min(90vw,800px);max-height:92vh;padding:20px;background:rgba(15,29,22,.97);border:1px solid #b79a64;border-radius:14px;color:white;position:fixed;overflow:visible}.gallery-dialog::backdrop,.song-dialog::backdrop{background:rgba(0,0,0,.82);backdrop-filter:blur(7px)}.gallery-dialog figure{margin:0;text-align:center}.gallery-dialog figure img{height:min(76vh,760px);max-width:100%;margin:auto;object-fit:contain;border-radius:8px}.gallery-dialog figcaption{margin-top:9px;font:italic 21px var(--font-display)}.gallery-prev,.gallery-next,.close-dialog{position:absolute;z-index:4;background:#fffaf0;color:var(--forest);border:0;border-radius:50%;width:42px;height:42px;font-size:27px;line-height:1;display:flex;align-items:center;justify-content:center}.gallery-prev{left:-22px;top:45%}.gallery-next{right:-22px;top:45%}.close-dialog{right:-18px;top:-18px}.song-dialog{position:fixed;width:min(90vw,430px);border-radius:20px;padding:45px 25px 35px;text-align:center;background:var(--ivory);border:2px solid var(--gold);color:var(--forest)}.song-dialog-icon{font-size:48px;color:var(--fuchsia)}.song-dialog h2{font-size:32px;margin:8px 0 12px}.song-dialog p{margin-bottom:16px}.song-dialog .btn{margin-top:10px}
.reveal{opacity:0;transform:translateY(26px);transition:opacity .8s ease,transform .8s ease}.reveal.visible{opacity:1;transform:translateY(0)}
@keyframes musicPulse{0%,100%{box-shadow:0 0 0 0 rgba(190,71,135,.35)}50%{box-shadow:0 0 0 10px rgba(190,71,135,0)}}
@media(max-width:1050px){.hero-inner{gap:25px}.desktop-nav{gap:14px}.gallery-grid{height:395px}.venue-copy{padding:55px 28px}.hero-portrait{min-height:480px;height:640px}}
@media(max-width:780px){
 .site-header{height:63px;padding:0 22px}.desktop-nav{display:none}.brand-fl{font-size:30px}.top-rsvp{font-size:10px;padding:8px 12px}
 html{scroll-padding-top:62px}.hero{padding:98px 0 72px;min-height:0}.hero:before{background:linear-gradient(180deg,rgba(9,30,23,.9),rgba(9,30,23,.72)),url('../photos/portada-luau.webp') center/cover}.hero-inner{display:flex;flex-direction:column;width:min(100% - 42px,550px);gap:28px}.hero-copy{order:0}.hero-ornament{margin-bottom:25px}.hero-before{margin-bottom:16px}.hero-xv{font-size:154px}.hero h1{font-size:clamp(53px,10vw,73px)}.hero-subnote{display:none}.hero-portrait{order:1;max-width:390px;min-height:0;height:570px}.portrait-stamp{right:-5px;bottom:26px}
 .story-section{padding:85px 0}.story-grid{grid-template-columns:1fr;text-align:center;gap:50px}.story-image-card{max-width:330px}.story-image-border img{height:480px}.story-copy{max-width:600px;margin:auto}.story-copy>p:not(.eyebrow){margin-left:auto;margin-right:auto}.story-divider{margin:18px auto 0}.story-floral{width:220px}
 .family-section{padding:125px 22px 86px}.family-letter{font-size:19px}.family-garland{top:-85px}.date-section{padding:82px 16px}.date-flowers{right:-150px}.venue-section{grid-template-columns:1fr}.venue-photo{height:480px;min-height:0}.venue-copy{padding:70px 25px 82px}.gallery-section{padding:80px 0}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));height:auto}.gallery-tile{height:350px}.gallery-tile-large{height:350px}.details-section{padding:85px 0 125px}.music-inner{flex-wrap:wrap;text-align:center;gap:15px}.music-inner>div{flex:1 1 300px}.music-section-button{margin:8px auto 0}
}
@media(max-width:570px){
 .hero{padding-top:86px}.hero-inner{width:calc(100% - 30px)}.hero-ornament{letter-spacing:.22em;font-size:9px}.hero-before{font-size:15px}.hero-small{font-size:31px}.hero-small-after{margin-left:105px}.hero-xv{font-size:135px}.hero h1{font-size:56px;margin-top:18px}.hero-surname{font-size:9px;letter-spacing:.21em}.hero-date{font-size:10px;letter-spacing:.06em}.hero-date b{font-size:27px}.hero-portrait{width:min(100% - 24px,350px);height:530px}.portrait-stamp{height:80px;width:80px;font-size:12px}.portrait-stamp strong{font-size:30px}.hero-bottom-leaves{width:175px}
 .section-shell{width:calc(100% - 38px)}h2{font-size:42px}.eyebrow{font-size:10px;letter-spacing:.19em}.story-image-card{max-width:300px}.story-image-border img{height:440px}.story-copy h2{font-size:43px}.story-copy>p:not(.eyebrow){font-size:15px}.family-content h2{font-size:43px}.family-letter{font-size:18px;line-height:1.75;margin:26px auto 34px}.family-names{flex-direction:column;gap:22px;align-items:center}.family-group p{font-size:18px;margin-top:7px}.family-divider{margin:-7px auto;font-size:17px}
 .date-inner h2{font-size:48px}.date-number-row{gap:10px}.date-number-row span{min-width:80px;font-size:10px;letter-spacing:.17em}.date-number-row strong{font-size:100px}.date-tagline{font-size:20px}.countdown{gap:6px}.countdown>div{min-width:53px}.countdown strong{font-size:33px}.countdown span{font-size:8px;letter-spacing:0}.countdown i{font-size:28px}.venue-photo{height:390px}.venue-copy h2{font-size:47px}.venue-facts strong{font-size:18px}.gallery-heading h2{font-size:48px}.gallery-grid{gap:10px}.gallery-tile{height:265px}.gallery-caption{font-size:14px;left:10px;bottom:11px;right:10px}.gallery-caption b{font-size:17px}
 .detail-cards{grid-template-columns:1fr;gap:18px;max-width:460px}.detail-card{min-height:0;padding:25px 20px 35px}.detail-card img{height:105px}.details-top{margin-bottom:28px}.detail-cake{width:175px;height:175px;left:calc(50% - 87px);bottom:-102px}.music-section{padding:52px 0}.music-inner{gap:10px}.music-inner>img{height:80px;width:80px}.music-inner h2{font-size:29px}
 .rsvp-section{padding:95px 15px 80px}.rsvp-hanging{top:-65px}.rsvp-card{padding:69px 25px 42px;border-radius:160px 160px 17px 17px}.rsvp-card:before{border-radius:150px 150px 10px 10px}.rsvp-card h2{font-size:51px}.rsvp-card>p:not(.eyebrow):not(.rsvp-explanation):not(.script-farewell){font-size:17px}.rsvp-limit{font-size:15px!important}.footer-section{padding-top:70px}.footer-name{font-size:48px}.footer-leaves{width:205px}.floating-button{width:46px;height:46px}.floating-tools{right:14px}
}
@media(max-width:360px){.hero-xv{font-size:119px}.hero h1{font-size:48px}.hero-portrait{height:455px}.date-number-row strong{font-size:84px}.date-number-row span{min-width:65px}.countdown strong{font-size:29px}.countdown>div{min-width:47px}.countdown i{font-size:25px}.venue-facts{gap:5px}.rsvp-card{padding-left:17px;padding-right:17px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.reveal{opacity:1;transform:none}}

/* Detalles decorativos adicionales del paquete completo */
.story-ornate-accent{position:absolute;width:150px;right:-60px;top:-55px;z-index:0;opacity:.8;transform:rotate(14deg);pointer-events:none;filter:drop-shadow(0 5px 12px rgba(65,49,15,.1))}
.story-image-border,.story-image-caption{position:relative;z-index:1}
.venue-photo>.venue-lantern{position:absolute;z-index:2;top:5px;right:2%;width:150px;height:180px;object-fit:contain;pointer-events:none;filter:drop-shadow(0 5px 13px rgba(0,0,0,.18))}
.detail-card>.gift-accent{position:absolute;right:10px;bottom:12px;width:75px;height:75px;object-fit:contain;opacity:.8;pointer-events:none}
@media(max-width:570px){.story-ornate-accent{width:100px;right:-22px;top:-38px}.venue-photo>.venue-lantern{width:110px;height:125px}.detail-card>.gift-accent{width:55px;height:55px;right:4px;bottom:4px}}


/* ===== V2: ajustes de tamaño, texto visible y decoración sin recortes ===== */
/* Accesibilidad: el contenido debe ser visible sin depender de animaciones,
   observadores de desplazamiento ni ajustes de movimiento del navegador. */
.reveal, .reveal.visible { opacity:1 !important; transform:none !important; }
/* El sticker colgante tiene cortes rectos en su propia imagen PNG.
   No debe quedar entre dos secciones del diseño. */
.family-garland, .rsvp-hanging { display:none !important; }
/* Marco generado: ya incluye flores y aros dorados; evitamos duplicar marcos. */
.story-ornate-accent{display:none !important;}
.story-image-card{display:flex;flex-direction:column;align-items:stretch;width:min(100%,400px);isolation:isolate;}
.story-image-border{width:100%;padding:0;border:0;border-radius:20px;background:transparent;box-shadow:0 20px 55px rgba(31,35,25,.14);overflow:hidden;}
.story-image-border img{width:100%;height:auto !important;aspect-ratio:941 / 1671;object-fit:contain;object-position:center;border-radius:20px;}
.story-image-caption{position:static !important;display:block;left:auto;bottom:auto;transform:none !important;max-width:100%;white-space:normal;overflow-wrap:normal;margin:14px auto 0;padding:0 10px;background:transparent;color:var(--fuchsia);font:clamp(30px,6vw,38px)/1.2 var(--font-script);text-align:center;text-shadow:none;}
.story-image-border,.story-image-caption{z-index:auto;}
.story-copy,.story-image-card,.family-content,.rsvp-card{min-width:0;}
/* Los ramos simétricos del sticker separador poseen límites cortados.
   Línea creada en CSS para que nunca se observe una flor partida. */
.tropical-rule{width:min(280px,80%);max-width:100%;height:36px;margin:24px auto 0;display:flex;align-items:center;justify-content:center;gap:12px;color:#be9a5d;}
.tropical-rule:before,.tropical-rule:after{content:"";display:block;height:1px;flex:1;background:linear-gradient(90deg,transparent,#c6a263);}
.tropical-rule:after{transform:rotate(180deg);}
.tropical-rule span{font-size:17px;line-height:1;}
.tropical-rule-rsvp{margin:26px auto 8px;}
/* Toques tropicales compactos dentro de la sección, no cruzados de lado a lado. */
.family-section:before,.family-section:after{content:"";position:absolute;top:-20px;width:clamp(95px,19vw,230px);height:clamp(95px,19vw,230px);background:url('../stickers/01_esquina_floral_tropical.png') center/contain no-repeat;pointer-events:none;opacity:.72;z-index:0;}
.family-section:before{left:-14px;transform:scaleY(-1);}
.family-section:after{right:-14px;transform:rotate(180deg);}
.family-content{position:relative;z-index:1;}
.rsvp-section:before,.rsvp-section:after{content:"";position:absolute;top:0;width:clamp(90px,23vw,190px);height:clamp(90px,23vw,190px);background:url('../stickers/01_esquina_floral_tropical.png') center/contain no-repeat;pointer-events:none;opacity:.8;z-index:0;}
.rsvp-section:before{left:0;transform:scaleY(-1);}
.rsvp-section:after{right:0;transform:rotate(180deg);}
.rsvp-card{z-index:1;}
.rsvp-card h2,.story-copy h2,.gallery-heading h2,.details-top h2,.family-content h2{overflow-wrap:normal;word-break:normal;hyphens:none;}
.script-farewell{font:clamp(32px,6.5vw,48px)/1.35 var(--font-script);margin:5px auto 0;max-width:100%;text-align:center;color:var(--fuchsia);overflow-wrap:normal;}
.script-farewell span{display:block;max-width:100%;}
/* Long names, labels and numerals scale without horizontal scrolling. */
.hero h1,.hero-surname,.family-group p,.venue-facts strong,.yape-number strong{max-width:100%;overflow-wrap:break-word;}
.hero h1{line-height:1.18;}
.section-shell,.hero-copy,.story-copy,.venue-copy,.detail-card{min-width:0;}
/* A narrow mobile screen has little room for decorative layers. */
@media(max-width:780px){
 .story-image-card{max-width:340px;}
 .story-section{padding:80px 0 95px;}
 .story-grid{gap:32px;}
 .story-floral{width:120px;right:-35px;bottom:-40px;opacity:.4;}
 .family-section{padding-top:100px;}
 .rsvp-section{padding-top:100px;}
 .gallery-tile img{object-position:center 34%;}
}
@media(max-width:570px){
 .section-shell{width:calc(100% - 36px);}
 .story-image-card{max-width:min(100%,330px);}
 .story-image-border img{height:auto !important;}
 .story-image-caption{font-size:clamp(29px,8vw,35px);line-height:1.28;}
 .story-copy h2{font-size:clamp(34px,10vw,43px);line-height:1.2;}
 .family-section{padding-top:100px;}
 .family-section:before,.family-section:after{width:100px;height:100px;top:0;opacity:.58;}
 .family-content h2{font-size:clamp(35px,10vw,43px);}
 .date-number-row{gap:clamp(5px,2vw,10px);}
 .date-number-row span{min-width:0;flex:1;font-size:clamp(9px,2.8vw,11px);letter-spacing:.06em;}
 .date-number-row strong{flex:0 0 auto;font-size:clamp(70px,23vw,100px);}
 .countdown{width:100%;gap:clamp(3px,1vw,6px);}
 .countdown>div{min-width:0;flex:1;}
 .countdown strong{font-size:clamp(26px,8vw,34px);}
 .countdown i{font-size:clamp(21px,6vw,28px);}
 .rsvp-section:before,.rsvp-section:after{width:95px;height:95px;top:0;opacity:.42;}
 .rsvp-card{padding:60px clamp(17px,5vw,25px) 35px;}
 .rsvp-card h2{font-size:clamp(38px,11vw,51px);line-height:1.18;}
 .script-farewell{font-size:clamp(30px,9vw,39px);line-height:1.3;}
 .footer-name{font-size:clamp(38px,11vw,48px);}
 .yape-number{flex-wrap:wrap;gap:6px 12px;}
 .yape-number strong{font-size:clamp(20px,6vw,25px);}
 .hero h1{font-size:clamp(47px,13vw,56px);}
 .hero-portrait{width:min(100% - 28px,350px);height:auto;aspect-ratio: 0.66;min-height:0;}
 .portrait-stamp{right:4px;bottom:16px;}
}
@media(max-width:350px){
 .rsvp-card{padding-left:16px;padding-right:16px;border-radius:135px 135px 16px 16px;}
 .rsvp-card:before{border-radius:125px 125px 11px 11px;}
 .hero h1{font-size:44px;}
 .story-image-card{max-width:285px;}
}


/* ===========================================
   v3 — SOBRE PREMIUM / GALERÍA INFANCIA
   =========================================== */
html.invitation-closed,html.invitation-closed body{overflow:hidden!important;height:100%;}
.invitation-entry{position:fixed;z-index:2000;inset:0;background:radial-gradient(ellipse at 52% 53%,#234738 0%,#142d25 54%,#081815 100%);color:#fff8e9;display:grid;place-items:center;overflow:hidden;isolation:isolate;transition:opacity .8s ease,visibility .8s ease}
.invitation-entry::before{content:"";position:absolute;inset:0;opacity:.26;background:url('../photos/portada-luau.webp') center/cover no-repeat;z-index:-2}
.invitation-entry::after{content:"";position:absolute;inset:0;z-index:-1;background:radial-gradient(ellipse 65% 53% at 50% 48%,rgba(4,26,18,.35),rgba(3,17,12,.88) 100%)}
.invitation-entry.is-finished{opacity:0;visibility:hidden;pointer-events:none}
.entry-content{width:min(440px,100% - 24px);margin:0 auto;text-align:center;position:relative;z-index:3;padding:25px 5px 30px}
.entry-mark{font:600 10px var(--font-body);letter-spacing:.29em;color:#f9dda3;margin-bottom:13px}
.entry-content h2{font:400 clamp(32px,7vw,49px)/1.1 var(--font-display);color:#ffe8bc;margin:0 auto 6px;max-width:350px}
.entry-content h2 em{display:block;font:clamp(43px,9vw,62px)/1.08 var(--font-script);color:#fff4d9;letter-spacing:0}
.entry-greeting{font:italic 15px var(--font-display);color:#f5e5c4;margin-bottom:8px}
.entry-flowers{position:absolute;pointer-events:none;width:clamp(180px,28vw,360px);opacity:.92;z-index:2;filter:drop-shadow(0 15px 30px rgba(0,0,0,.3))}
.entry-flowers-left{left:-90px;bottom:-68px}
.entry-flowers-right{right:-90px;top:-55px;transform:rotate(180deg)}
.envelope-button{appearance:none;border:0;background:none;color:inherit;display:flex;flex-direction:column;align-items:center;width:100%;padding:4px 0 0;cursor:pointer;touch-action:manipulation}
.envelope-button:focus-visible{outline:3px solid #ffe1a0;outline-offset:7px;border-radius:12px}
.envelope-art{position:relative;display:block;width:min(78vw,330px);aspect-ratio:340/230;margin:48px auto 0;perspective:850px;filter:drop-shadow(0 20px 24px rgba(0,0,0,.33));transition:transform .3s}
.envelope-button:hover .envelope-art{transform:translateY(-4px)}
.env-back{position:absolute;inset:0;border-radius:6px;background:linear-gradient(127deg,#47694b,#234b36 52%,#456d43);border:2px solid #e0ba71;box-shadow:inset 0 0 24px rgba(0,0,0,.2)}
.env-letter{position:absolute;z-index:2;top:12%;bottom:7%;left:9%;right:9%;display:flex;flex-direction:column;justify-content:center;align-items:center;gap:9px;background:#fffaf0;color:#194031;border:3px double #c8a268;border-radius:4px;transform:translateY(0);transition:transform 1.3s cubic-bezier(.17,.73,.14,1),box-shadow 1s;box-shadow:0 3px 13px rgba(5,22,13,.24);padding:10px}
.env-card-xv{font:400 30px var(--font-script);color:#ac4678;line-height:1}
.env-card-name{font:400 26px var(--font-script);color:#1c4936;line-height:1}
.env-card-date{font:600 11px var(--font-body);letter-spacing:.16em;color:#826c47}
.env-front{position:absolute;z-index:3;inset:0;background:linear-gradient(140deg,transparent 0 49.6%,rgba(231,193,114,.85) 50%,transparent 50.8%) left/50% 100% no-repeat,linear-gradient(220deg,transparent 0 49.6%,rgba(231,193,114,.85) 50%,transparent 50.8%) right/50% 100% no-repeat,linear-gradient(24deg,#315941 49%,transparent 49.35%) left/51% 100% no-repeat,linear-gradient(-24deg,#315941 49%,transparent 49.35%) right/51% 100% no-repeat;pointer-events:none;border-bottom:2px solid #d7b56f;border-radius:0 0 6px 6px}
.env-flap{position:absolute;z-index:4;inset:-1px 0 auto;transform-origin:50% 0;clip-path:polygon(0 0,100% 0,50% 75%);height:98%;background:linear-gradient(155deg,#628264,#376447 62%,#1f4834);border-radius:5px;transition:transform .9s cubic-bezier(.1,.4,.22,1)}
.env-flap::before{content:"";position:absolute;inset:0;background:linear-gradient(156deg,transparent 50%,rgba(234,193,101,.8) 51%,transparent 52%);clip-path:polygon(0 0,100% 0,50% 75%);opacity:.8}
.env-seal{position:absolute;z-index:6;left:50%;top:50%;transform:translate(-50%,-50%);width:54px;height:54px;border-radius:50%;display:grid;place-items:center;background:radial-gradient(circle at 35% 29%,#ffedbe,#c49a4d 72%,#86602c);color:#564024;border:2px solid #f4d895;font-size:29px;box-shadow:0 3px 13px #0005;transition:opacity .35s,transform .8s}
.entry-instruction{font:600 12px var(--font-body);letter-spacing:.06em;color:#f6e4bd;margin-top:29px;display:flex;align-items:center;justify-content:center;gap:8px}
.entry-hand{font-size:22px;line-height:1;transform:rotate(-13deg)}
.entry-footnote{font:italic 13px var(--font-display);color:#ead6b6;opacity:.9;margin:18px 0 0}
.invitation-entry.is-opening .env-flap{transform:rotateX(180deg);z-index:1}
.invitation-entry.is-opening .env-seal{opacity:0;transform:translate(-50%,-100%) scale(.3)}
.invitation-entry.is-opening .env-letter{transform:translateY(-130px);box-shadow:0 19px 30px rgba(5,22,13,.3);transition-delay:.28s}
.invitation-entry.is-opening .envelope-art{transform:scale(1.03)}
.invitation-entry.is-opening .entry-instruction{opacity:.2}
/* Portada posterior al sobre: sin el botón anterior */
.hero-explore{display:inline-flex;align-items:center;gap:10px;border-bottom:1px solid #e2be7a;color:#fae5bb;font-size:11px;font-weight:600;letter-spacing:.12em;text-transform:uppercase;margin-top:26px;padding:6px 5px;transition:opacity .2s}
.hero-explore:hover{opacity:.75}
.hero-cta{display:none!important}
/* Album propio: no recortar recuerdos */
.memories-section{padding:100px 0 105px;background:linear-gradient(180deg,#fffaf2,#f7e9e3 100%);isolation:isolate}
.memories-heading{max-width:730px;margin:0 auto 42px;text-align:center}
.memories-heading h2{color:#183d2e;margin-bottom:15px}
.memories-heading p:last-child{color:#6b6761;font:italic 17px/1.8 var(--font-display)}
.memories-grid{display:grid;grid-template-columns:repeat(5,minmax(0,1fr));gap:14px;align-items:stretch}
.memories-grid>.memory-card.gallery-tile{width:100%;height:auto!important;min-height:0;display:flex;flex-direction:column;background:linear-gradient(135deg,#e9dfd5,#fff5ed);padding:8px 8px 0;border:1px solid #e5cfad;border-radius:13px;box-shadow:0 8px 18px rgba(36,29,13,.06);text-align:center;overflow:hidden}
.memories-grid>.memory-card.gallery-tile img{width:100%;height:290px;object-fit:contain;object-position:center;background:#eee5dc;border-radius:7px;display:block;opacity:1;transform:none}
.memories-grid>.memory-card.gallery-tile:after{display:none}
.memory-caption{display:flex;align-items:center;justify-content:space-between;gap:3px;font:italic 14px/1.3 var(--font-display);color:#2a4b3f;padding:12px 4px 14px;text-align:left;min-height:55px}
.memory-caption b{font:20px var(--font-body);color:var(--fuchsia)}
.memories-footer{text-align:center;color:#846a60;font:italic 14px var(--font-display);margin:32px 0 0}
.memories-footer span{color:var(--fuchsia);padding-left:6px}
.story-section{padding-bottom:88px}
.gallery-dialog{overflow:visible}
/* Texto siempre visible si el usuario navega rápidamente */
.reveal,.reveal.visible{opacity:1!important;transform:none!important}
/* Evitar que el título y fotos toquen los bordes */
.story-copy,.memories-heading,.family-content,.rsvp-card,.detail-card{overflow-wrap:normal;word-break:normal}
.hero h1{overflow-wrap:normal}
/* Floating music / go top */
.floating-tools{z-index:150;right:max(14px,env(safe-area-inset-right));bottom:max(18px,env(safe-area-inset-bottom));gap:10px}
.to-top-float{font-size:25px;background:#b68954}
.invitation-closed .floating-tools{visibility:hidden;pointer-events:none}
/* Secciones no recortan textos de niños/íconos */
@media(max-width:980px){.memories-grid{grid-template-columns:repeat(3,minmax(0,1fr))}}
@media(max-width:600px){
 .entry-content{padding:12px 0 18px}
 .entry-content h2{font-size:32px}
 .entry-content h2 em{font-size:47px}
 .envelope-art{width:min(76vw,320px);margin-top:32px}
 .entry-flowers{width:190px;opacity:.8}
 .entry-flowers-left{left:-103px;bottom:-43px}
 .entry-flowers-right{right:-107px;top:-40px}
 .memories-section{padding:75px 0 80px}
 .memories-heading{margin-bottom:28px}
 .memories-heading h2{font-size:40px}
 .memories-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:10px}
 .memories-grid>.memory-card.gallery-tile{padding:5px 5px 0}
 .memories-grid>.memory-card.gallery-tile img{height:230px}
 .memory-caption{font-size:13px;padding:9px 3px 11px;min-height:50px}
 .story-image-card{margin:0 auto}
 .story-image-border img{object-fit:contain!important}
 .gallery-dialog{padding:15px 12px;max-width:95vw}
 .gallery-prev{left:0;top:48%}.gallery-next{right:0;top:48%}
 .gallery-dialog figure img{max-height:75vh;max-width:calc(100vw - 76px)}
}
@media(max-width:380px){.memories-grid>.memory-card.gallery-tile img{height:195px}.entry-flowers{width:140px}.envelope-art{margin-top:28px}.entry-content h2 em{font-size:43px}}
@media(prefers-reduced-motion:reduce){.env-letter,.env-flap,.invitation-entry,.env-seal{transition-duration:.01s!important}}
