/* Preserve the established palette; motion and composition are the only changes. */
.cover#cover{display:block;padding:0;overflow:hidden;background:var(--wine);perspective:1800px;transition:opacity .65s ease}
.cover#cover:before{inset:18px;border-color:var(--gold);opacity:.28;z-index:8}
.cover#cover:after{display:none}
.cover#cover .envelope-art{background:var(--wine);z-index:-1}
.cover#cover .envelope-scene{position:absolute;inset:0;width:100%;height:100%;max-width:none;aspect-ratio:auto;margin:0;transform:none;filter:none;perspective:1800px}
.cover#cover .envelope-back{border:0;border-radius:0;background:var(--wine-dark)}
.cover#cover .invitation-letter{display:none}
.cover#cover .envelope-pocket{inset:0;border:0;border-radius:0;background:linear-gradient(32deg,var(--wine-dark),var(--wine) 55%);clip-path:polygon(0 26%,50% 59%,100% 26%,100% 100%,0 100%)}
.cover#cover .envelope-pocket:after{content:'';position:absolute;inset:0;background:linear-gradient(150deg,transparent 49.8%,#c8ad8525 50%,transparent 50.2%),linear-gradient(30deg,transparent 49.8%,#c8ad8525 50%,transparent 50.2%);opacity:.6}
.cover#cover .envelope-flap{inset:0 0 41%;background:linear-gradient(165deg,var(--wine),var(--wine-dark));clip-path:polygon(0 0,100% 0,100% 44%,50% 100%,0 44%);filter:drop-shadow(0 8px 8px #0003)}
.cover#cover .envelope-seal{top:58%;width:92px;box-shadow:0 8px 20px #0004}
.cover#cover .cover-top{position:absolute;inset:9% 30px auto;width:auto;margin:0;font-size:11px;letter-spacing:.07em;z-index:6}
.cover#cover .cover-note{position:absolute;inset:20% 24px auto;width:auto;margin:0;z-index:6;font-size:12px}
.cover#cover .cover-names{position:absolute;inset:25% 24px auto;width:auto;max-width:none;margin:0;font-size:clamp(42px,6vw,86px);line-height:1.2;z-index:6;padding:0;pointer-events:none}
.cover#cover .cover-names i{display:inline;font-size:.7em}
.cover#cover .cover-date{position:absolute;inset:39% 24px auto;width:auto;margin:0;font-size:21px;z-index:6;pointer-events:none}
.cover#cover .cover-rule{display:none}
.cover#cover .open-button{position:absolute;inset:auto auto 18% 50%;transform:translateX(-50%);z-index:7;min-height:48px;margin:0;padding:10px 4px;width:max-content;max-width:85%;background:none;color:var(--paper);border:0;border-bottom:1px solid var(--gold);border-radius:0;box-shadow:none;font-size:14px;font-weight:400}
.cover#cover .open-button:hover{transform:translateX(-50%);background:none;box-shadow:none}
.cover#cover .cover-bottom{position:absolute;inset:auto 24px 9%;width:auto;margin:0;justify-content:center;font-size:13px;z-index:6;pointer-events:none}
.cover#cover.opening .envelope-seal{animation:quiet-seal .4s ease forwards}
.cover#cover.opening .envelope-flap{animation:full-flap 1.15s .12s cubic-bezier(.45,0,.2,1) forwards}
.cover#cover.opening .envelope-pocket{animation:full-pocket 1.25s .55s cubic-bezier(.65,0,.25,1) forwards}
.cover#cover.opening .envelope-back{animation:back-release .8s .6s ease forwards}
.cover#cover.opening:before{opacity:0;transition:opacity .3s}
@keyframes quiet-seal{to{transform:translate(-50%,-40%);opacity:0}}
@keyframes full-flap{to{transform:rotateX(180deg);opacity:.25}}
@keyframes full-pocket{to{transform:translateY(100%)}}
@keyframes back-release{to{opacity:0}}
@media(max-width:600px){.cover#cover .cover-names{font-size:clamp(35px,9vw,47px)}.cover#cover .cover-top{inset:10% 35px auto;line-height:1.7}.cover#cover .cover-note{top:23%}.cover#cover .cover-names{top:29%}.cover#cover .cover-date{top:39%;font-size:20px}.cover#cover .envelope-seal{width:82px}.cover#cover .open-button{bottom:20%}.cover#cover .cover-bottom{bottom:12%}}
@media(max-height:500px){.cover#cover .cover-top{top:6%;font-size:10px}.cover#cover .cover-note{top:15%;font-size:10px}.cover#cover .cover-names{top:22%;font-size:35px}.cover#cover .cover-date{top:37%;font-size:17px}.cover#cover .envelope-seal{width:60px}.cover#cover .open-button{bottom:12%;font-size:12px}.cover#cover .cover-bottom{bottom:4%;font-size:11px}}

/* Floral flourishes bridge the quiet paper sections. */
.celebration,.day-details,.closing{position:relative;isolation:isolate}
.celebration{max-width:none;padding-inline:max(28px,calc((100vw - 740px)/2));overflow:hidden}
.botanical-frame{position:absolute;inset:0;z-index:-1;pointer-events:none;overflow:hidden;color:var(--gold)}
.botanical-frame svg{position:absolute;top:15px;left:-22px;width:clamp(140px,23vw,320px);opacity:.65;transform:translateY(var(--floral-offset,0px)) rotate(8deg)}
.botanical-frame:after{content:'';position:absolute;right:0;bottom:0;width:65px;height:100px;border-right:1px solid var(--gold);border-radius:0 0 85% 0;opacity:.25}
.closing .botanical-frame svg{left:auto;right:-25px;transform:translateY(var(--floral-offset,0px)) rotate(180deg)}
.day-details{background:var(--paper);color:var(--ink);padding-block:100px}
.day-details .botanical-frame svg{width:220px;opacity:.4}
.day-route{display:flex;flex-direction:column;gap:52px;max-width:760px;text-align:start}
.day-thread{inset:30px auto 35px 50%;height:auto;width:1px;background:var(--line)}
.day-thread:after{content:'';display:block;position:absolute;inset:0;background:var(--gold);transform-origin:top;transform:scaleY(var(--route-progress,0))}
.day-moment{display:grid;grid-template-columns:1fr 1fr;align-items:center;column-gap:90px;min-height:145px}
.moment-art{width:110px;height:110px;margin:0;justify-self:end;background:var(--paper);color:var(--gold);padding:10px}
.moment-copy{max-width:300px;color:var(--ink)}
.moment-description{color:var(--muted)}
.moment-arrival .moment-art{grid-column:2;grid-row:1;justify-self:start}
.moment-arrival .moment-copy{grid-column:1;grid-row:1;text-align:end;justify-self:end}
.day-moment:after{content:'';position:absolute;left:50%;top:50%;width:7px;height:7px;background:var(--paper);border:1px solid var(--gold);border-radius:50%;transform:translate(-3px,-50%)}
[dir=rtl] .day-thread{left:auto;right:50%}
[dir=rtl] .day-moment:after{left:auto;right:50%;transform:translate(3px,-50%)}
@media(max-width:600px){.day-details{padding:66px 22px}.day-heading h2{font-size:43px;margin-bottom:40px}.day-route{gap:30px}.day-moment{grid-template-columns:1fr 1fr;gap:34px;min-height:146px}.moment-art{width:80px;height:90px;padding:4px}.moment-copy h3{font-size:26px}.moment-kicker{font-size:11px;letter-spacing:.02em}.moment-description{font-size:12px}.day-thread{inset:25px auto 30px 50%}.botanical-frame svg{width:145px;opacity:.45;top:5px}.day-details .botanical-frame svg{width:135px;top:0;left:-38px;opacity:.3}}

/* Motion is prepared only by JS, and always resolves to readable content. */
@media(prefers-reduced-motion:no-preference){
 .choreo-ready:not(.choreo-seen){opacity:0;transform:translateY(24px)}
 .choreo-ready{transition:opacity 1s ease,transform 1.2s cubic-bezier(.22,.7,.2,1);transition-delay:var(--reveal-delay,0ms)}
 .choreo-ready.choreo-seen{opacity:1;transform:none}
 .day-moment.choreo-ready:not(.choreo-seen){transform:translateX(-24px)}
 .day-moment.moment-arrival.choreo-ready:not(.choreo-seen){transform:translateX(24px)}
 .day-moment.choreo-seen .moment-art svg>*{stroke-dasharray:180;animation:ink-arrive 1.7s ease both}
 .venue-showcase.choreo-ready{transform:none}
 .venue-showcase.choreo-seen .venue-photo-frame{animation:venue-curtain 1.6s cubic-bezier(.22,.7,.2,1) both}
 .hero-copy>*{transition:opacity 1s ease,transform 1.2s cubic-bezier(.22,.7,.2,1);transition-delay:var(--hero-delay,0ms)}
 #page:not(.revealed) .hero-copy>*{opacity:0;transform:translateY(18px)}
 @keyframes venue-curtain{from{clip-path:inset(12% 0 0)}to{clip-path:inset(0)}}
}
@media(prefers-reduced-motion:reduce){.choreo-ready{opacity:1!important;transform:none!important;transition:none!important}.botanical-frame svg{transform:none!important}.day-thread:after{transform:none}.cover#cover,.cover#cover *{animation:none!important;transition:none!important}}

.cover#cover[hidden]{display:none}

.closing>p:first-of-type{font-size:14px;color:var(--muted)}
