@font-face{font-family:InvitationScript;src:url('assets/great-vibes.ttf') format('truetype');font-weight:400;font-style:normal;font-display:swap}
:root{--blue:#b3c9ee;--ink:#0d3475;--pearl:#f7f9fc}
*{box-sizing:border-box}
html{background:var(--blue);scroll-behavior:smooth;scrollbar-width:thin;scrollbar-color:#9bb8e5 #dae5f8}
body{margin:0;background:var(--blue);overflow-x:clip;color:var(--ink);font-family:Georgia,serif}
body.is-closed{overflow:hidden;height:100svh}
button,a{-webkit-tap-highlight-color:transparent}
button{cursor:pointer}
button:focus-visible,a:focus-visible{outline:2px solid #0d3475;outline-offset:3px}
h1,h2,p{margin:0;font-weight:400}
.sr-only{position:absolute!important;width:1px!important;height:1px!important;padding:0!important;margin:-1px!important;overflow:hidden!important;clip:rect(0,0,0,0)!important;white-space:nowrap!important;border:0!important}
main{width:100%;max-width:440px;margin:0 auto;position:relative;isolation:isolate;background:linear-gradient(180deg,#b1c8ee,#aac2e9 26%,#a3bee6 50%,#acc5eb 76%,#b1c7ed)}
.page{position:relative;width:100%;display:block}
.page+.page{margin-top:-15.7%}
.scene{position:relative;width:100%;isolation:isolate}
.reference-base,.reference-underlay{position:absolute;inset:0;width:100%;height:100%;pointer-events:none;user-select:none;mask-image:url('assets/edge-middle.svg');-webkit-mask-image:url('assets/edge-middle.svg');mask-size:100% 100%;-webkit-mask-size:100% 100%;mask-repeat:no-repeat;-webkit-mask-repeat:no-repeat}
.reference-base{z-index:2;object-fit:contain}
.floral-protection{position:absolute;inset:0;width:100%;height:100%;z-index:2;pointer-events:none}
.scene:before{content:'';position:absolute;inset:0;z-index:0;background:var(--underlay);pointer-events:none;mask-image:url('assets/edge-middle.svg');-webkit-mask-image:url('assets/edge-middle.svg');mask-size:100% 100%;-webkit-mask-size:100% 100%}
.page:first-child .reference-base,.page:first-child .scene:before{mask-image:url('assets/edge-first.svg');-webkit-mask-image:url('assets/edge-first.svg')}
.page:last-child .reference-base,.page:last-child .scene:before{mask-image:url('assets/edge-last.svg');-webkit-mask-image:url('assets/edge-last.svg')}
.welcome{--underlay:linear-gradient(#93b2de 0%,#acbfe4 15.6%,#dfe6fb 25.4%,#f7f8fe 39%,#fafafe 51.8%,#f2f3fe 63.5%,#b0c7ed 100%)}
.portrait{--underlay:linear-gradient(#91b0dc,#d3e1f7 28%,#d3e1f7 70%,#97b4e0)}
.occasion{--underlay:linear-gradient(#aec7ef,#dde5fc 15.6%,#f5f4fe 25.4%,#f9f8fe 39%,#f7f7fe 51.8%,#ebedfd 88%,#96b3dd)}
.farewell{--underlay:linear-gradient(#668abc,#d6e2fb 15.6%,#f5f5fe 25.4%,#f5f6fe 39%,#f4f5fe 51.8%,#e2e9fc 63.5%,#a9c2ea 100%)}
.reference-ink{position:absolute;display:block;z-index:3;line-height:0}
.reference-ink img,.reference-ink svg{display:block;width:100%;height:100%;object-fit:contain;border:0;pointer-events:none;user-select:none;overflow:hidden}
.portrait-window{position:absolute;z-index:1;overflow:hidden;border-radius:50%;background:#d4c8bd}
.portrait-window img{position:absolute;left:-27%;top:-15%;width:154%;height:auto;display:block;object-fit:contain}
.map-frame{position:absolute;z-index:4;border-radius:12px;overflow:hidden;background:#e5ebf3}
.map-frame iframe{display:block;width:100%;height:100%;border:0}
.route-button{z-index:5;text-decoration:none;cursor:pointer}
.route-button:focus-visible{outline-offset:-3px;border-radius:30px}
.curtain-stage{position:fixed;inset:0;z-index:20;overflow:hidden;pointer-events:auto}
.entrance-canvas{position:absolute;inset:0;width:100%;max-width:600px;height:100%;margin:0 auto}
.curtain{position:absolute;top:0;height:100%;width:50.1%;overflow:hidden;transform:translate3d(0,0,0);opacity:1;will-change:transform,opacity;backface-visibility:hidden;contain:paint}
.curtain-left{left:0}.curtain-right{right:0}
.curtain img{display:block;width:100%;height:100%;object-fit:cover;pointer-events:none;user-select:none}
.curtain-left img{object-position:right top}.curtain-right img{object-position:left top}
.opening-control{position:absolute;top:55%;left:0;width:100%;transform:translateY(-50%);padding:0 21px;text-align:center;z-index:2}
.open-button{color:#fff;font:clamp(25px,7.4vw,36px)/1.2 InvitationScript,cursive;white-space:nowrap;max-width:100%;padding:15px 20px 17px;min-height:60px;border:2px solid #f7f4f1;border-radius:999px;background:linear-gradient(#8ab3e7,#4b83c5 45%,#2c63a6);box-shadow:inset 0 0 0 1px #cfe0fb,0 4px 9px #5879a345}
.curtain-stage[hidden],.music-toggle[hidden]{display:none!important}
.music-toggle{position:fixed;right:14px;top:max(14px,env(safe-area-inset-top));z-index:10;width:44px;height:44px;border-radius:50%;border:1px solid #a3bde3;background:#edf3fddd;color:#173e7e;font:25px Georgia}
.music-toggle i{position:absolute;width:25px;height:1px;left:9px;top:21px;background:#173e7e;transform:rotate(-45deg)}
.music-toggle[aria-pressed=true] i{display:none}
.reveal{opacity:1}
.js-ready .reveal{opacity:0;transition:opacity 1s ease}
.js-ready .reveal.visible{opacity:1}
@media(min-width:700px){main{box-shadow:0 0 100px 40px #a6bee528}}
@media(max-width:340px){.open-button{padding-left:14px;padding-right:14px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.js-ready .reveal{transition-duration:.7s}}
