:root{color-scheme:dark;--ink:#080b0a;--paper:#e9e9e5;--muted:#a6aaa3;--line:#ffffff26;--sans:"DM Sans",Arial,sans-serif;--condensed:"Barlow Condensed","Arial Narrow",sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:5rem}body{margin:0;background:var(--ink);color:var(--paper);font:16px/1.55 var(--sans)}body.intro-active{overflow:hidden}button,a,input,select{font:inherit}button,a{-webkit-tap-highlight-color:transparent}a{color:inherit}button{color:inherit}[hidden]{display:none!important}
.skip-link{position:fixed;z-index:30;top:-5rem;left:1rem;padding:.8rem 1rem;background:#d8ddd7;color:#080a08}.skip-link:focus{top:1rem}.eyebrow,.section__index{font:600 .77rem var(--condensed);letter-spacing:.19em;text-transform:uppercase}.eyebrow{color:#c6cbc4}.section{position:relative;min-height:78svh;padding:clamp(5rem,12vw,10rem) max(7vw,1.5rem);overflow:hidden;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;text-shadow:none}.display{font:700 clamp(3.2rem,10vw,8.5rem)/.92 var(--condensed);text-transform:uppercase;letter-spacing:.015em;margin:.3em 0}.section__index{position:absolute;top:2rem;left:max(7vw,1.5rem);color:#c0c5bd;text-align:left}.button{display:inline-flex;align-items:center;justify-content:center;gap:1rem;padding:.85rem 1.15rem;border:1px solid #d8ded6;text-decoration:none;text-transform:uppercase;font:700 .78rem var(--condensed);letter-spacing:.14em;cursor:pointer;transition:background .2s,color .2s}.button:hover{background:#e1e5df;color:#111}.button--outline{background:#0507068c;color:var(--paper)}.button--solid{background:#dce1da;color:#101210;border-color:#dce1da}.button--solid:hover{background:#fff}
.hall-scene{position:fixed;z-index:0;inset:0;overflow:hidden;pointer-events:none;background:#080b0a}.hall-scene>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 48%;filter:brightness(.82) saturate(.62);animation:ambientPulse 6.1s steps(1,end) infinite}.hall-scene__lamp{position:absolute;z-index:2;left:50%;top:20%;width:9px;height:25px;transform:translateX(-50%);border-radius:50% 50% 35% 35%;background:#e6e9d5;box-shadow:0 0 12px 5px #e0e5c585,0 0 48px 26px #d1ddce55,0 0 130px 70px #bccbbb28;animation:bulbflicker 6.1s steps(1,end) infinite}.hall-scene__flicker{position:absolute;z-index:1;inset:0;background:radial-gradient(ellipse 35% 34% at 50% 21%,#f0f5de5c 0,transparent 85%),radial-gradient(ellipse 58% 75% at 50% 36%,#dce8d21c 0,transparent 88%),linear-gradient(180deg,#e1eadc0a 0 34%,transparent 75%);mix-blend-mode:screen;filter:blur(10px);animation:lightPulse 6.1s steps(1,end) infinite}.hall-scene__grain{position:absolute;z-index:3;inset:0;opacity:.08;pointer-events:none;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.86' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.4'/%3E%3C/svg%3E");mix-blend-mode:soft-light}
.intro{position:fixed;inset:0;z-index:20;display:grid;place-items:center;background:#05080750;transition:opacity .8s ease,visibility .8s ease;overflow:hidden}.intro.is-gone{opacity:0;visibility:hidden;pointer-events:none}.corridor--intro{position:absolute;inset:0;overflow:hidden;background:linear-gradient(#05080740,#05080740)}.corridor__lamp{display:none}.corridor__grain{position:absolute;inset:0;opacity:.04;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.86' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.4'/%3E%3C/svg%3E")}.envelope-stage{position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;width:min(90vw,32rem);text-align:center;animation:copyIn 1s .3s both}.envelope-stage>.eyebrow{margin:0 0 1.8rem;color:#e1e3dc}.envelope{position:relative;display:block;width:min(82vw,360px);height:min(57vw,230px);min-height:190px;padding:0;border:0;background:transparent;cursor:pointer;perspective:900px;filter:drop-shadow(0 18px 35px #000b);transition:transform .35s}.envelope:hover{transform:translateY(-4px)}.envelope__letter{position:absolute;z-index:1;left:8%;right:8%;top:9%;height:77%;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:.35rem;background:linear-gradient(135deg,#d6d2c3,#aaa99b);color:#181a17;transition:transform .9s cubic-bezier(.2,.75,.25,1);box-shadow:0 2px 10px #0008}.envelope__letter strong{font:700 clamp(1.7rem,7vw,2.6rem)/.9 var(--condensed);text-transform:uppercase;letter-spacing:.04em}.envelope__letter small{font:600 .7rem var(--condensed);letter-spacing:.1em;text-transform:uppercase}.envelope__pocket{position:absolute;z-index:3;inset:0;background:linear-gradient(145deg,#292c27,#151815 65%,#30332d);clip-path:polygon(0 0,50% 52%,100% 0,100% 100%,0 100%);border:1px solid #c6c9b938}.envelope__flap{position:absolute;z-index:4;inset:0;background:linear-gradient(160deg,#41443b,#232620 70%);clip-path:polygon(0 0,100% 0,50% 58%);transform-origin:50% 0;backface-visibility:hidden;transition:transform .72s cubic-bezier(.2,.7,.25,1),z-index 0s .36s;filter:drop-shadow(0 5px 5px #0007)}.envelope__seal{position:absolute;z-index:5;left:50%;top:42%;display:grid;place-items:center;width:3.1rem;aspect-ratio:1;transform:translate(-50%,-50%);border-radius:50%;border:1px solid #bd877b80;background:radial-gradient(circle at 35% 28%,#9a5549,#532720 70%);color:#ead9d1;font-size:1.1rem;box-shadow:0 3px 12px #0009;transition:opacity .25s,transform .25s}.envelope-stage__hint{margin:.9rem 0 .35rem;color:#dee2da;font:600 .76rem var(--condensed);letter-spacing:.19em;text-shadow:none}.intro__skip{margin-top:.7rem;padding:.55rem .9rem;border:1px solid #ffffff4d;background:#080a09ad;color:#d5d9d2;font:600 .72rem var(--condensed);letter-spacing:.12em;text-transform:uppercase;cursor:pointer}.intro.is-opening .envelope__flap{z-index:1;transform:rotateX(180deg)}.intro.is-opening .envelope__letter{transform:translateY(-55%)}.intro.is-opening .envelope__seal{opacity:0;transform:translate(-50%,-50%) scale(.6)}.intro.is-opening .envelope-stage{animation:copyOut .65s .65s both}
main{position:relative;z-index:1;perspective:1400px}main .section{transform:perspective(1400px) translateZ(var(--approach-z,0px)) scale(var(--approach-scale,.985));transform-origin:50% 58%;transition:transform .12s linear;will-change:transform}.hero{min-height:100svh;background:transparent}.hero__title{max-width:10ch;margin:.16em 0 .12em;font:800 clamp(5.5rem,19vw,14rem)/.72 var(--condensed);text-transform:uppercase;letter-spacing:-.02em;color:#f0f1ed;text-shadow:none}.hero__tagline,.details__note,.dress__note,.prize__copy,.rsvp__note,.message__copy,.weather__copy,.video-section__copy,.lodging__copy,.gifts__copy{max-width:34rem;margin:1rem auto;color:#e0e3dc}.text-link{margin-top:3rem;text-transform:uppercase;letter-spacing:.16em;font:600 .78rem var(--condensed);text-decoration:none}.hero__coordinates{position:absolute;bottom:2rem;right:2rem;color:#d1d4cd;font:600 .7rem var(--condensed);letter-spacing:.14em}.message .display,.countdown-section .display,.calendar .display{white-space:pre-line}.details .eyebrow{margin-top:1rem}.date{font-size:clamp(3.5rem,13vw,11rem);color:#dce1da}.details__time{font:600 1.2rem var(--condensed);letter-spacing:.12em}.countdown{display:flex;justify-content:center;gap:clamp(1rem,5vw,4rem);margin-top:2rem}.countdown div{display:grid;gap:.15rem}.countdown b{font:600 clamp(1.5rem,4vw,2.5rem) var(--condensed);color:#d4d9d2}.countdown span{color:#c1c6be;font:600 .7rem var(--condensed);letter-spacing:.16em}.venue__name{max-width:12ch;font:700 clamp(2.4rem,7vw,5rem)/.95 var(--condensed);text-transform:uppercase}.venue__address{white-space:pre-line;color:#e0e3dc;margin:0 auto 2rem}.dress .display{color:#dddeda}.prize .display{position:relative;margin-top:3rem}.prize .display em{color:#d4dbd2;font-style:normal}.itinerary__list{list-style:none;padding:0;margin:2rem 0;max-width:30rem;width:100%;text-align:left}.itinerary__list li{display:flex;gap:2rem;padding:1rem 0;border-bottom:1px solid #ffffff38}.itinerary__list time{min-width:5rem;color:#d3d9d0;font:600 1rem var(--condensed)}.music__player{width:min(28rem,100%);margin-top:1.5rem;filter:grayscale(.75)}.empty-note,.gallery__note{max-width:34rem;color:#d5dad2;margin:1.5rem auto}.gallery__grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:.7rem;width:min(70rem,100%);margin-top:1rem}.gallery__grid img{width:100%;aspect-ratio:1;object-fit:cover;border:1px solid #ffffff35}.rsvp__form{display:grid;gap:.7rem;max-width:26rem;width:100%;margin:2rem auto;text-align:left}.rsvp__form label{margin-top:.4rem;font-size:.78rem;color:#d3d8d1}.rsvp__form input,.rsvp__form select{width:100%;min-height:3rem;padding:.8rem;background:#090b0add;border:1px solid #8d9589;color:var(--paper);border-radius:0}.rsvp__form input:focus,.rsvp__form select:focus{outline:2px solid #c7cec4;outline-offset:2px}.rsvp__form .button{margin-top:1rem}.rsvp__deadline{color:#d0d4cc;font-size:.75rem}.footer{position:relative;z-index:1;display:flex;justify-content:space-between;align-items:center;padding:1.5rem max(7vw,1.5rem);background:transparent;color:#d0d4cc;font:600 .78rem var(--condensed);letter-spacing:.08em}.footer a{text-decoration:none;color:#e2e6df;font-size:1.2rem}
.float-menu{position:fixed;z-index:15;right:1.2rem;top:1.2rem}.float-menu__toggle{display:flex;align-items:center;gap:.7rem;padding:.75rem 1rem;border:1px solid #bec5ba88;background:#080a09e8;color:var(--paper);cursor:pointer;text-transform:uppercase;font:600 .76rem var(--condensed);letter-spacing:.15em}.menu-icon{display:grid;gap:5px;width:17px}.menu-icon i{height:1px;width:100%;background:#cbd1c7;transition:transform .2s}.float-menu__toggle[aria-expanded=true] .menu-icon i:first-child{transform:translateY(3px) rotate(45deg)}.float-menu__toggle[aria-expanded=true] .menu-icon i:last-child{transform:translateY(-3px) rotate(-45deg)}.float-menu__panel{position:absolute;top:calc(100% + .6rem);right:0;width:min(22rem,calc(100vw - 2rem));max-height:min(75vh,42rem);overflow:auto;padding:1.1rem;background:#090b0af5;border:1px solid var(--line);box-shadow:0 18px 50px #0009;animation:panelIn .2s ease both}.float-menu__panel[hidden]{display:none}.float-menu__heading{display:flex;justify-content:space-between;margin:0 0 .7rem;padding-bottom:.8rem;border-bottom:1px solid var(--line);font:600 .86rem var(--condensed);letter-spacing:.1em}.float-menu__heading span{color:#d1d7ce}.float-menu__hint{margin:-.35rem 0 .65rem;color:#aeb5ab;font-size:.7rem}#menuLinks{display:grid}.float-menu__row{display:grid;grid-template-columns:minmax(0,1fr) 3.2rem;align-items:center;border-bottom:1px solid #e9e8d610}.float-menu__link{display:block;padding:.72rem 0;color:#c6c9c3;text-decoration:none;font-size:.84rem}.float-menu__link:hover,.float-menu__link:focus{color:#edf0eb}.float-menu__link[aria-disabled=true]{color:#737970;text-decoration:line-through;text-decoration-color:#73797066}.section-visibility{display:grid;place-items:center;width:2.75rem;height:2.2rem;padding:0;border:0;background:transparent;cursor:pointer}.section-visibility__track{position:relative;width:2.45rem;height:1.35rem;border:1px solid #98a094;background:#202521;border-radius:99px;transition:background .2s,border-color .2s}.section-visibility__track span{position:absolute;top:.16rem;left:.16rem;width:.95rem;height:.95rem;border-radius:50%;background:#c7cdc3;box-shadow:0 1px 3px #0009;transition:transform .2s,background .2s}.section-visibility[aria-checked=true] .section-visibility__track{background:#82947d;border-color:#bbc8b5}.section-visibility[aria-checked=true] .section-visibility__track span{transform:translateX(1.1rem);background:#f1f3eb}.section-visibility:hover .section-visibility__track,.section-visibility:focus-visible .section-visibility__track{outline:2px solid #d5ddd155;outline-offset:2px}.is-hidden .section-visibility__track{background:#171b18}.is-hidden .section-visibility__track span{background:#8f978c}.float-menu__close{display:flex;justify-content:space-between;width:100%;padding:.8rem 0 0;border:0;background:none;color:#b8bdb5;font-size:.73rem;cursor:pointer}.float-menu__close span{font-size:1.1rem;color:#d1d7ce}
@keyframes bulbflicker{0%,16%,18%,42%,45%,72%,76%,100%{opacity:.96;filter:brightness(1)}17%,43%,74%{opacity:.2;filter:brightness(.45)}}@keyframes lightPulse{0%,16%,18%,42%,45%,72%,76%,100%{opacity:.92}17%,43%,74%{opacity:.22}}@keyframes ambientPulse{0%,16%,18%,42%,45%,72%,76%,100%{filter:brightness(.86) saturate(.62)}17%,43%,74%{filter:brightness(.62) saturate(.48)}}@keyframes copyIn{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:none}}@keyframes copyOut{to{opacity:0;transform:translateY(-10px)}}@keyframes panelIn{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:none}}
@media(max-width:700px){.section{min-height:76svh;padding:6rem 1.4rem}.hero__coordinates{right:1.3rem;bottom:1.2rem}.countdown{gap:1.2rem}.float-menu{right:.75rem;top:.75rem}.gallery__grid{grid-template-columns:repeat(2,minmax(0,1fr))}.hall-scene>img{object-position:center center}.hall-scene__lamp{top:20%;width:9px;height:24px}.hero__title{font-size:clamp(4.5rem,19vw,9rem)}}
@media(prefers-reduced-motion:reduce){*,*::before,*::after{scroll-behavior:auto!important;animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}main .section{transition:none;transform:none!important;will-change:auto}.envelope-stage{animation:none!important}}

/* Composición fotográfica: encuadre del pasillo y texto editable sobre la escena. */
.hall-scene{inset:0 auto;left:50%;width:min(100vw,calc(100svh * .5628));transform:translateX(-50%);mask-image:linear-gradient(90deg,transparent,#000 3%,#000 97%,transparent)}
.hall-scene>img{object-fit:cover;object-position:50% 50%;filter:brightness(.86) saturate(.6) blur(.3px);animation:photoFlicker 7.6s steps(1,end) infinite}
.hall-scene__flicker{background:radial-gradient(ellipse 30% 22% at 50% 20%,#d9e9df16,transparent 75%);filter:blur(16px);animation:photoGlow 7.6s steps(1,end) infinite}
.hall-scene__grain{opacity:.035}
.hero.section{min-height:100svh;padding:0;transform:none;overflow:visible}
.hero__title{position:absolute;top:40%;left:50%;transform:translateX(-50%);width:max-content;max-width:6.8ch;margin:0;font:700 clamp(3.5rem,min(17vw,9svh),6.5rem)/1.02 var(--condensed);letter-spacing:.025em;color:#dce1da;text-shadow:none;white-space:normal}
.hero__event-date{position:absolute;left:50%;bottom:3.3rem;transform:translateX(-50%);width:90%;font:600 clamp(1.7rem,min(7.5vw,4.4svh),3.4rem)/1.24 var(--condensed);letter-spacing:.015em;color:#dce1da;text-shadow:none}
.hero__event-date p{margin:0;white-space:nowrap}
.hero__scroll{position:absolute;left:50%;bottom:.8rem;transform:translateX(-50%);padding:.4rem 1rem;color:#c2cbc1;text-decoration:none;font-size:1.05rem}
.hero__scroll:focus-visible{outline:1px solid #c2cbc1;outline-offset:2px}
@keyframes photoFlicker{0%,14%,16%,43%,45%,68%,72%,100%{filter:brightness(.86) saturate(.6) blur(.3px)}15%,44%,70%{filter:brightness(.61) saturate(.55) blur(.3px)}71%{filter:brightness(.75) saturate(.6) blur(.3px)}}
@keyframes photoGlow{0%,14%,16%,43%,45%,68%,72%,100%{opacity:.7}15%,44%,70%{opacity:.15}71%{opacity:.4}}
