@font-face{font-family:Cormorant;src:url('fonts/cormorant-400.woff2') format('woff2');font-display:swap;font-weight:400}
@font-face{font-family:Cormorant;src:url('fonts/cormorant-400-italic.woff2') format('woff2');font-display:swap;font-style:italic}
@font-face{font-family:Manrope;src:url('fonts/manrope-400.woff2') format('woff2');font-display:swap;font-weight:400}
:root{--pink:#e9b7c5;--pearl:#fff3ed;--gold:#dec18c;--plum:#241b2e;--soft:#f1dce9;--scene-progress:0;color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:35px;background:var(--plum)}body{margin:0;color:var(--pearl);font:400 14px/1.65 Manrope,Arial,sans-serif;overflow-x:clip}body.locked{overflow:hidden}button,a,input,select{-webkit-tap-highlight-color:transparent}button,input,select{font:inherit}button,a{touch-action:manipulation}button{cursor:pointer}a{color:inherit;text-decoration:none}button:focus-visible,a:focus-visible,input:focus-visible,select:focus-visible{outline:2px solid var(--gold);outline-offset:5px}button{color:inherit}h1,h2,h3,p{margin:0}h1,h2,h3{font-family:Cormorant,Georgia,serif;font-weight:400;line-height:1.03}h2{font-size:clamp(42px,9vw,72px);text-wrap:balance}em{font-style:italic}img{display:block;max-width:100%}[hidden]{display:none!important}
#world{position:fixed;inset:0;overflow:hidden;pointer-events:none;isolation:isolate;background:var(--plum);z-index:0}.backdrop{position:absolute;inset:-4%;background-size:cover;background-position:50% 45%;transition:opacity 1.6s ease;will-change:opacity,transform;transform:scale(1.025)}.backdrop.initial{background-image:url('images/sanctuary-small.webp')}.backdrop.secondary{opacity:0}.backdrop:after{content:'';position:absolute;inset:0;background:linear-gradient(180deg,#21152815 15%,#241b2e05 35%,#241b2e55 85%)}.moon-aura{position:absolute;width:75vw;height:75vw;max-width:700px;max-height:700px;left:50%;top:-15%;transform:translateX(-50%);border-radius:50%;background:radial-gradient(ellipse,#ffd8f31c,transparent 65%);mix-blend-mode:screen;animation:breathe 9s ease-in-out infinite}#magic{position:absolute;inset:0;z-index:2}#magic canvas{display:block;width:100%;height:100%}.atmosphere{position:absolute;inset:auto -20% -12%;height:40%;background:radial-gradient(ellipse,#b98bce2e,transparent 68%);filter:blur(25px);animation:mist 24s ease-in-out infinite alternate;z-index:3}.vignette{position:absolute;inset:0;box-shadow:inset 0 0 100px 10px #140b242c;background:linear-gradient(180deg,#140b2440,transparent 20%,transparent 80%,#140b2450);z-index:4}.fallback-flowers{position:absolute;inset:0;z-index:2;transition:opacity .8s}.fallback-flowers img{position:absolute;width:55vw;max-width:550px;bottom:-8%;left:-25%;filter:drop-shadow(0 20px 20px #21102d66)}.fallback-flowers img+img{left:auto;right:-25%;transform:scaleX(-1);bottom:20%}.has-webgl .fallback-flowers{opacity:0}.effects-paused .atmosphere,.effects-paused .moon-aura{animation-play-state:paused}
.topbar{position:fixed;top:0;left:0;right:0;display:flex;align-items:center;gap:12px;padding:calc(16px + env(safe-area-inset-top)) 22px 12px;z-index:20;background:linear-gradient(#20162a9c,transparent);transition:opacity 1s}.monogram{display:grid;place-content:center;width:44px;height:48px;border:1px solid #e3c99966;border-radius:50% 50% 3px 3px;line-height:1;text-align:center;background:#241b2e44}.monogram span{font:24px/1 Cormorant,serif}.monogram i{font:7px Manrope;letter-spacing:3px;padding-left:3px;color:var(--gold);margin-top:4px}.top-note{font-size:9px;letter-spacing:1.3px;text-transform:uppercase;margin-right:auto;color:#f5e7e4dd}.round-control{width:44px;height:44px;flex-shrink:0;border:1px solid #e8d4b15c;background:#241b2e88;border-radius:50%;font-size:16px}.chapter-nav{position:fixed;z-index:20;right:9px;top:50%;display:flex;flex-direction:column;transform:translateY(-50%);opacity:.8}.chapter-nav a{width:26px;height:32px;display:grid;place-content:center}.chapter-nav a:before{content:'';width:4px;height:4px;border-radius:50%;background:#ffede797;transition:transform .4s,background .4s}.chapter-nav a.active:before{background:var(--gold);transform:scale(1.9);box-shadow:0 0 8px #e9b7c5}.locked .topbar,.locked .chapter-nav{opacity:0;pointer-events:none}
.entrance{position:fixed;inset:0;z-index:30;overflow:hidden;display:grid;place-items:center;perspective:1200px;transition:opacity 1s,visibility 1s}.entrance-shade{position:absolute;inset:0;background:linear-gradient(#211527c9,#2115273d 40%,#211527c9);backdrop-filter:blur(2px)}.threshold-label{position:absolute;text-align:center;top:calc(25px + env(safe-area-inset-top));z-index:5;width:100%;padding:0 25px;pointer-events:none}.threshold-label .eyebrow{font-size:8px;letter-spacing:2px;color:#f5dfbf}.threshold-label p{font:clamp(24px,6vw,36px)/1.05 Cormorant;margin-top:10px;text-shadow:0 2px 12px #241b2e}.threshold-label em{color:#f2c9d6}.portal{position:relative;width:min(98vw,540px);height:min(79svh,800px);margin-top:12px;transform-style:preserve-3d;transition:transform 2.8s cubic-bezier(.3,.01,.4,1),opacity 1s 1.6s}.portal-arch{position:absolute;inset:0;width:100%;height:100%;object-fit:fill;z-index:3;filter:drop-shadow(0 10px 20px #100a21)}.doors{position:absolute;top:21%;left:22%;width:56%;height:75%;display:flex;perspective:1100px;transform-style:preserve-3d;z-index:2;overflow:visible;border-radius:50% 50% 0 0 / 18% 18% 0 0;background:#25152c}.leaf{width:50%;height:100%;position:relative;transition:transform 2.6s cubic-bezier(.25,.1,.2,1),filter 2s;backface-visibility:hidden}.leaf img{width:100%;height:100%;object-fit:fill}.leaf.left{transform-origin:0 50%}.leaf.right{transform-origin:100% 50%}.leaf.right img{transform:scaleX(-1)}.door-light{position:absolute;inset:20% 19% 0;border-radius:40% 40% 0 0;background:radial-gradient(ellipse,#ffe8c700,#e9b7c500);z-index:1;transition:box-shadow .8s,background .8s}.portal-floral{position:absolute;width:74%;z-index:4;pointer-events:none}.portal-floral.a{left:-17%;bottom:-4%;transform:rotate(-22deg)}.portal-floral.b{right:-18%;top:0;transform:scaleX(-1) rotate(5deg)}.gate-action{position:absolute;inset:34% 15% 15%;z-index:6;border:0;background:none;display:flex;align-items:center;justify-content:center;flex-direction:column;color:#fff6ed;text-shadow:0 2px 12px #160a22;gap:14px;transition:opacity .4s}.gate-action>span:nth-child(2){font:clamp(22px,6vw,30px)/1.1 Cormorant;text-wrap:balance;background:#2f2037b8;padding:15px 20px;border:1px solid #e7cc9b55;box-shadow:0 8px 40px #20102755;backdrop-filter:blur(6px)}.gate-action small{font-size:9px;letter-spacing:1.2px}.gate-sigil{font:46px/1 Georgia;background:#302037bc;border:1px solid #e0c38e88;border-radius:50%;width:68px;height:68px;display:grid;place-items:center;box-shadow:0 0 30px #f4d2ad44;color:#ffe8ba;animation:breathe 4s ease-in-out infinite}.entrance-bottom{position:absolute;bottom:calc(45px + env(safe-area-inset-bottom));z-index:5;font:italic 17px/1.3 Cormorant;text-align:center;text-shadow:0 2px 8px #10071c}.text-button{border:0;background:transparent;font-size:10px;letter-spacing:1px;text-decoration:underline;text-underline-offset:5px;min-height:44px}.entrance>.text-button{position:absolute;bottom:env(safe-area-inset-bottom);z-index:7}.entrance.opening .leaf.left{transform:rotateY(-105deg);filter:brightness(.6)}.entrance.opening .leaf.right{transform:rotateY(105deg);filter:brightness(.6)}.entrance.opening .gate-action,.entrance.opening .threshold-label,.entrance.opening .entrance-bottom{opacity:0;pointer-events:none;transition:opacity .5s}.entrance.opening .door-light{background:radial-gradient(ellipse,#ffe8c7ab,#e9b7c54a);box-shadow:0 0 100px 55px #f6d2d580}.entrance.opening .portal{transform:translateZ(850px) scale(1.4);opacity:0}.entrance.gone{opacity:0;visibility:hidden;pointer-events:none}
main{position:relative;z-index:5}.chapter{position:relative;min-height:125svh;display:flex;align-items:center;justify-content:center;padding:110px 38px 100px;isolation:isolate}.chapter-content{position:relative;max-width:650px;width:100%;text-align:center;padding:65px 8px;z-index:1;opacity:1;transform:translateY(0);transition:opacity 1.2s,transform 1.2s}.chapter-content:before{content:'';position:absolute;z-index:-1;inset:0 -25px;border-radius:50%;background:radial-gradient(ellipse,#24172de6 0%,#24172dd9 40%,#24172d9e 61%,transparent 75%);filter:blur(18px);pointer-events:none}.chapter:not(.hero) .chapter-content{opacity:.3;transform:translateY(35px)}.chapter.in-view .chapter-content{opacity:1;transform:translateY(0)}.eyebrow{display:block;font:400 9px/1.7 Manrope,sans-serif;letter-spacing:2.4px;text-transform:uppercase;color:var(--gold)}.hero{min-height:110svh;align-items:flex-end;padding-top:42svh;padding-bottom:50px}.hero-content{padding-top:45px;padding-bottom:30px}.hero-content .eyebrow{letter-spacing:5px}.hero-content h1{font-size:clamp(74px,19vw,150px);letter-spacing:-3px;margin:17px -20px 10px;color:#fff0e9;text-shadow:0 2px 35px #e9b7c528}.gold-rule{display:flex;align-items:center;justify-content:center;gap:14px;margin:21px auto;color:var(--gold);width:160px;max-width:80%;font-size:12px}.gold-rule:before,.gold-rule:after{content:'';height:1px;width:60px;background:linear-gradient(90deg,transparent,#d7b77a88)}.gold-rule:after{transform:scaleX(-1)}.hero-tagline{font:italic 23px/1.25 Cormorant;max-width:260px;margin:auto;color:#f9dbe4}.date-line{font-size:10px;letter-spacing:3px;text-transform:uppercase;margin-top:30px}.scroll-invite{display:flex;flex-direction:column;gap:10px;align-items:center;margin:35px auto 0;width:max-content;font-size:8px;letter-spacing:2px;text-transform:uppercase}.scroll-invite i{font:28px/1 Cormorant;font-style:normal;animation:float 3s ease-in-out infinite}.demo-mark{display:block;font-size:8px;letter-spacing:.5px;color:#f4e5e1b0;margin-top:28px}.quote{font:italic clamp(24px,5.5vw,31px)/1.3 Cormorant;max-width:430px;margin:25px auto;text-wrap:balance;color:#fae5eb}.family-content>h2{margin-top:15px}.celestial-ornament{width:90px;height:90px;object-fit:contain;margin:20px auto 10px;filter:drop-shadow(0 0 10px #dbbd8d33)}.family{padding-top:15px}.names{font:clamp(26px,6vw,35px)/1.15 Cormorant;max-width:390px;margin:12px auto 0}.tiny-star{display:block;color:var(--gold);font-size:13px;margin:25px auto}.family .eyebrow{font-size:8px;letter-spacing:1.8px}
.astral{width:120px;height:120px;border:1px solid #dec18c8c;border-radius:50%;margin:30px auto;position:relative;display:grid;place-items:center;transform:rotate(calc(var(--scene-progress)*25deg))}.astral:before,.astral:after{content:'';position:absolute;border:1px solid #dec18c55;border-radius:50%;inset:8px}.astral:after{inset:-9px;border-style:dashed;opacity:.5}.astral span{font:55px Georgia;color:var(--gold)}.astral i,.astral b{position:absolute;background:var(--plum);color:var(--gold);font-style:normal}.astral b{right:-6px;top:52px;font-size:11px}.astral i{width:8px;height:8px;border:1px solid var(--gold);transform:rotate(45deg);top:-4px}.clock-content h2{font-size:clamp(40px,8vw,64px)}.event-date{font:29px/1.2 Cormorant;margin-top:20px;color:#fae5eb}.countdown{display:flex;justify-content:center;margin:35px auto 22px;width:100%;max-width:430px;border-block:1px solid #debf8f55;padding:20px 0}.countdown>div{flex:1;min-width:0;border-right:1px solid #debf8f33;padding:0 3px}.countdown>div:last-child{border:0}.countdown strong{font:clamp(32px,9vw,52px)/1 Cormorant;display:block;min-height:52px;font-variant-numeric:tabular-nums}.countdown span{font-size:8px;letter-spacing:1px;text-transform:uppercase;color:#efdbe7}.small-copy{font-size:10px;line-height:1.7;color:#e4cedc}.clock-content>.quote{margin-top:40px}
.venues-chapter{min-height:170svh;padding-inline:30px}.venues-content{max-width:1000px;padding-block:20px}.venues-content:before{inset:-20px -15px;background:radial-gradient(ellipse,#211627bf 25%,#21162788 60%,transparent 75%)}.venues-content>h2{margin:20px 0 40px}.venues{display:grid;gap:28px}.venue{position:relative;isolation:isolate;overflow:hidden;border:1px solid #ddbd8b66;border-radius:160px 160px 4px 4px;min-height:520px;display:flex;align-items:flex-end;padding:140px 22px 35px}.venue>img{position:absolute;inset:0;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:center 30%;transition:transform 2s}.venue:after{content:'';position:absolute;inset:0;z-index:-1;background:linear-gradient(transparent 0%,#21172824 15%,#211728db 49%,#211728f5 100%)}.venue-copy{width:100%}.venue-copy>.eyebrow{font-size:8px;letter-spacing:1.4px}.venue h3{font-size:48px;margin:12px 0}.venue-time{color:var(--gold);font-size:12px;letter-spacing:2px}.venue-name{font:24px/1.2 Cormorant;margin:16px 0 8px}.address{font-size:10px;line-height:1.7;color:#efdee5}.outline-button,.primary-button{display:inline-flex;align-items:center;justify-content:center;gap:18px;min-height:48px;padding:13px 20px;border:1px solid #dec18c96;background:#241b2e55;font:400 10px/1.4 Manrope;letter-spacing:.6px;text-align:center;transition:background .3s,transform .3s}.outline-button:hover{background:#dec18c22}.primary-button{background:linear-gradient(105deg,#f3d9d7,#d8b5c5);color:#39263f;border:1px solid #f6e4d8;box-shadow:0 4px 30px #e9b7c52a;font-size:11px;min-height:54px;padding-inline:25px}.primary-button:hover{transform:translateY(-2px);background:#f4e2dd}.primary-button span{font-size:14px}.venue .outline-button{margin-top:22px;width:100%;font-size:9px;padding-inline:8px}.dress-content{max-width:500px}.dress-content>.eyebrow{margin-bottom:35px}.dress-branch{position:absolute;left:-28px;top:15%;height:70%;width:95px;object-fit:contain;z-index:-1;opacity:.85;transform:rotate(-10deg)}.dress-code{font:italic 35px/1.2 Cormorant;color:var(--gold);margin-top:27px}.dress-content .quote{font-size:25px;max-width:280px}.mirror-content{max-width:560px}.mirror-content:before{background:radial-gradient(ellipse,#24172de8 10%,#24172dd9 45%,#24172d80 65%,transparent 74%)}.mirror-moon{font:64px/1 Georgia;display:block;margin:30px auto;color:var(--gold)}.mirror-content h2{font-size:clamp(40px,8vw,65px)}.mirror-content .quote{font-size:24px;margin:28px auto}.mirror-content .primary-button{margin-top:12px}.rsvp-demo{font-size:9px;line-height:1.7;max-width:240px;margin:20px auto;color:#f4e3e3c9}.final{min-height:130svh;align-items:flex-end;padding-top:45svh}.final-name{font-size:clamp(72px,18vw,120px);margin:15px -20px 20px}.final-content .quote{max-width:330px}.back-top{margin-top:18px}.signature{font-size:8px;letter-spacing:1px;text-transform:uppercase;margin-top:65px;color:#e8d7e2a3}
dialog{border:1px solid #d7b77a91;border-radius:180px 180px 8px 8px;background:radial-gradient(ellipse at top,#4b354e,#241b2e 72%);color:var(--pearl);padding:65px 28px 30px;max-width:440px;width:calc(100% - 32px);max-height:calc(100svh - 40px);box-shadow:0 30px 100px #140c1f;text-align:center;overflow:auto}dialog::backdrop{background:#130c20b8;backdrop-filter:blur(8px)}dialog h2{font-size:42px;margin:15px 0}dialog>p{font-size:12px;line-height:1.8}.close-dialog{position:absolute;right:50%;transform:translateX(50%);top:12px;border:0;border-radius:50%;width:44px;height:44px;background:transparent;font-size:25px;color:var(--gold)}.dialog-note{font-size:10px!important;color:#e9ced9;max-width:250px;margin:0 auto 20px}form{text-align:left;margin-top:25px}label{font-size:10px;letter-spacing:.5px;display:block;margin:15px 0 7px}input,select{width:100%;height:48px;border:1px solid #d7b77a55;color:var(--pearl);background:#201628;border-radius:2px;padding:0 12px;font-size:14px}input::placeholder{color:#cbb4c5}form .primary-button{width:100%;margin-top:25px}#rsvp-result h3{font-size:32px;margin:15px 0}#rsvp-result p{font-size:12px}#rsvp-result .outline-button{margin-top:25px}.result-moon{font:60px Cormorant;color:var(--gold)}.close-map{margin-top:25px}.skip{position:fixed;z-index:60;top:-100px;left:10px;background:#241b2e;padding:15px}.skip:focus{top:10px}.noscript-note{position:fixed;bottom:0;z-index:40;background:var(--plum);padding:12px;font-size:12px;width:100%;text-align:center}
@keyframes breathe{50%{opacity:.7;filter:brightness(1.2)}}@keyframes float{50%{transform:translateY(8px)}}@keyframes mist{to{transform:translateX(15%) scale(1.15)}}
@media(min-width:700px){.topbar{padding-inline:40px}.top-note{font-size:10px;letter-spacing:2px}.chapter{padding-inline:80px}.chapter-nav{right:25px}.eyebrow{font-size:10px}.hero{padding-top:40svh;min-height:115svh}.hero-tagline{font-size:28px;max-width:400px}.hero-content h1{letter-spacing:-5px}.venues{grid-template-columns:1fr 1fr;gap:30px}.venues-chapter{min-height:140svh}.venue{min-height:620px;padding-inline:30px}.venue h3{font-size:56px}.venue-name{font-size:28px}.portal{width:520px;height:min(80svh,800px)}.threshold-label p{font-size:34px}.entrance-bottom{font-size:20px}.family-content{max-width:640px}.names{font-size:36px}.dress-branch{left:-60px;width:140px}.mirror-content{max-width:650px}.rsvp-demo{max-width:none}.chapter-content:before{inset:-20px -50px}.final .quote{max-width:440px}}
@media(max-width:374px){.topbar{padding-inline:14px}.top-note{font-size:8px;letter-spacing:1px}.chapter{padding-inline:30px}.chapter-nav{right:2px}.hero-content h1{font-size:72px}.eyebrow{font-size:8px;letter-spacing:1.8px}.threshold-label p{font-size:25px}.portal{height:76svh}.entrance-bottom{font-size:16px;bottom:40px}.venue{min-height:500px;padding-inline:18px}.venue h3{font-size:44px}.mirror-content h2{font-size:38px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition-duration:.01ms!important}.chapter:not(.hero) .chapter-content{opacity:1;transform:none}.entrance.opening .portal{transform:none}.backdrop{transform:none!important}}
.effects-paused .scroll-invite i{animation-play-state:paused}
@media(min-width:1000px){.backdrop{background-position:50% 10%}}
.reduced-motion,.reduced-motion *{scroll-behavior:auto!important}.reduced-motion *,.reduced-motion *:before,.reduced-motion *:after{animation:none!important;transition-duration:.01ms!important}.reduced-motion .chapter:not(.hero) .chapter-content{opacity:1;transform:none}.reduced-motion .backdrop{transform:none!important}
.chapter-nav a{width:44px;height:44px}.chapter-nav{right:0}
@media(min-width:700px){.chapter-nav{right:14px}}
