:root{--cream:#faf7f1;--paper:#f4eee4;--ink:#302922;--gold:#b99760;--muted:#7f756b}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;color:var(--ink);background:var(--cream);font-family:Montserrat,Arial,sans-serif;font-weight:300}button,input{font:inherit}button{cursor:pointer}a{color:inherit;text-decoration:none}.masthead{height:164px;position:relative;background:#faf8f4;text-align:center;overflow:hidden;border-bottom:1px solid #e8e0d4}.wordmark{font-family:'Great Vibes','Cormorant Garamond',serif;font-size:67px;font-weight:400;line-height:1.45}.wordmark span{font-family:'Cormorant Garamond';font-style:italic;font-size:.82em}.masthead .wordmark{padding-top:17px}.masthead nav{display:flex;justify-content:center;gap:50px;position:relative;z-index:2}.masthead nav a{font-size:10px;letter-spacing:2.6px;font-weight:500}.masthead nav a:hover{color:var(--gold)}.corner{position:absolute;width:270px;height:270px;top:-185px;border:1px solid var(--gold);transform:rotate(45deg);opacity:.8}.corner.tl{left:-154px}.corner.tr{right:-154px}.gallery{display:grid;grid-template-columns:34% 46% 20%;height:min(46vw,650px);min-height:410px;position:relative;overflow:hidden}.photo{background-color:#a77c5e;background-position:center;background-size:cover;transition:background-image .35s,filter .6s;position:relative}.photo.left{border-right:2px solid #fff6}.photo.right{border-left:2px solid #fff6}.photo.center{background-position:center 38%}.scrim{position:absolute;inset:0;background:linear-gradient(90deg,#0006,#0002 65%,#0001)}.hero-copy{position:absolute;left:9%;top:19%;color:white;text-align:center;text-shadow:0 1px 10px #0004}.monogram{font-family:'Cormorant Garamond',serif;font-size:clamp(130px,18vw,240px);line-height:1;letter-spacing:-14px;font-weight:300}.monogram span{font-style:italic;font-size:.75em;position:relative;top:20px;margin:0 -9px}.hero-place{letter-spacing:6px;font-size:12px;line-height:2.3;font-weight:500}.tiny-rule,.gold-rule{display:block;width:80px;height:1px;background:var(--gold);margin:21px auto 0}.gallery-arrow{position:absolute;top:49%;transform:translateY(-50%);height:63px;width:63px;border:1px solid #fff9;border-radius:50%;background:#241c1640;color:#fff;font:50px/1 'Cormorant Garamond';z-index:4}.gallery-arrow.prev{left:2.5%}.gallery-arrow.next{right:2.5%}.dots{position:absolute;bottom:29px;left:46%;transform:translateX(-50%);display:flex;gap:13px;z-index:5}.dots button{width:10px;height:10px;padding:0;border:1px solid white;border-radius:100%;background:transparent}.dots button.active{background:white}.intro{padding:24px 8% 46px;text-align:center;position:relative;overflow:hidden}.intro h1{font:italic 33px 'Cormorant Garamond',serif;margin:3px}.intro .gold-rule{width:60px;margin:12px auto 28px}.fact-grid{display:grid;grid-template-columns:repeat(3,1fr);max-width:1040px;margin:auto}.fact-grid>div{display:flex;flex-direction:column;align-items:center;gap:8px;padding:0 15px;border-right:1px solid #d5be97}.fact-grid>div:last-child{border:0}.fact-grid .icon{font-size:40px;color:var(--gold);font-family:'Cormorant Garamond';height:51px}.fact-grid strong{font:500 14px 'Cormorant Garamond';letter-spacing:3px}.fact-grid small{font-size:9px;letter-spacing:3px}.welcome,.portal{padding:100px 20px;text-align:center}.welcome{background:#efe6d9}.eyebrow{font-size:10px;font-weight:500;letter-spacing:3px;color:#a28657}.welcome h2,.rsvp-section h2,.portal h2{font:400 clamp(44px,5vw,78px)/1.1 'Cormorant Garamond',serif;margin:18px 0}.welcome h2 i,.rsvp-section h2 i,.portal h2 i{font-weight:300}.welcome>p,.portal>p{max-width:600px;margin:20px auto 35px;line-height:2;color:#6b6056;font-size:13px}.primary{background:#41382f;color:#fff;border:1px solid #41382f;padding:18px 29px;font-size:10px;letter-spacing:2.3px;font-weight:500;display:inline-flex;gap:35px;justify-content:space-between;align-items:center}.primary:hover{background:#705940}.primary span{font-size:19px}.rsvp-section{background:#faf7f1;padding:95px 20px;text-align:center}.section-inner{max-width:590px;margin:auto}.sub{font-size:13px;color:var(--muted);line-height:2;margin-bottom:35px}.rsvp-card{background:white;border:1px solid #e4d8ca;box-shadow:0 18px 55px #503b2610;padding:40px;text-align:left;position:relative}.demo-chip{position:absolute;right:0;top:0;background:#e8ddc9;padding:8px 11px;font-size:9px;letter-spacing:1px}.rsvp-card h3{font:400 34px 'Cormorant Garamond';text-align:center;margin:14px 0 26px}.rsvp-card label:not(.choices label){display:block;font-size:10px;font-weight:500;letter-spacing:2px;margin:18px 0 9px}.rsvp-card input[type=text],.rsvp-card input[type=tel]{display:block;width:100%;border:1px solid #ded5c9;background:#fcfaf7;padding:15px 13px;font-size:14px;outline:none}.rsvp-card input:focus{border-color:var(--gold)}.primary.full{width:100%;margin-top:25px}.form-help{font-size:11px;color:#918579;line-height:1.8}.error{color:#a33b31;font-size:12px;min-height:10px}.household-seats{font-size:15px;color:#96734c;text-align:center;font-weight:500}.rsvp-card #response-view>p{text-align:center;font-size:13px;line-height:1.8}.choices{display:grid;gap:10px}.choices label{display:flex;align-items:center;border:1px solid #e0d5c5;padding:15px;gap:12px;font-size:13px;cursor:pointer}.choices label:has(input:checked){background:#f6efe4;border-color:#b99760}.text-button{display:block;border:0;background:none;color:#8d6b45;text-decoration:underline;margin:20px auto 0;font-size:12px}.thank-icon{font-size:52px;text-align:center;color:var(--gold)}#thanks-view{text-align:center}#thanks-view p{line-height:1.8}.portal{background:#f0e8dc}.portal-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:20px;max-width:960px;margin:45px auto 0}.portal-grid article{padding:31px 15px;background:#faf7f1;border:1px solid #ddd0bb}.portal-icon{font-size:40px;color:#b39767}.portal-grid h3{font:400 32px 'Cormorant Garamond';margin:12px 0}.portal-grid p{font-size:12px;color:#7d6f61;line-height:1.8}.portal-grid span{font-size:9px;letter-spacing:1.5px;color:#997a50}footer{padding:45px;text-align:center}footer .wordmark{font-size:49px}footer p{font-size:10px;letter-spacing:2px}footer .admin-link{background:transparent;border:0;color:#8b765d;text-decoration:underline;margin-top:19px;font-size:11px}dialog{width:min(970px,95vw);max-height:87vh;border:1px solid #c9b99d;background:#faf7f1;box-shadow:0 15px 70px #0004;padding:30px}dialog::backdrop{background:#1b1816ba}.dialog-header{display:flex;justify-content:space-between;gap:20px}.dialog-header h2{font:400 43px 'Cormorant Garamond';margin:8px 0}.close{border:none;background:transparent;font-size:38px}.admin-warning{font-size:12px;color:#92672f;background:#f2e6d2;padding:12px}.stats{display:grid;grid-template-columns:repeat(4,1fr);gap:12px;margin:20px 0}.stat{border:1px solid #e4d9cb;background:#fff;padding:17px}.stat strong{font:400 35px 'Cormorant Garamond';display:block}.stat span{font-size:10px;letter-spacing:1.5px}.admin-actions{display:flex;gap:10px;flex-wrap:wrap;margin:20px 0}.admin-actions button{background:#41382f;color:#fff;border:0;padding:12px;font-size:10px;letter-spacing:1px}.table-scroll{overflow:auto}table{width:100%;border-collapse:collapse;text-align:left;font-size:12px}th{font-size:10px;letter-spacing:1px;background:#eadfce}td,th{padding:13px;border-bottom:1px solid #e1d6c8}select{border:1px solid #ddcbb3;padding:7px;background:white}.admin-actions button:hover{background:#77644d}@media(max-width:750px){.masthead{height:137px}.masthead .wordmark{font-size:53px;padding-top:15px}.masthead nav{gap:15px;overflow:auto;justify-content:flex-start;padding:0 16px 10px;white-space:nowrap}.masthead nav a{font-size:9px;letter-spacing:1.4px}.gallery{height:520px;min-height:0;grid-template-columns:16% 68% 16%}.hero-copy{left:7%;top:27%}.monogram{font-size:clamp(110px,27vw,170px)}.hero-place{font-size:9px;letter-spacing:3px}.gallery-arrow{height:40px;width:40px;font-size:32px}.dots{left:50%}.intro{padding:27px 5% 34px}.intro h1{font-size:29px}.fact-grid{gap:5px}.fact-grid strong{font-size:10px;letter-spacing:1px}.fact-grid small{font-size:7px;letter-spacing:1px}.fact-grid .icon{font-size:28px;height:39px}.welcome,.portal,.rsvp-section{padding:65px 20px}.portal-grid{grid-template-columns:1fr}.rsvp-card{padding:34px 22px}.stats{grid-template-columns:repeat(2,1fr)}}

/* Save the Date film, immediately below the hero gallery */
.save-film{padding:78px 20px 85px;text-align:center;background:#faf7f1}.save-film h2{font:400 clamp(42px,5vw,70px)/1.1 'Cormorant Garamond',serif;margin:12px 0 30px}.save-film h2 i{font-weight:300}.film-frame{width:min(960px,100%);aspect-ratio:16/9;margin:auto;background:#49372c;position:relative;overflow:hidden;box-shadow:0 22px 55px #4a33251f;border:7px solid #fff;outline:1px solid #ddc5a3}.film-frame video{display:block;width:100%;height:100%;object-fit:contain;background:#13100e}.film-frame video[hidden]{display:none}.film-placeholder{position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;color:#fff4e7;background:radial-gradient(ellipse at 52% 20%,#927457,#3c2a25 70%)}.film-symbol{font:60px 'Cormorant Garamond',serif;color:#c6a779}.film-title{font:clamp(45px,7vw,90px) 'Great Vibes',cursive}.film-title em{font:italic .85em 'Cormorant Garamond',serif}.film-subtitle{font-size:11px;letter-spacing:5px}.film-note{margin-top:18px;font-size:12px;color:#f2dec6}.film-caption{font:italic 23px 'Cormorant Garamond',serif;color:#877363;margin:25px 0 0}@media(max-width:750px){.save-film{padding:55px 14px}.film-frame{border-width:4px}.film-title{font-size:48px}.film-symbol{font-size:32px}.film-subtitle{font-size:8px;letter-spacing:2px}.film-note{font-size:10px;margin-top:5px}}

/* V6 entry experience */
body.gate-active{overflow:hidden}.invitation-gate{position:fixed;inset:0;z-index:9999;overflow-y:auto;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 25%,#fffefa 0,#f8f3e9 58%,#efe6d9 100%);color:#66513a;text-align:center;padding:30px 20px;transition:opacity .9s ease,visibility .9s ease}.invitation-gate.gate-dismissed{opacity:0;visibility:hidden;pointer-events:none}.invitation-gate:before,.invitation-gate:after{content:"";position:fixed;inset:18px;border:1px solid #b7996b80;pointer-events:none}.invitation-gate:after{inset:26px;border-color:#c3ab853d}.gate-decoration{position:fixed;left:50%;height:70px;width:1px;background:linear-gradient(#0000,#b99d72);opacity:.7}.gate-decoration.top{top:0}.gate-decoration.bottom{bottom:0;transform:rotate(180deg)}.gate-content{position:relative;z-index:1;width:min(660px,100%);padding:40px 0}.gate-overline,.gate-location,.gate-date,.gate-footnote{font-size:10px;font-weight:500;letter-spacing:3px}.gate-overline{margin-bottom:28px;color:#987a55}.gate-key{color:#b38e55;margin-bottom:12px;animation:keyfloat 4s ease-in-out infinite}.gate-names{font:normal clamp(62px,10vw,104px)/1.25 'Great Vibes','Cormorant Garamond',serif;color:#5e4634}.gate-names em{font:italic .6em 'Cormorant Garamond',serif;padding:0 .08em}.gate-divider{display:flex;align-items:center;justify-content:center;gap:13px;color:#af8d5a;font-size:17px;margin:17px auto 20px}.gate-divider span{height:1px;width:78px;background:#c9b291}.gate-content h1{font:normal clamp(30px,5vw,52px)/1.15 'Cormorant Garamond',serif;margin:0 0 30px;color:#4f3b2c}.gate-content h1 i{font-weight:300}.gate-location{margin:0 0 13px}.gate-date{margin:0 0 34px}.gate-button{border:1px solid #a98b64;background:#ad8b60;color:white;letter-spacing:2px;font-size:11px;padding:20px 34px;min-width:254px;box-shadow:0 7px 20px #8e714028;transition:background .2s,transform .2s}.gate-button:hover{background:#856a48;transform:translateY(-2px)}.gate-button span{margin-left:18px}.gate-footnote{font-size:9px;letter-spacing:2px;margin-top:25px;color:#9f8f7d}@keyframes keyfloat{50%{transform:translateY(-7px)}}@media(max-width:600px){.invitation-gate:before{inset:12px}.invitation-gate:after{inset:18px}.gate-content{padding:25px 0}.gate-key svg{height:70px;width:70px}.gate-overline{font-size:9px}.gate-location,.gate-date{font-size:9px;letter-spacing:2px}}@media(prefers-reduced-motion:reduce){.gate-key{animation:none}.invitation-gate{transition:none}}

/* V7 luxury invitation entrance — ivory handmade paper, blind embossed monogram & wax seal. */
body.gate-active{overflow:hidden}
.luxury-gate{background:#eae0d2;color:#483b33;isolation:isolate;display:grid;place-items:center;padding:22px;min-height:100svh}
.luxury-gate:before,.luxury-gate:after{position:absolute;content:"";pointer-events:none;inset:15px;border:1px solid rgba(139,109,75,.4);z-index:1}
.luxury-gate:after{inset:23px;border-color:rgba(139,109,75,.13)}
.luxury-grain{position:absolute;inset:0;pointer-events:none;opacity:.75;background:radial-gradient(ellipse at 15% 8%,#fffdf5a8,transparent 50%),radial-gradient(ellipse at 80% 85%,#9e77573b,transparent 55%),repeating-linear-gradient(48deg,#fff9ed12 0px,#fff9ed12 1px,#6b5b4a05 2px,#6b5b4a05 4px)}
.luxury-gate .gate-stage{width:min(560px,100%);position:relative;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:35px 10px;min-height:min(820px,95svh)}
.luxury-gate .gate-intro{font:500 10px/1.5 'Montserrat',sans-serif;letter-spacing:5px;color:#765f51;margin-bottom:15px}
.luxury-gate .gate-names{font:400 clamp(54px,9vw,88px)/1.25 'Cormorant Garamond',serif;letter-spacing:-2px;color:#4c3932;text-shadow:0 1px #fff9ef80;margin-bottom:2px}
.luxury-gate .gate-names em{font:italic .67em 'Cormorant Garamond',serif;padding:0 .06em;color:#b38c62}
.luxury-gate .gate-venue{font:500 9px/1.6 'Montserrat',sans-serif;letter-spacing:3px;color:#7b6654}
.luxury-gate .envelope{width:min(410px,91vw);height:clamp(212px,53vw,253px);position:relative;perspective:900px;margin:31px 0 28px;filter:drop-shadow(0 19px 22px #60442e47);transform:translateZ(0)}
.luxury-gate .envelope-back{position:absolute;inset:0;background:#d6bca2;border-radius:3px;box-shadow:inset 0 0 0 1px #fff4e250}
.luxury-gate .envelope-letter{position:absolute;top:9%;left:8%;width:84%;height:85%;background:#f9f2e6;box-shadow:0 2px 6px #4d342124;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;transition:transform 1s ease .4s;z-index:2}
.luxury-gate .letter-monogram{font:400 35px 'Cormorant Garamond',serif;color:#987956;letter-spacing:3px}
.luxury-gate .letter-monogram i{font-size:.6em}
.luxury-gate .envelope-letter span{font:500 8px 'Montserrat',sans-serif;letter-spacing:3px;color:#a08768}
.luxury-gate .envelope-bottom{position:absolute;inset:0;z-index:4;background:linear-gradient(145deg,#ead8c2 0%,#ddc6ae 55%,#cdae8f 100%);clip-path:polygon(0 0,50% 57%,100% 0,100% 100%,0 100%);box-shadow:inset 0 -2px 6px #61442c25}
.luxury-gate .envelope-flap{position:absolute;inset:0;z-index:5;clip-path:polygon(0 0,100% 0,50% 58%);background:linear-gradient(180deg,#ecddca,#c8a887);transform-origin:top center;transition:transform .8s ease;backface-visibility:hidden}
.luxury-gate .seal{position:absolute;z-index:7;left:50%;top:55%;transform:translate(-50%,-50%);width:94px;height:103px;border-radius:45% 55% 49% 51% / 51% 45% 55% 49%;background:radial-gradient(circle at 30% 24%,#e9d1ad,#b69167 60%,#8e6d48 95%);box-shadow:0 6px 10px #44301942,inset 2px 3px 3px #fff9e681,inset -3px -4px 6px #62452591;border:2px solid #c2a27b;display:grid;place-items:center;transition:opacity .4s,transform .6s}
.luxury-gate .seal-rim{height:81px;width:72px;border:1px solid #f8e9cf7d;border-radius:50%;box-shadow:inset 0 0 0 3px #99755135,0 0 0 2px #8e6b4933;display:flex;flex-direction:column;align-items:center;justify-content:center}
.luxury-gate .seal-initials{font:400 34px/1 'Cormorant Garamond',serif;color:#f8e7ce;text-shadow:0 -1px #745739,0 1px #f8e6c4;letter-spacing:-2px}
.luxury-gate .seal-initials span{font-size:16px}
.luxury-gate .seal svg{height:17px;width:54px;fill:none;stroke:#edd4ae;stroke-width:1;opacity:.75}
.luxury-gate .gate-title{font:400 clamp(29px,4.8vw,41px)/1.1 'Cormorant Garamond',serif;letter-spacing:.2px;color:#513e33;margin:0 0 10px}
.luxury-gate .gate-title i{font-weight:300;color:#947251}
.luxury-gate .gate-date{font:500 10px/1.4 'Montserrat',sans-serif;letter-spacing:3px;color:#725d4c;margin:0 0 23px}
.luxury-gate .luxury-open{display:flex;align-items:center;justify-content:space-between;width:min(270px,95%);border:1px solid #91704f;background:#584438;color:#f7efe3;padding:15px 18px 15px 27px;font:500 10px 'Montserrat',sans-serif;letter-spacing:3px;cursor:pointer;box-shadow:0 8px 18px #4a33252a;transition:transform .2s,background .2s}
.luxury-gate .luxury-open:hover{background:#796049;transform:translateY(-2px)}
.luxury-gate .open-arrow{font-size:17px;letter-spacing:0}
.luxury-gate .gate-hint{font:500 8px 'Montserrat',sans-serif;letter-spacing:2.4px;color:#927a66;margin:16px 0 0}
.luxury-gate .gate-flourish{position:absolute;left:50%;transform:translateX(-50%);font:24px 'Cormorant Garamond',serif;color:#b69b7f;z-index:3}.luxury-gate .flourish-top{top:41px}.luxury-gate .flourish-bottom{bottom:31px}
.luxury-gate.opening .envelope-flap{transform:rotateX(175deg);z-index:1}
.luxury-gate.opening .envelope-letter{transform:translateY(-98px)}
.luxury-gate.opening .seal{opacity:0;transform:translate(-50%,-60%) scale(.7)}
.luxury-gate.opening .luxury-open{pointer-events:none}
@media(max-width:600px){.luxury-gate .gate-stage{min-height:calc(100svh - 60px);padding:47px 0}.luxury-gate .gate-intro{letter-spacing:3px}.luxury-gate .gate-venue{letter-spacing:1.8px}.luxury-gate .envelope{margin:31px 0 32px}.luxury-gate .gate-title{font-size:32px}.luxury-gate .flourish-top{top:31px}.luxury-gate .flourish-bottom{bottom:23px}}
@media(prefers-reduced-motion:reduce){.luxury-gate .envelope-flap,.luxury-gate .envelope-letter,.luxury-gate .seal{transition:none}}

/* V9: balanced triptych and centered I&S monogram */
.gallery{grid-template-columns:32% 36% 32%;}
.hero-copy{left:50%;top:17%;transform:translateX(-50%);width:94%;text-align:center;pointer-events:none;}
.monogram{font-size:clamp(100px,13vw,185px);letter-spacing:-9px;white-space:nowrap;}
.monogram span{top:10px;margin:0 -5px;}
.hero-place{letter-spacing:3px;font-size:clamp(9px,1vw,12px);}
.dots{left:50%;}
.photo{transition:opacity .48s ease, filter .48s ease;opacity:1;}
.photo.photo-fading{opacity:.18;}
@media(max-width:750px){.gallery{grid-template-columns:18% 64% 18%;}.hero-copy{top:16%;width:98%;}.monogram{font-size:clamp(90px,19vw,140px);}.hero-place{font-size:9px;letter-spacing:2px;}}

/* V10: Our Story editorial typography */
.our-story{background:linear-gradient(180deg,#f0e8dc 0%,#f8f4eb 52%,#efe5d7 100%);padding:88px 25px 100px;position:relative;overflow:hidden}.our-story:before,.our-story:after{content:"";position:absolute;width:180px;height:180px;border:1px solid #bd9c6547;transform:rotate(45deg);pointer-events:none}.our-story:before{top:-145px;left:-145px}.our-story:after{bottom:-145px;right:-145px}.our-story .story-ornament{font:38px 'Cormorant Garamond',serif;color:#ae916b;margin-bottom:12px}.our-story h2{font-size:clamp(60px,7vw,104px);margin:12px 0 8px}.our-story .story-tagline{font:italic 27px/1.4 'Cormorant Garamond',serif;color:#856d51;margin:7px auto 24px}.story-rule{height:1px;width:96px;background:#b99760;margin:26px auto 34px}.story-prose{max-width:730px;margin:auto}.our-story .story-prose p{max-width:none;text-align:left;margin:0 0 22px;font:400 18px/1.85 'Cormorant Garamond',Georgia,serif;color:#504337}.our-story .story-prose em{color:#966f42}.our-story .story-prose strong{font-weight:600}.our-story .story-prose blockquote{font:italic 29px/1.35 'Cormorant Garamond',serif;color:#936e4e;max-width:610px;margin:32px auto;text-align:center;padding:12px 20px;border-top:1px solid #dbc6a8;border-bottom:1px solid #dbc6a8}.our-story .story-prose .story-ending{font-style:italic;font-size:23px;color:#806042;text-align:center;margin:32px auto}.our-story .story-signoff{font:400 23px/1.55 'Cormorant Garamond',serif;color:#7f6147;max-width:750px;margin:35px auto 22px}.our-story .story-signature{font:48px 'Great Vibes','Cormorant Garamond',serif;color:#9c784f;margin:22px auto 35px}.our-story .primary{margin-top:5px}@media(max-width:750px){.our-story{padding:70px 22px}.our-story .story-prose p{font-size:18px;line-height:1.7}.our-story .story-tagline{font-size:23px}.our-story .story-prose blockquote{font-size:25px}.our-story .story-signoff{font-size:22px}}

/* V12: apply each photograph's own vertical focal point, including center panels. */
.gallery .photo.center{background-position:var(--photo-position, center);}
.gallery .photo{background-repeat:no-repeat;}

/* V15: clean photo gallery: full originals, NO blurred, stretched, or duplicate background. */
.gallery .photo{background-image:none!important;background-color:#e9dfd1;isolation:isolate;overflow:hidden;}
.gallery .photo::before{content:none!important;display:none!important;}
.gallery .photo::after{content:"";position:absolute;inset:0;pointer-events:none;background-image:var(--gallery-image);background-position:center center;background-repeat:no-repeat;background-size:contain;z-index:1;filter:none!important;transform:none!important;}
.gallery .photo.center .scrim{z-index:2;pointer-events:none;background:linear-gradient(180deg,#1b151444 0%,transparent 48%);}
.gallery .photo.center .hero-copy{z-index:3;top:7%;text-shadow:0 2px 12px #0009;}
.gallery .photo.center .monogram{font-size:clamp(62px,8.5vw,128px);}
.gallery .photo.center .hero-place{font-size:10px;line-height:1.8;}
@media(max-width:750px){.gallery .photo.center .hero-copy{top:7%;}.gallery .photo.center .monogram{font-size:clamp(60px,12vw,90px);}.gallery .photo{background-color:#e9dfd1;}.gallery .photo.left,.gallery .photo.right{background-color:#e9dfd1;}}

/* V16: edge-to-edge real photography, no side-fill, blur or color gutters.
   All slideshow selections are portrait photographs with careful per-photo framing. */
.gallery{grid-template-columns:30% 40% 30%;height:clamp(440px,43vw,620px);background:none;}
.gallery .photo{background-color:transparent!important;}
.gallery .photo::after{background-size:cover!important;background-position:var(--photo-focus,50% 50%)!important;filter:none!important;transform:none!important;}
.gallery .photo.center .scrim{background:linear-gradient(180deg,#0005,transparent 46%);}
@media(max-width:750px){.gallery{height:clamp(460px,125vw,650px);grid-template-columns:0 100% 0;}.gallery .photo.left,.gallery .photo.right{display:none;}.gallery .photo.center .hero-copy{top:6%;}}
/* Full original landscape portrait shared separately below the gallery. */


/* V17: Taller, true edge-to-edge photo frames; no blur or background gutters. */
.gallery{height:clamp(650px,55vw,790px)!important;}
.gallery .photo::after{transform:scale(var(--photo-zoom,1))!important;transform-origin:center center;}
@media(max-width:750px){.gallery{height:clamp(610px,178vw,780px)!important;}}

/* V18: cinematic architectural unveiling: gilded double doors, physical key-turn and grand reveal */
body.gate-active{overflow:hidden}
.grand-gate{background:#171d1a;color:#f9f1dc;display:flex;align-items:center;justify-content:center;padding:clamp(16px,3vh,28px) 22px;isolation:isolate;overflow:auto;min-height:100vh}
.grand-gate::before,.grand-gate::after{display:none!important}
.grand-ambient{position:absolute;inset:0;pointer-events:none;background:radial-gradient(ellipse at 50% 44%,#5f503b70 0%,transparent 55%),radial-gradient(ellipse at 50% -20%,#a283543d 0%,transparent 60%),linear-gradient(155deg,#1f2823,#101714 75%)}
.grand-frame{position:absolute;inset:18px;border:1px solid #b6975a65;pointer-events:none}.grand-frame:before{content:"";position:absolute;inset:6px;border:1px solid #b6975a35}.grand-corner{position:absolute;font-size:18px;color:#c8aa72}.gc1{top:-11px;left:-7px}.gc2{top:-11px;right:-7px}.gc3{bottom:-12px;left:-7px}.gc4{bottom:-12px;right:-7px}
.grand-layout{width:min(720px,100%);position:relative;z-index:2;display:flex;flex-direction:column;align-items:center;padding:20px 0 16px}
.grand-eyebrow{font:500 10px Montserrat,sans-serif;letter-spacing:.36em;color:#d8c49b;text-align:center;margin:8px 0 11px}.grand-names{font:400 clamp(58px,8vw,100px)/1.03 'Great Vibes',cursive;color:#fbefda;text-align:center;text-shadow:0 3px 30px #0005;padding:12px 0 2px}.grand-names span{font:italic .61em 'Cormorant Garamond',serif;color:#d5b476}.grand-subline{display:flex;align-items:center;gap:16px;font:500 9px Montserrat,sans-serif;letter-spacing:.4em;color:#d6c2a1;margin:9px auto 14px}.grand-subline i{height:1px;width:38px;background:#bd9b65}
.grand-reveal{position:relative;height:clamp(320px,51vh,495px);width:min(390px,90%);margin:3px auto 0;isolation:isolate;filter:drop-shadow(0px 24px 23px #0008);perspective:1100px;overflow:visible}
.grand-reveal::before{content:"";position:absolute;inset:-9px;border:1px solid #d3af73;clip-path:polygon(0 24%,2% 12%,9% 5%,20% 1%,50% 0,80% 1%,91% 5%,98% 12%,100% 24%,100% 100%,0 100%);border-radius:48% 48% 0 0/17% 17% 0 0;z-index:5;pointer-events:none}


.grand-door{position:absolute;top:0;bottom:0;width:50.15%;z-index:3;overflow:hidden;transition:transform 1.8s cubic-bezier(.22,.66,.12,1),filter 1.8s;border-top:2px solid #b38d58;background:repeating-linear-gradient(90deg,#563c2a 0,#694b33 5px,#402d21 9px,#76563a 15px,#473322 21px);box-shadow:inset 0 0 48px #130e08aa,0 0 2px #e0be80;backface-visibility:hidden}
.grand-door-left{left:0;transform-origin:left center;border-radius:95% 0 0 0/17% 0 0 0;border-right:1px solid #c8a16b}.grand-door-right{right:0;transform-origin:right center;border-radius:0 95% 0 0/0 17% 0 0;border-left:1px solid #c8a16b}
.door-pattern{position:absolute;inset:13px 10px;border:1px solid #cba87680;box-shadow:inset 0 0 0 5px #251b1470,0 0 0 5px #2e221b80;border-radius:47% 47% 0 0/16% 16% 0 0}.door-pattern:after{content:"";position:absolute;inset:15% 12% 12%;border:1px solid #ba915f60;box-shadow:0 0 0 7px #21160d2e;border-radius:48% 48% 0 0/16% 16% 0 0}.door-edge{position:absolute;inset:40% 0 auto;height:1px;background:#bb965c6b}
.grand-seal{position:absolute;left:50%;top:53%;transform:translate(-50%,-50%);z-index:9;width:110px;height:110px;border:0;background:radial-gradient(circle at 32% 26%,#ffeac1,#d3aa69 36%,#987447 72%,#5a4027);border-radius:48% 52% 45% 55%;box-shadow:0 0 0 5px #9f784661,0 8px 20px #120b078f,inset 3px 3px 5px #fff8daaa,inset -5px -5px 8px #4b2c21b0;display:grid;place-items:center;transition:transform .5s,opacity .7s;cursor:pointer;color:#543b28}
.grand-seal:hover{transform:translate(-50%,-50%) scale(1.07)}.grand-seal:focus-visible,.grand-open-text:focus-visible{outline:3px solid #fff1ca;outline-offset:5px}
.grand-seal-inner{width:87px;height:89px;border:1px solid #f7ddac;border-radius:50%;display:flex;align-items:center;justify-content:center;flex-direction:column;box-shadow:inset 0 0 0 3px #8e693452}.grand-initials{font:42px/1 'Cormorant Garamond',serif;letter-spacing:-5px}.grand-initials span{font-size:23px;padding:0 4px}.grand-key{width:56px;height:23px;fill:none;stroke:#674a2b;stroke-width:2.2;stroke-linecap:round;stroke-linejoin:round;transform:rotate(-35deg);margin-top:6px;transition:transform .8s}
.grand-door-caption{position:absolute;z-index:2;bottom:25px;left:0;right:0;text-align:center;font:500 8px Montserrat,sans-serif;letter-spacing:.33em;color:#fff1d7;text-shadow:0 2px 8px #000}
.grand-bottom{text-align:center;margin:20px auto 0}.grand-heading{font:400 clamp(32px,4vw,47px)/1.08 'Cormorant Garamond',serif}.grand-heading em{color:#d2af76;font-weight:300}.grand-date{font:500 10px Montserrat,sans-serif;letter-spacing:.26em;color:#d7c3a2;margin:13px 0 16px}.grand-date span{margin:0 8px;color:#b99868}.grand-open-text{border:1px solid #b79a68;background:transparent;color:#efdbb4;padding:15px 21px;min-height:48px;font:500 10px Montserrat,sans-serif;letter-spacing:.19em;cursor:pointer;transition:background .3s,color .3s}.grand-open-text:hover{background:#d3b27b;color:#222}.grand-open-text span{font-size:17px;margin-left:14px}.grand-fineprint{font:400 9px Montserrat,sans-serif;letter-spacing:.32em;color:#bba786;margin-top:17px}
.grand-gate.opening .grand-seal{transform:translate(-50%,-50%) rotate(45deg) scale(.65);opacity:0;pointer-events:none}.grand-gate.opening .grand-key{transform:rotate(100deg)}.grand-gate.opening .grand-door-left{transform:rotateY(-112deg);filter:brightness(.5)}.grand-gate.opening .grand-door-right{transform:rotateY(112deg);filter:brightness(.5)}.grand-gate.opening .grand-open-text{pointer-events:none}.grand-gate.gate-dismissed{opacity:0;visibility:hidden;pointer-events:none}
@media(max-width:600px){.grand-gate{padding:22px 18px}.grand-frame{inset:9px}.grand-layout{padding:9px 0}.grand-eyebrow{font-size:8px;letter-spacing:.23em}.grand-names{font-size:clamp(54px,13vw,75px)}.grand-reveal{height:clamp(280px,44vh,465px);width:min(310px,85%)}.grand-seal{width:90px;height:90px}.grand-seal-inner{width:74px;height:74px}.grand-initials{font-size:35px}.grand-bottom{margin-top:18px}.grand-heading{font-size:32px}.grand-subline{letter-spacing:.22em}.grand-date{font-size:9px}.grand-open-text{font-size:9px;letter-spacing:.12em;padding:14px}}
@media(prefers-reduced-motion:reduce){.grand-door,.grand-key,.grand-seal{transition:none!important}}

/* V19: completely opaque, photo-free golden-key ceremony */
.vault-gate{position:fixed!important;inset:0!important;z-index:9999!important;min-height:100vh!important;height:100vh!important;overflow-y:auto!important;display:flex!important;flex-direction:column;align-items:center;justify-content:space-between;text-align:center;background:radial-gradient(ellipse at 50% 38%,#343029 0%,#201e1a 55%,#151411 100%)!important;color:#ecddc3!important;padding:25px 18px!important;transition:opacity .85s ease,visibility .85s;isolation:isolate}
.vault-gate::before,.vault-gate::after{display:none!important}
.vault-outline{position:absolute;inset:15px;border:1px solid #9b7b493f;pointer-events:none}.vault-outline:before{content:'';position:absolute;inset:6px;border:1px solid #c19b5420}
.vault-top,.vault-foot{position:relative;z-index:2;font:500 9px Montserrat,sans-serif;letter-spacing:.34em;color:#c7a878}.vault-star,.vault-foot span{margin:0 13px;color:#f7d8a0}
.vault-stage{position:relative;z-index:2;margin:auto;display:flex;align-items:center;flex-direction:column;width:min(600px,100%);padding:25px 0}
.vault-preface{font:500 9px Montserrat,sans-serif;letter-spacing:.42em;color:#bda37d;margin:0 0 8px}.vault-names{font:400 clamp(59px,9vw,105px)/1.03 'Great Vibes','Cormorant Garamond',serif;margin:0;color:#f6e9d5;text-shadow:0 4px 25px #0005}.vault-names i{font:italic .52em 'Cormorant Garamond',serif;color:#c4a16c;margin:0 10px}.vault-location{font:500 10px Montserrat,sans-serif;letter-spacing:.26em;color:#cab18a;margin:13px 0 18px}.vault-location span{margin:0 8px}
.vault-machinery{width:clamp(220px,34vh,310px);height:clamp(220px,34vh,310px);position:relative;display:grid;place-items:center;margin:0 auto;transform:translateZ(0)}
.vault-ring{position:absolute;border-radius:50%;inset:0;background:repeating-conic-gradient(from 0deg,#a17b48 0deg 1deg,transparent 1deg 12deg);mask:radial-gradient(transparent 0 94%,black 95% 99%,transparent 100%);opacity:.85;transition:transform 2.7s cubic-bezier(.17,.73,.19,1)}
.ring-two{inset:19px;background:repeating-conic-gradient(from 0deg,#d3af76 0 2deg,#5e482f 2deg 4deg,transparent 4deg 20deg);opacity:.7}.ring-three{inset:42px;background:conic-gradient(from 0deg,#5e452b,#e6c895,#5e452b,#e6c895,#5e452b);mask:radial-gradient(transparent 0 92%,black 93% 99%,transparent 100%)}
.vault-center{position:absolute;inset:64px;border-radius:50%;border:1px solid #b89459;background:radial-gradient(circle at 35% 25%,#66533b,#29241e 70%);box-shadow:inset 0 0 24px #0d0a09,0 0 0 2px #b3975734;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:4px}.vault-center span{font:400 clamp(24px,4vh,37px) 'Cormorant Garamond',serif;color:#e4c893}.vault-center small{font-size:.45em}.vault-center em{font:500 7px Montserrat,sans-serif;letter-spacing:2px;color:#bea373}
.vault-key{position:absolute;z-index:4;width:clamp(58px,9vh,80px);height:clamp(134px,21vh,185px);left:50%;top:25%;transform:translate(-50%,5%) rotate(32deg);filter:drop-shadow(6px 7px 6px #000b);transition:transform 2.1s cubic-bezier(.26,.08,.14,1),opacity .7s}.vault-key svg{width:100%;height:100%}
.vault-message{font:400 clamp(23px,3vw,34px) 'Cormorant Garamond',serif;letter-spacing:.04em;margin:13px 0 20px}.vault-message em{color:#ddba80}
.vault-action{min-height:50px;padding:14px 25px;border:1px solid #c7a46d;background:linear-gradient(110deg,#d9b678,#a8814b,#efd09b);color:#231b14;letter-spacing:.17em;font:600 10px Montserrat,sans-serif;cursor:pointer;transition:filter .2s,transform .2s}.vault-action:hover{filter:brightness(1.12);transform:translateY(-2px)}.vault-action span{margin-left:22px;font-size:16px}.vault-action:focus-visible{outline:3px solid #fff;outline-offset:5px}.vault-whisper{font:italic 17px 'Cormorant Garamond',serif;color:#cdb28b;margin:15px 0 0}
.vault-gate.opening .vault-key{transform:translate(-50%,2%) rotate(392deg) scale(.9)}.vault-gate.opening .ring-one{transform:rotate(155deg)}.vault-gate.opening .ring-two{transform:rotate(-130deg)}.vault-gate.opening .ring-three{transform:rotate(108deg)}.vault-gate.opening .vault-action{pointer-events:none;opacity:.45}.vault-gate.opening .vault-machinery{animation:vaultPulse 3s ease 1.1s both}
@keyframes vaultPulse{0%{filter:brightness(1)}65%{filter:brightness(1.85)}100%{filter:brightness(1.2)}}
.vault-curtain{position:absolute;inset:0;background:#f6efe4;color:#765a3a;z-index:10;display:flex;justify-content:center;align-items:center;flex-direction:column;opacity:0;visibility:hidden;transition:opacity 1.35s ease,visibility 1.35s;pointer-events:none}.curtain-line{height:1px;background:#ad8b5a;width:0;transition:width 1.7s ease}.curtain-copy{font:400 clamp(55px,11vw,110px) 'Great Vibes',serif;margin-top:16px;opacity:0;transition:opacity 1.3s ease}
.vault-gate.curtain-on .vault-curtain{opacity:1;visibility:visible}.vault-gate.curtain-on .curtain-line{width:min(290px,65vw)}.vault-gate.curtain-on .curtain-copy{opacity:1}.vault-gate.gate-dismissed{opacity:0;visibility:hidden;pointer-events:none}
@media(max-width:600px){.vault-gate{padding:23px 17px!important}.vault-top,.vault-foot{font-size:7px;letter-spacing:.16em}.vault-preface{font-size:8px}.vault-location{font-size:8px;letter-spacing:.18em}.vault-stage{padding:10px 0}.vault-machinery{height:clamp(195px,33vh,270px);width:clamp(195px,33vh,270px)}.vault-message{margin:10px 0 14px}.vault-outline{inset:10px}}
@media(prefers-reduced-motion:reduce){.vault-gate *{animation:none!important;transition-duration:.01ms!important}}

/* V22 — real mobile navigation, less oversized gallery, keep full-edge photography. */
.mobile-menu-toggle{display:none}
@media(max-width:750px){
 html,body{max-width:100%;overflow-x:clip}
 .masthead{height:95px;overflow:visible;display:flex;align-items:center;justify-content:center;position:relative;z-index:30}
 .masthead .wordmark{padding:0;font-size:48px;line-height:1.1}
 .masthead .corner{display:none}
 .mobile-menu-toggle{display:flex;position:absolute;right:16px;top:25px;width:46px;height:44px;flex-direction:column;justify-content:center;align-items:center;gap:6px;border:1px solid #c6b295;background:#faf8f4;z-index:32;border-radius:2px}
 .mobile-menu-toggle span{width:20px;height:1px;background:#6a513c;display:block}
 .masthead nav{display:none;position:absolute;top:95px;left:0;right:0;background:#fbf8f2;border-top:1px solid #e3d6c7;border-bottom:1px solid #e3d6c7;flex-direction:column;align-items:stretch;gap:0;padding:8px 22px 12px;box-shadow:0 14px 22px #2c211215;z-index:31}
 .masthead nav.menu-open{display:flex}
 .masthead nav a{padding:16px 4px;font-size:11px;letter-spacing:2px;border-bottom:1px solid #e8dfd5;text-align:center}
 .masthead nav a:last-child{border-bottom:0}
 .gallery{height:clamp(445px,133vw,625px)!important;min-height:0!important;grid-template-columns:0 100% 0!important}
 .gallery .photo.left,.gallery .photo.right{display:none}
 .gallery .photo.center .hero-copy{top:5%;width:98%}
 .gallery .photo.center .monogram{font-size:clamp(65px,18vw,108px)}
 .gallery-arrow{width:43px;height:43px;font-size:36px;top:54%}
 .gallery-arrow.prev{left:10px}.gallery-arrow.next{right:10px}
 .dots{bottom:17px;gap:10px}
 .dots button{width:10px;height:10px}
 .save-film{padding-left:14px!important;padding-right:14px!important}
 .film-frame{width:100%;max-width:100%;overflow:hidden}
 .film-frame video{max-width:100%;height:auto}
}
@media(max-width:380px){.masthead .wordmark{font-size:41px}.mobile-menu-toggle{right:9px}.gallery{height:135vw!important}}

/* V23: Real IMG-based gallery for iOS Safari and in-app browser compatibility. */
.gallery .photo::after{display:none!important;content:none!important;background-image:none!important;}
.gallery .photo .real-gallery-photo{position:absolute;inset:0;display:block;width:100%;height:100%;object-fit:cover;object-position:center;z-index:1;opacity:1;visibility:visible;filter:none;transform:none;}
.gallery .photo.center .scrim{z-index:2;}
.gallery .photo.center .hero-copy{z-index:3;}
@media(max-width:750px){.gallery{display:grid!important;grid-template-columns:minmax(0,1fr)!important;height:clamp(490px,142vw,700px)!important;min-height:0!important;}.gallery .photo.center{grid-column:1!important;min-width:0!important;display:block!important;position:relative!important;}.gallery .photo.left,.gallery .photo.right{display:none!important;}.gallery .photo.center .real-gallery-photo{display:block!important;}}

/* V24: user-requested THREE full-width columns on phones, no blur or blank margins. */
@media(max-width:750px){
 .gallery{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;height:clamp(355px,105vw,510px)!important;min-height:0!important;width:100%!important;}
 .gallery .photo.left,.gallery .photo.center,.gallery .photo.right{display:block!important;position:relative!important;min-width:0!important;grid-column:auto!important;}
 .gallery .photo .real-gallery-photo{display:block!important;width:100%!important;height:100%!important;object-fit:cover!important;}
 .gallery .photo.center .hero-copy{left:0!important;width:100%!important;top:12%!important;padding:0 2px!important;}
 .gallery .photo.center .monogram{font-size:clamp(42px,11vw,66px)!important;letter-spacing:-4px!important;}
 .gallery .photo.center .monogram span{top:5px!important;margin:0 -3px!important;}
 .gallery .photo.center .hero-place{font-size:6px!important;letter-spacing:.8px!important;line-height:1.8!important;}
 .gallery .photo.center .tiny-rule{width:30px!important;margin:12px auto 0!important;}
 .gallery-arrow{height:35px!important;width:35px!important;top:50%!important;}
 .gallery-arrow.prev{left:3px!important}.gallery-arrow.next{right:3px!important}
 .dots{left:50%!important;bottom:11px!important;gap:8px!important;}
 .dots button{height:8px!important;width:8px!important;}
}
@media(max-width:380px){.gallery{height:110vw!important;}}

/* V25: preserve THREE complete side-by-side image panels; fix wrongly inherited
   translateX(-50%) that pushed monogram/text out of the center panel. */
@media(max-width:750px){
 .gallery{grid-template-columns:repeat(3,minmax(0,1fr))!important;height:clamp(390px,111vw,545px)!important;}
 .gallery .photo{overflow:hidden!important;}
 .gallery .photo.center .hero-copy{left:0!important;right:0!important;top:7%!important;width:100%!important;transform:none!important;margin:0!important;padding:0 3px!important;text-align:center!important;}
 .gallery .photo.center .monogram{font-size:clamp(39px,10.5vw,60px)!important;line-height:1.12!important;letter-spacing:-3px!important;white-space:nowrap!important;}
 .gallery .photo.center .monogram span{top:2px!important;margin:0 -2px!important;}
 .gallery .photo.center .hero-place{font-size:clamp(5px,1.25vw,7px)!important;letter-spacing:.35px!important;line-height:1.6!important;}
 .gallery .photo.center .tiny-rule{width:28px!important;margin:9px auto 0!important;}
 .gallery .photo.center .scrim{background:linear-gradient(180deg,rgba(0,0,0,.28),transparent 33%)!important;}
}

/* V26: Restore the ORIGINAL V12–14 mobile triptych proportions (16/68/16).
   Deliberately overrides the experimental V24–25 three-equal-column layout. */
@media (max-width:750px) {
  .gallery {
    display:grid!important;grid-template-columns:16% 68% 16%!important;
    width:100%!important;height:520px!important;min-height:0!important;
  }
  .gallery .photo.left,.gallery .photo.right,.gallery .photo.center {
    display:block!important;min-width:0!important;position:relative!important;
    grid-column:auto!important;overflow:hidden!important;
  }
  .gallery .photo .real-gallery-photo {
    display:block!important;width:100%!important;height:100%!important;
    object-fit:cover!important;visibility:visible!important;opacity:1!important;
  }
  .gallery .photo.center .hero-copy {
    left:50%!important;right:auto!important;top:23%!important;
    width:94%!important;max-width:100%!important;
    transform:translateX(-50%)!important;text-align:center!important;
    padding:0 3px!important;
  }
  .gallery .photo.center .monogram {
    font-size:clamp(90px,25vw,145px)!important;
    letter-spacing:-9px!important;line-height:1!important;white-space:nowrap!important;
  }
  .gallery .photo.center .monogram span {
    font-size:.75em!important;top:11px!important;margin:0 -6px!important;
  }
  .gallery .photo.center .hero-place {
    font-size:9px!important;letter-spacing:2px!important;line-height:2!important;
  }
  .gallery .photo.center .tiny-rule{width:52px!important;margin:13px auto 0!important;}
  .gallery .photo.center .scrim {background:linear-gradient(180deg,#0005,transparent 55%)!important;}
  .dots{left:50%!important;bottom:22px!important;}
}

/* V27: keep the wedding site completely concealed until invitation unlock completes.
   iOS dynamic toolbars can make 100vh shorter than the visual viewport. */
html:has(body.gate-active){overflow:hidden!important;}
body.gate-active{overflow:hidden!important;overscroll-behavior:none;}
body.gate-active > header,
body.gate-active > main,
body.gate-active > footer{visibility:hidden!important;pointer-events:none!important;}
#invitation-gate.vault-gate{position:fixed!important;top:0!important;right:0!important;bottom:0!important;left:0!important;inset:0!important;height:100dvh!important;min-height:100dvh!important;max-height:100dvh!important;box-sizing:border-box!important;z-index:99999!important;overscroll-behavior:contain!important;}
@supports not (height:100dvh){#invitation-gate.vault-gate{height:100vh!important;min-height:100vh!important;max-height:100vh!important;}}
