:root{--lilac:#d9c7f1;--lilac-light:#ecdef8;--cream:#fffaf0;--plum:#302039;--muted:#644f70;--coral:#f46683;--coral-dark:#e94d70;--shadow:0 24px 72px rgba(79,48,115,.19);font-family:Arial,Helvetica,sans-serif;color:var(--plum)}
*{box-sizing:border-box}html{min-height:100%;background:var(--lilac)}body{margin:0;min-width:320px}button,input{font:inherit}button{cursor:pointer}button:focus-visible,input:focus-visible{outline:3px solid #7a53b6;outline-offset:4px}[hidden]{display:none!important}
.scene{position:relative;isolation:isolate;display:flex;align-items:center;min-height:100svh;overflow:hidden;background:radial-gradient(circle at 62% 52%,#eee0fc 0,#dccaf3 52%,#cbb5e9 100%);padding:64px clamp(24px,6.5vw,112px) 145px}
.scene:before{content:"";position:absolute;inset:auto -8% -140px;background:#d8bcec;height:260px;border-radius:50%;z-index:-1;opacity:.55}
.sky-spark{position:absolute;width:30px;fill:var(--cream);z-index:0;animation:twinkle 4s ease-in-out infinite}.sky-spark-one{top:12%;left:61%}.sky-spark-two{top:22%;right:7%;width:38px;animation-delay:1.2s}.sky-spark-three{bottom:23%;left:49%;width:19px;animation-delay:2.1s}
.progress{position:absolute;left:50%;top:26px;transform:translateX(-50%);z-index:10;display:flex;gap:8px}.progress i{display:block;width:6px;height:6px;border-radius:50%;background:#fff9f0;opacity:.75;transition:width .5s ease,background .5s}.progress i.is-current{width:23px;border-radius:9px;background:var(--coral);opacity:1}
.story-art{position:absolute;z-index:1;width:min(48vw,700px);right:3%;top:50%;transform:translateY(-45%);pointer-events:none;transition:opacity .55s,transform .7s}.art-svg{width:100%;height:auto;overflow:visible;filter:drop-shadow(0 15px 12px rgba(96,68,143,.07))}.envelope-scene{transform-origin:50% 65%;animation:envelopeFloat 5s ease-in-out infinite}.letter{transition:transform 1.1s cubic-bezier(.2,.8,.2,1);transform:translateY(47px)}.envelope-flap{transition:transform .7s ease;transform-origin:50% 45%}.floating-heart{transform-box:fill-box;transform-origin:center;animation:heartFloat 4s ease-in-out infinite}.floating-heart-two{animation-delay:-1.5s}.floating-heart-three{animation-delay:-2.4s}.art-star{transform-box:fill-box;transform-origin:center;animation:twinkle 4s ease-in-out infinite}.art-star-two{animation-delay:-1.3s}.art-star-three{animation-delay:-2.5s}.orbit-one{stroke-dashoffset:0;animation:orbitMove 13s linear infinite}.orbit-two{animation:orbitMove 19s linear infinite reverse}.scene[data-current=lead] .letter,.scene[data-current=question] .letter{transform:translateY(-110px) rotate(-5deg)}.scene[data-current=lead] .envelope-flap,.scene[data-current=question] .envelope-flap{transform:translateY(-8px)}.scene[data-current=activity] .story-art,.scene[data-current=day] .story-art,.scene[data-current=time] .story-art,.scene[data-current=final] .story-art{opacity:0;transform:translate(45px,-42%)}
.stage{position:relative;z-index:2;width:100%;max-width:1440px;margin:0 auto;animation:stageIn .7s cubic-bezier(.2,.8,.2,1) both}.stage:not(.stage-options):not(.stage-final){background:none;box-shadow:none}.stage-inner{width:min(54%,720px)}.stage h1,.stage h2,.stage h3{font-family:Georgia,'Times New Roman',serif;font-weight:700;letter-spacing:-.045em}.stage h1{font-size:clamp(58px,6.7vw,112px);line-height:1.03;margin:0 0 27px}.stage h2{font-size:clamp(52px,5.2vw,86px);line-height:1.08;margin:0 0 30px}.stage p{font-size:clamp(21px,2vw,31px);line-height:1.38}.stage-intro .lead{margin:0 0 40px}.stage-intro .little-mark,.stage-intro .flourish,.stage-lead .little-mark,.stage-lead .flourish,.stage-question .little-mark{display:none}.stage-lead p{margin:0 0 21px}.stage-lead .button{margin-top:30px}
.button{border:0;border-radius:999px;min-height:78px;padding:17px 52px;font-size:clamp(22px,2.2vw,32px);font-weight:700;line-height:1.2;white-space:nowrap;display:inline-flex;align-items:center;justify-content:center;gap:22px;transition:transform .35s cubic-bezier(.2,1.5,.4,1),box-shadow .3s,background .3s,opacity .3s}.button-primary{color:#fff;background:var(--coral);box-shadow:0 15px 28px rgba(237,84,121,.25)}.button-primary:hover:not(:disabled){transform:translateY(-5px) scale(1.03);background:var(--coral-dark);box-shadow:0 22px 32px rgba(237,84,121,.29)}.button-primary:active:not(:disabled){transform:scale(.96)}.button-primary:disabled{cursor:not-allowed;opacity:.5;box-shadow:none}.button span[aria-hidden]{font-size:1.1em;font-weight:400}
.stage-question .stage-inner{width:min(55%,730px)}.answer-arena{height:175px;display:flex;gap:22px;align-items:flex-start;position:relative;padding-top:13px}.yes-button{position:relative;transform-origin:center;z-index:2}.yes-button.has-eyes{padding-top:38px;transform:scale(1.17)}.yes-button.has-eyes:hover{transform:translateY(-5px) scale(1.21)}.button-eyes{position:absolute;top:9px;left:50%;transform:translateX(-50%);display:flex;gap:13px;opacity:0;transition:opacity .4s}.has-eyes .button-eyes{opacity:1}.button-eyes i{position:relative;display:block;width:16px;height:20px;border-radius:50%;background:white}.button-eyes i:after{content:"";position:absolute;top:var(--eye-y,8px);left:var(--eye-x,6px);width:6px;height:7px;border-radius:50%;background:#422549;transition:top .12s,left .12s}.button-no{position:relative;min-height:78px;padding:15px 34px;color:var(--muted);background:#fffaf0;border:2px solid #fff;border-radius:999px;box-shadow:0 8px 20px rgba(97,63,140,.12);transition:transform .32s cubic-bezier(.2,1.3,.4,1),opacity .45s}.button-no.is-gone{opacity:0;pointer-events:none;transform:translate(110vw,-100vh) rotate(35deg)!important}.tease-message{min-height:1.5em;color:#9c436d;font-size:clamp(19px,1.8vw,25px)!important;margin:0;font-style:italic}
.stage-options{width:min(910px,100%);background:var(--cream);border-radius:30px;padding:clamp(28px,4.4vw,58px);box-shadow:var(--shadow)}.stage-options:before,.stage-final:before{content:"";position:absolute;inset:10px;border:2px solid #eadcf2;border-radius:24px;pointer-events:none}.stage-options .stage-inner{width:100%;position:relative}.stage-options .little-mark{display:none}.stage-options h2{font-size:clamp(37px,4vw,60px);margin:0 0 14px}.stage-options p{font-size:22px;margin:0 0 7px;color:var(--muted)}.stage-options h3{font-size:clamp(29px,3vw,42px);margin:0 0 24px}.stage-options .button{min-height:62px;font-size:21px;margin-top:25px;padding:15px 32px}.option-grid{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:14px}.option-card{min-height:92px;padding:18px 22px;background:#f6eefb;border:2px solid transparent;border-radius:20px;display:flex;align-items:center;text-align:left;gap:16px;font-size:19px;color:var(--plum);transition:transform .3s,background .3s,border-color .3s,box-shadow .3s}.option-card:hover,.day-card:hover,.time-card:hover{transform:translateY(-4px)}.option-card[aria-pressed=true],.day-card[aria-pressed=true],.time-card[aria-pressed=true]{background:#ffe9ef;border-color:var(--coral);box-shadow:0 11px 20px rgba(241,101,131,.12)}.option-icon{font-size:32px;flex:none}.option-check{margin-left:auto;color:var(--coral);opacity:0;transform:scale(.3);transition:opacity .25s,transform .35s}.option-card[aria-pressed=true] .option-check{opacity:1;transform:scale(1)}.day-grid,.time-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:14px;margin:31px 0 17px}.day-card,.time-card{background:#f6eefb;border:2px solid transparent;border-radius:20px;padding:20px 10px;min-height:102px;color:var(--plum);display:flex;flex-direction:column;align-items:center;justify-content:center;gap:8px;transition:transform .3s,background .3s,border-color .3s,box-shadow .3s}.day-card strong{font-size:22px}.day-card span{font-size:17px;color:var(--muted)}.time-card{min-height:92px;font-family:Georgia,serif;font-size:32px}.other-day{border:0;background:none;color:#ba4d80;text-decoration:underline;text-underline-offset:5px;font-size:19px;padding:8px 2px}.calendar-wrap{display:flex;gap:12px;align-items:center;margin-top:15px}.calendar-wrap label,.time-label{font-size:18px;color:var(--muted)}.calendar-wrap input,.time-input{border:2px solid #d5bdea;border-radius:14px;background:white;padding:13px 17px;color:var(--plum);font-size:20px}.time-label{display:block;margin:26px 0 10px}.time-input{width:100%;max-width:330px}.input-error{font-size:15px!important;min-height:20px;color:#c83362!important;margin:7px 0 0!important}
.stage-final{width:min(1110px,100%);background:var(--cream);border-radius:28px;box-shadow:var(--shadow);padding:clamp(29px,4vw,53px);transform:rotate(-1deg)}.stage-final .stage-inner{width:100%;display:grid;grid-template-columns:minmax(230px,38%) 1fr;gap:clamp(28px,5vw,70px);align-items:center}.photo-wrap{position:relative;width:100%;max-width:330px;margin:0 auto;transform:translateY(-95vh) rotate(-12deg);filter:drop-shadow(0 16px 16px rgba(58,33,66,.24))}.stage-final.is-active .photo-wrap{animation:photoDrop 1.2s .25s cubic-bezier(.17,1.24,.4,1) forwards}.couple-photo{width:100%;display:block;border:9px solid white;border-bottom-width:18px;border-radius:2px;background:white}.wax-stamp{position:absolute;right:-46px;top:40%;width:126px;height:126px;border-radius:50%;background:var(--coral);border:6px double #fbaabb;box-shadow:0 8px 10px rgba(124,53,96,.25),inset 0 0 0 7px #f46683,inset 0 0 0 9px #ffd9e1;display:flex;flex-direction:column;align-items:center;justify-content:center;color:#fff9ee;font-size:15px;font-weight:800;letter-spacing:.04em;transform:scale(2.4) rotate(33deg);opacity:0}.stage-final.is-active .wax-stamp{animation:stampDrop .65s 1.45s cubic-bezier(.1,1.8,.3,1) forwards}.stamp-heart{font-size:31px;font-weight:400;line-height:1}.stage-final h2{font-size:clamp(37px,4vw,62px);line-height:1.04;margin:0 0 20px}.flourish{display:flex;align-items:center;gap:14px;color:var(--coral);font-size:24px;margin:0 0 14px}.flourish span{width:25%;height:1px;background:var(--coral)}.stage-final .appointment p{font-family:Georgia,serif;font-size:clamp(23px,2.4vw,33px);margin:7px 0}.stage-final .appointment p:last-child{font-size:clamp(36px,3.2vw,48px);font-weight:700}.sign-prompt{font-size:clamp(18px,1.6vw,23px)!important;color:var(--muted);margin:20px 0 14px}.signature-box{position:relative;max-width:420px;height:100px;background:#fff6fa;border:2px dashed #c9a8de;border-radius:16px;overflow:hidden}.signature-box canvas{width:100%;height:100%;touch-action:none;cursor:crosshair;display:block;position:relative;z-index:2}.signature-hint{position:absolute;left:15px;top:41%;font-size:15px;color:#a78aaf;pointer-events:none}.clear-signature{position:absolute;right:8px;top:7px;z-index:4;border:0;background:white;border-radius:50%;color:#8e639c;width:34px;height:34px;font-size:23px}.stage-final .button{min-height:62px;padding:13px 28px;font-size:20px;margin-top:17px}.accepted{display:flex;flex-direction:column;align-items:flex-start;gap:4px;color:var(--plum);font-size:18px;margin-top:17px;animation:popIn .7s both}.accepted strong{font-family:Georgia,serif;font-size:31px}.accepted-heart{font-size:44px;color:var(--coral);animation:heartBeat 1s infinite}.download-button{margin-top:14px!important}.confetti{position:fixed;inset:0;z-index:20;pointer-events:none}.confetti i{position:absolute;top:-35px;width:12px;height:17px;background:var(--coral);border-radius:2px;animation:confettiFall 3s linear forwards}.confetti i:nth-child(3n){background:#fff8eb}.confetti i:nth-child(4n){background:#b689d0}
.bottom-clouds{position:absolute;bottom:-8px;left:-2%;width:104%;height:clamp(125px,19vh,230px);z-index:3;pointer-events:none;animation:cloudDrift 8s ease-in-out infinite}.cloud-back{fill:#fff5f2}.cloud-front{fill:#fffaf4}.cloud-transition{position:fixed;inset:0;z-index:30;pointer-events:none;visibility:hidden;overflow:hidden}.cloud-transition.is-wiping{visibility:visible}.wipe-cloud{position:absolute;width:90vw;height:90vh;border-radius:50%;background:#fffaf4;left:-90vw;box-shadow:0 0 0 40px rgba(255,250,244,.25)}.wipe-cloud-one{top:-40vh}.wipe-cloud-two{top:6vh;background:#f8ebfc}.wipe-cloud-three{top:35vh}.wipe-cloud-four{top:75vh;background:#f5e5fb}.is-wiping .wipe-cloud{animation:cloudWipe 1.05s ease-in-out both}.is-wiping .wipe-cloud-two{animation-delay:.05s}.is-wiping .wipe-cloud-three{animation-delay:.1s}.is-wiping .wipe-cloud-four{animation-delay:.15s}
@keyframes stageIn{from{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}@keyframes cloudWipe{0%{transform:translateX(-30vw) scale(1)}43%,57%{transform:translateX(125vw) scale(1.4)}100%{transform:translateX(230vw) scale(1)}}@keyframes cloudDrift{50%{transform:translateX(-2%) translateY(8px)}}@keyframes envelopeFloat{50%{transform:translateY(-17px) rotate(2deg)}}@keyframes heartFloat{50%{transform:translateY(-20px) rotate(8deg) scale(1.08)}}@keyframes twinkle{50%{transform:scale(.6);opacity:.5}}@keyframes orbitMove{to{stroke-dashoffset:560}}@keyframes photoDrop{0%{transform:translateY(-95vh) rotate(-12deg)}70%{transform:translateY(16px) rotate(4deg)}100%{transform:translateY(0) rotate(-4deg)}}@keyframes stampDrop{0%{transform:translateY(-210px) scale(2.4) rotate(33deg);opacity:0}60%{opacity:1}80%{transform:translateY(5px) scale(.88) rotate(12deg)}100%{transform:translateY(0) scale(1) rotate(12deg);opacity:1}}@keyframes popIn{0%{opacity:0;transform:scale(.75)}70%{transform:scale(1.07)}100%{opacity:1;transform:scale(1)}}@keyframes heartBeat{50%{transform:scale(1.17)}}@keyframes confettiFall{to{transform:translate3d(var(--drift),110vh,0) rotate(620deg);opacity:0}}
@media(max-width:900px){.scene{padding:85px 26px 145px;align-items:flex-start}.story-art{width:min(85vw,450px);right:-8%;top:47%;opacity:.58}.stage{margin:auto 0}.stage-inner,.stage-question .stage-inner{width:100%;max-width:620px}.stage-intro,.stage-lead,.stage-question{padding-top:30px}.stage h1{font-size:clamp(52px,10vw,82px)}.stage h2{font-size:clamp(44px,8vw,72px)}.stage-intro .lead{max-width:380px}.stage-options,.stage-final{margin:auto}.stage-final .stage-inner{grid-template-columns:minmax(180px,32%) 1fr}.stage-final h2{font-size:clamp(34px,5vw,52px)}}
@media(max-width:650px){.scene{min-height:100svh;padding:64px 19px 110px}.progress{top:18px}.story-art{top:auto;bottom:7%;right:-11%;width:min(100vw,460px);transform:none;opacity:.95}.stage-intro,.stage-lead,.stage-question{align-self:flex-start;padding-top:clamp(18px,6vh,70px)}.stage-inner{position:relative;z-index:2}.stage h1{font-size:clamp(48px,12vw,70px);margin-bottom:20px}.stage h2{font-size:clamp(41px,9.5vw,58px)}.stage p{font-size:21px}.stage-intro .lead{max-width:280px;margin-bottom:23px}.button{min-height:62px;padding:14px 27px;font-size:21px;gap:11px}.story-art{bottom:6%;width:104vw}.scene[data-current=lead] .story-art,.scene[data-current=question] .story-art{opacity:.47}.stage-lead p{max-width:290px}.stage-lead .button{margin-top:10px}.stage-question .stage-inner{width:100%}.answer-arena{gap:10px;height:150px}.button-no{min-height:62px;padding:12px 23px}.stage-options{padding:32px 24px;max-width:530px}.stage-options:before,.stage-final:before{inset:7px;border-radius:21px}.stage-options h2{font-size:clamp(35px,8vw,46px)}.stage-options p{font-size:18px}.stage-options h3{font-size:27px}.option-grid{grid-template-columns:1fr;gap:9px}.option-card{min-height:64px;padding:9px 13px;font-size:16px;border-radius:14px}.option-icon{font-size:25px}.stage-options .button{margin-top:17px}.day-grid,.time-grid{gap:7px}.day-card{min-height:82px;padding:8px 2px}.day-card strong{font-size:16px}.day-card span{font-size:13px}.time-card{min-height:72px;font-size:23px}.calendar-wrap{align-items:stretch;flex-direction:column}.stage-final{padding:32px 24px 42px;margin:30px 0;transform:none}.stage-final .stage-inner{grid-template-columns:1fr;gap:32px}.photo-wrap{width:170px;max-width:none}.wax-stamp{width:85px;height:85px;right:-35px;top:40%;font-size:10px}.stamp-heart{font-size:23px}.stage-final h2{font-size:39px}.stage-final .appointment p{font-size:23px}.stage-final .appointment p:last-child{font-size:38px}.stage-final .button{font-size:18px;white-space:normal}.bottom-clouds{height:120px}.scene[data-current=final]{overflow-y:auto}}
@media(max-width:390px){.stage h1{font-size:45px}.stage-options{padding:29px 20px}.day-card strong{font-size:14px}.stage-final h2{font-size:35px}}
@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;animation-iteration-count:1!important;scroll-behavior:auto!important;transition-duration:.01ms!important}.photo-wrap{transform:none}.wax-stamp{transform:rotate(12deg);opacity:1}}
.scene[data-current=intro] .progress{opacity:0}
.scene[data-current=intro] .letter{transform:translateY(-62px);animation:letterPeek 5s ease-in-out infinite}
.stage-intro h1{font-weight:400}
.stage-intro .lead{font-size:clamp(27px,2.8vw,40px)}
.stage-intro .button{min-width:360px;min-height:90px;font-size:30px}
@keyframes letterPeek{50%{transform:translateY(-89px) rotate(-3deg)}}
@media(max-width:650px){.stage-intro .lead{font-size:21px}.stage-intro .button{min-width:0;min-height:62px;font-size:21px}}
.wax-stamp{top:auto;bottom:-23px;right:-42px}
.cloud-transition:before{content:"";position:absolute;inset:0;background:#fffaf4;opacity:0}
.cloud-transition.is-wiping:before{animation:cloudCover 1.05s ease-in-out both}
@keyframes cloudCover{0%,16%{opacity:0}42%,59%{opacity:1}100%{opacity:0}}
@media(max-width:650px){.stage-intro,.stage-lead,.stage-question{margin:0;padding-top:clamp(28px,7vh,70px)}.wax-stamp{bottom:-15px;right:-33px}}
@media(max-width:650px){.wax-stamp{width:68px;height:68px;bottom:-19px;right:-26px;border-width:4px;font-size:8px}.stamp-heart{font-size:18px}}
