@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,500;0,600;1,400&family=Great+Vibes&family=Manrope:wght@300;400;500;600&display=swap');
:root{--ivory:#f3eee5;--pearl:#fbf9f5;--champagne:#d8c9b4;--mist:#a9bbc0;--blue:#71878b;--deep:#475c60;--taupe:#938675;--ink:#2f3735;--muted:#737a77;--gold:#aa9270;--line:rgba(60,73,70,.18);--serif:'Cormorant Garamond','Times New Roman',serif;--script:'Great Vibes','Segoe Script',cursive;--sans:'Manrope',Arial,sans-serif}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;overflow-x:hidden;color:var(--ink);background:var(--ivory);font-family:var(--sans);font-size:14px;font-weight:300;line-height:1.75;-webkit-font-smoothing:antialiased}body.no-scroll{overflow:hidden}a{color:inherit;text-decoration:none}button{color:inherit;font:inherit}img{display:block;max-width:100%}figure,blockquote{margin:0}.shell{width:min(calc(100% - 64px),1120px);margin-inline:auto}.shell-wide{width:min(calc(100% - 48px),1320px);margin-inline:auto}.section{position:relative;padding:clamp(100px,11vw,170px) 0}.eyebrow{margin:0;color:var(--blue);font-size:9px;font-weight:600;letter-spacing:.32em;text-transform:uppercase}.page-grain{position:fixed;inset:0;z-index:200;pointer-events:none;opacity:.055;background:repeating-radial-gradient(circle at 30% 40%,rgba(20,25,24,.3) 0 1px,transparent 1px 4px);background-size:7px 7px;mix-blend-mode:multiply}
.site-nav{position:fixed;top:27px;left:50%;z-index:60;display:flex;align-items:center;gap:11px;transform:translateX(-50%);color:white;text-shadow:0 1px 10px rgba(0,0,0,.2)}.site-nav a{font-size:8px;font-weight:500;letter-spacing:.24em;text-transform:uppercase;opacity:.68;transition:opacity .3s}.site-nav a:hover,.site-nav a.active{opacity:1}.site-nav span{width:24px;height:1px;background:rgba(255,255,255,.5)}
.site-nav.is-scrolled{color:var(--ink);text-shadow:none}.site-nav.is-scrolled span{background:rgba(47,55,53,.35)}
.hero{position:relative;height:100svh;min-height:660px;overflow:hidden;background:#9babb0;color:white}.hero-media,.hero-media picture,.hero-media img{position:absolute;inset:0;width:100%;height:100%}.hero-media{animation:heroFade 1.8s ease both}.hero-media img{object-fit:cover;object-position:center 53%;animation:heroScale 16s ease-out both}.hero-vignette{position:absolute;inset:0;background:linear-gradient(180deg,rgba(23,33,35,.18),transparent 38%,rgba(25,35,36,.38)),linear-gradient(90deg,rgba(20,30,31,.12),transparent 38%,rgba(20,30,31,.08))}.hero-frame{position:absolute;inset:18px;z-index:2;border:1px solid rgba(255,255,255,.42);animation:frameDraw 1.6s 1s ease both}.hero-frame:before,.hero-frame:after{content:'';position:absolute;background:rgba(255,255,255,.65)}.hero-frame:before{top:50%;left:-1px;width:1px;height:60px;transform:translateY(-50%)}.hero-frame:after{top:50%;right:-1px;width:1px;height:60px;transform:translateY(-50%)}.hero-frame span{position:absolute;top:18px;left:20px;font-family:var(--serif);font-size:16px;letter-spacing:.12em}.hero-copy{position:absolute;z-index:3;left:50%;bottom:11vh;width:min(92%,1180px);transform:translateX(-50%);text-align:center;text-shadow:0 3px 24px rgba(20,30,31,.15)}.hero-kicker{margin:0 0 22px;font-size:9px;font-weight:500;letter-spacing:.42em;text-transform:uppercase;animation:softUp 1s .7s both}.hero h1{display:flex;align-items:center;justify-content:center;gap:clamp(20px,4vw,62px);margin:0;font-family:var(--serif);font-size:clamp(66px,9.4vw,146px);font-weight:400;line-height:.72;letter-spacing:-.045em}.hero h1 span{display:block;overflow:hidden;animation:nameReveal 1.25s .35s both}.hero h1 em{font-family:var(--script);font-size:.72em;font-weight:400;line-height:1;animation:softUp 1.2s .75s both}.hero-rule{width:110px;height:1px;margin:34px auto 20px;background:rgba(255,255,255,.62);transform-origin:left;animation:lineDraw 1.3s 1.1s both}.hero-date{margin:0;font-family:var(--serif);font-size:16px;letter-spacing:.4em;animation:softUp 1s 1.25s both}.hero-scroll{position:absolute;right:35px;bottom:35px;z-index:4;display:flex;align-items:center;gap:14px;font-size:7px;font-weight:500;letter-spacing:.28em;text-transform:uppercase;writing-mode:vertical-rl}.hero-scroll i{display:block;width:1px;height:48px;overflow:hidden;background:rgba(255,255,255,.28)}.hero-scroll i:after{content:'';display:block;width:1px;height:24px;background:#fff;animation:scrollLine 2.2s infinite}
@keyframes heroFade{from{opacity:0}to{opacity:1}}@keyframes heroScale{from{transform:scale(1)}to{transform:scale(1.045)}}@keyframes nameReveal{from{clip-path:inset(0 0 100% 0);transform:translateY(30px)}to{clip-path:inset(0);transform:none}}@keyframes softUp{from{opacity:0;transform:translateY(14px)}to{opacity:1;transform:none}}@keyframes lineDraw{from{transform:scaleX(0)}to{transform:scaleX(1)}}@keyframes frameDraw{from{opacity:0;clip-path:inset(0 50%)}to{opacity:1;clip-path:inset(0)}}@keyframes scrollLine{0%{transform:translateY(-26px)}100%{transform:translateY(54px)}}
.intro{overflow:hidden;background:var(--pearl)}.intro:before{content:'';position:absolute;inset:0;background:radial-gradient(circle at 10% 20%,rgba(168,186,190,.12),transparent 31%)}.intro-watermark{position:absolute;right:-2vw;top:1%;color:rgba(89,105,104,.045);font-family:var(--script);font-size:clamp(160px,23vw,350px);line-height:1;white-space:nowrap}.intro-layout{position:relative;display:grid;grid-template-columns:1fr .86fr;align-items:center;gap:clamp(80px,10vw,150px)}.intro-visual{position:relative;max-width:520px;padding:28px 50px 86px 35px}.intro-main{position:relative;z-index:2;width:100%;aspect-ratio:3/4;object-fit:cover;object-position:center 28%}.intro-frame{position:absolute;z-index:1;inset:0 78px 55px 5px;border:1px solid var(--champagne)}.intro-inset{position:absolute;right:-30px;bottom:0;z-index:3;width:48%;padding:7px 7px 24px;background:var(--pearl);box-shadow:0 18px 50px rgba(55,58,52,.11)}.intro-inset img{width:100%;aspect-ratio:4/3;object-fit:cover}.intro-inset figcaption{padding-top:7px;color:var(--taupe);font-family:var(--serif);font-size:10px;font-style:italic;letter-spacing:.08em}.intro-copy{position:relative;z-index:2;max-width:520px}.intro-copy h2{margin:14px 0 22px;font-family:var(--serif);font-size:clamp(62px,7vw,102px);font-weight:400;line-height:.78;letter-spacing:-.045em}.intro-copy h2 i{color:var(--deep);font-weight:400}.intro-copy>p:not(.eyebrow):not(.script-signature){max-width:470px;color:var(--muted);font-size:13px}.ornament-line{display:flex;align-items:center;gap:12px;width:170px;margin:30px 0}.ornament-line:before,.ornament-line:after{content:'';height:1px;background:var(--champagne);flex:1}.ornament-line span{color:var(--gold);font-size:8px}.script-signature{margin:18px 0 0;color:var(--deep);font-family:var(--script);font-size:48px;line-height:1}
.triptych{position:relative;padding:55px 0 145px;background:var(--pearl)}.triptych-heading{display:flex;justify-content:space-between;align-items:center;width:min(calc(100% - 64px),1120px);margin:0 auto 28px;color:var(--taupe);font-size:8px;letter-spacing:.25em;text-transform:uppercase}.triptych-heading span{font-family:var(--serif);font-size:16px;font-style:italic;letter-spacing:.08em;text-transform:none}.triptych-grid{display:grid;grid-template-columns:.86fr 1.15fr .86fr;align-items:center;gap:clamp(10px,2vw,28px)}.triptych-grid figure{overflow:hidden}.triptych-grid img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s ease}.triptych-grid figure:hover img{transform:scale(1.025)}.triptych-side{height:clamp(360px,43vw,610px)}.triptych-center{height:clamp(440px,53vw,745px)}.triptych-side:first-child{transform:translateY(25px)}.triptych-side:last-child{transform:translateY(-25px)}
.story-quote{overflow:hidden;text-align:center;background:var(--ivory)}.quote-mark{position:absolute;top:-70px;left:50%;transform:translateX(-50%);color:rgba(73,91,92,.065);font-family:var(--serif);font-size:300px;line-height:1}.story-quote blockquote{position:relative;margin:auto;max-width:960px;font-family:var(--serif);font-size:clamp(35px,4.4vw,65px);font-style:italic;font-weight:400;line-height:1.2;letter-spacing:-.025em}.story-quote>p{margin:28px 0 0;color:var(--blue);font-size:8px;font-weight:600;letter-spacing:.32em;text-transform:uppercase}
.invitation{overflow:hidden;background:var(--pearl)}.invitation:before{content:'';position:absolute;inset:34px;border:1px solid rgba(171,147,113,.26);pointer-events:none}.botanical{position:absolute;width:170px;height:auto;fill:none;stroke:var(--gold);stroke-width:.75;opacity:.24}.botanical-left{left:-24px;bottom:20px}.botanical-right{right:-24px;top:20px;transform:rotate(180deg)}.invitation-paper{text-align:center}.invitation-monogram{display:grid;place-items:center;width:78px;height:78px;margin:0 auto 24px;border:1px solid var(--champagne);border-radius:50%;font-family:var(--serif);font-size:25px}.invitation-monogram span{margin:0 3px;color:var(--gold);font-family:var(--script);font-weight:400}.invitation h2{margin:8px 0 4px;font-family:var(--script);font-size:clamp(65px,8vw,105px);font-weight:400;line-height:1;color:var(--deep)}.invitation-lead{margin:0;color:var(--taupe);font-family:var(--serif);font-size:16px;font-style:italic}.family-grid{display:grid;grid-template-columns:1fr 65px 1fr;align-items:center;gap:45px;max-width:900px;margin:72px auto 60px}.family-grid article{min-height:160px}.family-grid h3{margin:0 0 17px;font-family:var(--serif);font-size:30px;font-weight:500}.family-grid p{margin:4px 0;font-size:12px}.family-grid small{display:block;margin-top:14px;color:var(--muted);font-size:10px;line-height:1.8}.family-divider{display:flex;flex-direction:column;align-items:center;color:var(--taupe);font-family:var(--serif);font-size:18px}.family-divider i{display:block;width:1px;height:72px;margin:9px 0;background:linear-gradient(transparent,var(--champagne),transparent)}.names-lockup{display:flex;align-items:center;justify-content:center;gap:clamp(20px,4vw,58px);padding-top:52px;border-top:1px solid var(--line);font-family:var(--serif);font-size:clamp(35px,5vw,67px);line-height:1}.names-lockup em{color:var(--gold);font-family:var(--script);font-size:1.18em;font-weight:400}.roles{display:flex;justify-content:center;gap:clamp(180px,28vw,410px);margin:18px 0 0;color:var(--taupe);font-family:var(--serif);font-size:13px;font-style:italic}
.event{background:#e8e1d7}.event-layout{display:grid;grid-template-columns:minmax(0,1.02fr) minmax(420px,.98fr);align-items:center}.event-image{position:relative;height:min(78vw,820px);max-height:820px;overflow:hidden}.event-image:after{content:'';position:absolute;inset:0;border:1px solid rgba(255,255,255,.35)}.event-image img{width:100%;height:100%;object-fit:cover;object-position:center 38%}.event-image figcaption{position:absolute;right:-52px;top:50%;z-index:2;transform:rotate(90deg);color:white;font-size:7px;font-weight:500;letter-spacing:.3em;text-transform:uppercase}.event-copy{position:relative;margin-left:-36px;padding:clamp(55px,7vw,105px);background:var(--pearl)}.event-copy:before{content:attr(data-day);position:absolute;right:30px;top:-78px;color:rgba(73,91,92,.055);font-family:var(--serif);font-size:240px;line-height:1}.event-copy h2{position:relative;margin:12px 0 43px;font-family:var(--serif);font-size:clamp(60px,7vw,100px);font-weight:400;line-height:.72;letter-spacing:-.035em}.event-copy h2 i{color:var(--deep);font-weight:400}.date-composition{display:grid;grid-template-columns:120px 1fr;gap:30px;align-items:center;padding:25px 0;border-block:1px solid var(--line)}.date-composition>strong{font-family:var(--serif);font-size:96px;font-weight:400;line-height:.8;text-align:center;color:var(--deep)}.date-composition>div{display:flex;flex-direction:column;padding-left:28px;border-left:1px solid var(--champagne)}.date-composition span{font-size:9px;font-weight:600;letter-spacing:.24em;text-transform:uppercase}.date-composition b{font-family:var(--serif);font-size:24px;font-weight:400}.date-composition small{color:var(--muted);font-size:9px}.event-times{display:grid;gap:0;margin-top:26px}.event-times article{display:grid;grid-template-columns:64px 1fr;gap:22px;padding:18px 0;border-bottom:1px solid var(--line)}.event-times time{font-family:var(--serif);font-size:20px;color:var(--deep)}.event-times h3{margin:0 0 3px;font-family:var(--serif);font-size:20px;font-weight:500}.event-times p{margin:0;color:var(--muted);font-size:10px;line-height:1.7}.event-actions{display:flex;gap:10px;margin-top:30px}.event-actions a,.event-actions button,.gift-invite button{display:inline-flex;align-items:center;justify-content:center;gap:22px;min-height:45px;padding:0 20px;border:1px solid var(--deep);border-radius:999px;background:transparent;cursor:pointer;font-size:8px;font-weight:600;letter-spacing:.2em;text-transform:uppercase;transition:background .3s,color .3s}.event-actions a:hover,.event-actions button:hover,.gift-invite button:hover{background:var(--deep);color:white}
.editorial-note{overflow:hidden;padding-block:130px;text-align:center;background:var(--deep);color:#eef0eb}.editorial-note:after{content:'';position:absolute;width:430px;height:430px;left:50%;top:50%;border:1px solid rgba(255,255,255,.1);border-radius:50%;transform:translate(-50%,-50%)}.editorial-note .eyebrow{color:var(--mist)}.note-index{position:absolute;left:5vw;top:50%;color:rgba(255,255,255,.08);font-family:var(--serif);font-size:190px;line-height:1;transform:translateY(-50%)}.editorial-note h2{position:relative;z-index:1;max-width:1000px;margin:22px auto 0;font-family:var(--serif);font-size:clamp(34px,4.2vw,62px);font-weight:400;line-height:1.2}.editorial-note h2 i{color:#c9d4d4;font-weight:400}
.gallery{overflow:hidden;background:var(--pearl)}.gallery-head{display:flex;justify-content:space-between;align-items:end;margin-bottom:90px}.gallery-head h2{margin:10px 0 0;font-family:var(--serif);font-size:clamp(62px,7.5vw,112px);font-weight:400;line-height:.76;letter-spacing:-.045em}.gallery-head h2 i{color:var(--deep);font-weight:400}.gallery-head>p{max-width:330px;margin:0 0 5px;color:var(--muted);font-size:11px}.gallery-grid{display:grid;grid-template-columns:repeat(12,1fr);grid-auto-rows:58px;gap:5px}.gallery-item{position:relative;overflow:hidden;cursor:zoom-in}.gallery-item:after{content:'View';position:absolute;left:50%;top:50%;display:grid;place-items:center;width:62px;height:62px;border:1px solid rgba(255,255,255,.65);border-radius:50%;background:rgba(45,55,55,.18);color:white;font-size:7px;letter-spacing:.2em;text-transform:uppercase;opacity:0;transform:translate(-50%,-45%);transition:.45s}.gallery-item:hover:after{opacity:1;transform:translate(-50%,-50%)}.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform 1s ease,filter 1s ease}.gallery-item:hover img{transform:scale(1.035);filter:saturate(.92)}.gallery-landscape{grid-column:1/span 8;grid-row:span 7}.gallery-portrait{grid-column:10/span 3;grid-row:span 7}.gallery-grid .gallery-portrait:nth-child(3){grid-column:1/span 3;grid-row:span 7;margin-top:55px}.gallery-tall{grid-column:5/span 4;grid-row:span 9}.gallery-grid .gallery-portrait:nth-child(5){grid-column:10/span 3;grid-row:span 7;margin-top:90px}.gallery-cinematic{grid-column:2/span 10;grid-row:span 7;margin-top:65px}.gallery-offset-left{grid-column:2/span 4;grid-row:span 8;margin-top:80px}.gallery-offset-right{grid-column:8/span 4;grid-row:span 7}.gallery-ending{grid-column:4/span 6;grid-row:span 8;margin-top:35px}.gallery-ending img{object-position:center 45%}
.cinematic-break{position:relative;height:94vh;min-height:650px;overflow:hidden;background:#8ea1a5;color:white}.cinematic-break>img{position:absolute;inset:-8% 0;width:100%;height:116%;object-fit:cover;object-position:center 56%}.cinematic-break:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,rgba(30,42,43,.05),rgba(29,40,41,.3))}.cinematic-overlay{position:absolute;z-index:2;left:50%;top:50%;transform:translate(-50%,-50%);text-align:center;text-shadow:0 3px 24px rgba(0,0,0,.2)}.cinematic-overlay p{margin:0;font-size:9px;font-weight:500;letter-spacing:.35em;text-transform:uppercase}.cinematic-overlay h2{margin:-5px 0 14px;font-family:var(--script);font-size:clamp(90px,13vw,190px);font-weight:400;line-height:1;white-space:nowrap}.cinematic-overlay span{font-family:var(--serif);font-size:15px;letter-spacing:.35em}
.countdown-section{position:relative;min-height:780px;display:grid;place-items:center;overflow:hidden;background:#6f8589;color:white;text-align:center}.countdown-section>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center}.countdown-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(45,63,66,.42),rgba(39,55,57,.62))}.countdown-inner{position:relative;z-index:2;width:min(92%,920px)}.countdown-inner .eyebrow{color:rgba(255,255,255,.78)}.countdown-inner h2{margin:10px 0 55px;font-family:var(--serif);font-size:clamp(62px,8vw,108px);font-weight:400;line-height:1}.countdown{display:grid;grid-template-columns:1fr 1px 1fr 1px 1fr 1px 1fr;align-items:center}.countdown>i{width:1px;height:85px;background:rgba(255,255,255,.28)}.countdown div{display:flex;flex-direction:column}.countdown strong{font-family:var(--serif);font-size:clamp(54px,7vw,90px);font-weight:400;line-height:.8;font-variant-numeric:tabular-nums}.countdown span{margin-top:16px;font-size:8px;font-weight:500;letter-spacing:.28em;text-transform:uppercase}
.gift-invite{overflow:hidden;text-align:center;background:var(--ivory)}.gift-seal{position:absolute;left:50%;top:50%;display:grid;place-items:center;width:350px;height:350px;border:1px solid rgba(170,146,112,.13);border-radius:50%;color:rgba(170,146,112,.07);font-family:var(--serif);font-size:120px;transform:translate(-50%,-50%)}.gift-invite h2{position:relative;margin:10px 0 14px;font-family:var(--script);font-size:clamp(70px,8vw,105px);font-weight:400;line-height:1;color:var(--deep)}.gift-invite>p:not(.eyebrow){position:relative;max-width:530px;margin:0 auto 30px;color:var(--muted);font-size:11px}.gift-invite button{position:relative}
.footer{position:relative;padding:110px 25px 38px;text-align:center;background:#e8e1d7}.footer-rule{display:flex;align-items:center;justify-content:center;gap:20px;margin-bottom:30px}.footer-rule span{width:75px;height:1px;background:var(--champagne)}.footer-rule b{font-family:var(--serif);font-size:20px;font-weight:400;letter-spacing:.1em}.footer h2{margin:10px 0 5px;color:var(--deep);font-family:var(--script);font-size:clamp(80px,10vw,130px);font-weight:400;line-height:1}.footer>p:not(.eyebrow){margin:0 auto;max-width:530px;color:var(--muted);font-family:var(--serif);font-size:16px;font-style:italic}.footer-names{margin:32px 0 4px;font-family:var(--serif);font-size:29px}.footer-names i{margin:0 8px;color:var(--gold);font-family:var(--script);font-weight:400}.footer time{color:var(--taupe);font-size:8px;font-weight:500;letter-spacing:.3em}.footer-switch{display:flex;justify-content:center;gap:30px;margin-top:43px}.footer-switch a{padding-bottom:3px;border-bottom:1px solid var(--champagne);font-size:8px;font-weight:600;letter-spacing:.18em;text-transform:uppercase}.footer>small{display:block;margin-top:55px;color:var(--taupe);font-size:7px;letter-spacing:.2em;text-transform:uppercase}
.music-control{position:fixed;right:24px;bottom:24px;z-index:80;width:52px;height:52px;display:grid;place-items:center;padding:0;border:1px solid rgba(255,255,255,.52);border-radius:50%;background:rgba(54,69,70,.72);color:white;box-shadow:0 9px 30px rgba(30,39,38,.16);backdrop-filter:blur(10px);cursor:pointer;transition:transform .3s,background .3s}.music-control:hover{transform:translateY(-2px);background:rgba(54,69,70,.9)}.music-icon{position:relative;z-index:2;width:16px;height:16px;fill:currentColor}.music-icon[hidden]{display:none}.music-disc{position:absolute;inset:-5px;border:1px solid rgba(255,255,255,.25);border-radius:50%;opacity:0}.music-disc i{position:absolute;bottom:17px;width:2px;background:white}.music-disc i:nth-child(1){left:20px;height:8px}.music-disc i:nth-child(2){left:25px;height:13px}.music-disc i:nth-child(3){left:30px;height:6px}.music-control.is-playing .music-disc{opacity:1;animation:musicOrbit 8s linear infinite}.music-control.is-playing .music-disc i{animation:equalize .9s ease-in-out infinite alternate}.music-control.is-playing .music-disc i:nth-child(2){animation-delay:-.45s}.music-control.is-playing .music-disc i:nth-child(3){animation-delay:-.7s}.music-control.is-loading{cursor:wait}.music-control.is-loading .music-icon{opacity:.5}@keyframes musicOrbit{to{transform:rotate(360deg)}}@keyframes equalize{to{height:4px}}
.gift-modal[hidden]{display:none}.gift-modal{position:fixed;inset:0;z-index:120;display:grid;place-items:center;padding:25px;opacity:0;visibility:hidden;transition:.35s}.gift-modal.open{opacity:1;visibility:visible}.gift-modal-backdrop{position:absolute;inset:0;background:rgba(31,40,39,.82);backdrop-filter:blur(9px)}.gift-card{position:relative;z-index:1;width:min(100%,820px);max-height:92vh;overflow:auto;padding:clamp(42px,6vw,75px);background:var(--pearl);text-align:center;transform:translateY(18px);transition:transform .35s}.gift-modal.open .gift-card{transform:none}.gift-card:after{content:'';position:absolute;inset:13px;border:1px solid var(--champagne);pointer-events:none}.gift-close{position:absolute;right:20px;top:15px;z-index:3;border:0;background:none;cursor:pointer;font-family:var(--serif);font-size:30px}.gift-card-monogram{width:58px;height:58px;display:grid;place-items:center;margin:0 auto 20px;border:1px solid var(--champagne);border-radius:50%;font-family:var(--serif);font-size:20px}.gift-card h2{margin:8px 0 10px;color:var(--deep);font-family:var(--script);font-size:clamp(52px,7vw,76px);font-weight:400;line-height:1}.gift-note{max-width:570px;margin:0 auto 30px;color:var(--muted);font-size:11px}.gift-content{display:grid;grid-template-columns:260px 1fr;gap:42px;align-items:center;text-align:left}.gift-qr{padding:9px;border:1px solid var(--line);background:white}.gift-qr img{width:100%;aspect-ratio:1;object-fit:contain}.gift-account>span{display:block;margin:17px 0 3px;color:var(--taupe);font-size:8px;font-weight:600;letter-spacing:.18em;text-transform:uppercase}.gift-account>span:first-child{margin-top:0}.gift-account>strong,.gift-account>div>strong{font-family:var(--serif);font-size:24px;font-weight:500}.gift-account>div{display:flex;align-items:center;gap:12px;flex-wrap:wrap}.gift-account button{padding:6px 11px;border:1px solid var(--champagne);border-radius:99px;background:none;cursor:pointer;font-size:7px;font-weight:600;letter-spacing:.13em;text-transform:uppercase}.gift-account p{margin:20px 0 0;padding-top:16px;border-top:1px solid var(--line);color:var(--muted);font-size:10px}
.lightbox{position:fixed;inset:0;z-index:130;display:flex;align-items:center;justify-content:center;padding:35px;background:rgba(16,22,22,.94);opacity:0;visibility:hidden;transition:.4s}.lightbox.open{opacity:1;visibility:visible}.lightbox figure{display:flex;flex-direction:column;align-items:center}.lightbox img{max-width:min(80vw,1200px);max-height:84vh;object-fit:contain;transform:scale(.98);transition:transform .45s}.lightbox.open img{transform:none}.lightbox figcaption{margin-top:10px;color:rgba(255,255,255,.62);font-family:var(--serif);font-size:12px;font-style:italic}.lightbox button{position:absolute;border:0;background:none;color:white;cursor:pointer;font-family:var(--serif)}.lightbox-close{right:28px;top:18px;font-size:35px}.lightbox-prev,.lightbox-next{top:50%;font-size:30px}.lightbox-prev{left:28px}.lightbox-next{right:28px}
.reveal{opacity:1;transform:none}.reveal-clip{clip-path:none}
@media(max-width:1024px){
  .hero h1{font-size:clamp(62px,9.2vw,95px)}.intro-layout{gap:60px}.intro-inset{right:-5px}.event-layout{grid-template-columns:.9fr 1.1fr}.event-copy{margin-left:-50px;padding:58px}.gallery-grid{grid-auto-rows:52px}.names-lockup{font-size:52px}
}
@media(max-width:820px){
  .shell{width:min(calc(100% - 44px),700px)}.shell-wide{width:calc(100% - 32px)}.section{padding-block:105px}.hero-copy{bottom:13vh}.hero h1{flex-direction:column;gap:0;font-size:88px;line-height:.68}.hero h1 em{margin:-5px 0;font-size:.6em}.hero-rule{margin-top:30px}.intro-layout{grid-template-columns:1fr;gap:75px}.intro-visual{width:min(88%,530px);margin:auto}.intro-copy{max-width:610px;text-align:center;margin:auto}.intro-copy>p:not(.eyebrow):not(.script-signature){margin-inline:auto}.ornament-line{margin-inline:auto}.triptych-grid{grid-template-columns:.82fr 1.1fr .82fr;gap:10px}.triptych-side{height:430px}.triptych-center{height:540px}.invitation:before{inset:20px}.family-grid{gap:20px}.names-lockup{font-size:39px}.event-layout{grid-template-columns:1fr;width:min(calc(100% - 44px),700px)}.event-image{height:730px}.event-copy{margin:-70px 30px 0;padding:65px}.event-copy:before{font-size:190px;top:-55px}.gallery-head{align-items:start;gap:50px}.gallery-head>p{max-width:250px}.gallery-grid{grid-auto-rows:46px;gap:5px}.cinematic-break{height:78vh;min-height:620px}.countdown-section{min-height:680px}.gift-content{grid-template-columns:220px 1fr}
}
@media(max-width:560px){
  .shell,.shell-wide{width:calc(100% - 36px)}.section{padding-block:85px}.page-grain{opacity:.035}.site-nav{top:20px}.hero{min-height:620px}.hero-frame{inset:10px}.hero-frame span{top:12px;left:13px}.hero-media img{object-position:center 38%}.hero-copy{bottom:12vh}.hero-kicker{margin-bottom:18px;font-size:7px}.hero h1{font-size:clamp(56px,17vw,72px);line-height:.72}.hero h1 em{font-size:.66em}.hero-rule{width:70px;margin:24px auto 15px}.hero-date{font-size:13px}.hero-scroll{right:20px;bottom:20px}.hero-scroll span{display:none}.intro-watermark{top:6%;right:-14vw;font-size:180px}.intro-visual{width:100%;padding:16px 32px 62px 14px}.intro-frame{inset:0 48px 36px 0}.intro-inset{right:0;width:47%;padding-bottom:20px}.intro-copy h2{font-size:60px}.intro-copy>p:not(.eyebrow):not(.script-signature){font-size:12px}.triptych{padding:30px 0 90px}.triptych-heading{width:calc(100% - 36px)}.triptych-heading p{display:none}.triptych-grid{width:calc(100% - 24px);grid-template-columns:.78fr 1.14fr .78fr;gap:5px}.triptych-side{height:315px}.triptych-center{height:400px}.triptych-side:first-child{transform:translateY(15px)}.triptych-side:last-child{transform:translateY(-15px)}.story-quote blockquote{width:calc(100% - 45px);font-size:34px}.story-quote blockquote br{display:none}.quote-mark{font-size:210px}.invitation:before{inset:10px}.botanical{width:115px}.invitation-monogram{width:62px;height:62px}.invitation h2{font-size:62px}.family-grid{grid-template-columns:1fr;margin:48px auto 45px}.family-grid article{min-height:0}.family-divider{flex-direction:row;justify-content:center;gap:9px}.family-divider i{width:55px;height:1px;margin:0;background:linear-gradient(90deg,transparent,var(--champagne),transparent)}.names-lockup{flex-direction:column;gap:2px;padding-top:40px;font-size:39px}.names-lockup em{margin:-8px 0}.roles{gap:80px;font-size:11px}.event{padding-block:70px}.event-layout{width:calc(100% - 24px)}.event-image{height:560px}.event-copy{margin:-45px 12px 0;padding:48px 24px}.event-copy:before{right:10px;top:-35px;font-size:130px}.event-copy h2{font-size:66px;margin-bottom:32px}.date-composition{grid-template-columns:84px 1fr;gap:15px}.date-composition>strong{font-size:74px}.date-composition>div{padding-left:17px}.date-composition b{font-size:20px}.event-times article{grid-template-columns:55px 1fr;gap:14px}.event-actions{flex-direction:column}.event-actions a,.event-actions button{width:100%}.editorial-note{padding-block:100px}.editorial-note h2{width:calc(100% - 38px);font-size:31px}.editorial-note h2 br{display:none}.note-index{font-size:130px}.gallery-head{display:block;margin-bottom:55px}.gallery-head h2{font-size:60px}.gallery-head>p{margin-top:28px;max-width:310px}.gallery-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:auto;gap:5px;width:calc(100% - 20px)}.gallery-grid .gallery-item:nth-child(n){grid-column:auto;grid-row:auto;margin:0;aspect-ratio:4/5}.gallery-grid .gallery-item.gallery-landscape,.gallery-grid .gallery-item.gallery-cinematic,.gallery-grid .gallery-item.gallery-ending{grid-column:1/-1;aspect-ratio:16/10}.gallery-item.gallery-ending{aspect-ratio:4/3}.gallery-item:last-child:nth-child(odd){grid-column:1/-1}.gallery-item:after{display:none}.cinematic-break{height:72vh;min-height:560px}.cinematic-break>img{object-position:center}.cinematic-overlay h2{font-size:92px}.countdown-section{min-height:610px}.countdown-inner h2{font-size:55px;margin-bottom:43px}.countdown strong{font-size:47px}.countdown span{font-size:7px;letter-spacing:.16em}.countdown>i{height:65px}.gift-seal{width:260px;height:260px}.gift-invite h2{font-size:66px}.footer{padding-top:85px}.footer h2{font-size:82px}.music-control{right:14px;bottom:14px;width:45px;height:45px}.music-disc i:nth-child(1){left:17px}.music-disc i:nth-child(2){left:21px}.music-disc i:nth-child(3){left:25px}.gift-modal{padding:10px}.gift-card{padding:45px 25px 30px}.gift-card:after{inset:7px}.gift-card h2{font-size:48px}.gift-content{grid-template-columns:1fr;gap:22px;text-align:center}.gift-qr{width:min(100%,260px);margin:auto}.gift-account>div{justify-content:center}.lightbox{padding:20px}.lightbox img{max-width:94vw;max-height:78vh}.lightbox-prev{left:12px}.lightbox-next{right:12px}.lightbox-close{right:15px}.lightbox-prev,.lightbox-next{top:auto;bottom:22px}
}
@media(max-width:390px){.hero h1{font-size:56px}.intro-copy h2,.gallery-head h2{font-size:53px}.names-lockup{font-size:35px}.event-copy{padding-inline:19px}.date-composition{grid-template-columns:72px 1fr}.date-composition>strong{font-size:65px}.countdown strong{font-size:41px}.countdown span{letter-spacing:.1em}.footer-switch{gap:18px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-media img,.hero-media,.hero-frame,.hero-kicker,.hero h1 span,.hero h1 em,.hero-rule,.hero-date,.hero-scroll i:after,.music-disc,.music-disc i{animation:none!important}.reveal{opacity:1;transform:none;transition:none}.reveal-clip{clip-path:none;transition:none}.gallery-item img,.triptych-grid img{transition:none}}

/* Final layout polish: hero, monogram, and desktop album */
.hero h1 span{padding:.04em .025em calc(.2em + 8px);margin:-.04em -.025em calc(-.2em - 8px)}
.invitation-monogram{width:84px;height:84px;font-size:22px;line-height:1;white-space:nowrap}
.invitation-monogram span{display:inline-block;margin:0 2px;font-size:.86em;line-height:1;transform:translateY(-.02em)}
@media (min-width:821px){
  .gallery-grid{grid-auto-rows:clamp(42px,3.5vw,54px);gap:8px}
  .gallery-landscape{grid-column:1/span 8;grid-row:1/span 8}
  .gallery-portrait{grid-column:9/span 4;grid-row:1/span 8}
  .gallery-grid .gallery-portrait:nth-child(3){grid-column:1/span 4;grid-row:10/span 8;margin:0}
  .gallery-tall{grid-column:5/span 4;grid-row:10/span 10}
  .gallery-grid .gallery-portrait:nth-child(5){grid-column:9/span 4;grid-row:10/span 8;margin:0}
  .gallery-cinematic{grid-column:1/span 8;grid-row:21/span 7;margin:0}
  .gallery-offset-left{grid-column:9/span 4;grid-row:21/span 7;margin:0}
  .gallery-offset-right{grid-column:1/span 5;grid-row:29/span 8;margin:0}
  .gallery-ending{grid-column:6/span 7;grid-row:29/span 8;margin:0}
}
@media (max-width:560px){
  .invitation-monogram{width:68px;height:68px;font-size:20px}
}
/* Mobile typography and composition polish */
@media (max-width:560px){
  .site-nav{top:17px;gap:8px}
  .site-nav a{font-size:7px;letter-spacing:.14em}
  .site-nav span{width:16px}
  .hero{height:min(100svh,680px);min-height:600px}
  .hero-media img{object-position:center 35%}
  .hero-copy{bottom:9.5vh}
  .hero-kicker{margin-bottom:14px;font-size:7.5px;letter-spacing:.28em}
  .hero h1{font-size:clamp(58px,16.3vw,68px);line-height:.76}
  .hero-date{font-size:12px;letter-spacing:.32em}
  .intro.section{padding:68px 0 72px}
  .intro-layout{gap:48px}
  .intro-copy h2{margin:8px 0 17px;font-size:56px;line-height:.82}
  .ornament-line{margin:21px auto}
  .triptych{padding:22px 0 68px}
  .triptych-heading{margin-bottom:18px}
  .triptych-grid{width:calc(100% - 30px);grid-template-columns:1fr 1fr;gap:6px}
  .triptych-center{grid-column:1/-1;grid-row:1;height:345px}
  .triptych-side{height:220px;transform:none!important}
  .triptych-side:first-child{grid-column:1;grid-row:2}
  .triptych-side:last-child{grid-column:2;grid-row:2}
  .story-quote.section{padding-block:72px}
  .story-quote blockquote{font-size:31px;line-height:1.16}
  .invitation.section{padding-block:72px}
  .invitation h2{margin-top:10px;font-size:58px;line-height:.9}
  .family-grid{margin:36px auto 38px;gap:18px}
  .family-grid h3{margin-bottom:10px;font-size:27px}
  .family-grid p{font-size:12px;line-height:1.65}
  .family-grid small{margin-top:10px;font-size:10px;line-height:1.65}
  .names-lockup{padding-top:32px;font-size:36px;line-height:.95}
  .roles{margin-top:14px;font-size:10px}
  .event{padding-block:55px}
  .event-image{height:490px}
  .event-image img{object-position:center 34%}
  .event-copy{margin:-36px 10px 0;padding:42px 22px}
  .event-copy h2{margin-bottom:27px;font-size:62px}
  .date-composition small{font-size:10px;line-height:1.55}
  .event-times h3{font-size:19px}
  .event-times p{font-size:11px;line-height:1.62}
  .event-actions{margin-top:24px}
  .event-actions a:only-child{width:auto;align-self:flex-start;padding-inline:20px}
  .editorial-note{padding-block:82px}
  .gallery.section{padding-block:75px}
  .gallery-head{margin-bottom:38px}
  .gallery-head h2{font-size:55px;line-height:.82}
}
/* Mobile image focal-point correction */
@media (max-width:560px){
  /* Keep the full couple centered in the portrait hero source. */
  .hero-media img{object-position:center center}
  /* These portrait originals are 2:3; matching the frame avoids cutting faces or dresses. */
  .intro-main{aspect-ratio:2/3;object-position:center}
  .triptych-center{height:auto;aspect-ratio:3/2;object-position:center}
  .triptych-side{height:auto;aspect-ratio:2/3}
  .triptych-grid img{object-position:center}
  .event-image{height:auto;aspect-ratio:3/5}
  .event-image img{object-position:center}
  .gallery-grid .gallery-item:not(.gallery-landscape):not(.gallery-cinematic):not(.gallery-ending){aspect-ratio:2/3}
  .gallery-grid .gallery-item.gallery-landscape{aspect-ratio:10/7}
  .gallery-grid .gallery-item.gallery-cinematic{aspect-ratio:3/2}
  .gallery-grid .gallery-item.gallery-ending{grid-column:1/-1;aspect-ratio:2/3}
  .cinematic-break{height:auto;min-height:0;aspect-ratio:3/2}
  .cinematic-break>img{inset:0;width:100%;height:100%;object-position:center}
  .cinematic-overlay h2{font-size:70px}
}
/* Mobile text spacing correction */
@media (max-width:560px){
  .hero h1{gap:7px}
  .hero h1 em{margin:0;line-height:.8}
  .hero h1 span{margin:0 -.025em 0}
  .names-lockup{gap:9px}
  .names-lockup em{margin:0;line-height:.72}
  .footer-names i{margin-inline:13px}
}
/* Wedding-card switch controls */
.site-nav{gap:3px;padding:4px;border:1px solid rgba(255,255,255,.42);border-radius:999px;background:rgba(33,47,48,.22);box-shadow:0 10px 28px rgba(18,27,28,.16);backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}
.site-nav span{display:none}
.site-nav a{min-width:94px;padding:9px 13px;border-radius:999px;font-size:8px;letter-spacing:.14em;text-align:center;opacity:.8;transition:background .28s,color .28s,opacity .28s,box-shadow .28s}
.site-nav a:hover,.site-nav a.active{background:#fff;color:var(--deep);opacity:1;text-shadow:none;box-shadow:0 3px 10px rgba(20,30,31,.12)}
.site-nav.is-scrolled{border-color:rgba(71,92,96,.2);background:rgba(251,249,245,.86);box-shadow:0 8px 22px rgba(42,51,49,.09)}
.site-nav.is-scrolled a.active{background:var(--deep);color:#fff}
.footer-switch{display:inline-flex;gap:3px;margin-top:35px;padding:4px;border:1px solid rgba(71,92,96,.18);border-radius:999px;background:rgba(251,249,245,.48)}
.footer-switch a{padding:8px 14px;border:0;border-radius:999px;color:var(--taupe);font-size:8px;letter-spacing:.14em;transition:background .25s,color .25s}
.footer-switch a:hover{background:var(--deep);color:#fff}
@media (max-width:560px){
  .site-nav{top:15px;padding:3px}
  .site-nav a{min-width:88px;padding:8px 11px;font-size:7px;letter-spacing:.12em}
  .footer-switch{margin-top:30px}
}
/* Scroll entrance motion */
@media (prefers-reduced-motion:no-preference){
  .reveal.reveal-pending{opacity:0;transform:translateY(28px);will-change:opacity,transform;transition:opacity .8s cubic-bezier(.2,.7,.2,1),transform .8s cubic-bezier(.2,.7,.2,1)}
  .reveal.reveal-pending.visible{opacity:1;transform:none}
  .reveal-clip.reveal-pending{clip-path:inset(0 0 100% 0);will-change:clip-path;transition:clip-path 1s cubic-bezier(.2,.7,.2,1)}
  .reveal-clip.reveal-pending.visible{clip-path:inset(0)}
}
/* Wedding wish form */
.gift-actions{position:relative;display:flex;justify-content:center;flex-wrap:wrap;gap:10px}
.gift-invite .gift-money-button{border-color:var(--champagne);background:rgba(255,255,255,.42);color:var(--deep)}
.gift-invite .gift-money-button:hover{border-color:var(--deep);background:var(--deep);color:#fff}
.wish-modal[hidden]{display:none}.wish-modal{position:fixed;inset:0;z-index:125;display:grid;place-items:center;padding:25px;opacity:0;visibility:hidden;transition:.35s}.wish-modal.open{opacity:1;visibility:visible}.wish-modal-backdrop{position:absolute;inset:0;background:rgba(31,40,39,.82);backdrop-filter:blur(9px)}
.wish-card{position:relative;z-index:1;width:min(100%,590px);max-height:92vh;overflow:auto;padding:clamp(42px,6vw,65px);background:var(--pearl);text-align:center;transform:translateY(18px);transition:transform .35s}.wish-modal.open .wish-card{transform:none}.wish-card:after{content:'';position:absolute;inset:13px;border:1px solid var(--champagne);pointer-events:none}.wish-close{position:absolute;right:20px;top:15px;z-index:3;border:0;background:none;cursor:pointer;font-family:var(--serif);font-size:30px}.wish-card h2{position:relative;margin:10px 0 8px;color:var(--deep);font-family:var(--script);font-size:clamp(56px,7vw,80px);font-weight:400;line-height:1}.wish-lead{position:relative;max-width:390px;margin:0 auto 27px;color:var(--muted);font-size:11px;line-height:1.75}
.wish-form{position:relative;display:grid;gap:15px;text-align:left}.wish-form label{display:grid;gap:6px;color:var(--taupe);font-size:8px;font-weight:600;letter-spacing:.18em;text-transform:uppercase}.wish-form input,.wish-form textarea{width:100%;border:1px solid var(--champagne);border-radius:0;background:rgba(255,255,255,.54);padding:12px 13px;color:var(--ink);font-family:var(--sans);font-size:13px;font-weight:400;letter-spacing:normal;text-transform:none;outline:none;transition:border-color .2s,box-shadow .2s}.wish-form textarea{resize:vertical;min-height:112px;line-height:1.55}.wish-form input:focus,.wish-form textarea:focus{border-color:var(--deep);box-shadow:0 0 0 3px rgba(71,92,96,.1)}.wish-form button{display:inline-flex;align-items:center;justify-content:center;gap:18px;min-height:46px;margin-top:5px;border:1px solid var(--deep);border-radius:999px;background:var(--deep);color:#fff;cursor:pointer;font-size:8px;font-weight:600;letter-spacing:.18em;text-transform:uppercase;transition:opacity .2s,transform .2s}.wish-form button:hover{transform:translateY(-1px)}.wish-form button:disabled{cursor:wait;opacity:.66}.wish-status{min-height:20px;margin:0;text-align:center;font-size:10px;line-height:1.55}.wish-status[data-state='success']{color:#45675c}.wish-status[data-state='error']{color:#9b5d55}.wish-status[data-state='sending']{color:var(--taupe)}
@media(max-width:560px){.gift-actions{display:grid;width:min(100%,280px);margin:auto}.gift-invite .gift-actions button{width:100%}.wish-modal{padding:10px}.wish-card{padding:45px 25px 28px}.wish-card:after{inset:7px}.wish-card h2{font-size:58px}.wish-form{gap:13px}.wish-form input,.wish-form textarea{font-size:16px}.wish-form textarea{min-height:105px}}
/* RSVP options in wish form */
.wish-form fieldset{margin:0;padding:0;border:0}.wish-form legend{margin:0 0 7px;color:var(--taupe);font-size:8px;font-weight:600;letter-spacing:.18em;text-transform:uppercase}.wish-options{display:grid;gap:7px}.wish-options label{display:flex;align-items:center;gap:10px;border:1px solid var(--champagne);background:rgba(255,255,255,.54);padding:10px 12px;color:var(--ink);font-size:11px;font-weight:400;letter-spacing:normal;line-height:1.35;text-transform:none;cursor:pointer;transition:border-color .2s,background .2s}.wish-options label:has(input:checked),.wish-options label.selected{border-color:var(--deep);background:rgba(113,135,139,.1)}.wish-options input{width:15px;min-width:15px;height:15px;margin:0;padding:0;accent-color:var(--deep);box-shadow:none}.wish-options input:focus{box-shadow:0 0 0 3px rgba(71,92,96,.12)}
@media(max-width:560px){.wish-options label{padding:11px 12px;font-size:13px}.wish-options input{width:16px;min-width:16px;height:16px}}