@import url('https://fonts.googleapis.com/css2?family=Great+Vibes&display=swap');
:root{--script:'Great Vibes','Cormorant Garamond',Georgia,serif;--scene-scroll:0px}
body{background:#251c16}.ambient-scene{position:fixed;inset:0;z-index:-2;overflow:hidden;background:#2f271e;isolation:isolate;background-size:cover;background-position:center}.ambient-scene:before{content:'';position:absolute;inset:-10%;background:linear-gradient(120deg,#1a1611eb,#45321ad1 50%,#211911e8),url('assets/florals.jpg') center/cover;filter:blur(5px) saturate(.6);animation:scene-pan 28s ease-in-out infinite alternate;transform-origin:35% 40%;z-index:-1}.ambient-scene:after{content:'';position:absolute;inset:0;background:linear-gradient(#1e181452,transparent 40%,#20181166);pointer-events:none}.ambient-rays{position:absolute;inset:-20%;background:radial-gradient(ellipse at 75% 20%,#dbb87922,transparent 38%),radial-gradient(ellipse at 20% 80%,#c5975d18,transparent 30%);animation:light-pan 17s ease-in-out infinite alternate}.fireflies{position:absolute;inset:0}.fireflies i{position:absolute;left:var(--gx);top:var(--gy);width:5px;height:5px;border-radius:50%;background:#f3deb4;box-shadow:0 0 8px 3px #f3d49b66,0 0 25px 12px #d7b77f16;opacity:0;animation:firefly var(--gd) ease-in-out var(--gdelay) infinite}
main{position:relative;z-index:0;background:transparent;box-shadow:none;max-width:760px}.hero{background:none!important;min-height:850px;height:100svh;color:#fff6e8;isolation:isolate;overflow:hidden}.hero:before,.hero:after{content:'';position:absolute;top:-45px;width:280px;height:260px;background:url('assets/floral-border.png') left center/780px auto no-repeat;pointer-events:none;opacity:.95;animation:corner-sway 10s ease-in-out infinite alternate;transform-origin:top left;z-index:0}.hero:before{left:-45px;transform:rotate(33deg)}.hero:after{right:-45px;transform:scaleX(-1) rotate(33deg);animation-name:corner-sway-right;transform-origin:top right}.hero-content{position:relative;z-index:1;padding:150px 20px 80px;display:flex;flex-direction:column;align-items:center}.hero .eyebrow{display:none}.hero .date{order:-2;margin:0 0 40px}.hero .date span{display:none}.hero .date strong{font:31px var(--serif);letter-spacing:5px}.hero h1{font:400 105px/.95 var(--script);letter-spacing:0;display:flex;flex-direction:column;align-items:center;text-shadow:0 2px 12px #100b0788}.hero .amp{font:400 58px/1.2 var(--script);color:#d9c8a4;margin:14px 0 10px}.written-name{display:block;padding:8px 16px 15px;white-space:nowrap}.hero .script{font:30px var(--serif);order:1;margin:18px 0 8px;color:#f5e9d2}.hero .intro{order:2;font:italic 20px/1.5 var(--serif);margin:10px 0 18px}.hero .text-link{order:3;color:#f9f1e3;border-color:#d4bf9c66;margin-top:18px;font-size:11px}.hero .text-link span{display:inline-block;animation:scroll-cue 2.3s ease-in-out infinite}.invitation-open .written-name{animation:ink-reveal 2.5s cubic-bezier(.2,.6,.3,1) both}.invitation-open .written-name:last-child{animation-delay:1s}.invitation-open .hero .amp{animation:soft-appear 2s 1s both}.invitation-open .hero .script,.invitation-open .hero .intro,.invitation-open .hero .text-link{animation:soft-appear 1.6s 1.8s both}
.countdown-section{min-height:560px;margin:0 0 60px;padding:140px 25px 135px;display:flex;flex-direction:column;justify-content:center;background:#f8efe3}.countdown-section>.eyebrow{display:none}.countdown-section h2{font-size:62px;margin:10px 0 35px}.countdown{gap:0;margin:0 auto 24px;width:100%;max-width:390px;align-items:center}.countdown em{display:none}.countdown>div{flex:1;min-width:0;padding:0 10px;border-right:1px solid #b59b7f}.countdown>div:last-of-type{border-right:0}.countdown b{font:48px var(--serif)}.countdown span{font:22px var(--serif);letter-spacing:0;margin-top:7px}.countdown-heart{display:block;font:48px/1 var(--serif);color:#aa9463;margin:9px auto 16px;animation:heartbeat 2.8s ease-in-out infinite}.countdown-section #calendar{font-size:10px;align-self:center;margin-top:12px}.countdown-section:before,.countdown-section:after,.closing:before,.closing:after,.memories:before{height:125px;background-size:cover;animation:garland-breathe 8s ease-in-out infinite alternate;transform-origin:center top}.countdown-section:after{animation-name:garland-bottom;transform-origin:center bottom}
.celebration{padding:0 35px 55px;background:none;isolation:auto}.celebration:before{display:none}.celebration>.eyebrow,.celebration>h2{display:none}.events{margin:0 auto;max-width:490px;gap:65px}.events .event-card{padding:0;overflow:hidden;border:1px solid #dac5b2!important;border-radius:25px;background:#f2e3d2;box-shadow:0 18px 60px #0002}.event-top{padding:36px 22px 25px;border-bottom:1px solid #bba48a}.rose-emblem{width:145px;height:145px;object-fit:contain;margin:0 auto 10px;display:block;filter:drop-shadow(0 7px 7px #634b3922);animation:ornament-float 6s ease-in-out infinite}.events h3{font:400 41px var(--serif);color:#9d6339;margin:15px 0 5px;letter-spacing:-1px}.event-kind{font:17px var(--serif);margin:0}.event-body{padding:27px 20px 40px}.event-month{font:24px var(--serif);letter-spacing:5px;color:#a77955}.date-grid{display:grid;grid-template-columns:1fr 100px 1fr;gap:8px;align-items:center;margin-top:15px;color:#a7764e}.date-grid>span{font:600 18px var(--serif);padding-bottom:8px;border-bottom:1px solid #b8997d;white-space:nowrap}.date-grid strong{font:600 76px/1 var(--serif)}.event-year{display:block;font:24px var(--serif);color:#a77955;margin-top:4px}.event-place{font:24px/1.35 var(--serif);margin:30px 0 24px}.ceremony-map{max-width:290px;padding:17px 20px;justify-content:center;font:22px var(--serif);background:#492f22;border:0;border-radius:12px;letter-spacing:0}.champagne-emblem{width:145px;height:145px;stroke:#b9966a;stroke-width:1.6;fill:#fff9e455;overflow:visible}.champagne-emblem .ribbon{stroke:#b2775e;fill:#d2a08388}.champagne-fill{fill:#d9c58e66;stroke:none}.glass-left{transform-origin:45px 110px;animation:clink-left 6s ease-in-out infinite}.glass-right{transform-origin:100px 110px;animation:clink-right 6s ease-in-out infinite}.champagne-emblem .clink{stroke:#e3cb87;animation:spark 6s ease-in-out infinite}
.details-section{padding:15px 25px 55px;background:none}.detail-grid{max-width:490px;gap:55px}.detail-card{min-height:440px;display:flex;align-items:center;justify-content:center;flex-direction:column;background:#f2e3d2;border-radius:25px!important;border:1px solid #d8b7a2!important;padding:45px 25px;box-shadow:0 18px 50px #0002}.detail-card h3{font:38px var(--serif);order:-1;margin:0 0 30px;color:#98614b}.detail-card .card-icon{width:105px;height:105px;display:grid;place-items:center;margin:0 auto 30px;animation:ornament-float 6s ease-in-out infinite}.card-icon svg{width:100%;height:100%;stroke:#a3735d;stroke-width:1.4;fill:none;stroke-linecap:round;stroke-linejoin:round}.icon-spark{animation:spark 3s ease-in-out infinite}.detail-card p{font:23px/1.5 var(--serif);margin:8px 0 18px}.detail-card .button{max-width:300px;min-width:230px;background:#492f22;border-radius:12px;padding:16px 20px;font:21px var(--serif);letter-spacing:0}.button{transition:transform .3s,background .3s,box-shadow .3s}.button:hover{transform:translateY(-3px);box-shadow:0 6px 16px #492f2222}.button:active{transform:translateY(0) scale(.97)}
.album{background:none;color:#f4eadb;padding:70px 25px 80px}.album:before{display:none}.album h2{font:49px/1.08 var(--serif)}.album h2 i{font-style:normal}.album>p{font-size:23px}.album-illustration{width:220px;height:240px;border-radius:25px;animation:album-sway 7s ease-in-out infinite alternate}.album .button{background:#f2e3d2;color:#492f22;border-radius:35px;max-width:380px;width:100%;font:22px var(--serif);padding:19px 25px}.album .text-link{color:#f5e5d2;border-color:#d2bda166;font:italic 24px var(--serif);margin-top:20px}.album .album-status{color:#d9c8b3;font-size:12px!important}.closing{padding:150px 25px 155px;background:#f2e3d2;min-height:820px}.closing:after{content:'';position:absolute;bottom:0;left:0;right:0;background:url('assets/floral-border.png') center/cover no-repeat;height:125px;transform:rotate(180deg);z-index:-1;pointer-events:none;animation:garland-bottom 8s ease-in-out infinite alternate}.closing-rose{width:115px;height:115px;object-fit:contain;display:block;margin:0 auto 30px;animation:ornament-float 6s ease-in-out infinite}.closing>.eyebrow{display:none}.closing h2{font:45px/1.1 var(--serif);margin:20px 0}.closing .signature{font:72px/1.2 var(--script);margin:45px 0 15px}.signature>span{display:block}.signature>i{font-size:45px;display:block;color:#b18c59;margin:5px 0}.closing .waiting{font:32px var(--serif);color:#a7785c;margin:18px 0}.closing .primary-button{background:#492f22;border-radius:12px;font:21px var(--serif);padding:16px 30px}.closing .signature+ .waiting+ .eyebrow{display:block;color:#957450;font-size:10px}
dialog{background:#fbf3e8;border:1px solid #d9c6b0;border-radius:27px;max-width:550px;padding:130px 35px 38px;overflow-x:hidden;box-shadow:0 20px 90px #0007}dialog:after{content:'';position:absolute;inset:12px;border:1px solid #d9c6b0;border-radius:20px;pointer-events:none;z-index:-1}.dialog-floral{position:absolute;top:-12px;left:0;right:0;height:125px;background:url('assets/floral-border.png') center/cover no-repeat;pointer-events:none}.dialog-close{top:112px;right:18px;background:#fff9ee;box-shadow:0 4px 12px #694e3212;z-index:2;width:39px;height:39px}.dialog-enter{animation:dialog-in .65s cubic-bezier(.18,.85,.25,1) both}dialog::backdrop{background:#21170e99;backdrop-filter:blur(5px);animation:soft-appear .4s both}dialog h2{font:42px/1.1 var(--serif);color:#946049;text-align:center;margin:20px 0 30px}dialog>.eyebrow{text-align:center;font-size:9px;letter-spacing:2px}dialog label{font:17px var(--serif);text-align:center;margin-top:22px}dialog input,dialog textarea,dialog select{background:transparent;border:0;border-bottom:1px solid #bda58f;border-radius:0;padding:12px 4px;font:18px var(--serif);text-align:center}dialog .primary-button{display:flex;justify-content:center;min-width:235px;margin:30px auto 0;border-radius:12px;font:21px var(--serif);background:#492f22}dialog .form-status{text-align:center}#lightbox{padding:55px 15px 15px}#lightbox .dialog-floral{display:none}#lightbox .dialog-close{top:10px}.swatches{justify-content:center}.swatches span:after{content:'╱';display:block;color:#745d49;position:relative;margin-top:-66px;margin-bottom:39px;pointer-events:none;font-size:20px}.swatches span{font:13px var(--serif)}
.scroll-card.visible{transform:translate3d(0,var(--lift,0px),0) rotate(var(--tilt,0deg));transition:opacity .85s,filter .85s}.scroll-card.will-reveal:not(.visible){opacity:0;filter:blur(5px);transform:translate3d(0,45px,0) rotate(-2deg)}.petals{z-index:5;max-width:760px;pointer-events:none}.petal-path{position:absolute;top:-45px;left:var(--start);width:var(--size);height:var(--size);animation:petal-fall var(--fall) linear var(--pd) infinite;filter:blur(var(--blur));will-change:transform}.petal-piece{display:block;width:100%;height:145%;border-radius:90% 15% 75% 30%;background:linear-gradient(130deg,#d99a76,#b66343);box-shadow:inset 1px 1px 3px #e5ac8399;animation:petal-turn 4.3s ease-in-out infinite alternate;transform-origin:40% 50%;opacity:.8}.petal-1{background:linear-gradient(140deg,#f4ead9,#dac9ad);height:170%;border-radius:100% 0% 100% 20%}.petal-2{background:linear-gradient(140deg,#9ba482,#596b47);height:160%;border-radius:100% 0% 100% 0%;opacity:.55;animation-delay:-1.6s}.petal-3{background:linear-gradient(130deg,#d9916b,#a95437);animation-delay:-2.7s}.music-toggle{border:0;background:#eddbc4df;color:#492f22;width:53px;height:53px;box-shadow:0 3px 15px #0002}.music-toggle.playing{animation:music-breathe 2.8s ease-in-out infinite}footer{background:#2e2118aa;border:0;padding:28px 18px;color:#cbb697}
@keyframes scene-pan{from{transform:translate3d(-1%,calc(var(--scene-scroll)*-1),0) scale(1.04) rotate(-1deg)}to{transform:translate3d(3%,calc(var(--scene-scroll)*-1 - 20px),0) scale(1.17) rotate(1deg)}}@keyframes light-pan{to{transform:translate3d(-7%,5%,0) rotate(8deg);opacity:.6}}@keyframes firefly{0%,100%{opacity:0;transform:translate3d(0,25px,0) scale(.5)}40%{opacity:.55}65%{opacity:.15;transform:translate3d(18px,-20px,0) scale(1.3)}}@keyframes petal-fall{0%{transform:translate3d(0,-50px,0) rotate(0)}50%{transform:translate3d(var(--drift),52vh,0) rotate(130deg)}100%{transform:translate3d(calc(var(--drift)*-.6),115vh,0) rotate(310deg)}}@keyframes petal-turn{0%{transform:rotateY(10deg) rotate(10deg) scaleX(.85)}100%{transform:rotateY(165deg) rotate(70deg) scaleX(1)}}@keyframes ink-reveal{0%{clip-path:inset(0 100% 0 0);opacity:0;filter:blur(4px)}20%{opacity:1}100%{clip-path:inset(0 0 0 0);opacity:1;filter:blur(0)}}@keyframes soft-appear{from{opacity:0;transform:translateY(15px)}to{opacity:1;transform:none}}@keyframes corner-sway{to{transform:translateY(5px) rotate(36deg)}}@keyframes corner-sway-right{to{transform:translateY(5px) scaleX(-1) rotate(36deg)}}@keyframes garland-breathe{to{transform:translateY(3px) scale(1.012)}}@keyframes garland-bottom{from{transform:rotate(180deg)}to{transform:rotate(180deg) translateY(3px) scale(1.012)}}@keyframes heartbeat{0%,70%,100%{transform:scale(1)}15%{transform:scale(1.12)}30%{transform:scale(1)}45%{transform:scale(1.07)}}@keyframes ornament-float{50%{transform:translateY(-7px) rotate(2deg)}}@keyframes scroll-cue{50%{transform:translateY(7px)}}@keyframes clink-left{0%,70%,100%{transform:rotate(0)}30%,45%{transform:rotate(7deg)}}@keyframes clink-right{0%,70%,100%{transform:rotate(0)}30%,45%{transform:rotate(-7deg)}}@keyframes spark{0%,20%,70%,100%{opacity:.35}35%,45%{opacity:1}}@keyframes album-sway{from{transform:rotate(-4deg) translateY(0)}to{transform:rotate(2deg) translateY(-5px)}}@keyframes dialog-in{from{opacity:0;transform:translateY(35px) scale(.96)}to{opacity:1;transform:none}}@keyframes music-breathe{50%{box-shadow:0 0 0 8px #d7bb8820,0 3px 15px #0002}}
@container wedding (max-width:600px){.hero{min-height:790px}.hero-content{padding:145px 18px 70px}.hero h1{font-size:88px}.hero:before,.hero:after{width:210px;height:210px;background-size:650px auto;top:-35px}.hero:before{left:-35px}.hero:after{right:-35px}.hero .date strong{font-size:27px;letter-spacing:4px}.hero .intro{font-size:18px}.hero .script{font-size:27px}.countdown-section{min-height:530px;padding:125px 18px 120px;margin-bottom:45px}.countdown-section h2{font-size:54px}.countdown b{font-size:43px}.countdown span{font-size:20px}.countdown>div{padding:0 8px}.celebration{padding:0 25px 45px}.events{gap:48px}.events .event-card{border-radius:23px}.event-top{padding:28px 15px 20px}.rose-emblem,.champagne-emblem{width:125px;height:125px}.events h3{font-size:34px}.event-kind{font-size:16px}.event-body{padding:25px 16px 30px}.event-month{font-size:21px;letter-spacing:4px}.date-grid{grid-template-columns:1fr 76px 1fr;gap:5px}.date-grid strong{font-size:67px}.date-grid>span{font-size:15px}.event-place{font-size:23px;margin:28px 0}.ceremony-map{font-size:20px;padding:15px 12px}.details-section{padding:0 25px 45px}.detail-grid{gap:48px}.detail-card{min-height:410px;padding:35px 20px}.detail-card h3{font-size:34px}.detail-card p{font-size:21px}.detail-card .button{min-width:0;width:100%;font-size:20px}.album{padding:50px 25px 65px}.album h2{font-size:41px}.album>p{font-size:21px}.closing{padding:145px 23px 150px;min-height:800px}.closing h2{font-size:40px}.closing .signature{font-size:67px}.closing .waiting{font-size:29px}dialog{padding:135px 28px 30px;max-height:90svh;width:calc(100% - 28px)}dialog h2{font-size:36px}.dialog-floral{height:125px}.dialog-close{top:114px;right:16px}dialog label{font-size:16px}dialog input,dialog select,dialog textarea{font-size:17px}.countdown-section:before,.countdown-section:after,.closing:before,.closing:after,.memories:before{height:110px}.music-toggle{width:48px;height:48px}}
@media(prefers-reduced-motion:reduce){.ambient-scene:before,.ambient-rays,.fireflies i,.hero:before,.hero:after,.written-name,.amp,.countdown-heart,.card-icon,.rose-emblem,.champagne-emblem *,.closing-rose,.album-illustration,.music-toggle,.dialog-enter{animation:none!important}.petals,.fireflies{display:none}.scroll-card,.scroll-card.visible,.scroll-card.will-reveal:not(.visible){transform:none;opacity:1;filter:none}.written-name{clip-path:none!important;opacity:1!important;filter:none!important}}
.event-place small{display:block;font:14px/1.5 var(--sans);color:#a0826b;margin-top:10px}.cover-film{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0;opacity:.55}
.hero:before,.hero:after{top:-35px;width:260px;height:285px;background-size:850px auto;mask-image:radial-gradient(ellipse at center,#000 30%,transparent 74%);animation:corner-float 10s ease-in-out infinite alternate;transform:none;transform-origin:center}.hero:before{left:-45px;background-position:left center}.hero:after{right:-45px;background-position:right center;animation-delay:-5s}@keyframes corner-float{to{transform:translateY(8px) rotate(3deg)}}@container wedding (max-width:600px){.hero:before,.hero:after{width:200px;height:250px;background-size:730px auto;top:-25px}.hero:before{left:-55px}.hero:after{right:-55px}}
.dress-badge{display:block;margin:-8px auto 24px;padding:8px 20px;border:1px solid #bea487;border-radius:30px;max-width:180px;text-align:center;font:600 14px var(--serif);letter-spacing:4px}.formal-guide{display:grid;grid-template-columns:1fr 1fr;gap:20px;text-align:center}.formal-guide h3{font:26px var(--serif);margin:10px 0;color:#72503c}.formal-guide svg{width:70px;height:100px;stroke:#aa876c;fill:#e0cbb644;stroke-width:1.2}.formal-guide p{font:16px/1.4 var(--serif);margin:9px 0 20px}.palette-label{border-top:1px solid #d4bfaa;padding-top:18px;text-align:center;font:600 12px var(--serif)!important;letter-spacing:2px;color:#9a6b51}.suggested-swatches span:after{display:none}.swatches{gap:12px;flex-wrap:nowrap}.swatches span{min-width:48px}.swatches span:before{width:35px;height:35px}.reserved-swatches span:after{margin-top:-60px;margin-bottom:35px}.formal-guide+ .palette-label{margin-top:0}
@container wedding (max-width:600px){.hero h1{font-size:clamp(70px,22cqw,88px)}}.ambient-scene.has-cover:before{background:linear-gradient(120deg,#18120d77,#271b1199);filter:none}.ambient-scene.has-cover{animation:scene-pan 28s ease-in-out infinite alternate}
.swatches span{position:relative}.reserved-swatches span:after{content:"";position:absolute;left:calc(50% - 16px);top:17px;width:32px;height:1px;background:#9b8068;transform:rotate(-45deg);margin:0}.suggested-swatches span:after{display:none}
