@font-face{font-family:Cormorant;src:url(assets/serif.ttf) format('truetype');font-display:swap}@font-face{font-family:Cormorant;src:url(assets/serif-italic.ttf) format('truetype');font-style:italic;font-display:swap}@font-face{font-family:Vibes;src:url(assets/script.ttf) format('truetype');font-display:swap}@font-face{font-family:Jost;src:url(assets/sans.ttf) format('truetype');font-display:swap}
:root{--paper:#f1eadf;--ink:#45382e;--muted:#756857;--olive:#6d705b;--line:#c9bcaa;--serif:Cormorant,Georgia,serif;--sans:Jost,Arial,sans-serif;--script:Vibes,cursive}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:40px}body{margin:0;color:var(--ink);background:var(--paper);font-family:var(--serif);font-size:19px;-webkit-font-smoothing:antialiased}body.awaiting-entry,body.modal-open{overflow:hidden}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}a{color:inherit}button:focus-visible,a:focus-visible,summary:focus-visible{outline:2px solid #8b6348;outline-offset:7px}button{border:0}button:disabled{cursor:default}.svg-definitions{position:absolute;width:0;height:0;overflow:hidden}main{position:relative}main:before{content:"";position:absolute;inset:0;opacity:.055;pointer-events:none;z-index:3;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 180 180' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Cpath fill='%23786b59' filter='url(%23n)' opacity='.6' d='M0 0h180v180H0z'/%3E%3C/svg%3E")}.eyebrow{font:10px var(--sans);letter-spacing:3px}.site-header{height:94px;display:flex;align-items:center;justify-content:space-between;padding:0 6%;border-bottom:1px solid #d8ccbb;position:relative;z-index:5}.monogram{position:relative;display:flex;align-items:center;gap:7px;text-decoration:none;font-size:27px;width:50px;height:50px}.monogram span:last-child{transform:translateY(9px)}.monogram span:first-child{transform:translateY(-6px)}.monogram i{position:absolute;width:1px;height:43px;background:var(--ink);transform:rotate(32deg);left:25px;top:3px}.header-date{font:11px var(--sans);letter-spacing:4px;margin-left:-15px}.text-button{background:transparent;padding:10px 0;font:10px var(--sans);letter-spacing:2px}.tiny-plus{font-size:16px;margin-left:12px}.hero{height:max(700px,calc(100svh - 94px));max-height:1100px;position:relative;overflow:hidden;display:flex;align-items:center;justify-content:center;background:radial-gradient(ellipse at 50% 35%,#fbf7ef 0%,#eee5d6 75%)}.hero-border{position:absolute;inset:24px;border:1px solid #bbae9455;z-index:2;pointer-events:none}.hero-border:after{content:"";position:absolute;inset:5px;border:1px solid #bbae9422}.couple{position:absolute;bottom:40px;left:-4%;width:108%;height:85%;opacity:.63;filter:blur(4px) saturate(.65);pointer-events:none;mask-image:linear-gradient(#000 67%,transparent 100%)}.couple img{height:100%;width:100%;object-fit:fill}.soft-light{position:absolute;inset:0;pointer-events:none;background:linear-gradient(90deg,transparent 5%,#f1eadf00 21%,#f6f0e7dd 35%,#f6f0e7dd 64%,#f1eadf00 81%,transparent 97%)}.hero-content{position:relative;z-index:2;text-align:center;width:100%;padding:54px 20px 88px}.hero h1{font-size:clamp(68px,7.5vw,112px);font-weight:400;line-height:.9;margin:30px 0 24px}.hero h1 span{display:block;font-family:var(--script);font-size:1.04em;line-height:1.13;margin-top:-7px;color:#826b50;transform:rotate(-5deg)}.hero-names{font-size:clamp(21px,2.25vw,34px);letter-spacing:5px;margin:0 0 26px}.hero-names em{font-size:1.2em;font-weight:400;letter-spacing:0;margin:0 6px}.date-line{display:flex;justify-content:center;align-items:center;gap:18px}.date-line p{font:9px var(--sans);letter-spacing:4px;margin:0}.date-line span{height:1px;width:38px;background:#baaa94}.hero-date{font-size:clamp(32px,3.8vw,54px);letter-spacing:4px;margin:7px 0 19px;font-variant-numeric:lining-nums}.hero-date i{font-size:.5em;font-style:normal;vertical-align:middle;margin:0 3px}.hero-note{font-size:20px;line-height:1.5;margin:0}.hero-scroll{display:inline-flex;flex-direction:column;gap:18px;align-items:center;margin-top:30px;text-decoration:none;font:8px var(--sans);letter-spacing:2px}.hero-scroll svg{height:28px;width:28px;transform:rotate(90deg);animation:nudge 3s ease-in-out infinite}.hero-footnote{position:absolute;bottom:28px;font:8px var(--sans);letter-spacing:2px;color:#796a56}.hero-sprig{position:absolute;color:#817b60;opacity:.33;width:140px;height:210px;z-index:1}.sprig-left{left:24%;top:9%;transform:rotate(-28deg)}.sprig-right{right:23%;bottom:9%;transform:rotate(140deg)}.invitation{text-align:center;padding:104px 20px 96px;position:relative;background:#f6f0e7}.note-sprig{width:44px;height:70px;color:#77785c;margin-bottom:20px}h2{font-weight:400;font-size:clamp(34px,4vw,54px);line-height:1.08;margin:20px 0 30px}h2 em{font-weight:400}.invitation>p:not(.eyebrow){font-size:20px;line-height:1.65;margin:0 0 22px}.signature{display:block;font:43px var(--script);margin-top:31px;transform:rotate(-5deg)}.agenda{position:relative;display:flex;align-items:center;justify-content:center;gap:100px;overflow:hidden;background:var(--olive);color:#f6f0e6;padding:85px 8%}.agenda .eyebrow{color:#ece7d8}.agenda h2{font-size:clamp(38px,4vw,58px);margin:18px 0 22px}.agenda-copy{position:relative;z-index:2}.agenda-copy>p:not(.eyebrow){line-height:1.6;font-size:19px}.calendar-actions{display:flex;align-items:flex-start;flex-direction:column;gap:15px;margin-top:28px}.button{display:inline-flex;align-items:center;justify-content:center;gap:15px;text-decoration:none;border:1px solid #d7cfbd;font:9px var(--sans);letter-spacing:1.5px;padding:18px 24px;min-height:54px;transition:background .3s,transform .3s}.button svg{height:20px;width:20px}.button .arrow{width:18px}.button-cream{color:#4d503f;background:#f4eee2}.button:hover{background:#e5dccb;transform:translateY(-2px)}.google-link{font:11px var(--sans);text-decoration:none;letter-spacing:.3px;color:#ede8da}.google-link span{text-decoration:underline;text-underline-offset:4px}.calendar-card{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;justify-content:center;width:235px;height:285px;flex-shrink:0;border:1px solid #c9c8ac99;outline:1px solid #c9c8ac55;outline-offset:7px;transform:rotate(5deg);background:#72745d;box-shadow:12px 16px 40px #22261333}.calendar-month{font:11px var(--sans);letter-spacing:4px}.calendar-day{font-size:137px;line-height:1.1}.calendar-weekday{font:9px var(--sans);letter-spacing:5px}.calendar-heart{font-size:32px;margin-top:7px}.agenda-flower{position:absolute;right:-15px;bottom:-70px;width:240px;height:380px;opacity:.2}.agenda-flower svg{width:180px;height:300px;position:absolute;transform:rotate(-20deg)}.agenda-flower svg:last-child{transform:rotate(30deg);left:50px}.countdown-section{text-align:center;padding:82px 20px 80px}.countdown{display:flex;justify-content:center;gap:24px;align-items:center;margin:30px 0}.countdown div{min-width:83px;display:flex;flex-direction:column}.countdown span{font-size:67px;font-variant-numeric:lining-nums tabular-nums;line-height:1.1}.countdown small{font:8px var(--sans);letter-spacing:3px;margin-top:10px}.countdown>i{font-size:30px;font-style:normal;transform:translateY(-13px);color:#b0a18c}.countdown-note{font-size:23px;font-style:italic;color:#796a56}footer{background:#47392e;color:#eee3d1;text-align:center;padding:48px 6% 28px}.footer-signature{font:49px var(--script);display:block;transform:rotate(-4deg);padding-bottom:34px}.footer-row{display:flex;justify-content:space-between;align-items:center;gap:20px;border-top:1px solid #e3d5bc33;padding-top:22px}.footer-row>span,.footer-row button{font:8px var(--sans);letter-spacing:1.5px}.footer-row button span{margin-left:7px;text-decoration:underline;text-underline-offset:4px}
/* A photo-matched, hinged portal. All coordinates match the supplied 1200×1800 reference. */
.entry{position:fixed;inset:0;z-index:20;isolation:isolate;overflow:hidden;background:#d0c0aa;transition:opacity 1s ease;will-change:opacity}.entry:before{position:absolute;inset:0;content:"";background:repeating-linear-gradient(0deg,transparent 0,transparent 15.8svh,#a1907960 15.9svh,#a1907960 16.1svh,transparent 16.3svh),linear-gradient(90deg,#c4b49c,#dfd1bb 50%,#c8b79f);z-index:-1}.architecture{position:absolute;width:98.6667svh;height:148svh;left:50%;top:-32svh;transform:translateX(-50%);perspective:1500px;transform-style:preserve-3d;transition:transform 3s cubic-bezier(.56,.04,.31,1),filter 2s ease}.facade{width:100%;height:100%;position:absolute;inset:0;filter:saturate(.6);mask-image:linear-gradient(90deg,transparent,#000 9%,#000 91%,transparent)}.door{position:absolute;top:38.7%;height:47.8%;width:17.4%;background-image:url(assets/beige-door.jpg);background-size:574.713% 209.205%;backface-visibility:hidden;filter:saturate(.6);transition:transform 2.5s cubic-bezier(.25,.1,.2,1),filter 2.5s ease;transform-style:preserve-3d;z-index:2}.door-left{left:32.25%;background-position:39.044% 74.138%;transform-origin:left center}.door-right{left:49.65%;background-position:60.109% 74.138%;transform-origin:right center}.portal-light{position:absolute;left:32.2%;top:38.65%;width:34.9%;height:47.95%;z-index:1;background:radial-gradient(ellipse,#fffdf4 5%,#eee5cc 50%,#8f907178 95%);box-shadow:inset 0 0 30px #423625;overflow:hidden}.portal-light:after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,#f4eddf,#e5e2c6);opacity:.8}.seam-light{position:absolute;top:38.7%;left:49.62%;width:1px;height:47.8%;background:#fff5d0;opacity:0;z-index:4;box-shadow:0 0 25px 8px #fff5d0;transition:opacity 1s}.entry-vignette{position:absolute;inset:0;z-index:3;pointer-events:none;background:radial-gradient(ellipse,transparent 30%,#41362725 100%)}.entry-heading{position:absolute;top:33svh;width:100%;text-align:center;z-index:5;pointer-events:none;color:#f7eddd;text-shadow:0 1px 14px #4b3a2a99;transition:opacity .6s,transform .8s}.entry-heading .eyebrow{font-size:10px;letter-spacing:4px}.entry-names{font:clamp(57px,7.7svh,89px) var(--script);margin:25px 0 12px;line-height:1.3}.entry-names span{font-family:var(--serif);font-style:italic;font-size:.58em;display:inline-block;margin:0 8px}.entry-date{font:11px var(--sans);letter-spacing:5px;margin:0}.door-invitation{background:transparent;position:absolute;top:63svh;left:50%;transform:translateX(-50%);z-index:7;color:#fff9e9;display:flex;align-items:center;flex-direction:column;min-width:220px;padding:0 20px 25px;text-shadow:0 1px 8px #40321e88;transition:opacity .5s}.entry-seal{display:flex;align-items:center;justify-content:center;gap:2px;width:66px;height:66px;border:1px solid #eee0c3bd;outline:1px solid #eee0c355;outline-offset:4px;border-radius:50%;background:#77614a55;backdrop-filter:blur(2px);font-size:26px;transition:background .3s,transform .3s}.entry-seal>span{font:17px var(--script);margin-top:10px}.door-invitation:hover .entry-seal{transform:scale(1.08);background:#77614a88}.invitation-indicator{display:flex;align-items:center;gap:10px;font:8px var(--sans);letter-spacing:2px;margin-top:27px;white-space:nowrap;animation:invitationPulse 2.6s ease-in-out infinite}.invitation-indicator i{height:4px;width:4px;border-radius:50%;background:#fff6de;box-shadow:0 0 7px #fff6de}.door-invitation>svg{height:26px;width:26px;transform:rotate(90deg);margin-top:11px}.entry-bottom{position:absolute;bottom:17px;left:0;width:100%;text-align:center;font:7px var(--sans);letter-spacing:2px;color:#5c4c3e;z-index:5}.entry.opening .door-left{transform:rotateY(-108deg);filter:brightness(.7)}.entry.opening .door-right{transform:rotateY(108deg);filter:brightness(.7)}.entry.opening .entry-heading{opacity:0;transform:translateY(-20px)}.entry.opening .door-invitation,.entry.opening .entry-bottom{opacity:0;pointer-events:none}.entry.opening .seam-light{opacity:.7}.entry.flying .architecture{transform:translateX(-50%) scale(3.3);filter:brightness(1.25)}.entry.fading{opacity:0;pointer-events:none}.entry[hidden]{display:none}.reveal{opacity:0;transform:translateY(24px);transition:opacity 1.2s,transform 1.2s}.entered .reveal{opacity:1;transform:translateY(0)}.entered .reveal:nth-child(2){transition-delay:.15s}.entered .reveal:nth-child(3){transition-delay:.3s}.entered .reveal:nth-child(4){transition-delay:.45s}.entered .reveal:nth-child(5){transition-delay:.6s}.entered .reveal:nth-child(6){transition-delay:.75s}.entered .reveal:nth-child(7){transition-delay:.9s}.section-reveal{opacity:0;transform:translateY(30px);transition:opacity 1s,transform 1s}.section-reveal.is-visible{opacity:1;transform:translateY(0)}.music-toggle{position:fixed;bottom:20px;left:22px;z-index:10;display:flex;align-items:center;gap:9px;padding:12px 14px;background:#f4ede3eb;backdrop-filter:blur(8px);border:1px solid #c9baa5;font:8px var(--sans);letter-spacing:1px;border-radius:2px}.music-toggle[hidden]{display:none}.music-toggle>svg{height:17px;width:17px}.music-bars{display:flex;align-items:center;gap:2px;height:15px}.music-bars i{height:3px;width:1px;background:#6f7158}.music-toggle[aria-pressed=true] .music-bars i{animation:equalizer 1.2s ease infinite}.music-bars i:nth-child(2){animation-delay:-.3s!important}.music-bars i:nth-child(3){animation-delay:-.6s!important}dialog{border:1px solid #c7bba5;background:#f5eee3;color:var(--ink);padding:0;width:min(720px,calc(100% - 28px));max-height:calc(100svh - 40px);box-shadow:0 30px 100px #241c2855}dialog::backdrop{background:#362e26a8;backdrop-filter:blur(9px)}.faq-inner{position:relative;padding:66px 52px 34px}.close-dialog{position:absolute;right:20px;top:12px;font-size:34px;font-weight:400;background:transparent;width:44px;height:44px}.faq-inner h2{font-size:48px;margin-bottom:12px}.faq-intro{color:#7d705f;font-size:18px;margin-bottom:32px}.faq-list details{border-top:1px solid #cbbda9}.faq-list details:last-child{border-bottom:1px solid #cbbda9}.faq-list summary{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:22px 0;cursor:pointer;list-style:none;font-size:21px;line-height:1.3}.faq-list summary::-webkit-details-marker{display:none}.faq-list summary span{font-family:var(--sans);font-size:23px;font-weight:300;transition:transform .3s}.faq-list details[open] summary span{transform:rotate(45deg)}.answer{font-size:19px;line-height:1.6;padding:0 26px 23px 0;color:#71604e;animation:answerIn .3s ease}.faq-signature{font:28px var(--script);margin-top:30px}.noscript-note{text-align:center;padding:80px 20px}
@keyframes invitationPulse{0%,100%{opacity:.45}50%{opacity:1}}@keyframes nudge{0%,100%{translate:0 0}50%{translate:0 6px}}@keyframes equalizer{0%,100%{height:3px}50%{height:14px}}@keyframes answerIn{from{opacity:0;transform:translateY(-5px)}to{opacity:1;transform:translateY(0)}}
@media(min-width:1500px){.couple{max-width:1650px;left:50%;transform:translateX(-50%)}.hero{max-height:1050px}}
@media(max-width:700px){.site-header{height:76px;padding:0 7%}.monogram{font-size:23px;width:43px}.monogram i{left:22px;height:38px;top:4px}.header-date{font-size:9px;letter-spacing:2.5px;margin:0}.site-header .text-button{font-size:9px}.hero{height:max(710px,calc(100svh - 76px));max-height:900px}.hero-border{inset:12px}.hero-content{padding:54px 20px 85px}.hero .eyebrow{font-size:8px;letter-spacing:2px}.hero h1{font-size:77px;margin:30px 0 26px}.hero-names{font-size:23px;letter-spacing:3px;margin-bottom:28px}.hero-date{font-size:36px;letter-spacing:2px;margin:9px 0 20px}.hero-note{font-size:19px}.hero-scroll{margin-top:29px;gap:15px}.hero-footnote{font-size:6px;letter-spacing:1.2px;bottom:27px}.couple{height:58%;bottom:22px;width:164%;left:-32%;opacity:.35;filter:blur(5px) saturate(.6);mask-image:linear-gradient(#000 50%,transparent 100%)}.soft-light{background:linear-gradient(90deg,transparent,#f5eee5c9 35%,#f5eee5c9 65%,transparent)}.hero-sprig{width:83px;height:130px;opacity:.26}.sprig-left{left:-10px;top:7%}.sprig-right{right:-8px;bottom:17%}.invitation{padding:67px 24px 76px}.invitation h2{font-size:37px}.invitation>p:not(.eyebrow){font-size:18px;line-height:1.6}.invitation .eyebrow{font-size:8px;letter-spacing:2px}.signature{font-size:38px}.agenda{padding:62px 25px 66px;gap:52px;flex-direction:column;text-align:center}.agenda h2{font-size:43px}.agenda .eyebrow{font-size:8px;letter-spacing:2px}.agenda-copy>p:not(.eyebrow){font-size:18px}.calendar-actions{align-items:center}.button{padding:18px;font-size:8px;letter-spacing:1px;gap:11px}.calendar-card{width:198px;height:240px}.calendar-day{font-size:115px}.calendar-heart{font-size:28px}.countdown-section{padding:64px 20px}.countdown-section .eyebrow{font-size:8px;letter-spacing:2px}.countdown{gap:11px}.countdown div{min-width:70px}.countdown span{font-size:57px}.countdown small{font-size:7px;letter-spacing:2px}.countdown-note{font-size:21px}.footer-signature{font-size:42px}.footer-row{flex-direction:column;gap:8px;padding-bottom:38px}.footer-row>span{padding:8px 0}.music-toggle{left:12px;bottom:12px;padding:10px;gap:7px;font-size:7px}.faq-inner{padding:61px 24px 24px}.faq-inner>.eyebrow{font-size:7px;letter-spacing:1.5px}.faq-inner h2{font-size:39px}.faq-intro{font-size:17px}.faq-list summary{font-size:20px;padding:20px 0}.answer{font-size:18px}.entry-names{font-size:clamp(50px,7.5svh,74px);margin-top:24px}.entry-heading{top:33svh}.entry-heading .eyebrow{font-size:9px;letter-spacing:3px}.entry-bottom{font-size:6px;letter-spacing:1.1px;bottom:16px}.entry-date{font-size:10px;letter-spacing:4px}.door-invitation{top:63svh}.entry-seal{width:59px;height:59px;font-size:24px}}
@media(max-height:650px) and (min-width:701px){.entry-heading{top:30svh}.entry-names{font-size:50px;margin:16px 0 8px}.entry-seal{width:46px;height:46px;font-size:21px}.door-invitation{top:63svh}.invitation-indicator{margin-top:15px}.entry-bottom{font-size:6px}}
.couple{left:0;width:100%}.couple img{opacity:0}.couple:before,.couple:after{content:"";position:absolute;top:0;bottom:0;background-image:url(assets/silhouettes.png);background-size:auto 100%;background-repeat:no-repeat}.couple:before{left:0;width:27%;background-position:left center}.couple:after{right:0;width:34%;background-position:right center}
@media(max-width:700px){.couple{left:0;width:100%;height:65%;opacity:.43}.couple:before{width:30%}.couple:after{width:36%}.entry-names{font-size:min(7.5svh,15vw)}.hero-content{padding-top:45px}}
@media(min-width:1500px){.couple{left:50%;width:100%}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.reveal,.section-reveal{opacity:1;transform:none}.entry.opening .architecture{transform:translateX(-50%)!important}.entry.opening .door{transform:none}.invitation-indicator{opacity:1}}
