:root{
  --bone:#EFE7D9; --greige:#C6BBAB; --olive:#5E6347; --olive-d:#4A4F39;
  --ink:#2E2B25; --ink-soft:#5A544A; --line:#B9AB95;
  --wine:#7C2440; --blue:#4B6B8A; --terra:#C2622F; --brown:#5B3A22;
}
*{box-sizing:border-box;-webkit-tap-highlight-color:transparent}
html,body{margin:0}
body{background:var(--bone);color:var(--ink);font-family:'Cormorant Garamond',Georgia,serif;font-size:16px;line-height:1.6;overflow-x:hidden}
.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);border:0}
.wrap{position:relative;max-width:700px;margin:0 auto;overflow:hidden;background:var(--bone)}
#grain{position:absolute;inset:0;z-index:60;pointer-events:none;opacity:.5;mix-blend-mode:multiply;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3CfeColorMatrix type='saturate' values='0'/%3E%3C/filter%3E%3Crect width='220' height='220' filter='url(%23n)' opacity='.42'/%3E%3C/svg%3E")}
.meta{font-family:'Jost',sans-serif;font-size:10.5px;letter-spacing:.28em;text-transform:uppercase;font-weight:400}
.mono{display:inline-flex;align-items:flex-end;justify-content:center;line-height:.78;font-family:'Bodoni Moda',serif;font-weight:400;letter-spacing:-.05em;
  background:linear-gradient(158deg,#fdfaf3,#ece1cc 22%,#b09b78 48%,#8d7a58 56%,#e6dac3 74%,#fefcf7);-webkit-background-clip:text;background-clip:text;color:transparent;
  filter:drop-shadow(0 1px 0 rgba(255,255,255,.95)) drop-shadow(0 -1px 0 rgba(126,106,74,.42)) drop-shadow(0 7px 12px rgba(94,78,52,.2))}
.mono .amp{font-family:'Monsieur La Doulaise',cursive;font-size:.78em;transform:translateY(-.06em);margin:0 -.13em;letter-spacing:0}

/* HERO / NIEBLA */
.hero{position:relative;min-height:790px;display:flex;align-items:center;justify-content:center;text-align:center;
  padding:90px 30px;overflow:hidden;background:radial-gradient(120% 100% at 50% 30%,#F4EDE0,#EFE7D9 60%,#E8DFCE 100%)}
#liquid{position:absolute;inset:0;width:100%;height:100%;opacity:.34;mix-blend-mode:soft-light;pointer-events:none;z-index:1}
.fogvid{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:2;opacity:.85;transition:opacity 2.4s ease,transform 3s ease}
.hero.revealed .fogvid{opacity:0;transform:scale(1.15)}
.fog{position:absolute;inset:-14%;z-index:2;pointer-events:none;filter:blur(26px);transition:opacity 2.6s ease,transform 3s ease,filter 2.6s ease}
.fog span{position:absolute;border-radius:50%;opacity:.9;
  background:radial-gradient(circle at 50% 50%,rgba(255,253,248,.98),rgba(236,228,214,.62) 52%,rgba(236,228,214,0) 74%);
  animation:drift 22s ease-in-out infinite alternate}
.fog span:nth-child(1){width:70%;height:44%;left:-12%;top:6%;animation-duration:19s}
.fog span:nth-child(2){width:60%;height:40%;right:-10%;top:22%;animation-duration:26s;animation-delay:-6s}
.fog span:nth-child(3){width:86%;height:50%;left:2%;bottom:-8%;animation-duration:23s;animation-delay:-11s}
.fog span:nth-child(4){width:46%;height:32%;left:26%;top:34%;animation-duration:17s;animation-delay:-3s}
.fog span:nth-child(5){width:54%;height:36%;right:6%;bottom:2%;animation-duration:29s;animation-delay:-14s}
.fog span:nth-child(6){width:40%;height:26%;left:4%;top:44%;animation-duration:21s;animation-delay:-8s}
@keyframes drift{0%{transform:translate(0,0) scale(1)}50%{transform:translate(6%,-5%) scale(1.12)}100%{transform:translate(-7%,4%) scale(1.04)}}
.hero.revealed .fog{opacity:0;transform:scale(1.22);filter:blur(34px)}

.hero-in{position:relative;z-index:3;display:flex;flex-direction:column;align-items:center}
.hero-in>*{opacity:0;filter:blur(14px);transform:scale(1.07);transition:opacity 1.7s ease,filter 2s ease,transform 2.4s cubic-bezier(.2,.7,.2,1)}
.hero.revealed .hero-in>*{opacity:1;filter:none;transform:none}
.hero.revealed .hero-in>*:nth-child(1){transition-delay:.15s}
.hero.revealed .hero-in>*:nth-child(2){transition-delay:.35s}
.hero.revealed .hero-in>*:nth-child(3){transition-delay:.6s}
.hero.revealed .hero-in>*:nth-child(4){transition-delay:.8s}
.hero.revealed .hero-in>*:nth-child(5){transition-delay:1s}
.hero.revealed .hero-in>*:nth-child(6){transition-delay:1.2s}

.hero .mono{font-size:120px}
.names{font-family:'Monsieur La Doulaise',cursive;font-size:66px;line-height:.92;margin:10px 0 0;font-weight:400;color:#3A362E}
.names .amp{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:.4em;vertical-align:.24em}
.hero .date{margin:24px 0 0;font-family:'Bodoni Moda',serif;font-size:19px;letter-spacing:.34em}
.hero .place{margin:8px 0 0;font-style:italic;font-size:16px;color:var(--ink-soft)}
.hero .guest{margin:30px 0 0;font-family:'Jost',sans-serif;font-size:10.5px;letter-spacing:.26em;text-transform:uppercase;color:#6C6558;
  border-top:1px solid #CFC4B1;border-bottom:1px solid #CFC4B1;padding:9px 18px;display:none}
.hero .guest.on{display:block}
.cd{display:flex;gap:20px;margin:28px 0 0}
.cd div{min-width:52px;text-align:center}
.cd b{display:block;font-family:'Bodoni Moda',serif;font-size:23px;font-weight:400}
.cd span{display:block;font-family:'Jost',sans-serif;font-size:8.5px;letter-spacing:.2em;text-transform:uppercase;color:#7B7365;margin-top:3px}
.cue{position:absolute;left:50%;bottom:22px;z-index:4;width:1px;height:44px;background:#B7AA97;transform:translateX(-50%);opacity:0;transition:opacity 1s 1.8s}
.hero.revealed .cue{opacity:.8;animation:pulse 2.6s ease-in-out infinite 2.8s}
@keyframes pulse{50%{transform:translateX(-50%) scaleY(.55);opacity:.35}}

/* HILO */
.thread{display:flex;flex-direction:column;align-items:center;background:var(--bone)}
.thread.on-olive{background:var(--olive)}
.thread i{display:block;width:1px;height:66px;background:var(--line)}
.thread.on-olive i{background:rgba(239,231,217,.45)}
.thread b{display:block;width:4px;height:4px;border-radius:50%;background:var(--line);margin-top:-1px}
.thread.on-olive b{background:rgba(239,231,217,.6)}

/* REVELADO */
.rv{opacity:0;transform:translateY(22px);filter:blur(5px);transition:opacity 1s ease,transform 1s cubic-bezier(.2,.7,.2,1),filter 1s}
.rv.in{opacity:1;transform:none;filter:none}
@media (prefers-reduced-motion:reduce){.rv,.hero-in>*{opacity:1!important;transform:none!important;filter:none!important;transition:none!important}}

section{position:relative}
.pad{padding:70px 34px}
.center{text-align:center}
.kicker{display:block;margin:0 0 16px;font-family:'Jost',sans-serif;font-size:9.5px;letter-spacing:.34em;text-transform:uppercase;color:#8A8070}
h2.t{font-family:'Bodoni Moda',serif;font-weight:400;font-size:33px;line-height:1.14;letter-spacing:.04em;text-transform:uppercase;margin:0}
.script-h{font-family:'Monsieur La Doulaise',cursive;font-size:52px;line-height:1;margin:0;font-weight:400}
.olive{background:var(--olive);color:#F1EADD}
.olive .kicker{color:rgba(241,234,221,.62)}
.olive .body{color:rgba(241,234,221,.86)}
.body{font-size:16.5px;line-height:1.75;color:var(--ink-soft)}

.card{position:relative;margin:0 auto;max-width:430px;padding:24px 24px 38px;
  background:linear-gradient(168deg,#F7F1E5,#EFE7D9 70%,#EAE1D0);
  box-shadow:0 1px 0 rgba(255,255,255,.7),0 16px 30px -18px rgba(90,74,50,.5)}
.frame{display:none}
.card>*{position:relative;z-index:2}
.win{position:relative;padding:22px;margin:0 0 26px}
.win-frame{position:absolute;inset:0;width:100%;height:100%;color:#BFB29C;pointer-events:none;z-index:2}
.win img{display:block;width:100%;aspect-ratio:3/4;object-fit:cover;
  clip-path:polygon(26px 0,calc(100% - 26px) 0,100% 26px,100% calc(100% - 26px),
    calc(100% - 26px) 100%,26px 100%,0 calc(100% - 26px),0 26px)}
.parents{display:grid;grid-template-columns:1fr 1px 1fr;gap:16px;align-items:center;margin:18px 0 0}
.parents i{display:block;width:1px;min-height:52px;background:var(--line)}
.parents p{margin:0;font-size:15.5px;line-height:1.5}
.rule{width:52px;height:1px;background:var(--line);margin:26px auto;border:0}
.names-s{font-family:'Monsieur La Doulaise',cursive;font-size:54px;line-height:.9;margin:14px 0 4px;color:#3E392F}
.date-row{display:flex;align-items:center;justify-content:center;gap:14px;margin:18px 0 0;font-family:'Bodoni Moda',serif;font-size:23px;letter-spacing:.1em}
.date-row i{width:1px;height:26px;background:var(--line)}
.year{font-family:'Bodoni Moda',serif;font-size:17px;letter-spacing:.5em;margin:8px 0 0;color:#6E6657}
.noninos{font-family:'Jost',sans-serif;font-size:9px;letter-spacing:.26em;text-transform:uppercase;color:#8A8070;margin:22px 0 0}

/* ITINERARIO */
.tl{position:relative;max-width:430px;margin:44px auto 0;padding-bottom:8px}
.tl::before{content:'';position:absolute;left:50%;top:0;bottom:34px;width:1px;background:rgba(241,234,221,.32)}
.stop{position:relative;display:grid;grid-template-columns:1fr 1fr;gap:26px;align-items:center;margin:0 0 44px}
.stop .art{justify-self:end;width:132px;color:rgba(241,234,221,.82)}
.stop .art svg{width:100%;height:auto;display:block}
.stop .art video{width:100%;height:auto;display:block;background:#50553E;mix-blend-mode:lighten}
.stop .txt{justify-self:start;text-align:left}
.stop.right .art{order:2;justify-self:start}
.stop.right .txt{order:1;justify-self:end;text-align:right}
.stop .dot{position:absolute;left:50%;top:50%;width:7px;height:7px;margin:-3.5px 0 0 -3.5px;border-radius:50%;background:#F1EADD}
.stop .dot::after{content:'';position:absolute;left:7px;top:3px;width:22px;height:1px;background:rgba(241,234,221,.5)}
.stop.right .dot::after{left:auto;right:7px}
.stop h3{font-family:'Bodoni Moda',serif;font-size:19px;letter-spacing:.16em;margin:0;color:#F6F0E5;font-weight:400}
.stop .hr{font-family:'Bodoni Moda',serif;font-size:16px;letter-spacing:.1em;margin:4px 0 0;color:rgba(241,234,221,.92)}
.stop .pl{font-family:'Jost',sans-serif;font-size:9.5px;letter-spacing:.24em;text-transform:uppercase;margin:8px 0 0;color:rgba(241,234,221,.6);line-height:1.7}
.closing-line{font-family:'Monsieur La Doulaise',cursive;font-size:42px;text-align:center;color:#F4EEE3;margin:6px 0 0;line-height:1}

.btn{display:inline-flex;align-items:center;justify-content:center;padding:12px 22px;background:none;cursor:pointer;border:1px solid var(--ink);color:var(--ink);
  font-family:'Jost',sans-serif;font-size:9.5px;letter-spacing:.26em;text-transform:uppercase;text-decoration:none;transition:.35s}
.btn:hover,.btn:focus-visible{background:var(--ink);color:var(--bone);outline:none}
.btn.lt{border-color:rgba(241,234,221,.7);color:#F1EADD}
.btn.lt:hover{background:#F1EADD;color:var(--olive)}
.btn.solid{background:var(--ink);color:var(--bone)}
.btn.solid:hover{background:var(--olive)}

.dress{display:grid;grid-template-columns:1fr 1px 1fr;gap:22px;max-width:470px;margin:40px auto 0;align-items:start}
.dress i.v{width:1px;height:100%;background:var(--line)}
.dress h4{font-family:'Jost',sans-serif;font-size:10px;letter-spacing:.3em;text-transform:uppercase;margin:0 0 14px;color:#7E7466}
.dress svg{width:100%;height:auto;display:block}
.dress p{font-size:15px;line-height:1.55;margin:14px 0 0;color:var(--ink-soft)}
.pal{display:flex;justify-content:center;gap:14px;margin:34px 0 0}
.pal span{width:36px;height:36px;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(46,43,37,.12)}
.pal-lbl{text-align:center;margin:16px 0 0;color:#7E7466}

.bank{margin:24px auto 0;max-width:330px;border:1px solid var(--line);padding:20px 18px;background:#F4EDE0}
.bank .row{display:flex;align-items:center;justify-content:space-between;gap:12px;padding:8px 0;border-bottom:1px dotted #C6B9A5}
.bank .row:last-child{border:0}
.bank .k{font-family:'Jost',sans-serif;font-size:8.5px;letter-spacing:.22em;text-transform:uppercase;color:#877D6C}
.bank .v{font-family:'Bodoni Moda',serif;font-size:14.5px;letter-spacing:.06em}
.copy{border:1px solid var(--line);background:none;cursor:pointer;padding:5px 9px;font-family:'Jost',sans-serif;font-size:8px;letter-spacing:.16em;text-transform:uppercase;color:#6E6555;transition:.3s}
.copy:hover{background:var(--ink);color:var(--bone);border-color:var(--ink)}

.form{max-width:400px;margin:36px auto 0;text-align:left}
.fld{margin:0 0 20px}
.fld label{display:block;font-family:'Jost',sans-serif;font-size:9px;letter-spacing:.26em;text-transform:uppercase;color:#877D6C;margin:0 0 7px}
.fld input,.fld textarea{width:100%;background:#F6F0E4;border:0;border-bottom:1px solid var(--line);padding:9px 2px;font-family:'Cormorant Garamond',serif;font-size:17px;color:var(--ink);border-radius:0}
.fld input:focus,.fld textarea:focus{outline:none;border-color:var(--ink)}
.fld textarea{resize:none;min-height:56px}
.actions{display:grid;gap:10px;margin:26px 0 0}
.actions .btn{width:100%}
.msg{min-height:20px;font-size:14px;font-style:italic;color:var(--wine);text-align:center;margin:14px 0 0}
.done{display:none;max-width:400px;margin:30px auto 0;padding:34px 26px;border:1px solid var(--line);background:#F4EDE0;text-align:center}
.done.on{display:block}
.done .mono{font-size:52px}
.done p{font-size:16px;margin:14px 0 0;color:var(--ink-soft)}

.end{position:relative;min-height:520px;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:80px 30px;background:var(--olive-d);color:#F1EADD;overflow:hidden}
#liquid2{position:absolute;inset:0;width:100%;height:100%;opacity:.3;mix-blend-mode:soft-light}
.end>*{position:relative;z-index:2}
.end .mono{font-size:86px}
.end .script{font-family:'Monsieur La Doulaise',cursive;font-size:46px;margin:14px 0 0;color:#F4EEE3;line-height:1}
.end .meta{margin:22px 0 0;color:rgba(241,234,221,.6)}
.foot{padding:34px 30px 44px;text-align:center;background:var(--olive-d)}
.foot .meta{color:rgba(241,234,221,.42);font-size:9px;letter-spacing:.22em;line-height:2}

.photo{position:relative;height:100svh;min-height:640px;overflow:hidden;background:#D8CDBB}
.photo img{width:100%;height:100%;object-fit:cover;display:block;
  transform:scale(1.1);transition:transform 7s cubic-bezier(.2,.7,.2,1)}
.photo.in img{transform:scale(1)}
.photo::after{content:'';position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(180deg,rgba(239,231,217,.45),transparent 26%,transparent 74%,rgba(239,231,217,.5))}