:root{--navy:#193b58;--ink:#24465f;--muted:#667c8c;--sky:#dbeaf3;--paper:#faf9f5;--silver:#b5c6d2;--line:#ccd9e1;--serif:'Cormorant Garamond',Georgia,serif;--sans:'Montserrat',Arial,sans-serif;--script:'Great Vibes',cursive}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:85px}body{margin:0;background:var(--paper);color:var(--ink);font-family:var(--sans);font-size:13px;line-height:1.8}button,input,textarea,select{font:inherit}button,a,input,select,textarea{-webkit-tap-highlight-color:transparent}a{color:inherit}button{cursor:pointer}img{display:block;max-width:100%}h1,h2,h3,h4,p{margin:0}h2{font:400 clamp(36px,4.5vw,58px)/1.12 var(--serif);letter-spacing:-.8px}h2 em{font-weight:400}p{color:var(--muted)}[hidden]{display:none!important}:focus-visible{outline:3px solid #799fbd;outline-offset:5px}.eyebrow{display:block;font-size:10px;font-weight:500;letter-spacing:3px;text-transform:uppercase;color:#607e94}.script{font-family:var(--script);font-weight:400}.button{min-height:48px;display:inline-flex;align-items:center;justify-content:center;gap:28px;padding:14px 23px;border:1px solid var(--line);text-decoration:none;font-size:10px;letter-spacing:1.2px;font-weight:500;transition:background .2s,transform .2s}.button:hover{transform:translateY(-2px)}.primary{background:var(--navy);border-color:var(--navy);color:white}.primary:hover{background:#2c536f}.outline{background:transparent;color:var(--navy)}.outline:hover{background:#e8f0f5}.light{color:white;border-color:#7c95a8;background:transparent}.light:hover{background:#ffffff10}.button span{font-size:18px;line-height:1}.skip-link{position:absolute;top:-100px;left:10px;background:white;padding:12px;z-index:100}.skip-link:focus{top:10px}.nav{height:85px;max-width:1300px;margin:auto;padding:0 6%;display:flex;justify-content:space-between;align-items:center;border-bottom:1px solid var(--line)}.brand{font:italic 36px var(--serif);text-decoration:none;display:flex;gap:8px;align-items:center}.brand span{font:9px var(--sans);border-left:1px solid var(--silver);padding-left:9px;letter-spacing:2px}.nav nav{display:flex;gap:38px;align-items:center;font-size:10px;letter-spacing:1px}.nav nav a{text-decoration:none}.nav-rsvp{border-bottom:1px solid var(--ink);padding:8px 0}.nav-rsvp span{padding-left:16px}.hero{position:relative;max-width:1300px;margin:auto;padding:65px 9% 65px;display:grid;grid-template-columns:1.1fr 1fr;gap:60px;align-items:center;min-height:calc(100svh - 85px);background:radial-gradient(ellipse at 92% 48%,#dbeaf380,transparent 58%)}.hero-copy{padding:20px 0}.hero-rule{width:50px;height:1px;background:var(--silver);margin:24px 0 35px}.hero h1{font-size:clamp(80px,9vw,126px);line-height:1.1;letter-spacing:0;margin-left:-6px}.hero-tagline{font:400 clamp(26px,3vw,40px)/1.2 var(--serif);color:var(--ink);margin:5px 0 25px}.hero-description{font-size:12px;line-height:2}.hero-date{display:flex;gap:17px;align-items:center;margin:33px 0;color:var(--ink)}.hero-date span{font-size:9px;letter-spacing:2px;line-height:2}.hero-date strong{font:400 52px/1 var(--serif);padding:0 20px;border-left:1px solid var(--silver);border-right:1px solid var(--silver)}.hero-portrait{position:relative;width:100%;max-width:430px;justify-self:end;padding:16px 16px 32px}.portrait{width:100%;height:470px;object-fit:cover;object-position:50% 68%;border-radius:220px 220px 3px 3px;background:white}.portrait-outline{position:absolute;inset:0 0 48px;border:1px solid #91aec2;border-radius:240px 240px 3px 3px;pointer-events:none}.hero-botanical{position:absolute;width:160px;height:265px;object-fit:contain;bottom:-20px;right:-56px;transform:rotate(12deg)}.photo-note{display:block;font:italic 16px var(--serif);padding-top:18px;text-align:center}.photo-star{position:absolute;top:14px;left:-25px;font:55px var(--serif);color:#8ea8ba}.hero-bottom{grid-column:1/-1;display:flex;align-items:center;justify-content:space-between;border-top:1px solid var(--line);padding-top:20px;font-size:8px;letter-spacing:2px;margin-top:5px}.hero-bottom a{text-decoration:none;font-size:23px}.section{padding:95px max(24px,calc((100vw - 1080px)/2));}.story{text-align:center;max-width:900px;margin:auto;padding-left:35px;padding-right:35px}.story h2{margin-top:22px}.ornament{font:35px var(--serif);color:#89a7bd;margin:28px 0}.story p{max-width:580px;margin:20px auto;line-height:2.1;font-size:13px}.signature{display:block;font-size:41px;color:var(--ink);margin-top:34px}.countdown-section{position:relative;text-align:center;background:var(--navy);color:#f2f6fa;overflow:hidden}.countdown-section:before,.countdown-section:after{content:'✧';position:absolute;font:300px var(--serif);opacity:.045;left:-50px;top:0;pointer-events:none}.countdown-section:after{left:auto;right:-40px;top:50px}.countdown-section .eyebrow{color:#b8ccdb}.countdown-section h2{font-size:44px;margin-top:18px}.countdown{display:flex;max-width:600px;justify-content:space-between;align-items:center;margin:35px auto 22px;gap:12px}.countdown div{min-width:65px}.countdown strong{font:400 65px/1.15 var(--serif);display:block}.countdown span{font-size:8px;letter-spacing:2px;color:#bacddd}.countdown i{font:28px var(--serif);color:#7794a9;padding-bottom:20px}.countdown-section p{color:#b8ccdb;font-size:11px;margin-bottom:25px}.section-heading{text-align:center}.section-heading h2{margin:20px 0}.event-grid{display:grid;grid-template-columns:1fr 1fr;margin-top:50px;border:1px solid var(--line)}.event{text-align:center;padding:40px 30px}.event+.event{border-left:1px solid var(--line)}.event-no{display:block;font-size:9px;letter-spacing:2px;color:#7995a9}.line-icon{width:60px;height:60px;margin:30px auto 14px;display:block;color:#7195ae}.event h3{font:400 35px var(--serif)}.event-time{font:400 35px var(--serif);color:var(--ink);margin:10px 0 25px}.event-time span{font-size:22px}.event h4{font-size:12px;font-weight:500;margin-bottom:8px}.event p:not(.event-time){font-size:11px;line-height:2}.event .button{margin-top:25px}.schedule{background:#edf3f6;text-align:center}.schedule h2{margin:20px 0 40px}.timeline{list-style:none;max-width:660px;padding:0;margin:0 auto;text-align:left}.timeline li{display:grid;grid-template-columns:135px 1fr;gap:40px;align-items:center;padding:21px 0;border-bottom:1px solid var(--line);position:relative}.timeline li:before{content:'';width:5px;height:5px;border:1px solid #8daac0;border-radius:50%;position:absolute;left:151px;background:var(--paper)}.timeline time{font:22px var(--serif)}.timeline span{font-size:12px}.timeline small{display:block;font-size:9px;margin-top:4px;color:var(--muted)}.details{display:grid;grid-template-columns:1fr 1fr;gap:60px;text-align:center}.details article+article{border-left:1px solid var(--line);padding-left:60px}.details h2{font-size:37px;margin-top:20px}.detail-symbol{font:50px var(--serif);color:#829eb3;margin:20px 0}.details h3{font:30px var(--serif);margin-bottom:15px}.details p{font-size:12px;max-width:370px;margin:auto}.details .blue-reserved{font-size:10px;margin-top:24px;color:#5a7e99}.blue-reserved span{display:inline-block;vertical-align:middle;width:12px;height:12px;background:#b5d8ef;border-radius:50%;border:1px solid #8fb8d5;margin-right:5px}.gift-note{margin-top:24px!important;font:italic 19px var(--serif)!important}.rsvp{background:#dceaf3;display:grid;grid-template-columns:1fr 1fr;gap:65px;align-items:center}.rsvp h2{margin:20px 0 25px;font-size:55px}.rsvp-copy p{font-size:12px}.deadline{display:block;font:500 24px var(--serif);margin-top:10px}.rsvp-small{max-width:290px}.rsvp-card{background:var(--paper);padding:36px;border:1px solid #c2d5e2;box-shadow:0 12px 40px #23496508}.field{margin-bottom:20px}.field label,legend{font-size:10px;font-weight:500;display:block;margin-bottom:8px;color:var(--ink)}.field label span{color:var(--muted);font-weight:400}input:not([type=radio],[type=checkbox]),textarea,select{width:100%;padding:13px;border:1px solid var(--line);border-radius:0;background:#fffefa;color:var(--ink);font-size:12px}textarea{resize:vertical}fieldset{border:0;margin:0 0 22px;padding:0}legend{padding:0}.attendance-options{display:flex;gap:8px}.attendance-options label{flex:1;position:relative;cursor:pointer}.attendance-options input{position:absolute;top:50%;left:12px;margin:0;transform:translateY(-50%);accent-color:var(--navy)}.attendance-options span{border:1px solid var(--line);padding:12px 8px 12px 34px;display:block;font-size:10px}.attendance-options input:checked+span{background:#e0edf5;border-color:#769bb6}.attendance-options input:focus-visible+span{outline:2px solid #769bb6}.submit{width:100%;justify-content:space-between}.submit:disabled{opacity:.55;cursor:wait}.privacy-note{font-size:9px;line-height:1.7;margin:0 0 18px}.honeypot{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}#formStatus{font-size:11px;margin-top:12px;color:#9d3542}.preview-note{font-size:10px;background:#edf2f6;padding:12px;margin:0 0 20px;border-left:2px solid #8ba9bd}.thanks{text-align:center;padding:25px 0}.thanks h3{font:45px var(--serif)}.thanks p{margin:20px 0 28px;font-size:12px}.closing{text-align:center;position:relative;overflow:hidden;padding-top:110px;padding-bottom:85px}.closing>img{position:absolute;width:190px;left:-75px;bottom:0;opacity:.5;transform:rotate(15deg);pointer-events:none}.closing h2{font-size:40px;margin:22px 0 32px}.closing .script{display:block;font-size:70px}.closing p{font-size:9px;letter-spacing:3px;margin:12px 0 32px}.closing a{font-size:10px;text-decoration:none;border-bottom:1px solid var(--silver);padding-bottom:5px}footer{text-align:center;border-top:1px solid var(--line);padding:22px 60px;font-size:8px;letter-spacing:1px;color:var(--muted)}footer span{margin-left:10px}.music{position:fixed;bottom:20px;right:20px;width:48px;height:48px;background:var(--navy);border:1px solid #a7c5db;color:white;border-radius:50%;z-index:20;box-shadow:0 4px 20px #193b5820;font-size:23px}.music[aria-pressed=true]{background:#46708e}.music-status{position:fixed;bottom:80px;right:20px;max-width:230px;background:var(--paper);padding:0;font-size:11px;z-index:20}.music-status:not(:empty){padding:12px;border:1px solid var(--line)}.welcome{position:fixed;inset:0;z-index:50;display:flex;justify-content:center;align-items:center;text-align:center;background:radial-gradient(ellipse at 50% 45%,#fffdf9,#e4edf4);overflow:auto;transition:opacity .65s,visibility .65s}.welcome:before{content:'';position:absolute;inset:0;pointer-events:none;opacity:.23;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' opacity='.17' filter='url(%23n)'/%3E%3C/svg%3E")}.welcome-inner{position:relative;max-width:540px;width:100%;padding:50px 35px}.welcome .eyebrow{font-size:11px;letter-spacing:4px}.welcome .script{font-size:80px;color:var(--navy);line-height:1.2;margin:16px 0 0}.welcome-sub{font-size:9px;letter-spacing:4px;color:var(--ink)}.envelope{position:relative;border:0;display:block;width:320px;height:210px;margin:64px auto 36px;padding:0;background:none;isolation:isolate;transition:transform .3s}.envelope:hover{transform:translateY(-5px)}.envelope-paper{position:absolute;inset:0;background:linear-gradient(130deg,#98bbd3,#bdd7e8 50%,#84aac6);box-shadow:0 14px 30px #23476235;border:1px solid #8caec8}.envelope-fold{position:absolute;inset:0;background:linear-gradient(140deg,#c3dbea,#94b6ce);clip-path:polygon(0 100%,0 0,50% 57%,100% 0,100% 100%)}.envelope-flap{position:absolute;inset:0;background:linear-gradient(135deg,#d0e4f0,#89aecb);clip-path:polygon(0 0,100% 0,50% 59%);filter:drop-shadow(0 3px 3px #203e5540);transform-origin:top;transition:transform .65s}.seal{position:absolute;left:calc(50% - 32px);top:calc(59% - 30px);width:64px;height:64px;background:radial-gradient(circle at 30% 30%,#f5f6f7,#bec9d2);border-radius:48% 52% 45% 55% / 52% 44% 56% 48%;box-shadow:0 3px 7px #193b5835,inset 0 0 0 5px #d9e0e6,inset 0 0 0 6px #a8b6c1;color:#607b91;font:32px/64px var(--script);transition:opacity .3s}.sprig{position:absolute;width:115px;pointer-events:none;z-index:2}.sprig-left{left:-45px;bottom:-65px;transform:rotate(-15deg)}.sprig-right{right:-40px;top:-90px;transform:rotate(165deg)}.open-text{background:none;border:0;font:500 11px var(--sans);letter-spacing:2px;text-transform:uppercase;color:var(--ink);padding:12px 20px;min-height:44px}.open-text span{margin-left:10px}.sound-choice{display:flex;align-items:center;justify-content:center;gap:8px;font-size:10px;color:var(--muted);margin-top:12px}.sound-choice input{accent-color:var(--navy)}.welcome-date{font-size:9px;letter-spacing:3px;margin-top:35px}.welcome.opening{opacity:0;visibility:hidden;pointer-events:none}.opening .envelope-flap{transform:rotateX(150deg)}.opening .seal{opacity:0}.locked{overflow:hidden}
@media(min-width:1500px){.hero{min-height:760px}}@media(max-width:800px){.nav{height:70px;padding:0 24px}.nav nav{gap:20px;font-size:9px}.hero{min-height:auto;padding:55px 28px 30px;grid-template-columns:1fr;gap:35px;text-align:center}.hero-copy{padding:0}.hero .eyebrow{font-size:9px}.hero-rule{margin:22px auto}.hero h1{font-size:92px}.hero-tagline{font-size:32px}.hero-description{font-size:11px}.hero-date{justify-content:center;margin:27px 0}.hero-portrait{justify-self:center;width:min(330px,85%);padding:12px 12px 32px;margin-top:12px}.portrait{height:350px}.portrait-outline{bottom:48px}.hero-botanical{width:125px;height:210px;right:-36px;bottom:0}.photo-star{font-size:43px;left:-14px}.photo-note{font-size:15px}.hero-bottom{font-size:7px;letter-spacing:1px;margin-top:8px}.section{padding:70px 25px}.story h2{font-size:35px}.story p{font-size:12px}.signature{font-size:36px}.eyebrow{font-size:9px;letter-spacing:2px}.countdown-section h2{font-size:34px}.countdown{gap:5px;max-width:390px}.countdown strong{font-size:49px}.countdown div{min-width:48px}.countdown span{font-size:7px;letter-spacing:1px}.countdown i{font-size:22px}.event-grid{grid-template-columns:1fr}.event+.event{border-left:0;border-top:1px solid var(--line)}.event{padding:34px 20px}.section-heading h2{font-size:38px}.timeline li{grid-template-columns:105px 1fr;gap:28px}.timeline li:before{left:116px}.timeline time{font-size:20px}.timeline span{font-size:10px}.details{grid-template-columns:1fr;gap:50px}.details article+article{border-left:0;border-top:1px solid var(--line);padding-left:0;padding-top:50px}.details h2{font-size:36px}.rsvp{grid-template-columns:1fr;gap:30px}.rsvp-copy{text-align:center}.rsvp-small{margin:auto}.rsvp h2{font-size:46px}.rsvp-copy .ornament{margin:20px 0}.rsvp-card{padding:26px 20px}.closing h2{font-size:32px}.closing .script{font-size:64px}.music{width:44px;height:44px;bottom:15px;right:15px}.welcome-inner{padding:30px 22px}.welcome .script{font-size:73px}.welcome .eyebrow{font-size:9px;letter-spacing:3px}.envelope{width:270px;height:180px;margin:55px auto 30px}.sprig{width:100px}.sprig-left{left:-28px;bottom:-60px}.sprig-right{right:-28px;top:-74px}.welcome-date{margin-top:25px}}@media(max-width:350px){.envelope{width:230px;height:160px}.hero h1{font-size:78px}.attendance-options{flex-direction:column}.countdown strong{font-size:41px}.nav nav{gap:12px}.nav{padding:0 18px}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}

.guest-greeting{font-size:11px;letter-spacing:.5px;color:var(--ink);background:#e1edf5;padding:10px 16px;margin:20px 0;display:inline-block}.invitation-note{font-size:11px;padding:14px;background:#e7eff4;margin-bottom:20px;color:var(--ink)}
@media(max-width:800px){.hero-botanical{right:-20px}}

/* Segunda versión: lectura grande y cielo azul con destellos lentos. */
.invitation-page{--paper:#e7f0f8;--muted:#48677f;background:linear-gradient(145deg,#d9e9f7 0%,#bdd5e9 45%,#e2eefa 100%);font-size:22px;line-height:1.55}
.invitation-page .hero{background:radial-gradient(ellipse at 86% 38%,#8bb7df38,transparent 70%)}
.invitation-page .welcome{background:radial-gradient(ellipse at 48% 38%,#e5f1fc 0%,#c3dcef 48%,#97badc 100%)}
.invitation-page .welcome:before{opacity:.12}
.invitation-page .eyebrow{font-size:16px;letter-spacing:2px;line-height:1.7;color:#476d8c}
.invitation-page .hero .eyebrow{font-size:16px}
.invitation-page .hero-description,.invitation-page .story p,.invitation-page .section-heading>p,.invitation-page .event p:not(.event-time),.invitation-page .details p,.invitation-page .rsvp-copy p,.invitation-page .thanks p{font:400 32px/1.5 var(--serif)}
.invitation-page .hero-description br{display:none}
.invitation-page .story p{max-width:760px;line-height:1.6}
.invitation-page .hero-tagline{font-size:40px}
.invitation-page .hero-date span{font-size:16px;letter-spacing:1px}
.invitation-page .hero-date strong{font-size:64px}
.invitation-page .hero-date{gap:12px}
.invitation-page .button{font-size:20px;letter-spacing:.3px;line-height:1.4;min-height:56px;padding:16px 20px;gap:16px}
.invitation-page .button>span{font-size:25px;flex-shrink:0}
.invitation-page .guest-greeting{font-size:19px;line-height:1.6}
.invitation-page .photo-note{font-size:25px}
.invitation-page .hero-bottom{font-size:12px;letter-spacing:.6px;gap:12px}
.invitation-page .hero-bottom a{font-size:28px}
.invitation-page .nav nav{font-size:15px;gap:24px;letter-spacing:.3px}
.invitation-page .brand span{font-size:12px}
.invitation-page h2{font-size:clamp(40px,4.5vw,58px);line-height:1.18}
.invitation-page .signature{font-size:49px}
.invitation-page .countdown-section{background:radial-gradient(ellipse at 45% 0%,#2f6087,#193b58 75%)}
.invitation-page .countdown-section .eyebrow{color:#c3d9eb}
.invitation-page .countdown span{font-size:14px;letter-spacing:1px}
.invitation-page .countdown-section p{font:400 28px/1.4 var(--serif)}
.invitation-page .event-grid{background:#eaf3fb66;border-color:#9fbed5}
.invitation-page .event-no{font-size:16px;color:#4d7494}
.invitation-page .event h3{font-size:42px}
.invitation-page .event h4{font:500 32px/1.3 var(--serif);margin:15px 0}
.invitation-page .event-time{font-size:43px}
.invitation-page .event-time span{font-size:30px}
.invitation-page .schedule{background:linear-gradient(145deg,#c7deef,#dceaf7)}
.invitation-page .timeline time{font-size:28px;line-height:1.25}
.invitation-page .timeline span{font:400 32px/1.35 var(--serif)}
.invitation-page .timeline small{font:400 19px/1.4 var(--sans);margin-top:8px}
.invitation-page .timeline li{grid-template-columns:150px 1fr;gap:40px;padding:25px 0}
.invitation-page .timeline li:before{left:168px}
.invitation-page .details h3{font-size:39px}
.invitation-page .details p{max-width:480px}
.invitation-page .details .blue-reserved{font:400 28px/1.4 var(--serif);color:#345e7e}
.invitation-page .gift-note{font-size:30px!important;line-height:1.4!important}
.invitation-page .rsvp{background:linear-gradient(135deg,#bfd9ee,#a6c7e2)}
.invitation-page .rsvp-small{max-width:470px}
.invitation-page .deadline{font-size:32px;line-height:1.4}
.invitation-page .rsvp-card{background:#eaf3fbe6;border-color:#8eb0cc}
.invitation-page .field label,.invitation-page legend{font-size:21px;line-height:1.5;margin-bottom:12px}
.invitation-page input:not([type=radio],[type=checkbox]),.invitation-page textarea,.invitation-page select{font-size:22px;line-height:1.5;padding:14px;min-width:0;background:#f1f7fc}
.invitation-page .attendance-options{flex-direction:column;gap:12px}
.invitation-page .attendance-options span{font-size:22px;line-height:1.4;padding:16px 12px 16px 42px;background:#e4eff8}
.invitation-page .attendance-options input{left:16px;width:17px;height:17px}
.invitation-page .privacy-note{font-size:17px;line-height:1.6}
.invitation-page .preview-note,.invitation-page .invitation-note,.invitation-page #formStatus{font-size:18px;line-height:1.5}
.invitation-page .thanks h3{font-size:50px}
.invitation-page .closing p{font-size:17px;letter-spacing:2px}
.invitation-page .closing a{font-size:19px}
.invitation-page footer{font-size:14px;line-height:1.5;padding:26px 50px}
.invitation-page .welcome .eyebrow{font-size:17px;letter-spacing:2px}
.invitation-page .welcome-sub{font-size:18px;letter-spacing:3px}
.invitation-page .welcome .script{font-size:92px}
.invitation-page .open-text{font-size:22px;letter-spacing:1px;line-height:1.4}
.invitation-page .sound-choice{font-size:19px;gap:10px}
.invitation-page .sound-choice input{width:18px;height:18px}
.invitation-page .welcome-date{font-size:18px;letter-spacing:1px}
.ambient-sky{position:fixed;inset:0;z-index:60;overflow:hidden;pointer-events:none;contain:strict}
.ambient-star{position:absolute;border-radius:50%;background:#5d8fbe;box-shadow:0 0 10px 3px #b7dfffaa;opacity:.1;animation:skyTwinkle var(--duration) ease-in-out var(--delay) infinite alternate;will-change:opacity,transform}
.ambient-star:nth-child(3n){background:#e7f5ff;box-shadow:0 0 12px 4px #73a9d566}
.ambient-star:nth-child(4n):before,.ambient-star:nth-child(4n):after{content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:linear-gradient(90deg,transparent,#6098c8,transparent);width:12px;height:1px}
.ambient-star:nth-child(4n):after{width:1px;height:12px;background:linear-gradient(0deg,transparent,#6098c8,transparent)}
@keyframes skyTwinkle{0%,15%{opacity:.035;transform:scale(.65)}80%,100%{opacity:.48;transform:scale(1.12)}}
@media(max-width:800px){
 .invitation-page .hero{padding:45px 24px 30px}
 .invitation-page .hero h1{font-size:96px}
 .invitation-page .hero-tagline{font-size:32px}
 .invitation-page .hero-description,.invitation-page .story p,.invitation-page .section-heading>p,.invitation-page .event p:not(.event-time),.invitation-page .details p,.invitation-page .rsvp-copy p,.invitation-page .thanks p{font-size:32px}
 .invitation-page .hero-date{gap:10px}.invitation-page .hero-date strong{padding:0 14px}
 .invitation-page .hero-date span{font-size:14px}
 .invitation-page .nav{padding:0 20px}.invitation-page .nav nav{gap:18px;font-size:14px}
 .invitation-page .hero-bottom{font-size:10px;letter-spacing:.3px}
 .invitation-page .section{padding:65px 24px}
 .invitation-page .event{padding:35px 18px}
 .invitation-page .countdown{gap:3px}
 .invitation-page .countdown strong{font-size:49px}
 .invitation-page .countdown span{font-size:12px;letter-spacing:0}
 .invitation-page .countdown i{font-size:24px}
 .invitation-page .timeline li{grid-template-columns:95px 1fr;gap:28px}
 .invitation-page .timeline time{font-size:27px}
 .invitation-page .timeline li:before{left:106px}
 .invitation-page .timeline span{font-size:32px}
 .invitation-page .timeline small{font-size:17px}
 .invitation-page .rsvp-card{padding:25px 18px}
 .invitation-page .field label,.invitation-page legend{font-size:21px}
 .invitation-page .closing h2{font-size:38px}
 .invitation-page .welcome-inner{padding:36px 22px}
 .invitation-page .welcome .script{font-size:83px}
 .invitation-page .envelope{margin-top:55px;margin-bottom:34px}
 .invitation-page .welcome-date{font-size:17px;margin-top:25px}
}
@media(max-width:350px){
 .invitation-page .hero h1{font-size:81px}
 .invitation-page .nav nav{font-size:12px;gap:12px}
 .invitation-page .hero-date span{font-size:12px}
 .invitation-page .hero-bottom{font-size:9px;gap:8px}
 .invitation-page .welcome .script{font-size:75px}
 .invitation-page .welcome .eyebrow{font-size:15px}
 .invitation-page .sound-choice{font-size:17px}
 .invitation-page .countdown strong{font-size:42px}
 .invitation-page .countdown span{font-size:11px}
}
@media(prefers-reduced-motion:reduce){.ambient-star{animation:none;opacity:.2;will-change:auto}}

/* Mensaje y nombres proporcionados por la familia. */
.invitation-page .story{padding-bottom:50px}
.invitation-page .story .ornament{margin-top:0}
.invitation-page .story p+p{margin-top:40px}
.invitation-page .family{padding-top:20px;text-align:center;background:linear-gradient(180deg,transparent,#c8deee55)}
.family-grid{display:grid;grid-template-columns:1fr 1fr;gap:36px;max-width:1080px;margin:auto}
.family-card{position:relative;padding:48px 28px;border:1px solid #8fafca;background:#eaf3fb55}
.family-card:before{content:'';position:absolute;inset:8px;border:1px solid #b2c9dc;pointer-events:none}
.invitation-page .family-card h2.script{font:400 clamp(52px,6vw,72px)/1.3 var(--script);letter-spacing:0;color:var(--navy);margin-bottom:26px}
.invitation-page .family-names p{font:400 27px/1.6 var(--sans);color:var(--ink);overflow-wrap:break-word}
.family-pair{margin-top:30px}
.family-heart{width:55px;height:55px;margin:36px auto 0;color:#537c9e;display:block}
@media(max-width:800px){.family-grid{grid-template-columns:1fr;gap:26px}.family-card{padding:40px 22px}.invitation-page .family-card h2.script{font-size:58px}.invitation-page .family-names p{font-size:27px}.invitation-page .family.section{padding-top:10px}.family-pair{margin-top:28px}}
@media(max-width:350px){.family-card{padding:35px 18px}.invitation-page .family-card h2.script{font-size:51px}.invitation-page .family-names p{font-size:24px}}

.invitation-page .hero-description>span{display:block}.invitation-page .hero-description>span+span{margin-top:.45em}

/* Descubrir la invitación al deslizar. El contenido es visible sin JavaScript. */
.reading-progress{position:fixed;top:0;left:0;width:100%;height:3px;z-index:65;background:linear-gradient(90deg,#87b5d7,#244f77,#d1e8fb);transform:scaleX(var(--reading-progress,0));transform-origin:left;pointer-events:none;box-shadow:0 0 10px #669edb55}
.motion-ready #invitation{overflow-x:clip}
.motion-ready .motion-item{opacity:0;transform:translate3d(0,42px,0);transition:opacity 1.05s cubic-bezier(.2,.7,.2,1),transform 1.15s cubic-bezier(.16,1,.3,1),filter 1.1s;transition-delay:var(--reveal-delay,0ms)}
.motion-ready .motion-item.motion-title{filter:blur(5px);transform:translate3d(0,32px,0) scale(.97);transform-origin:center bottom}
.motion-ready .motion-item.motion-card{transform:translate3d(0,55px,0) scale(.96)}
.motion-ready .motion-item.is-visible{opacity:1;transform:translate3d(0,0,0) scale(1);filter:blur(0)}
.motion-ready .hero-portrait .portrait{transform:scale(var(--portrait-zoom,1));transform-origin:50% 70%;transition:transform .15s linear;will-change:transform}
.invitation-page.motion-ready .story-cinematic{max-width:none;padding:0 24px 75px;background:radial-gradient(ellipse at 50% 50%,#e0f0fc99,transparent 72%)}
.motion-ready .story-scene{position:relative;height:190svh;min-height:1100px}
.motion-ready .story-sticky{position:sticky;top:0;min-height:100svh;display:flex;flex-direction:column;justify-content:center;align-items:center;padding:65px 0;margin:auto;max-width:820px}
.invitation-page.motion-ready .story-sticky .scroll-poem{font:400 clamp(36px,4.5vw,58px)/1.35 var(--serif);max-width:800px;margin:15px auto 0;letter-spacing:-.2px}
.poem-word{opacity:var(--word-opacity,1);transition:opacity .12s linear}
.story-after{max-width:800px;margin:0 auto;padding:35px 0 15px;text-align:center}
.invitation-page .story-after p{max-width:700px}
.invitation-page .story-after .signature{margin-top:40px}
.scroll-halo{position:absolute;inset:0;pointer-events:none;overflow:hidden;z-index:0;opacity:.65}
.scroll-halo:before{content:'';position:absolute;inset:-25%;background:radial-gradient(ellipse at 65% 50%,#86b8e755,transparent 58%);transform:translate3d(0,var(--halo-shift,0px),0);will-change:transform}
#invitation>section{position:relative}
#invitation>section>:not(.scroll-halo):not(img){position:relative;z-index:1}
.invitation-page.motion-ready .event{position:relative;overflow:hidden}
.motion-ready .event.is-visible:after{content:'';position:absolute;inset:-15%;pointer-events:none;background:linear-gradient(115deg,transparent 25%,#ffffff44 50%,transparent 75%);transform:translateX(-130%);animation:cardLight 1.9s ease-out .2s both}
@keyframes cardLight{0%{transform:translateX(-130%);opacity:0}25%{opacity:.6}100%{transform:translateX(130%);opacity:0}}
.motion-ready .family-card:before{opacity:0;transform:scale(.92);transition:opacity 1.4s .35s,transform 1.4s .35s}
.motion-ready .family-card.is-visible:before{opacity:1;transform:scale(1)}
.motion-ready .family-heart.is-visible{animation:heartDraw 1.8s ease both}
@keyframes heartDraw{from{stroke-dasharray:150;stroke-dashoffset:150}to{stroke-dasharray:150;stroke-dashoffset:0}}
.motion-ready .timeline{position:relative}
.motion-ready .timeline:before,.motion-ready .timeline:after{content:'';position:absolute;top:0;left:171px;width:1px;background:#91b4cf;pointer-events:none;height:100%;opacity:.45}
.motion-ready .timeline:after{height:calc(100% * var(--timeline-progress,0));background:#315d82;opacity:1;box-shadow:0 0 8px #6598c355}
.motion-ready .timeline li:before{z-index:1;background:#bdd6e9;transition:background .5s,box-shadow .5s}
.motion-ready .timeline li.is-past:before{background:#315d82;box-shadow:0 0 9px #719ecc}
.motion-ready .timeline li.is-past time{color:#214d71}
.motion-ready .closing>.script{transform:translate3d(0,var(--closing-drift,0px),0) scale(var(--closing-scale,1));transform-origin:center}
@media(max-width:800px){
 .motion-ready .story-scene{height:175svh;min-height:1000px}
 .motion-ready .story-sticky{padding:65px 0;min-height:100svh}
 .invitation-page.motion-ready .story-sticky .scroll-poem{font-size:38px;line-height:1.4}
 .motion-ready .timeline:before,.motion-ready .timeline:after{left:109px}
 .invitation-page.motion-ready .story-cinematic{padding-bottom:65px}
}
@media(max-width:350px){.invitation-page.motion-ready .story-sticky .scroll-poem{font-size:34px}}
@media(prefers-reduced-motion:reduce){
 .reading-progress{display:none}
 .motion-ready .motion-item,.motion-ready .motion-item.motion-title,.motion-ready .motion-item.motion-card{opacity:1;transform:none;filter:none;transition:none}
 .motion-ready .story-scene{height:auto;min-height:0}
 .motion-ready .story-sticky{position:static;min-height:0;padding:55px 0 0}
 .poem-word{opacity:1!important;transition:none}
 .motion-ready .hero-portrait .portrait,.scroll-halo:before,.motion-ready .closing>.script{transform:none;will-change:auto}
 .motion-ready .event.is-visible:after{display:none}
 .motion-ready .family-card:before{opacity:1;transform:none;transition:none}
}
@media(max-height:650px) and (max-width:800px){.motion-ready .story-sticky{padding:30px 0}.invitation-page.motion-ready .story-sticky .scroll-poem{font-size:32px;line-height:1.3}.motion-ready .story-sticky .ornament{margin-bottom:12px}}

/* Dos tonos de azul para distinguir cada capítulo. */
.invitation-page{--section-light:linear-gradient(145deg,#e0edf9,#d4e6f5);--section-blue:linear-gradient(145deg,#9dbfdc,#86accd);background:#dcebf8}
.invitation-page #invitation>section{border-top:1px solid #315b7d20}
.invitation-page .hero{background:var(--section-light);border-top:0}
.invitation-page .story-cinematic,.invitation-page.motion-ready .story-cinematic{max-width:none;background:var(--section-blue);--muted:#31516c}
.invitation-page .family,.invitation-page .events,.invitation-page .details,.invitation-page .closing{background:var(--section-light)}
.invitation-page .schedule,.invitation-page .rsvp{background:var(--section-blue);--muted:#31516c}
.invitation-page .story-cinematic .eyebrow,.invitation-page .schedule>.eyebrow,.invitation-page .rsvp .eyebrow{color:#31516c}
.invitation-page .family-names p{font-size:22px;line-height:1.65}
.invitation-page .family-card{background:#eff6fc99}
.invitation-page .family-card:nth-child(2){background:#c8deef88}
@media(max-width:800px){.invitation-page .family-names p{font-size:20px}}
@media(max-width:350px){.invitation-page .family-names p{font-size:19px}}

/* Portada con esfera de espejos y acercamiento antes de descubrir la invitación. */
.invitation-page .welcome{align-items:flex-start;isolation:isolate}
.invitation-page .welcome-inner{margin-top:auto;margin-bottom:auto}
.disco-trigger{display:block;position:relative;width:300px;height:300px;max-width:100%;margin:28px auto 22px;padding:0;border:0;background:none;border-radius:50%;isolation:isolate;transform-origin:50% 52%;transition:transform .95s cubic-bezier(.55,.05,.3,1),filter .95s;z-index:2}
.disco-ball{width:100%;height:100%;position:relative;z-index:1;filter:drop-shadow(0 12px 22px #264f7335);animation:discoFloat 5s ease-in-out infinite}
.disco-aura{position:absolute;inset:8%;border-radius:50%;background:radial-gradient(circle,#f4fbffc0,#8fb8e155 45%,transparent 73%);filter:blur(17px);animation:discoAura 4s ease-in-out infinite}
.disco-spark{position:absolute;z-index:3;color:#f5fbff;text-shadow:0 0 12px #4b86bc88;font:48px/1 var(--serif);pointer-events:none;animation:discoSpark 3.5s ease-in-out infinite alternate}
.disco-spark-one{top:18%;left:10%}.disco-spark-two{bottom:22%;right:7%;font-size:32px;animation-delay:-1.8s}
.disco-trigger:hover{filter:brightness(1.09)}
.invitation-page .welcome.opening{opacity:0;visibility:hidden;transition:opacity .4s ease 1.05s,visibility 0s linear 1.45s;overflow:hidden;pointer-events:none}
.welcome.opening .disco-trigger{transform:none;filter:brightness(1.12)}
.welcome.opening .disco-ball,.welcome.opening .disco-aura,.welcome.opening .disco-spark{animation:none}
.welcome.opening .welcome-inner>.eyebrow,.welcome.opening .welcome-inner>h2,.welcome.opening .welcome-sub,.welcome.opening .open-text,.welcome.opening .sound-choice,.welcome.opening .welcome-date{opacity:0;transition:opacity .22s}
@keyframes discoFloat{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-5px) rotate(2deg)}}
@keyframes discoAura{0%,100%{opacity:.55;transform:scale(.95)}50%{opacity:.9;transform:scale(1.08)}}
@keyframes discoSpark{0%,20%{opacity:.18;transform:scale(.8)}80%,100%{opacity:.85;transform:scale(1.1)}}
@media(max-width:800px){.disco-trigger{width:270px;height:270px;margin-top:24px;margin-bottom:16px}.invitation-page .welcome-inner{padding-top:28px;padding-bottom:28px}}
@media(max-height:700px){.disco-trigger{width:220px;height:220px;margin-top:18px;margin-bottom:12px}.invitation-page .welcome .script{font-size:74px}.invitation-page .welcome-date{margin-top:18px}}
@media(prefers-reduced-motion:reduce){.disco-ball,.disco-aura,.disco-spark{animation:none}.welcome.opening .disco-trigger{transform:none}.invitation-page .welcome.opening{transition:none}}

/* Giro de apertura y foco visible únicamente para navegación con teclado. */
.disco-trigger{outline:none;perspective:900px}
.disco-trigger:focus-visible{outline:3px solid #799fbd;outline-offset:5px}
.hero h1:focus{outline:none}
.welcome.opening .disco-ball{animation:discoOpenSpin 1.35s cubic-bezier(.25,.1,.25,1) both;backface-visibility:visible}
@keyframes discoOpenSpin{from{transform:rotateY(0deg)}to{transform:rotateY(1080deg)}}
@media(prefers-reduced-motion:reduce){.welcome.opening .disco-ball{animation:none}}

/* Los espejos giran sobre una esfera; su silueta permanece redonda. */
.disco-rotation{display:none;position:absolute;inset:0;width:100%;height:100%;z-index:1;pointer-events:none;filter:drop-shadow(0 12px 22px #264f7335)}
.welcome.opening .disco-ball{animation:none;opacity:0}
.welcome.opening .disco-rotation{display:block}
.attire-symbol svg{display:block;width:100px;height:72px;margin:0 auto}
@media(prefers-reduced-motion:reduce){.welcome.opening .disco-ball{opacity:1}.welcome.opening .disco-rotation{display:none}}

/* Retrato recortado con profundidad, luz ambiental y sombra suave. */
.invitation-page .hero-portrait.portrait-cutout{padding:20px 0 0;width:100%;max-width:520px;perspective:1100px;isolation:isolate}
.portrait-cutout:before{content:'';position:absolute;inset:0 -8% 12%;background:radial-gradient(ellipse at 50% 55%,#f1f8ffb0,transparent 68%);filter:blur(12px);z-index:-1;pointer-events:none}
.portrait-depth{position:relative;transform-style:preserve-3d}
.portrait-depth:after{content:'';position:absolute;left:14%;right:5%;height:10%;bottom:-2%;background:radial-gradient(ellipse,#274e7040,transparent 70%);filter:blur(8px);transform:translateZ(-25px);pointer-events:none;z-index:-1}
.invitation-page .portrait-cutout .portrait{display:block;width:100%;height:auto;max-height:none;object-fit:contain;border-radius:0;background:transparent;filter:drop-shadow(9px 18px 12px #193b5833) drop-shadow(0 0 1px #f4fbff80);transform-origin:50% 65%}
.invitation-page.motion-ready .portrait-cutout .portrait{transform:translate3d(0,var(--portrait-drift,0px),25px) rotateY(var(--portrait-tilt,0deg)) scale(var(--portrait-zoom,1));transition:transform .25s ease-out}
.invitation-page .portrait-cutout .photo-note{padding-top:32px;position:relative}
@media(max-width:800px){.invitation-page .hero-portrait.portrait-cutout{max-width:480px;margin:16px auto 0;padding:14px 0 0}.invitation-page .portrait-cutout .photo-note{padding-top:24px}}
@media(prefers-reduced-motion:reduce){.invitation-page.motion-ready .portrait-cutout .portrait{transform:none;transition:none}}

/* Texto moderno y elegante; las familias de los títulos se conservan. */
.invitation-page{--sans:'Manrope',Arial,sans-serif}
.invitation-page .hero-description,.invitation-page .story p,.invitation-page .section-heading>p,.invitation-page .event p:not(.event-time),.invitation-page .details p,.invitation-page .rsvp-copy p,.invitation-page .thanks p,.invitation-page .countdown-section p,.invitation-page .timeline span,.invitation-page .details .blue-reserved{font-family:var(--sans);font-weight:400;letter-spacing:-.5px}
.invitation-page .gift-note{font-family:var(--sans)!important;font-style:normal}
.invitation-page.motion-ready .story-sticky .scroll-poem{font-family:var(--sans);font-weight:400;letter-spacing:-.8px}
/* El nombre conserva su caligrafía continua y recibe un destello plateado. */
.cinematic-name{position:relative;perspective:900px;isolation:isolate}
.name-word{display:inline-block;padding:0 .08em .12em 0;background:linear-gradient(105deg,#193b58 0%,#294f70 32%,#e6f5ff 45%,#5180a5 49%,#193b58 60%,#193b58 100%);background-size:280% 100%;background-position:100% 50%;-webkit-background-clip:text;background-clip:text;color:transparent;transform-origin:35% 65%;}
.name-flare{position:absolute;font:30px/1 var(--serif);left:75%;top:12%;color:#f7fcff;text-shadow:0 0 14px #66a5d8;pointer-events:none;opacity:0}
.cinema-ready:not(.cinema-active) .hero .cine-part,.cinema-ready:not(.cinema-active) .cine-word,.cinema-ready:not(.cinema-active) .name-word{opacity:0}
.cine-word{display:inline-block;transform-origin:50% 100%;will-change:transform,opacity;}
.cinema-active .cine-word{animation:cineWordEntrance 1.2s cubic-bezier(.16,1,.3,1) var(--cine-delay) both}
.cinema-active .cine-part{animation:cineLayerEntrance 1.35s cubic-bezier(.16,1,.3,1) var(--cine-delay) both}
.cinema-active .hero-rule{transform-origin:left;animation-name:cineRuleEntrance}
.cinema-active .name-word{animation:valentinaEntrance 1.85s cubic-bezier(.16,1,.3,1) 200ms both,valentinaShine 2.3s ease 1.35s forwards}
.cinema-active .name-flare{animation:nameFlare 1.7s ease 1.5s both}
.cinema-active .hero-portrait{animation-name:cinePortraitEntrance;transform-origin:50% 65%}
@keyframes cineWordEntrance{0%{opacity:0;transform:translate3d(28px,66px,0) rotate(9deg) scale(.82);filter:blur(9px)}65%{opacity:1;filter:blur(0)}100%{opacity:1;transform:translate3d(0,0,0) rotate(0) scale(1);filter:blur(0)}}
@keyframes cineLayerEntrance{from{opacity:0;transform:translate3d(0,40px,0);filter:blur(5px)}to{opacity:1;transform:translate3d(0,0,0);filter:blur(0)}}
@keyframes cineRuleEntrance{from{opacity:0;transform:scaleX(0)}to{opacity:1;transform:scaleX(1)}}
@keyframes valentinaEntrance{0%{opacity:0;transform:translate3d(-70px,80px,0) rotate(-12deg) rotateY(-35deg) scale(1.22);filter:blur(14px);text-shadow:0 0 30px #c5eaff}65%{opacity:1;filter:blur(0);text-shadow:0 0 18px #c5eaff88}100%{opacity:1;transform:translate3d(0,0,0) rotate(0) rotateY(0) scale(1);filter:blur(0);text-shadow:0 0 0 transparent}}
@keyframes valentinaShine{0%{background-position:100% 50%}100%{background-position:0% 50%}}
@keyframes nameFlare{0%{opacity:0;transform:translateX(-150px) rotate(-80deg) scale(.2)}45%{opacity:1;transform:translateX(-40px) rotate(0) scale(1.2)}100%{opacity:0;transform:translateX(65px) rotate(90deg) scale(.3)}}
@keyframes cinePortraitEntrance{from{opacity:0;transform:translate3d(35px,65px,0) rotate(-5deg) scale(.84);filter:blur(8px)}to{opacity:1;transform:translate3d(0,0,0) rotate(0) scale(1);filter:blur(0)}}
@media(prefers-reduced-motion:reduce){.cinema-ready .hero .cine-part,.cinema-ready .cine-word,.cinema-ready .name-word{animation:none;opacity:1;transform:none;filter:none}.name-word{background:none;color:var(--navy)}.name-flare{display:none}}

.cinematic-name .name-word{padding-top:.18em;padding-left:.035em;margin-top:-.18em;margin-left:-.035em}

/* Cuatro retratos sin marco, integrados en diferentes capítulos. */
.section-portrait{position:relative;isolation:isolate;perspective:1000px;width:100%;margin:45px auto 20px;max-width:400px}
.section-portrait:before{content:'';position:absolute;inset:12% -8% 0;background:radial-gradient(ellipse,#e9f5ff66,transparent 65%);z-index:-1;pointer-events:none}
.section-portrait:after{content:'';position:absolute;bottom:-3%;left:14%;right:10%;height:12%;background:radial-gradient(ellipse,#234b6c33,transparent 68%);filter:blur(10px);z-index:-1;pointer-events:none}
.section-portrait img{display:block;width:100%;height:auto;object-fit:contain;background:transparent;border:0;border-radius:0;filter:drop-shadow(8px 17px 12px #193b5830);transform:translate3d(0,var(--photo-drift,0px),20px) rotateY(var(--photo-turn,0deg));transition:transform .2s ease-out;transform-origin:50% 65%}
.invitation-page .story-with-photo{max-width:1100px;display:grid;grid-template-columns:1.15fr 1fr;gap:55px;align-items:center;padding-top:45px}
.story-with-photo .section-portrait{margin:0 auto;max-width:380px}
.story-message{text-align:center}
.invitation-page .portrait-wide{max-width:720px;margin:45px auto 35px}
.schedule-with-photo{display:grid;grid-template-columns:1.35fr 1fr;gap:65px;align-items:center;max-width:1100px;margin:auto;text-align:left}
.schedule-with-photo .timeline{width:100%;margin:0}
.schedule-with-photo .section-portrait{margin:0 auto;max-width:380px}
.invitation-page .portrait-farewell{max-width:420px;margin:0 auto 65px}
@media(max-width:800px){.invitation-page .story-with-photo,.schedule-with-photo{display:flex;flex-direction:column;gap:35px}.story-with-photo .section-portrait,.schedule-with-photo .section-portrait{width:88%;max-width:330px}.schedule-with-photo .section-portrait{margin-top:20px}.invitation-page .portrait-wide{margin-top:35px;margin-bottom:28px;width:100%}.invitation-page .portrait-farewell{max-width:360px;margin-bottom:45px}}
@media(prefers-reduced-motion:reduce){.section-portrait img{transform:none;transition:none}}

/* Vibración contenida en la portada y movimiento vivo en las fotografías. */
.invitation-page .welcome-name{animation:welcomeTremble 4.8s ease-in-out infinite;transform-origin:50% 60%;will-change:transform}
.welcome.opening .welcome-name{animation:none;will-change:auto}
@keyframes welcomeTremble{0%,15%,100%{transform:translate(0,0) rotate(0);text-shadow:0 0 0 transparent}22%{transform:translate(.45px,-.3px) rotate(.06deg)}27%{transform:translate(-.5px,.2px) rotate(-.08deg)}32%{transform:translate(.55px,-.2px) rotate(.07deg)}37%{transform:translate(-.45px,-.15px) rotate(-.05deg)}42%{transform:translate(.4px,.3px)}47%{transform:translate(-.55px,.1px) rotate(-.07deg)}52%{transform:translate(.55px,-.3px) rotate(.08deg);text-shadow:0 0 10px #7cb7e155}57%{transform:translate(-.5px,.2px) rotate(-.06deg)}62%{transform:translate(.4px,-.2px)}67%{transform:translate(-.35px,.2px) rotate(-.04deg)}75%{transform:translate(0,0) rotate(0);text-shadow:0 0 5px #7cb7e122}}
.portrait-live{position:relative;width:100%;transform-origin:50% 65%;animation:portraitBreathing var(--live-duration,8s) ease-in-out var(--live-delay,0s) infinite;animation-play-state:paused}
.photo-awake .portrait-live{animation-play-state:running}
.section-portrait:nth-of-type(2n) .portrait-live{--live-duration:9s;--live-delay:-3s}
.portrait-cake .portrait-live{--live-duration:8.8s;--live-delay:-2s}
.portrait-wide .portrait-live{--live-duration:10s;--live-delay:-5s}
.portrait-hat .portrait-live{--live-duration:9.5s;--live-delay:-4s}
.portrait-farewell .portrait-live{--live-duration:8.5s;--live-delay:-1s}
@keyframes portraitBreathing{0%,100%{transform:translate3d(0,3px,0) rotate(-.25deg) scale(1)}50%{transform:translate3d(0,-4px,0) rotate(.25deg) scale(1.008)}}
@media(prefers-reduced-motion:reduce){.invitation-page .welcome-name,.portrait-live{animation:none;transform:none;will-change:auto}}

/* Horarios más compactos e ilustración para cada momento. */
.invitation-page .timeline li{grid-template-columns:112px 38px minmax(0,1fr);gap:18px;padding:22px 0}
.invitation-page .timeline time{font-size:24px;line-height:1.35;white-space:nowrap}
.invitation-page .timeline span{font-size:26px;line-height:1.4;letter-spacing:-.35px}
.invitation-page .timeline small{font-size:15px;line-height:1.5}
.schedule-icon{display:block;width:38px;height:38px;color:#315d82}
.invitation-page .timeline li:before{left:118px}
.invitation-page.motion-ready .timeline:before,.invitation-page.motion-ready .timeline:after{left:121px}
@media(max-width:800px){.invitation-page .timeline li{grid-template-columns:92px 32px minmax(0,1fr);gap:14px;padding:20px 0}.invitation-page .timeline time{font-size:22px}.invitation-page .timeline span{font-size:24px}.schedule-icon{width:32px;height:32px}.invitation-page .timeline li:before{left:96px}.invitation-page.motion-ready .timeline:before,.invitation-page.motion-ready .timeline:after{left:99px}}
@media(max-width:350px){.invitation-page .timeline li{grid-template-columns:82px 28px minmax(0,1fr);gap:12px}.invitation-page .timeline time{font-size:20px}.invitation-page .timeline span{font-size:22px}.schedule-icon{width:28px;height:28px}.invitation-page .timeline li:before{left:85px}.invitation-page.motion-ready .timeline:before,.invitation-page.motion-ready .timeline:after{left:88px}}

/* Cuerpo de texto más ligero, manteniendo la escala de los títulos. */
.invitation-page .hero-description,.invitation-page .story p,.invitation-page .section-heading>p,.invitation-page .event p:not(.event-time),.invitation-page .details p,.invitation-page .rsvp-copy p,.invitation-page .thanks p{font-size:24px;line-height:1.65;letter-spacing:-.3px}
.invitation-page.motion-ready .story-sticky .scroll-poem{font-size:32px;line-height:1.5}
.invitation-page .countdown-section p,.invitation-page .details .blue-reserved{font-size:22px;line-height:1.5}
.invitation-page .gift-note{font-size:22px!important;line-height:1.6!important}
.invitation-page .family-names p{font-size:19px;line-height:1.65}
.invitation-page .guest-greeting{font-size:17px}
.invitation-page .photo-note{font-size:20px}
.invitation-page .eyebrow,.invitation-page .hero .eyebrow{font-size:14px}
.invitation-page .button{font-size:17px;min-height:52px;padding:14px 18px}
.invitation-page .field label,.invitation-page legend{font-size:17px}
.invitation-page input:not([type=radio],[type=checkbox]),.invitation-page textarea,.invitation-page select,.invitation-page .attendance-options span{font-size:18px}
.invitation-page .privacy-note{font-size:14px}
.invitation-page .preview-note,.invitation-page .invitation-note,.invitation-page #formStatus{font-size:15px}
.invitation-page .deadline{font-size:26px}
.invitation-page .closing p{font-size:15px}.invitation-page .closing a{font-size:17px}
.invitation-page .welcome .eyebrow{font-size:15px}.invitation-page .open-text{font-size:19px}.invitation-page .sound-choice{font-size:17px}.invitation-page .welcome-sub,.invitation-page .welcome-date{font-size:16px}
.invitation-page .timeline time{font-size:22px}.invitation-page .timeline span{font-size:24px}.invitation-page .timeline small{font-size:14px}
@media(max-width:800px){.invitation-page .hero-description,.invitation-page .story p,.invitation-page .section-heading>p,.invitation-page .event p:not(.event-time),.invitation-page .details p,.invitation-page .rsvp-copy p,.invitation-page .thanks p{font-size:22px}.invitation-page.motion-ready .story-sticky .scroll-poem{font-size:28px}.invitation-page .family-names p{font-size:18px}.invitation-page .countdown-section p,.invitation-page .details .blue-reserved{font-size:20px}.invitation-page .timeline time{font-size:20px}.invitation-page .timeline span{font-size:22px}}
@media(max-width:350px){.invitation-page .timeline time{font-size:19px}.invitation-page .timeline span{font-size:20px}.invitation-page .family-names p{font-size:17px}}
/* Cada horario entra en escena y se ilumina al llegar al centro de lectura. */
.motion-ready .timeline li.motion-item{transform:translate3d(-26px,18px,0);filter:blur(3px);transition-duration:.9s}
.motion-ready .timeline li.motion-item.is-visible{transform:translate3d(0,0,0);filter:blur(0)}
.motion-ready .timeline li{isolation:isolate}
.motion-ready .timeline li:after{content:'';position:absolute;inset:4px -10px;border-radius:8px;background:linear-gradient(100deg,#e2f3ff44,transparent 92%);opacity:var(--row-focus,0);z-index:-1;pointer-events:none;transition:opacity .15s}
.motion-ready .timeline .schedule-icon{transform:translateY(calc((1 - var(--row-focus,0)) * 3px)) scale(calc(1 + var(--row-focus,0) * .1));filter:drop-shadow(0 0 5px #badfff55);transition:transform .18s ease,color .25s}
.motion-ready .timeline li.is-current .schedule-icon{color:#17456b;filter:drop-shadow(0 0 7px #d1ebffb0)}
.motion-ready .timeline li.is-current>span{color:#163c5b}
.motion-ready .timeline li.is-visible .schedule-icon path{stroke-dasharray:180;animation:scheduleDraw 1.3s ease both}
@keyframes scheduleDraw{from{stroke-dashoffset:180;opacity:.2}to{stroke-dashoffset:0;opacity:1}}
@media(prefers-reduced-motion:reduce){.motion-ready .timeline li.motion-item,.motion-ready .timeline .schedule-icon{transform:none;filter:none;transition:none}.motion-ready .timeline li:after{display:none}.motion-ready .timeline li.is-visible .schedule-icon path{animation:none;stroke-dasharray:none}}

.invitation-page .portrait-fashion{max-width:320px;margin:45px auto 35px}.portrait-fashion .portrait-live{--live-duration:10s;--live-delay:-5s}.portrait-programme .portrait-live{--live-duration:9.5s;--live-delay:-4s}.invitation-page .portrait-rsvp{max-width:290px;margin:40px auto 0}.portrait-rsvp .portrait-live{--live-duration:9s;--live-delay:-3s}@media(max-width:800px){.invitation-page .portrait-fashion{max-width:275px}.invitation-page .portrait-rsvp{max-width:270px}}

/* Tómbola de misiones al final de la invitación. */
.invitation-page .role-game{background:var(--section-blue);text-align:center;overflow:hidden}
.invitation-page .role-game .section-heading>p{max-width:650px;margin:22px auto 0}
.tombola-card{max-width:560px;margin:40px auto 0;padding:30px 35px 38px;background:#eff7fbd9;border:1px solid #85a9c7;box-shadow:0 16px 40px #244f7714;position:relative;isolation:isolate}
.tombola-art{width:210px;height:175px;margin:auto;color:#3e6a8d}
.tombola-cage{transform-origin:120px 83px}.tombola-balls{transform-origin:120px 102px}
.is-drawing .tombola-cage{animation:tombolaSpin .65s linear infinite}.is-drawing .tombola-balls{animation:ballsMix .42s ease-in-out infinite alternate}
#roleForm{max-width:400px;margin:12px auto 0;text-align:left}#roleForm .button{width:100%;justify-content:center}
.draw-status{font:400 17px/1.5 var(--sans);color:var(--ink);margin:15px 0 0}.draw-status:empty{display:none}
.role-reel{margin:25px auto 0;min-height:95px;display:flex;align-items:center;justify-content:center;font:400 26px/1.35 var(--serif);color:#426889;filter:blur(.4px)}
.role-result{padding-top:26px;animation:roleReveal .75s cubic-bezier(.16,1,.3,1) both}.role-result h3{font:400 36px/1.2 var(--serif);color:var(--navy);margin:17px 0}.role-result>p{font:400 21px/1.6 var(--sans);color:var(--ink);margin:15px 0}.role-result .role-capture{font-size:15px;color:#56738a;margin:22px 0}.role-result .button{margin-top:3px}
.role-list{max-width:560px;margin:28px auto 0;font-size:17px;color:var(--ink);text-align:left}.role-list summary{cursor:pointer;text-align:center;padding:12px}.role-list ul{padding:20px 20px 20px 40px;margin:12px 0 0;background:#e7f2fb55;border:1px solid #5d86a64d}.role-list li{padding:7px 0;line-height:1.5}
.role-confetti{position:absolute;inset:0;overflow:hidden;pointer-events:none;z-index:3}.role-confetti i{position:absolute;left:var(--x);top:36%;width:6px;height:10px;background:var(--color);border-radius:1px;opacity:0;animation:roleConfetti 1.9s ease-out var(--delay) both}
@keyframes tombolaSpin{to{transform:rotate(360deg)}}@keyframes ballsMix{from{transform:translateY(-6px) rotate(-14deg)}to{transform:translateY(3px) rotate(15deg)}}
@keyframes roleReveal{from{opacity:0;transform:translateY(24px) scale(.95);filter:blur(4px)}to{opacity:1;transform:none;filter:blur(0)}}
@keyframes roleConfetti{0%{opacity:0;transform:translateY(-18px) rotate(0)}15%{opacity:.9}100%{opacity:0;transform:translateY(340px) rotate(320deg)}}
@media(max-width:800px){.tombola-card{padding:25px 20px 30px}.role-result h3{font-size:31px}.role-result>p{font-size:20px}.role-list{font-size:16px}}
@media(prefers-reduced-motion:reduce){.is-drawing .tombola-cage,.is-drawing .tombola-balls,.role-result{animation:none}.role-confetti{display:none}}

.tombola-card .draw-status{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap}

#invitation{overflow-x:clip}.tombola-card{min-width:0}.role-result h3,.role-result>p,.role-list li{overflow-wrap:break-word}

/* Retrato de confirmación junto al borde izquierdo de la sección. */
.invitation-page .portrait-rsvp{margin-left:calc(8px - max(24px, (100vw - 1080px)/2));margin-right:auto}
@media(max-width:800px){.invitation-page .portrait-rsvp{margin-left:-17px}}

/* Firma y frase de la cuenta regresiva más discretas. */
.invitation-page .signature{font-size:36px}
.invitation-page .countdown-section>.eyebrow{font-size:14px;letter-spacing:.6px;white-space:nowrap}
@media(max-width:800px){.invitation-page .signature{font-size:32px}.invitation-page .countdown-section>.eyebrow{font-size:clamp(8px,2.2vw,11px);letter-spacing:.35px}}

/* Primera frase de portada en un solo renglón. */
.invitation-page .hero-description>span:first-child{font-size:20px;white-space:nowrap;letter-spacing:-.3px}
@media(max-width:800px){.invitation-page .hero-description>span:first-child{font-size:clamp(12px,4vw,20px)}}

/* El fondo de la historia termina al pie del retrato recortado. */
.invitation-page .story-cinematic,.invitation-page.motion-ready .story-cinematic{padding-bottom:0;overflow:clip}
.invitation-page .story-with-photo{padding-bottom:0;align-items:end}
.invitation-page .story-with-photo .portrait-cake{margin-bottom:0;aspect-ratio:1159/1335}
.portrait-cake .portrait-live{animation-name:portraitAnchored;transform-origin:50% 100%}
.section-portrait.portrait-cake img{transform:rotateY(var(--photo-turn,0deg));transform-origin:50% 100%}
@keyframes portraitAnchored{0%,100%{transform:scale(1)}50%{transform:scale(1.008)}}
@media(prefers-reduced-motion:reduce){.portrait-cake .portrait-live{animation:none;transform:none}}

/* La cintura coincide con el cambio de fondo y el codo sobresale. */
.invitation-page .story-cinematic,.invitation-page.motion-ready .story-cinematic{overflow:visible;z-index:2}
.portrait-cake .portrait-live{top:14px}

/* Recuerdos compartidos en Instagram. */
.invitation-page .party-hashtag{text-align:center;background:linear-gradient(145deg,#254f72,#173850);color:#edf6ff}.party-hashtag .hashtag-camera{width:56px;height:56px;margin:0 auto 22px;color:#c4dff3}.party-hashtag .eyebrow{color:#c5dced}.party-hashtag h2{margin:20px auto 24px}.party-hashtag p{font:400 22px/1.65 var(--sans);color:#d1e3ef;max-width:600px;margin:auto}.party-hashtag .hashtag-name{display:inline-block;margin:20px 0 24px;font:500 clamp(32px,6vw,54px)/1.3 var(--sans);letter-spacing:-1px;text-decoration:none;color:#f1f8ff;text-shadow:0 0 25px #8dc9f544}.hashtag-name:hover{color:#c7e5fa}.party-hashtag .hashtag-note{font-size:18px}.party-hashtag .button{margin-top:28px}.party-hashtag .hashtag-status{min-height:28px;margin-top:12px;font-size:15px}@media(max-width:800px){.party-hashtag p{font-size:20px}.party-hashtag .hashtag-note{font-size:17px}.party-hashtag .hashtag-status{font-size:15px}}

/* Detalles personales pequeños junto a cada nombre. */
.invitation-page .family-names p{display:flex;justify-content:center;align-items:baseline;gap:6px}.family-names p>span{min-width:0}.family-detail{display:inline-block;flex:0 0 16px;width:16px;height:16px;position:relative;top:2px;color:var(--navy)}.family-detail-crest{object-fit:contain;height:18px;top:3px}
.invitation-page .details .blue-reserved{font-size:16px;white-space:nowrap;letter-spacing:-.3px;display:flex;align-items:center;justify-content:center;gap:6px}.invitation-page .details .blue-reserved>span{flex:0 0 8px;width:8px;height:8px;margin:0}
@media(max-width:800px){.invitation-page .details .blue-reserved{font-size:clamp(11px,3.2vw,16px)}}

.invitation-page .family-names p{display:block}.family-detail{margin-right:6px;vertical-align:baseline}

/* Bandera discreta y premio de la tómbola en dorado. */
.family-detail.family-detail-flag{width:12px;height:9px;top:0;margin-right:5px}
.role-result h3{color:#875114;background:linear-gradient(135deg,#fff8e6,#f2d590);border:1px solid #cba35b;border-radius:14px;padding:18px 14px;box-shadow:0 5px 20px #b2803626;text-shadow:0 1px 0 #fff9e9}

/* Aviso destacado: el azul claro está reservado para Valentina. */
.invitation-page .details .blue-reserved{font-size:20px;font-weight:600;color:#193b58;background:#f5faff;border:1px solid #6d96b8;border-radius:9px;padding:12px 6px;letter-spacing:-.4px}
@media(max-width:800px){.invitation-page .details .blue-reserved{font-size:clamp(12px,4vw,20px);width:calc(100% + 30px);margin-left:-15px;margin-right:-15px}}

.gift-envelope svg{display:block;width:64px;height:48px;margin:auto;color:var(--navy)}

/* Foto del vestido al ras del siguiente capítulo. */
.invitation-page .events{padding-bottom:0;overflow:clip}
.invitation-page .events .portrait-fashion{margin:45px auto 0}
.portrait-fashion .portrait-live{animation-name:portraitAnchored;transform-origin:50% 100%}
.section-portrait.portrait-fashion img{transform:rotateY(var(--photo-turn,0deg));transform-origin:50% 100%}

.personal-tickets{margin:0 0 24px;padding:20px;border:1px solid var(--line);background:#edf4f8}.personal-tickets h3{font-family:var(--serif);font-size:26px;margin:0 0 12px}.personal-tickets p{font-size:14px;line-height:1.6}.ticket-person{display:grid;gap:8px;padding:16px 0;border-bottom:1px solid var(--line)}.ticket-person label{font-size:17px;font-weight:600}.ticket-person select{width:100%}.personal-tickets .ticket-limit{font-weight:600;margin-top:16px}
