/* The invitation's little moving world. Everything decorative ignores input. */
.guest{isolation:isolate;--gold:#c19a60;--soft-rose:#e9bbb1;--scene-x:0deg;--scene-y:0deg}
.guest:before{content:"";position:fixed;inset:0;z-index:-2;pointer-events:none;background:radial-gradient(ellipse at 83% 40%,#e8c7bc29,transparent 37%),radial-gradient(ellipse at 10% 90%,#ead9bf1a,transparent 40%);animation:ambient-light 18s ease-in-out infinite alternate}
.guest[data-theme=lilac]{--gold:#ad90bc;--soft-rose:#d6bde5}
.guest-header,.guest-main,.guest-footer{position:relative;z-index:1}
.ambient{position:fixed;inset:0;overflow:hidden;pointer-events:none;z-index:-1}
.ambient-mote{position:absolute;left:var(--left);top:110%;color:var(--red);font-size:var(--size);opacity:0;animation:ambient-rise var(--duration) linear infinite;animation-delay:var(--delay);will-change:transform}
.ambient-mote:nth-child(3n){color:var(--gold)}.ambient-mote:nth-child(4n){width:4px;height:4px;border-radius:50%;background:var(--gold)}
.progress{height:3px}.progress span{position:relative;transition:width .8s cubic-bezier(.2,.7,.2,1)}
.progress-heart{position:absolute;right:0;top:6px;color:var(--red);font:12px/1 var(--sans);animation:small-heartbeat 2.6s ease-in-out infinite}
.byline .heart{animation:small-heartbeat 4s ease-in-out infinite}
.guest .primary{position:relative;overflow:hidden;transform-style:preserve-3d;transition:transform .22s,box-shadow .22s,background .22s}
.guest .primary:before{content:"";position:absolute;inset:-30% auto -30% -80%;width:45%;background:linear-gradient(90deg,transparent,#fff4e826,transparent);transform:skewX(-20deg);animation:button-shine 7s ease-in-out infinite;pointer-events:none}
.guest .primary .arrow{transition:transform .3s cubic-bezier(.2,.8,.2,1)}.guest .primary:hover .arrow{transform:translateX(5px) rotate(-6deg)}
.guest .primary:active{transform:translateY(4px) rotateX(5deg)}
.guest .intro{animation:headline-arrive .95s cubic-bezier(.18,.75,.2,1) both;animation-delay:.08s}
.guest #step-0 .question-no{animation:soft-arrive .65s both}.guest #step-0 .support{animation:soft-arrive .7s .22s both}.guest #step-0 .primary{animation:soft-arrive .7s .34s both}
.guest .panel{animation:question-turn .65s cubic-bezier(.16,.8,.2,1) both}
.guest[data-direction=back] .panel{animation-name:question-return}
.guest .choice{animation:choice-arrive .55s cubic-bezier(.16,.8,.2,1) both;animation-delay:calc(var(--order,0)*55ms)}
.guest .choice-content{transition:transform .3s cubic-bezier(.18,.8,.2,1),background .2s,box-shadow .3s;border-color:#c5a6a9;box-shadow:0 2px 0 #c6a6a50b;backface-visibility:hidden}
.guest .choice:hover .choice-content{transform:perspective(900px) rotateX(2deg) rotateY(-3deg) translateX(4px);box-shadow:6px 7px 0 #9636430d}
.guest .choice input:checked+.choice-content{transform:perspective(900px) translateZ(10px) rotateY(-1deg);box-shadow:3px 5px 0 #96364318}
.guest .choice input:checked+.choice-content .letter{animation:choice-flip .6s cubic-bezier(.18,.8,.2,1)}
.choice-emoji{font-size:21px;line-height:1;width:27px;text-align:center;filter:drop-shadow(0 3px 2px #66323e13);margin-left:auto;transition:transform .35s}
.guest .tick{margin-left:0}.choice:hover .choice-emoji{transform:translateY(-3px) rotate(-12deg)}.choice input:checked+.choice-content .choice-emoji{animation:emoji-hop .7s ease both}
.guest .terms li{animation:term-arrive .6s both;animation-delay:calc(var(--order,0)*140ms)}
.guest .date-slot{animation:date-arrive .55s cubic-bezier(.18,.8,.2,1) both}
.guest .date-slot.is-complete{border-radius:8px;box-shadow:0 8px 12px -12px #96364355}
.guest .joke-reveal{animation:joke-pop .7s cubic-bezier(.2,1.4,.35,1) both}
.guest .error:not([hidden]){animation:error-nudge .35s ease both}
.guest .summary{white-space:pre-line}
.scene{position:relative;overflow:visible;perspective:1000px}
.scene-tilt{position:absolute;inset:0;transform-style:preserve-3d;transform:rotateX(var(--scene-x)) rotateY(var(--scene-y));transition:transform .7s cubic-bezier(.15,.75,.2,1)}
.scene-aura{position:absolute;left:-25px;top:-10px;width:350px;height:350px;border-radius:50%;background:radial-gradient(ellipse,#edc8bb30 0%,#edc8bb0c 52%,transparent 70%);transform:translateZ(-70px);animation:aura-breathe 8s ease-in-out infinite}
.stage{position:absolute;inset:0;opacity:0;transform:translateX(35px) rotateY(-28deg) scale(.82);transform-style:preserve-3d;transition:opacity .6s ease,transform .85s cubic-bezier(.16,.8,.2,1);pointer-events:none;visibility:hidden}
.stage.is-active{opacity:1;transform:translateX(0) rotateY(0) scale(1);visibility:visible;z-index:2}
.stage:not(.is-active) *{animation-play-state:paused!important}
.scene-caption{font-size:10px;letter-spacing:.55px;transition:opacity .4s}
.scene .scene-shadow{bottom:40px}
.stage-letter .envelope-float{animation:envelope-waltz 7s ease-in-out infinite}
.stage-letter .envelope{transform:rotateY(-20deg) rotateX(10deg) rotateZ(-8deg);animation:envelope-turn 11s ease-in-out infinite}
.stage-letter .envelope-flap{animation:envelope-open 11s ease-in-out infinite;transform:rotateX(165deg) translateZ(-2px)}
.stage-letter .love-letter{animation:letter-dance 11s ease-in-out infinite;transform:translateZ(1px) translateY(-70px) rotateZ(4deg)}
.stage-letter .wax-seal{animation:seal-glow 5s ease-in-out infinite}
.stage-letter .heart-one{animation:heart-orbit-one 7s ease-in-out infinite}.stage-letter .heart-two{animation:heart-orbit-two 8s ease-in-out infinite}.stage-letter .heart-three{animation:heart-orbit-three 6s ease-in-out infinite}
.stage-letter .orbit-one{animation:orbit-roll 24s linear infinite}.stage-letter .orbit-two{animation:orbit-roll-reverse 30s linear infinite}
.date-orbit{position:absolute;inset:28px 0 48px;border:1px dashed #dac4b166;border-radius:50%;transform:rotateX(28deg) rotateZ(-24deg);animation:orbit-roll 25s linear infinite}
.date-orbit i{position:absolute;width:7px;height:7px;border-radius:50%;background:var(--soft-rose);box-shadow:0 0 0 5px #e9bbb114}.date-orbit i:nth-child(1){left:10px;top:70px}.date-orbit i:nth-child(2){right:30px;top:20px;background:var(--gold)}.date-orbit i:nth-child(3){right:45px;bottom:15px}
.calendar-float{position:absolute;left:39px;top:54px;width:198px;height:215px;transform-style:preserve-3d;animation:calendar-float 6.5s ease-in-out infinite}
.calendar-3d{position:relative;height:100%;width:100%;transform:rotateY(-20deg) rotateX(9deg) rotateZ(-8deg);transform-style:preserve-3d}
.calendar-sheet{position:absolute;inset:12px -8px -8px 6px;background:#e6d5c2;border-radius:11px;transform:translateZ(-7px);box-shadow:3px 3px 0 #d2bea6}
.calendar-sheet.sheet-two{inset:7px -4px -4px 3px;background:#f1e3d5;transform:translateZ(-3px)}
.calendar-face{position:absolute;inset:0;background:linear-gradient(120deg,#fffdf8,#f6eada);border-radius:10px;box-shadow:0 14px 25px #64333d17;overflow:visible;text-align:center;transform:translateZ(3px)}
.calendar-month{height:48px;display:grid;place-items:center;background:linear-gradient(120deg,var(--red),var(--dark));border-radius:9px 9px 0 0;color:#fff5ee;font-size:11px;font-weight:600;letter-spacing:1.7px;padding-top:7px}
.calendar-binding{position:absolute;top:-14px;left:35px;right:35px;display:flex;justify-content:space-between;z-index:2}
.calendar-binding i{width:12px;height:28px;border:4px solid #c39a62;border-top-color:#efd5a5;border-right-color:#9b7139;border-radius:8px;box-shadow:2px 2px 0 #70492e22}
.calendar-face strong{display:block;font:76px/1.25 Georgia,serif;color:var(--red);padding-top:9px;transform:translateZ(14px)}
.calendar-face.date-changed strong{animation:calendar-number .6s cubic-bezier(.2,.9,.2,1)}
.calendar-day{display:block;font:italic 16px Georgia,serif;color:#a68375}.calendar-heart{position:absolute;right:13px;bottom:9px;font-size:19px;color:#d6a1a0}
.clock-3d{position:absolute;right:0;top:164px;width:83px;height:83px;border:6px solid #d2b590;border-left-color:#f0d9b8;border-bottom-color:#a68359;border-radius:50%;background:radial-gradient(circle at 30% 20%,#fffdf6,#f0e0c6);transform:rotateY(-18deg) rotateZ(13deg);box-shadow:3px 4px 0 #957047,8px 12px 18px #75483522;animation:clock-bob 5s ease-in-out infinite}
.clock-dot{position:absolute;inset:6px;border:1px dashed #cfb794;border-radius:50%}.clock-3d b{position:absolute;top:31px;left:31px;width:9px;height:9px;border-radius:50%;background:var(--red)}
.clock-hand{position:absolute;bottom:50%;left:calc(50% - 1px);width:3px;border-radius:4px;transform-origin:50% 100%;background:var(--red)}.hour-hand{height:19px;transform:rotate(var(--hours,310deg));transition:transform 1s}.minute-hand{height:27px;width:2px;transform:rotate(var(--minutes,55deg));transition:transform 1s}.second-hand{height:29px;width:1px;background:#c4a064;animation:clock-tick 20s linear infinite}
.date-star{position:absolute;color:var(--gold);font-size:22px;animation:sparkle 4s ease-in-out infinite}.star-a{left:8px;top:60px}.star-b{right:9px;top:48px;font-size:32px;animation-delay:-2s}
.idea-orbit{position:absolute;inset:15px 0 42px;transform-style:preserve-3d;animation:ideas-orbit 20s linear infinite}
.idea-moon{position:absolute;width:55px;height:57px;display:grid;place-items:center;border:1px solid #ead6c8;background:linear-gradient(135deg,#fffdf8,#f4e3d5);border-radius:16px;font-size:27px;box-shadow:3px 5px 0 #d5b5a6,7px 10px 14px #64333d0e;backface-visibility:visible}
.moon-one{left:4px;top:35px;transform:rotateZ(-18deg) rotateY(20deg)}.moon-two{right:0;top:10px;transform:rotateZ(16deg) rotateY(-20deg)}.moon-three{left:-2px;bottom:5px;transform:rotateZ(14deg)}.moon-four{right:0;bottom:1px;transform:rotateZ(-12deg)}
.ticket-float{position:absolute;left:61px;top:45px;width:181px;height:239px;animation:ticket-bob 6s ease-in-out infinite;transform-style:preserve-3d}
.idea-ticket{position:relative;height:100%;padding:20px 15px 0;text-align:center;border:1px solid #dfbfc0;border-radius:16px;background:linear-gradient(130deg,#fffaf3,var(--selected));transform:rotateY(-20deg) rotateZ(-7deg);box-shadow:2px 3px 0 #cba4a5,4px 6px 0 #cba4a5,12px 17px 25px #64333d16;transform-style:preserve-3d}
.ticket-eyebrow{font-size:7px;letter-spacing:1.6px;color:var(--red);display:block}.ticket-icon{font-size:62px;line-height:1;display:block;margin:21px auto 12px;filter:drop-shadow(3px 6px 2px #64333d16);transform:translateZ(28px);animation:ticket-icon-float 4s ease-in-out infinite}
.idea-ticket strong{font:17px/1.15 Georgia,serif;min-height:38px;display:block;color:var(--red);overflow-wrap:anywhere}
.ticket-perforation{display:block;border-top:1px dashed #c19c9f;margin:13px -15px 0;position:relative}.ticket-perforation:before,.ticket-perforation:after{content:"";position:absolute;top:-6px;width:12px;height:12px;border:1px solid #dfbfc0;background:var(--bg);border-radius:50%}.ticket-perforation:before{left:-6px}.ticket-perforation:after{right:-6px}
.ticket-bottom{display:flex;align-items:center;justify-content:space-between;color:var(--red);font-size:7px;letter-spacing:1px;padding-top:12px}.ticket-bottom b{font-size:17px;font-weight:400}
.idea-ticket.idea-changed{animation:ticket-wiggle .55s cubic-bezier(.2,.8,.2,1)}
.contract-float{position:absolute;left:53px;top:48px;width:190px;height:224px;transform-style:preserve-3d;animation:contract-float 7s ease-in-out infinite}
.contract-3d{height:100%;padding:25px 21px 15px;background:linear-gradient(135deg,#fffef9,#f3e6d6);border:1px solid #ead6c6;border-radius:4px;box-shadow:3px 3px 0 #ddc6b2,6px 6px 0 #e9d8c7,14px 20px 25px #64333d16;transform:rotateY(-18deg) rotateZ(-10deg);transform-style:preserve-3d}
.contract-title{font-size:7px;letter-spacing:1.1px;color:#ad8b79;display:block;text-align:center}.contract-3d>strong{display:block;text-align:center;font:italic 20px/1.3 Georgia,serif;color:var(--red);margin:6px -8px 20px}
.contract-line{display:flex;align-items:center;gap:9px;margin:12px 0}.contract-line i{font-style:normal;color:var(--red);font-size:12px}.contract-line span{height:2px;flex:1;background:#e0cdbf}.contract-line:nth-of-type(2) span{max-width:83px}.contract-signature{font:italic 16px Georgia,serif;color:#a5816d;display:block;margin-top:19px;transform:rotate(-5deg)}
.contract-stamp{position:absolute;bottom:7px;right:-19px;width:73px;height:73px;border:3px double var(--red);border-radius:50%;color:var(--red);display:grid;place-content:center;text-align:center;font-size:8px;letter-spacing:1px;line-height:1.3;transform:translateZ(9px) rotate(-17deg);opacity:.75;animation:stamp-arrive 5s ease-in-out infinite}.contract-stamp b{font-size:15px;font-weight:400}
.fountain-pen{position:absolute;left:9px;top:153px;width:143px;height:13px;background:linear-gradient(#994b58,#4d2835 50%,#783548);border-radius:6px 1px 1px 6px;transform:rotate(-54deg);box-shadow:0 3px 0 #47253533,0 7px 12px #64333d1a;animation:pen-dance 6s ease-in-out infinite}.fountain-pen:after{content:"";position:absolute;right:-26px;top:0;border-left:26px solid #c5a16d;border-top:6px solid transparent;border-bottom:7px solid transparent}.fountain-pen span{position:absolute;right:14px;top:0;bottom:0;width:7px;background:linear-gradient(#edd5a3,#a58046)}.contract-star{right:0;top:27px;font-size:29px}
.ring-halo{position:absolute;left:23px;top:24px;width:254px;height:254px;border:1px solid #cbae7e35;border-radius:50%;transform:rotateX(28deg);animation:halo-breathe 6s ease-in-out infinite}.halo-two{inset:42px auto auto 42px;width:216px;height:216px;animation-delay:-2s}.halo-three{inset:61px auto auto 61px;width:178px;height:178px;border-style:dashed;animation:orbit-roll 24s linear infinite}
.grand-ring-float{position:absolute;left:77px;top:100px;width:151px;height:151px;transform-style:preserve-3d;animation:grand-ring-float 6s ease-in-out infinite}
.grand-ring{position:relative;width:151px;height:151px;border:15px solid #c59b54;border-top-color:#f0d6a0;border-left-color:#e3ba72;border-right-color:#a87e3d;border-radius:50%;box-shadow:2px 1px 0 #967039,4px 2px 0 #967039,6px 3px 0 #967039,12px 19px 26px #8a663c24,inset 2px 3px 3px #906e3233;transform:rotateY(-26deg) rotateZ(-16deg);transform-style:preserve-3d;animation:grand-ring-turn 9s ease-in-out infinite}
.grand-ring-inner{position:absolute;inset:-6px;border:2px solid #fff5d86b;border-radius:50%}
.grand-diamond{position:absolute;left:29px;top:-54px;width:67px;height:62px;transform:translateZ(15px) rotate(5deg);filter:drop-shadow(3px 5px 1px #8b895744)}
.grand-diamond i{position:absolute;display:block;inset:0}.gem-top{background:linear-gradient(125deg,#fffef5,#d5edf0);clip-path:polygon(20% 0,80% 0,100% 35%,0 35%)}.gem-left{background:linear-gradient(115deg,#e8f7fa,#b0d2db);clip-path:polygon(0 35%,46% 35%,50% 100%)}.gem-right{background:linear-gradient(150deg,#fafff9,#c8e4e9);clip-path:polygon(46% 35%,100% 35%,50% 100%)}.gem-bottom{background:#d9f1ee;clip-path:polygon(20% 0,46% 35%,80% 0)}.gem-glint{position:absolute;right:-12px;top:-15px;color:#fffef5;font-size:31px;text-shadow:0 0 12px #e2c389;animation:gem-glint 3s ease-in-out infinite}
.ring-spark{position:absolute;color:#be9b62;animation:sparkle 4s ease-in-out infinite}.ring-spark-one{left:29px;top:107px;font-size:33px}.ring-spark-two{right:12px;top:79px;font-size:46px;animation-delay:-2s}.ring-spark-three{right:23px;bottom:61px;font-size:24px;animation-delay:-3s}
.success-heart{position:absolute;color:var(--red);font-size:148px;line-height:1;text-shadow:-2px -3px #f4bcb6,2px 2px #8e2b40,4px 4px #8e2b40,6px 6px #762338,8px 8px #762338,15px 20px 20px #66323e22;transform-style:preserve-3d}
.heart-front{left:91px;top:94px;transform:rotateY(-20deg) rotateZ(8deg);animation:success-heartbeat 4s ease-in-out infinite}.heart-back{font-size:88px;left:28px;top:69px;color:#d29a98;transform:rotateY(25deg) rotateZ(-18deg);animation:success-heart-back 6s ease-in-out infinite}
.success-orbit{position:absolute;left:0;top:35px;width:300px;height:235px;border:1px dashed #d5b8a966;border-radius:50%;animation:orbit-roll 18s linear infinite}.orbit-b{transform:rotateY(50deg);animation-direction:reverse;opacity:.5}
.flying-plane{position:absolute;width:68px;height:38px;left:180px;top:48px;transform-style:preserve-3d;animation:plane-loop 8s ease-in-out infinite;filter:drop-shadow(2px 5px 3px #6f444315)}
.flying-plane i{position:absolute;inset:0;background:#fffdf7;clip-path:polygon(0 22%,100% 0,27% 100%,22% 48%);box-shadow:0 3px 2px #c4a495}
.flying-plane b{position:absolute;inset:0;background:linear-gradient(150deg,#f2d6c6,#fffdf5);clip-path:polygon(22% 48%,100% 0,45% 66%,27% 100%)}.plane-trail{position:absolute;left:24px;top:26px;width:235px;height:220px;border:1px dashed #bb928466;border-right-color:transparent;border-bottom-color:transparent;border-radius:50%;transform:rotate(-35deg);animation:trail-fade 8s ease-in-out infinite}
.reactions{position:fixed;inset:0;pointer-events:none;z-index:7;overflow:hidden;perspective:700px}.reaction-particle{position:absolute;left:var(--x);top:var(--y);color:var(--particle-color,var(--red));font-size:var(--particle-size,17px);line-height:1;transform-origin:center;animation:reaction-burst var(--life,1s) cubic-bezier(.13,.7,.2,1) both;animation-delay:var(--wait,0s);text-shadow:1px 2px #96364315;will-change:transform,opacity}
.reaction-ring{position:absolute;left:var(--x);top:var(--y);width:18px;height:18px;border:1px solid var(--red);border-radius:50%;animation:tap-ring .65s ease-out both}
.guest .confetti i{animation-timing-function:cubic-bezier(.25,.15,.65,1);border-radius:2px}
.guest .confetti i:nth-child(4n){width:11px;height:11px;clip-path:polygon(50% 100%,0 40%,0 15%,20% 0,50% 22%,80% 0,100% 15%,100% 40%);background:var(--red);border-radius:0}
@keyframes ambient-rise{0%{transform:translate3d(0,0,0) rotateY(0) rotateZ(-15deg);opacity:0}10%,80%{opacity:var(--alpha,.09)}100%{transform:translate3d(var(--drift,40px),-125dvh,0) rotateY(240deg) rotateZ(50deg);opacity:0}}
@keyframes ambient-light{to{opacity:.55;transform:scale(1.12) translateX(-2%)}}
@keyframes small-heartbeat{0%,78%,100%{transform:scale(1)}82%{transform:scale(1.18)}90%{transform:scale(.95)}95%{transform:scale(1.12)}}
@keyframes button-shine{0%,65%,100%{left:-80%;opacity:0}70%{opacity:1}87%{left:150%;opacity:0}}
@keyframes soft-arrive{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes headline-arrive{from{opacity:0;transform:translateY(23px) rotateX(8deg);filter:blur(3px)}to{opacity:1;transform:translateY(0) rotateX(0);filter:blur(0)}}
@keyframes question-turn{from{opacity:0;transform:translate3d(18px,13px,-40px) rotateY(-7deg) rotateX(2deg)}to{opacity:1;transform:translate3d(0,0,0) rotateY(0) rotateX(0)}}
@keyframes question-return{from{opacity:0;transform:translate3d(-18px,8px,-30px) rotateY(6deg)}to{opacity:1;transform:translate3d(0,0,0) rotateY(0)}}
@keyframes choice-arrive{from{opacity:0;transform:translateY(18px) rotateX(-9deg)}to{opacity:1;transform:translateY(0) rotateX(0)}}
@keyframes choice-flip{0%{transform:rotateY(0)}65%{transform:rotateY(380deg)}100%{transform:rotateY(360deg)}}
@keyframes emoji-hop{0%,100%{transform:translateY(0) rotate(0)}35%{transform:translateY(-10px) rotate(-14deg)}65%{transform:translateY(-3px) rotate(9deg)}}
@keyframes term-arrive{from{opacity:0;transform:translateX(15px) rotateZ(1deg)}to{opacity:1;transform:translateX(0) rotateZ(0)}}
@keyframes date-arrive{from{opacity:0;transform:translateY(16px) rotateX(-10deg)}to{opacity:1;transform:translateY(0) rotateX(0)}}
@keyframes joke-pop{from{opacity:0;transform:translateY(12px) rotate(-2deg) scale(.95)}to{opacity:1;transform:translateY(0) rotate(0) scale(1)}}
@keyframes error-nudge{0%,100%{transform:translateX(0)}25%{transform:translateX(-4px)}75%{transform:translateX(4px)}}
@keyframes aura-breathe{50%{transform:translateZ(-70px) scale(1.12);opacity:.55}}
@keyframes envelope-waltz{0%,100%{transform:translateY(2px) rotate(-2deg)}50%{transform:translateY(-16px) rotate(3deg)}}
@keyframes envelope-turn{0%,100%{transform:rotateY(-20deg) rotateX(10deg) rotateZ(-8deg)}45%,65%{transform:rotateY(2deg) rotateX(5deg) rotateZ(-4deg)}}
@keyframes envelope-open{0%,100%{transform:rotateX(5deg) translateZ(9px)}18%,85%{transform:rotateX(165deg) translateZ(-2px)}}
@keyframes letter-dance{0%,100%{transform:translateZ(1px) translateY(0) rotateZ(1deg)}20%{transform:translateZ(1px) translateY(-78px) rotateZ(4deg)}45%,65%{transform:translateZ(1px) translateY(-96px) rotateZ(-3deg)}85%{transform:translateZ(1px) translateY(-72px) rotateZ(3deg)}}
@keyframes seal-glow{50%{filter:brightness(1.13);transform:translateZ(15px) rotate(5deg)}}
@keyframes heart-orbit-one{0%,100%{transform:translate3d(0,0,25px) rotateY(-25deg) rotate(-13deg)}50%{transform:translate3d(14px,-17px,45px) rotateY(35deg) rotate(9deg)}}
@keyframes heart-orbit-two{0%,100%{transform:translate3d(0,0,0) rotateY(30deg) rotate(12deg)}50%{transform:translate3d(-8px,12px,18px) rotateY(-28deg) rotate(-10deg)}}
@keyframes heart-orbit-three{0%,100%{transform:translate3d(0,0,-10px) rotateY(20deg)}50%{transform:translate3d(14px,-12px,10px) rotateY(65deg) rotate(15deg)}}
@keyframes orbit-roll{from{transform:rotateX(42deg) rotateZ(-25deg)}to{transform:rotateX(42deg) rotateZ(335deg)}}
@keyframes orbit-roll-reverse{from{transform:rotateY(55deg) rotateZ(28deg)}to{transform:rotateY(55deg) rotateZ(-332deg)}}
@keyframes calendar-float{0%,100%{transform:translateY(0) rotate(0)}50%{transform:translateY(-12px) rotate(3deg)}}
@keyframes calendar-number{0%{opacity:.2;transform:rotateX(-80deg) translateY(10px)}100%{opacity:1;transform:rotateX(0) translateY(0)}}
@keyframes clock-bob{0%,100%{transform:rotateY(-18deg) rotateZ(13deg) translateY(0)}50%{transform:rotateY(7deg) rotateZ(6deg) translateY(-8px)}}
@keyframes clock-tick{to{transform:rotate(360deg)}}
@keyframes ideas-orbit{0%,100%{transform:rotateY(-9deg) rotateZ(-4deg)}50%{transform:rotateY(12deg) rotateZ(8deg)}}
@keyframes ticket-bob{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-12px) rotate(3deg)}}
@keyframes ticket-icon-float{0%,100%{transform:translateZ(28px) rotateY(-10deg) rotate(-7deg)}50%{transform:translateZ(36px) translateY(-5px) rotateY(20deg) rotate(7deg)}}
@keyframes ticket-wiggle{0%,100%{transform:rotateY(-20deg) rotateZ(-7deg)}35%{transform:rotateY(-3deg) rotateZ(0) scale(1.04)}65%{transform:rotateY(-27deg) rotateZ(-10deg)}}
@keyframes contract-float{0%,100%{transform:translateY(0) rotate(-2deg)}50%{transform:translateY(-10px) rotate(3deg)}}
@keyframes stamp-arrive{0%,65%,100%{transform:translateZ(9px) rotate(-17deg) scale(1);opacity:.75}78%{transform:translateZ(18px) rotate(-10deg) scale(1.09);opacity:.9}85%{transform:translateZ(5px) rotate(-19deg) scale(.96)}}
@keyframes pen-dance{0%,100%{transform:rotate(-54deg) translateY(0)}50%{transform:rotate(-44deg) translateY(-10px)}}
@keyframes halo-breathe{0%,100%{transform:rotateX(28deg) scale(1);opacity:.8}50%{transform:rotateX(35deg) scale(1.07);opacity:.4}}
@keyframes grand-ring-float{0%,100%{transform:translateY(0)}50%{transform:translateY(-16px)}}
@keyframes grand-ring-turn{0%,100%{transform:rotateY(-26deg) rotateZ(-16deg)}50%{transform:rotateY(32deg) rotateZ(4deg)}}
@keyframes gem-glint{0%,30%,100%{opacity:0;transform:scale(.2) rotate(0)}45%,55%{opacity:1;transform:scale(1) rotate(80deg)}70%{opacity:0;transform:scale(.2) rotate(120deg)}}
@keyframes success-heartbeat{0%,100%{transform:rotateY(-20deg) rotateZ(8deg) scale(1)}12%{transform:rotateY(-10deg) rotateZ(5deg) scale(1.07)}24%{transform:rotateY(-20deg) rotateZ(8deg) scale(1)}36%{transform:rotateY(-12deg) rotateZ(7deg) scale(1.04)}65%{transform:rotateY(15deg) rotateZ(10deg) translateY(-7px)}}
@keyframes success-heart-back{0%,100%{transform:rotateY(25deg) rotateZ(-18deg) translateY(0)}50%{transform:rotateY(-15deg) rotateZ(-8deg) translateY(-12px)}}
@keyframes plane-loop{0%,100%{transform:translate3d(-125px,115px,-30px) rotate(-24deg) rotateY(20deg);opacity:0}12%{opacity:1}40%{transform:translate3d(10px,-20px,35px) rotate(-8deg) rotateY(-20deg);opacity:1}65%{transform:translate3d(75px,20px,-20px) rotate(45deg) rotateY(-45deg);opacity:0}85%{opacity:0}}
@keyframes trail-fade{0%,65%,100%{opacity:0}20%,48%{opacity:.7}}
@keyframes reaction-burst{0%{opacity:0;transform:translate(-50%,-50%) scale(.3) rotate(0)}12%{opacity:1}100%{opacity:0;transform:translate(calc(-50% + var(--dx)),calc(-50% + var(--dy))) rotateX(var(--spin-x,0deg)) rotateY(var(--spin-y,0deg)) rotateZ(var(--spin,40deg)) scale(var(--end-scale,.45))}}
@keyframes tap-ring{from{opacity:.5;transform:translate(-50%,-50%) scale(.3)}to{opacity:0;transform:translate(-50%,-50%) scale(4.5)}}
@media(min-width:761px){
  .guest .ring-scene{display:none}.guest[data-step="4"] .scene{transform:scale(1.08)}
  .guest[data-step="2"] .guest-header{height:64px}
  .guest[data-step="2"] .guest-main{min-height:calc(100dvh - 134px);padding-top:12px;padding-bottom:24px}
  .guest[data-step="2"] h2{font-size:42px;margin-bottom:14px}
  .guest[data-step="2"] .support{margin-bottom:20px}
  .guest[data-step="2"] .options{gap:7px;margin-bottom:22px}
  .guest[data-step="2"] .choice-content{min-height:47px;padding-top:9px;padding-bottom:9px}
  .guest[data-step="2"] .choice-name{font-size:17px}
}
@media(max-width:1000px) and (min-width:761px){.guest[data-step="4"] .scene{transform:scale(.9)}}
@media(max-width:760px){
  .guest .scene,.guest:not([data-step="0"]) .scene{display:block;align-self:end;max-width:100%;width:300px;height:148px;transform:scale(.48);transform-origin:top right;margin:-15px 0 -48px}
  .guest .scene-caption{display:none}.guest .scene-aura{opacity:.6}.guest .ring-scene{display:none}
  .guest .invitation-layout{gap:0}.guest[data-step="4"] .scene{height:167px;margin-bottom:-42px}.guest[data-step="5"] .scene{height:160px;margin-bottom:-40px}
  .guest .choice-content{min-height:49px}.choice-emoji{font-size:20px;width:24px}.guest .choice-name{font-size:16px}
  .guest[data-step="2"] .scene{height:125px;margin-bottom:-48px;transform:scale(.4)}
  .guest .stage{transition-duration:.45s}.ambient-mote:nth-child(n+11){display:none}
}
@media(max-width:430px){.guest .scene{margin-top:-25px}.guest .terms{font-size:20px}.guest .joke{min-height:74px}}
html[data-motion=off] .scene-tilt{transform:none!important}
html[data-motion=off] .reaction-particle,html[data-motion=off] .reaction-ring{display:none}
html[data-motion=off] .stage-letter .love-letter{transform:translateZ(1px) translateY(-70px) rotateZ(4deg)}
html[data-page-hidden=true] .guest *,html[data-page-hidden=true] .guest *:before{animation-play-state:paused!important}
@media(prefers-reduced-motion:reduce){.scene-tilt{transform:none!important}.reaction-particle,.reaction-ring{display:none}.stage-letter .love-letter{transform:translateZ(1px) translateY(-70px) rotateZ(4deg)}}
