:root{--rose:#cab899;--dusky:#c2ad88;--pearl:#e3ddd2;--champagne:#d4c8b4;--darkrose:#79694e;--berry:#6d5d42;--ink:#6c5e45;--muted:#958260;--pale:#fcf9f4;--offwhite:#fffcf7;--gold:#aa9879;--serif:'Cormorant Garamond',Georgia,serif;--sans:'DM Sans',Arial,sans-serif;--script:'Great Vibes','Brush Script MT',cursive}
*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:#f7f1e8;font-family:var(--sans);font-size:14px;overflow-x:hidden;-webkit-font-smoothing:antialiased}body.intro-open{overflow:hidden}button,input,select{font:inherit}button{cursor:pointer}a{text-decoration:none;color:inherit}img{max-width:100%;display:block}::selection{color:#64553c;background:#ede0c9}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #897552;outline-offset:3px}.script{font-family:var(--script);font-weight:400}.eyebrow,.chapter-meta,.card-kicker{font-size:10px;letter-spacing:.24em;line-height:1.6;font-weight:500;color:#9d8966}.section-heading{font:400 clamp(49px,10vw,79px)/1.08 var(--serif);margin:12px 0 36px}.section-heading em,.chapter-title em{font-style:italic;color:#a3906f}.content-width{max-width:590px;margin:0 auto;position:relative}.reveal{opacity:0;transform:translateY(30px);transition:opacity 1.2s cubic-bezier(.2,.65,.2,1),transform 1.2s cubic-bezier(.2,.65,.2,1)}.reveal.visible{opacity:1;transform:translateY(0)}
/* Material silk texture: three slowly drifting translucent satin folds + fine lines. */
.silk-scene{position:fixed;inset:0;pointer-events:none;overflow:hidden;z-index:-1;background:#eae1d1}.silk-base{position:absolute;inset:-14%;background:radial-gradient(ellipse 65% 44% at 24% 19%,#fffaf1c9,transparent 83%),radial-gradient(ellipse 62% 41% at 86% 75%,#ad997791,transparent 81%),linear-gradient(135deg,#e6dbc7,#faf5ec 31%,#d1c0a3 66%,#f6ebd8);animation:satin-drift 19s ease-in-out infinite alternate}.silk-fold{position:absolute;inset:-25%;border-radius:45%;filter:blur(38px);mix-blend-mode:screen;opacity:.46;will-change:transform}.silk-fold-1{background:linear-gradient(115deg,transparent 24%,#fffefa 40%,transparent 49%,#fffaef 59%,transparent 74%);transform:rotate(-13deg);animation:fold-one 18s ease-in-out infinite alternate}.silk-fold-2{background:linear-gradient(140deg,transparent 20%,#fffbf4 37%,transparent 47%,#fff6e3 54%,transparent 71%);animation:fold-two 23s ease-in-out infinite alternate}.silk-fold-3{background:linear-gradient(106deg,transparent 16%,#fff 39%,transparent 47%,#f5e6cc 62%,transparent 80%);opacity:.28;animation:fold-one 27s ease-in-out infinite alternate-reverse}.silk-threads{position:absolute;inset:0;width:100%;height:100%;opacity:.8;animation:threads 25s ease-in-out infinite alternate}.silk-threads path{stroke:url(#satinStroke);stroke-width:6;fill:none;stroke-linecap:round}.grain{position:absolute;inset:0;opacity:.12;background-image:url('media/grain.svg');background-size:175px 175px;mix-blend-mode:multiply}.sparkle-field{position:absolute;inset:0}.sparkle{position:absolute;left:var(--x);top:var(--y);width:var(--d);height:var(--d);color:#fffdf6;opacity:0;filter:drop-shadow(0 0 7px #fffaf0);animation:twinkle var(--dur) ease-in-out var(--delay) infinite}.sparkle.dot{background:#fff9ee;box-shadow:0 0 9px 3px #fff7ed73;border-radius:50%}.sparkle.star:before,.sparkle.star:after{content:'';position:absolute;left:50%;top:50%;transform:translate(-50%,-50%);background:linear-gradient(90deg,transparent,#fffbf5 35%,white 50%,#fffbf5 65%,transparent);border-radius:100%}.sparkle.star:before{width:calc(var(--d) * 4);height:1px}.sparkle.star:after{width:1px;height:calc(var(--d) * 4);background:linear-gradient(180deg,transparent,#fffbf5 35%,white 50%,#fffbf5 65%,transparent)}
@keyframes satin-drift{to{transform:translate(4%,3%) scale(1.06) rotate(2deg)}}@keyframes fold-one{to{transform:translate(11%,-8%) rotate(2deg) scale(1.09)}}@keyframes fold-two{to{transform:translate(-8%,9%) rotate(8deg) scale(1.08)}}@keyframes threads{to{transform:translateY(5%) skewY(-3deg)}}@keyframes twinkle{0%,100%{opacity:0;transform:translateY(9px) scale(.5)}35%,65%{opacity:var(--opacity);transform:translateY(0) scale(1)}85%{opacity:0;transform:translateY(-12px) scale(.8)}}
/* Ornamental invitation envelope */
.envelope{position:fixed;inset:0;z-index:50;display:grid;place-items:center;padding:15px;background:radial-gradient(ellipse at 50% 45%,#fff8f0e0,#cebd9fe5);backdrop-filter:blur(10px);transition:opacity 1.1s ease,visibility 1.1s ease}.envelope.closed{opacity:0;visibility:hidden;pointer-events:none}.envelope-inner{position:relative;width:min(100%,450px);height:min(790px,calc(100dvh - 30px));display:flex;align-items:center;justify-content:center;flex-direction:column;background:linear-gradient(142deg,#fcf8f5ed,#f5eee2eb 52%,#fcf8f1eb);border:1px solid #fffbf3;box-shadow:0 24px 70px #78644351,inset 0 0 0 12px #fffcf63b;text-align:center;padding:36px 20px;overflow:hidden}.envelope-inner:before,.envelope-inner:after{position:absolute;content:'';width:75%;height:34%;pointer-events:none;border:1px solid #cfbfa350;border-radius:50%;filter:blur(.1px)}.envelope-inner:before{top:-26%;left:-19%;transform:rotate(-16deg)}.envelope-inner:after{bottom:-27%;right:-22%;transform:rotate(-18deg)}.envelope-line{position:absolute;inset:13px;border:1px solid #b5a48775;pointer-events:none}.corner-flower{position:absolute;width:clamp(105px,32vw,152px);height:clamp(105px,32vw,152px);color:#aa9879;opacity:.7;pointer-events:none}.flower-tl{top:18px;left:18px;transform:rotate(90deg)}.flower-br{bottom:18px;right:18px;transform:rotate(-90deg)}.opening-eyebrow{font-size:10px;letter-spacing:.24em;color:#927f5e;margin:0 0 14px}.envelope-star{font-size:21px;color:#bcad94}.opening-xv{font:400 clamp(92px,22vw,127px)/1 var(--serif);color:#ad9b7d;margin:13px 0 0}.opening-name{font-size:clamp(75px,18vw,112px);line-height:1;margin:-18px 0 3px;color:#867352;text-shadow:0 2px #fff9ef}.fine-divider{display:flex;align-items:center;justify-content:center;gap:12px;color:#b6a68c;margin:7px auto 18px}.fine-divider span{display:inline-block;width:60px;height:1px;background:linear-gradient(90deg,transparent,#c7b79c)}.fine-divider span:last-child{transform:rotate(180deg)}.fine-divider i{font-style:normal;font-size:14px}.opening-date{font:500 12px var(--sans);letter-spacing:.24em;color:#968260}.opening-note{font:italic 22px var(--serif);color:#9a8663;margin:15px 0 28px}.opening-btn{position:relative;z-index:2;min-width:225px}.opening-footer{font-size:9px;letter-spacing:.25em;position:absolute;bottom:48px;color:#af9e82}
.btn{display:inline-flex;justify-content:center;align-items:center;gap:19px;min-height:49px;padding:14px 24px;border:1px solid #a69474;text-transform:uppercase;font-weight:500;font-size:10px;letter-spacing:.13em;transition:background .25s,transform .25s,color .25s,box-shadow .25s}.btn:hover{transform:translateY(-2px);box-shadow:0 6px 17px #9c886524}.btn span{font-size:16px;line-height:1}.btn-filled{background:#998562;color:#fffcf8;border-color:#998562}.btn-filled:hover{background:#837153}.btn-outline{background:#fffcf89a;color:#867456}.btn-outline:hover{background:#fffaf1}
.topbar{position:fixed;z-index:20;top:0;left:0;right:0;display:flex;align-items:center;justify-content:space-between;padding:13px max(25px,calc((100vw - 1020px)/2));background:#f8f4edc9;backdrop-filter:blur(19px);border-bottom:1px solid #ffffffa3;box-shadow:0 8px 30px #806e500b;opacity:0;transform:translateY(-100%);transition:opacity .7s,transform .7s}.topbar.visible{opacity:1;transform:none}.brand{color:#867353;font-size:32px;line-height:1.1}.top-rsvp{font-size:9px;letter-spacing:.18em;color:#847254}.top-rsvp span{font-size:14px;margin-left:5px}.top-rsvp:hover{color:#bdaa89}
/* Two-chapter editorial journey */
.chapter{position:relative;overflow:hidden;text-align:center;padding:115px 18px 105px;background:linear-gradient(180deg,#fcf8f2cf 0%,#f9f5edbd 54%,#f8f3ebda 100%)}.first-chapter{padding-top:130px;background:linear-gradient(180deg,#f9f4eccb 0%,#fdfaf4dc 65%,#f3ecdfb8)}.second-chapter{background:linear-gradient(180deg,#efe5d5b8 0%,#fffbf4c9 53%,#faf4ebc9 100%)}.chapter-inner{position:relative;max-width:720px;margin:0 auto;z-index:2}.chapter-meta{display:flex;align-items:center;justify-content:center;gap:13px;letter-spacing:.29em;margin-bottom:29px;font-size:9px;color:#a99778}.mini-line{width:27px;height:1px;background:#bdb099}.chapter-title{font:400 clamp(40px,9.5vw,64px)/1.05 var(--serif);max-width:600px;margin:9px auto 36px;letter-spacing:-.017em}.chapter-title em{display:block}.arched-frame{position:relative;max-width:420px;margin:0 auto}.arch-edge{padding:8px;border:1px solid #c8b9a0;border-radius:210px 210px 12px 12px;background:#fdfbf7;box-shadow:0 15px 65px #917d5c40,0 0 0 9px #fffaf280;aspect-ratio: .77;overflow:hidden}.arch-edge img{height:100%;width:100%;object-fit:cover;object-position:center center;border-radius:202px 202px 7px 7px}.childhood-frame .arch-edge img{object-position:48% 25%}.now-frame .arch-edge img{object-position:50% 35%}.arched-frame:before,.arched-frame:after{content:'✦';position:absolute;color:#bbab90;text-shadow:0 0 9px #fff;z-index:2;font-size:20px}.arched-frame:before{top:32%;left:-38px}.arched-frame:after{top:55%;right:-39px;font-size:11px}.arched-frame figcaption{font:italic 21px var(--serif);margin:30px 0 0;color:#9c8764}.floral-divider{margin:28px 0 10px;color:#bcac90;font:34px var(--serif)}.storyline,.invitation-verse{font:italic clamp(23px,4.5vw,30px)/1.45 var(--serif);max-width:540px;margin:12px auto;color:#857355}.scroll-cue{margin-top:44px;font-size:9px;letter-spacing:.2em;color:#b0a084}.scroll-cue span{display:block;font-size:22px;margin-top:10px;animation:bounce 2.6s ease-in-out infinite}@keyframes bounce{50%{transform:translateY(7px)}}.interlude{background:linear-gradient(180deg,#f3ecdfbb,#efe5d5b8);height:142px;display:grid;place-content:center}.interlude-ring{width:63px;height:63px;border-radius:50%;border:1px solid #bbab90;display:grid;place-items:center;box-shadow:0 0 0 10px #faf5ed70;color:#ae9c7c;font-size:28px}.interlude-trail{position:absolute;left:50%;top:96px;height:45px;width:1px;background:#bcae97}.now-frame{max-width:456px}.xv-monogram{display:flex;align-items:center;justify-content:center;gap:20px;margin:40px 0 -13px;color:#aa9879}.xv-monogram span{font-size:11px;letter-spacing:.2em}.xv-monogram strong{font:400 82px/1 var(--serif);color:#877557}.mariajose-sign{font-size:clamp(105px,24vw,152px);color:#8a7758;line-height:1;margin:4px 0 0}.invitation-verse{max-width:555px;padding:0 12px;margin:20px auto 35px}.date-lockup{display:flex;align-items:center;justify-content:center;gap:22px;color:#8e7b5a;margin:40px auto 5px}.date-lockup strong{font:400 113px/.9 var(--serif);border-right:1px solid #c5b8a1;border-left:1px solid #c5b8a1;padding:0 18px}.date-lockup span{font-size:10px;letter-spacing:.23em;text-align:left;line-height:2.2}.date-lockup span:first-child{text-align:right}
/* Details, countdown, RSVP */
.countdown-section{position:relative;padding:98px 18px 105px;text-align:center;background:#f8f1e6c6;border-top:1px solid #fffbf480;border-bottom:1px solid #fffbf480}.count-grid{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));max-width:560px;margin:25px auto 27px}.count-cell{display:flex;flex-direction:column;align-items:center;justify-content:center;padding:14px 4px;border-right:1px solid #cabda6}.count-cell:last-child{border:none}.count-cell span{font:400 clamp(39px,9.8vw,71px)/1 var(--serif);color:#837153;font-variant-numeric:tabular-nums}.count-cell small{font-size:9px;letter-spacing:.16em;margin-top:15px;color:#a18d6c}.count-message{font:italic 24px var(--serif);color:#a38f6e}.places-section{position:relative;text-align:center;padding:104px 18px 110px;background:linear-gradient(180deg,#fdf7f1d6,#f6eee1dc)}.place-card{background:#fffdf9d8;border:1px solid #d5c8b2;padding:36px 24px 40px;max-width:510px;margin:0 auto;box-shadow:0 12px 45px #96825f23;position:relative}.place-card:before{content:'';position:absolute;inset:8px;border:1px solid #efe6d8;pointer-events:none}.place-symbol{width:65px;margin:0 auto 8px;color:#a89576}.place-symbol svg{width:100%;height:65px}.card-kicker{letter-spacing:.2em;font-size:9px}.place-card h3{font:400 47px/1.05 var(--serif);margin:10px auto 9px;color:#806f52}.place-time{font:italic 31px var(--serif);color:#9e8a67;margin:10px 0 15px}.place-address{font:400 12px/1.85 var(--sans);color:#8f7c5b;margin:0 0 22px}.card-connector{height:95px;display:grid;place-items:center;position:relative;color:#b4a489}.card-connector:before{content:'';position:absolute;top:0;bottom:0;width:1px;background:linear-gradient(180deg,#d8c8ad,transparent,#d8c8ad)}.card-connector i{font:normal 17px var(--serif);z-index:1;padding:6px;background:#f8f3eb}
.rsvp-section{text-align:center;padding:112px 18px 126px;background:radial-gradient(ellipse at 50% 10%,#fffbf6df 0%,#eee4d4e3 100%)}.rsvp-sparkle{font-size:38px;color:#b4a489}.rsvp-section .section-heading{margin:12px 0 16px}.rsvp-intro{font:italic 24px/1.45 var(--serif);color:#9c8764;margin:10px auto 34px}.rsvp-form{text-align:left;margin:0 auto;max-width:430px;padding:28px 30px 26px;background:#fffdfbce;border:1px solid #cfc1a9;box-shadow:0 14px 50px #7f6e511a}.rsvp-form label{display:block;font-size:10px;letter-spacing:.15em;font-weight:600;color:#978361;margin:16px 0 10px}.rsvp-form input,.rsvp-form select{display:block;width:100%;min-height:46px;padding:12px 13px;border:1px solid #ded5c6;color:#726349;background:#fffdf9;border-radius:0;outline:none}.rsvp-form input:focus,.rsvp-form select:focus{border-color:#a79576;box-shadow:0 0 0 2px #d9cbb422}.rsvp-submit{width:100%;margin-top:25px;font-size:9px;gap:10px;padding-left:10px;padding-right:10px}.rsvp-footnote{font-size:11px;line-height:1.7;text-align:center;color:#a38f6e;margin:17px 0 12px}.copy-rsvp{display:block;margin:0 auto;color:#8a7758;text-decoration:underline;text-underline-offset:3px;font-size:11px;background:none;border:0;padding:6px}.form-message{text-align:center;font-size:12px;color:#857354;line-height:1.55;min-height:1.3em}.footer{text-align:center;padding:70px 15px 105px;background:#897758;color:#fffbf4}.footer-stars{opacity:.85;font-size:20px}.footer p{font-size:10px;letter-spacing:.25em;margin:26px 0 5px}.footer-name{font-size:93px;line-height:1.2}.footer-date{opacity:.85}.bottom-nav{position:fixed;bottom:14px;left:50%;transform:translate(-50%,calc(100% + 45px));opacity:0;transition:transform .5s,opacity .5s;display:flex;gap:0;align-items:center;justify-content:center;z-index:19;min-width:278px;border:1px solid #fdf7eea8;box-shadow:0 6px 24px #806f5140;background:#877557e5;backdrop-filter:blur(14px);border-radius:999px;padding:15px 20px;color:white}.bottom-nav.visible{opacity:1;transform:translate(-50%,0)}.bottom-nav a{font-size:10px;letter-spacing:.14em;display:flex;align-items:center;gap:9px}.bottom-nav a span{font-size:16px;line-height:.7}.bottom-divider{width:1px;height:14px;background:#f5ebdb7a;margin:0 21px}
@media(min-width:770px){.chapter{padding-bottom:145px}.first-chapter{padding-top:140px}.second-chapter{padding-top:120px}.envelope-inner{height:min(790px,calc(100dvh - 40px))}}
@media(max-width:520px){.chapter{padding:103px 21px 84px}.first-chapter{padding-top:118px}.chapter-title{margin-bottom:31px}.chapter-meta{margin-bottom:24px}.arch-edge{aspect-ratio:.78;padding:7px}.arched-frame:before{left:-18px}.arched-frame:after{right:-20px}.storyline{font-size:22px}.opening-date{font-size:10px}.opening-note{font-size:21px}.opening-footer{bottom:35px}.envelope-inner{padding:20px 25px}.corner-flower{opacity:.56}.places-section{padding:90px 20px}.place-card{padding:30px 16px 34px}.rsvp-section{padding:92px 16px 120px}.rsvp-form{padding:23px 22px}.date-lockup{gap:12px}.date-lockup strong{font-size:91px;padding:0 13px}.date-lockup span{font-size:9px}.now-frame{max-width:370px}.footer{padding-bottom:110px}}
@media(max-height:700px){.opening-xv{font-size:75px;margin:0}.opening-name{font-size:77px}.opening-note{margin:8px 0 16px}.opening-footer{bottom:26px}.opening-eyebrow{font-size:9px}.opening-btn{min-height:43px}.envelope-inner{height:calc(100dvh - 20px)}.envelope{padding:10px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important;scroll-behavior:auto!important}.reveal{opacity:1;transform:none}.silk-fold{will-change:auto}}
/* Keep the silk texture visible through translucent page sections. */
.silk-scene{z-index:0}
main{position:relative;z-index:1}


/* ═══ PERSONALIZACIÓN: VIDEO MP4 Y ADORNOS FLOTANTES ═══ */
.silk-scene{isolation:isolate}
.silk-base{z-index:0}
.texture-video-frame{position:absolute;inset:0;z-index:1;overflow:hidden;opacity:0;transition:opacity 1.4s ease;will-change:opacity;filter:saturate(.78)}
.texture-video-frame.ready{opacity:var(--video-strength,.48)}
.texture-video-frame video{width:100%;height:100%;object-fit:cover;object-position:center;display:block;transform:scale(1.04)}
.silk-fold,.silk-threads{z-index:2}
.sparkle-field{z-index:3}
.grain{z-index:4}
.floating-decor{position:fixed;inset:0;z-index:2;overflow:hidden;pointer-events:none;contain:layout paint}
.float-item{position:absolute;top:0;left:var(--fx);width:var(--size);height:var(--size);opacity:0;object-fit:contain;filter:drop-shadow(0 1px 6px #fff6ed8a);will-change:transform;animation:mariajose-float var(--time) linear var(--delay) infinite}
@keyframes mariajose-float{
  0%{transform:translate3d(-12px,110dvh,0) rotate(-24deg) scale(.76);opacity:0}
  12%{opacity:var(--float-alpha)}
  85%{opacity:var(--float-alpha)}
  100%{transform:translate3d(34px,-18dvh,0) rotate(48deg) scale(1.04);opacity:0}
}
.chapter-inner,.countdown-section .content-width,.places-section .content-width,.rsvp-section .content-width{z-index:3}
@media(prefers-reduced-motion:reduce){.float-item{display:none}.texture-video-frame{display:none}}


/* ═════════════════════════════════════════════════════════════
   AJUSTE SOLICITADO · ROSA 15% / VIDEO 90%
   Cambia ROSA.opacidad y VIDEO.intensidad en personalizar.js.
   Usamos una sola capa rosa translúcida; ya no tapa el video.
   ═════════════════════════════════════════════════════════════ */
:root { --rosa-alpha: .15; }

/* Para que al abrir la página se vea SOLO la textura en loop
   detrás de la portada, no la primera sección con la foto. */
body.intro-open main { visibility: hidden; }

/* Portada: antes tenía un degradado opaco y 10 px de desenfoque. */
.envelope {
  background: rgba(246, 218, 222, var(--rosa-alpha));
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
}
.envelope-inner {
  background: rgba(255, 250, 248, .04);
  -webkit-backdrop-filter: none;
  backdrop-filter: none;
  box-shadow: 0 24px 70px #78644330, inset 0 0 0 12px #fffcf626;
}
.envelope-inner .opening-xv,
.envelope-inner .opening-name,
.envelope-inner .opening-note,
.envelope-inner .opening-date,
.envelope-inner .opening-eyebrow {
  text-shadow: 0 1px 9px rgba(255,250,247,.67);
}

/* Secciones: todas las veladuras rosas al 15%. */
.chapter,
.first-chapter,
.second-chapter,
.interlude,
.countdown-section,
.places-section,
.rsvp-section {
  background: rgba(246, 218, 222, var(--rosa-alpha));
}

/* Los efectos de seda CSS se mantienen pero no compiten con el MP4. */
.silk-fold { opacity: .12; }
.silk-fold-3 { opacity: .075; }
.silk-threads { opacity: .20; }
.grain { opacity: .09; }

/* Mantener buena legibilidad frente a un video de textura animada. */
.chapter-title, .section-heading, .storyline, .invitation-verse,
.chapter-meta, .eyebrow, .count-message, .rsvp-intro {
  text-shadow: 0 1px 10px rgba(255, 249, 245, .74);
}

/* Fondo optimizado con poster inmediato y MP4 en loop. */
.texture-video-frame {
  background: #e7d2ae url('media/fondo-poster.jpg') center center/cover no-repeat;
  opacity: var(--video-strength,.90);
}
.texture-video-frame.ready {opacity:var(--video-strength,.90);}
.texture-video-frame video {background: transparent;}


/* ═══ Itinerario ═══ */
.itinerary-section{position:relative;text-align:center;padding:104px 18px 110px;background:linear-gradient(180deg,#fffbf4d6,#f6eee0d8)}
.itinerary-list{max-width:560px;margin:34px auto 0;display:grid;gap:18px}
.itinerary-item{display:grid;grid-template-columns:78px 1fr;align-items:center;gap:18px;background:#fffdf9d8;border:1px solid #d8cbb4;box-shadow:0 12px 42px #96825f20;padding:22px 22px;position:relative;text-align:left}
.itinerary-item:before{content:'';position:absolute;inset:8px;border:1px solid #efe7d9;pointer-events:none}
.itinerary-icon{width:58px;height:58px;border-radius:999px;display:grid;place-items:center;margin:0 auto;color:#a89678;background:#fffbf5;box-shadow:0 0 0 1px #eae0cf inset,0 8px 24px #ae9d801f}
.itinerary-icon svg{width:34px;height:34px}
.itinerary-copy{position:relative;z-index:1}
.itinerary-time{margin:0 0 6px;font:italic 25px/1 var(--serif);color:#9c8764}
.itinerary-item h3{margin:0;font:400 36px/1.02 var(--serif);color:#806f52}

/* ═══ Música de fondo ═══ */
.music-toggle{position:fixed;right:14px;bottom:84px;z-index:22;display:flex;align-items:center;gap:9px;padding:12px 16px;border-radius:999px;border:1px solid #fdf7eea8;background:#877557e8;color:#fff;box-shadow:0 10px 28px #806f5135;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);font-size:10px;letter-spacing:.16em}
.music-toggle .music-icon{font-size:16px;line-height:1}
.music-toggle.playing .music-icon{animation:musicPulse 1.4s ease-in-out infinite}
.music-toggle.disabled{opacity:.55}
@keyframes musicPulse{0%,100%{transform:scale(1)}50%{transform:scale(1.18)}}

@media(max-width:520px){
  .itinerary-section{padding:90px 20px}
  .itinerary-item{grid-template-columns:66px 1fr;padding:18px 16px;gap:14px}
  .itinerary-icon{width:50px;height:50px}
  .itinerary-icon svg{width:28px;height:28px}
  .itinerary-time{font-size:22px}
  .itinerary-item h3{font-size:31px}
  .music-toggle{bottom:84px;right:10px;padding:11px 14px}
}


/* ══════════════════════════════════════════════════════════════
   SECCIONES ADICIONALES · Regalos, vestimenta y aviso sin niños.
   Mantienen estética blush, satín y champagne de Mariajose.
   ══════════════════════════════════════════════════════════════ */
.courtesy-section,.dresscode-section,.no-kids-section{position:relative;text-align:center;padding:96px 18px 106px;background:rgba(246,218,222,var(--rosa-alpha,.15))}
.courtesy-section:before,.dresscode-section:before,.no-kids-section:before{content:'';height:1px;position:absolute;top:0;left:12%;right:12%;background:linear-gradient(90deg,transparent,#b8a88e80,transparent)}
.courtesy-flourish{font:20px var(--serif);letter-spacing:.24em;color:#af9e82;margin-bottom:23px;opacity:.9}
.courtesy-section .section-heading,.dresscode-section .section-heading{margin:9px auto 27px}
.courtesy-description{max-width:510px;margin:0 auto 34px;font:italic clamp(23px,4vw,31px)/1.4 var(--serif);color:#847355;text-shadow:0 1px 10px #fffbf5b8}
.courtesy-card{max-width:375px;margin:0 auto;background:rgba(255,250,248,.72);border:1px solid #d4c5ac;box-shadow:0 14px 42px #88765620;position:relative;padding:27px 24px 38px}
.courtesy-card:before{content:'';position:absolute;inset:8px;border:1px solid #ece4d6;pointer-events:none}
.courtesy-icon{width:122px;height:122px;margin:0 auto 7px;color:#a69475}
.courtesy-card h3{font:400 clamp(32px,7vw,44px)/1.08 var(--serif);color:#847355;margin:0}
.courtesy-card-sparkle{position:absolute;right:19px;top:13px;color:#c4b7a2;font-size:29px}
.courtesy-soft-stars{color:#bdaf96;letter-spacing:.27em;margin-top:29px}
.dresscode-section{padding-top:100px;padding-bottom:100px}
.outfit-symbols{display:flex;align-items:center;justify-content:center;margin:18px auto 24px;color:#a08c6a}
.dresscode-icon-wrap{display:inline-flex;align-items:center;justify-content:center;padding:18px 22px;background:rgba(255,250,248,.55);border:1px solid #dcd2c0;box-shadow:0 12px 34px #8f7c5b20}
.dresscode-icon-wrap:before{content:"";position:absolute}
.dresscode-icon-img{display:block;width:220px;max-width:72vw;height:auto;filter:drop-shadow(0 2px 8px #fffbf3)}
.dresscode-main{font:500 clamp(31px,7vw,45px)/1 var(--serif);letter-spacing:.21em;color:#877557;margin:20px auto 15px}
.dresscode-section .fine-divider{max-width:220px;margin:10px auto}
.dresscode-subtitle{font:italic 24px/1.4 var(--serif);color:#978361;margin:17px auto 0}
.dresscode-note{max-width:520px;margin:16px auto 0;font:400 clamp(18px,4.5vw,26px)/1.5 var(--serif);color:#897758;text-shadow:0 1px 8px #fffbf5a8}
.no-kids-section{padding:70px 18px 80px}
.no-kids-rule{display:flex;justify-content:center;align-items:center;gap:15px;color:#af9f83;margin-bottom:24px}
.no-kids-rule span{height:1px;width:65px;background:#bdaf97}
.no-kids-rule i{font:normal 18px var(--serif)}
.no-kids-label{font-size:10px;letter-spacing:.27em;color:#a28e6d;margin:0 0 15px}
.no-kids-section h2{font:400 clamp(33px,7.5vw,53px)/1.15 var(--serif);letter-spacing:.075em;color:#817052;margin:0;text-shadow:0 1px 10px #fffbf5a8}
.no-kids-note{font:italic 22px var(--serif);color:#a18d6b;margin:20px 0 0}
@media(max-width:520px){
 .courtesy-section,.dresscode-section{padding:85px 19px 90px}
 .courtesy-description{max-width:335px}
 .courtesy-card{max-width:330px}
 .dresscode-icon-img{width:185px}
 .dresscode-note{max-width:330px;font-size:18px}
 .no-kids-section{padding:70px 16px 75px}
}

/* Control de asistentes: no pedir cantidad a quienes no asistirán. */
.guest-count-group[hidden]{display:none!important}

.music-toggle[hidden] { display: none; }
.envelope { background-blend-mode: luminosity; }
.texture-video-frame { filter: sepia(.5) saturate(.75); }
/* Size the script against the usable width inside the cover frame. */
.envelope-inner { container-type: inline-size; }
.opening-name {
  font-size: min(13vw, 60px);
  font-size: min(16cqw, 64px);
  line-height: 1.16;
  margin: -6px 0 3px;
  position: relative;
  z-index: 1;
}
.cover-ornament {
  position: absolute;
  width: clamp(36px, 17cqw, 68px);
  height: auto;
  color: #a5834d;
  opacity: .78;
  pointer-events: none;
}
.ornament-tl { top: 18px; left: 18px; }
.ornament-br { bottom: 18px; right: 18px; transform: rotate(180deg); }
.mariajose-sign { font-size: clamp(40px, 13vw, 105px); }
.family { display: flex; flex-direction: column; align-items: center; gap: 20px; margin: 28px auto; text-align: center; }
.family p { margin: 0; font: 500 24px/1.3 var(--serif); }
.family span { display: block; margin-bottom: 4px; font: 600 10px/1.5 var(--sans); text-transform: uppercase; letter-spacing: .16em; }

.dress-palette {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(min(100%, 95px), 1fr));
  gap: 18px 10px;
  max-width: 560px;
  margin: 26px auto;
  padding: 0;
  list-style: none;
}
.swatch { font: 600 17px/1.25 var(--serif); }
.swatch::before {
  content: "";
  display: block;
  height: clamp(72px, 16vw, 120px);
  margin-bottom: 8px;
  border: 1px solid #b49a66;
  border-radius: 48% 48% 8px 8px;
  background: var(--fabric);
  box-shadow: 0 6px 16px #5a3c2b20;
}
.swatch-esmeralda { --fabric: linear-gradient(135deg, #03291f, #157560 55%, #063b2d); }
.swatch-vino { --fabric: linear-gradient(135deg, #340916, #8c354b 55%, #490d20); }
.swatch-rosa { --fabric: linear-gradient(135deg, #ac6679, #e7adb6 55%, #b87183); }
.swatch-noche { --fabric: linear-gradient(135deg, #080f22, #324669 55%, #121c32); }
.swatch-plata { --fabric: linear-gradient(135deg, #88878a, #e7e7eb 55%, #a8a8b0); }
.palette-note { margin: 20px auto 0; font: italic 23px/1.35 var(--serif); }
