@font-face{font-family:"Great Vibes";src:url("fonts/f48d461c03e0a8ec-s.p.13m1ppbimti50.woff2") format("woff2");font-display:swap}
@font-face{font-family:"Cormorant Garamond";src:url("fonts/01e4147cff8141ee-s.p.10ked.7w885.g.woff2") format("woff2");font-display:swap}
@font-face{font-family:"Cormorant SC";src:url("fonts/0b72cb7c6f05d496-s.p.0h6ud6ij.9ik-.woff2") format("woff2");font-display:swap}
@font-face{font-family:"Cinzel";src:url("fonts/cc014fcb166cf364-s.p.0rbrcy8kuidpb.woff2") format("woff2");font-display:swap}
@font-face{font-family:"Bodoni Moda";src:url("fonts/52b5d5098cb87ddd-s.p.13ehjyjdqyy~v.woff2") format("woff2");font-display:swap}
@font-face{font-family:"Montserrat";src:url("fonts/e8f2fbee2754df70-s.p.0fzkl03jw-sdz.woff2") format("woff2");font-display:swap}
@font-face{font-family:"Berkshire Swash";src:url("fonts/b287a8439b55cc7b-s.p.0gk-leriejcy_.woff2") format("woff2");font-display:swap}
@font-face{font-family:"Allura";src:url("fonts/09fd331868a74310-s.p.0h2ih7r_nhr70.woff2") format("woff2");font-display:swap}

:root{
  --font-great-vibes:"Great Vibes",cursive;
  --font-cormorant:"Cormorant Garamond",Georgia,serif;
  --font-cormorant-sc:"Cormorant SC","Cormorant Garamond",serif;
  --font-cinzel:"Cinzel",serif;
  --font-bodoni-moda:"Bodoni Moda",Georgia,serif;
  --font-montserrat:"Montserrat",Arial,sans-serif;
  --font-berkshire-swash:"Berkshire Swash",cursive;
  --font-allura:"Allura",cursive;
  --gold:#e7c56b;
  --plum:#4a2e5c;
}

*{box-sizing:border-box}
html{scroll-behavior:smooth;background:#1b1025}
body{margin:0;min-height:100vh;background:radial-gradient(circle at top,#57306d 0,#24132f 55%,#140b1b 100%);color:#fbf6ec;font-family:var(--font-cormorant);overflow-x:hidden}
button,input,select,textarea{font:inherit}
button,a{-webkit-tap-highlight-color:transparent}

.invitation{width:min(100%,430px);margin:0 auto;box-shadow:0 0 70px rgba(0,0,0,.65);background:#2c1b45;overflow:hidden;opacity:0;transform:scale(.985);transition:opacity .9s ease,transform .9s ease}
.invitation.is-open{opacity:1;transform:none}
.scene{position:relative;width:100%;isolation:isolate;overflow:hidden;background-color:#342044;background-position:center;background-size:cover}
.invitation>.scene+.scene{margin-top:-13.34%;-webkit-mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.26) 1.5%,rgba(0,0,0,.72) 4%,#000 6.2%,#000 100%);mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.26) 1.5%,rgba(0,0,0,.72) 4%,#000 6.2%,#000 100%)}
.element{position:absolute;display:flex;align-items:center;justify-content:center;min-width:0;min-height:0;opacity:0;transform:translate3d(0,calc(var(--parallax,0px) + 16px),0) rotate(var(--rotation,0deg));transition:opacity .8s ease,transform .9s cubic-bezier(.2,.75,.25,1)}
.element.in-view{opacity:var(--element-opacity,1);transform:translate3d(0,var(--parallax,0px),0) rotate(var(--rotation,0deg))}
.element.kind-shape,.element.kind-image{pointer-events:none}
.element.kind-image img{width:100%;height:100%;display:block}
.element.kind-text{white-space:pre-wrap;overflow-wrap:anywhere;padding:.03em;line-height:1.15}
.element.loop-float.in-view{animation:float 2.8s ease-in-out infinite}
.element.loop-pulse.in-view{animation:pulse 1.8s ease-in-out infinite}
@keyframes float{50%{transform:translate3d(0,calc(var(--parallax,0px) - 8px),0) rotate(var(--rotation,0deg))}}
@keyframes pulse{50%{filter:brightness(1.12);transform:translate3d(0,var(--parallax,0px),0) rotate(var(--rotation,0deg)) scale(1.045)}}
.wardrobe-scene{perspective:1100px}
.door-panel{opacity:1!important;transform-style:preserve-3d;backface-visibility:hidden;transition-property:transform,filter!important;transition-duration:var(--door-duration,1500ms)!important;transition-delay:var(--door-delay,1500ms)!important;transition-timing-function:cubic-bezier(.2,.72,.18,1)!important;filter:drop-shadow(0 8px 9px rgba(40,17,18,.38));z-index:40!important;overflow:hidden}
.wardrobe-scene.door-ready .door-panel{transition-delay:0ms!important}
.door-panel img{position:absolute;top:0;width:200%!important;max-width:none;height:100%;object-fit:fill!important}
.door-left{transform-origin:left center}.door-left img{left:0}
.door-right{transform-origin:right center}.door-right img{right:0}
.door-left.in-view{transform:translate3d(0,var(--parallax,0px),0) rotateY(-108deg)!important;filter:drop-shadow(16px 7px 12px rgba(31,13,15,.42))}
.door-right.in-view{transform:translate3d(0,var(--parallax,0px),0) rotateY(108deg)!important;filter:drop-shadow(-16px 7px 12px rgba(31,13,15,.42))}
.wardrobe-scene.doors-closed .door-left.in-view,.wardrobe-scene.doors-closed .door-right.in-view{transform:translate3d(0,var(--parallax,0px),0) rotateY(0deg)!important;filter:drop-shadow(0 8px 9px rgba(40,17,18,.38))}
.wardrobe-toggle{position:absolute;left:17%;top:27%;width:66%;height:56%;z-index:55;border:0;background:transparent;cursor:pointer;border-radius:22px;color:transparent}
.wardrobe-toggle:focus-visible{outline:3px solid #fff1cf;outline-offset:3px}
.wardrobe-hint{position:absolute;left:25%;top:79%;width:50%;z-index:56;border:1px solid rgba(231,197,107,.84);border-radius:999px;padding:7px 9px;background:rgba(58,27,68,.8);color:#fff1cf;text-align:center;font:600 10px/1.2 var(--font-cinzel);letter-spacing:.08em;text-transform:uppercase;pointer-events:none;opacity:0;transform:translateY(8px);transition:.4s ease}
.wardrobe-scene:hover .wardrobe-hint,.wardrobe-scene:focus-within .wardrobe-hint{opacity:1;transform:none}

.cover{position:fixed;inset:0;z-index:1000;display:grid;place-items:center;background:#21112c;overflow:hidden;transition:opacity .9s ease,visibility .9s ease}
.cover-scene{position:absolute;inset:0;display:flex;justify-content:center;background:#21112c;transition:transform 1.35s cubic-bezier(.7,0,.25,1),filter 1.2s ease}
.cover-scene .scene{width:min(100vw,430px);height:100vh;min-height:620px}
.cover-shade{position:absolute;inset:0;background:linear-gradient(180deg,rgba(23,11,30,.08),rgba(23,11,30,.38) 50%,rgba(23,11,30,.8));pointer-events:none}
.open-panel{position:relative;z-index:5;width:min(88vw,360px);padding:24px 22px 26px;text-align:center;border:1px solid rgba(246,213,122,.78);border-radius:24px;background:linear-gradient(145deg,rgba(48,25,62,.78),rgba(93,49,100,.64));box-shadow:0 22px 70px rgba(0,0,0,.48),inset 0 0 30px rgba(231,197,107,.08);backdrop-filter:blur(8px);animation:panel-in 1.1s ease both}
.open-kicker{margin:0 0 8px;text-transform:uppercase;letter-spacing:.16em;font-family:var(--font-cormorant-sc);font-size:13px;color:#fff1cf}
.open-panel h1{margin:0 0 20px;font-family:var(--font-cormorant-sc);font-size:31px;font-weight:500;letter-spacing:.04em;color:#fff8eb;text-shadow:0 3px 12px #240d30}
.open-panel h1 span{display:block;margin-top:4px;font-family:var(--font-great-vibes);font-size:72px;line-height:.9;font-weight:400;background:linear-gradient(15deg,#f8de7e,#f4a6c4 55%,#c8a4ee);-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 3px 2px #4a2e5c)}
.dynamic-hair-name-shell{overflow:visible!important;pointer-events:none}
.hair-name-mark,.hair-name-svg{display:block;width:100%;height:100%;overflow:visible}
.hair-ornament path{fill:none;stroke:url(#hairGold);stroke-width:25;stroke-linecap:round;stroke-linejoin:round}
.hair-ornament .hair-highlight{stroke:url(#hairShine);stroke-width:5;opacity:.85}
.hair-ornament .hair-braid{stroke-width:21;stroke-dasharray:18 7;stroke-linecap:round}
.hair-svg-name{font-family:var(--font-great-vibes);font-weight:400;letter-spacing:-3px;fill:url(#hairGold);stroke:#7a371b;stroke-width:2.2px;paint-order:stroke fill;filter:url(#hairShadow)}
.hair-svg-subtitle{font-family:var(--font-cormorant);font-size:55px;font-weight:600;fill:url(#xvPurple);stroke:#693459;stroke-width:1.3px;paint-order:stroke fill;filter:drop-shadow(0 2px 1px rgba(255,224,124,.8))}
.hair-flower{fill:#c987df;stroke:#743b85;stroke-width:2;filter:drop-shadow(0 2px 2px #6d351d)}.hair-flower circle{fill:#ffe26b;stroke:#9b5b1c}.flower-two{fill:#f4a9cb;stroke:#914d73}.flower-three{fill:#fff9e4;stroke:#b89057}
.open-button{appearance:none;border:1px solid rgba(255,244,207,.72);border-radius:999px;padding:13px 32px;color:#fffaf0;background:linear-gradient(135deg,#8b4a6b,#5f326f);box-shadow:0 9px 26px rgba(19,8,25,.45),0 0 20px rgba(231,197,107,.18);font-family:var(--font-cinzel);font-size:14px;font-weight:600;letter-spacing:.08em;cursor:pointer;transition:transform .22s ease,box-shadow .22s ease}
.open-button:hover{transform:translateY(-2px);box-shadow:0 13px 30px rgba(19,8,25,.5),0 0 24px rgba(231,197,107,.33)}
.open-button:active{transform:translateY(1px) scale(.98)}
.open-button:focus-visible,.action-button:focus-visible,.music-toggle:focus-visible,.plaque:focus-visible{outline:3px solid #fff;outline-offset:3px}
@keyframes panel-in{from{opacity:0;transform:translateY(24px) scale(.94)}to{opacity:1;transform:none}}
.cover.is-opening .cover-scene{animation:castle-approach 3.15s cubic-bezier(.22,.61,.22,1) forwards}
.cover.is-opening .cover-shade{animation:shade-away 2.6s ease forwards}
.cover.is-opening .open-panel{animation:panel-out .62s ease forwards}
.cover.is-opening .spark{animation-duration:.8s}
.cover.is-opening .intro-vine-left{animation:vine-left-open 1.25s cubic-bezier(.55,0,.2,1) .18s forwards!important}
.cover.is-opening .intro-vine-right{animation:vine-right-open 1.25s cubic-bezier(.55,0,.2,1) .18s forwards!important}
.cover.is-opening .intro-cave-far{animation:cave-dissolve 2.35s cubic-bezier(.2,.65,.2,1) .52s forwards!important}
.cover.is-opening .intro-cave-mid{animation:cave-dissolve 2.05s cubic-bezier(.2,.65,.2,1) .68s forwards!important}
.cover.is-opening .intro-cave-front{animation:cave-dissolve 1.75s cubic-bezier(.2,.65,.2,1) .82s forwards!important}
.cover.is-opening .intro-tower{animation:tower-forward 2.45s cubic-bezier(.18,.72,.18,1) .52s forwards!important}
.cover.is-gone{opacity:0;visibility:hidden;pointer-events:none}
@keyframes panel-out{to{opacity:0;transform:translateY(-36px) scale(1.06)}}
@keyframes vine-left-open{0%{opacity:1;transform:translate3d(0,0,0) rotateY(0)}100%{opacity:0;transform:translate3d(-122%,0,0) rotateY(-34deg) scale(1.05)}}
@keyframes vine-right-open{0%{opacity:1;transform:translate3d(0,0,0) rotateY(0)}100%{opacity:0;transform:translate3d(122%,0,0) rotateY(34deg) scale(1.05)}}
@keyframes cave-dissolve{0%{opacity:1;transform:translate3d(0,0,0) scale(1)}72%{opacity:.42}100%{opacity:0;transform:translate3d(0,0,0) scale(1.52);filter:blur(7px)}}
@keyframes tower-forward{0%{opacity:1;transform:translate3d(0,0,0) scale(1)}100%{opacity:1;transform:translate3d(0,3%,0) scale(1.32);filter:brightness(1.12)}}
@keyframes castle-approach{0%{transform:scale(1);filter:brightness(1) blur(0);opacity:1}52%{transform:scale(1.08);filter:brightness(1.13) blur(0);opacity:1}82%{transform:scale(1.34);filter:brightness(1.36) blur(1px);opacity:1}100%{transform:scale(1.52);filter:brightness(1.62) blur(13px);opacity:0}}
@keyframes shade-away{0%{opacity:1}55%{opacity:.2}100%{opacity:0}}
.sparkles{position:absolute;inset:0;pointer-events:none;z-index:4}
.spark{position:absolute;width:6px;height:6px;border-radius:50%;background:#ffe9a4;box-shadow:0 0 12px #ffd866;animation:drift var(--duration,5s) ease-in-out infinite;animation-delay:var(--delay,0s)}
@keyframes drift{0%,100%{opacity:.15;transform:translateY(24px) scale(.4)}50%{opacity:1;transform:translateY(-75px) scale(1.2)}}
.lantern-rain{position:fixed;inset:-12vh 0 0;z-index:850;overflow:hidden;pointer-events:none;opacity:0;visibility:hidden;transition:opacity 1.1s ease,visibility 1.1s ease;contain:layout paint}
.lantern-rain.visible{opacity:1;visibility:visible}
.floating-lantern{position:absolute;left:var(--x);bottom:-18vh;width:var(--size);height:auto;opacity:0;filter:drop-shadow(0 0 8px rgba(255,174,54,.8)) drop-shadow(0 0 20px rgba(255,127,20,.32));mix-blend-mode:screen;animation:lantern-rise var(--duration) linear infinite;animation-delay:var(--delay);will-change:transform,opacity}
@keyframes lantern-rise{0%{opacity:0;transform:translate3d(0,14vh,0) rotate(var(--tilt)) scale(.72)}10%{opacity:var(--alpha);transform:translate3d(0,0,0) rotate(var(--tilt)) scale(.82)}52%{opacity:var(--alpha)}86%{opacity:.22}100%{opacity:0;transform:translate3d(var(--drift),-138vh,0) rotate(10deg) scale(1.08)}}

.action-button{width:100%;height:100%;border:0;border-radius:inherit;color:inherit;background:transparent;cursor:pointer;display:flex;align-items:center;justify-content:center;text-align:center;text-decoration:none;padding:8px;letter-spacing:inherit}
.countdown-grid{position:relative;width:100%;height:100%}
.count-unit{position:absolute;display:flex;flex-direction:column;align-items:center;justify-content:center;padding:0;border:0;border-radius:0;background:transparent;box-shadow:none;color:#2d2032;text-align:center}
.count-value{font-family:var(--font-berkshire-swash);line-height:.95;color:#2f2334;text-shadow:0 1px 0 #fff}
.count-label{font-family:var(--font-berkshire-swash);line-height:1;color:#4a2e5c}
.ceremony-scene{background-image:linear-gradient(rgba(90,46,86,.035),rgba(90,46,86,.06));background-position:center;background-size:cover}
.ceremony-scene::before{content:"";position:absolute;inset:0;z-index:0;pointer-events:none;background:linear-gradient(180deg,rgba(54,25,64,.06),transparent 25%,transparent 78%,rgba(81,40,80,.08))}
.ceremony-piece{z-index:5!important;width:auto;height:auto;padding:.03em;text-align:center;white-space:normal}
.ceremony-heading{left:6%;top:4.2%;width:88%;height:11%;font:400 39px/1.05 var(--font-berkshire-swash);color:#fbf6ec;text-shadow:0 3px 7px rgba(73,29,77,.72)}
.ceremony-venue,.ceremony-kind{font-family:var(--font-cormorant);font-size:21px;font-weight:400;font-style:normal;line-height:1.3;letter-spacing:0;color:#111;text-shadow:0 1px 0 rgba(255,248,226,.78)}
.ceremony-venue{left:4.5%;top:25%;width:61%;height:8%;--rotation:6deg}
.ceremony-kind{left:4.5%;top:63.3%;width:61%;height:7%;--rotation:0deg}
.ceremony-location{left:17%;top:72.2%;width:37%;height:5.5%;appearance:none;border:1.5px solid #e7c56b;border-radius:999px;background:linear-gradient(145deg,#8b4a6b,#63346d);box-shadow:0 7px 18px rgba(47,22,45,.35),inset 0 0 12px rgba(246,213,122,.15);color:#fff1cf;font:700 12px/1 var(--font-cinzel);letter-spacing:.045em;cursor:pointer}
.ceremony-location:focus-visible{outline:3px solid #fff;outline-offset:3px}
.plaque{appearance:none;width:100%;height:100%;border:1px solid #e7c56b;border-radius:18px;padding:14px 10px;background:linear-gradient(145deg,rgba(66,31,76,.92),rgba(130,72,99,.88));color:#fff1cf;box-shadow:0 10px 24px rgba(0,0,0,.34),inset 0 0 16px rgba(231,197,107,.13);cursor:pointer;text-align:center;font-family:var(--font-cinzel);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px}
.plaque strong{font-size:13px;line-height:1.25}.plaque small{font:600 10px/1.2 var(--font-montserrat);letter-spacing:.06em;text-transform:uppercase;color:#f6d57a}
.gift-scene .kind-maps{opacity:0!important;transform:translate3d(0,calc(var(--parallax,0px) + 22px),0) scale(.88)!important;pointer-events:none;transition:opacity .65s ease,transform .75s cubic-bezier(.2,.75,.2,1)!important}
.gift-scene.gifts-open .kind-maps{opacity:1!important;transform:translate3d(0,var(--parallax,0px),0) scale(1)!important;pointer-events:auto}
.gift-scene.gifts-open .kind-maps:nth-of-type(2){transition-delay:.12s!important}
.gift-toggle{position:absolute;z-index:70;border:0;background:transparent;border-radius:50%;cursor:pointer;filter:drop-shadow(0 0 8px rgba(255,213,91,.65))}
.gift-toggle:focus-visible{outline:3px solid #fff1cf;outline-offset:4px}
.gift-scene .plaque{position:relative;border:2px solid #e7c56b;border-radius:2px;background:#4a2e5c;clip-path:polygon(8% 0,92% 0,100% 8%,100% 92%,92% 100%,8% 100%,0 92%,0 8%);box-shadow:inset 0 0 0 7px #4a2e5c,inset 0 0 0 8px #e7c56b,0 12px 25px rgba(24,10,31,.42);gap:17px}
.gift-scene .plaque::before,.gift-scene .plaque::after{content:"◇";position:absolute;left:50%;transform:translateX(-50%);color:#f6d57a;font-size:24px;line-height:1}
.gift-scene .plaque::before{top:17px}.gift-scene .plaque::after{bottom:18px}
.gift-scene .plaque strong{font-size:18px;line-height:1.28;letter-spacing:.08em;color:#f6d57a}
.gift-scene .plaque small,.lodging-scene .plaque small{border:1.5px solid #e7c56b;border-radius:999px;background:#98506f;padding:9px 14px;color:#fff1cf;font-family:var(--font-cinzel)}
.lodging-scene .plaque{border:1.5px solid #e7c56b;background:linear-gradient(150deg,rgba(64,31,76,.97),rgba(111,57,89,.95));box-shadow:0 10px 24px rgba(0,0,0,.38),inset 0 0 0 3px rgba(231,197,107,.16)}
.lodging-scene .plaque strong{font-size:12px;color:#fff1cf}
.lodging-intro-shell{top:15.9%!important;height:6.8%!important}
.lodging-intro-shell>div{padding:0 24px!important;font-size:15px!important;line-height:1.08!important}
.dress-code-title-shell{top:3.6%!important;height:13.5%!important}
.family-role{font-family:var(--font-great-vibes)!important;font-size:34px!important;font-style:normal!important;font-weight:400!important}
.site-footer{position:relative;z-index:90;display:flex;min-height:178px;flex-direction:column;align-items:center;justify-content:center;gap:10px;padding:25px 22px calc(22px + env(safe-area-inset-bottom));overflow:hidden;text-align:center;color:#fff8ee;background:linear-gradient(145deg,rgba(151,102,177,.7),rgba(79,39,104,.82));border-top:1px solid rgba(246,213,122,.72);box-shadow:inset 0 1px 0 rgba(255,255,255,.16),0 -12px 35px rgba(40,18,54,.2);backdrop-filter:blur(13px);-webkit-backdrop-filter:blur(13px)}
.site-footer::before{content:"";position:absolute;inset:0;pointer-events:none;background:radial-gradient(circle at 50% 10%,rgba(255,237,183,.16),transparent 46%),linear-gradient(90deg,transparent,rgba(255,255,255,.05),transparent)}
.footer-ornament,.footer-brand,.footer-socials,.footer-copyright{position:relative;z-index:1}.footer-ornament{display:flex;align-items:center;gap:9px;color:#f6d57a}.footer-ornament span{width:50px;height:1px;background:linear-gradient(90deg,transparent,#f6d57a)}.footer-ornament span:last-child{background:linear-gradient(90deg,#f6d57a,transparent)}.footer-ornament i{font-style:normal;font-size:11px;text-shadow:0 0 9px rgba(246,213,122,.8)}
.footer-brand{margin:0;font:400 29px/1 var(--font-great-vibes);color:#fff7dc;text-shadow:0 2px 8px rgba(44,18,59,.62)}
.footer-socials{display:flex;align-items:center;justify-content:center;gap:13px}.footer-socials a{display:grid;width:43px;height:43px;place-items:center;border:1px solid rgba(246,213,122,.78);border-radius:50%;color:#fff7dc;background:rgba(66,31,86,.36);box-shadow:0 6px 17px rgba(39,15,51,.28),inset 0 0 13px rgba(255,235,182,.08);transition:transform .22s ease,background .22s ease,box-shadow .22s ease}.footer-socials a:hover,.footer-socials a:focus-visible{transform:translateY(-2px) scale(1.06);background:rgba(119,65,137,.68);box-shadow:0 9px 22px rgba(39,15,51,.38),0 0 16px rgba(246,213,122,.24);outline:none}.footer-socials svg{width:21px;height:21px;overflow:visible;fill:currentColor}.footer-socials rect,.footer-socials circle{fill:none;stroke:currentColor;stroke-width:1.7}.footer-socials .social-dot{fill:currentColor;stroke:none}
.footer-copyright{margin:1px 0 0;font:500 10px/1.4 var(--font-montserrat);letter-spacing:.035em;color:rgba(255,248,238,.9)}
.rsvp-card{width:100%;height:100%;overflow:auto;padding:20px 18px;border:1px solid #c7a24e;border-radius:17px;background:linear-gradient(160deg,rgba(251,246,236,.96),rgba(237,227,246,.96));box-shadow:0 16px 36px rgba(30,13,39,.34);color:#4a2e5c;font-family:var(--font-cormorant)}
.rsvp-card h2{margin:0 0 8px;color:#8f5c19;font:400 23px/1.1 var(--font-berkshire-swash);text-align:center}.rsvp-card p{margin:0 0 10px;font-size:13px;line-height:1.22;text-align:center}.rsvp-fields{display:grid;gap:7px}.rsvp-card label{display:grid;gap:3px;font-weight:600;font-size:13px}.rsvp-card input:not([type=radio]),.rsvp-card textarea{width:100%;border:1px solid #c7a24e;border-radius:8px;background:#fff;padding:7px 9px;color:#3d2949;outline:none}.rsvp-card textarea{min-height:50px;resize:vertical}.rsvp-card input:focus,.rsvp-card textarea:focus{box-shadow:0 0 0 3px rgba(199,162,78,.22)}.attendance-choice{margin:0;padding:0;border:0}.attendance-choice legend{margin-bottom:5px;font-size:15px}.attendance-options{display:grid;grid-template-columns:1fr 1fr;gap:8px}.attendance-options label{position:relative;display:block}.attendance-options input{position:absolute;opacity:0;pointer-events:none}.attendance-options span{display:flex;align-items:center;justify-content:center;min-height:39px;border:1.5px solid #4a2e5c;border-radius:999px;background:transparent;color:#4a2e5c;font:500 18px var(--font-cormorant);cursor:pointer;transition:.2s ease}.attendance-options input:checked+span{border-color:#2693ff;background:#9a5275;color:#fff;box-shadow:0 0 0 1px #2693ff}.attendance-options input:focus-visible+span{outline:3px solid rgba(38,147,255,.35);outline-offset:2px}.rsvp-submit{margin-top:4px;border:1px solid #e7c56b;border-radius:999px;background:#8b4a6b;color:#fff1cf;padding:9px 13px;font:600 12px var(--font-cinzel);cursor:pointer}.rsvp-message{margin-top:8px!important;color:#7a315a;font-weight:700}
.music-toggle{position:fixed;right:max(18px,calc((100vw - 430px)/2 + 18px));bottom:calc(18px + env(safe-area-inset-bottom));z-index:900;width:48px;height:48px;border:1px solid rgba(246,213,122,.86);border-radius:50%;background:rgba(56,27,67,.88);color:#fff1cf;box-shadow:0 8px 24px rgba(0,0,0,.4);backdrop-filter:blur(6px);cursor:pointer;opacity:0;visibility:hidden;transition:.35s ease;font:25px/1 var(--font-cormorant)}
.music-toggle.visible{opacity:1;visibility:visible}.music-toggle.playing span{display:inline-block;animation:music 1.3s ease-in-out infinite}@keyframes music{50%{transform:rotate(12deg) scale(1.12)}}
.toast{position:fixed;left:50%;bottom:78px;z-index:1200;max-width:min(88vw,390px);transform:translate(-50%,18px);padding:10px 15px;border:1px solid #e7c56b;border-radius:999px;background:rgba(56,27,67,.95);color:#fff7e2;box-shadow:0 10px 30px rgba(0,0,0,.42);font:600 13px/1.3 var(--font-montserrat);opacity:0;visibility:hidden;transition:.3s ease;text-align:center}.toast.show{opacity:1;visibility:visible;transform:translate(-50%,0)}

@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.element,.cover,.cover-scene,.open-panel,.invitation{transition-duration:.01ms!important;animation-duration:.01ms!important}.spark,.floating-lantern{display:none}}
@keyframes castle-approach-mobile{0%{transform:scale(1);opacity:1}58%{transform:scale(1.09);opacity:1}100%{transform:scale(1.25);opacity:0}}
@media (max-width:600px),(pointer:coarse){
  .invitation>.scene{content-visibility:auto;contain-intrinsic-size:auto 930px}
  .invitation>.scene+.scene{-webkit-mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.26) 1.5%,rgba(0,0,0,.72) 4%,#000 6.2%,#000 100%);mask-image:linear-gradient(to bottom,transparent 0,rgba(0,0,0,.26) 1.5%,rgba(0,0,0,.72) 4%,#000 6.2%,#000 100%);box-shadow:0 -12px 24px rgba(76,40,94,.16)}
  .open-panel,.site-footer,.music-toggle{-webkit-backdrop-filter:none;backdrop-filter:none}
  .cover.is-opening .cover-scene{animation:castle-approach-mobile 2.55s cubic-bezier(.22,.61,.22,1) forwards}
  .cover.is-opening .intro-cave-far,.cover.is-opening .intro-cave-mid,.cover.is-opening .intro-cave-front{filter:none!important}
  .floating-lantern{mix-blend-mode:normal;filter:drop-shadow(0 0 6px rgba(255,174,54,.62));will-change:transform}
}
@media (min-width:760px){body{padding:28px 0}.invitation{border-radius:22px}.cover-scene .scene{border-radius:20px}.open-panel{width:370px}}
