:root{--ink:#4a4458;--ink-soft:#787285;--leaf:#6f6390;--rose:#b49ad6;--gold:#a08bc8;--gold-deep:#6a5794;--gold-light:#cdbfe6;--wine:#3a3150;--paper:#fcfbf8;--ease-out:cubic-bezier(.22, 1, .36, 1);--ease-io:cubic-bezier(.65, 0, .35, 1);--noise-paper:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='180' height='180'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3' stitchTiles='stitch'/%3E%3CfeColorMatrix values='0 0 0 0 .42 0 0 0 0 .3 0 0 0 0 .16 0 0 0 .16 0'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");--noise-bg:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='200' height='200'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.75' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)' opacity='.6'/%3E%3C/svg%3E");--lattice:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='90' height='90' viewBox='0 0 90 90'%3E%3Cg fill='none' stroke='%23e9c873' stroke-width='1'%3E%3Cpath d='M45 0 L90 45 L45 90 L0 45Z'/%3E%3Ccircle cx='45' cy='45' r='9'/%3E%3Cpath d='M45 33 Q53 45 45 57 Q37 45 45 33Z'/%3E%3Cpath d='M33 45 Q45 53 57 45 Q45 37 33 45Z'/%3E%3C/g%3E%3Cg fill='%23e9c873'%3E%3Ccircle cx='0' cy='0' r='2.2'/%3E%3Ccircle cx='90' cy='0' r='2.2'/%3E%3Ccircle cx='0' cy='90' r='2.2'/%3E%3Ccircle cx='90' cy='90' r='2.2'/%3E%3C/g%3E%3C/svg%3E")}*,:before,:after{box-sizing:border-box}html,body{scrollbar-width:none;-ms-overflow-style:none;background:#f6f3f9;width:100%;margin:0;overflow-x:clip}html::-webkit-scrollbar{display:none}body::-webkit-scrollbar{display:none}html[data-phase=closed],html[data-phase=peeling],html[data-phase=opening]{touch-action:none;overflow:hidden}body{min-height:100svh;color:var(--ink);overscroll-behavior-y:none;-webkit-font-smoothing:antialiased;-webkit-tap-highlight-color:transparent;font-family:Cormorant Garamond,Georgia,serif}::selection{background:#9680be4d}button{font:inherit}:focus-visible{outline:2px solid var(--gold-light);outline-offset:4px}@keyframes spin{to{transform:rotate(360deg)}}.bg{z-index:0;pointer-events:none;background:radial-gradient(120% 80% at 50% 0,#fdfcfb 0%,#f4f0f8 55%,#ebe5f2 100%);position:fixed;inset:0;overflow:hidden}.bg__glow{opacity:.6;border-radius:50%;width:75vmax;height:75vmax;transition:opacity 2.5s;position:absolute}.bg.is-open .bg__glow{opacity:1}.bg__glow--a{background:radial-gradient(circle,#c8b4eb47,#0000 62%);animation:22s ease-in-out infinite alternate drift-a;top:-30vmax;left:-28vmax}.bg__glow--b{background:radial-gradient(circle,#a591cd29,#0000 62%);animation:27s ease-in-out infinite alternate drift-b;top:18vh;right:-34vmax}.bg__glow--c{background:radial-gradient(circle,#e1daf033,#0000 60%);animation:31s ease-in-out infinite alternate drift-c;bottom:-45vmax;left:0}@keyframes drift-a{to{transform:translate(20vw,16vh)scale(1.15)}}@keyframes drift-b{to{transform:translate(-18vw,22vh)scale(.9)}}@keyframes drift-c{to{transform:translate(12vw,-18vh)scale(1.2)}}.bg__pattern{opacity:0;background-image:var(--lattice);background-size:90px 90px;animation:60s linear infinite pattern-pan;position:absolute;inset:-90px}@keyframes pattern-pan{to{transform:translate(90px,90px)}}.bg__noise{opacity:.05;background-image:var(--noise-bg);mix-blend-mode:overlay;position:absolute;inset:0}.bg__vignette{background:radial-gradient(#0000 55%,#7864a024 100%);position:absolute;inset:0}.fx-canvas{z-index:3;pointer-events:none;width:100%;height:100%;position:fixed;inset:0}.loader{z-index:5;color:var(--gold-deep);align-content:center;place-items:center;gap:18px;display:grid;position:fixed;inset:0}.loader__ring{border:1.5px solid #9680be33;border-top-color:var(--gold);border-radius:50%;width:44px;height:44px;animation:1s linear infinite spin}.loader__text{letter-spacing:.08em;opacity:.8;font-family:Georgia,serif;font-style:italic}.invite{--card-w:min(86vw, 420px, calc((100svh - 250px) / 1.5));z-index:1;width:var(--card-w);padding-top:calc((100svh - var(--card-w) * 1.5) / 2 + 45px);transition:width 1.2s var(--ease-io), padding-top 1.2s var(--ease-io);margin:0 auto;position:relative;container-type:inline-size}.invite.is-open{--card-w:min(90vw, 440px);padding-top:clamp(96px,16svh,150px)}.paper{color:var(--ink);background-color:var(--paper);background-image:var(--noise-paper), radial-gradient(130% 85% at 50% 0%, #fff 0%, #f6f2f7 62%, #efeaf3 100%)}.frame{pointer-events:none;border:1px solid #9680be73;position:absolute}.frame--outer{border-width:1px;border-color:#9680be73;border-radius:6px;inset:3.6cqw}.frame--inner{border-radius:4px;inset:4.6cqw}.corner{width:15cqw;height:15cqw;color:var(--gold);pointer-events:none;position:absolute}.corner--tl{top:2.2cqw;left:2.2cqw}.corner--tr{top:2.2cqw;right:2.2cqw;transform:scaleX(-1)}.corner--bl{bottom:2.2cqw;left:2.2cqw;transform:scaleY(-1)}.corner--br{bottom:2.2cqw;right:2.2cqw;transform:scale(-1)}.gold-text,.name__ch{background:linear-gradient(#9d88c6 0%,#7d68a8 55%,#5a4a7f 100%);color:#0000;-webkit-background-clip:text;background-clip:text}.hero-wrap{perspective:1600px;position:relative}.hero-intro,.hero-tilt,.hero-float{transform-style:preserve-3d;position:relative}.hero-float.is-floating{animation:6s ease-in-out infinite float}@keyframes float{0%,to{transform:translateY(0)rotate(0)}50%{transform:translateY(-8px)rotate(.4deg)}}.hero-panel{aspect-ratio:2/3;transition:border-radius .8s var(--ease-out);border-radius:10px;position:relative;box-shadow:0 30px 60px -30px #5a4b7873,0 0 0 1px #9680be4d}.hero-hint{text-align:center;letter-spacing:.32em;text-transform:uppercase;color:var(--leaf);pointer-events:none;margin:0;font-family:Cinzel,serif;font-size:11px;position:absolute;left:-10vw;right:-10vw}.hero-hint--top{bottom:calc(100% + 24px)}.hero-hint--bottom{font-size:12px;top:calc(100% + 26px)}.shimmer{background:linear-gradient(90deg, var(--leaf) 0%, #9a85c4 50%, var(--leaf) 100%);color:#0000;background-size:200%;-webkit-background-clip:text;background-clip:text;animation:2.6s linear infinite shimmer}@keyframes shimmer{to{background-position:-200%}}.door{width:50%;transform-style:preserve-3d;position:absolute;top:0;bottom:0}.door--left{transform-origin:0%;left:0}.door--right{transform-origin:100%;right:0}.door__face,.door__back{backface-visibility:hidden;position:absolute;inset:0;overflow:hidden}.door__face{box-shadow:0 30px 60px -30px #5a4b7873}.door--left .door__face,.door--left .door__back{border-radius:10px 0 0 10px}.door--right .door__face,.door--right .door__back{border-radius:0 10px 10px 0}.door__back{background-color:#e6dcf3;background-image:var(--lattice), radial-gradient(circle at 30% 20%, #f4eefb, #d4c5ea);background-size:46px 46px,cover;transform:rotateY(180deg);box-shadow:inset 0 0 0 1.5px #9680be99}.door__seam{pointer-events:none;width:12px;position:absolute;top:0;bottom:0}.door--left .door__seam{background:linear-gradient(270deg,#50416e40,#0000);right:0}.door--right .door__seam{background:linear-gradient(90deg,#ffffffb3,#50416e0f 25%,#0000);left:0}.door-art{width:200%;position:absolute;top:0;bottom:0;left:0}.door--right .door-art{left:-100%}.door-art__mandala{color:#9680be4d;width:80cqw;height:80cqw;margin:-40cqw 0 0 -40cqw;animation:120s linear infinite spin;position:absolute;top:50%;left:50%}.door-art__mandala svg{width:100%;height:100%;display:block}.door-art__top{text-align:center;text-transform:uppercase;color:var(--gold-deep);letter-spacing:.4em;flex-direction:column;gap:1.4cqw;margin:0;font-family:Cinzel,serif;font-size:3.1cqw;display:flex;position:absolute;top:13cqw;left:0;right:0}.door-art__top span:last-child{letter-spacing:.22em;font-size:4.6cqw;font-weight:600}.door-glare{pointer-events:none;mix-blend-mode:soft-light;border-radius:10px;position:absolute;inset:0}.seal-anchor{width:42cqw;height:42cqw;transform-style:preserve-3d;margin:-21cqw 0 0 -21cqw;position:absolute;top:50%;left:50%}.seal-button{all:unset;cursor:grab;touch-action:none;-webkit-tap-highlight-color:transparent;border-radius:50%;width:100%;height:100%;display:block;position:relative}.seal-button:active{cursor:grabbing}.seal-button:disabled{cursor:default}.seal-button:focus-visible{outline:2px solid var(--gold-light);outline-offset:6px}.seal-svg{width:100%;height:100%;display:block;overflow:visible}.seal-stuck,.seal-flap-lift,.seal-flap,.seal-residue{pointer-events:none;width:100%;height:100%;position:absolute;inset:0}.seal-stuck .seal-svg{filter:drop-shadow(0 6px 6px #32235073)drop-shadow(0 1px 1px #32235066)}.seal-flap-lift{perspective:520px}.seal-flap{transform-origin:0 0;filter:drop-shadow(0 0 5px #32235073);will-change:transform, clip-path}.seal-shock{pointer-events:none;border:2px solid #dcd0f0f2;border-radius:50%;position:absolute;inset:5%;box-shadow:0 0 24px #cdbee699,inset 0 0 18px #cdbee666}.hero-content{text-align:center;flex-direction:column;justify-content:space-between;align-items:center;height:100%;padding:10cqw 10cqw 9cqw;display:flex;position:relative}.quote{cursor:pointer;outline-offset:2cqw;width:100%;margin:0;position:relative}.quote__mark{height:6cqw;color:var(--gold);opacity:.75;font-size:16cqw;line-height:.8;display:block}.quote__stage{justify-content:center;align-items:center;height:17cqw;display:flex}.quote blockquote{margin:0}.quote p{color:var(--ink);margin:0;font-size:4.7cqw;font-style:italic;line-height:1.32}.quote figcaption{letter-spacing:.25em;text-transform:uppercase;color:var(--gold-deep);margin-top:1.8cqw;font-family:Cinzel,serif;font-size:2.5cqw}.quote figcaption:before{content:"— "}.quote__dots{justify-content:center;gap:2.4cqw;margin-top:2.6cqw;display:flex}.quote__dots button{all:unset;cursor:pointer;background:#9680be4d;border-radius:999px;width:1.6cqw;height:1.6cqw;position:relative}.quote__dots button:after{content:"";position:absolute;inset:-2.4cqw}.quote__dot-on{background:var(--gold);border-radius:999px;position:absolute;inset:-.25cqw -1.2cqw}.divider{width:44cqw;height:auto;color:var(--gold);display:block;overflow:visible}.divider--sm{width:34cqw;margin:1.6cqw auto 5cqw}.eyebrow{letter-spacing:.26em;text-transform:uppercase;color:var(--gold-deep);margin:0;font-family:Cinzel,serif;font-size:2.9cqw}.lead{color:var(--ink-soft);margin:1.6cqw 0 0;font-size:4.5cqw;font-style:italic;line-height:1.3}.names{flex-direction:column;align-items:center;margin:0;font-weight:400;line-height:1;display:flex}.name{white-space:nowrap;font-family:Great Vibes,cursive;font-size:14cqw;line-height:1.1;display:inline-flex}.name__ch{cursor:default;margin:-.12em -.14em;padding:.12em .14em;display:inline-block}.amp{color:var(--gold);margin:.8cqw 0 -1cqw;font-size:8.5cqw;font-style:italic;line-height:1;display:inline-block}.fold{margin-top:6cqw}.fold__paper{border-radius:10px;position:relative;box-shadow:0 30px 60px -30px #5a4b7873,0 0 0 1px #9680be4d}.fold__body{text-align:center;flex-direction:column;align-items:center;padding:12cqw 10cqw;display:flex;position:relative}.label{letter-spacing:.35em;text-transform:uppercase;color:var(--gold-deep);margin:0;font-family:Cinzel,serif;font-size:3.6cqw;font-weight:600}.rings{cursor:pointer;width:52cqw;margin-top:-1cqw;overflow:visible}.twinkle{transform-box:fill-box;transform-origin:50%;animation:2.4s ease-in-out infinite twinkle}.twinkle--late{animation-delay:1.1s}@keyframes twinkle{0%,to{opacity:0;transform:scale(.3)rotate(0)}50%{opacity:1;transform:scale(1)rotate(45deg)}}.scratch{flex-direction:column;align-items:center;width:100%;margin-top:6.5cqw;display:flex;position:relative}.scratch__area{aspect-ratio:200/118;place-items:center;width:64cqw;display:grid;position:relative}.scratch__content{text-align:center;flex-direction:column;align-items:center;gap:3cqw;margin:0;display:flex}.scratch__weekday{letter-spacing:.4em;text-transform:uppercase;color:var(--ink);padding-left:.4em;font-family:Cinzel,serif;font-size:3.4cqw}.scratch__date{white-space:nowrap;padding:.1em .2em;font-family:Great Vibes,cursive;font-size:8.4cqw;line-height:1.15}.scratch__date sup{vertical-align:baseline;margin-left:.04em;font-size:.5em;position:relative;top:-.8em}.scratch__time{letter-spacing:.22em;text-transform:uppercase;white-space:nowrap;color:var(--gold-deep);padding-left:.22em;font-family:Cinzel,serif;font-size:3.6cqw;font-weight:500}.scratch__coin{cursor:pointer;touch-action:none;-webkit-user-select:none;user-select:none;filter:drop-shadow(0 4px 6px #3223504d);border-radius:3.2cqw;outline:none;width:100%;height:100%;position:absolute;inset:0;overflow:visible}.scratch__coin:focus-visible{outline:2px solid var(--gold-light);outline-offset:6px}.scratch+.btn-row{margin-top:9.5cqw}.scratch__hint{letter-spacing:.3em;text-transform:uppercase;color:var(--gold-deep);margin:3.4cqw 0 0;font-family:Cinzel,serif;font-size:2.9cqw;position:absolute;top:100%;left:0;right:0;overflow:hidden}.btn-row{flex-wrap:wrap;justify-content:center;gap:3cqw;margin-top:7cqw;display:flex}.venue-art{width:64cqw;color:var(--gold);margin-top:-9cqw;overflow:visible}.pin{cursor:pointer;width:9cqw;margin-top:11cqw;position:relative}.pin svg{filter:drop-shadow(0 3px 3px #3c285a4d);width:100%;animation:1.6s cubic-bezier(.5,0,.5,1) infinite bob;display:block}.pin__shadow{background:#50416e59;border-radius:50%;width:60%;height:1.4cqw;margin:.8cqw auto 0;animation:1.6s cubic-bezier(.5,0,.5,1) infinite bob-shadow;display:block}@keyframes bob{0%,to{transform:translateY(0)}50%{transform:translateY(-24%)}}@keyframes bob-shadow{0%,to{opacity:.5;transform:scaleX(1)}50%{opacity:.2;transform:scaleX(.55)}}.venue-name{margin:3cqw 0 0;font-size:7.4cqw;font-weight:600;line-height:1.15}.venue-address{color:var(--ink-soft);flex-direction:column;margin-top:2.4cqw;font-size:4.5cqw;font-style:normal;line-height:1.45;display:flex}.qr{width:72cqw;margin-top:3cqw;display:block;position:relative}.qr__frame{transform-origin:50% 55%;width:100%;animation:2.4s ease-in-out infinite heartbeat;display:block;position:relative}.qr__heart{width:100%;height:100%;display:block}@keyframes heartbeat{0%,40%,to{scale:1}12%{scale:1.025}24%{scale:1.01}32%{scale:1.03}}.qr__scan{z-index:2;left:calc(var(--qr-left) - 2%);width:calc(var(--qr-width) + 4%);top:var(--qr-top);background:linear-gradient(90deg,#0000,#a591cdf2,#0000);border-radius:2px;height:2px;animation:2.8s ease-in-out infinite scan;position:absolute;box-shadow:0 0 12px 2px #cdbee6b3}@keyframes scan{50%{top:calc(var(--qr-top) + var(--qr-height))}}.qr__badge{left:calc(var(--qr-left) + var(--qr-width) / 2);top:calc(var(--qr-top) + var(--qr-height) / 2);width:calc(var(--qr-width) * .24);aspect-ratio:1;background:#fdfbff;border-radius:50%;padding:.6cqw;position:absolute;translate:-50% -50%;box-shadow:0 0 0 .8cqw #fdfbff}.qr__badge svg{width:100%;height:100%;display:block}.qr-caption{color:var(--ink-soft);margin:5cqw 0 0;font-size:4.4cqw;font-style:italic}.qr~.btn-row{margin-top:4cqw}.btn{isolation:isolate;letter-spacing:.13em;text-transform:uppercase;cursor:pointer;-webkit-tap-highlight-color:transparent;background:0 0;border:1px solid #0000;border-radius:999px;align-items:center;gap:8px;padding:12px 20px;font-family:Cinzel,serif;font-size:clamp(10.5px,2.8cqw,12.5px);font-weight:600;text-decoration:none;display:inline-flex;position:relative;overflow:hidden}.btn--gold{color:#fdfbff;background:linear-gradient(135deg,#a28dcb,#6a5794 60%,#a08bc8);box-shadow:0 10px 22px -12px #645096f2,inset 0 1px #ffffff59}.btn--ghost{color:var(--gold-deep);border-color:#9680be99}.btn--ghost-light{color:var(--gold-deep);-webkit-backdrop-filter:blur(4px);backdrop-filter:blur(4px);background:#ffffff8c;border-color:#9680be99}.btn__label{align-items:center;gap:8px;display:inline-flex;position:relative}.btn__shine{z-index:-1;background:linear-gradient(110deg,#0000 30%,#ffffff73 50%,#0000 70%);position:absolute;inset:0;transform:translate(-120%)}.btn--gold .btn__shine{animation:4.5s ease-in-out infinite sweep}.btn:hover .btn__shine{animation:.9s ease-out sweep}@keyframes sweep{0%{transform:translate(-120%)}30%,to{transform:translate(120%)}}.btn__ripple{z-index:-1;pointer-events:none;background:#ffffff73;border-radius:50%;animation:.7s ease-out forwards ripple;position:absolute;transform:scale(0)}.btn--ghost .btn__ripple,.btn--ghost-light .btn__ripple{background:#a591cd4d}@keyframes ripple{to{opacity:0;transform:scale(1)}}.replay-icon{transition:transform .6s var(--ease-out);font-size:1.4em;line-height:.8;display:inline-block}.btn:hover .replay-icon{transform:rotate(-360deg)}.footer{padding:16cqw 6cqw calc(20cqw + env(safe-area-inset-bottom));text-align:center;color:var(--leaf);flex-direction:column;align-items:center;display:flex}.footer__mono{cursor:pointer;width:26cqw}.footer__mono svg{filter:drop-shadow(0 4px 10px #9680be40);width:100%;display:block}.footer__note{color:var(--ink-soft);margin:6cqw 0 0;font-size:5.4cqw;font-style:italic}.footer__sign{color:var(--gold-deep);margin:4cqw 0 8cqw;font-family:Great Vibes,cursive;font-size:8.5cqw}.music{z-index:4;right:max(16px, env(safe-area-inset-right));bottom:max(16px, env(safe-area-inset-bottom));position:fixed}.music__btn{all:unset;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);width:46px;height:46px;color:var(--gold-deep);cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-touch-callout:none;background:#fdfbffe0;border:1px solid #9680be73;border-radius:50%;place-items:center;display:grid;box-shadow:0 6px 16px -8px #5a4b7880}.music__btn svg{width:22px;height:22px}.music__btn.is-off{color:var(--ink-soft)}.music__btn:focus-visible{outline:2px solid var(--gold-light);outline-offset:3px}@media (prefers-reduced-motion:reduce){*,:before,:after{animation-duration:.01ms!important;animation-iteration-count:1!important}}.gallery{z-index:1;max-width:1120px;color:var(--ink);margin:0 auto;padding:56px 20px 80px;position:relative}.gallery__head{text-align:center;margin-bottom:40px}.gallery__eyebrow{letter-spacing:.35em;text-transform:uppercase;color:var(--leaf);margin:0;font-family:Cinzel,serif;font-size:12px}.gallery__head h1{color:var(--gold-deep);margin:10px 0 8px;font-family:Great Vibes,cursive;font-size:clamp(34px,6vw,52px);font-weight:400}.gallery__head p{color:var(--ink-soft);margin:0;font-size:18px;font-style:italic}.gallery code{color:var(--gold-deep);font-family:ui-monospace,Menlo,monospace;font-size:.85em;font-style:normal}.gallery__grid{grid-template-columns:repeat(auto-fill,minmax(300px,1fr));gap:22px;display:grid}.gallery__card{-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:#fff9;border:1px solid #9680be4d;border-radius:16px;padding:18px 18px 16px}.gallery__art{grid-template-columns:1fr 1fr;gap:12px;display:grid}.gallery__seal,.gallery__gold{aspect-ratio:1;border-radius:12px;place-items:center;display:grid}.gallery__seal{padding:10px}.gallery__seal .seal-svg{width:100%;height:100%}.gallery__gold{background:#9680be8c;padding:18px;box-shadow:inset 0 0 0 1px #cdbee626}.gallery__gold svg{width:100%;height:100%}.gallery__card h2{letter-spacing:.12em;text-transform:uppercase;color:var(--ink);align-items:center;gap:10px;margin:16px 0 4px;font-family:Cinzel,serif;font-size:16px;font-weight:600;display:flex}.gallery__card h2 span{color:#3a3150;background:var(--gold-light);border-radius:50%;place-items:center;width:26px;height:26px;font-size:12px;display:grid}.gallery__card p{color:var(--ink-soft);margin:0;font-size:17px;font-style:italic}.gallery__actions{justify-content:space-between;align-items:center;margin-top:14px;display:flex}.gallery__actions a{letter-spacing:.14em;text-transform:uppercase;color:var(--gold-deep);font-family:Cinzel,serif;font-size:12px;font-weight:600;text-decoration:none}.garland{z-index:2;pointer-events:none;width:100%;height:clamp(110px,18svh,170px);position:absolute;top:0;left:0;overflow:hidden}.garland svg{width:100%;height:100%;display:block}.garland__strand{transform-box:fill-box;transform-origin:50% 0;animation:5s ease-in-out infinite alternate sway}@keyframes sway{0%{transform:rotate(-2.5deg)}to{transform:rotate(2.5deg)}}.garland__bulb{animation:2.6s ease-in-out infinite bulb}@keyframes bulb{0%,to{opacity:1}50%{opacity:.35}}.parents{letter-spacing:.12em;text-transform:uppercase;color:var(--ink-soft);margin:2.4cqw 0 3cqw;font-family:Cinzel,serif;font-size:2.5cqw}
