:root{--pink:#f8dce8;--lavender:#ddd6fe;--peach:#fde2c5;--cream:#fffdf7;--berry:#c2185b;--berry-dark:#9d1349;--heading:#4a1d2b;--muted:#755d66;--border:#4a1d2b29;--border-strong:#4a1d2b4d;--radius-lg:32px;--radius-md:20px;--radius-sm:14px;--radius-pill:999px;--shadow-card:0 1px 2px #4a1d2b0a, 0 8px 20px #4a1d2b0f, 0 28px 60px #4a1d2b1a;--shadow-soft:0 6px 18px #4a1d2b14;--shadow-button:0 6px 16px #c2185b47;--font-serif:"Fraunces", "Iowan Old Style", "Palatino Linotype", Palatino, Georgia, "Times New Roman", serif;--font-sans:"Inter", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--focus-ring:0 0 0 3px var(--cream), 0 0 0 6px var(--berry);--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light}*,:before,:after{box-sizing:border-box}html,body,#root{min-height:100%}html{-webkit-text-size-adjust:100%}body{font-family:var(--font-sans);color:var(--heading);background-color:var(--pink);-webkit-font-smoothing:antialiased;text-rendering:optimizelegibility;margin:0;font-size:16px;line-height:1.6;overflow-x:hidden}h1,h2,h3,p,figure,fieldset,legend,ol,ul{margin:0;padding:0}ol,ul{list-style:none}img{max-width:100%;height:auto;display:block}button{font:inherit;color:inherit}fieldset{border:0;min-width:0}.app{min-height:100vh;background-color:#0000;background-image:radial-gradient(60% 55% at 12% 18%,#ffc7e0f2,#0000 70%),radial-gradient(55% 50% at 85% 12%,#f0cdf5e6,#0000 70%),radial-gradient(65% 60% at 78% 88%,#ffd6e2f2,#0000 72%),radial-gradient(70% 60% at 18% 92%,#fde2c5bf,#0000 72%),linear-gradient(160deg,#ffeaf3 0%,#fbe6f6 48%,#fff2ea 100%);background-position:0 0,0 0,0 0,0 0,0 0;background-repeat:repeat,repeat,repeat,repeat,repeat;background-size:200% 200%;background-attachment:scroll,scroll,scroll,scroll,scroll;background-origin:padding-box,padding-box,padding-box,padding-box,padding-box;background-clip:border-box,border-box,border-box,border-box,border-box;justify-content:center;align-items:center;width:100%;min-height:100dvh;padding:clamp(10px,3vh,40px) clamp(12px,4vw,32px);animation:26s ease-in-out infinite alternate mesh-drift;display:flex;position:relative;overflow:hidden}@keyframes mesh-drift{0%{background-position:0 0,100% 0,100% 100%,0 100%,0%}to{background-position:12% 18%,88% 14%,82% 88%,16% 82%,100%}}.app__main{z-index:1;flex-direction:column;align-items:center;gap:clamp(8px,2vh,20px);width:100%;max-width:620px;display:flex;position:relative}.app__card-slot{width:100%}.app__footnote{color:var(--muted);opacity:.85;text-align:center;font-size:.78rem}.decorations{pointer-events:none;z-index:0;position:absolute;inset:0;overflow:hidden}.decorations__orb{filter:blur(60px);opacity:.7;border-radius:50%;position:absolute}.decorations__icon{color:var(--berry);display:inline-flex;position:absolute}.decorations__emoji{opacity:.55;-webkit-user-select:none;user-select:none;line-height:1;position:absolute}.decorations__emoji.is-drifting{animation:emoji-drift var(--drift-duration,9s) ease-in-out var(--drift-delay,0s) infinite}@keyframes emoji-drift{0%,to{transform:translateY(0)rotate(-6deg)}50%{transform:translateY(-18px)rotate(6deg)}}.rising-balloons{pointer-events:none;z-index:0;position:absolute;inset:0;overflow:hidden}.rising-balloon{opacity:.7;will-change:transform;display:block;position:absolute;bottom:-22vh}.rising-balloon__inner{display:block}.card{width:100%;padding:clamp(6px,1.6vh,20px) clamp(12px,3.5vw,28px);position:relative}.step{text-align:center;flex-direction:column;align-items:center;gap:clamp(10px,2.2vh,22px);display:flex}.title{font-family:var(--font-serif);letter-spacing:-.02em;color:var(--berry);text-wrap:balance;text-shadow:0 1px #fffdf7d9,0 6px 22px #fffdf7b3;font-size:clamp(1.9rem,min(8.5vw,6.4vh),3.9rem);font-weight:700;line-height:1.08}.title--hero{font-size:clamp(2.3rem,min(11.5vw,9vh),5.4rem);line-height:1.02}.title--sm{font-size:clamp(1.5rem,min(6vw,4.6vh),2.6rem)}.title--letters{display:block}.title__word{white-space:nowrap;display:inline-block}.title__space{white-space:pre;display:inline-block}.title__letter{animation:.62s cubic-bezier(.34,1.56,.64,1) both letter-in;animation-delay:calc(var(--letter-delay,.3s) + var(--letter-index,0) * 55ms);display:inline-block}@keyframes letter-in{0%{opacity:0;transform:translateY(26px)rotate(-8deg)scale(.8)}to{opacity:1;transform:translateY(0)rotate(0)scale(1)}}.title--final{color:var(--berry);font-size:clamp(1.8rem,6.6vw,2.6rem)}@supports ((-webkit-background-clip:text) or (background-clip:text)){.title--final{background:linear-gradient(100deg, var(--berry), #7c3aed 60%, var(--berry));color:#0000;text-shadow:none;filter:drop-shadow(0 1px #fffdf7e6)drop-shadow(0 4px 14px #fffdf7a6);-webkit-background-clip:text;background-clip:text}}.lede{color:#6d4152;text-wrap:pretty;text-shadow:0 1px #fffdf7b3;max-width:46ch;font-size:clamp(1rem,min(3.6vw,2.4vh),1.35rem);line-height:1.6}.lede--tight{font-size:clamp(1rem,3vw,1.1rem)}.eyebrow{color:var(--berry);font-family:var(--font-serif);letter-spacing:.01em;opacity:.9;align-items:center;gap:clamp(10px,3vw,18px);font-size:clamp(.95rem,3vw,1.12rem);font-style:italic;font-weight:500;display:flex}.eyebrow:before,.eyebrow:after{content:"";background:linear-gradient(90deg,#0000,#c2185b8c);width:clamp(24px,9vw,60px);height:1px}.eyebrow:after{background:linear-gradient(90deg,#c2185b8c,#0000)}.button{border-radius:var(--radius-pill);min-height:48px;font-family:var(--font-sans);cursor:pointer;border:1px solid #0000;justify-content:center;align-items:center;gap:8px;padding:12px 24px;font-size:1.05rem;font-weight:600;text-decoration:none;transition:background-color .2s,color .2s,border-color .2s,box-shadow .2s;display:inline-flex}.button--primary{background:linear-gradient(135deg, var(--berry), var(--berry-dark));color:var(--cream);box-shadow:var(--shadow-button)}.button--primary:hover{background:linear-gradient(135deg, var(--berry-dark), var(--berry-dark))}.button--primary:disabled{color:#4a1d2b8c;box-shadow:none;cursor:not-allowed;background:#755d6640}.button--big{min-height:58px;padding:16px 34px;font-size:clamp(1.08rem,3.4vw,1.25rem);box-shadow:0 10px 26px #c2185b57}.button--ghost{background:var(--cream);color:var(--heading);border-color:var(--border-strong);box-shadow:var(--shadow-soft)}.button--ghost:hover{border-color:var(--berry);color:var(--berry)}.actions{flex-wrap:wrap;justify-content:center;gap:12px;width:100%;margin-top:4px;display:flex}.actions--split{justify-content:space-between}.actions--quiet{margin-top:10px}.giftbox__button{border-radius:var(--radius-lg);cursor:pointer;background:0 0;border:0;padding:8px;display:block}.giftbox__button:disabled{cursor:default}.giftbox{width:min(var(--giftbox-size,200px), 38vh);aspect-ratio:1;display:block;position:relative}.giftbox__glow{opacity:.45;z-index:0;background:radial-gradient(circle,#ffbfdcd9 0%,#f8dce800 68%);border-radius:50%;position:absolute;inset:-14%}.giftbox__glow.is-pulsing{animation:2s ease-in-out infinite gift-glow}.giftbox__body{z-index:1;transform-origin:50% 88%;width:100%;height:100%;display:block;position:relative}.giftbox__body.is-rattling{animation:2s linear infinite gift-rattle}@keyframes gift-rattle{0%{transform:translate(0)rotate(0)scale(1)}4%{transform:translate(-7px)rotate(-3deg)scale(1.01)}8%{transform:translate(6px)rotate(2.5deg)scale(1)}12.5%{transform:translate(-8px)rotate(-3.5deg)scale(1.02)}16.5%{transform:translate(7px)rotate(3deg)scale(1)}21%{transform:translate(-5px)rotate(-2deg)scale(1.01)}25%{transform:translate(5px)rotate(2deg)scale(1.02)}31%{transform:translate(-11px)rotate(-5deg)scale(1.04)}36%{transform:translate(10px)rotate(4.5deg)scale(1.02)}42.5%{transform:translate(-12px)rotate(-5.5deg)scale(1.05)}47.5%{transform:translate(11px)rotate(5deg)scale(1.03)}52.5%{transform:translate(-6px)rotate(-2.5deg)scale(1.02)}57.5%,to{transform:translate(0)rotate(0)scale(1)}}@keyframes gift-glow{0%{opacity:.4;transform:scale(.94)}30%{opacity:.55;transform:scale(1.02)}48%{opacity:.85;transform:scale(1.14)}57.5%{opacity:.5;transform:scale(.98)}to{opacity:.4;transform:scale(.94)}}.giftbox__lid{transition:transform .5s cubic-bezier(.34,1.56,.64,1),opacity .4s ease-out}.giftbox.is-opened .giftbox__lid{opacity:0;transform:translateY(-52px)}.intro__hint{font-family:var(--font-serif);color:var(--berry);opacity:.85;font-size:clamp(1.05rem,3.4vw,1.25rem);font-style:italic}.lede--script{font-family:var(--font-serif);color:var(--berry);opacity:.92;font-size:clamp(1.2rem,4.2vw,1.6rem);font-style:italic}.welcome__bunting{width:100%;max-width:460px}.bunting{transform-origin:50% 0;width:100%;line-height:0}.bunting.is-swaying{animation:5.5s ease-in-out infinite bunting-sway}@keyframes bunting-sway{0%,to{transform:rotate(-1.1deg)}50%{transform:rotate(1.1deg)}}.emoji-row{flex-wrap:wrap;justify-content:center;gap:clamp(8px,3vw,18px);display:flex}.emoji-row__slot{font-size:clamp(1.6rem,min(7vw,5vh),3rem);line-height:1;display:inline-block}.emoji-row__slot.is-popping{animation:.55s cubic-bezier(.34,1.7,.64,1) both emoji-pop;animation-delay:calc(.75s + var(--emoji-index,0) * 95ms)}.emoji-row__emoji{display:inline-block}.emoji-row__emoji.is-floating{animation:3.2s ease-in-out infinite emoji-float;animation-delay:calc(1.4s + var(--emoji-index,0) * .21s)}@keyframes emoji-pop{0%{opacity:0;transform:scale(0)rotate(-35deg)}to{opacity:1;transform:scale(1)rotate(0)}}@keyframes emoji-float{0%,to{transform:translateY(0)rotate(-5deg)}50%{transform:translateY(-11px)rotate(5deg)}}.letter{border:1px solid var(--border);width:100%;max-width:520px;box-shadow:var(--shadow-card);text-align:left;background:linear-gradient(170deg,#fffdf7 0%,#fff7fb 100%);border-radius:6px;padding:clamp(24px,6vw,40px) clamp(20px,5vw,38px)}.letter__greeting{font-family:var(--font-serif);color:var(--berry);margin-bottom:14px;font-size:clamp(1.6rem,5.4vw,2.1rem);font-weight:600}.letter__char{animation:.24s ease-out both char-in}@keyframes char-in{0%{opacity:0}to{opacity:1}}.letter__caret{vertical-align:-.16em;background:var(--berry);width:2px;height:1.05em;margin-left:2px;animation:1s step-end infinite caret-blink;display:inline-block}@keyframes caret-blink{0%,49%{opacity:1}50%,to{opacity:0}}.letter__paragraph{color:#5c3a48;text-wrap:pretty;margin-bottom:14px;font-size:clamp(1.05rem,3.2vw,1.18rem);line-height:1.8}.letter__signature{font-family:var(--font-serif);color:var(--berry);text-align:right;margin-top:6px;font-size:1.2rem;font-style:italic}.bloom{z-index:40;pointer-events:none;contain:strict;position:fixed;inset:0;overflow:hidden}.bloom__wash{background:radial-gradient(circle,#fff0f7eb 0%,#ffe9f48c 45%,#ffe9f400 70%);border-radius:50%;width:120vmax;height:120vmax;margin:-60vmax 0 0 -60vmax;position:absolute;top:50%;left:50%}.bloom__flower{aspect-ratio:1;display:block;position:absolute}.bloom__sway{width:100%;height:100%;animation:flower-sway var(--sway-duration,4s) ease-in-out var(--sway-delay,0s) infinite;display:block}@keyframes flower-sway{0%,to{transform:rotate(calc(var(--sway-angle,6deg) * -1)) scale(.97)}50%{transform:rotate(var(--sway-angle,6deg)) scale(1.05)}}.question__media{border-radius:var(--radius-md);border:1px solid var(--border);width:100%;max-width:min(480px,48vh);box-shadow:var(--shadow-card);background:var(--pink);overflow:hidden}.question__media img{aspect-ratio:3/2;object-fit:cover;width:100%}.dodge-area{width:100%;height:clamp(72px,11vh,108px);margin-top:2px;position:relative}.dodge-area__button{white-space:nowrap;max-width:90%;min-height:44px;padding:10px 20px;position:absolute;transform:translate(-50%,-50%)}.step--countdown{gap:clamp(12px,2.4vh,24px)}.countdown__badge{border:1px solid var(--border);background:var(--cream);width:clamp(104px,min(32vw,20vh),176px);height:clamp(104px,min(32vw,20vh),176px);color:var(--berry);box-shadow:var(--shadow-soft);border-radius:50%;place-items:center;padding:6px;display:grid;position:relative}.countdown__badge-ring{background:conic-gradient(#0000 0deg,#c2185b8c 60deg,#7c3aed80 120deg,#0000 200deg);border-radius:50%;animation:4.5s linear infinite countdown-orbit;position:absolute;inset:-4px;-webkit-mask:radial-gradient(closest-side,#0000 76%,#000 78%);mask:radial-gradient(closest-side,#0000 76%,#000 78%)}.countdown__badge-icon{background:var(--cream);border-radius:50%;place-items:center;width:100%;height:100%;animation:3.6s ease-in-out infinite countdown-badge-breathe;display:grid;position:relative;overflow:hidden}.countdown__badge-photo{object-fit:cover;width:100%;height:100%;display:block;position:absolute;inset:0}.countdown__badge-flare{pointer-events:none;border:3px solid #c2185b8c;border-radius:50%;animation:1.1s cubic-bezier(.22,1,.36,1) 2 both countdown-flare;position:absolute;inset:-6px}@keyframes countdown-flare{0%{opacity:.9;transform:scale(1)}to{opacity:0;transform:scale(2.1)}}.countdown__badge.is-done{background:var(--berry);border-color:var(--berry);color:var(--cream);animation:.7s cubic-bezier(.34,1.56,.64,1) both countdown-badge-pop}.countdown__badge.is-done .countdown__badge-icon{animation:.8s cubic-bezier(.34,1.56,.64,1) both countdown-badge-spin}@keyframes countdown-orbit{to{transform:rotate(1turn)}}@keyframes countdown-badge-breathe{0%,to{transform:scale(1)}50%{transform:scale(1.045)}}@keyframes countdown-badge-pop{0%{transform:scale(1)}45%{transform:scale(1.34)}to{transform:scale(1)}}@keyframes countdown-badge-spin{0%{transform:scale(.55)}to{transform:scale(1)}}.countdown__heading{flex-direction:column;align-items:center;gap:8px;display:flex}.countdown__eyebrow{letter-spacing:.16em;text-transform:uppercase;color:var(--berry);font-size:clamp(.7rem,2.6vw,.8rem);font-weight:700;animation:3s ease-in-out infinite countdown-eyebrow-glow}@keyframes countdown-eyebrow-glow{0%,to{opacity:.62}50%{opacity:1}}.countdown__title{font-size:clamp(1.75rem,min(8vw,6.2vh),3.3rem)}@supports ((-webkit-background-clip:text) or (background-clip:text)){.countdown__title{background:linear-gradient(100deg, var(--berry) 0%, var(--berry) 30%, #7c3aed 44%, #e0559a 54%, #7c3aed 63%, var(--berry) 76%, var(--berry) 100%);color:#0000;text-shadow:none;filter:drop-shadow(0 1px #fffdf7e6);background-size:230% 100%;-webkit-background-clip:text;background-clip:text;animation:7s ease-in-out infinite countdown-title-shine}}@keyframes countdown-title-shine{0%,to{background-position:0%}50%{background-position:100%}}.countdown__clock{grid-template-columns:repeat(4,minmax(0,1fr));gap:clamp(7px,2vw,14px);width:100%;max-width:560px;margin-block:clamp(2px,1vh,10px);display:grid;position:relative}.countdown__aura{z-index:0;aspect-ratio:1.9;filter:blur(6px);pointer-events:none;background:radial-gradient(closest-side,#c2185b38,#c2185b00 72%);border-radius:50%;width:116%;animation:3.8s ease-in-out infinite countdown-aura;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}@keyframes countdown-aura{0%,to{opacity:.55;transform:translate(-50%,-50%)scale(.94)}50%{opacity:1;transform:translate(-50%,-50%)scale(1.06)}}.countdown__spark{z-index:3;pointer-events:none;opacity:0;transform:scale(var(--spark-scale,1));animation:countdown-spark 3.4s ease-in-out var(--spark-delay,0s) infinite;font-size:clamp(.8rem,2.6vw,1.05rem);line-height:1;position:absolute}@keyframes countdown-spark{0%,70%,to{opacity:0;transform:scale(calc(var(--spark-scale,1) * .5)) rotate(-25deg)}22%{opacity:1;transform:scale(var(--spark-scale,1)) rotate(8deg)}45%{opacity:.55;transform:scale(calc(var(--spark-scale,1) * .85)) rotate(-6deg)}}.countdown__unit{z-index:1;border:1px solid var(--border);min-height:clamp(88px,25vw,132px);animation:.66s cubic-bezier(.34,1.56,.64,1) both countdown-card-in;animation-delay:calc(var(--unit-index,0) * 90ms);background:linear-gradient(168deg,#fffdf7 0%,#fff4f9 58%,#ffe9f2 100%);border-radius:clamp(14px,3.4vw,22px);flex-direction:column;justify-content:center;align-items:center;gap:clamp(4px,1vh,8px);padding:clamp(10px,2.6vw,18px) 4px clamp(9px,2vw,14px);display:flex;position:relative;overflow:hidden;box-shadow:inset 0 1px #ffffffe6,0 2px 4px #4a1d2b0d,0 12px 26px #4a1d2b1a}@keyframes countdown-card-in{0%{opacity:0;transform:translateY(26px)rotate(-4deg)scale(.86)}to{opacity:1;transform:translateY(0)rotate(0)scale(1)}}.countdown__unit:after{content:"";pointer-events:none;animation:5s ease-in-out infinite countdown-sheen;animation-delay:calc(var(--unit-index,0) * .34s);background:linear-gradient(112deg,#0000 34%,#ffffffc7 50%,#0000 66%);position:absolute;inset:0;transform:translate(-160%)}@keyframes countdown-sheen{0%,52%{transform:translate(-160%)}86%,to{transform:translate(160%)}}.countdown__unit.is-seconds{border-color:#c2185b6b;animation:.66s cubic-bezier(.34,1.56,.64,1) both countdown-card-in,1s ease-in-out .7s infinite countdown-seconds-beat}@keyframes countdown-seconds-beat{0%,to{box-shadow:inset 0 1px #ffffffe6,0 2px 4px #4a1d2b0d,0 12px 26px #4a1d2b1a}12%{box-shadow:inset 0 1px #ffffffe6,0 0 0 4px #c2185b21,0 12px 26px #4a1d2b1f}}.countdown__digits{perspective:460px;display:block}.countdown__value{font-family:var(--font-serif);letter-spacing:-.02em;color:var(--berry);font-variant-numeric:tabular-nums;transform-origin:50% 0;text-shadow:0 2px #ffffffd9;font-size:clamp(1.9rem,10vw,3.2rem);font-weight:700;line-height:1;animation:.5s cubic-bezier(.24,.9,.32,1.25) countdown-flip;display:block}@keyframes countdown-flip{0%{opacity:0;transform:rotateX(-94deg)translateY(-26%)}55%{opacity:1;transform:rotateX(14deg)translateY(3%)}to{opacity:1;transform:rotateX(0)translateY(0)}}.countdown__label{letter-spacing:.12em;text-transform:uppercase;color:var(--muted);font-size:clamp(.58rem,2.3vw,.74rem);font-weight:700}.step--countdown.is-done .countdown__unit{border-color:var(--berry);animation:.72s cubic-bezier(.34,1.56,.64,1) both countdown-land;animation-delay:calc(var(--unit-index,0) * 80ms);background:linear-gradient(168deg,#fff2f7 0%,#ffe0ee 100%)}@keyframes countdown-land{0%{transform:scale(1)rotate(0)}40%{transform:scale(1.16)rotate(-3deg)}70%{transform:scale(.97)rotate(1.5deg)}to{transform:scale(1)rotate(0)}}.step--countdown.is-done .countdown__aura{background:radial-gradient(closest-side,#c2185b66,#c2185b00 74%);animation-duration:2.2s}.countdown__wait{color:var(--muted);align-items:center;gap:9px;font-size:clamp(.8rem,2.8vw,.9rem);display:inline-flex}.countdown__dots{gap:4px;display:inline-flex}.countdown__dots span{background:var(--berry);opacity:.35;width:6px;height:6px;animation:1.4s ease-in-out infinite countdown-dot;animation-delay:calc(var(--dot-index,0) * .18s);border-radius:50%}@keyframes countdown-dot{0%,to{opacity:.3;transform:translateY(0)}40%{opacity:1;transform:translateY(-5px)}}.countdown__open{font-size:clamp(.98rem,3.6vw,1.14rem);animation:2.2s ease-in-out .7s infinite countdown-open-glow;position:relative}.countdown__open:before,.countdown__open:after{content:"";border-radius:inherit;pointer-events:none;border:2px solid #c2185b73;animation:2.4s ease-out infinite countdown-halo;position:absolute;inset:-3px}.countdown__open:after{animation-delay:1.2s}@keyframes countdown-halo{0%{opacity:.75;transform:scale(.97)}to{opacity:0;transform:scale(1.22)}}@keyframes countdown-open-glow{0%,to{box-shadow:var(--shadow-button)}50%{box-shadow:0 10px 30px #c2185b80}}.step--lock{gap:clamp(12px,2.4vh,22px)}.passcode__badge{border:1px solid var(--border);background:var(--cream);width:56px;height:56px;color:var(--berry);box-shadow:var(--shadow-soft);border-radius:50%;place-items:center;display:grid}.passcode__badge.is-open{background:var(--berry);border-color:var(--berry);color:var(--cream);animation:.62s cubic-bezier(.34,1.56,.64,1) both passcode-badge-pop}@keyframes passcode-badge-pop{0%{transform:scale(1)rotate(0)}45%{transform:scale(1.28)rotate(-12deg)}to{transform:scale(1)rotate(0)}}.passcode__heading{flex-direction:column;align-items:center;gap:6px;display:flex}.passcode__field{cursor:text;position:relative}.passcode__input{z-index:2;color:#0000;caret-color:#0000;cursor:text;opacity:0;background:0 0;border:0;width:100%;height:100%;padding:0;font-size:16px;position:absolute;inset:0}.passcode__input:disabled{cursor:default}.passcode__slots{justify-content:center;gap:clamp(6px,1.8vw,10px);display:flex}.passcode__slot{border:2px solid var(--border);border-radius:var(--radius-sm);background:var(--cream);width:clamp(34px,9.5vw,48px);height:clamp(46px,12.5vw,62px);box-shadow:var(--shadow-soft);font-family:var(--font-serif);color:var(--heading);place-items:center;font-size:clamp(1.3rem,5vw,1.75rem);font-weight:700;transition:border-color .18s,background-color .18s,transform .18s;display:grid}.passcode__slot.is-filled{border-color:var(--berry);animation:.26s ease-out passcode-slot-fill}@keyframes passcode-slot-fill{0%{transform:scale(.86)}to{transform:scale(1)}}.passcode__slot.is-active{border-color:var(--berry);box-shadow:0 0 0 3px #c2185b24, var(--shadow-soft)}.passcode__input:focus-visible+.passcode__slots .passcode__slot.is-active{box-shadow:0 0 0 4px #c2185b38, var(--shadow-soft)}.passcode.is-wrong .passcode__slots{animation:.62s cubic-bezier(.36,.07,.19,.97) both passcode-shake}.passcode__slot.is-wrong{color:#a92222;background:#fff1f1;border-color:#d64545}@keyframes passcode-shake{0%,to{transform:translate(0)}12%{transform:translate(-11px)rotate(-1.6deg)}26%{transform:translate(10px)rotate(1.6deg)}40%{transform:translate(-8px)rotate(-1.1deg)}56%{transform:translate(6px)rotate(.8deg)}72%{transform:translate(-4px)rotate(-.5deg)}86%{transform:translate(2px)}}.passcode__slot.is-correct{border-color:var(--berry);color:var(--berry);animation:.58s cubic-bezier(.34,1.56,.64,1) both passcode-slot-pop;animation-delay:calc(var(--slot-index,0) * 70ms);background:linear-gradient(170deg,#fff2f7 0%,#ffe3ef 100%)}@keyframes passcode-slot-pop{0%{transform:translateY(0)scale(1)rotate(0)}40%{transform:translateY(-14px)scale(1.16)rotate(-4deg)}70%{transform:translateY(2px)scale(.97)rotate(2deg)}to{transform:translateY(0)scale(1)rotate(0)}}.passcode__hearts{pointer-events:none;height:0;position:absolute;inset:-8px 0 auto}.passcode__heart{opacity:0;animation:passcode-heart-rise 1.5s ease-out var(--heart-delay,0s) both;font-size:1.15rem;line-height:1;position:absolute;top:0}@keyframes passcode-heart-rise{0%{opacity:0;transform:translateY(10px)scale(.5)}22%{opacity:1;transform:translate(calc(var(--heart-drift,0px) * .3), -14px) scale(1.05)}to{opacity:0;transform:translate(var(--heart-drift,0px), -92px) scale(.85)}}.passcode__status{min-height:1.5em;color:var(--muted);font-size:clamp(.9rem,3vw,1rem);font-weight:600}.passcode__status.is-wrong{color:#b3261e}.passcode__status.is-correct{font-family:var(--font-serif);color:var(--berry);font-size:clamp(1rem,3.4vw,1.15rem)}.passcode__hint{color:var(--muted);align-items:center;gap:7px;font-size:.84rem;display:inline-flex}.step--love{width:100%}.love-note__heading{flex-direction:column;align-items:center;gap:6px;display:flex}.love-note__eyebrow{letter-spacing:.1em;text-transform:uppercase;color:var(--berry);align-items:center;gap:6px;font-size:.78rem;font-weight:600;display:inline-flex}.love-note__drawing{justify-content:center;width:100%;display:flex}.love-note__message{flex-direction:column;gap:clamp(7px,1.4vh,12px);width:100%;max-width:54ch;margin-inline:auto;display:flex}.love-note__paragraph{color:var(--heading);text-wrap:pretty;font-size:clamp(.92rem,2.9vw,1.02rem);line-height:1.65}.love-note__signature{font-family:var(--font-serif);color:var(--berry);font-size:clamp(.98rem,3.2vw,1.15rem);font-weight:600}.love-draw{--love-draw-narrow:430px;--love-draw-short:430px;width:min(100%, var(--love-draw-narrow), var(--love-draw-short))}.love-draw__svg{width:100%;height:auto;display:block;overflow:visible}.love-draw__ink{fill:#e11d48;stroke:#9f0f36;stroke-width:1.4px;paint-order:stroke fill;font-family:Caveat,Segoe Script,Bradley Hand,Brush Script MT,cursive;font-size:126px;font-weight:700}.love-draw__wipe{transform-box:fill-box;transform-origin:0;transform:scaleX(0)}.love-draw__swash,.love-draw__heart{fill:none;stroke:#e11d48;stroke-linecap:round;stroke-linejoin:round;stroke-dasharray:1;stroke-dashoffset:1px}.love-draw__swash{stroke-width:3.5px}.love-draw__heart{stroke-width:4px;fill:#e11d48;fill-opacity:0}.love-draw__heart-beat{transform-box:fill-box;transform-origin:50%}.love-draw.is-ready .love-draw__wipe{animation:1.9s cubic-bezier(.66,.02,.4,1) .2s forwards love-write}.love-draw.is-ready .love-draw__swash{animation:.7s ease-out 1.85s forwards love-trace}.love-draw.is-ready .love-draw__heart{animation:.75s ease-out 2.35s forwards love-trace,.5s ease-out 3s forwards love-heart-fill}.love-draw.is-ready .love-draw__heart-beat{animation:1.8s ease-in-out 3.4s infinite love-beat}@keyframes love-write{to{transform:scaleX(1)}}@keyframes love-trace{to{stroke-dashoffset:0}}@keyframes love-heart-fill{to{fill-opacity:1}}@keyframes love-beat{0%,to{transform:scale(1)}12%{transform:scale(1.14)}24%{transform:scale(1)}36%{transform:scale(1.09)}48%{transform:scale(1)}}.love-draw.is-static .love-draw__wipe{transform:scaleX(1)}.love-draw.is-static .love-draw__swash,.love-draw.is-static .love-draw__heart{stroke-dashoffset:0}.love-draw.is-static .love-draw__heart{fill-opacity:1}.love-draw.is-static .love-draw__wipe,.love-draw.is-static .love-draw__swash,.love-draw.is-static .love-draw__heart,.love-draw.is-static .love-draw__heart-beat{animation:none}.memory-booth__heading{text-align:center;flex-direction:column;align-items:center;gap:5px;display:flex}.memory-booth__eyebrow{color:var(--berry);letter-spacing:.14em;text-transform:uppercase;align-items:center;gap:6px;font-size:.72rem;font-weight:700;display:inline-flex}.memory-booth{grid-template-columns:repeat(2,minmax(0,1fr));gap:clamp(12px,3vw,20px);width:min(100%,520px);padding:14px clamp(2px,1vw,8px) 8px;display:grid}.booth-card{transform-origin:50% 15%;background:#fffdf8;border:1px solid #4a1d2b21;border-radius:4px;min-width:0;padding:clamp(8px,2vw,12px) clamp(8px,2vw,12px) clamp(12px,2.5vw,17px);position:relative;box-shadow:0 2px 4px #4a1d2b14,0 14px 28px #4a1d2b21}.booth-card:nth-child(2),.booth-card:nth-child(3){background:#fff9fc}.booth-card__tape{z-index:2;-webkit-backdrop-filter:blur(1px);backdrop-filter:blur(1px);background:#f8dce8c7;border-left:1px dashed #c2185b2e;border-right:1px dashed #c2185b2e;width:clamp(42px,11vw,62px);height:17px;position:absolute;top:-8px;left:50%;transform:translate(-50%)rotate(-1deg)}.booth-card__frame{background:#2f2027;border:5px solid #2f2027;position:relative;overflow:hidden}.booth-card__photo{aspect-ratio:4/3;object-fit:cover;filter:saturate(.9)contrast(1.04);-webkit-user-select:none;user-select:none;-webkit-user-drag:none;width:100%}.booth-card__number{color:#fffdf8;letter-spacing:.12em;background:#2f2027c2;border-radius:2px;padding:2px 5px;font-size:.62rem;font-weight:700;position:absolute;bottom:5px;right:6px}.booth-card__caption{text-align:center;flex-direction:column;gap:3px;padding-top:clamp(8px,2vw,12px);display:flex}.booth-card__text{color:var(--heading);font-family:var(--font-serif);font-size:clamp(.78rem,2.5vw,.98rem);line-height:1.25}.booth-card__date{color:var(--muted);letter-spacing:.06em;text-transform:uppercase;font-size:clamp(.58rem,1.8vw,.7rem)}.booth-card__note{color:var(--berry);font-family:var(--font-serif);margin-top:1px;font-size:clamp(.7rem,2.1vw,.86rem);font-style:italic}.step--cake-wish{gap:clamp(8px,1.7vh,16px)}.cake-wish__heading{flex-direction:column;align-items:center;gap:6px;display:flex}.cake-wish__eyebrow{color:var(--berry);letter-spacing:.13em;text-transform:uppercase;align-items:center;gap:6px;font-size:.76rem;font-weight:700;display:inline-flex}.wish-cake-wrap{place-items:center;width:100%;min-height:0;display:grid}.wish-cake{aspect-ratio:1.45;filter:drop-shadow(0 18px 20px #631e392e);width:min(470px,92vw,58vh);animation:.75s cubic-bezier(.34,1.56,.64,1) both wish-cake-rise;position:relative}@keyframes wish-cake-rise{0%{opacity:0;transform:translateY(26px)scale(.82)}to{opacity:1;transform:none}}.wish-cake__plate{z-index:1;background:linear-gradient(#fff 0%,#f4e8ef 100%);border:2px solid #c2185b33;border-radius:50%;height:10%;position:absolute;bottom:1%;left:1%;right:1%;box-shadow:0 7px 10px #4a1d2b1f}.wish-cake__tier{z-index:2;background:linear-gradient(90deg,#ffffff38,#0000 24% 76%,#74133a17),linear-gradient(#ec78a7 0%,#d73d7a 100%);border:2px solid #9d13492e;position:absolute;overflow:hidden;box-shadow:inset 0 -10px 18px #7a103b1f}.wish-cake__tier--bottom{border-radius:18px 18px 34px 34px;height:31%;bottom:8%;left:5%;right:5%}.wish-cake__tier--top{background:linear-gradient(90deg,#ffffff38,#0000 24% 76%,#74133a14),linear-gradient(#f5a3c4 0%,#e7689a 100%);border-radius:15px 15px 24px 24px;height:24%;bottom:36%;left:14%;right:14%}.wish-cake__top{z-index:4;background:radial-gradient(at 50% 28%,#fffdf7 0 44%,#ffd8e7 70%,#ef8db4 100%);border:2px solid #9d134924;border-radius:50%;height:15%;position:absolute;bottom:53%;left:13.6%;right:13.6%}.wish-cake__icing{z-index:2;background:#fffaf2;border-radius:0 0 45% 45%;height:27%;position:absolute;inset:0 0 auto;box-shadow:0 3px #9d13490f}.wish-cake__icing:before,.wish-cake__icing:after{content:"";aspect-ratio:.8;background:#fffaf2;border-radius:0 0 999px 999px;width:12%;position:absolute;top:45%}.wish-cake__icing:before{left:18%}.wish-cake__icing:after{height:135%;right:23%}.wish-cake__sprinkle{z-index:3;border-radius:999px;width:17px;height:5px;position:absolute;box-shadow:0 1px 2px #4a1d2b1f}.wish-cake__candles{z-index:7;justify-content:center;align-items:flex-end;gap:clamp(6px,2vw,15px);width:82%;display:flex;position:absolute;bottom:59%;left:50%;transform:translate(-50%)}.wish-candle{transform-origin:50% 100%;flex:none;justify-content:center;align-items:flex-end;display:inline-flex;position:relative}.wish-candle--regular{background:repeating-linear-gradient(-28deg, var(--candle-color) 0 8px, #fffdf7 8px 13px);border:1px solid #4a1d2b2e;border-radius:6px 6px 2px 2px;width:clamp(9px,2.6vw,15px);height:clamp(41px,11vw,67px);box-shadow:inset 2px 0 3px #ffffff73}.wish-candle--number{width:clamp(46px,11vw,66px);height:clamp(71px,17vw,105px)}.wish-candle__digit{color:#c2185b;font-family:var(--font-serif);letter-spacing:-.1em;-webkit-text-stroke:2px #8f1647;paint-order:stroke fill;text-shadow:inset 2px 0 #fff6, 0 3px 0 #7e123e, 0 7px 8px #4a1d2b33;font-size:clamp(4.7rem,17vw,7rem);font-weight:900;line-height:.84;display:block}.wish-candle__wick{z-index:1;background:#4a1d2b;border-radius:999px;width:2px;height:9px;position:absolute;top:-7px;left:50%;transform:translate(-50%)}.wish-candle--number .wish-candle__wick{top:-3px}.wish-candle__flame{z-index:3;transform-origin:50% 100%;width:clamp(10px,2.8vw,15px);height:clamp(17px,4.6vw,25px);animation:wish-flame .8s ease-in-out var(--flame-delay,0s) infinite alternate;background:radial-gradient(at 50% 72%,#fff5b8 0 18%,#ffc14d 35%,#ff7a36 70%,#d62d54 100%);border-radius:52% 48% 54% 46%/67% 68% 32% 33%;position:absolute;top:-25px;left:50%;transform:translate(-50%)rotate(4deg);box-shadow:0 0 9px #ffa636e6,0 0 22px #ffc14d94}.wish-candle--number .wish-candle__flame{top:-21px}@keyframes wish-flame{0%{transform:translate(-50%)rotate(-5deg)scale(.92,1.04)}to{transform:translate(-50%)rotate(6deg)scale(1.05,.93)}}.wish-candle__smoke{z-index:3;opacity:0;border:2px solid #0000;border-color:#64525c85 #0000 #0000 #64525c85;border-radius:50%;width:9px;height:9px;position:absolute;top:-19px;left:50%;transform:translate(-50%)}.wish-cake.is-blown-out .wish-candle__flame,.wish-candle.is-out .wish-candle__flame{animation:.32s ease-in both wish-flame-out}.wish-cake.is-blown-out .wish-candle__smoke,.wish-candle.is-out .wish-candle__smoke{animation:1.9s ease-out .16s both wish-smoke}@keyframes wish-flame-out{to{opacity:0;transform:translate(25%)translateY(8px)rotate(70deg)scale(.1)}}@keyframes wish-smoke{0%{opacity:0;transform:translate(-50%)translateY(0)scale(.6)}22%{opacity:.72}to{opacity:0;transform:translate(50%)translateY(-38px)scale(1.8)rotate(55deg)}}.cake-wish__control{flex-direction:column;align-items:center;gap:10px;min-height:100px;display:flex}.cake-wish__status{color:#6d4152;font-size:clamp(.9rem,3vw,1.05rem);font-weight:600}.cake-wish__status.is-complete{color:var(--berry);font-family:var(--font-serif);font-size:clamp(1.05rem,3.6vw,1.3rem)}.blow-meter{background:#4a1d2b1f;border-radius:999px;width:min(270px,64vw);height:8px;overflow:hidden;box-shadow:inset 0 1px 2px #4a1d2b14}.blow-meter__fill{border-radius:inherit;background:linear-gradient(90deg, #f09ac0, var(--berry));transform-origin:0;width:100%;height:100%;transition:transform 90ms linear;display:block}.step--final{position:relative}.final__scene{pointer-events:none;z-index:0;height:210px;position:absolute;inset:-10px -14px auto}.sparkle{background:radial-gradient(circle, #fff 0%, var(--peach) 60%, transparent 70%);opacity:.5;border-radius:50%;width:7px;height:7px;position:absolute;box-shadow:0 0 8px #fdb63ccc}.sparkle.is-twinkling{opacity:0;animation:sparkle-twinkle 2.6s ease-in-out var(--sparkle-delay,0s) infinite}@keyframes sparkle-twinkle{0%,to{opacity:0;transform:scale(.5)}50%{opacity:1;transform:scale(1.15)}}.step--final>:not(.final__scene){z-index:1;position:relative}.cake{width:min(var(--cake-size,150px), 30vh);aspect-ratio:160/140;place-items:center;display:grid;position:relative}.cake.is-entering{animation:.65s cubic-bezier(.34,1.56,.64,1) both cake-pop}@keyframes cake-pop{0%{opacity:0;transform:scale(.72)translateY(18px)}to{opacity:1;transform:none}}.cake__shadow{z-index:0;background:radial-gradient(#c2185b42,#c2185b00 70%);border-radius:50%;width:62%;height:12px;position:absolute;bottom:4%}.cake__shadow.is-breathing{animation:3.2s ease-in-out infinite cake-shadow}@keyframes cake-shadow{0%,to{opacity:.9;transform:scaleX(1)}50%{opacity:.55;transform:scaleX(.84)}}.cake__body{z-index:1;transform-origin:50% 88%;width:100%;height:100%;display:block;position:relative}.cake__body.is-bobbing{animation:3.2s ease-in-out infinite cake-bob}@keyframes cake-bob{0%,to{transform:translateY(0)rotate(-2.2deg)scale(1)}50%{transform:translateY(-13px)rotate(2.2deg)scale(1.025)}}.flame.is-flickering{animation:flame-flicker var(--flicker-duration,1.6s) ease-in-out var(--flicker-delay,0s) infinite}.flame__halo{opacity:.28}@keyframes flame-flicker{0%,to{opacity:.8}20%{opacity:1}45%{opacity:.72}70%{opacity:1}}.cake__embers{pointer-events:none;position:absolute;inset:0}.cake__ember{opacity:0;width:4px;height:4px;animation:ember-rise var(--ember-duration,3.4s) ease-out var(--ember-delay,0s) infinite;background:#ffd79a;border-radius:50%;position:absolute;top:22%;box-shadow:0 0 5px #fdb63ce6}@keyframes ember-rise{0%{opacity:0;transform:translateY(0)scale(.5)}25%{opacity:.9}to{opacity:0;transform:translateY(-26px)scale(1)}}.music-toggle{z-index:60;border-radius:var(--radius-pill);border:1px solid var(--berry);background:var(--berry);min-height:46px;color:var(--cream);cursor:pointer;box-shadow:var(--shadow-soft);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);align-items:center;gap:8px;padding:11px 16px;display:inline-flex;position:fixed;bottom:clamp(12px,3vh,26px);right:clamp(12px,3vw,26px)}.music-toggle.is-muted{border-color:var(--border-strong);color:var(--muted);background:#fffdf7eb}.music-toggle.is-muted:hover{color:var(--berry);border-color:var(--berry)}.music-toggle__bars{align-items:flex-end;gap:3px;height:15px;display:none}.music-toggle.is-playing .music-toggle__bars{display:inline-flex}.music-toggle__bars span{background:currentColor;border-radius:2px;width:3px;animation:.9s ease-in-out infinite equalise;display:block}.music-toggle__bars span:first-child{height:7px;animation-delay:0s}.music-toggle__bars span:nth-child(2){height:14px;animation-delay:.18s}.music-toggle__bars span:nth-child(3){height:10px;animation-delay:.36s}@keyframes equalise{0%,to{transform:scaleY(.45)}50%{transform:scaleY(1)}}@media (max-width:400px){.music-toggle{padding:11px 13px}}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}@media (max-width:430px){.love-draw{--love-draw-narrow:292px}.step--love{gap:clamp(8px,1.7vh,16px)}.love-note__message{gap:7px}.love-note__paragraph{font-size:.88rem;line-height:1.5}}@media (max-width:560px){.actions .button{flex:100%}.actions--split .button{flex:calc(50% - 6px)}.dodge-area__button{flex:none;width:auto}}@media (max-width:360px){.card{border-radius:var(--radius-md);padding:20px 16px}.dodge-area{height:120px}.love-note__paragraph{line-height:1.58}}@media (max-height:760px){.app__footnote{display:none}.button{min-height:44px;padding:10px 20px}.button--big{min-height:50px;padding:13px 28px}.welcome__bunting{max-width:340px}.letter{padding:20px 18px}.letter__paragraph{margin-bottom:10px;line-height:1.65}.love-draw{width:min(100%,330px)}.love-note__paragraph{line-height:1.55}}@media (max-height:620px){.welcome__bunting{display:none}.lede{max-width:60ch}.love-draw{width:min(100%,260px)}.love-note__eyebrow{display:none}}@media (max-height:460px){.step{gap:8px}.title{font-size:clamp(1.4rem,min(8.5vw,6.4vh),3.9rem)}.title--hero{font-size:clamp(1.7rem,min(11.5vw,9vh),5.4rem)}.question__media{max-width:min(480px,42vh)}.dodge-area{height:56px}.emoji-row__slot{font-size:clamp(1.2rem,5vh,3rem)}.love-draw{--love-draw-short:210px}.countdown__unit{min-height:66px;padding:8px 4px 7px}.countdown__value{font-size:clamp(1.35rem,6.6vh,2rem)}.countdown__badge{width:96px;height:96px;padding:4px}.countdown__wait{font-size:.76rem}.love-note__message{gap:4px}.love-note__paragraph{font-size:.86rem;line-height:1.5}.love-note__signature{font-size:.95rem}}@media (prefers-reduced-motion:reduce){.app{background-size:100% 100%;animation:none}*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
