:root{--ink:#59413e;--wine:#664543;--pink:#eedbd7;--pink-d:#cfa6a6;--cream:#faf5ef;--paper:#fffaf4;--gold:#b28d57;--gold-soft:#d3b989;--serif:'Cormorant Garamond',Georgia,serif;--script:'Great Vibes','Brush Script MT',cursive;--sans:'DM Sans',Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:64px}body{margin:0;color:var(--ink);background:var(--cream);font-family:var(--sans);font-size:14px;overflow-x:hidden}button,input,select{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}img{display:block;max-width:100%}::selection{background:#c9a2a2;color:white}.progress-bar{height:2px;position:fixed;top:0;left:0;z-index:110;transform-origin:left;transform:scaleX(0);background:#c49b67;width:100%;pointer-events:none}body.intro-active{overflow:hidden}.intro{position:fixed;inset:0;z-index:200;background:#332827;overflow:hidden;display:grid;place-items:end center;transition:opacity 1s ease,visibility 1s ease}.intro.out{opacity:0;visibility:hidden;pointer-events:none}.intro-photo,.intro-shadow{position:absolute;inset:0;width:100%;height:100%}.intro-photo{object-fit:cover;object-position:50% 33%;filter:brightness(.78);animation:slowZoom 15s ease-in-out infinite alternate}.intro-shadow{background:linear-gradient(180deg,rgba(35,14,17,.12) 2%,rgba(35,14,17,.05) 34%,rgba(30,15,19,.78) 100%)}.intro-content{z-index:2;text-align:center;color:#fff7ef;padding:0 24px max(8svh,35px);width:100%;animation:floatIn 1.2s both}.intro-symbol{font-family:var(--serif);font-size:18px;letter-spacing:8px;color:#e8d0a7}.intro-symbol span{font-size:36px;letter-spacing:2px;margin:0 16px}.overline,.label-spaced,.fine-badge{letter-spacing:3.2px;font-size:9px;font-weight:600}.intro .overline{margin:24px 0 12px}.intro-rule{height:1px;width:50px;background:#dbbc91;margin:0 auto}.intro-title{font:400 clamp(58px,15vw,92px)/.77 var(--serif);margin:23px 0 19px}.intro-title em{font:400 clamp(73px,19vw,112px)/1 var(--script);color:#f7dcb7}.intro-date{font-size:10px;letter-spacing:3px;margin:15px auto 34px}.button{appearance:none;border:1px solid #c4a875;min-height:50px;display:inline-flex;align-items:center;justify-content:center;gap:19px;padding:14px 24px;border-radius:2px;font:600 10px var(--sans);letter-spacing:2px;transition:transform .25s,background .25s,box-shadow .25s}.button:hover{transform:translateY(-3px);box-shadow:0 8px 30px #46341e36}.button span{font-size:20px;font-weight:300;line-height:0}.start-button{background:#f7eadb;color:#765d50;border-color:#f7eadb;box-shadow:0 5px 22px #0003;min-width:215px}.sound-hint{font-size:10px;letter-spacing:.4px;color:#fceee1bd;margin:20px 0 0}.site-header{height:68px;padding:0 6%;display:flex;align-items:center;justify-content:space-between;position:absolute;z-index:50;left:0;right:0;top:0;color:#fff7ed;letter-spacing:2px}.logo{font:500 29px var(--serif);line-height:1}.sparkle-tiny{font-size:17px;color:#dfc08b;margin-left:5px}.nav-date{font-size:9px;text-transform:uppercase;font-weight:600;letter-spacing:1.6px}.music-toggle{background:#ffffff25;border:1px solid #ffffff80;border-radius:30px;color:white;min-width:42px;height:39px;display:flex;gap:7px;align-items:center;justify-content:center;backdrop-filter:blur(8px);font-size:18px;padding:0 12px}.music-toggle.playing{background:#d6b68c70}.music-text{font-size:8px;letter-spacing:1px}.hero{height:100svh;min-height:590px;max-height:1050px;position:relative;background:#493a38;display:flex;align-items:flex-end;justify-content:center;overflow:hidden}.hero-photo,.hero-dim,.hero-grain{position:absolute;inset:0}.hero-photo{background-image:url('img/portada.webp');background-position:center 34%;background-size:cover;transform:scale(1.05);animation:slowZoom 22s ease-in-out infinite alternate}.hero-dim{background:linear-gradient(180deg,#1813136b 0%,transparent 29%,#24101124 50%,#2b181bd9 100%)}.hero-grain{opacity:.16;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 150 150' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.84' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.22'/%3E%3C/svg%3E")}.hero-content{position:relative;z-index:3;color:#fffaf5;text-align:center;width:100%;padding:0 12px 5svh;text-shadow:0 2px 10px #1f131550}.hero-top{display:flex;align-items:center;justify-content:center;gap:9px;color:#ebce9f}.hero-top .diamond{font-size:9px}.hero-script{font:400 37px var(--script);margin:17px 0 0;color:#f3dcc1}.hero h1{margin:0;display:flex;flex-direction:column;line-height:.76;align-items:center;text-transform:uppercase}.hero-small{font:400 32px var(--serif);letter-spacing:9px;margin-top:8px}.hero h1 strong{font:300 clamp(150px,46vw,270px)/.83 var(--serif);letter-spacing:-13px;padding-right:13px}.hero-anos{font:400 56px var(--script);text-transform:none;color:#f4d3b8;margin-top:-10px}.hero-name{font:400 38px/1.2 var(--serif);margin:15px 0 0;letter-spacing:1px}.ornamental-line{display:flex;align-items:center;gap:11px;justify-content:center;margin:19px 0 13px;color:#efce91}.ornamental-line i{height:1px;width:50px;background:#e1caad}.hero-date{font-size:11px;letter-spacing:3px;margin:0 0 32px;color:#fff3e8}.hero-scroll{display:inline-flex;align-items:center;gap:10px;font-size:9px;letter-spacing:2px;color:#fff6e8}.hero-scroll span{display:inline-block;font-size:19px;animation:bob 2s infinite}.fireflies i{width:2px;height:2px;display:block;background:#fcebc3;border-radius:50%;position:absolute;box-shadow:0 0 11px 3px #fce7b9;animation:twinkle 4s infinite alternate}.fireflies i:nth-child(1){left:11%;top:28%}.fireflies i:nth-child(2){left:85%;top:43%;animation-delay:1s}.fireflies i:nth-child(3){left:30%;top:65%;animation-delay:1.8s}.fireflies i:nth-child(4){left:75%;top:15%;animation-delay:2.4s}.fireflies i:nth-child(5){left:64%;top:76%;animation-delay:.8s}.fireflies i:nth-child(6){left:12%;top:85%;animation-delay:3s}.section-pad{padding:90px 7%}.opening,.date-section,.events,.gallery-section,.rsvp-section{text-align:center}.opening{background:linear-gradient(180deg,#f9f1ea,#fffaf5 53%,#faf5ef)}.fine-badge{display:block;color:#ae8e65;font-size:9px;letter-spacing:2.3px;line-height:1.6}.section-script{font:400 clamp(29px,8vw,46px)/1.1 var(--script);color:#be9494;margin:19px 0 12px}.opening h2,.events h2,.gallery-section h2,.rsvp-section h2{font:400 clamp(50px,11vw,72px)/.95 var(--serif);letter-spacing:-1.2px;color:var(--wine);margin:0}.opening h2 em,.events h2 em,.gallery-section h2 em,.rsvp-section h2 em{font-weight:300}.tiny-divider{color:#bf9c6e;font-size:23px;margin:25px 0 20px}.body-quote{font:400 19px/1.68 var(--serif);max-width:390px;margin:0 auto 55px;color:#846660}.opening-picture{position:relative;max-width:350px;margin:0 auto;padding:11px;border:1px solid #dfc8ad;box-shadow:0 26px 44px #7e554421}.opening-picture img{width:100%;aspect-ratio:4/5;object-fit:cover;object-position:center}.opening-stamp{position:absolute;bottom:-19px;right:-15px;width:81px;height:81px;border-radius:50%;border:2px solid #ead7b4;background:#b08d66;color:white;display:grid;align-content:center;font:500 35px/.73 var(--serif);box-shadow:0 4px 18px #49301a3b}.opening-stamp small{font:500 10px var(--sans);letter-spacing:3px;margin-top:11px}.guest-note{padding-top:60px;padding-bottom:60px;background:#efe0db}.invite-box{padding:8px;border:1px solid #c9ad88;background:#fcf6f0;max-width:510px;margin:auto;box-shadow:0 20px 55px #aa86751f}.invite-inner{border:1px solid #d7c1a4;padding:42px 18px}.invite-box h2{font:400 clamp(42px,10vw,66px)/1 var(--serif);margin:24px 0 10px;color:#815857;overflow-wrap:anywhere}.guest-star{font-size:25px;color:var(--gold)}.invite-box p{font:400 18px var(--serif);color:#806f68}.guest-passes{display:flex;align-items:center;justify-content:center;gap:12px;color:#ac8554}.guest-passes strong{font:300 80px var(--serif)}.guest-passes span{font:600 11px var(--sans);letter-spacing:2px;max-width:80px;text-align:left}.invite-box .invite-sub{font-size:16px;margin-bottom:25px}.gold-button{background:#b29164;color:white;border-color:#b29164;box-shadow:0 8px 22px #8f64512f}.date-section{background:#f4e7e1;padding-top:85px;padding-bottom:100px}.date-big{margin:27px auto 37px;display:flex;align-items:center;justify-content:center;gap:18px;color:#8b665e}.date-big>span:first-child{font:300 112px/.8 var(--serif)}.date-big>span:last-child{font:300 54px var(--serif);writing-mode:vertical-rl;letter-spacing:1px}.date-big div{display:flex;flex-direction:column;gap:3px;text-align:left;border-left:1px solid #cfae9b;padding-left:13px}.date-big strong{font:600 13px var(--sans);letter-spacing:1.4px}.date-big small{font:400 20px var(--serif)}.countdown{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:8px;margin:auto;max-width:490px}.countdown>div{border:1px solid #dbbfb1;padding:17px 3px 15px;background:#fff8f48c}.countdown strong{display:block;color:#7d5853;font:400 clamp(34px,9vw,50px)/1 var(--serif);font-variant-numeric:tabular-nums}.countdown span{display:block;margin-top:9px;color:#ad8c81;font-size:8px;letter-spacing:1.6px;font-weight:600}.countdown-caption{font:400 18px var(--serif);color:#987d70;margin:26px 0 0}.story-photo{height:520px;max-height:80vh;position:relative;overflow:hidden}.story-photo>img{width:100%;height:100%;object-fit:cover;object-position:50% 42%;filter:brightness(.84)}.story-photo-overlay{position:absolute;inset:0;display:flex;align-items:center;justify-content:end;flex-direction:column;padding-bottom:43px;background:linear-gradient(transparent 50%,#2616199c);color:#fff3e8}.story-photo-overlay span{font:400 34px var(--script);color:#eacead}.story-photo-overlay strong{font:400 43px var(--serif);font-style:italic}.events{background:#fcf6f0}.event-card{border:1px solid #dfc9b4;padding:46px 20px 40px;max-width:430px;margin:38px auto 0;background:linear-gradient(135deg,#fffaf6,#fdf5ef);position:relative;box-shadow:0 14px 30px #c99e7921}.event-card:before{content:'';position:absolute;inset:7px;border:1px solid #eaddce;pointer-events:none}.event-icon{font:300 37px var(--serif);color:#b89769;margin-bottom:25px}.event-kicker{font-size:9px;letter-spacing:2.5px;font-weight:600;color:#bc9b70}.event-card h3{font:400 49px var(--serif);margin:15px 0 8px;color:#77504b}.event-place{font:500 20px/1.3 var(--serif);color:#735b54;margin:0 auto;max-width:270px}.event-time{font:400 29px var(--serif);margin:13px 0 28px;color:#98765e}.map-link{font:600 10px var(--sans);letter-spacing:1.8px;display:inline-flex;align-items:center;padding-bottom:7px;border-bottom:1px solid #bc9565;color:#967248}.dress-code{margin:0 auto 22px;max-width:280px;padding:16px 14px 14px;border:1px solid #ead8c8;background:#fff9f4}.dress-code-label{display:block;font-size:9px;letter-spacing:2px;font-weight:600;color:#bc9b70;margin-bottom:6px}.dress-code strong{display:block;font:400 26px var(--serif);color:#7e5a52;margin-bottom:12px}.dress-icons{display:flex;justify-content:center;gap:14px}.dress-item{display:flex;flex-direction:column;align-items:center;gap:8px;color:#967b69}.dress-item small{font:600 9px var(--sans);letter-spacing:1.5px;text-transform:uppercase}.mini-icon{width:42px;height:42px;border-radius:50%;background:#f7efe7;border:1px solid #d7bda0;position:relative;display:inline-block}.icon-tie:before{content:'';position:absolute;left:50%;top:9px;transform:translateX(-50%);width:10px;height:8px;background:#b69362;clip-path:polygon(50% 0,100% 50%,50% 100%,0 50%)}.icon-tie:after{content:'';position:absolute;left:50%;top:16px;transform:translateX(-50%);width:10px;height:16px;background:#b69362;clip-path:polygon(50% 100%,100% 0,0 0)}.icon-dress:before{content:'';position:absolute;left:50%;top:8px;transform:translateX(-50%);width:8px;height:8px;border-radius:50%;background:#b69362}.icon-dress:after{content:'';position:absolute;left:50%;top:17px;transform:translateX(-50%);width:20px;height:16px;background:#b69362;clip-path:polygon(50% 0,85% 18%,100% 100%,0 100%,15% 18%)}.event-join{height:40px;display:flex;gap:7px;align-items:center;justify-content:center;font-size:16px;color:#c2a377}.event-join div{height:28px;width:1px;background:#ceb89e}.event-join+.event-card{margin-top:0}.gallery-section{background:#f4e7e1}.gallery-caption{font:400 17px var(--serif);margin:18px 0 28px;color:#91776e}.photo-grid{display:grid;grid-template-columns:repeat(2,1fr);grid-auto-flow:row;gap:12px;max-width:770px;margin:30px auto 0}.photo-item{padding:0;border:0;position:relative;display:block;overflow:hidden;background:#ddd0c5;aspect-ratio:3/4;box-shadow:0 12px 25px #8b685716}.photo-item img{width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.1,1);object-position:50% 36%}.photo-item:hover img{transform:scale(1.05)}.rsvp-section{background:linear-gradient(150deg,#faf2e9,#f9e8e3);padding-top:90px;padding-bottom:95px}.rsvp-ornament{font-size:35px;color:#bfa274}.rsvp-section .fine-badge{margin-top:12px}.rsvp-description{font:400 19px/1.5 var(--serif);max-width:330px;margin:26px auto 28px;color:#866962}.rsvp-card{max-width:475px;margin:35px auto 0;background:#fffaf5;padding:35px 23px 30px;border:1px solid #dfc2aa;box-shadow:0 20px 35px #87593d18;text-align:center}.rsvp-card p{font:400 18px/1.65 var(--serif);color:#866962;margin:16px 0 0}.rsvp-to{font-size:9px;letter-spacing:1.7px;color:#ae8d69}.rsvp-to strong{font:500 31px var(--serif);letter-spacing:0;display:block;margin-top:9px;color:#805752}.rsvp-ticket{font:400 17px var(--serif);color:#8a7369;margin:14px 0 24px}.rsvp-ticket b{color:var(--gold)}.rsvp-options{display:grid;gap:10px;text-align:left}.attendance-option{display:block;position:relative}.attendance-option input{position:absolute;opacity:0;width:1px;height:1px}.attendance-option span{display:flex;justify-content:space-between;padding:15px 17px;border:1px solid #e0cebf;color:#765b58;transition:.2s;background:#fff}.attendance-option input:checked+span{background:#f4e5df;border-color:#b68b75;box-shadow:inset 0 0 0 1px #b68b75}.attendance-option input:focus-visible+span{outline:2px solid #977454;outline-offset:2px}.attendance-option b{color:#bd8e83}.count-choice{display:none;text-align:left;margin:25px 0 18px}.count-choice.visible{display:block}.count-choice label{display:block;letter-spacing:1.7px;font-size:10px;color:#886e5b;margin-bottom:9px}.count-choice select{width:100%;border:1px solid #d9c0ac;border-radius:0;appearance:none;background:#fff url("data:image/svg+xml,%3Csvg width='12' height='8' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m1 1 5 5 5-5' fill='none' stroke='%23886852'/%3E%3C/svg%3E") no-repeat right 16px center;padding:14px;color:#64483e}.submit-rsvp{margin-top:23px;width:100%}.rsvp-response{font-size:12px;line-height:1.55;color:#6d8c68;min-height:1em;margin:18px 0 0}.rsvp-response.error{color:#a84444}.gold-flower{display:block;color:#bc985f;font-size:44px}.footer{background:#593f3f;color:#f6e7d9;text-align:center;display:flex;flex-direction:column;align-items:center;padding:53px 16px 31px}.footer-sparkle{color:#e7c391;font-size:28px}.footer p{font:400 24px var(--script);margin:10px 0 12px}.footer strong{font:400 38px var(--serif);margin:0 0 11px}.footer>span:nth-last-of-type(1){font-size:10px;letter-spacing:2.1px;color:#ddc5af}.footer-rule{height:1px;width:60px;background:#ab886c;margin:23px 0 19px}.footer small{font-size:8px;letter-spacing:2px;color:#d9b9ad}.lightbox{background:#1c1517ee;border:0;padding:45px 10px 20px;margin:auto;max-width:100vw;max-height:100vh;overflow:hidden;inset:0}.lightbox::backdrop{background:#1c1517f5}.lightbox img{max-height:calc(100dvh - 70px);max-width:100%;width:auto;margin:auto;object-fit:contain}.close-lightbox{position:absolute;top:4px;right:16px;border:0;background:none;color:white;font-size:37px}.reveal{opacity:0;transform:translateY(22px);transition:opacity .75s ease,transform .75s ease}.reveal.visible{opacity:1;transform:translateY(0)}@keyframes slowZoom{from{transform:scale(1.02)}to{transform:scale(1.12)}}@keyframes twinkle{from{opacity:.15;transform:translateY(0)}to{opacity:1;transform:translateY(-18px)}}@keyframes bob{50%{transform:translateY(6px)}}@keyframes floatIn{from{opacity:0;transform:translateY(26px)}to{opacity:1;transform:translateY(0)}}@media(min-width:760px){.site-header{padding:0 max(calc((100vw - 650px)/2),4%)}.hero{height:850px;min-height:750px}.hero-photo{background-position:center 28%}.hero-content{padding-bottom:60px}.section-pad{padding:110px 24px}.opening-picture{max-width:425px}.hero h1 strong{font-size:245px}.hero-script{font-size:48px}.story-photo{height:730px}.events{display:block}.photo-grid{grid-template-columns:repeat(3,1fr);gap:16px}.photo-item:nth-child(n){aspect-ratio:3/4}.rsvp-card{padding:42px 38px}.date-big{gap:40px}}@media(max-width:350px){.site-header{padding:0 12px}.nav-date{font-size:8px;letter-spacing:0}.music-text{display:none}.hero h1 strong{font-size:140px}.hero-script{font-size:31px}.date-big{gap:9px}.date-big>span:first-child{font-size:92px}.date-big>span:last-child{font-size:47px}.fine-badge{font-size:8px}.section-pad{padding-left:5%;padding-right:5%}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}}

/* XV - Foto de los globos 15 sin cortar en celular. */
.story-photo.fifteen-photo{height:auto;max-height:none;background:#5a4141;display:flex;flex-direction:column}.story-photo.fifteen-photo>img{width:100%;height:auto;max-height:680px;object-fit:contain;object-position:center;filter:none}.story-photo.fifteen-photo .story-photo-overlay{position:relative;inset:auto;display:flex;align-items:center;justify-content:center;flex-direction:column;padding:24px 14px 30px;background:linear-gradient(180deg,#654847,#503b3e);color:#fff3e8;text-align:center}.story-photo.fifteen-photo .story-photo-overlay span{font-size:clamp(30px,8vw,42px)}.story-photo.fifteen-photo .story-photo-overlay strong{font-size:clamp(32px,9vw,48px)}

/* Mejora fotográfica para la versión de ejemplo: menos oscurecimiento y sin grano artificial. */
.intro-photo{filter:brightness(.91) contrast(1.045) saturate(1.025)}
.intro-shadow{background:linear-gradient(180deg,rgba(35,14,17,.06) 2%,rgba(35,14,17,.03) 34%,rgba(30,15,19,.76) 100%)}
.hero-grain{display:none}
.hero-dim{background:linear-gradient(180deg,#18131342 0%,transparent 29%,#24101114 50%,#2b181bb9 100%)}
.photo-item img{image-rendering:auto}
.lightbox img{width:auto;max-width:min(100%,720px);image-rendering:auto}
