:root{--rose:#ca9e99;--dusky:#c29188;--pearl:#e3d7d2;--champagne:#d4bbb4;--darkrose:#794e4f;--berry:#6d4248;--ink:#68494b;--muted:#896c70;--pale:#fcf7f4;--offwhite:#fffaf7;--gold:#aa8179;--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:#f7eae8;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:#643c43;background:#edc9cf}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid #895261;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:#966e70}.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:#9f7376}.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:#ead3d1}.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%,#ad777d91,transparent 81%),linear-gradient(135deg,#e6c9c7,#faf1ec 31%,#d1a4a3 66%,#f6dcd8);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%,#fff6f4 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%,#f5d2cc 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,#ce9fa2e5);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,#f5e5e2eb 52%,#fcf8f1eb);border:1px solid #fffbf3;box-shadow:0 24px 70px #78434a51,inset 0 0 0 12px #fff9f63b;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 #cfa9a350;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 #b58b8775;pointer-events:none}.corner-flower{position:absolute;width:clamp(105px,32vw,152px);height:clamp(105px,32vw,152px);color:#a57e80;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:#8c6468;margin:0 0 14px}.envelope-star{font-size:21px;color:#bc9494}.opening-xv{font:400 clamp(92px,22vw,127px)/1 var(--serif);color:#ad7d80;margin:13px 0 0}.opening-name{font-size:clamp(75px,18vw,112px);line-height:1;margin:-18px 0 3px;color:#865257;text-shadow:0 2px #fff4ef}.fine-divider{display:flex;align-items:center;justify-content:center;gap:12px;color:#b5928d;margin:7px auto 18px}.fine-divider span{display:inline-block;width:60px;height:1px;background:linear-gradient(90deg,transparent,#c79e9c)}.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:#8f6767}.opening-note{font:italic 22px var(--serif);color:#936d6a;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:#ae8384}
.btn{display:inline-flex;justify-content:center;align-items:center;gap:19px;min-height:49px;padding:14px 24px;border:1px solid #a67479;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 #98696b24}.btn span{font-size:16px;line-height:1}.btn-filled{background:#93686c;color:#fffaf8;border-color:#93686c}.btn-filled:hover{background:#80565a}.btn-outline{background:#fffaf89a;color:#84585c}.btn-outline:hover{background:#fff5f1}
.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:#f8efedc9;backdrop-filter:blur(19px);border-bottom:1px solid #ffffffa3;box-shadow:0 8px 30px #8050540b;opacity:0;transform:translateY(-100%);transition:opacity .7s,transform .7s}.topbar.visible{opacity:1;transform:none}.brand{color:#86535b;font-size:32px;line-height:1.1}.top-rsvp{font-size:9px;letter-spacing:.18em;color:#81575c}.top-rsvp span{font-size:14px;margin-left:5px}.top-rsvp:hover{color:#bd8e89}
/* Two-chapter editorial journey */
.chapter{position:relative;overflow:hidden;text-align:center;padding:115px 18px 105px;background:linear-gradient(180deg,#fcf5f2cf 0%,#f9efedbd 54%,#f8ebebda 100%)}.first-chapter{padding-top:130px;background:linear-gradient(180deg,#f9eeeccb 0%,#fdf7f4dc 65%,#f3e0dfb8)}.second-chapter{background:linear-gradient(180deg,#efd8d5b8 0%,#fff7f4c9 53%,#faefebc9 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:#a37e81}.mini-line{width:27px;height:1px;background:#bd999a}.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 #c8a0a0;border-radius:210px 210px 12px 12px;background:#fdf9f7;box-shadow:0 15px 65px #8e5f6640,0 0 0 9px #fff7f280;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:#bb9290;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:#946c70}.floral-divider{margin:28px 0 10px;color:#bc9093;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:#7f5b61}.scroll-cue{margin-top:44px;font-size:9px;letter-spacing:.2em;color:#ad8788}.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,#f3e0dfbb,#efd8d5b8);height:142px;display:grid;place-content:center}.interlude-ring{width:63px;height:63px;border-radius:50%;border:1px solid #bb9290;display:grid;place-items:center;box-shadow:0 0 0 10px #faf1ed70;color:#ae7c83;font-size:28px}.interlude-trail{position:absolute;left:50%;top:96px;height:45px;width:1px;background:#bc9897}.now-frame{max-width:456px}.xv-monogram{display:flex;align-items:center;justify-content:center;gap:20px;margin:40px 0 -13px;color:#a87b7d}.xv-monogram span{font-size:11px;letter-spacing:.2em}.xv-monogram strong{font:400 82px/1 var(--serif);color:#86585d}.sofia-sign{font-size:clamp(105px,24vw,152px);color:#89595e;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:#895f65;margin:40px auto 5px}.date-lockup strong{font:400 113px/.9 var(--serif);border-right:1px solid #c5a1a3;border-left:1px solid #c5a1a3;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:#f8e8e6c6;border-top:1px solid #fff5f480;border-bottom:1px solid #fff5f480}.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 #caa6a7}.count-cell:last-child{border:none}.count-cell span{font:400 clamp(39px,9.8vw,71px)/1 var(--serif);color:#80565d;font-variant-numeric:tabular-nums}.count-cell small{font-size:9px;letter-spacing:.16em;margin-top:15px;color:#997479}.count-message{font:italic 24px var(--serif);color:#9e7377}.places-section{position:relative;text-align:center;padding:104px 18px 110px;background:linear-gradient(180deg,#fdf7f1d6,#f6e3e1dc)}.place-card{background:#fffdf9d8;border:1px solid #d5b2b2;padding:36px 24px 40px;max-width:510px;margin:0 auto;box-shadow:0 12px 45px #965f6523;position:relative}.place-card:before{content:'';position:absolute;inset:8px;border:1px solid #efd9d8;pointer-events:none}.place-symbol{width:65px;margin:0 auto 8px;color:#a27c7c}.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:#7d555b}.place-time{font:italic 31px var(--serif);color:#986d72;margin:10px 0 15px}.place-address{font:400 12px/1.85 var(--sans);color:#816970;margin:0 0 22px}.card-connector{height:95px;display:grid;place-items:center;position:relative;color:#b28b8d}.card-connector:before{content:'';position:absolute;top:0;bottom:0;width:1px;background:linear-gradient(180deg,#d8adae,transparent,#d8adae)}.card-connector i{font:normal 17px var(--serif);z-index:1;padding:6px;background:#f8eeeb}
.rsvp-section{text-align:center;padding:112px 18px 126px;background:radial-gradient(ellipse at 50% 10%,#fffbf6df 0%,#eed5d4e3 100%)}.rsvp-sparkle{font-size:38px;color:#b28b91}.rsvp-section .section-heading{margin:12px 0 16px}.rsvp-intro{font:italic 24px/1.45 var(--serif);color:#936d70;margin:10px auto 34px}.rsvp-form{text-align:left;margin:0 auto;max-width:430px;padding:28px 30px 26px;background:#fffdfbce;border:1px solid #cfa9aa;box-shadow:0 14px 50px #7f515b1a}.rsvp-form label{display:block;font-size:10px;letter-spacing:.15em;font-weight:600;color:#90686d;margin:16px 0 10px}.rsvp-form input,.rsvp-form select{display:block;width:100%;min-height:46px;padding:12px 13px;border:1px solid #dec6c6;color:#6e4d53;background:#fffaf9;border-radius:0;outline:none}.rsvp-form input:focus,.rsvp-form select:focus{border-color:#a6777b;box-shadow:0 0 0 2px #d9b4b422}.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:#9a777b;margin:17px 0 12px}.copy-rsvp{display:block;margin:0 auto;color:#875b63;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:#85545b;line-height:1.55;min-height:1.3em}.footer{text-align:center;padding:70px 15px 105px;background:#865b61;color:#fff6f4}.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 #fdf3eea8;box-shadow:0 6px 24px #80515d40;background:#835b62e5;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:#f5dfdb7a;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:sofia-float var(--time) linear var(--delay) infinite}
@keyframes sofia-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 #78434a30, inset 0 0 0 12px #fff9f626;
}
.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: #e7aebe 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;}
