:root{--paper:#fafafa;--paper-2:#f2f2f1;--white:#fff;--ink:#171212;--muted:#746d6d;--wine:#80172d;--wine-dark:#58101f;--line:#ded8d9;--dark:#171213;--shadow:0 28px 70px rgba(55,27,31,.12);--ease:cubic-bezier(.2,.75,.2,1);--shell:min(1160px,calc(100vw - 96px));--wide:min(1400px,calc(100vw - 96px))}
*{box-sizing:border-box}html{scroll-behavior:smooth;background:var(--paper)}body{margin:0;background:var(--paper);color:var(--ink);font-family:Manrope,Arial,sans-serif;-webkit-font-smoothing:antialiased;overflow-x:hidden}body.is-intro{overflow:hidden}button,input,select,textarea{font:inherit}button{color:inherit}a{color:inherit;text-decoration:none}img{display:block;width:100%;height:100%;object-fit:cover}figure{margin:0}.shell{width:var(--shell);margin-inline:auto}.shell-wide{width:var(--wide);margin-inline:auto}.scene{position:relative;padding-block:clamp(92px,9vw,148px);overflow:clip}.micro{font-size:10px;line-height:1.4;letter-spacing:.22em;text-transform:uppercase;color:var(--muted)}.script{font-family:"Marck Script",cursive;color:var(--wine);font-size:clamp(26px,2.6vw,38px)}.grain{position:fixed;inset:0;z-index:200;pointer-events:none;opacity:.045;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%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' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E")}.progress{position:fixed;z-index:190;left:0;right:0;top:0;height:2px;pointer-events:none}.progress i{display:block;width:100%;height:100%;background:var(--wine);transform:scaleX(0);transform-origin:left}.button{display:inline-flex;align-items:center;justify-content:center;gap:22px;min-height:52px;padding:0 26px;border:1px solid var(--wine);border-radius:999px;background:var(--wine);color:#fff;font-size:10px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;transition:transform .3s var(--ease),background .3s,box-shadow .3s}.button:hover{transform:translateY(-3px);background:var(--wine-dark);box-shadow:0 12px 30px rgba(88,16,31,.2)}.button--light{background:transparent;color:var(--wine)}.text-link{font-size:10px;letter-spacing:.14em;text-transform:uppercase;color:var(--wine);border-bottom:1px solid rgba(128,23,45,.3);padding-bottom:5px}
.intro{position:fixed;inset:0;z-index:180;display:grid;place-items:center;background:#111;color:#fff;overflow:hidden;transition:visibility 0s 1.05s}.intro.is-gone{visibility:hidden;pointer-events:none}.intro__photo,.intro__veil{position:absolute;inset:0}.intro__photo{filter:grayscale(1);transform:scale(1.04);transition:transform 1.2s var(--ease),opacity .8s}.intro__veil{background:linear-gradient(90deg,rgba(12,6,8,.76),rgba(12,6,8,.27),rgba(12,6,8,.7)),linear-gradient(rgba(0,0,0,.1),rgba(0,0,0,.35))}.intro__copy{position:relative;z-index:3;display:grid;justify-items:center;text-align:center;padding:24px;transition:.55s var(--ease)}.intro__copy .micro{color:rgba(255,255,255,.66)}.intro__copy h1{margin:18px 0 30px;font:500 clamp(54px,8vw,96px)/.8 "Cormorant Garamond",serif;letter-spacing:-.055em}.intro__copy h1 em{font-weight:400;color:#d79da8}.intro__copy small{margin-top:18px;font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:rgba(255,255,255,.52)}.round-button{display:flex;align-items:center;gap:20px;min-height:54px;padding:0 11px 0 24px;border:1px solid rgba(255,255,255,.5);border-radius:999px;background:rgba(128,23,45,.9);color:#fff;font-size:10px;letter-spacing:.16em;text-transform:uppercase;cursor:pointer}.round-button i{display:grid;place-items:center;width:34px;height:34px;border-radius:50%;background:#fff;color:var(--wine);font-style:normal}.intro__wipe{position:absolute;z-index:5;top:0;bottom:0;width:50.1%;background:var(--paper);transform:scaleX(0);transition:transform .9s var(--ease)}.intro__wipe--left{left:0;transform-origin:left}.intro__wipe--right{right:0;transform-origin:right}.intro.is-opening .intro__copy{opacity:0;transform:translateY(-18px)}.intro.is-opening .intro__photo{transform:scale(1.12);opacity:.7}.intro.is-opening .intro__wipe{transform:scaleX(1)}
.header{position:sticky;top:0;z-index:100;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:28px;width:var(--wide);height:72px;margin:auto;border-bottom:1px solid rgba(217,203,195,.72);background:rgba(246,240,233,.88);backdrop-filter:blur(16px)}.brand{font:600 28px/1 "Cormorant Garamond",serif}.brand em{font-weight:400;color:var(--wine)}.header nav{display:flex;justify-content:center;gap:28px}.header nav a,.header__date{font-size:9px;letter-spacing:.15em;text-transform:uppercase}.header nav a{position:relative;color:var(--muted);padding:12px 0}.header nav a::after{content:"";position:absolute;left:0;right:0;bottom:7px;height:1px;background:var(--wine);transform:scaleX(0);transition:.25s}.header nav a:hover::after,.header nav a.is-active::after{transform:scaleX(1)}.header__date{color:var(--wine)}.menu-button,.mobile-menu{display:none}
.hero{padding-top:clamp(52px,6vw,90px);padding-bottom:70px}.hero__grid{display:grid;grid-template-columns:minmax(360px,.76fr) minmax(600px,1.24fr);gap:clamp(42px,6vw,92px);align-items:center;min-height:680px}.hero__copy{position:relative;z-index:5;padding-left:clamp(0px,2vw,30px)}.hero__copy h1{margin:24px 0 22px;font:500 clamp(68px,7.5vw,96px)/.73 "Cormorant Garamond",serif;letter-spacing:-.06em}.hero__copy h1 span{display:block}.hero__copy h1 span:last-child{text-align:right}.hero__copy h1 em{display:block;margin:-.12em 0 -.08em 42%;font-size:.65em;font-weight:400;color:var(--wine)}.hero__copy>p{max-width:480px;font:400 16px/1.75 "Cormorant Garamond",serif;font-size:19px}.hero__actions{display:flex;align-items:center;gap:24px;flex-wrap:wrap;margin-top:30px}.hero__media{position:relative;min-height:680px;perspective:1200px}.hero__burgundy{position:absolute;z-index:0;right:0;top:5%;width:36%;height:86%;background:linear-gradient(150deg,#951f38,#5b0e20)}.hero__photo{position:absolute;z-index:2;left:0;top:0;width:82%;height:83%;overflow:hidden;box-shadow:var(--shadow);clip-path:inset(0)}.hero__photo::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,transparent 60%,rgba(44,10,18,.16))}.hero__photo img{filter:grayscale(1) contrast(1.06);object-position:center 27%;transition:transform .8s var(--ease)}.hero__mini{position:absolute;z-index:4;left:-4%;bottom:0;width:24%;aspect-ratio:3/4;padding:8px 8px 30px;background:#fff;box-shadow:0 20px 45px rgba(42,20,24,.18);transform:rotate(-3.5deg)}.hero__mini img{filter:grayscale(1)}.hero__mini figcaption{position:absolute;left:10px;bottom:9px;font:400 9px/1 "Cormorant Garamond",serif;color:var(--wine)}.hero__date{position:absolute;z-index:5;right:4%;top:14%;display:grid;justify-items:center;color:#fff}.hero__date span{font:400 76px/.82 "Cormorant Garamond",serif}.hero__date b,.hero__date small{font-size:8px;letter-spacing:.18em;text-transform:uppercase}.hero__date b{margin-top:10px}.hero__date small{margin-top:5px;opacity:.65}.hero__stamp{position:absolute;z-index:5;right:2%;bottom:14%;display:grid;justify-items:center;gap:9px;color:#fff;transform:rotate(-8deg)}.hero__stamp span,.hero__stamp b{font-size:8px;letter-spacing:.16em}.hero__stamp i{width:76px;height:1px;background:rgba(255,255,255,.55)}.hero__footer{display:grid;grid-template-columns:auto 1fr auto;gap:24px;align-items:center;margin-top:10px;font-size:9px;letter-spacing:.16em;color:var(--muted)}.hero__footer i{height:1px;background:linear-gradient(90deg,var(--wine),transparent)}
.letter{background:var(--white)}.letter__grid,.story__grid,.venue__grid,.rsvp__grid{display:grid;grid-template-columns:minmax(350px,.74fr) minmax(580px,1.26fr);gap:clamp(60px,8vw,120px);align-items:center}.section-copy h2,.program__head h2,.dress__head h2,.contacts__head h2,.wishes h2{margin:18px 0 24px;font:500 clamp(58px,6vw,92px)/.84 "Cormorant Garamond",serif;letter-spacing:-.05em}.section-copy h2 em,.program__head h2 em,.dress__head h2 em,.contacts__head h2 em,.wishes h2 em{font-weight:400;color:var(--wine)}.section-copy p{max-width:520px;font:400 19px/1.7 "Cormorant Garamond",serif}.section-copy .script{display:block;margin-top:24px}
.envelope-stage{display:grid;justify-items:center;gap:16px;perspective:1300px}.envelope-stage__label,.envelope-stage__hint{font-size:9px;letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}.envelope{position:relative;width:min(720px,100%);aspect-ratio:1.48/1;padding:0;border:0;background:transparent;cursor:pointer;transform-style:preserve-3d;isolation:isolate}.envelope__shadow{position:absolute;z-index:0;left:8%;right:8%;bottom:-2%;height:18%;border-radius:50%;background:rgba(77,39,45,.18);filter:blur(22px);transition:.8s var(--ease)}.envelope__back{position:absolute;z-index:1;inset:16% 3% 4%;background:#e9d5cb;border:1px solid #d9c0b5}.letter-card{position:absolute;z-index:2;left:13%;right:13%;top:11%;height:68%;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:28px;background:#fffdf8;border:1px solid #e8dad2;box-shadow:0 15px 36px rgba(54,26,31,.11);transition:transform 1s var(--ease),box-shadow .8s;transform:translateZ(1px)}.letter-card small,.letter-card b{font-size:9px;letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}.letter-card strong{margin:12px 0 9px;font:500 clamp(36px,4vw,60px)/.9 "Cormorant Garamond",serif}.letter-card strong em{font-weight:400;color:var(--wine)}.letter-card>i{width:54px;height:1px;margin:3px 0 13px;background:var(--wine)}.letter-card p{max-width:360px;margin:13px 0 0;font:400 16px/1.4 "Cormorant Garamond",serif}.envelope__flap{position:absolute;z-index:5;left:3%;right:3%;top:16%;height:47%;background:#f0e1d9;clip-path:polygon(0 0,50% 100%,100% 0);transform-origin:50% 0;transition:transform .75s var(--ease);backface-visibility:visible}.envelope__left,.envelope__right,.envelope__pocket{position:absolute;z-index:4;left:3%;right:3%;bottom:4%;height:50%;background:#e3c9be}.envelope__left{clip-path:polygon(0 0,52% 100%,0 100%)}.envelope__right{clip-path:polygon(100% 0,48% 100%,100% 100%)}.envelope__pocket{background:#ead4cb;clip-path:polygon(0 0,50% 72%,100% 0,100% 100%,0 100%)}.seal{position:absolute;z-index:8;left:50%;top:49%;display:grid;place-items:center;width:62px;height:62px;border-radius:50%;background:radial-gradient(circle at 35% 28%,#a82a43,#74142a 65%,#55101f);box-shadow:0 8px 22px rgba(83,13,30,.3),inset 0 0 0 3px rgba(255,255,255,.08);transform:translate(-50%,-50%);transition:.38s var(--ease)}.seal>i{position:absolute;inset:7px;border:1px solid rgba(255,255,255,.26);border-radius:50%}.seal>b{font:500 18px/1 "Cormorant Garamond",serif;color:#fff}.seal>span{position:absolute;left:50%;top:50%;width:5px;height:5px;border-radius:50%;background:var(--wine);opacity:0}.envelope:hover .seal{transform:translate(-50%,-50%) scale(1.07) rotate(-4deg)}.envelope.is-open .envelope__flap{transform:rotateX(178deg);z-index:1}.envelope.is-open .letter-card{transform:translateY(-46%) translateZ(30px);box-shadow:0 30px 60px rgba(54,26,31,.17)}.envelope.is-open .seal{opacity:0;transform:translate(-50%,-50%) scale(.55) rotate(15deg)}.envelope.is-opening .seal>span{animation:sealParticle .6s var(--ease) both}.envelope.is-opening .seal>span:nth-of-type(1){--x:-48px;--y:-22px}.envelope.is-opening .seal>span:nth-of-type(2){--x:45px;--y:-30px}.envelope.is-opening .seal>span:nth-of-type(3){--x:-34px;--y:42px}.envelope.is-opening .seal>span:nth-of-type(4){--x:42px;--y:34px}@keyframes sealParticle{20%{opacity:1}to{opacity:0;transform:translate(var(--x),var(--y)) scale(.2)}}.envelope.is-open .envelope__shadow{transform:scaleX(1.1);opacity:.65}
.story__visual{position:relative;min-height:580px}.story__visual figure:first-child{position:absolute;right:0;top:0;width:82%;height:86%;box-shadow:var(--shadow);overflow:hidden}.story__visual figure:first-child img{filter:grayscale(1);object-position:center 30%}.story__visual figure:nth-child(2){position:absolute;left:0;bottom:0;width:29%;aspect-ratio:3/4;padding:7px 7px 27px;background:#fff;box-shadow:0 18px 40px rgba(40,20,24,.15);transform:rotate(3deg)}.story__visual figure:nth-child(2) img{filter:grayscale(1)}.story__visual>span{position:absolute;left:3%;top:2%;font:400 28px/1 "Cormorant Garamond",serif;color:var(--wine)}
.date{background:var(--white);text-align:center}.date .shell{display:grid;justify-items:center}.date__poster{position:relative;display:flex;align-items:center;gap:clamp(30px,6vw,84px);margin:34px 0 10px}.date__poster span{font:400 clamp(58px,8vw,96px)/1 "Cormorant Garamond",serif;color:#cfc3bd}.date__poster strong{position:relative;z-index:2;font:500 clamp(80px,11vw,96px)/.8 "Cormorant Garamond",serif}.date__poster i{position:absolute;left:50%;top:50%;width:190px;height:132px;border:2px solid var(--wine);border-radius:50%;transform:translate(-50%,-50%) rotate(-8deg)}.date h2{margin:10px 0 12px;font:500 clamp(34px,4vw,54px)/1 "Cormorant Garamond",serif;letter-spacing:.04em}.date>div>p{color:var(--muted)}.countdown{display:grid;grid-template-columns:repeat(4,1fr);margin-top:42px}.countdown div{min-width:130px;padding:0 25px;border-left:1px solid var(--line)}.countdown div:first-child{border-left:0}.countdown b{display:block;font:500 clamp(38px,4vw,60px)/1 "Cormorant Garamond",serif}.countdown span{font-size:9px;letter-spacing:.14em;text-transform:uppercase;color:var(--muted)}
.venue{background:var(--paper-2)}.venue__media{position:relative;min-height:570px}.venue__media>img{position:absolute;inset:0 8% 13% 0;width:92%;height:87%;filter:grayscale(1);box-shadow:var(--shadow)}.venue__map{position:absolute;z-index:3;right:0;bottom:0;width:330px;height:205px;display:flex;flex-direction:column;justify-content:flex-end;padding:28px;background:rgba(255,253,249,.97);border:1px solid var(--line);box-shadow:0 16px 40px rgba(55,27,31,.12)}.venue__map::before{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(128,23,45,.08) 1px,transparent 1px) 0 0/50px 50px,linear-gradient(rgba(128,23,45,.07) 1px,transparent 1px) 0 0/50px 50px}.venue__map>*{position:relative}.venue__map span,.venue__map small{font-size:8px;letter-spacing:.15em;color:var(--muted)}.venue__map i{width:14px;height:14px;margin:28px 0 14px;border-radius:50% 50% 50% 0;background:var(--wine);transform:rotate(-45deg)}.venue__map b{font:500 27px/1 "Cormorant Garamond",serif}.venue__details{display:grid;gap:7px;margin:24px 0 30px;font-size:10px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}
.scene--dark{background:var(--dark);color:#fff}.scene--dark .micro{color:rgba(255,255,255,.52)}.program__head{display:grid;grid-template-columns:1fr 1fr;gap:30px;align-items:end;margin-bottom:56px}.program__head .micro{grid-column:1/-1}.program__head h2{margin:0}.program__head h2 em{color:#d895a2}.program__head p{max-width:440px;color:rgba(255,255,255,.6);line-height:1.7}.program__grid{display:grid;grid-template-columns:minmax(330px,.64fr) minmax(500px,1.36fr);gap:70px}.program__list{display:grid;align-content:center}.program-item{display:grid;grid-template-columns:80px 1fr 30px;align-items:center;gap:16px;min-height:82px;padding:0;border:0;border-bottom:1px solid rgba(255,255,255,.12);background:none;color:rgba(255,255,255,.48);text-align:left;cursor:pointer;transition:.25s}.program-item span{font:400 27px/1 "Cormorant Garamond",serif}.program-item strong{font-size:11px;letter-spacing:.12em;text-transform:uppercase}.program-item i{width:18px;height:1px;background:currentColor;transition:.25s}.program-item:hover,.program-item.is-active{color:#fff;transform:translateX(8px)}.program-item.is-active i{width:30px}.program__preview{position:relative;min-height:520px;overflow:hidden}.program__preview>img{filter:grayscale(1);transition:opacity .18s,transform .6s}.program__preview.is-changing>img{opacity:.25;transform:scale(1.02)}.program__preview::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 38%,rgba(14,8,10,.84))}.program__preview>div{position:absolute;z-index:2;left:36px;right:36px;bottom:34px}.program__preview span{font-size:9px;letter-spacing:.18em;color:#d895a2}.program__preview h3{margin:8px 0;font:500 clamp(38px,4vw,62px)/.9 "Cormorant Garamond",serif}.program__preview p{max-width:500px;margin:0;color:rgba(255,255,255,.66)}
.dress{background:var(--white)}.dress__head{display:grid;grid-template-columns:1.1fr .9fr;gap:70px;align-items:end}.dress__head h2{margin-bottom:0}.dress__head>div:last-child>p{max-width:520px;font:400 18px/1.7 "Cormorant Garamond",serif}.dress__note{color:var(--wine)}.palette{display:grid;grid-template-columns:repeat(5,1fr);margin-top:52px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.palette>span{display:grid;grid-template-columns:34px 1fr;align-items:center;gap:12px;padding:16px;border-left:1px solid var(--line)}.palette>span:first-of-type{border-left:0}.palette i{width:34px;height:34px;border-radius:50%;box-shadow:inset 0 0 0 1px rgba(0,0,0,.08)}.palette b{font-size:8px;letter-spacing:.14em;text-transform:uppercase}.dress__toolbar{display:flex;justify-content:space-between;align-items:center;margin-top:50px}.dress__toolbar>div{display:flex;gap:8px}.dress__toolbar button{min-height:38px;padding:0 17px;border:1px solid var(--line);border-radius:999px;background:transparent;font-size:9px;letter-spacing:.12em;text-transform:uppercase;cursor:pointer}.dress__toolbar button.is-active{background:var(--wine);border-color:var(--wine);color:#fff}.dress__toolbar>span{font-size:9px;letter-spacing:.12em;text-transform:uppercase;color:var(--muted)}.lookbook{display:grid;grid-template-columns:repeat(4,minmax(220px,1fr));gap:12px;width:var(--wide);margin:28px auto 0}.look{position:relative;aspect-ratio:3/4;padding:0;border:0;background:#ddd;overflow:hidden;cursor:zoom-in}.look img{transition:transform .7s var(--ease),filter .4s}.look>span{position:absolute;inset:auto 0 0;display:grid;gap:4px;padding:50px 18px 17px;background:linear-gradient(transparent,rgba(14,8,9,.74));color:#fff;text-align:left;transform:translateY(23px);transition:.35s}.look span b{font-size:9px;letter-spacing:.16em}.look span i{font:400 17px/1.3 "Cormorant Garamond",serif}.look:hover img{transform:scale(1.045);filter:saturate(.85)}.look:hover>span,.look:focus-visible>span{transform:none}.look.is-hidden{display:none}
.wishes{text-align:center}.wishes__rail{display:grid;grid-template-columns:repeat(3,1fr);margin-top:50px;border-top:1px solid var(--line);border-bottom:1px solid var(--line);text-align:left}.wishes article{min-height:280px;padding:32px;border-left:1px solid var(--line)}.wishes article:first-of-type{border-left:0}.wishes article>span{font:400 26px/1 "Cormorant Garamond",serif;color:var(--wine)}.wishes article h3{margin:62px 0 14px;font:500 30px/1 "Cormorant Garamond",serif}.wishes article p{color:var(--muted);line-height:1.7}
.contacts{background:var(--paper-2)}.contacts__head{display:grid;grid-template-columns:1fr 1fr;gap:50px;align-items:end}.contacts__head .micro{grid-column:1/-1}.contacts__head h2{margin:0}.contacts__head>p{max-width:440px;line-height:1.7}.contacts__list{display:grid;grid-template-columns:repeat(3,1fr);margin-top:60px;border-top:1px solid var(--line);border-bottom:1px solid var(--line)}.contacts__list a{display:grid;min-height:250px;padding:30px;border-left:1px solid var(--line);transition:.3s}.contacts__list a:first-of-type{border-left:0}.contacts__list a:hover{background:var(--wine);color:#fff}.contacts__list span,.contacts__list i{font-size:9px;letter-spacing:.15em;font-style:normal}.contacts__list strong{margin:auto 0 6px;font:500 40px/1 "Cormorant Garamond",serif}.contacts__list b{font-size:11px;font-weight:500}.contacts__list i{margin-top:22px;color:var(--wine)}.contacts__list a:hover i{color:#fff}
.rsvp{background:var(--white)}.rsvp-form{display:grid;grid-template-columns:1fr 1fr;gap:20px}.rsvp-form>[data-form-fields]{display:contents}.rsvp-form label,.rsvp-form fieldset{display:grid;gap:8px;margin:0;padding:0;border:0}.rsvp-form label>span,.rsvp-form legend{margin-bottom:7px;font-size:9px;letter-spacing:.13em;text-transform:uppercase;color:var(--muted)}.rsvp-form input,.rsvp-form select,.rsvp-form textarea{width:100%;min-height:50px;padding:12px 0;border:0;border-bottom:1px solid var(--line);border-radius:0;background:transparent;outline:none}.rsvp-form input:focus,.rsvp-form select:focus,.rsvp-form textarea:focus{border-color:var(--wine)}.rsvp-form fieldset,.rsvp-form label:has(textarea),.rsvp-form .button,.rsvp-form>small,.rsvp-success{grid-column:1/-1}.rsvp-form fieldset label{display:inline-flex;margin:4px 12px 4px 0}.rsvp-form fieldset input{width:auto;min-height:0}.rsvp-form .button{justify-self:start;margin-top:14px}.rsvp-form>small{color:var(--muted)}.rsvp-success{padding:24px;border:1px solid var(--wine);color:var(--wine);font:500 24px/1.4 "Cormorant Garamond",serif}
.finale{min-height:760px;padding:0;background:var(--dark);color:#fff}.finale>figure{position:absolute;inset:0}.finale>figure::after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(12,7,8,.82),rgba(12,7,8,.18),rgba(12,7,8,.55))}.finale>figure img{filter:grayscale(1)}.finale>div{position:relative;z-index:2;display:grid;place-items:center;align-content:center;min-height:760px;text-align:center}.finale .micro{color:rgba(255,255,255,.58)}.finale h2{margin:24px 0 16px;font:500 clamp(64px,8vw,96px)/.8 "Cormorant Garamond",serif;letter-spacing:-.05em}.finale h2 em{font-weight:400;color:#d895a2}.finale p{font:400 20px/1.4 "Cormorant Garamond",serif}.finale>div>b,.finale a{margin-top:16px;font-size:9px;letter-spacing:.18em}.finale a{border-bottom:1px solid rgba(255,255,255,.4);padding-bottom:5px}
.lightbox{position:fixed;inset:0;z-index:220;display:grid;place-items:center;background:rgba(15,9,10,.94);opacity:0;visibility:hidden;transition:.3s}.lightbox.is-open{opacity:1;visibility:visible}.lightbox figure{width:min(560px,82vw);height:min(78vh,760px)}.lightbox img{object-fit:contain}.lightbox figcaption{text-align:center;color:#fff;font:400 20px/1.4 "Cormorant Garamond",serif}.lightbox>button{position:absolute;border:0;background:none;color:#fff;cursor:pointer}.lightbox>button:first-child{right:28px;top:24px;font-size:10px;letter-spacing:.14em;text-transform:uppercase}.lightbox__prev{left:28px;top:50%;font-size:30px}.lightbox__next{right:28px;top:50%;font-size:30px}
[data-reveal]{opacity:0;transform:translateY(24px)}[data-reveal="left"]{transform:translateX(-24px)}[data-reveal="right"]{transform:translateX(24px)}[data-reveal="clip"]{clip-path:inset(12% 0 0 0)}[data-reveal].is-visible{opacity:1;transform:none;clip-path:inset(0);transition:opacity .8s var(--ease),transform .8s var(--ease),clip-path 1s var(--ease)}
@media(max-width:1100px){:root{--shell:min(100% - 48px,920px);--wide:min(100% - 48px,1040px)}.header nav{gap:16px}.hero__grid,.letter__grid,.story__grid,.venue__grid,.rsvp__grid{grid-template-columns:1fr 1.2fr;gap:45px}.hero__grid{min-height:600px}.hero__media{min-height:590px}.program__grid{grid-template-columns:.8fr 1.2fr;gap:40px}.lookbook{grid-template-columns:repeat(3,1fr)}}
@media(max-width:800px){:root{--shell:calc(100vw - 36px);--wide:calc(100vw - 36px)}.scene{padding-block:86px}.header{grid-template-columns:1fr auto;width:calc(100vw - 36px)}.header nav,.header__date{display:none}.menu-button{display:grid;gap:5px;width:42px;height:42px;place-content:center;border:0;background:none}.menu-button i{width:22px;height:1px;background:var(--ink);transition:.25s}.menu-button[aria-expanded="true"] i:first-child{transform:translateY(3px) rotate(45deg)}.menu-button[aria-expanded="true"] i:last-child{transform:translateY(-3px) rotate(-45deg)}.mobile-menu{position:fixed;z-index:90;inset:72px 0 auto;height:calc(100dvh - 72px);display:grid;place-items:center;background:var(--paper);transform:translateY(-110%);transition:.45s var(--ease)}.mobile-menu.is-open{transform:none}.mobile-menu nav{display:grid;gap:20px;text-align:center}.mobile-menu a{font:500 40px/1 "Cormorant Garamond",serif}.hero__grid,.letter__grid,.story__grid,.venue__grid,.rsvp__grid{grid-template-columns:1fr}.hero__copy{padding:0}.hero__copy h1{font-size:clamp(64px,20vw,88px)}.hero__media{min-height:560px}.hero__photo{width:88%;height:78%}.hero__mini{width:31%;left:2%}.hero__footer{grid-template-columns:auto 1fr}.hero__footer a{display:none}.letter__grid{gap:72px}.envelope-stage{order:2}.envelope.is-open .letter-card{transform:translateY(-34%) translateZ(20px)}.story__visual{min-height:530px}.date__poster{gap:32px}.countdown div{min-width:0;padding:0 12px}.venue__grid{gap:55px}.program__head,.dress__head,.contacts__head{grid-template-columns:1fr}.program__head .micro,.contacts__head .micro{grid-column:auto}.program__grid{grid-template-columns:1fr}.program__preview{min-height:460px;order:-1}.lookbook{display:flex;width:100%;padding-inline:18px;overflow-x:auto;scroll-snap-type:x mandatory}.look{flex:0 0 72vw;scroll-snap-align:center}.dress__toolbar>span{display:none}.palette{grid-template-columns:repeat(5,170px);overflow-x:auto}.wishes__rail,.contacts__list{grid-template-columns:1fr}.wishes article,.contacts__list a{border-left:0;border-top:1px solid var(--line)}.wishes article:first-of-type,.contacts__list a:first-of-type{border-top:0}.rsvp__grid{gap:50px}.finale,.finale>div{min-height:680px}}
@media(max-width:520px){:root{--shell:calc(100vw - 28px);--wide:calc(100vw - 28px)}.scene{padding-block:72px}.micro{font-size:8px}.intro__copy h1{font-size:60px}.hero{padding-top:32px}.hero__media{min-height:470px}.hero__date span{font-size:58px}.hero__stamp{display:none}.hero__mini{width:34%}.section-copy h2,.program__head h2,.dress__head h2,.contacts__head h2,.wishes h2{font-size:54px}.envelope{width:108%;margin-left:-4%}.letter-card{padding:18px}.letter-card p{font-size:13px}.seal{width:50px;height:50px}.story__visual{min-height:440px}.date__poster span{font-size:48px}.date__poster strong{font-size:84px}.date__poster i{width:140px;height:105px}.countdown{width:100%;margin-top:32px}.countdown b{font-size:34px}.countdown span{font-size:7px}.venue__media{min-height:480px}.venue__map{width:250px;height:170px;padding:20px}.program__preview{min-height:390px}.program-item{grid-template-columns:66px 1fr 24px}.dress__head{gap:20px}.look{flex-basis:82vw}.contacts__list a{min-height:210px}.rsvp-form{grid-template-columns:1fr}.rsvp-form>*{grid-column:1!important}.lightbox__prev{left:8px}.lightbox__next{right:8px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{animation-duration:.01ms!important;animation-iteration-count:1!important;transition-duration:.01ms!important}[data-reveal]{opacity:1;transform:none;clip-path:none}.intro__wipe{transition:none}}

/* V2 composition and motion pass */
.header{width:100%;padding-inline:max(28px,calc((100vw - 1400px)/2 + 48px));border-bottom-color:rgba(217,203,195,.9)}
.hero__grid{grid-template-columns:minmax(350px,.72fr) minmax(0,1.28fr)}
.hero__media{isolation:isolate}
.hero__photo{left:0;right:22%;width:auto;height:88%;box-shadow:0 30px 80px rgba(44,19,24,.18)}
.hero__photo img{object-position:center center}
.hero__burgundy{right:0;top:7%;width:31%;height:80%}
.hero__mini{left:auto;right:0;bottom:0;width:18%;transform:rotate(2deg)}
.hero__mini:hover{transform:rotate(0) translateY(-5px)}
.hero__date{right:6%;top:13%}.hero__stamp{right:4%;bottom:26%}

.letter::before{content:"";position:absolute;left:50%;top:50%;width:min(760px,70vw);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(128,23,45,.075),transparent 68%);transform:translate(-22%,-50%);pointer-events:none}
.envelope-stage{position:relative;min-height:590px;align-content:center;perspective:1600px;--mx:0deg;--my:0deg}
.envelope-stage__label{margin-bottom:22px}
.envelope{width:min(760px,100%);aspect-ratio:1.55/1;transform:rotateX(var(--my)) rotateY(var(--mx));transition:transform .35s ease;overflow:visible}
.envelope__back{inset:14% 2% 5%;background:linear-gradient(145deg,#f0dfd6,#dfc5ba);box-shadow:inset 0 0 0 1px rgba(91,43,48,.09)}
.letter-card{z-index:3;left:11%;right:11%;top:19%;height:61%;padding:34px 46px;background:linear-gradient(135deg,#fffefa,#fbf5ee);box-shadow:0 8px 24px rgba(54,26,31,.08);transform:translateY(10%) translateZ(2px);transition:transform .9s .05s var(--ease),box-shadow .6s}
.letter-card::before{content:"";position:absolute;inset:14px;border:1px solid rgba(128,23,45,.12);pointer-events:none}
.envelope__left,.envelope__right,.envelope__pocket{left:2%;right:2%;bottom:5%;height:52%}
.envelope__left{z-index:5;background:linear-gradient(135deg,#ead3c9,#ddc0b5);clip-path:polygon(0 0,54% 100%,0 100%)}
.envelope__right{z-index:5;background:linear-gradient(225deg,#ead3c9,#d9b9ae);clip-path:polygon(100% 0,46% 100%,100% 100%)}
.envelope__pocket{z-index:6;background:linear-gradient(180deg,#ecd7ce,#dfc2b7);clip-path:polygon(0 0,50% 65%,100% 0,100% 100%,0 100%);filter:drop-shadow(0 -1px 0 rgba(103,52,58,.08))}
.envelope__flap{z-index:7;left:2%;right:2%;top:14%;height:50%;background:linear-gradient(155deg,#f3e5de,#dfc4ba);clip-path:polygon(0 0,50% 100%,100% 0);transform:rotateX(0deg) translateZ(4px);transform-origin:50% 0;transition:transform .78s .12s var(--ease),filter .5s;filter:drop-shadow(0 8px 9px rgba(66,30,35,.08));backface-visibility:visible}
.seal{top:48%;z-index:9;width:66px;height:66px;box-shadow:0 10px 28px rgba(83,13,30,.34),inset 0 0 0 2px rgba(255,255,255,.12)}
.envelope.is-open .envelope__flap{z-index:2;transform:rotateX(180deg) translateZ(0);filter:drop-shadow(0 -8px 12px rgba(66,30,35,.08));transition-delay:0s}
.envelope.is-open .letter-card{z-index:4;transform:translateY(-57%) translateZ(44px);box-shadow:0 32px 72px rgba(54,26,31,.18);transition-delay:.45s}
.envelope.is-open .seal{transition-delay:0s}.envelope.is-open .envelope__shadow{transform:scaleX(1.16) translateY(12px);opacity:.55}
.envelope.is-closing .letter-card{transition-delay:0s}.envelope.is-closing .envelope__flap{transition-delay:.55s}.envelope.is-closing .seal{transition-delay:.75s}
.envelope-stage__hint{min-height:14px}

.story__grid{grid-template-columns:minmax(0,1.12fr) minmax(360px,.88fr)}
.story__visual{min-height:660px}
.story__visual figure:first-child{left:8%;right:auto;top:0;width:min(76%,520px);height:auto;aspect-ratio:4/5}
.story__visual figure:first-child img{object-position:center center}
.story__visual figure:nth-child(2){left:0;bottom:2%;width:24%}

.date__poster{gap:clamp(22px,4vw,60px)}
.date__poster>span{opacity:.58;transition:opacity .35s,transform .5s var(--ease)}
.date__poster:hover>span:first-child{transform:translateX(-8px);opacity:.8}.date__poster:hover>span:last-child{transform:translateX(8px);opacity:.8}
.date__heart{position:relative;display:grid;place-items:center;width:240px;height:210px;isolation:isolate}
.date__heart svg{position:absolute;inset:0;width:100%;height:100%;overflow:visible;filter:drop-shadow(0 12px 24px rgba(128,23,45,.11))}
.date__heart svg path{fill:rgba(128,23,45,.025);stroke:var(--wine);stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:650;stroke-dashoffset:650}
.date.is-in-view .date__heart svg path{animation:drawHeart 1.55s .2s var(--ease) forwards,heartBreath 3.8s 2s ease-in-out infinite}
.date__poster .date__heart strong{position:relative;z-index:2;font-size:92px;transform:translateY(-5px)}
.date__poster .date__heart i{position:absolute;z-index:3;width:5px;height:5px;border:0;border-radius:50%;background:var(--wine);opacity:0;transform:none}
.date__poster .date__heart i:nth-of-type(1){left:18%;top:28%}.date__poster .date__heart i:nth-of-type(2){right:16%;top:38%}.date__poster .date__heart i:nth-of-type(3){right:32%;bottom:16%}
.date.is-in-view .date__heart i{animation:heartSpark 2.6s 1.15s ease-in-out infinite}.date.is-in-view .date__heart i:nth-of-type(2){animation-delay:1.55s}.date.is-in-view .date__heart i:nth-of-type(3){animation-delay:1.95s}
@keyframes drawHeart{to{stroke-dashoffset:0}}@keyframes heartBreath{0%,100%{transform:scale(1)}50%{transform:scale(1.025)}}@keyframes heartSpark{0%,100%{opacity:0;transform:scale(.2)}35%{opacity:.65;transform:scale(1.25)}60%{opacity:0;transform:translateY(-12px) scale(.4)}}

.dress{background:#1b1114;color:#fff;padding-top:180px}
.dress::before{content:"THE EVENING EDIT  /  THE EVENING EDIT  /  THE EVENING EDIT";position:absolute;left:-2vw;right:-2vw;top:52px;white-space:nowrap;font:400 clamp(58px,8vw,96px)/1 "Cormorant Garamond",serif;letter-spacing:-.04em;color:rgba(255,255,255,.035);transform:rotate(-1deg)}
.dress .micro,.dress__toolbar>span{color:rgba(255,255,255,.5)}
.dress__head{grid-template-columns:1.2fr .8fr}.dress__head h2{font-size:clamp(64px,7vw,96px)}.dress__head h2 em,.dress__note{color:#d993a1}
.dress__head>div:last-child>p{color:rgba(255,255,255,.68)}
.palette{display:flex;grid-template-columns:none;gap:10px;margin-top:58px;padding-block:18px;border-color:rgba(255,255,255,.14);overflow-x:auto}
.palette>span{flex:1 0 160px;grid-template-columns:38px 1fr;border:1px solid rgba(255,255,255,.12)!important;border-radius:999px;padding:9px 14px}
.palette i{width:38px;height:38px}.palette b{color:rgba(255,255,255,.76)}
.dress__toolbar{margin-top:44px}.dress__toolbar button{border-color:rgba(255,255,255,.24);color:#fff}.dress__toolbar button.is-active{border-color:#d993a1;background:#d993a1;color:#1b1114}
.lookbook{display:flex;grid-template-columns:none;gap:18px;width:100%;margin-top:30px;padding:0 max(28px,calc((100vw - 1400px)/2 + 48px)) 78px;overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-color:#d993a1 rgba(255,255,255,.08);scrollbar-width:thin}
.look{flex:0 0 clamp(280px,27vw,410px);aspect-ratio:3/4;scroll-snap-align:start;background:#291c20;border:1px solid rgba(255,255,255,.1)}
.look:nth-of-type(2n){margin-top:64px}.look:nth-of-type(1),.look:nth-of-type(5){flex-basis:clamp(330px,34vw,500px)}
.look img{filter:saturate(.82) contrast(1.02)}.look img[src$=".jpg"]{transform:scale(1.65)}.look:hover img[src$=".jpg"]{transform:scale(1.73)}
.look>span{padding:80px 22px 20px;background:linear-gradient(transparent,rgba(15,8,10,.88));transform:none}
.look span i{color:rgba(255,255,255,.68)}

[data-cascade]{opacity:0;transform:translateY(28px);filter:blur(5px)}
[data-cascade="left"]{transform:translateX(-28px)}[data-cascade="right"]{transform:translateX(28px)}
[data-cascade].is-visible{opacity:1;transform:none;filter:blur(0);transition:opacity .75s var(--ease),transform .85s var(--ease),filter .7s ease;transition-delay:var(--cascade-delay,0ms)}

@media(max-width:1000px){.header{padding-inline:24px}.story__grid{grid-template-columns:1fr;gap:64px}.story__visual{min-height:620px}.story__visual figure:first-child{left:14%;width:min(72%,520px)}.story .section-copy{max-width:680px}.hero__photo{right:17%}.hero__mini{display:none}.hero__burgundy{width:24%}}
@media(max-width:800px){.header{padding-inline:18px}.hero__grid{grid-template-columns:1fr}.hero__media{min-height:540px}.hero__photo{left:0;right:8%;height:90%}.hero__burgundy{width:28%;height:82%}.hero__date{right:4%}.hero__stamp{display:none}.letter::before{width:100vw;transform:translate(-50%,-30%)}.envelope-stage{min-height:470px}.envelope{width:100%}.letter-card{padding:24px}.envelope.is-open .letter-card{transform:translateY(-44%) translateZ(28px)}.date__heart{width:190px;height:170px}.date__poster .date__heart strong{font-size:78px}.dress{padding-top:130px}.dress::before{top:44px}.dress__head{grid-template-columns:1fr}.lookbook{padding-inline:18px}.look:nth-of-type(2n){margin-top:38px}}
@media(max-width:520px){.hero__media{min-height:460px}.hero__photo{right:0;height:88%}.hero__burgundy{right:-14px;width:34%}.hero__date{right:1%}.envelope-stage{min-height:400px}.envelope{width:108%;margin-left:-4%}.letter-card{left:10%;right:10%;padding:18px 24px}.letter-card strong{font-size:34px}.letter-card p{display:none}.envelope.is-open .letter-card{transform:translateY(-36%) translateZ(20px)}.date__poster{gap:7px}.date__heart{width:150px;height:138px}.date__poster .date__heart strong{font-size:66px}.date__poster>span{font-size:42px}.story__visual{min-height:500px}.story__visual figure:first-child{left:8%;width:84%}.story__visual figure:nth-child(2){width:29%}.look{flex-basis:78vw}.look:nth-of-type(1),.look:nth-of-type(5){flex-basis:86vw}}
@media(prefers-reduced-motion:reduce){[data-cascade]{opacity:1;transform:none;filter:none}.date__heart svg path{stroke-dashoffset:0}.date__heart i{display:none}}

/* Dress code V3 — calm four-look editorial grid */
[data-repeat-item]{display:none!important}
.dress{padding-top:clamp(96px,9vw,148px)}
.dress::before{content:none}
.dress__head{grid-template-columns:minmax(0,1fr) minmax(320px,.72fr);align-items:center;padding-bottom:54px;border-bottom:1px solid rgba(255,255,255,.16)}
.dress__head h2{margin:18px 0 0}
.dress__head>div:last-child{max-width:520px;justify-self:end}
.palette{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));gap:0;margin-top:0;padding:0;border-top:0;border-bottom:1px solid rgba(255,255,255,.16);overflow:visible}
.palette>span:not([data-repeat-item]){display:flex;min-width:0;gap:14px;padding:20px 22px;border:0!important;border-right:1px solid rgba(255,255,255,.16)!important;border-radius:0}
.palette>span:not([data-repeat-item]):last-of-type{border-right:0!important}
.palette i{flex:0 0 42px;width:42px;height:42px}
.palette b{font-size:9px;letter-spacing:.16em}
.dress__toolbar{display:none}
.lookbook{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:24px;width:var(--wide);margin:56px auto 0;padding:0;overflow:visible;scroll-snap-type:none}
.look,.look:nth-of-type(1),.look:nth-of-type(5){width:100%;max-width:none;flex:none;aspect-ratio:4/5;margin:0;background:#25191c;scroll-snap-align:none}
.look:nth-of-type(2n){margin-top:0}
.look img,.look img[src$=".jpg"]{transform:none;filter:saturate(.82) contrast(1.02)}
.look:hover img,.look:hover img[src$=".jpg"]{transform:scale(1.025)}
.look>span{padding:100px 28px 26px}
.look span b{font-size:10px}.look span i{font-size:22px}
@media(max-width:800px){.dress__head{grid-template-columns:1fr;gap:16px}.dress__head>div:last-child{justify-self:start}.palette{grid-template-columns:repeat(2,1fr)}.palette>span:not([data-repeat-item]):nth-of-type(2){border-right:0!important}.lookbook{grid-template-columns:1fr;gap:16px;margin-top:36px}.look,.look:nth-of-type(1),.look:nth-of-type(5){aspect-ratio:4/5}}
@media(max-width:420px){.palette{grid-template-columns:1fr}.palette>span:not([data-repeat-item]){border-right:0!important;border-bottom:1px solid rgba(255,255,255,.12)!important}.palette>span:not([data-repeat-item]):last-of-type{border-bottom:0!important}}

/* Dress code V4 — reference-led Ladies / Gents collage */
.dress{min-height:1150px;padding:160px 0 70px;background:#fff;color:#0d0b0b;isolation:isolate;scroll-margin-top:72px}
.dress::before,.dress::after{content:"";position:absolute;z-index:0;left:-12vw;width:125vw;height:470px;border:1.25px solid #b3132b;border-radius:50%;pointer-events:none}
.dress::before{top:290px;transform:rotate(5deg)}
.dress::after{top:455px;transform:rotate(-2deg)}
.dress>*{position:relative;z-index:1}
.dress__head{display:block;width:min(620px,calc(100vw - 40px));padding:0;border:0;text-align:center}
.dress__head>div:first-child,.dress__head>div:last-child{max-width:none;justify-self:auto}
.dress__head .micro{display:none}
.dress__head h2{margin:0;font-size:clamp(62px,5.8vw,88px);line-height:.9;letter-spacing:-.065em;color:#090808}
.dress__head h2 em{color:inherit;font-style:normal}
.dress__head>div:last-child>p:first-child{max-width:570px;margin:24px auto 0;color:#171313;font:500 14px/1.45 "Courier New",monospace;text-align:left}
.dress__note{margin:13px auto 0!important;color:#171313!important;font:600 9px/1.4 Manrope,sans-serif!important;letter-spacing:.18em;text-align:center!important}
.palette{display:flex;width:260px;margin:28px auto 0;padding:0;border:0;overflow:visible}
.palette>span:not([data-repeat-item]){justify-content:center;min-width:0;padding:0;border:0!important;border-radius:0}
.palette i{width:42px;height:42px;flex-basis:42px;border:0;box-shadow:none}
.palette b{font-size:9px;color:#151111;letter-spacing:.18em}
.dress__toolbar{display:none}
.lookbook{position:relative;display:block;width:min(1280px,calc(100vw - 48px));min-height:690px;margin:38px auto 0;padding:0;overflow:visible}
.lookbook::before,.lookbook::after{position:absolute;z-index:5;top:10px;font:italic 500 42px/1 "Cormorant Garamond",Georgia,serif;color:#b3132b;pointer-events:none}
.lookbook::before{content:"Ladies";left:24%}.lookbook::after{content:"Gents";right:23%}
.look,.look:nth-of-type(1),.look:nth-of-type(5){position:absolute;width:auto;max-width:none;aspect-ratio:auto;margin:0;border:0;background:#f5f5f5;box-shadow:none;overflow:hidden;transition:transform .45s var(--ease),box-shadow .45s;scroll-snap-align:none}
.look:nth-of-type(1){left:4%;top:150px;width:15%;height:300px}.look:nth-of-type(2){left:15%;top:90px;width:19%;height:390px}.look:nth-of-type(3){left:31%;top:55px;width:12%;height:235px}.look:nth-of-type(4){left:27%;top:360px;width:18%;height:300px}
.look:nth-of-type(5){right:31%;top:175px;width:12%;height:245px}.look:nth-of-type(6){right:16%;top:80px;width:20%;height:390px}.look:nth-of-type(7){right:3%;top:70px;width:15%;height:285px}.look:nth-of-type(8){right:5%;top:380px;width:17%;height:285px}
.look img,.look img[src$=".jpg"]{width:100%;height:100%;object-fit:cover;transform:scale(1.16);filter:none;mix-blend-mode:multiply;transition:transform .6s var(--ease)}
.look:nth-of-type(3) img,.look:nth-of-type(5) img{transform:scale(1.32)}
.look:hover{z-index:8;transform:translateY(-8px) rotate(-1deg);box-shadow:0 22px 55px rgba(53,28,31,.14)}
.look:hover img,.look:hover img[src$=".jpg"]{transform:scale(1.23)}
.look:nth-of-type(3):hover img,.look:nth-of-type(5):hover img{transform:scale(1.39)}
.look>span{padding:70px 14px 13px;background:linear-gradient(transparent,rgba(12,9,9,.72));opacity:0;transform:translateY(10px);transition:.3s}
.look:hover>span,.look:focus-visible>span{opacity:1;transform:none}.look span i{font-size:15px;color:#fff}
@media(max-width:900px){.dress{min-height:auto;padding-bottom:88px}.dress::before,.dress::after{height:360px;top:330px}.lookbook{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px;min-height:0;margin-top:90px;overflow:visible}.lookbook::before{top:-60px;left:20%;font-size:34px}.lookbook::after{top:-60px;right:18%;font-size:34px}.look,.look:nth-of-type(n){position:relative;inset:auto;width:100%;height:auto;aspect-ratio:3/4;margin:0}.look img,.look img[src$=".jpg"],.look:nth-of-type(3) img,.look:nth-of-type(5) img{transform:scale(1.16)}.look:hover img,.look:hover img[src$=".jpg"]{transform:scale(1.2)}}
@media(max-width:560px){.dress{padding-top:72px}.dress__head h2{font-size:58px}.dress__head>div:last-child>p:first-child{text-align:center;font-size:12px}.lookbook{grid-template-columns:1fr;margin-top:80px}.lookbook::before{top:-52px;left:22%}.lookbook::after{display:none}.look:nth-of-type(5)::before{content:"Gents";position:absolute;z-index:4;left:50%;top:-54px;color:#b3132b;font:400 34px/1 "Marck Script",cursive;transform:translateX(-50%)}.look:nth-of-type(5){margin-top:70px}.dress::before,.dress::after{display:none}}

/* Envelope layering: the card is fully concealed until the flap opens. */
.envelope .letter-card{opacity:0;visibility:hidden;transition:opacity .22s .05s,visibility 0s .28s,transform .9s .05s var(--ease),box-shadow .6s}
.envelope.is-open .letter-card{opacity:1;visibility:visible;transform:translateY(-44%) translateZ(44px);transition:opacity .28s .4s,visibility 0s .4s,transform .9s .38s var(--ease),box-shadow .6s .38s}
.envelope.is-closing .letter-card{opacity:0;visibility:visible;transition-delay:0s}
@media(max-width:800px){.envelope.is-open .letter-card{transform:translateY(-36%) translateZ(28px)}}
@media(max-width:520px){.envelope.is-open .letter-card{transform:translateY(-28%) translateZ(18px)}}

/* V5 — neutral canvas, calmer dress-code composition and more breathing room. */
.header{border-bottom-color:rgba(128,23,45,.14);background:rgba(250,250,250,.9)}
.dress{min-height:1220px;padding:clamp(150px,11vw,190px) 0 clamp(130px,9vw,170px);background:#fff}
.dress::before,.dress::after{content:none}
.dress__head{width:min(650px,calc(100vw - 40px))}
.dress__head h2{line-height:.92;letter-spacing:-.04em}
.dress__head>div:last-child>p:first-child{margin-top:34px;line-height:1.55}
.dress__note{margin-top:18px!important}
.palette{margin-top:38px;padding-bottom:28px;border-bottom:1px solid rgba(128,23,45,.28)}
.lookbook{width:min(1320px,calc(100vw - 72px));min-height:720px;margin-top:92px}
.lookbook::before,.lookbook::after{top:0;color:#9b1730}
.lookbook::before{left:22%}.lookbook::after{right:22%}
.look,.look:nth-of-type(1),.look:nth-of-type(5){background:transparent;box-shadow:none;transition:transform .5s var(--ease)}
.look:nth-of-type(1){left:3%;top:190px;width:14%;height:275px}.look:nth-of-type(2){left:14%;top:105px;width:18%;height:365px}.look:nth-of-type(3){left:30%;top:70px;width:11%;height:220px}.look:nth-of-type(4){left:29%;top:390px;width:16%;height:275px}
.look:nth-of-type(5){right:32%;top:200px;width:10%;height:225px}.look:nth-of-type(6){right:15%;top:110px;width:18%;height:365px}.look:nth-of-type(7){right:2%;top:80px;width:14%;height:270px}.look:nth-of-type(8){right:6%;top:405px;width:15%;height:270px}
.look img,.look img[src$=".jpg"]{object-fit:contain;transform:none;filter:grayscale(1) contrast(1.06) brightness(1.04);mix-blend-mode:normal}
.look:nth-of-type(3) img,.look:nth-of-type(5) img{transform:none}
.look:hover{z-index:8;transform:translateY(-5px);box-shadow:none}
.look:hover img,.look:hover img[src$=".jpg"]{transform:scale(1.035);filter:grayscale(.25) contrast(1.04) brightness(1.03)}
.look:nth-of-type(3):hover img,.look:nth-of-type(5):hover img{transform:scale(1.035)}

@media(max-width:900px){
  .dress{min-height:auto;padding:120px 0 110px}
  .lookbook{gap:24px 18px;width:calc(100vw - 48px);margin-top:100px}
  .lookbook::before{top:-62px;left:20%}.lookbook::after{top:-62px;right:18%}
  .look,.look:nth-of-type(n){position:relative;inset:auto;width:100%;height:auto;aspect-ratio:3/4;margin:0;background:transparent}
  .look img,.look img[src$=".jpg"],.look:nth-of-type(3) img,.look:nth-of-type(5) img{object-fit:contain;transform:none}
  .look:hover img,.look:hover img[src$=".jpg"]{transform:scale(1.025)}
}
@media(max-width:560px){
  .dress{padding:100px 0}
  .lookbook{grid-template-columns:repeat(2,minmax(0,1fr));gap:18px 12px;width:calc(100vw - 36px);margin-top:92px}
  .lookbook::before{top:-56px;left:50%;transform:translateX(-50%)}
  .look:nth-of-type(5)::before{top:-62px;color:#9b1730;font-family:"Cormorant Garamond",Georgia,serif;font-style:italic}
  .look:nth-of-type(5){margin-top:76px}
  .look:nth-of-type(6){margin-top:76px}
}

/* One continuous thread connects the invitation from the hero to the finale. */
main{position:relative;isolation:isolate}
.love-thread{position:absolute;z-index:1;left:0;top:0;width:100%;height:100%;overflow:visible;pointer-events:none}
.love-thread__path{fill:none;stroke:#a91531;stroke-width:1.15;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;opacity:.52;transition:stroke-dashoffset .12s linear}
.scene>div{position:relative;z-index:2}
.scene>figure{z-index:2}
@media(max-width:800px){.love-thread__path{stroke-width:.8;opacity:.3}}
@media(prefers-reduced-motion:reduce){.love-thread__path{opacity:.24;transition:none}}

/* Signature opening: the page thread begins as a tied ribbon. */
.bow-button{position:relative;display:grid;width:min(820px,88vw);padding:0;border:0;background:none;color:#fff;place-items:center;cursor:pointer}
.bow{display:block;width:100%;height:auto;overflow:visible;filter:drop-shadow(0 8px 12px rgba(34,5,12,.22))}
.bow path{fill:none;stroke:#d69aa7;stroke-width:4;stroke-linecap:round;stroke-linejoin:round;vector-effect:non-scaling-stroke;transform-box:fill-box;transform-origin:center;transition:transform .8s cubic-bezier(.16,1,.3,1),opacity .45s ease,stroke .25s ease}
.bow__loop{fill:rgba(128,23,45,.16);stroke-width:5!important}
.bow__knot{fill:#8a1730;stroke:#e4b8c1;stroke-width:2;transform-box:fill-box;transform-origin:center;transition:transform .55s cubic-bezier(.16,1,.3,1),opacity .35s ease}
.bow-button__label{position:absolute;top:78%;font-size:9px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;transition:opacity .25s ease,transform .4s var(--ease)}
.bow-button:hover .bow path{stroke:#f1c9d1}.bow-button:hover .bow__knot{transform:scale(1.12)}
.bow-button:focus-visible{outline:1px solid rgba(255,255,255,.8);outline-offset:8px}
.intro.is-untying .bow__loop--left{opacity:0;transform:translate(-90px,-18px) rotate(-16deg) scale(.48)}
.intro.is-untying .bow__loop--right{opacity:0;transform:translate(90px,-18px) rotate(16deg) scale(.48)}
.intro.is-untying .bow__tail--left{opacity:0;transform:translate(-115px,34px) rotate(12deg)}
.intro.is-untying .bow__tail--right{opacity:0;transform:translate(115px,34px) rotate(-12deg)}
.intro.is-untying .bow__thread--left{transform:translateX(-115px) scaleX(1.22)}
.intro.is-untying .bow__thread--right{transform:translateX(115px) scaleX(1.22)}
.intro.is-untying .bow__knot{opacity:0;transform:scale(.35) rotate(18deg)}
.intro.is-untying .bow-button__label{opacity:0;transform:translateY(8px)}
.intro.is-opening .intro__copy{transition-delay:.12s}

/* Preserve the complete final photograph on narrow screens. */
.finale{min-height:0;aspect-ratio:3/2}
.finale>div{height:100%;min-height:0}
.finale>figure img{object-position:center 52%}
@media(max-width:800px){
  .bow-button{width:min(620px,96vw)}
  .bow path{stroke-width:3}.bow__loop{stroke-width:4!important}
  .finale{display:grid;min-height:0;padding:0;aspect-ratio:auto;background:#121011}
  .finale>figure{position:relative;inset:auto;height:auto;aspect-ratio:3/2}
  .finale>figure::after{background:linear-gradient(180deg,transparent 52%,#121011)}
  .finale>figure img{object-fit:cover;object-position:center}
  .finale>div{height:auto;min-height:520px;padding:70px 24px 90px}
}
@media(max-width:520px){.intro__copy{width:100vw;padding-inline:0}.intro__copy h1{font-size:clamp(44px,12.5vw,50px);letter-spacing:-.04em;white-space:nowrap}.bow-button{width:104vw}.bow-button__label{top:80%}}
@media(prefers-reduced-motion:reduce){
  .bow path,.bow__knot,.bow-button__label{transition-duration:.01ms!important}
  .intro.is-untying .bow__loop,.intro.is-untying .bow__tail,.intro.is-untying .bow__thread,.intro.is-untying .bow__knot{opacity:0}
}
