@font-face{font-family:Cormorant;src:url('assets/cormorant.ttf?v=3') format('truetype');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:Cormorant;src:url('assets/cormorant-italic.ttf') format('truetype');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:Manrope;src:url('assets/manrope.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
:root{--blue:#294a6b;--deep:#203d5b;--muted:#63788b;--gold:#a58b53;--paper:#fcfcf9;--sky:#edf3f8;--line:#cdd9e2;--serif:Cormorant,Georgia,serif;--sans:Manrope,Arial,sans-serif;--page:600px}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:24px}body{margin:0;background:#dfe8ef;color:var(--deep);font:1rem/1.7 var(--sans);overflow-x:clip}body:before{content:"";position:fixed;inset:0;background:radial-gradient(ellipse at 50% 0,#f5f7fa,transparent 75%);pointer-events:none;z-index:-1}button,a{-webkit-tap-highlight-color:transparent}button{font:inherit;color:inherit;cursor:pointer}button:focus-visible,a:focus-visible{outline:2px solid var(--blue);outline-offset:5px}a{color:inherit;text-decoration:none}svg{width:22px;height:22px;fill:none;stroke:currentColor;stroke-width:1.4;stroke-linecap:round;stroke-linejoin:round;flex-shrink:0}h1,h2,p{margin:0}h1,h2{font-family:var(--serif);font-weight:400;line-height:1.1}em,i{font-family:var(--serif);font-weight:400}h2{font-size:clamp(2.75rem,10vw,3.6rem);letter-spacing:-.03em}h2 em{color:#738ca4}[hidden]{display:none!important}.icon-defs{position:absolute;width:0;height:0;overflow:hidden}.eyebrow{font-size:.75rem;letter-spacing:.16em;line-height:1.7}.site-shell{max-width:var(--page);margin:auto;background:var(--paper);position:relative;box-shadow:0 0 90px #314b6212;overflow:clip}.reading-progress{position:fixed;top:0;left:50%;transform:translateX(-50%);width:min(100%,var(--page));height:2px;z-index:45;pointer-events:none}.reading-progress span{display:block;height:100%;background:var(--gold);transform:scaleX(0);transform-origin:left}
.hero{position:relative;height:100svh;min-height:780px;max-height:1100px;isolation:isolate;overflow:hidden;background:#eff5f8}.palace-art{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center bottom;z-index:-3;transform:scale(1.1);transition:transform 5s cubic-bezier(.2,.6,.3,1)}body.is-open .palace-art{transform:scale(1)}.sky-wash{position:absolute;inset:0;z-index:-2;background:linear-gradient(to bottom,rgba(248,251,253,.55),rgba(248,251,253,0) 35%,transparent 75%,rgba(252,252,249,.3) 88%,var(--paper) 100%)}.hero-copy{position:relative;text-align:center;padding:30px 18px 0}.hero-spark{display:block;font-size:1.2rem;color:var(--gold);margin-bottom:9px}.hero-copy .eyebrow{font-size:.75rem;letter-spacing:.14em}.hero h1{font-size:clamp(4.3rem,17vw,6.25rem);line-height:.86;letter-spacing:-.035em;margin-top:18px;text-shadow:0 2px 18px #ffffffc9}.hero h1 span{display:block}.hero h1 span:first-child{padding-left:.08em}.hero h1 span:last-child{position:relative;top:-10px}.hero h1 i{font-size:.4em;display:block;line-height:1.15;color:var(--gold);margin:3px 0}.hero h1:focus{outline:none}.hero-foot{position:absolute;left:0;right:0;bottom:28px;text-align:center}.hero-foot p{font:400 clamp(1.85rem,7vw,2.55rem)/1.2 var(--serif);letter-spacing:.06em}.hero-foot p i{font-style:normal;color:var(--gold);margin:0 5px}.hero-foot a{font-size:.75rem;display:inline-flex;align-items:center;flex-direction:column;letter-spacing:.06em;padding:11px 20px 0;min-height:44px}.scroll-stem{display:block;width:1px;height:23px;background:linear-gradient(var(--gold),transparent);margin-top:7px;animation:stem 2s ease-in-out infinite}.hero-butterflies{position:absolute;inset:0;pointer-events:none}.butterfly{position:absolute;object-fit:contain;filter:drop-shadow(0 3px 3px #5c748b25);animation:butterfly-drift 9s ease-in-out infinite}.butterfly-one{left:4%;top:39%;width:60px;height:60px;--turn:-20deg;animation-delay:-2s}.butterfly-two{right:8%;top:53%;width:45px;height:45px;--turn:30deg;animation-delay:-6s}.butterfly-three{right:13%;top:23%;width:32px;height:32px;--turn:15deg;animation-delay:-4s}
.letter-section{text-align:center;padding:42px 9% 62px;background:var(--paper)}.section-flourish{display:flex;align-items:center;justify-content:center;gap:16px;color:var(--gold);font:400 1.55rem var(--serif);margin:0 auto 28px}.section-flourish span{width:58px;height:1px;background:linear-gradient(90deg,transparent,#c2ad82)}.section-flourish span:last-child{transform:rotate(180deg)}.letter-section h2{margin:24px 0 27px}.letter-text{font-size:1rem;color:#576d80;line-height:1.95;margin:0 auto 20px;max-width:430px}.couple-signature{display:flex;align-items:center;justify-content:center;gap:13px;font:italic clamp(1.8rem,7.5vw,2.65rem)/1.4 var(--serif);margin-top:31px}.couple-signature i{font-size:.7em;color:var(--gold)}.tiny-heart{display:inline-flex;margin-top:25px;color:var(--gold)}.tiny-heart svg{width:17px;height:17px}
.date-section{padding:40px 6% 58px;background:linear-gradient(#eff4f8,#e3edf5 80%,#eff4f8);text-align:center}.date-card{border:1px solid #c7d5e0;outline:1px solid #c7d5e0;outline-offset:-7px;background:#ffffffb8;border-radius:160px 160px 8px 8px;padding:34px 7% 28px;box-shadow:0 12px 30px #68829d09}.date-card>.eyebrow{font-size:.75rem;letter-spacing:.06em;max-width:210px;margin:auto;display:block}.date-card h2{font-size:clamp(2.1rem,7.6vw,3.2rem);margin-top:10px}.date-card h2 em{display:inline;font-style:italic}.date-display{display:flex;align-items:baseline;justify-content:center;gap:.45rem;font:400 3.2rem/1 var(--serif);margin-top:14px}.date-display i{font-size:1.7rem;line-height:1;color:var(--gold);margin:0}.date-display span:last-child{font-size:1.1rem;letter-spacing:.16em;line-height:1}.weekday{font-size:.72rem;letter-spacing:.24em;margin:12px 0 20px;color:var(--muted)}.calendar{border-top:1px solid var(--line);padding-top:14px}.calendar-week,.calendar-grid{display:grid;grid-template-columns:repeat(7,minmax(0,1fr));text-align:center}.calendar-week{font-size:.68rem;color:var(--muted);margin-bottom:6px}.calendar-grid{font-size:.9rem;row-gap:3px}.calendar-grid>span{aspect-ratio:1;display:grid;place-items:center;position:relative;min-height:29px;max-height:40px}.wedding-day{border-radius:50%;background:var(--blue);color:white}.wedding-day svg{position:absolute;bottom:-5px;right:-3px;width:17px;height:17px;stroke:var(--gold);fill:#fcfcf9;stroke-width:1.5}.outline-button,.filled-button{display:inline-flex;align-items:center;justify-content:center;gap:10px;min-height:48px;padding:13px 18px;font-size:.875rem;border:1px solid #8ea6ba;border-radius:28px;background:transparent;transition:background .2s,transform .2s}.outline-button:hover{background:#eaf1f7}.outline-button svg,.filled-button svg{width:18px;height:18px}.date-card .outline-button{margin-top:20px;width:100%}.countdown-wrap{margin-top:34px}.countdown-wrap>.eyebrow{font-size:.75rem;letter-spacing:.1em}.countdown{display:flex;align-items:flex-start;justify-content:center;gap:clamp(8px,3vw,22px);margin-top:18px}.countdown>div{min-width:47px}.countdown strong{display:block;font:400 clamp(2.5rem,10.5vw,4rem)/1 var(--serif);font-variant-numeric:tabular-nums}.countdown span{display:block;margin-top:7px;font-size:.7rem;color:var(--muted)}.countdown i{font:400 1.5rem/2 var(--serif);color:#b19b73}#day-message{font:italic 1.7rem/1.4 var(--serif);margin-top:14px}
.venue-section{text-align:center;padding:62px 8% 0;background:var(--paper)}.venue-section>.eyebrow{letter-spacing:.08em}.venue-section h2{margin:24px 0}.venue-section h2 em{display:block}.venue-address{display:flex;align-items:center;justify-content:center;gap:7px;font-size:1rem}.venue-address svg{width:18px;height:18px}.venue-time{margin-top:16px;display:flex;align-items:baseline;justify-content:center;gap:12px;font-size:.72rem;letter-spacing:.18em;color:var(--muted);text-transform:uppercase}.venue-time::before,.venue-time::after{content:"";width:34px;height:1px;align-self:center;background:linear-gradient(90deg,transparent,#c2ad82)}.venue-time strong{font:400 2.15rem/1 var(--serif);color:var(--deep);letter-spacing:.05em}.venue-note{font:italic 1.5rem/1.5 var(--serif);margin:14px 0 26px;color:var(--muted)}.filled-button{background:var(--blue);color:white;border-color:var(--blue);padding-left:26px;padding-right:26px;box-shadow:0 5px 14px #294a6b1f}.filled-button:hover{background:#1c3b5a;transform:translateY(-2px)}.garden-detail{height:255px;margin:35px -9.524% 0;position:relative;overflow:hidden;mask-image:linear-gradient(transparent,black 24%,black 74%,transparent);-webkit-mask-image:linear-gradient(transparent,black 24%,black 74%,transparent)}.garden-detail img{width:100%;height:100%;object-fit:cover;object-position:center 95%;opacity:.88}
footer{text-align:center;padding:15px 8% 85px;background:linear-gradient(var(--paper),#eaf1f6)}.footer-monogram{font:400 3.6rem/1.3 var(--serif);letter-spacing:-.1em}.footer-monogram i{font-size:.65em;color:var(--gold);margin:0 .04em}footer h2{margin:15px 0 21px;font-size:3.2rem}footer>p{font-size:1rem;line-height:1.8;color:var(--muted)}.footer-date{font-size:.75rem;letter-spacing:.14em;margin:32px 0 15px}.footer-date span{display:block;letter-spacing:.12em;margin-top:8px;color:var(--muted)}.replay-button{font-size:.875rem;background:transparent;border:0;color:var(--muted);display:inline-flex;gap:8px;align-items:center;min-height:44px;padding:10px}.replay-button svg{width:15px;height:15px}
.cover{position:fixed;left:50%;top:0;transform:translateX(-50%);width:min(100%,var(--page));height:100svh;min-height:600px;z-index:100;isolation:isolate;overflow:hidden;background:#f5f8fa;transition:background .4s}.gate-scene{position:absolute;inset:0;perspective:1300px;transform-style:preserve-3d;z-index:-3}.gate-leaf{position:absolute;top:0;bottom:0;width:50%;overflow:hidden;backface-visibility:hidden;transition:transform 2.8s cubic-bezier(.25,.55,.2,1),filter 2.8s;transform-style:preserve-3d;background:#e9e6de}.gate-leaf img{position:absolute;top:0;width:200%;height:100%;object-fit:cover;max-width:none;object-position:center}.gate-left{left:0;transform-origin:left center}.gate-left img{left:0}.gate-right{right:0;transform-origin:right center}.gate-right img{right:0}.gate-wash{position:absolute;inset:0;z-index:-1;background:linear-gradient(#f9fbfc9c,transparent 26%,transparent 50%,#f9fbfcd4 79%,#f9fbfce8);transition:opacity .7s}.cover-heading{position:absolute;top:max(6%,env(safe-area-inset-top));left:15px;right:15px;text-align:center;transition:opacity .55s,transform .8s}.cover-heading>.eyebrow{font-size:.75rem;letter-spacing:.14em}.cover-heading h1{font-size:clamp(2rem,8.3vw,3.1rem);letter-spacing:-.015em;margin-top:14px;white-space:nowrap}.cover-heading h1 i{font-size:.78em;color:var(--gold);margin:0 2px}.cover-date{display:block;font-size:.8rem;letter-spacing:.2em;margin-top:13px}.gate-seal{position:absolute;top:44%;left:50%;transform:translate(-50%,-50%);width:80px;height:80px;display:grid;place-items:center;background:linear-gradient(135deg,#f9f1d9,#d6c295 55%,#f2e3bd);color:#715a2a;border:1px solid #b9a06c;border-radius:50%;box-shadow:0 5px 20px #8171522e,inset 0 0 0 5px #f6e9c69c,inset 0 0 0 6px #b9a06c66;transition:opacity .5s,transform .8s}.gate-seal>span{font:400 2rem/1 var(--serif);letter-spacing:-.09em}.gate-seal i{font-size:.6em;margin:0 1px}.cover-action{position:absolute;bottom:max(7%,env(safe-area-inset-bottom));left:20px;right:20px;text-align:center;transition:opacity .5s,transform .8s}.cover-action>p{font:400 clamp(1.65rem,6.5vw,2.2rem)/1.12 var(--serif);margin-bottom:22px}.cover-action em{color:#60788f}.open-button{display:flex;align-items:center;justify-content:center;gap:10px;min-height:54px;padding:15px 26px;border:1px solid #a89469;background:var(--blue);color:white;border-radius:30px;font-size:.875rem;margin:auto;box-shadow:0 6px 24px #2e4c6630;transition:transform .3s,background .3s}.open-button:hover{background:#1f3c58;transform:translateY(-2px)}.open-button svg{width:17px;height:17px}.quiet-button{border:0;background:transparent;font-size:.75rem;color:var(--muted);min-height:44px;padding:12px 18px;margin-top:3px;text-decoration:underline;text-underline-offset:3px}.opening-light{position:absolute;inset:0;opacity:0;pointer-events:none;background:radial-gradient(ellipse at 50% 48%,#fff9e3d9,transparent 66%);z-index:-2}.cover.opening{background:transparent;pointer-events:none}.cover.opening .gate-left{transform:translateX(-12%) rotateY(-105deg);filter:brightness(1.18)}.cover.opening .gate-right{transform:translateX(12%) rotateY(105deg);filter:brightness(1.18)}.cover.opening .cover-heading{opacity:0;transform:translateY(-30px)}.cover.opening .gate-seal{opacity:0;transform:translate(-50%,-50%) scale(1.6)}.cover.opening .cover-action{opacity:0;transform:translateY(30px)}.cover.opening .gate-wash{opacity:0}.cover.opening .opening-light{animation:opening-glow 2.7s ease both}.covered{overflow:hidden}
.butterfly-burst{position:fixed;top:0;left:50%;transform:translateX(-50%);width:min(100%,var(--page));height:100svh;z-index:102;pointer-events:none;overflow:hidden}.burst-butterfly{position:absolute;top:47%;left:50%;width:var(--size);height:var(--size);opacity:0;object-fit:contain}.butterfly-burst.fly .burst-butterfly{animation:fly-out 3.7s cubic-bezier(.15,.35,.3,1) var(--delay) both}.music-button{position:fixed;right:max(18px,calc((100vw - var(--page))/2 + 18px));bottom:max(18px,env(safe-area-inset-bottom));z-index:40;width:48px;height:48px;border-radius:50%;border:1px solid #b1c2d0;display:grid;place-items:center;background:#f8fbf4ed;color:var(--blue);box-shadow:0 4px 20px #2c456125;backdrop-filter:blur(12px)}.music-button svg{width:20px;height:20px}.equalizer{display:none;gap:3px;height:19px;align-items:center}.equalizer b{display:block;width:2px;height:17px;border-radius:2px;background:var(--blue);animation:equalize .7s ease-in-out alternate infinite}.equalizer b:nth-child(2){animation-delay:-.3s;height:12px}.equalizer b:nth-child(3){animation-delay:-.5s;height:19px}.equalizer b:nth-child(4){animation-delay:-.2s;height:11px}.music-button.playing .music-icon{display:none}.music-button.playing .equalizer{display:flex}.toast{position:fixed;left:50%;bottom:80px;transform:translateX(-50%);z-index:110;max-width:min(88vw,470px);width:max-content;border:1px solid #9fafb9;border-radius:12px;padding:14px 18px;background:#fffefbef;color:var(--deep);box-shadow:0 8px 25px #314b621f;backdrop-filter:blur(8px);font-size:.875rem;text-align:center}.reveal{opacity:1}.motion-ready .reveal{opacity:0;transform:translateY(23px);transition:opacity .9s ease,transform .9s cubic-bezier(.2,.6,.3,1)}.motion-ready .reveal.visible{opacity:1;transform:none}
@keyframes opening-glow{0%{opacity:0}35%{opacity:1}100%{opacity:0}}@keyframes fly-out{0%{opacity:0;transform:translate(-50%,-50%) scale(.1) rotate(0)}15%{opacity:1}50%{opacity:1;transform:translate(calc(-50% + var(--mx)),calc(-50% + var(--my))) scale(.8) rotate(var(--turn))}100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) scale(1.25) rotate(var(--turn))}}@keyframes butterfly-drift{0%,100%{transform:translate(0,0) rotate(var(--turn)) scaleX(1)}25%{transform:translate(12px,-20px) rotate(calc(var(--turn) + 10deg)) scaleX(.6)}50%{transform:translate(-6px,-35px) rotate(calc(var(--turn) - 10deg)) scaleX(1)}75%{transform:translate(-15px,-10px) rotate(var(--turn)) scaleX(.7)}}@keyframes equalize{from{transform:scaleY(.35)}to{transform:scaleY(1)}}@keyframes stem{0%,100%{opacity:.45;transform:translateY(0)}50%{opacity:1;transform:translateY(5px)}}
@media(min-width:650px){.date-card{padding:45px 9% 35px}.date-card h2{font-size:clamp(2.35rem,9vw,3.2rem);margin-top:12px}.date-card h2 em{display:block}.date-display{flex-direction:column;align-items:center;gap:0;font:400 5rem/.95 var(--serif);margin-top:12px}.date-display i{font-size:2.25rem;line-height:1.3;margin:4px 0}.date-display span:last-child{font-size:1.55rem;letter-spacing:.18em;line-height:1.8}.weekday{margin:9px 0 27px}.calendar{padding-top:18px}.calendar-week{font-size:.75rem;margin-bottom:8px}.calendar-grid{font-size:1rem;row-gap:5px}.calendar-grid>span{min-height:34px;max-height:54px}.date-card .outline-button{margin-top:27px}.countdown-wrap{margin-top:45px}.countdown{margin-top:23px}.countdown strong{font-size:clamp(2.8rem,12vw,4rem)}.countdown span{margin-top:9px;font-size:.75rem}.countdown i{font-size:1.7rem;line-height:1.9}#day-message{font-size:2rem;margin-top:20px}.hero{height:1000px;min-height:900px}.hero-copy{padding-top:43px}.hero h1{font-size:6.1rem;margin-top:19px}.cover{max-height:1100px}.cover-heading{top:6%}.cover-action{bottom:8%}.letter-section{padding-top:50px;padding-bottom:75px}.letter-text{font-size:1.05rem}.date-section{padding-left:10%;padding-right:10%}.date-card{padding-left:9%;padding-right:9%}.date-card>.eyebrow{max-width:250px}.calendar-grid>span{max-height:54px}.venue-section{padding-top:75px}.garden-detail{height:320px}.butterfly-one{width:75px;height:75px}.butterfly-two{width:60px;height:60px}}
@media(max-width:380px){.hero{min-height:720px}.hero-copy{padding-top:27px}.hero-copy .eyebrow{letter-spacing:.08em}.hero h1{font-size:4.15rem}.cover-heading h1{font-size:1.94rem}.cover-heading>.eyebrow{letter-spacing:.08em}.cover-action>p{font-size:1.7rem}.date-card{padding-left:6%;padding-right:6%}.countdown{gap:9px}.countdown>div{min-width:43px}.countdown strong{font-size:2.8rem}.couple-signature{gap:9px;font-size:1.95rem}.letter-section{padding-left:8%;padding-right:8%}}
@media(max-height:680px){.cover{min-height:0}.cover-heading{top:4%}.cover-action{bottom:3%}.cover-action>p{font-size:1.45rem;margin-bottom:12px}.gate-seal{top:42%;width:66px;height:66px}.cover-heading h1{margin-top:6px}.cover-date{margin-top:6px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{animation:none!important;transition:none!important}.motion-ready .reveal{opacity:1;transform:none}.cover.opening{display:none}.butterfly-burst{display:none}.palace-art{transform:none}}
.cover{display:flex;flex-direction:column;align-items:center;padding:clamp(28px,6svh,65px) 20px clamp(24px,7svh,75px);gap:20px;overflow-y:auto}
.cover-heading{position:relative;top:auto;left:auto;right:auto;flex:none;width:100%}.cover-heading h1{white-space:normal}
.gate-seal{position:relative;top:auto;left:auto;transform:none;margin:auto 0;flex-shrink:0}
.cover-action{position:relative;bottom:auto;left:auto;right:auto;flex-shrink:0}
.cover.opening .gate-seal{transform:scale(1.6)}

/* A quiet moving scene, with manual control over the page journey. */
html.auto-scrolling{scroll-behavior:auto}
.auto-scroll-button{position:fixed;left:max(18px,calc((100vw - var(--page))/2 + 18px));bottom:max(18px,env(safe-area-inset-bottom));z-index:40;min-height:46px;padding:10px 16px;display:flex;align-items:center;gap:9px;border:1px solid #b1c2d0;border-radius:25px;background:#f8fbf4ed;color:var(--blue);box-shadow:0 4px 20px #2c456125;backdrop-filter:blur(12px);font-size:.8rem;transition:background .3s,box-shadow .3s}
.auto-scroll-button.running{background:#294a6bf2;color:#fff;border-color:#486a89;box-shadow:0 4px 20px #2c456130}.auto-symbol{font-size:1.1rem;line-height:1;width:16px;text-align:center}.auto-scroll-button.running .auto-symbol{font-size:.95rem}
.palace-layer{position:absolute;inset:-16px -16px -48px;z-index:-3;transform:translate3d(0,var(--palace-shift,0px),0);will-change:transform}
.palace-layer .palace-art{z-index:auto;transition:none;animation:palace-breathe 22s ease-in-out infinite paused}
body.is-open .palace-layer .palace-art{animation-play-state:running}
.hero-copy{transform:translate3d(0,var(--copy-shift,0px),0)}
.motion-ready body:not(.is-open) .hero-copy h1>*{opacity:0}
.motion-ready body.is-open .hero-copy h1>span{animation:royal-name-in 2s cubic-bezier(.16,.6,.3,1) .8s both}
.motion-ready body.is-open .hero-copy h1>i{animation:royal-name-in 1.8s cubic-bezier(.16,.6,.3,1) 1.1s both}
.motion-ready body.is-open .hero-copy h1>span:last-child{animation-delay:1.4s}
body.is-open .hero-foot{animation:royal-name-in 1.6s ease 2.2s both}
.light-veil{position:absolute;inset:-10% -60%;z-index:-1;pointer-events:none;background:linear-gradient(110deg,transparent 34%,#fff8d52e 44%,#fffefa48 48%,transparent 57%);mix-blend-mode:screen;opacity:.6;animation:light-sweep 20s ease-in-out infinite paused}
body.is-open .light-veil{animation-play-state:running}
.ambient-scene{position:fixed;left:50%;top:0;transform:translateX(-50%);width:min(100%,var(--page));height:100svh;overflow:hidden;z-index:25;pointer-events:none;opacity:0;transition:opacity 2s}
body.is-open .ambient-scene{opacity:1}
.light-mote{position:absolute;left:var(--x);top:var(--y);width:3px;height:3px;border-radius:50%;background:#c8ac6c;box-shadow:0 0 6px 2px #e8d4a63b;animation:mote-wander var(--duration) ease-in-out var(--delay) infinite paused}
body.is-open .light-mote{animation-play-state:running}
.roaming-butterfly{position:absolute;left:-65px;width:50px;height:50px;opacity:0;animation:roaming-flight 26s linear infinite paused;will-change:transform}
.roaming-butterfly img{width:100%;height:100%;object-fit:contain;animation:wing-flutter .85s ease-in-out infinite alternate paused;filter:drop-shadow(0 3px 3px #294a6b12)}
.roaming-one{top:28%;animation-delay:4s;--fly-rise:-85px;--fly-fall:35px}
.roaming-two{top:65%;width:38px;height:38px;animation-duration:32s;animation-delay:14s;--fly-rise:60px;--fly-fall:-70px}
.roaming-three{top:45%;width:42px;height:42px;animation-duration:29s;animation-delay:24s;--fly-rise:-55px;--fly-fall:90px}
body.is-open .roaming-butterfly,body.is-open .roaming-butterfly img{animation-play-state:running}
.motion-ready .section-flourish span{transform:scaleX(0);transition:transform 1.5s ease .15s}.motion-ready .section-flourish.visible span{transform:scaleX(1)}.section-flourish span:first-child{transform-origin:right}.section-flourish span:last-child{transform-origin:left}
.motion-ready .calendar.visible .calendar-grid>span{animation:calendar-in .7s ease var(--day-delay,0ms) both}
.wedding-day{box-shadow:0 0 0 0 #a58b5325;animation:date-halo 3.5s ease-in-out infinite!important}
.garden-detail img{animation:garden-pan 18s ease-in-out infinite;will-change:transform}
.page-hidden *, .page-hidden *:before,.page-hidden *:after{animation-play-state:paused!important}
@keyframes palace-breathe{0%,100%{transform:scale(1.075) translate3d(0,0,0)}50%{transform:scale(1.135) translate3d(-.5%,-.7%,0)}}
@keyframes royal-name-in{from{opacity:0;transform:translate3d(0,20px,0);filter:blur(5px)}to{opacity:1;transform:translate3d(0,0,0);filter:blur(0)}}
@keyframes light-sweep{0%,100%{transform:translate3d(-9%,0,0);opacity:.25}50%{transform:translate3d(13%,0,0);opacity:.7}}
@keyframes mote-wander{0%,100%{opacity:0;transform:translate3d(0,25px,0) scale(.5)}40%{opacity:.42}65%{opacity:.18;transform:translate3d(12px,-30px,0) scale(1)}85%{opacity:0}}
@keyframes roaming-flight{0%,5%{opacity:0;transform:translate3d(0,0,0) rotate(-12deg)}12%{opacity:.7}35%{transform:translate3d(min(32vw,192px),var(--fly-rise),0) rotate(15deg)}65%{transform:translate3d(min(76vw,456px),var(--fly-fall),0) rotate(-10deg);opacity:.7}82%{opacity:0;transform:translate3d(min(130vw,780px),0,0) rotate(14deg)}100%{opacity:0;transform:translate3d(min(130vw,780px),0,0)}}
@keyframes wing-flutter{from{transform:scaleX(.45) rotate(-5deg)}to{transform:scaleX(1) rotate(5deg)}}
@keyframes calendar-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}
@keyframes date-halo{0%,100%{box-shadow:0 0 0 0 #a58b5325}50%{box-shadow:0 0 0 6px #a58b5315}}
@keyframes garden-pan{0%,100%{transform:scale(1.04) translate3d(-.8%,0,0)}50%{transform:scale(1.09) translate3d(.8%,-1%,0)}}
@media(prefers-reduced-motion:reduce){.ambient-scene,.light-veil{display:none}.palace-layer,.hero-copy{transform:none!important}.palace-layer .palace-art,.garden-detail img{transform:none!important}.hero-copy h1>*{opacity:1!important;filter:none!important}.wedding-day{animation:none!important}.motion-ready .section-flourish span{transform:none}}

body:has(.cover:not([hidden])){overflow:hidden}
.section-divider{--divider-from:var(--paper);--divider-to:var(--sky);--divider-stroke:var(--line);position:relative;isolation:isolate;display:flex;align-items:center;justify-content:center;gap:12px;height:112px;padding:22px 7% 0;overflow:hidden;background:linear-gradient(to bottom,var(--divider-from) 0 45%,var(--divider-to) 45%)}.divider-to-paper{--divider-from:var(--sky);--divider-to:var(--paper)}.section-divider:before,.section-divider:after{content:"";position:absolute;left:50%;width:135%;height:110px;border-radius:50% 50% 0 0;transform:translateX(-50%);pointer-events:none}.section-divider:before{top:24px;background:var(--divider-to);z-index:-1}.section-divider:after{top:19px;border-top:1px solid var(--divider-stroke);opacity:.85;z-index:-1}.section-divider span{flex:0 1 105px;height:1px;background:linear-gradient(90deg,transparent,var(--gold));position:relative;opacity:.75}.section-divider span:after{content:"";position:absolute;right:0;top:-2px;width:5px;height:5px;border:1px solid var(--gold);border-radius:50%;background:var(--divider-to)}.section-divider span:last-child{transform:rotate(180deg)}.section-divider img{width:54px;height:54px;padding:9px;object-fit:contain;border:1px solid var(--divider-stroke);border-radius:50%;background:var(--divider-to);box-shadow:0 0 0 5px var(--divider-to),0 0 0 6px var(--divider-stroke);filter:drop-shadow(0 3px 5px #a58b5325)}
.letter-section,.venue-section,.wishes-section{position:relative}
.map-frame{margin:6px auto 22px;max-width:480px;border-radius:22px;overflow:hidden;border:1px solid var(--line);outline:1px solid var(--line);outline-offset:5px;box-shadow:0 14px 34px #294a6b1c;aspect-ratio:4/3;background:var(--sky)}.map-frame iframe{width:100%;height:100%;border:0;display:block}
.route-buttons{display:flex;flex-wrap:wrap;gap:12px;justify-content:center}
.wishes-section{text-align:center;padding:56px 8% 60px;background:linear-gradient(var(--paper),var(--sky))}.wishes-section h2{margin:22px 0 26px}.wishes-section h2 em{display:block}
.wish-form{display:grid;gap:12px;max-width:440px;margin:0 auto 30px}.wish-form input,.wish-form textarea{font:inherit;color:var(--deep);background:#fffffff0;border:1px solid var(--line);border-radius:14px;padding:13px 16px;resize:vertical}.wish-form input:focus,.wish-form textarea:focus{outline:2px solid #a58b5366;border-color:var(--gold)}.wish-form button{justify-self:center;cursor:pointer}.wish-form button:disabled{opacity:.6}
.wish-list{list-style:none;padding:0;margin:0 auto;max-width:440px;display:grid;gap:14px;text-align:left}.wish-list li{background:#fff;border:1px solid #e6e0d0;border-radius:18px;padding:16px 18px;box-shadow:0 6px 18px #294a6b0d}.wish-list p{margin:0 0 8px;color:#4d6478;line-height:1.7;white-space:pre-wrap;overflow-wrap:anywhere}.wish-list strong{font:italic 1.25rem var(--serif);color:var(--deep)}.wish-list .wish-empty{text-align:center;color:var(--muted);font-style:italic}

/* Cover names sit directly on the curtain; a soft white halo keeps them readable. */
.cover-heading{width:100%;max-width:none;margin:clamp(110px,17svh,230px) auto 0;padding:6px 0 0;background:none;border:0;box-shadow:none}
.cover-heading h1{color:#1d3654;margin-top:10px;font-size:clamp(2.4rem,10.5vw,3.2rem);line-height:1.05;font-weight:500;text-shadow:0 0 2px #fff,0 0 8px #fff,0 0 16px #fff,0 0 28px #fffffff0,0 0 44px #ffffffd0}
.cover-heading>.eyebrow,.cover-date{color:#2f4a66;font-weight:600;text-shadow:0 0 2px #fff,0 0 8px #fff,0 0 16px #fff,0 0 26px #ffffffe0}
.cover-date{margin-top:10px}
/* Venue address shown as stacked lines. */
.venue-address{flex-direction:column;gap:10px}
.venue-address svg{width:22px;height:22px;color:var(--gold)}
.venue-address p{font:400 1.35rem/1.45 var(--serif);color:var(--deep)}
.venue-address p strong{display:block;margin-top:4px;font-weight:400;font-size:1.55rem}
/* Keep the J fully inside its line box so phones never clip it. */
.hero h1 span,.cover-heading h1{padding:0 .12em .08em;overflow:visible}
