:root{
  --ivory:#f4efe7;
  --paper:#fbf7f1;
  --ink:#171412;
  --night:#151311;
  --wine:#7a1022;
  --wine-deep:#520812;
  --muted:#776f68;
  --rose:#d7aab0;
  --white:#fffaf4;
  --line:rgba(23,20,18,.16);
  --pad:clamp(22px,4vw,64px);
  --display:"Onest",Arial,sans-serif;
  --accent:"Cormorant Garamond",Georgia,serif;
}

*{box-sizing:border-box}
html{background:var(--ivory);scroll-behavior:auto}
body{margin:0;background:var(--ivory);color:var(--ink);font-family:var(--display);font-size:14px;line-height:1.5;overflow-x:hidden}
body.menu-open{overflow:hidden}
a{color:inherit;text-decoration:none}
img{display:block;width:100%;height:100%;object-fit:cover}
button,input,textarea{font:inherit;color:inherit}
button{cursor:pointer}
::selection{background:var(--wine);color:var(--white)}
.image-tone{position:absolute;inset:0;pointer-events:none;background:linear-gradient(180deg,rgba(90,40,25,.02),rgba(70,20,20,.09));mix-blend-mode:multiply}.image-tone--dark{background:linear-gradient(180deg,rgba(0,0,0,.03),rgba(0,0,0,.26))}.image-tone--hero{background:linear-gradient(180deg,rgba(0,0,0,.06),rgba(0,0,0,.26))}
.section-index{position:absolute;z-index:30;left:var(--pad);top:28px;display:flex;align-items:center;gap:12px;font-size:8px;letter-spacing:.19em;color:var(--muted)}.section-index span{font-weight:600;letter-spacing:0}.section-index b{font-weight:500}.section-index--light{color:rgba(255,250,244,.58)}
.eyebrow{font-size:8px;letter-spacing:.19em;color:var(--muted)}
.display{margin:0;font:500 clamp(64px,8.5vw,132px)/.83 var(--display);letter-spacing:-.065em;text-transform:uppercase}
.display em,.accent{font-family:var(--accent);font-weight:500;font-style:italic;text-transform:none}

/* loader / header */
.preloader{position:fixed;z-index:1000;inset:0;background:var(--ivory);display:grid;place-items:center;transition:opacity .55s ease,visibility .55s ease}.preloader.is-hidden{opacity:0;visibility:hidden}.preloader__mark{font:500 clamp(32px,3.4vw,54px)/1 var(--display);letter-spacing:-.05em}.preloader__mark em{font-family:var(--accent);font-weight:600;color:var(--wine)}.preloader__bar{position:absolute;left:50%;bottom:11vh;width:min(220px,42vw);height:1px;background:rgba(23,20,18,.12);transform:translateX(-50%);overflow:hidden}.preloader__bar i{display:block;width:32%;height:100%;background:var(--wine);animation:loader 1.15s ease-in-out infinite}@keyframes loader{from{transform:translateX(-120%)}to{transform:translateX(420%)}}
.site-header{position:fixed;z-index:120;inset:0 0 auto;display:grid;grid-template-columns:1fr auto 1fr;align-items:center;padding:18px var(--pad);color:#fff;mix-blend-mode:difference;pointer-events:none}.site-header>*{pointer-events:auto}.brand{justify-self:start;font:600 18px/1 var(--display);letter-spacing:-.04em}.brand em{font-family:var(--accent);font-size:1.3em;margin:0 2px}.header-center{display:flex;align-items:center;gap:12px;font-size:8px;letter-spacing:.16em;opacity:.82}.header-center i{width:18px;height:1px;background:currentColor}.menu-button{justify-self:end;border:0;background:none;color:inherit;display:flex;align-items:center;gap:11px;padding:8px 0;font-size:8px;letter-spacing:.18em}.menu-button i{display:block;width:25px;height:1px;background:currentColor;position:relative;transition:transform .35s cubic-bezier(.22,1,.36,1)}.menu-button i:after{content:"";position:absolute;right:0;top:6px;width:16px;height:1px;background:currentColor;transition:.35s}.menu-button:hover i:after{width:25px}.menu-button[aria-expanded=true] i{transform:rotate(45deg)}.menu-button[aria-expanded=true] i:after{top:0;width:25px;transform:rotate(90deg)}
.menu-overlay{position:fixed;z-index:110;inset:0;background:var(--wine);color:var(--white);padding:27px var(--pad);display:flex;flex-direction:column;visibility:hidden;clip-path:inset(0 0 100% 0);transition:visibility .6s,clip-path .65s cubic-bezier(.77,0,.18,1)}.menu-overlay.is-open{visibility:visible;clip-path:inset(0)}.menu-overlay__meta{display:flex;justify-content:space-between;margin-top:55px;font-size:8px;letter-spacing:.17em;opacity:.58}.menu-overlay__links{margin:auto 0}.menu-overlay__links a{display:grid;grid-template-columns:54px 1fr;align-items:start;border-bottom:1px solid rgba(255,255,255,.22);padding:8px 0 13px}.menu-overlay__links small{font-size:8px;letter-spacing:.15em;opacity:.5;margin-top:14px}.menu-overlay__links span{font:500 clamp(50px,6.9vw,106px)/.94 var(--display);letter-spacing:-.065em;transition:transform .35s ease}.menu-overlay__links a:hover span{transform:translateX(14px)}.menu-overlay__foot{font:500 italic 20px/1 var(--accent);opacity:.72}
.cursor{position:fixed;z-index:999;width:58px;height:58px;border:1px solid rgba(255,255,255,.74);border-radius:50%;display:grid;place-items:center;color:#fff;font-size:7px;letter-spacing:.15em;pointer-events:none;opacity:0;transform:translate(-50%,-50%) scale(.6);backdrop-filter:blur(6px);mix-blend-mode:difference;transition:opacity .2s,transform .25s}.cursor.is-visible{opacity:1;transform:translate(-50%,-50%) scale(1)}

/* hero */
.hero{height:100svh;min-height:680px;position:relative;background:#171311;color:#fff;overflow:hidden}.hero__media{position:absolute;inset:0;margin:0}.hero__media img{filter:saturate(.6) contrast(1.03) brightness(.88);transform:scale(1.08);will-change:transform}.hero__shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(8,5,5,.18),rgba(8,5,5,.02) 40%,rgba(8,5,5,.53))}.hero__topline{position:absolute;z-index:3;top:91px;left:var(--pad);right:var(--pad);display:flex;justify-content:space-between;font-size:8px;letter-spacing:.19em}.hero__title{position:absolute;z-index:4;left:3.5vw;right:3.5vw;bottom:9vh;display:grid;grid-template-columns:1fr auto 1fr;align-items:end;font:500 clamp(78px,12.6vw,194px)/.7 var(--display);letter-spacing:-.08em;text-transform:uppercase}.hero-word--two{text-align:right}.hero-and{font:600 italic .42em/1 var(--accent);align-self:center;margin:0 1vw 1vh;color:#fff}.hero__note{position:absolute;z-index:5;left:50%;top:30%;transform:translateX(-50%) rotate(-3deg);margin:0;text-align:center;font:500 clamp(19px,2.1vw,34px)/1.06 var(--display);letter-spacing:-.04em}.hero__note em{font-family:var(--accent);font-weight:600;color:#f5d9dd}.hero__date-reveal{position:absolute;z-index:6;left:50%;top:50%;transform:translate(-50%,-50%) scale(.9);font:500 clamp(38px,5.2vw,82px)/1 var(--display);letter-spacing:-.06em;opacity:0;white-space:nowrap}.scroll-cue{position:absolute;z-index:5;left:50%;bottom:19px;transform:translateX(-50%);display:flex;flex-direction:column;align-items:center;gap:9px;font-size:7px;letter-spacing:.18em}.scroll-cue i{width:1px;height:40px;background:rgba(255,255,255,.64)}

/* invitation — V1 editorial composition */
.invitation{position:relative;min-height:1320px;padding:150px var(--pad) 170px;background:var(--ivory);overflow:hidden}.invitation__grid{display:grid;grid-template-columns:1.2fr .55fr;gap:9vw;align-items:start}.invitation__headline{position:relative}.invitation__headline .eyebrow{margin:0 0 24px}.invitation__headline .display{max-width:960px}.invitation__accent{font:600 italic clamp(55px,6.2vw,98px)/.82 var(--accent);color:var(--wine);margin:12px 0 0 26%;transform:rotate(-4deg);width:max-content}.invitation__copy{max-width:385px;margin-top:12vh;font-size:16px;line-height:1.75}.invitation__copy .tiny{font-size:8px;line-height:1.7;text-transform:uppercase;letter-spacing:.12em;color:var(--muted);margin-top:30px}.invitation__photos{position:relative;height:690px;margin-top:100px}.editorial-photo{position:absolute;margin:0;overflow:visible}.editorial-photo img{filter:saturate(.68);overflow:hidden}.editorial-photo figcaption{font-size:7px;letter-spacing:.18em;margin-top:9px;color:var(--muted)}.editorial-photo--one{width:29vw;height:42vw;max-height:600px;right:8vw;top:0}.editorial-photo--two{width:20vw;height:29vw;left:8vw;top:155px}

/* story — V2 spatial canvas */
.story{height:380vh;background:var(--night);color:var(--white);position:relative}.story-stage{position:sticky;top:0;height:100vh;min-height:660px;overflow:hidden}.story-side{position:absolute;z-index:10;right:var(--pad);top:34px;font-size:7px;line-height:1.65;letter-spacing:.17em;text-align:right;color:rgba(255,250,244,.46)}.story-progress{position:absolute;z-index:11;left:var(--pad);bottom:32px;width:104px;height:1px;background:rgba(255,255,255,.18)}.story-progress i{display:block;width:0;height:100%;background:var(--white)}.story-state{position:absolute;inset:0;opacity:0;visibility:hidden}.story-state.is-first{opacity:1;visibility:visible}.story-year{position:absolute;z-index:1;left:4vw;top:11vh;font:500 clamp(118px,23vw,360px)/.8 var(--display);color:rgba(255,255,255,.065);letter-spacing:-.095em}.story-photo{position:absolute;z-index:3;margin:0;overflow:hidden;box-shadow:0 24px 80px rgba(0,0,0,.24)}.story-photo--1{width:35vw;height:60vh;left:31vw;top:17vh;transform:rotate(-2deg)}.story-photo--2{width:31vw;height:57vh;right:12vw;top:18vh;transform:rotate(2.5deg)}.story-photo--3{width:42vw;height:54vh;left:16vw;top:21vh;transform:rotate(-1deg)}.story-photo img{transform:scale(1.08);filter:saturate(.72)}.story-text{position:absolute;z-index:6;left:var(--pad);bottom:11vh;max-width:62vw}.story-text>span{font-size:8px;letter-spacing:.16em;opacity:.52}.story-text h2{margin:12px 0 0;font:500 clamp(44px,5.7vw,92px)/.91 var(--display);letter-spacing:-.065em}.story-text em{font:600 italic 1.06em/1 var(--accent);color:var(--rose)}

/* date — V1 restored */
.date-scene{position:relative;background:var(--ivory);padding:150px var(--pad) 150px;overflow:hidden}.date-scene__composition{display:grid;gap:8px;margin-top:50px}.date-row{display:flex;align-items:center;gap:2.2vw;font:500 clamp(78px,10.8vw,168px)/.77 var(--display);letter-spacing:-.08em;text-transform:uppercase;white-space:nowrap}.date-row figure{margin:0;overflow:hidden;flex:0 0 auto;height:8.1vw;min-height:86px}.date-row figure img{filter:saturate(.65);transform:scale(1.11)}.date-row--one figure{width:25vw}.date-row--two{justify-content:flex-end}.date-row--two figure{width:19vw}.date-row--three figure{width:24vw}.date-row--four{justify-content:flex-end;font-size:clamp(112px,16vw,252px);line-height:.68;color:var(--wine)}.date-scene__foot{margin-top:70px;border-top:1px solid var(--line);padding-top:16px;display:flex;justify-content:space-between;font-size:7px;letter-spacing:.19em;color:var(--muted)}

/* program — V4 concept, more restrained */
.program{height:220vh;background:var(--wine);color:var(--white);padding:9vh var(--pad);position:relative}.program-stage{position:sticky;top:9vh;height:82vh;min-height:610px;display:grid;grid-template-columns:minmax(0,1fr) minmax(420px,45vw);gap:4vw}.program-head{position:absolute;top:0;left:0;right:0;display:flex;justify-content:space-between;font-size:7px;letter-spacing:.17em;color:rgba(255,255,255,.53)}.program-copy{display:flex;flex-direction:column;justify-content:space-between;padding:7vh 0 0}.program-intro small{font-size:7px;letter-spacing:.18em;color:rgba(255,255,255,.5)}.program-intro h2{margin:20px 0 0;font:500 clamp(45px,5.1vw,80px)/.88 var(--display);letter-spacing:-.075em}.program-intro h2 em{font:600 italic 1.08em/1 var(--accent);color:#f2c7cd}.program-intro p{max-width:340px;margin:24px 0 0;font-size:11px;line-height:1.7;color:rgba(255,255,255,.6)}.program-list{margin-top:6vh;border-top:1px solid rgba(255,255,255,.22)}.program-item{position:relative;width:calc(100% + var(--pad));margin-left:calc(-1 * var(--pad));border:0;border-bottom:1px solid rgba(255,255,255,.22);background:transparent;color:inherit;display:grid;grid-template-columns:44px 82px 1fr 22px;gap:12px;align-items:center;text-align:left;padding:17px 0 17px var(--pad);opacity:.45;overflow:hidden;transition:opacity .3s ease,color .3s ease}.program-item:before{content:"";position:absolute;inset:0;background:var(--white);transform:scaleY(0);transform-origin:bottom;transition:transform .4s cubic-bezier(.22,1,.36,1);z-index:-1}.program-item:hover,.program-item:focus-visible,.program-item.is-active{opacity:1;color:var(--wine-deep)}.program-item:hover:before,.program-item:focus-visible:before,.program-item.is-active:before{transform:scaleY(1)}.program-item span{font-size:7px;letter-spacing:.14em}.program-item time{font:500 20px/1 var(--display);letter-spacing:-.04em}.program-item b{font-size:9px;letter-spacing:.14em;font-weight:600}.program-item>i{font-style:normal;font-size:13px}.program-visual{position:relative;height:82vh;min-height:610px;overflow:hidden;background:#3b151a}.program-image{position:absolute;inset:0;opacity:0;visibility:hidden;clip-path:inset(0 0 100% 0);transform:scale(1.06)}.program-image.is-active{opacity:1;visibility:visible;clip-path:inset(0);transform:scale(1.02)}.program-image:after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,rgba(20,5,6,.02),rgba(20,5,6,.36))}.program-counter{position:absolute;z-index:6;top:18px;left:18px;right:18px;display:flex;align-items:center;gap:9px;font-size:7px;letter-spacing:.15em}.program-counter i{width:54px;height:1px;background:rgba(255,255,255,.45)}.program-note{position:absolute;z-index:6;left:22px;right:22px;bottom:20px;display:flex;justify-content:space-between;align-items:end;gap:28px}.program-note small{font:500 29px/1 var(--display);letter-spacing:-.05em}.program-note p{max-width:300px;font-size:10px;color:rgba(255,255,255,.8)}

/* location — V2 restored */
.location{height:290vh;background:var(--ivory);position:relative}.location-stage{position:sticky;top:0;height:100vh;min-height:660px;overflow:hidden}.location-frame{position:absolute;z-index:2;left:50%;top:50%;width:31vw;height:44vh;margin:0;transform:translate(-50%,-50%);overflow:hidden;will-change:width,height,left,top}.location-frame img{transform:scale(1.08);filter:saturate(.72);will-change:transform}.location-title{position:absolute;z-index:4;left:50%;top:50%;transform:translate(-50%,-50%);width:100%;display:flex;justify-content:space-between;padding:0 5vw;font:500 clamp(78px,11.4vw,178px)/.8 var(--display);letter-spacing:-.085em;pointer-events:none}.location-info{position:absolute;z-index:5;right:7vw;top:50%;transform:translateY(-42%);width:31vw;opacity:0}.location-coords{font-size:7px;letter-spacing:.17em;color:var(--muted)}.location-info h2{font:500 clamp(44px,4.8vw,76px)/.91 var(--display);letter-spacing:-.065em;margin:22px 0}.location-info h2 em{font:600 italic 1.05em/1 var(--accent);color:var(--wine)}.location-info p{font-size:11px;color:var(--muted);margin:0 0 32px}.location-info a{display:flex;justify-content:space-between;border-top:1px solid var(--ink);border-bottom:1px solid var(--ink);padding:14px 0;font-size:8px;letter-spacing:.16em}

/* dress — V2 composition + V3 depth */
.dress{min-height:150vh;background:var(--ivory);position:relative;padding:14vh var(--pad) 10vh;overflow:hidden}.dress-heading{display:flex;justify-content:space-between;align-items:flex-start}.dress-heading h2{font:500 clamp(88px,14vw,214px)/.72 var(--display);letter-spacing:-.09em;margin:0}.dress-heading h2:last-child{margin-top:17vh;color:var(--wine)}.dress-copy{position:absolute;left:var(--pad);top:52vh;width:min(360px,26vw);font-size:11px;color:var(--muted)}.palette{display:grid;grid-template-columns:repeat(5,1fr);gap:6px;margin-top:24px;width:min(420px,36vw)}.palette span{position:relative;padding-top:46px;font-size:6px;letter-spacing:.12em;white-space:nowrap}.palette span:before{content:"";position:absolute;left:0;top:0;width:100%;height:36px;background:var(--c);border:1px solid rgba(23,20,18,.12)}.fashion-stage{position:relative;height:88vh;margin-top:-8vh;perspective:1200px}.fashion-card{position:absolute;margin:0;overflow:hidden;box-shadow:0 22px 65px rgba(42,25,20,.12);will-change:transform,translate;transition:translate .5s cubic-bezier(.22,1,.36,1)}.fashion-card img{filter:saturate(.74)}.fashion-card--1{width:20vw;height:46vh;left:32vw;top:16vh;transform:rotate(-4deg)}.fashion-card--2{width:17vw;height:42vh;left:52vw;top:1vh;transform:rotate(3deg)}.fashion-card--3{width:16vw;height:29vh;right:5vw;top:29vh;transform:rotate(-2deg)}.fashion-card--4{width:17vw;height:39vh;left:17vw;top:43vh;transform:rotate(2.5deg)}.fashion-card--5{width:18vw;height:34vh;right:19vw;top:53vh;transform:rotate(4deg)}

/* gallery — V2 wall */
.gallery{height:340vh;background:#141311;color:var(--white);position:relative}.gallery-stage{position:sticky;top:0;height:100vh;min-height:660px;overflow:hidden}.gallery-heading{position:absolute;z-index:8;left:var(--pad);top:14vh;width:min(44vw,650px)}.gallery-heading>small{font-size:7px;letter-spacing:.17em;color:rgba(255,255,255,.45)}.gallery-heading h2{font:500 clamp(64px,8.8vw,140px)/.8 var(--display);letter-spacing:-.08em;margin:14px 0 0}.gallery-heading h2 em{font:600 italic 1.06em/1 var(--accent);color:var(--rose)}.gallery-heading p{width:235px;margin:22px 0 0;font-size:10px;line-height:1.55;color:rgba(255,255,255,.47)}.gallery-wall{position:absolute;z-index:3;left:-13vw;top:-16vh;width:142vw;height:142vh;display:grid;grid-template-columns:repeat(5,1fr);grid-template-rows:repeat(4,1fr);gap:2vw;transform:rotate(-3deg);will-change:transform}.gshot{margin:0;overflow:hidden;opacity:.87}.gshot img{transition:transform .6s cubic-bezier(.2,.7,.2,1);filter:saturate(.72)}.gshot:hover img{transform:scale(1.045)}.gshot--1{grid-column:1/2;grid-row:1/3}.gshot--2{grid-column:2/4;grid-row:1/2}.gshot--3{grid-column:4/5;grid-row:1/3}.gshot--4{grid-column:5/6;grid-row:2/4}.gshot--5{grid-column:2/3;grid-row:2/4}.gshot--6{grid-column:3/4;grid-row:2/3}.gshot--7{grid-column:1/3;grid-row:3/5}.gshot--8{grid-column:3/5;grid-row:3/5}

/* quiet / RSVP / finale */
.wish{position:relative;min-height:78vh;background:var(--wine);color:var(--white);display:grid;place-items:center;padding:12vh var(--pad)}.wish-inner{text-align:center}.wish-inner>small{font-size:7px;letter-spacing:.17em;color:rgba(255,255,255,.48)}.wish-inner h2{margin:20px 0 0;font:500 clamp(68px,9.2vw,138px)/.78 var(--display);letter-spacing:-.08em}.wish-inner h2 em{font:600 italic 1.08em/1 var(--accent);color:#e1b8bd}.wish-inner p{max-width:520px;margin:32px auto 0;font-size:15px;line-height:1.65;color:rgba(255,255,255,.72)}
.rsvp{background:var(--ivory);min-height:100vh;padding:0 var(--pad);position:relative}.rsvp .section-index{top:76px}.rsvp-shell{position:relative;min-height:100vh;display:grid;grid-template-columns:250px 1fr;gap:5vw}.rsvp-side{padding-top:19vh;border-right:1px solid var(--line);display:flex;flex-direction:column;align-items:flex-start}.rsvp-side small{font-size:7px;letter-spacing:.17em;color:var(--muted)}.rsvp-side b{margin-top:10px;font:500 24px/1 var(--display);letter-spacing:-.05em}.rsvp-side p{margin-top:18px;font-size:10px;color:var(--muted)}.rsvp-flow{position:relative;min-width:0;min-height:100vh}.rsvp-progress{position:absolute;z-index:10;right:0;top:30px;width:110px;height:1px;background:var(--line)}.rsvp-progress i{display:block;width:0;height:100%;background:var(--wine);transition:width .45s ease}.rsvp-step{position:absolute;inset:0;padding:18vh 0 8vh;opacity:0;visibility:hidden;pointer-events:none;display:flex;flex-direction:column;justify-content:center;min-width:0}.rsvp-step.is-active{opacity:1;visibility:visible;pointer-events:auto}.rsvp-step>small{font-size:7px;letter-spacing:.17em;color:var(--muted)}.rsvp-step h2{margin-top:18px;font:500 clamp(62px,7.4vw,114px)/.82 var(--display);letter-spacing:-.08em;max-width:100%;overflow-wrap:anywhere}.rsvp-step h2 em{font:600 italic 1.08em/1 var(--accent);color:var(--wine)}.rsvp-actions{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--line);margin-top:7vh}.rsvp-actions button{border:0;border-bottom:1px solid var(--line);background:none;text-align:left;padding:21px 18px 21px 0;font-size:9px;letter-spacing:.14em;transition:padding .3s,background .3s}.rsvp-actions button+button{border-left:1px solid var(--line);padding-left:24px}.rsvp-actions button:hover,.rsvp-actions button:focus-visible{padding-left:14px;background:rgba(123,16,34,.04)}.rsvp-actions--three{grid-template-columns:repeat(3,1fr)}.rsvp-field{display:block;margin-top:7vh}.rsvp-field span{display:block;font-size:7px;letter-spacing:.16em;color:var(--muted)}.rsvp-field input,.rsvp-field textarea{display:block;width:100%;border:0;border-bottom:1px solid var(--ink);background:none;outline:none;padding:14px 0 18px;font:500 clamp(28px,3.8vw,58px)/1 var(--display);letter-spacing:-.05em;resize:none}.rsvp-field input::placeholder,.rsvp-field textarea::placeholder{color:rgba(23,20,18,.24)}.rsvp-field input:invalid.is-touched{border-color:var(--wine)}.rsvp-next{align-self:flex-end;margin-top:30px;border:0;border-bottom:1px solid var(--ink);background:none;padding:0 0 8px;font-size:8px;letter-spacing:.16em}.rsvp-next span{margin-left:16px}.rsvp-step--done p{margin-top:28px;max-width:480px;color:var(--muted)}
.finale{height:170vh;position:relative;background:var(--night);color:var(--white)}.finale-stage{position:sticky;top:0;height:100vh;min-height:660px;overflow:hidden}.finale-photo{position:absolute;z-index:2;left:50%;top:50%;width:24vw;height:43vh;transform:translate(-50%,-50%);overflow:hidden;will-change:width,height}.finale-photo img{filter:saturate(.64) contrast(1.03)}.finale-word{position:absolute;z-index:5;font:500 clamp(92px,14.5vw,220px)/.75 var(--display);letter-spacing:-.09em;white-space:nowrap}.finale-word--one{left:var(--pad);top:15vh}.finale-word--two{right:var(--pad);bottom:16vh}.finale-word em{font:600 italic 1.03em/1 var(--accent);color:#d9acb2}.finale-contacts{position:absolute;z-index:7;left:var(--pad);bottom:26px;display:flex;gap:20px;font-size:6px;letter-spacing:.13em;color:rgba(255,255,255,.68)}.finale-foot{position:absolute;z-index:7;right:var(--pad);top:29px;display:flex;gap:24px;font-size:6px;letter-spacing:.14em;color:rgba(255,255,255,.65)}.finale-foot b{font-weight:500}

.hero__note,.invitation-copy>p,.story-intro h2,.program-intro h2,.dress-heading h2,.gallery-heading h2,.wish-inner h2,.rsvp-step h2,.finale-foot>span{white-space:pre-line}
.location-title{white-space:normal}.location-title>span{max-width:46vw;overflow-wrap:anywhere}
.location-coords{font-size:9px;letter-spacing:.2em;color:var(--wine)}
.finale-contacts{font-size:10px;line-height:1.6;letter-spacing:.1em;color:rgba(255,250,244,.92)}
.finale-contacts a{border-bottom:1px solid rgba(255,250,244,.4);padding-bottom:3px}
.finale-foot{font-size:9px;letter-spacing:.12em;color:rgba(255,250,244,.9)}

@media (max-width:900px){
  :root{--pad:18px}.section-index{top:22px;font-size:7px}
  .site-header{padding:15px 18px}.header-center{display:none}.brand{font-size:16px}.menu-button{font-size:7px}.menu-overlay{padding:22px 18px}.menu-overlay__meta{margin-top:45px;font-size:7px}.menu-overlay__links a{grid-template-columns:36px 1fr}.menu-overlay__links span{font-size:13.5vw}.menu-overlay__links small{margin-top:8px}
  .hero{min-height:640px}.hero__topline{top:72px;left:18px;right:18px;font-size:6px}.hero__title{left:14px;right:14px;bottom:10vh;font-size:18.4vw;line-height:.72}.hero-and{font-size:.5em}.hero__note{top:27%;width:82vw;font-size:21px}.hero__date-reveal{font-size:11vw}.scroll-cue{font-size:6px}
  .invitation{min-height:0;padding:12vh 18px 11vh}.invitation__grid{display:block}.invitation__headline .display{font-size:15.2vw;line-height:.84}.invitation__accent{font-size:15vw;margin:10px 0 0 18%;}.invitation__copy{width:78vw;margin:8vh 0 0 auto;font-size:14px}.invitation__photos{height:74vh;margin-top:7vh}.editorial-photo--one{width:65vw;height:54vh;right:0}.editorial-photo--two{width:40vw;height:31vh;left:0;top:31vh}
  .story{height:auto;padding:12vh 0 0}.story-stage{position:relative;height:auto;min-height:0;overflow:visible}.story-side{display:none}.story-progress{display:none}.story-state,.story-state.is-first{position:relative;inset:auto;opacity:1!important;visibility:visible!important;min-height:92vh;padding:8vh 18px 10vh}.story-year{left:6px;top:11vh;font-size:35vw}.story-photo{width:69vw!important;height:50vh!important;left:auto!important;right:8vw!important;top:20vh!important;transform:rotate(-1deg)!important}.story-photo--2{right:3vw!important}.story-photo--3{right:14vw!important}.story-text{left:18px;bottom:9vh;max-width:90vw}.story-text h2{font-size:10.5vw}.story-text>span{font-size:7px}
  .date-scene{padding:12vh 18px 10vh}.date-scene__composition{gap:8px;margin-top:5vh}.date-row{font-size:15.2vw;white-space:normal;gap:10px}.date-row figure{height:9vh;min-height:0}.date-row--one figure{width:28vw}.date-row--two figure{width:26vw}.date-row--three figure{width:29vw}.date-row--four{font-size:25vw}.date-scene__foot{margin-top:6vh;font-size:6px}
  .program{height:auto;padding:12vh 18px 9vh}.program-stage{position:relative;top:auto;height:auto;min-height:0;display:block}.program-head{top:-8vh}.program-copy{padding:0}.program-intro h2{font-size:12vw}.program-intro p{max-width:78vw}.program-list{margin-top:6vh}.program-item{width:calc(100% + 36px);margin-left:-18px;padding-left:18px;grid-template-columns:28px 66px 1fr 18px}.program-item time{font-size:18px}.program-visual{height:64vh;min-height:470px;margin-top:7vh}.program-note p{font-size:9px;max-width:58%}
  .location{height:235vh}.location-frame{width:66vw;height:37vh}.location-title{font-size:19vw;padding:0 12px;flex-direction:column;line-height:.72}.location-title span:last-child{text-align:right}.location-info{right:18px;left:18px;top:auto;bottom:7vh;transform:none;width:auto}.location-info h2{font-size:10.8vw;margin:14px 0}.location-info p{font-size:10px;margin-bottom:18px}.location-coords{font-size:6px}
  .dress{min-height:auto;padding:12vh 18px 8vh}.dress-heading{display:block}.dress-heading h2{font-size:22vw}.dress-heading h2:last-child{margin:0 0 0 20vw;text-align:right}.dress-copy{position:static;width:82vw;margin:36px 0 34px;font-size:11px}.palette{width:100%;grid-template-columns:repeat(5,minmax(58px,1fr));overflow-x:auto;padding-bottom:6px}.palette span{padding-top:38px;font-size:5px}.palette span:before{height:30px}.fashion-stage{height:auto;display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;margin:0;padding:0 18px 12px 0;scrollbar-width:none}.fashion-stage::-webkit-scrollbar{display:none}.fashion-card{position:relative!important;inset:auto!important;transform:none!important;translate:none!important;flex:0 0 68vw;width:68vw!important;height:54vh!important;scroll-snap-align:start;box-shadow:none}.fashion-card:nth-child(even){flex-basis:58vw}
  .gallery{height:auto;min-height:0;padding:12vh 18px 9vh}.gallery-stage{position:relative;height:auto;min-height:0;overflow:visible}.gallery-stage>.section-index{position:relative;left:0;top:0;margin-bottom:32px}.gallery-heading{position:relative;left:auto;top:auto;width:100%;margin-bottom:34px}.gallery-heading h2{font-size:16.5vw}.gallery-heading p{width:72vw}.gallery-wall{position:relative;left:auto;top:auto;width:auto;height:auto;display:grid;grid-template-columns:1fr 1fr;grid-auto-rows:auto;gap:10px;transform:none!important}.gshot{grid-column:auto!important;grid-row:auto!important;aspect-ratio:3/4}.gshot:nth-child(3n){grid-column:1/3;aspect-ratio:16/10}.gshot:nth-child(4n){aspect-ratio:1/1}
  .wish{min-height:72vh;padding:12vh 18px 9vh}.wish-inner h2{font-size:18vw}.wish-inner p{font-size:16px;max-width:86vw}
  .rsvp{padding:0 18px}.rsvp .section-index{top:74px}.rsvp-shell{display:block;min-height:100svh}.rsvp-side{display:none}.rsvp-flow{min-height:100svh}.rsvp-step{padding:13vh 0 8vh}.rsvp-step h2{font-size:14.8vw;line-height:.84}.rsvp-actions{grid-template-columns:1fr;margin-top:7vh}.rsvp-actions button+button{border-left:0;padding-left:0}.rsvp-actions--three{grid-template-columns:1fr}.rsvp-field input,.rsvp-field textarea{font-size:7.5vw}.rsvp-progress{right:0;top:22px;width:88px}
  .finale{height:150vh}.finale-photo{width:48vw;height:34vh}.finale-word{font-size:19vw}.finale-word--one{left:18px}.finale-word--two{right:18px}.finale-contacts{left:18px;right:18px;bottom:72px;display:grid;gap:8px;font-size:9px}.finale-foot{left:18px;right:18px;top:auto;bottom:18px;justify-content:space-between;gap:10px;font-size:8px}.location-title>span{max-width:88vw}
}
@media (max-width:520px){.hero__title{font-size:17.5vw}.invitation__headline .display{font-size:14.8vw}.date-row{font-size:14.6vw}.dress-heading h2{font-size:21vw}.gallery-heading h2{font-size:16vw}.rsvp-step h2{font-size:14.2vw}.finale-word{font-size:18.5vw}}
@media (hover:none),(pointer:coarse){.cursor{display:none}}
@media (prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important;scroll-behavior:auto!important}.preloader{display:none}.hero__media img,.program-image,.gshot,.fashion-card{transform:none!important;translate:none!important}.hero__date-reveal,.story-state,.location-info{opacity:1!important;visibility:visible!important;transform:none!important}.story,.location,.gallery,.finale{height:auto!important}.story-stage,.location-stage,.gallery-stage,.finale-stage{position:relative!important;height:auto!important;min-height:100vh}.story-state{position:relative!important;min-height:90vh}.gallery-wall{transform:none!important}}


/* =========================================================
   V4.2 — composition / pacing corrections from video review
   ========================================================= */

/* Invitation: one-screen editorial composition, no floating orphaned media */
.invitation{min-height:100vh;padding:120px var(--pad) 70px;display:flex;align-items:center;overflow:hidden}
.invitation>.section-index{top:28px}
.invitation__stage{width:100%;min-height:min(800px,calc(100vh - 145px));display:grid;grid-template-columns:minmax(0,1.05fr) minmax(360px,.72fr);grid-template-rows:auto 1fr;column-gap:7vw;row-gap:4vh;align-items:start}
.invitation__headline{grid-column:1;grid-row:1;align-self:start}
.invitation__headline .eyebrow{margin:0 0 18px}
.invitation__headline .display{font-size:clamp(60px,7.25vw,112px);line-height:.82;max-width:760px}
.invitation__accent{font:600 italic clamp(52px,5.3vw,82px)/.85 var(--accent);color:var(--wine);margin:10px 0 0 31%;transform:rotate(-3deg);width:max-content}
.invitation__copy{grid-column:2;grid-row:1;align-self:end;max-width:410px;margin:0 0 4px;font-size:14px;line-height:1.7}
.invitation__copy .tiny{font-size:7px;line-height:1.65;text-transform:uppercase;letter-spacing:.13em;color:var(--muted);margin:22px 0 0}
.invitation__photo{position:relative;margin:0;overflow:hidden;background:#ded6cb}
.invitation__photo img{filter:saturate(.66);transition:transform .7s cubic-bezier(.22,1,.36,1)}
.invitation__photo:hover img{transform:scale(1.025)}
.invitation__photo figcaption{position:absolute;z-index:2;left:12px;bottom:10px;font-size:6px;letter-spacing:.16em;color:#fff;mix-blend-mode:difference}
.invitation__photo--detail{grid-column:1;grid-row:2;width:36%;height:31vh;min-height:220px;align-self:end;margin-left:10%;transform:translateY(-1vh)}
.invitation__photo--main{grid-column:2;grid-row:2;width:100%;height:48vh;min-height:350px;align-self:end}
.invitation__photo--main img{object-position:center 45%}

/* Story: fixed editorial rail on the left, chapters scroll cleanly on the right */
.story{height:auto;min-height:300vh;background:var(--night);color:var(--white);position:relative;padding:0}
.story-layout{display:grid;grid-template-columns:minmax(330px,38vw) minmax(0,1fr);align-items:start}
.story-sticky{position:sticky;top:0;height:100vh;min-height:660px;padding:30px var(--pad) 34px;display:flex;flex-direction:column;border-right:1px solid rgba(255,255,255,.11);overflow:hidden}
.story-kicker{display:flex;gap:12px;align-items:center;font-size:8px;letter-spacing:.18em;color:rgba(255,255,255,.5)}
.story-kicker b{font-weight:500}.story-kicker span{font-weight:600}
.story-sticky__copy{margin:auto 0 4vh;max-width:430px}
.story-sticky__copy small{font-size:7px;letter-spacing:.17em;color:rgba(255,255,255,.42)}
.story-sticky__copy h2{margin:18px 0 0;font:500 clamp(43px,4.4vw,70px)/.9 var(--display);letter-spacing:-.07em}
.story-sticky__copy h2 em{font:600 italic 1em/1 var(--accent);color:var(--rose)}
.story-sticky__copy p{max-width:290px;margin:24px 0 0;font-size:10px;line-height:1.7;color:rgba(255,255,255,.48)}
.story-nav{display:grid;border-top:1px solid rgba(255,255,255,.16)}
.story-nav button{border:0;border-bottom:1px solid rgba(255,255,255,.16);background:none;color:rgba(255,255,255,.34);display:grid;grid-template-columns:28px 62px 1fr;gap:10px;align-items:center;text-align:left;padding:13px 0;transition:color .3s ease,padding .3s ease}
.story-nav button span,.story-nav button i{font-size:6px;letter-spacing:.14em;font-style:normal}.story-nav button b{font:500 18px/1 var(--display);letter-spacing:-.04em}
.story-nav button.is-active{color:#fff;padding-left:8px}.story-nav button.is-active i{color:var(--rose)}
.story-progress{position:relative;left:auto;bottom:auto;width:100%;height:1px;margin-top:22px;background:rgba(255,255,255,.14)}
.story-progress i{display:block;width:0;height:100%;background:var(--rose);transition:width .45s ease}
.story-feed{min-width:0;padding:8vh 5vw 10vh}
.story-chapter{position:relative;min-height:94vh;padding:5vh 0 12vh;display:flex;flex-direction:column;justify-content:center}
.story-chapter__year{position:absolute;z-index:0;right:-1vw;top:3vh;font:500 clamp(120px,17vw,270px)/.8 var(--display);letter-spacing:-.09em;color:rgba(255,255,255,.055);pointer-events:none}
.story-chapter__photo{position:relative;z-index:2;width:min(48vw,720px);height:64vh;min-height:480px;margin:0;overflow:hidden;box-shadow:0 30px 90px rgba(0,0,0,.25)}
.story-chapter:nth-child(even) .story-chapter__photo{margin-left:auto;width:min(44vw,670px)}
.story-chapter__photo img{filter:saturate(.72);transform:scale(1.035)}
.story-chapter__caption{position:relative;z-index:3;width:min(620px,88%);margin-top:24px}
.story-chapter:nth-child(even) .story-chapter__caption{margin-left:auto}
.story-chapter__caption>span{font-size:7px;letter-spacing:.16em;color:rgba(255,255,255,.43)}
.story-chapter__caption h3{margin:10px 0 0;font:500 clamp(38px,4vw,64px)/.92 var(--display);letter-spacing:-.06em}
.story-chapter__caption h3 em{font:600 italic 1.03em/1 var(--accent);color:var(--rose)}
.story-chapter__caption p{max-width:430px;margin:16px 0 0;font-size:10px;line-height:1.7;color:rgba(255,255,255,.46)}

/* Location: same successful concept, significantly shorter scroll distance */
.location{height:195vh}
.location-info{background:rgba(244,239,231,.9);backdrop-filter:blur(12px);padding:26px 28px 24px;border:1px solid rgba(23,20,18,.08)}

/* Dress code: compact two-column layout + three equal editorial references */
.dress{min-height:100vh;padding:12vh var(--pad) 9vh;display:flex;align-items:center;overflow:hidden}
.dress>.section-index{top:28px}
.dress-layout{width:100%;display:grid;grid-template-columns:minmax(300px,.72fr) minmax(0,1.28fr);gap:6vw;align-items:center}
.dress-content{min-width:0}
.dress-heading{display:block}
.dress-heading h2{margin:0;font:500 clamp(72px,8.7vw,136px)/.78 var(--display);letter-spacing:-.085em}
.dress-heading h2 em{font:600 italic 1.02em/1 var(--accent);color:var(--wine)}
.dress-lead{max-width:410px;margin:34px 0 0;font-size:12px;line-height:1.75;color:var(--muted)}
.palette{width:100%;max-width:470px;grid-template-columns:repeat(5,minmax(0,1fr));margin-top:30px;gap:6px}
.palette span{padding-top:48px;font-size:6px;overflow:hidden;text-overflow:ellipsis}.palette span:before{height:37px}
.dress-note{display:flex;align-items:center;gap:10px;margin-top:25px;font-size:6px;letter-spacing:.16em;color:var(--muted)}.dress-note i{width:18px;height:1px;background:var(--line)}
.fashion-stage{position:relative;height:64vh;min-height:500px;margin:0;display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;perspective:1200px}
.fashion-card,.fashion-card:nth-child(n){position:relative;inset:auto;width:auto;height:100%;margin:0;transform:none;overflow:hidden;box-shadow:none;transition:translate .45s cubic-bezier(.22,1,.36,1)}
.fashion-card img{filter:saturate(.72);transition:transform .55s cubic-bezier(.22,1,.36,1)}
.fashion-card:hover img{transform:scale(1.025)}
.fashion-card figcaption{position:absolute;z-index:3;left:12px;bottom:10px;font-size:6px;letter-spacing:.16em;color:white;mix-blend-mode:difference}

/* RSVP: full guest questionnaire while keeping the conversational rhythm */
.rsvp-shell{grid-template-columns:260px minmax(0,1fr)}
.rsvp-step h2{font-size:clamp(56px,6.65vw,104px)}
.rsvp-help{margin:18px 0 0;max-width:460px;font-size:10px;color:var(--muted)}
.rsvp-field[hidden],.rsvp-next[hidden]{display:none!important}
.rsvp-fields-grid{display:grid;grid-template-columns:1fr 1fr;gap:26px;margin-top:5vh}.rsvp-fields-grid .rsvp-field{margin-top:0}
.rsvp-field--note{margin-top:4vh}
.rsvp-tags{display:flex;flex-wrap:wrap;gap:8px;margin-top:5vh}
.rsvp-tags button{border:1px solid var(--line);background:transparent;padding:13px 15px;font-size:8px;letter-spacing:.13em;transition:background .25s,color .25s,border-color .25s}
.rsvp-tags button:hover,.rsvp-tags button.is-selected{background:var(--wine);color:var(--white);border-color:var(--wine)}
.rsvp-actions button.is-selected{background:rgba(122,16,34,.07);padding-left:14px}

@media (max-width:900px){
  .invitation{display:block;min-height:0;padding:12vh 18px 10vh}.invitation>.section-index{top:22px}.invitation__stage{display:block;min-height:0}.invitation__headline .display{font-size:14.2vw;line-height:.84}.invitation__accent{font-size:14vw;margin-left:17%}.invitation__copy{width:82vw;margin:7vh 0 0 auto;font-size:13px}.invitation__photo--main{width:76vw;height:53vh;min-height:360px;margin:7vh 0 0 auto}.invitation__photo--detail{width:43vw;height:29vh;min-height:210px;margin:-11vh 0 0 0;transform:none;z-index:3}

  .story{min-height:0;padding:0}.story-layout{display:block}.story-sticky{position:relative;height:auto;min-height:0;padding:11vh 18px 6vh;border-right:0;border-bottom:1px solid rgba(255,255,255,.12)}.story-sticky__copy{margin:0}.story-sticky__copy h2{font-size:11.8vw}.story-sticky__copy p{font-size:10px}.story-nav{margin-top:6vh}.story-nav button{grid-template-columns:30px 56px 1fr}.story-progress{display:none}.story-feed{padding:0 18px 9vh}.story-chapter{min-height:0;padding:8vh 0 3vh}.story-chapter__year{font-size:32vw;top:4vh;right:-4vw}.story-chapter__photo,.story-chapter:nth-child(even) .story-chapter__photo{width:82vw;height:57vh;min-height:390px;margin:0 0 0 auto}.story-chapter:nth-child(even) .story-chapter__photo{margin:0 auto 0 0}.story-chapter__caption,.story-chapter:nth-child(even) .story-chapter__caption{width:94%;margin:20px 0 0}.story-chapter__caption h3{font-size:10.5vw}.story-chapter__caption p{font-size:10px}

  .location{height:165vh}.location-info{padding:20px 18px;background:rgba(244,239,231,.94)}

  .dress{display:block;min-height:0;padding:12vh 18px 9vh}.dress>.section-index{top:22px}.dress-layout{display:block}.dress-heading h2{font-size:20vw}.dress-lead{width:86vw;margin-top:26px;font-size:11px}.palette{max-width:none;margin-top:24px;overflow-x:auto;grid-template-columns:repeat(5,minmax(64px,1fr));padding-bottom:5px}.dress-note{margin-top:20px}.fashion-stage{height:auto;min-height:0;margin-top:7vh;display:flex;gap:10px;overflow-x:auto;scroll-snap-type:x mandatory;padding:0 18px 10px 0;scrollbar-width:none}.fashion-stage::-webkit-scrollbar{display:none}.fashion-card,.fashion-card:nth-child(n){flex:0 0 72vw;width:72vw;height:56vh;min-height:390px;scroll-snap-align:start;translate:none!important}

  .rsvp-shell{display:block}.rsvp-step h2{font-size:13.5vw}.rsvp-fields-grid{grid-template-columns:1fr;gap:0;margin-top:4vh}.rsvp-fields-grid .rsvp-field+.rsvp-field{margin-top:4vh}.rsvp-tags{margin-top:4vh}.rsvp-tags button{font-size:7px;padding:12px}.rsvp-help{font-size:9px}
}

@media (max-width:520px){
  .invitation__headline .display{font-size:13.8vw}.story-sticky__copy h2{font-size:11.2vw}.dress-heading h2{font-size:19.5vw}.rsvp-step h2{font-size:13vw}
}

@media (prefers-reduced-motion:reduce){
  .story{min-height:0!important}.story-sticky{position:relative!important}.story-chapter__photo img{transform:none!important}.location{height:auto!important;min-height:100vh}.location-stage{position:relative!important}
}


/* ========================= V4.3 refinements ========================= */
body.lightbox-open{overflow:hidden}

/* Header: editorial utility bar instead of a sparse floating trio */
.site-header{padding:12px var(--pad);mix-blend-mode:normal;color:#fff;display:block;transition:padding .35s ease}
.header-shell{height:50px;display:grid;grid-template-columns:auto 1fr auto;align-items:center;gap:28px;padding:0 14px;border:1px solid rgba(255,255,255,.15);background:rgba(20,17,16,.18);backdrop-filter:blur(10px);transition:background .35s,border-color .35s,box-shadow .35s}
.site-header.is-scrolled .header-shell{background:rgba(20,17,16,.86);border-color:rgba(255,255,255,.1);box-shadow:0 10px 34px rgba(0,0,0,.12)}
.brand{width:33px;height:33px;border:1px solid rgba(255,255,255,.35);display:grid;grid-template-columns:1fr auto 1fr;place-items:center;font-size:8px;letter-spacing:0}.brand em{font-size:14px;margin:0;color:#f2d9dd}.brand span:first-child{justify-self:end}.brand span:last-child{justify-self:start}
.header-nav{justify-self:center;display:flex;align-items:center;gap:14px;font-size:7px;letter-spacing:.17em}.header-nav a{opacity:.7;transition:opacity .25s}.header-nav a:hover{opacity:1}.header-nav i{width:14px;height:1px;background:rgba(255,255,255,.24)}
.header-actions{display:flex;align-items:center;gap:18px}.header-date{display:flex;align-items:center;gap:10px;font-size:7px;letter-spacing:.14em}.header-date small{font-size:6px;opacity:.55}.menu-button{font-size:7px}.menu-button i{width:20px}.menu-button i:after{width:12px}.menu-button:hover i:after,.menu-button[aria-expanded=true] i:after{width:20px}

/* Invitation: one image, one typographic idea, one complete screen */
.invitation{min-height:100vh;padding:0 var(--pad);display:flex;align-items:center;overflow:hidden}
.invitation>.section-index{top:30px}
.invitation-scene{position:relative;width:100%;height:min(820px,82vh);min-height:650px;margin-top:54px}
.invitation-media{position:absolute;z-index:1;left:50%;top:50%;width:min(43vw,650px);height:68vh;max-height:680px;min-height:520px;transform:translate(-50%,-50%);margin:0;overflow:hidden;background:#d9d0c5}
.invitation-media img{filter:saturate(.64);transform:scale(1.035)}
.invitation-title{position:absolute;z-index:3;inset:0;font:500 clamp(70px,8.7vw,136px)/.78 var(--display);letter-spacing:-.085em;text-transform:uppercase;pointer-events:none}
.invitation-line{position:absolute;white-space:nowrap}.invitation-line--one{left:1vw;top:10%}.invitation-line--two{left:50%;top:40%;transform:translateX(-50%);color:var(--white);text-shadow:0 4px 34px rgba(0,0,0,.22)}.invitation-line--three{right:0;bottom:12%}.invitation-title em{position:absolute;z-index:4;right:18%;bottom:1%;font:600 italic clamp(52px,6.2vw,96px)/1 var(--accent);text-transform:none;color:var(--wine);transform:rotate(-4deg)}
.invitation-copy-block{position:absolute;z-index:4;left:0;bottom:4%;width:min(300px,23vw)}.invitation-copy-block small{font-size:6px;letter-spacing:.17em;color:var(--muted)}.invitation-copy-block p{margin:12px 0 0;font-size:11px;line-height:1.7;color:var(--muted)}
.invitation-meta{position:absolute;z-index:4;right:0;top:9%;display:flex;flex-direction:column;align-items:flex-end;gap:4px;font-size:6px;letter-spacing:.16em;color:var(--muted)}

/* Story: centered rail and readable years intentionally over photography */
.story-layout{grid-template-columns:minmax(350px,37vw) minmax(0,1fr)}
.story-sticky{justify-content:center;padding:30px clamp(28px,4vw,64px)}
.story-kicker{position:absolute;left:clamp(28px,4vw,64px);top:30px}
.story-sticky__center{width:100%;max-width:450px;margin:auto 0}
.story-sticky__copy{margin:0 0 6vh}.story-sticky__copy h2{font-size:clamp(46px,4.6vw,74px)}
.story-progress{position:absolute;left:clamp(28px,4vw,64px);right:clamp(28px,4vw,64px);bottom:30px;width:auto;margin:0}
.story-feed{padding:7vh 5vw 9vh}.story-chapter{min-height:96vh;padding:5vh 0 10vh}
.story-chapter__photo{position:relative;width:min(49vw,740px);height:67vh;min-height:500px}.story-chapter:nth-child(even) .story-chapter__photo{width:min(46vw,700px)}
.story-chapter__year{position:absolute;z-index:4;left:18px;bottom:5px;font:500 clamp(74px,9.5vw,150px)/.78 var(--display);letter-spacing:-.09em;color:#fff;text-shadow:0 5px 32px rgba(0,0,0,.36);pointer-events:none}
.story-chapter__number{position:absolute;z-index:5;right:16px;top:14px;font-size:7px;letter-spacing:.17em;color:#fff;background:rgba(0,0,0,.18);padding:7px 8px;backdrop-filter:blur(5px)}
.story-chapter__caption{margin-top:22px}.story-chapter__caption h3{font-size:clamp(36px,3.7vw,58px)}

/* Dress: scroll-snap slider and dedicated viewer */
.dress{min-height:100vh;padding:12vh var(--pad) 9vh;display:flex;align-items:center}
.dress-layout{grid-template-columns:minmax(310px,.68fr) minmax(0,1.32fr);gap:5vw}
.dress-slider{min-width:0}.dress-slider__viewport{overflow-x:auto;scroll-snap-type:x mandatory;scrollbar-width:none;overscroll-behavior-x:contain}.dress-slider__viewport::-webkit-scrollbar{display:none}.dress-slider__track{display:flex;gap:12px;padding:2px calc(66% + 12px) 6px 1px}.dress-slide{position:relative;flex:0 0 calc((100% - 24px)/3);height:64vh;min-height:500px;border:0;padding:0;background:#d7cfc5;overflow:hidden;scroll-snap-align:start;text-align:left}.dress-slide img{transition:transform .65s cubic-bezier(.22,1,.36,1);filter:saturate(.73)}.dress-slide:hover img{transform:scale(1.035)}.dress-slide span{position:absolute;z-index:2;left:12px;bottom:10px;font-size:6px;letter-spacing:.15em;color:white;mix-blend-mode:difference}.dress-slider__hint{margin:10px 0 0;font-size:6px;letter-spacing:.15em;color:var(--muted)}
.dress-slider-controls{display:grid;grid-template-columns:38px auto 38px;gap:10px;align-items:center;width:max-content;margin-top:30px}.dress-slider-controls button{width:38px;height:38px;border:1px solid var(--line);background:transparent;font-size:15px}.dress-slider-controls span{font-size:7px;letter-spacing:.14em}.dress-slider-controls b{font-weight:600;color:var(--wine)}
.dress-lightbox{position:fixed;z-index:500;inset:0;background:rgba(12,10,9,.94);color:#fff;display:grid;place-items:center;opacity:0;visibility:hidden;transition:opacity .3s,visibility .3s}.dress-lightbox.is-open{opacity:1;visibility:visible}.dress-lightbox figure{width:min(64vw,900px);height:min(82vh,900px);margin:0;position:relative}.dress-lightbox figure img{object-fit:contain}.dress-lightbox figcaption{position:absolute;left:0;bottom:-28px;font-size:7px;letter-spacing:.16em}.dress-lightbox__close{position:absolute;right:var(--pad);top:28px;border:0;background:none;color:#fff;font-size:7px;letter-spacing:.15em}.dress-lightbox__nav{position:absolute;top:50%;transform:translateY(-50%);width:48px;height:48px;border:1px solid rgba(255,255,255,.25);background:rgba(255,255,255,.04);color:#fff;font-size:20px}.dress-lightbox__nav--prev{left:var(--pad)}.dress-lightbox__nav--next{right:var(--pad)}

/* RSVP: conventional complete form, everything important is visible immediately */
.rsvp{min-height:0;padding:15vh var(--pad) 14vh;background:var(--ivory)}.rsvp>.section-index{top:32px}.rsvp-layout{display:grid;grid-template-columns:minmax(300px,.75fr) minmax(0,1.25fr);gap:8vw;align-items:start}.rsvp-intro{position:sticky;top:15vh}.rsvp-intro>small{font-size:7px;letter-spacing:.17em;color:var(--muted)}.rsvp-intro h2{margin:22px 0 0;font:500 clamp(62px,7vw,108px)/.82 var(--display);letter-spacing:-.08em}.rsvp-intro h2 em{font:600 italic 1.04em/1 var(--accent);color:var(--wine)}.rsvp-intro p{max-width:360px;margin:28px 0 0;font-size:11px;line-height:1.75;color:var(--muted)}
.rsvp-form{min-width:0}.rsvp-block{border:0;border-top:1px solid var(--line);padding:28px 0 34px;margin:0}.rsvp-block legend{padding:0 12px 0 0;font-size:7px;letter-spacing:.16em;color:var(--muted)}
.rsvp-choice-grid{display:grid;gap:8px;margin-top:15px}.rsvp-choice-grid--two{grid-template-columns:1fr 1fr}.rsvp-choice-grid--three{grid-template-columns:repeat(3,1fr)}.rsvp-choice-grid--drinks{grid-template-columns:repeat(3,1fr)}.rsvp-choice-grid label{cursor:pointer}.rsvp-choice-grid input{position:absolute;opacity:0;pointer-events:none}.rsvp-choice-grid span{display:flex;align-items:center;min-height:48px;border:1px solid var(--line);padding:12px 14px;font-size:8px;letter-spacing:.12em;transition:background .22s,color .22s,border-color .22s}.rsvp-choice-grid input:checked+span{background:var(--wine);border-color:var(--wine);color:#fff}.rsvp-choice-grid label:hover span{border-color:rgba(23,20,18,.38)}
.rsvp-fields{display:grid;grid-template-columns:1fr 1fr;column-gap:22px}.rsvp-input{display:block;border-top:1px solid var(--line);padding:22px 0 27px}.rsvp-input span{display:block;font-size:7px;letter-spacing:.15em;color:var(--muted)}.rsvp-input input,.rsvp-input textarea,.rsvp-input select{width:100%;border:0;background:transparent;outline:none;padding:15px 0 3px;font:500 clamp(22px,2.1vw,34px)/1.1 var(--display);letter-spacing:-.04em;color:var(--ink);resize:none;border-radius:0}.rsvp-input select{font-size:18px}.rsvp-input input::placeholder,.rsvp-input textarea::placeholder{color:rgba(23,20,18,.23)}.rsvp-input--textarea{border-bottom:1px solid var(--line)}.rsvp-input.has-error,.rsvp-block.has-error{border-color:var(--wine)}
.rsvp-fields--bottom{margin-top:0}.rsvp-submit-row{display:grid;grid-template-columns:auto 1fr;gap:28px;align-items:end;margin-top:35px}.rsvp-submit-row button{border:0;background:var(--wine);color:#fff;padding:18px 22px;font-size:8px;letter-spacing:.14em}.rsvp-submit-row button span{margin-left:20px}.rsvp-submit-row small{max-width:330px;font-size:6px;line-height:1.7;letter-spacing:.08em;color:var(--muted)}.rsvp-success{margin-top:50px;padding:36px 0 10px;border-top:1px solid var(--wine)}.rsvp-success small{font-size:7px;letter-spacing:.17em;color:var(--wine)}.rsvp-success h3{margin:12px 0 0;font:500 clamp(46px,5vw,76px)/.86 var(--display);letter-spacing:-.07em}.rsvp-success h3 em{font:600 italic 1em/1 var(--accent);color:var(--wine)}.rsvp-success p{color:var(--muted)}
.rsvp-form>[data-form-fields]{display:grid;grid-template-columns:1fr 1fr;column-gap:22px}.rsvp-form>[data-form-fields]>.rsvp-block{grid-column:1/-1}.rsvp-form>[data-form-fields]>.rsvp-input:has(textarea){grid-column:1/-1}.rsvp-form__choices{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:8px}.rsvp-form__choices legend{grid-column:1/-1;width:100%;margin-bottom:7px}.rsvp-form__choices label{cursor:pointer}.rsvp-form__choices input{position:absolute;opacity:0;pointer-events:none}.rsvp-form__choices label>span{display:flex;align-items:center;min-height:48px;border:1px solid var(--line);padding:12px 14px;font-size:8px;letter-spacing:.12em;transition:background .22s,color .22s,border-color .22s}.rsvp-form__choices input:checked+span{background:var(--wine);border-color:var(--wine);color:#fff}.rsvp-form__choices label:hover>span{border-color:rgba(23,20,18,.38)}.field-error{display:none;margin-top:8px;color:var(--wine);font-size:8px;letter-spacing:.04em}.rsvp-input:has(:invalid:not(:placeholder-shown)) .field-error,.rsvp-block:has(:invalid:focus) .field-error{display:block}.palette span b{font:inherit;font-weight:400}.program-images{display:contents}

@media (max-width:900px){
  .site-header{padding:9px 12px}.header-shell{height:46px;grid-template-columns:auto 1fr auto;padding:0 10px;gap:12px}.header-nav{display:none}.header-actions{justify-self:end}.header-date small{display:none}.header-date{font-size:6px}.brand{width:30px;height:30px}.menu-button span{display:none}
  .invitation{display:block;min-height:0;padding:11vh 18px 10vh}.invitation>.section-index{top:20px}.invitation-scene{height:auto;min-height:0;margin-top:40px;padding-top:5vh}.invitation-media{position:relative;left:auto;top:auto;width:78vw;height:58vh;min-height:420px;transform:none;margin:24vw 0 0 auto}.invitation-title{position:absolute;inset:0;font-size:14.8vw;line-height:.8}.invitation-line--one{left:0;top:0}.invitation-line--two{left:0;top:13vw;transform:none;color:var(--ink);text-shadow:none}.invitation-line--three{left:0;right:auto;bottom:auto;top:26vw}.invitation-title em{right:7vw;bottom:35vh;font-size:14vw;color:var(--wine)}.invitation-copy-block{position:relative;left:auto;bottom:auto;width:82vw;margin:34px 0 0}.invitation-copy-block p{font-size:11px}.invitation-meta{display:none}
  .story-layout{display:block}.story-sticky{position:relative;height:auto;min-height:0;display:block;padding:11vh 18px 6vh;border-right:0;border-bottom:1px solid rgba(255,255,255,.12)}.story-kicker{position:static}.story-sticky__center{max-width:none;margin:6vh 0 0}.story-sticky__copy{margin:0}.story-sticky__copy h2{font-size:11.5vw}.story-nav{margin-top:5vh}.story-progress{display:none}.story-feed{padding:0 18px 9vh}.story-chapter{min-height:0;padding:8vh 0 3vh}.story-chapter__photo,.story-chapter:nth-child(even) .story-chapter__photo{width:82vw;height:58vh;min-height:400px;margin:0 0 0 auto}.story-chapter:nth-child(even) .story-chapter__photo{margin:0 auto 0 0}.story-chapter__year{font-size:19vw;left:12px;bottom:7px}.story-chapter__caption,.story-chapter:nth-child(even) .story-chapter__caption{width:94%;margin:18px 0 0}.story-chapter__caption h3{font-size:10vw}
  .dress{display:block;min-height:0;padding:12vh 18px 9vh}.dress-layout{display:block}.dress-heading h2{font-size:19vw}.dress-lead{width:86vw}.palette{max-width:none}.dress-slider-controls{margin-top:24px}.dress-slider{margin-top:6vh}.dress-slide{flex-basis:76vw;height:58vh;min-height:410px}.dress-slider__track{padding-right:24vw}.dress-lightbox figure{width:86vw;height:74vh}.dress-lightbox__nav{width:40px;height:40px;top:auto;bottom:25px}.dress-lightbox__nav--prev{left:18px}.dress-lightbox__nav--next{right:18px}.dress-lightbox__close{right:18px;top:20px}
  .rsvp{padding:12vh 18px 11vh}.rsvp>.section-index{top:22px}.rsvp-layout{display:block}.rsvp-intro{position:static}.rsvp-intro h2{font-size:14vw}.rsvp-intro p{font-size:11px;margin-bottom:7vh}.rsvp-fields{grid-template-columns:1fr}.rsvp-choice-grid--three,.rsvp-choice-grid--drinks{grid-template-columns:1fr 1fr}.rsvp-submit-row{grid-template-columns:1fr;gap:14px}.rsvp-submit-row button{width:100%;text-align:left}
}
@media(max-width:520px){.rsvp-choice-grid--two,.rsvp-choice-grid--three,.rsvp-choice-grid--drinks{grid-template-columns:1fr}.invitation-title{font-size:14.2vw}}

@media(max-width:900px){.rsvp-form>[data-form-fields]{grid-template-columns:1fr}.rsvp-form>[data-form-fields]>.rsvp-input,.rsvp-form>[data-form-fields]>.rsvp-block{grid-column:1}.rsvp-form__choices{grid-template-columns:1fr 1fr}}
@media(max-width:520px){.rsvp-form__choices{grid-template-columns:1fr}}

/* ========================= V4.4 image direction ========================= */
.hero__media img{object-position:center 38%;transform:scale(1.015)}
.invitation-line--one,.invitation-line--three{paint-order:stroke fill;-webkit-text-stroke:clamp(1px,.12vw,2px) rgba(244,239,231,.94);text-shadow:0 2px 22px rgba(244,239,231,.72)}
.invitation-line--two{text-shadow:0 3px 26px rgba(0,0,0,.58)}
.date-row figure{height:clamp(132px,11.5vw,190px)}
.date-row figure img{transform:scale(1.015);object-position:center 38%}
.date-row--one figure img{object-position:center top}
.date-row--two figure img{object-position:center 58%}
.program-image img{object-position:center 38%}
.location-frame img{transform:scale(1.015);filter:saturate(.78) brightness(.82);object-position:center 48%}
.location-frame:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(12,10,9,.3),rgba(12,10,9,.04) 42%,rgba(12,10,9,.38));pointer-events:none}
.location-title{color:var(--white);paint-order:stroke fill;-webkit-text-stroke:1px rgba(23,20,18,.5);text-shadow:0 4px 30px rgba(0,0,0,.72)}
.location-info{background:rgba(251,247,241,.96);color:var(--ink)}
.dress-slider__track{padding-right:0}
.dress-slider__track:after{content:"";flex:0 0 10%}
.dress-slide{flex-basis:42%;height:min(68vh,720px)}
.dress-slide img{object-position:center 30%}
.dress-slide:nth-child(4) img{object-position:center 52%}
.finale-photo img{object-position:center 34%;transform:scale(1.01)}

@media (min-width:761px){
  .hero__media{top:clamp(58px,6vw,84px)}
  .hero__media img{object-position:center top}
}

@media (max-width:760px){
  .hero__media img{object-position:center 38%;transform:scale(1)}
  .hero__title{grid-template-columns:auto auto auto;justify-content:space-between;font-size:13.2vw}
  .invitation-line--one,.invitation-line--three{-webkit-text-stroke:1px rgba(244,239,231,.96)}
  .date-row figure{height:clamp(76px,12vh,118px)}
  .date-row figure img{transform:none}
  .date-row{width:100%;gap:8px;font-size:13.5vw}
  .date-row--one figure{width:26vw}
  .date-row--two figure{width:24vw}
  .date-row--three figure{width:27vw}
  .date-row--four{font-size:22vw}
  .gallery-heading h2{font-size:14.8vw}
  .location-title{-webkit-text-stroke:1px rgba(23,20,18,.62);text-shadow:0 3px 20px rgba(0,0,0,.78)}
  .dress-slide{flex-basis:82vw;height:62vh;min-height:430px}
  .dress-slider__track{padding-right:0}
  .dress-slider__track:after{flex-basis:18vw}
  .finale-word{font-size:16.5vw}
  .finale-photo img{object-position:center 28%;transform:none}
}

.story-chapter__caption h3 > span{display:inline-block}
.date-row > span{min-width:0;flex-shrink:1}
@media(max-width:760px){
  .date-row{font-size:clamp(38px,10.2vw,78px);white-space:nowrap;gap:7px}
  .date-row--one figure{width:26vw}
  .date-row--two figure{width:24vw}
  .date-row--three figure{width:27vw}
}

.date-scene.is-two-word-day .date-row--two{justify-content:flex-start}
.date-scene.is-two-word-day .date-row--two figure{order:0}
.date-scene.is-two-word-day .date-row--two span{order:1}
.date-scene.is-two-word-day .date-row--three{justify-content:flex-end}
.date-scene.is-one-word-day .date-row--two{display:none}
.date-row--four{width:100%;max-width:100%;overflow:hidden;font-size:clamp(64px,15vw,220px);white-space:nowrap}

@media(min-width:761px) and (max-width:1100px){
  .date-row{font-size:8.5vw;gap:1.2vw}
  .date-row--one figure{width:22vw}
  .date-row--two figure{width:20vw}
  .date-row--three figure{width:20vw}
}

@media(max-width:1100px){
  .invitation{min-height:0;padding:110px 24px 90px}
  .invitation-scene{display:flex;flex-direction:column;height:auto;min-height:0;margin-top:28px;padding-top:0}
  .invitation-title{position:relative;inset:auto;order:1;display:flex;flex-direction:column;gap:5px;font-size:clamp(52px,9.8vw,104px);line-height:.86;letter-spacing:-.075em}
  .invitation-line{position:relative;left:auto;right:auto;top:auto;bottom:auto;white-space:normal;transform:none;color:var(--ink);text-shadow:none}
  .invitation-line--two{align-self:center}
  .invitation-line--three{align-self:flex-end}
  .invitation-title em{position:relative;right:auto;bottom:auto;align-self:flex-end;margin:8px 7vw 0 0;font-size:clamp(38px,7vw,72px);transform:rotate(-4deg)}
  .invitation-media{position:relative;left:auto;top:auto;order:2;width:min(78%,680px);height:clamp(300px,54vw,560px);max-height:none;min-height:0;transform:none;margin:28px 0 0 auto}
  .invitation-copy-block{position:relative;left:auto;bottom:auto;order:3;width:min(460px,90%);margin:30px 0 0}
  .invitation-copy-block p{font-size:12px;line-height:1.7}
  .invitation-meta{display:none}
}

@media(max-width:520px){
  .invitation{padding:96px 18px 72px}
  .invitation-title{font-size:clamp(40px,11.5vw,60px);gap:4px}
  .invitation-line--two{align-self:flex-start}
  .invitation-line--three{align-self:flex-end}
  .invitation-title em{font-size:clamp(34px,9vw,46px);margin-right:4vw}
  .invitation-media{width:88%;height:clamp(280px,95vw,410px);margin-top:22px}
  .invitation-copy-block{width:100%;margin-top:24px}
}
