/* The full invitation remains readable when scripts or motion are unavailable. */
.entrance{position:fixed;inset:0;width:100%;height:100%;height:100dvh;max-width:none;max-height:none;padding:0;border:0;margin:0;background:#2c1117;color:#fff5df;overflow:hidden;isolation:isolate}
.entrance::backdrop{background:#2c1117}.entrance-active{overflow:hidden}.entrance-background{position:absolute;inset:0;background:linear-gradient(#47191b33,#47191b88),url('/palace.jpg') center/cover;transform:scale(1.1)}
.gate-half{position:absolute;top:0;width:50%;height:100%;overflow:hidden;will-change:transform;transition:transform 1.65s cubic-bezier(.65,0,.2,1),filter 1.65s,opacity 1.65s}
.gate-half img{position:absolute;top:0;width:200%;height:100%;max-width:none;object-fit:cover;object-position:center}.gate-left{left:0;transform-origin:left center}.gate-right{right:0;transform-origin:right center}.gate-left img{left:0}.gate-right img{left:-100%}
.entrance-shade{position:absolute;inset:0;background:linear-gradient(90deg,#24101644,#24101688 25%,#241016bb 50%,#24101688 75%,#24101644);transition:opacity .8s .5s}
.entrance-copy{position:relative;z-index:2;min-height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:45px 24px;text-shadow:0 3px 20px #170307;transition:transform .75s,opacity .6s;overflow:auto;max-height:100dvh}
.entrance-copy .eyebrow{font-size:.8rem;color:#f1d7a1;letter-spacing:.23em;margin-bottom:20px}.entrance-monogram{font:3.5rem/1 var(--serif);letter-spacing:.07em;border:1px solid #dcb66d99;border-radius:50%;width:150px;height:150px;display:flex;align-items:center;justify-content:center;margin-bottom:24px;box-shadow:0 0 0 7px #dcb66d13,inset 0 0 35px #e2ba5020}.entrance-monogram i{font-size:2rem;color:#e7bf78;margin:0 8px}.entrance-copy h2{font-size:clamp(3rem,5vw,5rem);font-weight:500;line-height:1.08}.entrance-copy h2 em{color:#ecd2a0;font-weight:400}.entrance-copy>p:not(.eyebrow){margin-top:22px;font-size:1.125rem;letter-spacing:.02em}.entrance-copy>.entrance-date{font-size:.8rem!important;letter-spacing:.18em!important;margin-top:12px!important}.entrance-open{position:relative;overflow:hidden;background:#e8c78e;color:#47131e;border:1px solid #e8c78e;font-size:.95rem;min-height:52px;padding:14px 42px;margin-top:28px;box-shadow:0 5px 28px #17030744}.entrance-open:hover{background:#f5ddb1}.entrance-open:after{content:'';position:absolute;inset:-100%;background:linear-gradient(115deg,transparent 45%,#fff7db77 50%,transparent 55%);transform:translateX(-60%);pointer-events:none}.entrance-skip{background:none;border:0;color:#fff1d8;text-decoration:underline;text-underline-offset:4px;margin-top:12px;padding:9px 15px;font-size:.8rem;min-height:44px}.entrance button:focus-visible{outline:3px solid white;outline-offset:5px}.entrance.is-opening .gate-left{transform:perspective(1400px) translateX(-90%) rotateY(-22deg);filter:brightness(.7);opacity:.4}.entrance.is-opening .gate-right{transform:perspective(1400px) translateX(90%) rotateY(22deg);filter:brightness(.7);opacity:.4}.entrance.is-opening .entrance-copy{opacity:0;transform:scale(.94);pointer-events:none}.entrance.is-opening .entrance-shade{opacity:0}
.motion-controls{position:fixed;bottom:18px;left:20px;z-index:15;display:flex;align-items:center;background:#4b1824f2;color:#fff1d8;border:1px solid #d1a75e88;box-shadow:0 5px 25px #3210162b;border-radius:50px;padding:4px 10px;backdrop-filter:blur(10px)}.motion-controls button{background:none;color:inherit;border:0;padding:9px 12px;font-size:.8rem;min-height:40px;border-radius:20px}.motion-controls button:hover{background:#ffffff12}.motion-controls>span{width:1px;height:15px;background:#d1a75e66}.toast{bottom:82px}
.gold-atmosphere{position:fixed;inset:0;z-index:4;overflow:hidden;pointer-events:none;contain:strict}.gold-mote{position:absolute;top:-20px;left:var(--left);width:var(--size);height:var(--size);background:#c49142;box-shadow:0 0 7px #e1b25d88;border-radius:50%;opacity:0}
.date-reveal{position:relative;isolation:isolate;max-width:330px;margin:26px auto 0;background:#f4e8d1;border:1px solid #c9ab72;border-radius:5px;overflow:hidden;min-height:112px;box-shadow:0 3px 16px #8b63250b}.date-reveal-content{min-height:112px;padding:12px 10px;text-align:center;display:flex;flex-direction:column;align-items:center;justify-content:center}.date-reveal-content>p{font-size:.65rem;letter-spacing:.16em;color:var(--wine);font-weight:600}.date-reveal-content strong{font:500 2.25rem/1.2 var(--serif);color:var(--wine);margin:4px 0}.date-reveal-content>span{font-size:.72rem;color:#6a5033}.date-reveal canvas{position:absolute;inset:0;display:block;width:100%;height:100%;touch-action:none;cursor:crosshair;transition:opacity .8s,filter .8s}.date-reveal.is-revealed canvas{opacity:0;filter:blur(9px);pointer-events:none}.date-reveal-actions{margin:6px auto 0;max-width:330px;display:flex;flex-direction:column;align-items:center}.date-reveal-actions button{background:none;border:0;border-bottom:1px solid #af8b53;padding:8px 6px 4px;color:var(--wine);font-size:.8rem;min-height:36px}.date-reveal-actions button:disabled{color:var(--muted);border-color:transparent;cursor:default}.date-reveal-actions p{font-size:.7rem;color:var(--muted);margin-top:4px}.hero .date-line{font-size:.7rem;letter-spacing:.11em;margin-top:20px}.hero-art{overflow:hidden}.hero-art img{will-change:transform;transform:scale(1.04);transform-origin:center}.hero-art figcaption{position:relative;background:var(--cream);z-index:1;padding-top:17px}.hero-copy .ampersand{position:relative}.hero{padding-top:48px;padding-bottom:48px;min-height:830px}.hero-art img{max-height:770px}.hero-art{max-height:850px}.event{transition:transform .35s ease,box-shadow .35s ease,background .35s ease}.event:hover,.event:focus-within{transform:translateY(-9px);box-shadow:0 12px 30px #6520291c;z-index:2;background:var(--paper)}.event:last-child:hover,.event:last-child:focus-within{background:var(--deep)}.event-number{position:relative;overflow:hidden}.section-heading:after{content:'';height:1px;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform 1.2s}.confetti-burst{position:fixed;inset:0;pointer-events:none;z-index:50;overflow:hidden}.confetti-piece{position:absolute;left:var(--x);top:var(--y);width:6px;height:10px;background:var(--confetti-color);opacity:0}
html[data-motion=on] .entrance-open:after{animation:button-sheen 4s ease-in-out infinite}html[data-motion=on] .entrance-monogram{animation:seal-glow 3s ease-in-out infinite}html[data-motion=on] .gold-mote{animation:gold-drift var(--duration) linear var(--delay) infinite}html[data-motion=on].motion-ready .reveal{opacity:0;transform:translate3d(0,28px,0);transition:opacity .8s ease var(--stagger,0ms),transform .85s cubic-bezier(.2,.7,.2,1) var(--stagger,0ms)}html[data-motion=on].motion-ready .reveal.is-visible{opacity:1;transform:translate3d(0,0,0)}html[data-motion=on].invitation-open .hero-copy>*{animation:invitation-arrive .95s both;animation-delay:calc(var(--intro-order,0)*100ms)}html[data-motion=on].invitation-open .hero-art{animation:art-arrive 1.6s cubic-bezier(.2,.6,.2,1) both}html[data-motion=on] .confetti-piece{animation:gold-burst 1.6s cubic-bezier(.08,.6,.4,1) var(--burst-delay) both}html[data-motion=on] .date-reveal.is-revealed .date-reveal-content{animation:date-arrive .7s both}html[data-motion=off] .gate-half,html[data-motion=off] .entrance-copy,html[data-motion=off] .entrance-shade,html[data-motion=off] .date-reveal canvas{transition:none}html[data-motion=off] .event{transition:none}html[data-motion=off] .event:hover,html[data-motion=off] .event:focus-within{transform:none}html[data-motion=off] .hero-art img{transform:none!important}html[data-motion=off] .gold-atmosphere{display:none}html[data-motion=off]{scroll-behavior:auto}html[data-motion=off] .confetti-burst{display:none}
@keyframes button-sheen{0%,45%{transform:translateX(-60%)}80%,100%{transform:translateX(60%)}}@keyframes seal-glow{0%,100%{box-shadow:0 0 0 7px #dcb66d13,inset 0 0 35px #e2ba5020}50%{box-shadow:0 0 0 10px #dcb66d09,0 0 50px #e2ba5020,inset 0 0 35px #e2ba5030}}@keyframes gold-drift{0%{transform:translate3d(0,-20px,0);opacity:0}12%{opacity:.5}80%{opacity:.4}100%{transform:translate3d(var(--drift),105vh,0);opacity:0}}@keyframes invitation-arrive{from{opacity:0;transform:translateY(17px)}to{opacity:1;transform:translateY(0)}}@keyframes art-arrive{from{opacity:0;transform:translateY(18px) scale(.96)}to{opacity:1;transform:translateY(0) scale(1)}}@keyframes date-arrive{from{transform:scale(.95);opacity:.4}to{transform:scale(1);opacity:1}}@keyframes gold-burst{0%{opacity:1;transform:translate(0,0) rotate(0)}85%{opacity:.8}100%{opacity:0;transform:translate(var(--dx),var(--dy)) rotate(var(--spin))}}
@media(max-width:700px){.hero{min-height:unset;padding-top:34px;padding-bottom:32px}.hero-art{max-height:none}.hero-art img{max-height:none}.entrance-copy{padding:24px 20px}.entrance-copy .eyebrow{font-size:.7rem;letter-spacing:.16em}.entrance-monogram{width:120px;height:120px;font-size:2.9rem;margin-bottom:24px}.entrance-copy h2{font-size:3.3rem}.entrance-copy>p:not(.eyebrow){font-size:1rem;margin-top:22px}.entrance-open{margin-top:25px}.motion-controls{left:50%;transform:translateX(-50%);bottom:12px;white-space:nowrap;max-width:calc(100% - 20px);padding:3px 7px}.motion-controls button{font-size:.75rem;padding:8px 12px}.date-reveal{max-width:300px}.hero .date-line{font-size:.66rem;letter-spacing:.08em}.event:hover{transform:none}footer{padding-bottom:90px}.toast{bottom:76px}.hero-copy .auspicious{font-size:.9rem}}
@media(max-height:700px){.entrance-monogram{width:90px;height:90px;font-size:2.5rem;margin-bottom:15px}.entrance-copy .eyebrow{margin-bottom:15px}.entrance-copy h2{font-size:2.7rem}.entrance-copy>p:not(.eyebrow){margin-top:15px}.entrance-open{margin-top:20px}.entrance-skip{margin-top:2px}}
@media(prefers-reduced-motion:reduce){html:not([data-motion=on]) *{animation:none!important;transition:none!important}html{scroll-behavior:auto}}
@media print{.entrance,.gold-atmosphere,.motion-controls,.confetti-burst,.date-reveal canvas,.date-reveal-actions{display:none!important}.reveal{opacity:1!important;transform:none!important}}

@media(hover:hover){html[data-motion=on].motion-ready .event.reveal.is-visible:hover,html[data-motion=on].motion-ready .event.reveal.is-visible:focus-within{transform:translate3d(0,-9px,0)}}
.hero:focus{outline:none}
@media(min-width:701px){.motion-controls{left:auto;right:20px}}
