.passkey-overlay{position:fixed;inset:0;z-index:600;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:clamp(.9rem,2.8vh,1.6rem);padding:1.5rem;overflow:hidden;background:radial-gradient(circle at center,#f8f0dcf0,#f0dfc0f5);backdrop-filter:blur(22px);-webkit-backdrop-filter:blur(22px);animation:pkIn .4s cubic-bezier(.16,1,.3,1) both}.pk-orb{position:absolute;width:clamp(300px,80vw,600px);height:clamp(300px,80vw,600px);border-radius:50%;background:radial-gradient(circle,rgba(128,0,0,.08) 0%,transparent 70%);top:25%;left:50%;transform:translate(-50%,-50%);pointer-events:none;animation:pkOrb 4s ease-in-out infinite}.passkey-overlay.success .pk-orb{background:radial-gradient(circle,rgba(42,90,58,.15) 0%,transparent 70%)}.pk-particles{position:absolute;inset:0;pointer-events:none;overflow:hidden}.pk-particle{position:absolute;border-radius:50%;background:#6b1f3a59;animation:pkFl 4s linear infinite}.passkey-overlay.success .pk-particle{background:#2a5a3a80}.pk-close{position:absolute;top:20px;right:22px;background:#fff9;border:1px solid rgba(42,90,58,.18);border-radius:50%;width:44px;height:44px;font-size:1.1rem;color:#6b4a2a;cursor:pointer;display:flex;align-items:center;justify-content:center;outline:none;z-index:10;transition:transform .2s}.pk-close:hover{transform:scale(1.08)}.pk-lock-wrap{position:relative;display:flex;align-items:center;justify-content:center}.pk-ring1{position:absolute;width:clamp(110px,28vw,140px);height:clamp(110px,28vw,140px);border-radius:50%;border:1.5px solid rgba(42,90,58,.22);box-shadow:0 0 30px #2a5a3a14,inset 0 0 18px #2a5a3a0d;animation:pkRing 3s ease-in-out infinite}.passkey-overlay.success .pk-ring1{border:2px solid rgba(42,90,58,.55);box-shadow:0 0 35px #2a5a3a4d,inset 0 0 25px #2a5a3a26;animation:pkGlow 1s ease-in-out infinite}.pk-ring2{position:absolute;width:clamp(130px,33vw,165px);height:clamp(130px,33vw,165px);border-radius:50%;border:1px solid rgba(42,90,58,.12);animation:pkRing2 5s ease-in-out infinite}.pk-lock-wrap img{width:100px;height:auto;opacity:.95;filter:drop-shadow(0 6px 16px rgba(42,90,58,.25));transition:all .45s ease;position:relative;z-index:2}.passkey-overlay.success .pk-lock-wrap img{transform:scale(1.05);filter:drop-shadow(0 0 20px rgba(42,90,58,.55))}.pk-title{font-family:Dancing Script,cursive;font-size:clamp(1.8rem,5vw,2.3rem);font-weight:700;margin:0;color:maroon;text-shadow:0 2px 14px rgba(255,255,255,.6);position:relative;z-index:2}.passkey-overlay.success .pk-title{color:#2a5a3a}.pk-dots{display:flex;align-items:center;gap:0;padding:.4rem 0;position:relative;z-index:2}.pk-dots.shake{animation:pkShake .55s ease-in-out}.pk-line{width:clamp(18px,5vw,28px);height:2px;background:#2a5a3a26;transition:background .3s ease}.pk-line.on{background:linear-gradient(90deg,#2a5a3aa6,#2a5a3a40)}.pk-dot{width:clamp(16px,4.2vw,22px);height:clamp(16px,4.2vw,22px);border-radius:50%;border:2px solid rgba(42,90,58,.4);background:transparent;transition:all .25s ease}.pk-dot.filled{background:#2a5a3a;box-shadow:0 0 12px #2a5a3a73;animation:pkDot .3s cubic-bezier(.34,1.56,.64,1)}.pk-dots.error .pk-dot{border-color:#b0282899}.pk-dots.error .pk-dot.filled{background:#b02828;box-shadow:0 0 12px #b0282866}.pk-error-msg{font-family:Caveat,cursive;font-size:clamp(1rem,2.5vw,1.2rem);color:#b02828;margin:-.3rem 0 0;position:relative;z-index:2;height:1.2em;opacity:0;transition:opacity .2s}.pk-error-msg.show{opacity:1}.pk-keypad{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(12px,3vw,18px);width:min(290px,75vw);position:relative;z-index:2}.pk-key{width:100%;aspect-ratio:1;border-radius:50%;border:1.5px solid rgba(42,90,58,.2);background:#fff9;cursor:pointer;display:flex;align-items:center;justify-content:center;font-family:Cormorant Garamond,Georgia,serif;font-weight:600;font-size:clamp(1.4rem,4.5vw,1.85rem);color:#2a5a3a;box-shadow:0 3px 10px #2a5a3a1f,inset 0 1px #fffc;transition:all .18s ease;outline:none;backdrop-filter:blur(6px);-webkit-backdrop-filter:blur(6px)}.pk-key:active{transform:scale(.92);background:#ffffffd9}.pk-key.pk-del{font-size:clamp(.85rem,2.5vw,1rem);font-family:Caveat,cursive;font-weight:600;color:#8a6018;border:1px solid rgba(138,96,24,.25)}.pk-key.pk-empty{visibility:hidden;cursor:default}@keyframes pkIn{0%{opacity:0;transform:scale(.94)}to{opacity:1;transform:scale(1)}}@keyframes pkShake{0%,to{transform:translate(0)}10%,50%,90%{transform:translate(-8px)}30%,70%{transform:translate(8px)}}@keyframes pkDot{0%{transform:scale(1)}50%{transform:scale(1.4)}to{transform:scale(1)}}@keyframes pkRing{0%,to{transform:scale(1);opacity:.5}50%{transform:scale(1.06);opacity:1}}@keyframes pkRing2{0%,to{transform:scale(1);opacity:.3}50%{transform:scale(1.04);opacity:.6}}@keyframes pkGlow{0%,to{transform:scale(1);opacity:.75}50%{transform:scale(1.08);opacity:1}}@keyframes pkOrb{0%,to{transform:translate(-50%,-50%) scale(1);opacity:.8}50%{transform:translate(-50%,-50%) scale(1.15);opacity:1}}@keyframes pkFl{0%,to{transform:translateY(0)}50%{transform:translateY(-20px)}}.loading-overlay{position:fixed;inset:0;z-index:700;display:flex;flex-direction:column;align-items:center;justify-content:center;background:radial-gradient(circle at center,#faf2e0,#f5e8cc,#f0dfc0);animation:zIn .35s ease-out both}.wreath-wrap{width:min(52vw,210px);height:min(52vw,210px);position:relative}.wreath{position:absolute;inset:0;animation:orbit 10s linear infinite}.wreath-item{position:absolute;top:50%;left:50%;width:45%;height:45%;margin-left:-22.5%;margin-top:-22.5%;transform:rotate(calc(var(--i) * 45deg)) translateY(-70%) rotate(calc(var(--i) * -45deg))}.wreath-item img{width:100%;height:100%;object-fit:contain;display:block;animation:counter-orbit 10s linear infinite;filter:drop-shadow(0 4px 10px rgba(42,90,58,.18))}@keyframes orbit{0%{transform:rotate(0)}to{transform:rotate(360deg)}}@keyframes counter-orbit{0%{transform:rotate(0)}to{transform:rotate(-360deg)}}.loading-text{margin-top:30px;text-transform:uppercase;letter-spacing:.38em;font-size:.85rem;font-style:italic;font-weight:500;font-family:Georgia,serif;color:#8a6018;animation:pulse 1.7s ease-in-out infinite}@keyframes pulse{0%,to{opacity:.5}50%{opacity:1}}@keyframes zIn{0%{opacity:0}to{opacity:1}}.cake{text-align:center;display:flex;flex-direction:column;align-items:center;gap:clamp(30px,6vh,56px)}.cake__head{position:relative;z-index:1}.cake__stage{position:relative;width:clamp(220px,70vw,340px);display:flex;flex-direction:column;align-items:center}.cake__halo{position:absolute;inset:-18% -18% 0;background:radial-gradient(50% 50% at 50% 40%,rgba(255,196,120,.42),transparent 70%);pointer-events:none;transition:opacity 1s ease}.cake.is-warm .cake__halo{opacity:.35}.cake__svg{position:relative;z-index:1;width:100%;height:auto;overflow:visible;filter:drop-shadow(0 26px 34px rgba(80,20,44,.45))}.cake__svg .tier{filter:drop-shadow(0 8px 10px rgba(120,40,70,.28))}.flame{opacity:0;transform:scale(.2);transform-box:fill-box;transform-origin:50% 100%;transition:opacity .35s ease,transform .35s var(--ease-silk)}.flame.on{opacity:1;transform:scale(1)}.flame.on .flame__body{transform-box:fill-box;transform-origin:50% 100%;animation:flameFlicker .28s ease-in-out infinite alternate}.flame.on .flame__halo{transform-box:fill-box;transform-origin:50% 60%;animation:haloPulse 1.6s ease-in-out infinite}.flame.on .flame__core{transform-box:fill-box;transform-origin:50% 100%;animation:flameFlicker .22s ease-in-out infinite alternate-reverse}@keyframes flameFlicker{0%{transform:scaleY(1) scaleX(1) skew(-2deg)}to{transform:scaleY(1.14) scaleX(.92) skew(3deg)}}@keyframes haloPulse{0%,to{opacity:.75;transform:scale(1)}50%{opacity:1;transform:scale(1.18)}}.smoke{opacity:0;transform-box:fill-box;transform-origin:50% 100%;animation:smokeRise 1.6s ease-out forwards}@keyframes smokeRise{0%{opacity:0;transform:translateY(0) scale(.6)}20%{opacity:.7}to{opacity:0;transform:translateY(-30px) scale(1.1)}}@media (prefers-reduced-motion: reduce){.flame.on .flame__body,.flame.on .flame__halo,.flame.on .flame__core{animation:none}}.cake__action{position:relative;z-index:1;min-height:56px}.cake__wish-made{font-family:var(--font-script);font-size:1.6rem}.cake__stage{margin-inline:auto}.teddy{position:absolute;z-index:3;left:-20%;bottom:1%;width:40%;padding:0;border:none;background:none;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:left .9s cubic-bezier(.22,1,.36,1)}.teddy:focus-visible{outline:3px solid #b38728;outline-offset:4px;border-radius:16px}.teddy__svg{width:100%;height:auto;overflow:visible;display:block;filter:drop-shadow(0 10px 12px rgba(120,10,20,.3));transform-origin:50% 100%;animation:teddy-bob 2.8s ease-in-out infinite}.teddy__svg.is-wiggle{animation:teddy-dance .9s ease-in-out,teddy-bob 2.8s ease-in-out .9s infinite}@keyframes teddy-bob{50%{transform:translateY(-5px) rotate(-2deg)}}@keyframes teddy-dance{20%{transform:rotate(-12deg) translateY(-8px)}45%{transform:rotate(11deg) translateY(-2px)}70%{transform:rotate(-8deg) translateY(-8px)}}.teddy__arm-l{transform-box:view-box;transform-origin:38px 92px;animation:teddy-wave 1.3s ease-in-out infinite}@keyframes teddy-wave{50%{transform:rotate(26deg)}}.teddy__arm-r{transform-box:view-box;transform-origin:102px 92px}.teddy__eyes-happy{opacity:0}.teddy__name{display:block;margin-top:-2px;font-family:Caveat,cursive;font-weight:700;font-size:1.1rem;color:#c1121f;text-align:center}.teddy__bubble{position:absolute;left:30%;bottom:100%;width:max-content;max-width:56vw;padding:7px 13px;border-radius:16px 16px 16px 4px;background:#fffdf8;border:1.5px solid rgba(193,18,31,.3);box-shadow:0 8px 20px #80000029;font-family:Caveat,cursive;font-size:1.15rem;font-weight:700;color:maroon;animation:fade-up .35s ease-out both}.teddy.is-cutting,.teddy.is-served{left:-4%}.teddy.is-cutting .teddy__arm-r{animation:teddy-saw .3s ease-in-out infinite alternate}@keyframes teddy-saw{0%{transform:rotate(38deg) translateY(-4px)}to{transform:rotate(52deg) translateY(8px)}}.teddy.is-cutting .teddy__arm-l,.teddy.is-served .teddy__arm-l{animation:none}.teddy.is-served .teddy__eyes-open{opacity:0}.teddy.is-served .teddy__eyes-happy{opacity:1}.teddy.is-served .teddy__knife{opacity:0;transition:opacity .3s}.teddy.is-served .teddy__svg:not(.is-wiggle){animation:teddy-jump .7s ease-in-out 3,teddy-bob 2.8s ease-in-out 2.1s infinite}@keyframes teddy-jump{40%{transform:translateY(-18px) rotate(4deg)}}.cake__gap{position:absolute;z-index:2;left:33%;bottom:9%;width:3px;height:0;border-radius:2px;background:#a03058;transition:height 1.2s ease-in}.cut-cutting .cake__gap,.cut-served .cake__gap{height:15%}.cake__slice{position:absolute;z-index:4;left:22%;bottom:12%;width:24%;opacity:0;transform:scale(.4);filter:drop-shadow(0 8px 10px rgba(120,40,70,.3))}.cut-served .cake__slice{animation:slice-serve 1.1s cubic-bezier(.34,1.4,.64,1) forwards,slice-float 2.4s ease-in-out 1.1s infinite}@keyframes slice-serve{0%{opacity:0;transform:scale(.4)}40%{opacity:1;transform:translate(-20%,-90%) scale(1) rotate(-8deg)}to{opacity:1;transform:translate(-48%,-168%) scale(1.15) rotate(-4deg)}}@keyframes slice-float{0%,to{transform:translate(-48%,-168%) scale(1.15) rotate(-4deg)}50%{transform:translate(-48%,-180%) scale(1.15) rotate(3deg)}}.cake__action{max-width:34ch;margin-inline:auto}@media (prefers-reduced-motion: reduce){.teddy__svg,.teddy__arm-l,.teddy.is-cutting .teddy__arm-r{animation:none}.cut-served .cake__slice{animation:none;opacity:1;transform:translate(-48%,-168%) scale(1.15)}}.redgift{width:100%;max-width:460px;margin:0 auto;text-align:center;animation:fade-up .8s ease-out 1.2s both}.redgift__tease{margin:0 0 .4rem;font-family:Dancing Script,cursive;font-size:clamp(1.7rem,6vw,2.3rem);color:#c1121f}.redgift__box{border:none;background:none;cursor:pointer;padding:6px 18px;display:inline-flex;flex-direction:column;align-items:center;gap:2px;font-family:Caveat,cursive;font-size:1.25rem;color:maroon;-webkit-tap-highlight-color:transparent}.redgift__box svg{width:150px;filter:drop-shadow(0 14px 18px rgba(140,10,20,.35));animation:gift-wobble 1.6s ease-in-out infinite}.redgift__box:focus-visible{outline:3px solid #b38728;outline-offset:4px;border-radius:18px}.redgift__lid{transform-box:fill-box;transform-origin:50% 100%;animation:lid-peek 1.6s ease-in-out infinite}@keyframes gift-wobble{0%,to{transform:rotate(0)}20%{transform:rotate(-5deg)}40%{transform:rotate(5deg)}60%{transform:rotate(-3deg)}80%{transform:rotate(2deg)}}@keyframes lid-peek{50%{transform:translateY(-5px) rotate(-3deg)}}.redgift__reveal{padding:clamp(1.4rem,5vw,2.2rem) 1.2rem;border-radius:24px;background:linear-gradient(145deg,#c1121f,maroon);border:1.5px solid #d4a73a;box-shadow:0 22px 55px #80000059;color:#fffdf8;animation:yes-in .8s cubic-bezier(.34,1.56,.64,1) both}.redgift__bear{position:relative;width:150px;height:196px;margin:0 auto .4rem}.redgift__bear .teddy{position:static;width:100%}.redgift__bear .teddy__name{color:#f7e3b0}.redgift__reveal h3{margin:0 0 .4rem;font-family:Dancing Script,cursive;font-size:clamp(1.8rem,6.4vw,2.4rem);color:#f7e3b0}.redgift__reveal p{margin:0;font-family:Caveat,cursive;font-size:1.4rem;line-height:1.35}@media (prefers-reduced-motion: reduce){.redgift,.redgift__box svg,.redgift__lid,.redgift__reveal{animation:none}}.intro{position:fixed;inset:0;z-index:300;display:grid;place-items:center;overflow:hidden;cursor:pointer;color:#f7e3b0;text-align:center;background:radial-gradient(90% 70% at 50% 45%,#7a0a16,#4a0610 55%,#1f0307);animation:intro-in .7s ease both,intro-out .8s ease 5.6s forwards}@keyframes intro-in{0%{opacity:0}}@keyframes intro-out{to{opacity:0}}.intro__glow{position:absolute;width:min(120vw,900px);aspect-ratio:1;border-radius:50%;background:radial-gradient(circle,rgba(247,227,176,.3),rgba(212,167,58,.08) 45%,transparent 70%);animation:intro-breathe 3.2s ease-in-out infinite}@keyframes intro-breathe{50%{transform:scale(1.12);opacity:.8}}.intro__rays{position:absolute;width:200vmax;aspect-ratio:1;background:repeating-conic-gradient(from 0deg,rgba(247,227,176,.07) 0 6deg,transparent 6deg 18deg);mask-image:radial-gradient(circle,#000 0%,transparent 55%);-webkit-mask-image:radial-gradient(circle,#000 0%,transparent 55%);animation:intro-spin 40s linear infinite}@keyframes intro-spin{to{transform:rotate(360deg)}}.intro__inner{position:relative;padding:0 1.25rem;max-width:100%}.intro p,.intro h1{margin:0}.intro__kicker{font-family:Georgia,serif;font-size:.8rem;letter-spacing:.5em;text-transform:uppercase;color:#e7c98b;padding-left:.5em;animation:intro-rise .9s ease .2s both}.intro__name{font-family:Dancing Script,cursive;font-weight:700;font-size:clamp(4.4rem,24vw,9.5rem);line-height:1.15;white-space:nowrap}.intro__name span{display:inline-block;opacity:0;background:linear-gradient(180deg,#fff3cf,#f1cf6b 45%,#b38728);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 6px 22px rgba(247,227,176,.35));animation:intro-letter .8s cubic-bezier(.22,1.3,.36,1) both}@keyframes intro-letter{0%{opacity:0;transform:translateY(.35em) rotate(-8deg) scale(.6);filter:blur(8px)}to{opacity:1;transform:none;filter:drop-shadow(0 6px 22px rgba(247,227,176,.35))}}.intro__line{display:flex;align-items:center;justify-content:center;gap:12px;color:#d4a73a;animation:intro-rise .8s ease 2.2s both}.intro__line i{width:min(22vw,110px);height:1px;background:linear-gradient(90deg,transparent,#d4a73a)}.intro__line i:last-child{transform:scaleX(-1)}.intro__bday{margin-top:.7rem!important;font-family:Cormorant Garamond,Georgia,serif;font-size:clamp(1.5rem,6.4vw,2.6rem);letter-spacing:.04em;color:#fffdf8;animation:intro-rise .9s ease 2.6s both}.intro__from{margin-top:1.6rem!important;font-family:Georgia,serif;font-size:.78rem;letter-spacing:.3em;text-transform:uppercase;color:#e7c98b;animation:intro-rise .9s ease 3.6s both}.intro__from span{display:block;margin-top:.1rem;font-family:Dancing Script,cursive;font-size:clamp(2.6rem,12vw,4.2rem);letter-spacing:0;text-transform:none;color:#ff9db0;text-shadow:0 0 26px rgba(255,120,150,.55);animation:intro-beat 1.1s ease-in-out 4.4s 2}@keyframes intro-rise{0%{opacity:0;transform:translateY(18px)}}@keyframes intro-beat{50%{transform:scale(1.08)}}.intro__skip{position:absolute;bottom:max(18px,env(safe-area-inset-bottom));left:0;right:0;font-family:Caveat,cursive;font-size:1.05rem;color:#f7e3b08c;animation:intro-rise 1s ease 3s both}@media (prefers-reduced-motion: reduce){.intro,.intro *,.intro__name span{animation:none!important;opacity:1}}.lf-container{font-family:Georgia,Times New Roman,serif;color:#3a1a1a;-webkit-tap-highlight-color:transparent;background:#f8f0dc;min-height:100vh;position:relative;overflow-x:hidden}.lf-container img{-webkit-user-drag:none;user-select:none}.lf-container button{font-family:inherit}#gift-landing{position:relative;width:100vw;height:100dvh;overflow:hidden;background:radial-gradient(circle at center,#f8f0dc,#faecc8,#f7e5c0)}#gift-landing.hidden{display:none}.gift-fade-veil{position:absolute;inset:0;background-color:linen;opacity:1;transition:opacity .9s ease-out;pointer-events:none;z-index:0}#gift-landing.state-curtain .gift-fade-veil,#gift-landing.state-bloom .gift-fade-veil{opacity:0}.gift-stage{position:relative;z-index:1;width:100%;height:100%}.gift-click-wrap{display:flex;height:100%;width:100%;flex-direction:column;align-items:center;justify-content:center;gap:1.5rem;transition:opacity .4s ease}#gift-landing.state-bloom .gift-click-wrap,#gift-landing.state-curtain .gift-click-wrap{opacity:0;pointer-events:none}.gift-box-btn{cursor:pointer;border:0;background:transparent;padding:0;outline:none;animation:gift-bob 3s ease-in-out infinite}.gift-box-btn img{width:min(60vw,320px);height:auto;filter:drop-shadow(0 10px 20px rgba(128,0,0,.25));transition:transform .3s ease;display:block}.gift-box-btn:hover img{transform:scale(1.05)}.gift-box-btn:active img{transform:scale(.95)}.gift-caption{font-family:Caveat,cursive;font-size:clamp(2.2rem,5.5vw,3.4rem);color:maroon;margin:0}.gift-hint{font-family:Caveat,cursive;font-size:clamp(1.1rem,2.5vw,1.35rem);color:sienna;margin:0;opacity:.8}.archery-option-btn{background:#fff9;border:1px solid rgba(128,0,0,.2);border-radius:999px;padding:8px 18px;font-family:Caveat,cursive;font-size:1.25rem;color:maroon;cursor:pointer;transition:all .2s ease;margin-top:.5rem;box-shadow:0 4px 12px #8000001a}.archery-option-btn:hover{background:#fff;transform:scale(1.05)}.bloom-field{position:absolute;inset:0;pointer-events:none;contain:layout paint style;isolation:isolate;transform:translateZ(0);z-index:1}.bloom-flower{position:absolute;left:0;top:0;object-fit:contain;will-change:transform,opacity;backface-visibility:hidden;transform:translate3d(var(--fx),var(--fy),0)}.bloom-flower.in{animation:flower-rain-in var(--rdur) cubic-bezier(.19,.75,.24,1) var(--ldelay, 0s) both,flower-float var(--dur) ease-in-out var(--fdelay, 0s) infinite}.bloom-flower.curtain-open{animation:none;transition:transform 1.3s cubic-bezier(.62,.04,.32,1) var(--cdelay, 0s),opacity 1.3s ease-in var(--cdelay, 0s);transform:translate3d(calc(var(--fx) + var(--cx, 0px)),calc(var(--fy) + var(--cy, 0px)),0) rotate(var(--rot-end, 0deg)) scale(.94);opacity:0}@keyframes gift-bob{0%,to{transform:translateY(0) rotate(-1deg)}50%{transform:translateY(-8px) rotate(1deg)}}@keyframes flower-rain-in{0%{transform:translate3d(var(--fx),calc(var(--fy) - var(--fall)),0) translate(0) rotate(var(--rot-start, -30deg)) scale(.9);opacity:0}8%{opacity:1}38%{transform:translate3d(var(--fx),calc(var(--fy) - var(--fall) * .6),0) translate(var(--sway1, 30px)) rotate(calc(var(--rot-start, -30deg) * .35)) scale(.97)}70%{transform:translate3d(var(--fx),calc(var(--fy) - var(--fall) * .2),0) translate(var(--sway2, -22px)) rotate(var(--rot-end, 0deg)) scale(1.03)}to{transform:translate3d(var(--fx),var(--fy),0) translate(0) rotate(var(--rot-end, 0deg)) scale(1);opacity:1}}@keyframes flower-float{0%,to{transform:translate3d(var(--fx),var(--fy),0) rotate(var(--rot-end, 0deg)) translateY(0)}50%{transform:translate3d(var(--fx),var(--fy),0) rotate(var(--rot-end, 0deg)) translateY(-9px)}}#page2{display:none;position:relative;width:100%;background:radial-gradient(circle at center,#f8f0dc,#faecc8,#f7e5c0);background-attachment:fixed;color:#3a1a1a;padding-bottom:5vh}#page2.shown{display:block}.page2-tint{position:fixed;inset:0;background:linear-gradient(180deg,#fff0f626,#80000026);z-index:20;pointer-events:none}.page2-content{position:relative;z-index:3}.rose-deco{position:absolute;top:0;left:calc(min(200px,48vw)*-.15);z-index:50;opacity:0}.rose-deco.spring{animation:rose-spring 1.4s cubic-bezier(.34,1.56,.64,1) both}.rose-deco img{width:min(200px,48vw);height:auto;display:block;border-radius:8px;animation:rose-sway 7s ease-in-out infinite 1.5s;filter:drop-shadow(8px 10px 14px rgba(50,10,5,.45)) drop-shadow(4px 5px 8px rgba(70,15,8,.35)) drop-shadow(2px 3px 4px rgba(0,0,0,.25)) drop-shadow(0 0 3px rgba(255,190,170,.25))}@keyframes rose-spring{0%{transform:scale(.15);opacity:0}35%{opacity:1}52%{transform:scale(1.08)}68%{transform:scale(.97)}82%{transform:scale(1.02)}to{transform:scale(1);opacity:1}}@keyframes rose-sway{0%,to{transform:rotate(0)}30%{transform:rotate(2deg)}70%{transform:rotate(-2deg)}}.hero{min-height:100vh;display:flex;align-items:center;justify-content:center;flex-direction:column;text-align:center;padding:8vh 1rem 0}.hero h1{font-family:Dancing Script,cursive;font-size:clamp(3rem,9vw,6.5rem);font-weight:700;color:maroon;margin:0;line-height:1.15;text-shadow:0 2px 16px rgba(255,255,255,.5),0 0 40px rgba(128,0,0,.08);animation:fade-up 1.2s ease-out both}.hero .sub{font-family:Caveat,cursive;font-size:clamp(1.5rem,3.5vw,2.2rem);font-weight:500;color:#6b1f3a;margin-top:.6rem;margin-bottom:2rem;animation:fade-up 1.4s .3s ease-out both}.hero .centre-wrap{animation:centre-enter 1.2s .8s cubic-bezier(.34,1.56,.64,1) both;margin-bottom:.8rem}.hero .centre-wrap img{width:min(380px,70vw);height:auto;display:block;border-radius:8px;filter:drop-shadow(0 8px 20px rgba(128,0,0,.12)) drop-shadow(0 2px 6px rgba(255,140,110,.1))}.hero .flourish{display:flex;gap:1.2rem;justify-content:center;animation:fade-up 1s 1.2s ease-out both;opacity:.35}.hero .flourish .sm{font-size:.7rem;color:maroon}.hero .flourish .heart{font-size:1rem;color:#a03040}@keyframes fade-up{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes centre-enter{0%{transform:scale(.6);opacity:0;filter:blur(6px)}to{transform:scale(1);opacity:1;filter:blur(0)}}.smile-section{display:flex;align-items:center;justify-content:center;padding:.5rem 1.5rem 25vh;position:relative;z-index:2}.smile-card{position:relative;max-width:540px;width:100%;background:linear-gradient(145deg,#fffdf8,#fef9f0,#fdf5e8);padding:clamp(1.5rem,4vw,2.5rem) clamp(1.5rem,4vw,3rem);border-radius:16px;box-shadow:0 18px 45px #7828141f,0 5px 15px #0000000f,inset 0 1px #ffffffe6;font-family:Caveat,cursive;font-size:clamp(1.5rem,3.8vw,2.2rem);font-weight:600;line-height:1.7;opacity:0;transform:translateY(20px) scale(.97);transition:opacity .8s ease,transform .8s ease;background-image:repeating-linear-gradient(transparent,transparent 30px,rgba(180,130,80,.04) 31px)}.smile-card.in{opacity:1;transform:translateY(0) scale(1)}.smile-card .deco{position:absolute;opacity:.6}.smile-card .deco.d1{top:-14px;left:26px;font-size:1.3rem;color:#e8737a;transform:rotate(-15deg)}.smile-card .deco.d2{top:10px;right:22px;font-size:.9rem;color:#7cb87c;opacity:.5;transform:rotate(20deg)}.smile-card .deco.d3{bottom:-12px;right:32px;font-size:1.1rem;color:#d4626a;opacity:.6;transform:rotate(12deg)}.smile-card .deco.d4{bottom:14px;left:20px;font-size:.7rem;color:#c4956a;opacity:.4}.smile-card p{margin:0;text-align:center;color:#3a1a1a}.smile-card .hl-smile{background:linear-gradient(180deg,transparent 50%,rgba(248,140,165,.5) 50%);padding:0 4px;border-radius:3px;color:#c43850}.smile-card .hl-peace{background:linear-gradient(180deg,transparent 50%,rgba(120,195,135,.5) 50%);padding:0 4px;border-radius:3px;color:#2a7540}.smile-card .hl-love{background:linear-gradient(180deg,transparent 50%,rgba(235,120,110,.5) 50%);padding:0 4px;border-radius:3px;color:#b02828}.smile-card .hl-home{background:linear-gradient(180deg,transparent 50%,rgba(225,185,95,.5) 50%);padding:0 4px;border-radius:3px;color:#8a6018}.lock-gate-zone{position:relative;min-height:80vh;z-index:3;display:flex;align-items:center;justify-content:center}.lock-gate-sticky{display:flex;align-items:center;justify-content:center;flex-direction:column}.lock-btn{background:none;border:none;cursor:pointer;padding:0;outline:none;animation:lockBob 3s ease-in-out infinite}.lock-btn img{width:min(130px,28vw);height:auto;display:block;filter:drop-shadow(0 10px 26px rgba(42,90,58,.35)) drop-shadow(0 0 20px rgba(255,255,255,.4));transition:transform .2s ease}.lock-btn:active img{transform:scale(.93)}@keyframes lockBob{0%,to{transform:translateY(0) rotate(-1.5deg)}50%{transform:translateY(-10px) rotate(1.5deg)}}.lock-hint{font-family:Caveat,cursive;font-size:clamp(.95rem,2.2vw,1.15rem);color:#6b4a2a;margin:1rem 0 0;opacity:.7}.lock-unlocked-msg{font-family:Dancing Script,cursive;font-size:clamp(1.5rem,4vw,2.2rem);color:#2a5a3a;animation:fade-up .8s ease-out both}#page3{display:none;position:relative;width:100%;min-height:100dvh;background:radial-gradient(circle at center,#f8f0dc,#faecc8,#f7e5c0);background-attachment:fixed;color:#3a1a1a;padding-bottom:6vh}#page3.shown{display:block;animation:page3-in .5s ease both}@keyframes page3-in{0%{opacity:0}to{opacity:1}}.page3-back{position:fixed;top:max(16px,env(safe-area-inset-top));right:16px;z-index:50;display:flex;align-items:center;gap:4px;background:#ffffff8c;border:1px solid rgba(42,90,58,.18);border-radius:999px;padding:8px 16px 8px 12px;cursor:pointer;color:#2a5a3a;font-family:Cormorant Garamond,Georgia,serif;font-size:.95rem;font-weight:600;backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);box-shadow:0 4px 14px #2a5a3a1f}.page3-back svg{width:16px;height:16px}.page3-back:active{transform:scale(.95)}.photo-grid-section{padding:1.5rem 1rem 2rem;display:flex;align-items:center;justify-content:center;animation:fade-up .8s ease-out both}.photo-grid{columns:2;column-gap:18px;width:100%;max-width:560px}@media (min-width: 640px){.photo-grid{columns:3;column-gap:22px;max-width:800px}}@media (min-width: 1024px){.photo-grid{columns:4;column-gap:28px;max-width:1200px}}.photo-card{break-inside:avoid;margin-bottom:26px;background:#fff;padding:10px 10px 30px;box-shadow:0 12px 28px #50281438;transform:rotate(var(--rot)) translateY(0);transition:opacity .7s ease,transform .7s ease;width:100%}.photo-card.size-lg{width:100%}.photo-card.size-md{width:87%}.photo-card.size-sm{width:74%}.photo-card:nth-child(odd){margin-left:0;margin-right:auto}.photo-card:nth-child(2n){margin-left:auto;margin-right:0}.photo-card.in{opacity:1;transform:rotate(var(--rot)) translateY(0)}.photo-card:hover{transform:rotate(0) scale(1.04);z-index:5;position:relative}.photo-card img{width:100%;height:auto;display:block;background:#f3e6ea;border-radius:2px}.letter-section{padding:.5rem 1rem 1.5rem;display:flex;justify-content:center;align-items:flex-start;animation:fade-up .8s .1s ease-out both}.letter-card{max-width:720px;width:100%;background:linear-gradient(#fffaf3,#fdf1e1),repeating-linear-gradient(transparent,transparent 36px,rgba(128,0,0,.07) 37px);background-blend-mode:multiply;padding:clamp(1.5rem,4vw,3rem);box-shadow:0 20px 50px #0000004d;border-radius:4px;font-family:Caveat,cursive;font-size:clamp(1.25rem,2.2vw,1.6rem);font-weight:500;color:#3a1a1a;line-height:1.75}.letter-card .word{opacity:0;transition:opacity .3s ease;display:inline-block;margin-right:.32em}.letter-card .word.in{opacity:1}.heart-divider{padding:1rem 0;display:flex;align-items:center;justify-content:center}.heart-divider span{font-family:Dancing Script,cursive;font-size:clamp(2rem,4vw,3rem);color:maroon;opacity:.4}.footer-section{padding:6vh 1rem 8vh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center}.footer-section h2{font-family:Dancing Script,cursive;font-size:clamp(3rem,9vw,6.5rem);font-weight:700;color:maroon;margin:0;line-height:1.15;text-shadow:0 2px 16px rgba(255,255,255,.5),0 0 40px rgba(128,0,0,.08);opacity:0;transform:translateY(24px);transition:opacity 1.2s ease,transform 1.2s ease}.footer-section h2.in{opacity:1;transform:translateY(0)}.footer-section p{font-family:Caveat,cursive;font-size:clamp(1.5rem,3.5vw,2.2rem);font-weight:500;color:#6b1f3a;margin-top:.6rem;opacity:0;transform:translateY(24px);transition:opacity 1.4s ease,transform 1.4s ease}.footer-section p.in{opacity:1;transform:translateY(0)}.together{position:relative;z-index:2;max-width:560px;margin:0 auto 12vh;padding:clamp(1.6rem,5vw,2.6rem) 1.25rem;width:calc(100% - 3rem);text-align:center;background:linear-gradient(145deg,#fffdf8,#fdf5e8);border:1.5px solid rgba(179,135,40,.45);border-radius:22px;box-shadow:0 18px 45px #7828141f,inset 0 0 0 5px #fffdf8e6,inset 0 0 0 6px #b3872838}.together p{margin:0}.together__kicker{font-family:Caveat,cursive;font-size:clamp(1.2rem,3.4vw,1.5rem);color:#6b1f3a}.together__days{display:flex;flex-direction:column;align-items:center;line-height:1;margin:.5rem 0 1rem!important}.together__num{font-family:Georgia,Times New Roman,serif;font-size:clamp(3.6rem,16vw,6rem);font-weight:700;color:maroon;font-variant-numeric:tabular-nums;text-shadow:0 6px 24px rgba(128,0,0,.16)}.together__unit{font-family:Dancing Script,cursive;font-size:clamp(1.6rem,5.5vw,2.3rem);color:#a0153e;margin-top:.25rem}.together__clock{display:flex;justify-content:center;flex-wrap:wrap;gap:.5rem 1.1rem;font-size:.9rem;color:#6d4a4a}.together__clock b{font-size:1.15rem;color:maroon;font-variant-numeric:tabular-nums}.together__line{font-family:Caveat,cursive;font-size:1.35rem;color:#6b1f3a;margin-top:.8rem!important}.journey{position:relative;z-index:2;max-width:620px;margin:0 auto;padding:0 1.5rem 14vh}.journey h2{font-family:Dancing Script,cursive;font-size:clamp(2.4rem,8vw,3.6rem);color:maroon;text-align:center;margin:0 0 1.6rem}.journey__list{list-style:none;margin:0;padding:0;position:relative}.journey__list:before{content:"";position:absolute;left:17px;top:10px;bottom:10px;width:2px;background:linear-gradient(#b38728,#80000080);opacity:.5}.journey__step{position:relative;padding:0 0 1.3rem 54px}.journey__dot{position:absolute;left:0;top:6px;width:36px;height:36px;border-radius:50%;display:grid;place-items:center;background:#fffdf8;border:2px solid #b38728;color:#c73659;font-size:1rem;box-shadow:0 4px 12px #8000001f}.journey__card{background:#fffdf8eb;border:1px solid rgba(128,0,0,.14);border-radius:16px;padding:.9rem 1.1rem;box-shadow:0 8px 22px #78281414}.journey__card p,.journey__card h3{margin:0}.journey__when{font-size:.78rem;letter-spacing:.14em;text-transform:uppercase;color:#8a6a1c;font-weight:700}.journey__card h3{font-family:Georgia,serif;font-size:1.2rem;color:maroon;margin:.15rem 0!important}.journey__card p:last-child{font-family:Caveat,cursive;font-size:1.3rem;color:#3a1a1a;line-height:1.35}.journey__step.is-promise .journey__card{background:linear-gradient(145deg,#fff8e6,#fdeccb);border:1.5px solid #b38728;box-shadow:0 10px 28px #b3872847}.journey__step.is-promise .journey__dot{background:maroon;border-color:#d4a73a}.journey__more{text-align:center;font-family:Caveat,cursive;font-size:1.5rem;color:#6b1f3a;margin:1.5rem 0 0}.bday-head{text-align:center;padding:11vh 1.25rem 3vh;animation:fade-up .9s ease-out both}.bday-head p{margin:0}.bday-head__kicker{font-size:.8rem;letter-spacing:.2em;text-transform:uppercase;color:#8a6a1c;font-weight:700}.bday-head h1{font-family:Dancing Script,cursive;font-size:clamp(2.3rem,9.4vw,5.5rem);line-height:1.12;color:maroon;margin:.4rem 0 .6rem;text-shadow:0 2px 16px rgba(255,255,255,.5)}.bday-head__sub{font-family:Caveat,cursive;font-size:clamp(1.3rem,3.6vw,1.7rem);color:#6b1f3a;max-width:34ch;margin:0 auto!important;line-height:1.35}button.photo-card{display:block;border:none;cursor:pointer;font:inherit;color:inherit;text-align:center}button.photo-card:focus-visible,.lf-lightbox__close:focus-visible{outline:3px solid #800000;outline-offset:3px}.photo-card__caption{display:block;font-family:Caveat,cursive;font-size:1.05rem;line-height:1.2;color:#3a1a1a;margin:8px 0 -20px}.letter-greeting{font-family:Dancing Script,cursive;font-size:clamp(1.8rem,5vw,2.4rem);color:maroon;margin:0 0 .6rem}#letter-words p{margin:0 0 .9em}.letter-signoff{font-family:Dancing Script,cursive;font-size:clamp(1.6rem,4.4vw,2.1rem);color:#a0153e;text-align:right;margin:.4rem 0 0;opacity:0;transition:opacity 1s ease}.letter-signoff.in{opacity:1}.footer-promise{font-size:clamp(1.25rem,3vw,1.6rem)!important;opacity:.85!important}.lf-lightbox{position:fixed;inset:0;z-index:1000;background:#140a0ae6;display:grid;place-items:center;padding:1.5rem}.lf-lightbox figure{margin:0;text-align:center}.lf-lightbox img{max-width:90vw;max-height:80vh;object-fit:contain;border-radius:8px;box-shadow:0 20px 60px #00000080}.lf-lightbox figcaption{font-family:Caveat,cursive;font-size:1.5rem;color:#fffdf8;margin-top:.7rem}.lf-lightbox__close{position:absolute;top:max(14px,env(safe-area-inset-top));right:14px;width:46px;height:46px;border-radius:50%;border:1px solid rgba(255,253,248,.4);background:#fffdf824;color:#fffdf8;font-size:1.2rem;cursor:pointer}.archery-option-btn{white-space:nowrap;font-size:clamp(.82rem,3.4vw,1rem);max-width:calc(100vw - 2rem)}#page2 .lock-gate-zone,#page3 .footer-section{padding-bottom:130px}.together__promise{margin:1.4rem auto 0;padding:1.1rem 1rem 1rem;max-width:400px;border-radius:18px;background:linear-gradient(145deg,maroon,#5d0a1c);border:1.5px solid #d4a73a;box-shadow:0 12px 30px #80000047;color:#fffdf8}.together__ring{font-size:1.5rem}.together__promise-num{font-family:Georgia,serif;font-size:1.1rem;color:#f3dfae}.together__promise-num b{font-size:clamp(2.2rem,9vw,3rem);color:#f7e3b0;font-variant-numeric:tabular-nums}.together__promise-text{font-family:Dancing Script,cursive;font-size:clamp(1.5rem,5vw,1.9rem);line-height:1.2}.together__promise-date{font-size:.74rem;letter-spacing:.16em;text-transform:uppercase;color:#e7c98b;margin-top:.5rem!important}.rv{opacity:0;transform:translateY(26px);transition:opacity .9s ease,transform .9s cubic-bezier(.22,1,.36,1)}.rv.rv-in{opacity:1;transform:none}.journey__step.rv{transform:translate(-22px)}.journey__step.rv.rv-in{transform:none}.bday-head h1{background:linear-gradient(100deg,maroon 0% 38%,#d4a73a 50%,maroon 62% 100%);background-size:250% 100%;-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;text-shadow:none;animation:fade-up .9s ease-out both,gold-sweep 4.5s ease-in-out 1s infinite}@keyframes gold-sweep{0%{background-position:120% 0}60%,to{background-position:-40% 0}}.forever{padding:4vh 1.25rem 2vh;display:flex;justify-content:center}.forever__card{position:relative;width:100%;max-width:520px;text-align:center;padding:clamp(1.8rem,6vw,2.8rem) 1.25rem;border-radius:24px;background:linear-gradient(145deg,#fffdf8,#fdf1dc);border:1.5px solid rgba(179,135,40,.55);box-shadow:0 22px 55px #80000029,inset 0 0 0 5px #fffdf8,inset 0 0 0 6px #b3872840;transition:background .8s ease,color .8s ease}.forever__card p,.forever__card h2{margin:0}.forever__kicker{font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;font-weight:700;color:#8a6a1c}.forever__card h2{font-family:Dancing Script,cursive;font-size:clamp(2rem,7.5vw,3rem);line-height:1.2;color:maroon;margin:.5rem 0 1.6rem!important;text-wrap:balance}.forever__buttons{display:flex;justify-content:center;gap:16px;min-height:56px}.forever__yes,.forever__no{min-width:118px;min-height:52px;padding:0 22px;border-radius:999px;font-family:Georgia,serif;font-size:1.05rem;font-weight:700;cursor:pointer}.forever__yes{border:1px solid #d4a73a;color:#fffdf8;background:linear-gradient(135deg,maroon,#c73659);box-shadow:0 10px 26px #80000059;animation:yes-pulse 1.6s ease-in-out infinite}@keyframes yes-pulse{50%{transform:scale(1.07);box-shadow:0 14px 34px #80000080}}.forever__no{border:1.5px solid rgba(128,0,0,.3);background:#fffdf8;color:maroon;transition:transform .28s cubic-bezier(.34,1.56,.64,1)}.forever__yes:focus-visible,.forever__no:focus-visible{outline:3px solid #b38728;outline-offset:3px}.forever__card.is-yes{background:linear-gradient(145deg,maroon,#5d0a1c);border-color:#d4a73a;box-shadow:0 22px 60px #80000066;animation:yes-in .8s cubic-bezier(.34,1.56,.64,1) both}@keyframes yes-in{0%{transform:scale(.9)}to{transform:none}}.forever__card.is-yes h2{color:#f7e3b0;margin:.2rem 0 .4rem!important}.forever__ring{font-size:2.4rem}.forever__answer{font-family:Dancing Script,cursive;font-size:clamp(1.9rem,7vw,2.6rem);color:#fffdf8}.forever__count{margin-top:.8rem!important;color:#f3dfae;font-size:1rem}.forever__count b{font-size:1.5rem;color:#f7e3b0}@media (prefers-reduced-motion: reduce){.rv{opacity:1;transform:none;transition:none}.bday-head h1,.forever__yes,.forever__card.is-yes{animation:none}}.quiz{padding:3vh 1.25rem 2vh;display:flex;justify-content:center}.quiz__card{width:100%;max-width:540px;text-align:center;padding:clamp(1.6rem,5vw,2.6rem) clamp(1rem,4vw,2rem);border-radius:24px;background:linear-gradient(145deg,#fffdf8,#fdf1dc);border:1.5px solid rgba(179,135,40,.55);box-shadow:0 22px 55px #80000024,inset 0 0 0 5px #fffdf8,inset 0 0 0 6px #b3872840}.quiz__card p,.quiz__card h2{margin:0}.quiz__kicker{font-size:.78rem;letter-spacing:.2em;text-transform:uppercase;font-weight:700;color:#8a6a1c}.quiz__card h2{font-family:Dancing Script,cursive;font-size:clamp(2rem,7vw,2.8rem);color:maroon;margin:.3rem 0 1.1rem!important}.quiz__body{animation:fade-up .5s ease-out both}.quiz__progress{display:flex;justify-content:center;gap:7px;margin-bottom:1rem!important}.quiz__progress span{width:26px;height:4px;border-radius:2px;background:#80000026;transition:background .4s}.quiz__progress .is-done{background:#b38728}.quiz__progress .is-now{background:maroon}.quiz__question{font-family:Georgia,serif;font-size:clamp(1.15rem,4.4vw,1.4rem);font-weight:700;color:#3a1a1a;margin-bottom:1rem!important;text-wrap:balance}.quiz__options{display:grid;gap:10px}.quiz__option{min-height:52px;padding:10px 16px;border-radius:14px;border:1.5px solid rgba(128,0,0,.2);background:#fffdf8;color:#3a1a1a;font-family:Caveat,cursive;font-size:1.35rem;cursor:pointer;transition:transform .2s,border-color .2s,background .3s,color .3s}.quiz__option:hover:not(:disabled){border-color:maroon;transform:translateY(-1px)}.quiz__option:focus-visible,.quiz__again:focus-visible{outline:3px solid #b38728;outline-offset:2px}.quiz__option.is-right{background:linear-gradient(135deg,maroon,#c73659);border-color:#d4a73a;color:#fffdf8;transform:scale(1.03)}.quiz__option.is-wrong{opacity:.45;text-decoration:line-through;cursor:default;animation:quiz-shake .4s}@keyframes quiz-shake{25%{transform:translate(-7px)}50%{transform:translate(6px)}75%{transform:translate(-3px)}}.quiz__feedback{font-family:Caveat,cursive;font-size:1.25rem;color:#6b1f3a;margin-top:.7rem!important}.quiz__score{font-family:Georgia,serif;font-size:clamp(2.8rem,12vw,4rem);font-weight:700;color:maroon;line-height:1}.quiz__verdict{font-family:Caveat,cursive;font-size:1.5rem;color:#3a1a1a;margin:.5rem 0 1rem!important}.quiz__again{min-height:44px;padding:0 20px;border-radius:999px;border:1.5px solid rgba(128,0,0,.3);background:transparent;color:maroon;font-family:Georgia,serif;font-weight:700;cursor:pointer}@media (prefers-reduced-motion: reduce){.quiz__body,.quiz__option.is-wrong{animation:none}}#page3 .footer-section{padding-bottom:4vh}#page3 .forever{padding-top:150px;padding-bottom:150px}.forever__no{touch-action:none}.forever__no{white-space:nowrap;max-width:186px;min-width:0;padding:0 14px;font-size:.95rem}.forever__phone{height:64px;fill:none;stroke:maroon;stroke-width:2;stroke-linejoin:round;animation:yes-pulse 1.8s ease-in-out infinite}.forever__phone path{fill:#c73659;stroke:none}.forever__hint{font-family:Caveat,cursive;font-size:1.4rem;color:#6b1f3a;margin-top:-.8rem!important}@media (min-width: 768px){#page3 .forever{padding-top:4vh;padding-bottom:8vh}}.player{position:fixed;bottom:max(18px,env(safe-area-inset-bottom));right:18px;z-index:90;display:flex;align-items:center;gap:10px;padding:8px;border-radius:999px;background:var(--glass-strong);border:1px solid var(--glass-border);backdrop-filter:blur(14px);-webkit-backdrop-filter:blur(14px);box-shadow:var(--shadow-soft);transition:padding .3s}.player__toggle{width:44px;height:44px;border-radius:50%;display:grid;place-items:center;font-size:1.2rem;transition:background .3s,transform .3s}.player__toggle:hover{background:#80000014;transform:scale(1.05)}.player__volume{width:0;opacity:0;transition:width .3s,opacity .3s;accent-color:#800000}.player.open .player__volume{width:84px;opacity:1;margin-right:6px}@media (hover: none){.player.open .player__volume{width:84px;opacity:1}}.doll{position:fixed;left:max(12px,env(safe-area-inset-left));bottom:max(14px,env(safe-area-inset-bottom));z-index:85;width:clamp(58px,15vw,104px);cursor:pointer;user-select:none;-webkit-user-select:none;-webkit-tap-highlight-color:transparent;touch-action:manipulation}.doll:focus-visible{outline:none}.doll:focus-visible .doll__svg{filter:drop-shadow(0 0 0 2px var(--rose, #800000))}.doll__svg{width:100%;height:auto;overflow:visible;transform-origin:50% 100%;animation:dollFloat 4.2s ease-in-out infinite;filter:drop-shadow(0 10px 16px rgba(128,0,0,.22));transition:transform .3s var(--ease-silk, ease)}.doll:hover .doll__svg{transform:scale(1.05) rotate(-2deg)}.doll:active .doll__svg{transform:scale(.96)}@keyframes dollFloat{0%,to{transform:translateY(0) rotate(-1.5deg)}50%{transform:translateY(-9px) rotate(1.5deg)}}.doll__halo{transform-box:fill-box;transform-origin:center;animation:dollHalo 3.4s ease-in-out infinite}@keyframes dollHalo{0%,to{opacity:.6;transform:scale(.95)}50%{opacity:1;transform:scale(1.12)}}.doll__arm--wave{transform-box:view-box;transform-origin:35px 94px;animation:dollWave 1.5s ease-in-out infinite}@keyframes dollWave{0%,to{transform:rotate(6deg)}50%{transform:rotate(-24deg)}}.doll__lid{transform-box:fill-box;transform-origin:top;transform:scaleY(0);animation:dollBlink 4.5s ease-in-out infinite}@keyframes dollBlink{0%,92%,to{transform:scaleY(0)}95%,97%{transform:scaleY(1)}}.doll__bow{transform-box:fill-box;transform-origin:center;animation:dollBow 3s ease-in-out infinite}@keyframes dollBow{0%,to{transform:rotate(-4deg)}50%{transform:rotate(4deg)}}.doll__kiss-mouth,.doll__svg.is-kiss .doll__smile{opacity:0}.doll__svg.is-kiss .doll__kiss-mouth{opacity:1}.doll__svg.is-kiss{animation:dollFloat 4.2s ease-in-out infinite,dollPop .5s ease}@keyframes dollPop{0%{transform:scale(1)}40%{transform:scale(1.12) rotate(3deg)}to{transform:scale(1)}}.doll__hearts{position:absolute;left:50%;top:28%;width:0;height:0;pointer-events:none}.doll__heart{position:absolute;left:0;top:0;font-size:18px;transform:translate(-50%,-50%) scale(var(--s, 1));opacity:0;animation:dollHeartUp 1.8s ease-out var(--d, 0s) forwards}@keyframes dollHeartUp{0%{opacity:0;transform:translate(-50%,-50%) scale(.2)}20%{opacity:1}to{opacity:0;transform:translate(calc(-50% + var(--x, 0px)),-150px) scale(var(--s, 1))}}.doll__bubble{position:absolute;left:50%;bottom:calc(100% + 6px);transform:translate(-10%);white-space:nowrap;max-width:62vw;background:var(--glass-strong, #fffdf8);color:var(--rose, #800000);font-family:var(--font-script, "Caveat", cursive);font-size:clamp(.95rem,3.6vw,1.25rem);font-weight:700;padding:7px 14px;border-radius:16px 16px 16px 4px;border:1.5px solid var(--glass-border, rgba(128, 0, 0, .18));box-shadow:0 8px 20px #80000024;animation:dollBubble .4s var(--ease-silk, ease) both}@keyframes dollBubble{0%{opacity:0;transform:translate(-10%) translateY(8px) scale(.9)}to{opacity:1;transform:translate(-10%) translateY(0) scale(1)}}.doll__tap-hint{display:block;text-align:center;margin-top:2px;font-family:var(--font-script, "Caveat", cursive);font-size:.82rem;color:var(--rose, #800000);opacity:.7;animation:dollHintFade 5s ease-in-out infinite}@keyframes dollHintFade{0%,to{opacity:.35}50%{opacity:.8}}@media (prefers-reduced-motion: reduce){.doll__svg,.doll__halo,.doll__arm--wave,.doll__lid,.doll__bow,.doll__tap-hint{animation:none}}.balloons{position:fixed;inset:0;z-index:60;pointer-events:none;overflow:hidden}.balloon{position:absolute;bottom:-20vh;width:var(--size, 56px);opacity:.7;animation:balloonRise var(--dur, 15s) linear var(--delay, 0s) forwards;will-change:transform;filter:drop-shadow(0 8px 12px rgba(128,0,0,.18))}@keyframes balloonRise{0%{transform:translateY(0);opacity:0}8%{opacity:.7}90%{opacity:.7}to{transform:translateY(-135vh);opacity:0}}.balloon__inner{display:block;animation:balloonSway calc(var(--dur, 15s) / 4) ease-in-out infinite alternate}@keyframes balloonSway{0%{transform:translate(calc(var(--sway, 20px) * -1)) rotate(-4deg)}to{transform:translate(var(--sway, 20px)) rotate(4deg)}}.balloon svg{display:block}.app-loading{min-height:100dvh;display:grid;place-items:center;font-family:var(--font-display);font-style:italic;font-size:1.25rem;color:maroon;background:radial-gradient(circle at center,#f8f0dc,#faecc8,#f7e5c0)}.celebration{position:relative;overflow:hidden;background:#f8f0dc}.celebration__bg{position:fixed!important;inset:0;z-index:0;opacity:.6}.celebration>*:not(.celebration__bg){position:relative;z-index:1}.hero{position:relative;min-height:100dvh;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;padding:var(--gutter);gap:clamp(16px,3vh,28px);background:radial-gradient(circle at center,#f8f0dc,#faecc8,#f7e5c0)}.hero__kicker{font-family:var(--font-body);text-transform:uppercase;letter-spacing:.3em;font-size:.74rem;color:maroon}.hero__title{font-size:clamp(2.2rem,9vw,5.5rem);line-height:1.05;display:flex;flex-direction:column;gap:.08em;letter-spacing:.02em;color:maroon;text-shadow:0 4px 30px rgba(128,0,0,.2)}.hero__sub{font-family:var(--font-display);font-style:italic;font-size:clamp(1.05rem,3vw,1.5rem);color:#5a2e2e;max-width:34ch;line-height:1.5}.hero__scroll{margin-top:clamp(20px,5vh,48px);font-size:.8rem;letter-spacing:.2em;text-transform:uppercase;color:#8a6565;animation:floaty 2.4s ease-in-out infinite}@keyframes floaty{0%,to{transform:translateY(0)}50%{transform:translateY(8px)}}:root{--midnight: #f8f0dc;--midnight-2: #faecc8;--burgundy: #800000;--burgundy-2: #6b1f3a;--rose: #800000;--rose-soft: #c73659;--rose-deep: #4a0e17;--gold: #b38728;--gold-bright: #d4a73a;--ivory: #fffdf8;--ink: #3a1a1a;--ink-dim: #6d4a4a;--ink-faint: #9c7a7a;--glass: rgba(255, 253, 248, .88);--glass-strong: rgba(255, 253, 248, .95);--glass-border: rgba(128, 0, 0, .16);--glass-blur: 16px;--font-display: "Georgia", "Cormorant Garamond", "Times New Roman", serif;--font-script: "Caveat", "Dancing Script", cursive;--font-body: "Georgia", "Times New Roman", serif;--ease-silk: cubic-bezier(.22, 1, .36, 1);--ease-soft: cubic-bezier(.4, 0, .2, 1);--radius: 20px;--radius-lg: 28px;--shadow-soft: 0 15px 35px rgba(128, 0, 0, .08), 0 5px 15px rgba(0, 0, 0, .04);--shadow-glow: 0 0 35px rgba(128, 0, 0, .2);--gutter: clamp(16px, 5vw, 64px);color-scheme:light}*{box-sizing:border-box;margin:0;padding:0}html,body{height:100%}body{background:radial-gradient(circle at center,#f8f0dc,#faecc8,#f7e5c0);background-attachment:fixed;color:var(--ink);font-family:var(--font-body);font-weight:400;line-height:1.6;-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;overflow-x:hidden;-webkit-tap-highlight-color:transparent;overscroll-behavior-y:none}#root{min-height:100%;min-height:100dvh;isolation:isolate}h1,h2,h3{font-family:var(--font-display);font-weight:600;line-height:1.12;letter-spacing:.01em;color:maroon}button{font-family:inherit;cursor:pointer;border:none;background:none;color:inherit}img{display:block;max-width:100%}:focus-visible{outline:2px solid #800000;outline-offset:3px;border-radius:6px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}.gold-text{background:linear-gradient(135deg,maroon,#b38728,maroon);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:maroon}.rose-text{background:linear-gradient(135deg,maroon,#c73659,maroon);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;color:maroon}.glass-panel{background:linear-gradient(145deg,#fffdf8,#fef9f0);border:2px solid rgba(128,0,0,.15);backdrop-filter:blur(var(--glass-blur));-webkit-backdrop-filter:blur(var(--glass-blur));border-radius:var(--radius-lg);box-shadow:0 15px 35px #80000014,0 5px 15px #0000000a}.btn-lux{display:inline-flex;align-items:center;justify-content:center;gap:.6em;padding:.95rem 1.9rem;min-height:50px;border-radius:999px;font-family:inherit;font-weight:600;font-size:clamp(.95rem,2.4vw,1.05rem);letter-spacing:.02em;color:#fffaf0;background:linear-gradient(135deg,maroon,#a0153e,#c73659);border:1px solid rgba(255,215,0,.35);box-shadow:0 8px 24px #8000004d,inset 0 1px #ffffff4d;transition:transform .3s var(--ease-silk),box-shadow .3s var(--ease-silk),filter .3s;will-change:transform}.btn-lux:hover{transform:translateY(-2px) scale(1.02);box-shadow:0 12px 30px #80000073,inset 0 1px #fff6}.btn-lux:active{transform:translateY(0) scale(.99)}.btn-lux--ghost{color:maroon;background:#fffdf8d9;border:1.5px solid rgba(128,0,0,.25);box-shadow:0 4px 12px #8000000f;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px)}.btn-lux--ghost:hover{background:#fffdf8;border-color:maroon}.section{position:relative;padding:clamp(72px,12vh,140px) var(--gutter)}.section__kicker{font-family:var(--font-body);text-transform:uppercase;letter-spacing:.32em;font-size:.72rem;font-weight:600;color:var(--gold);opacity:.85}.section__title{font-size:clamp(2rem,6vw,3.6rem);margin-top:.4em}@media (prefers-reduced-motion: reduce){*,*:before,*:after{animation-duration:.001ms!important;animation-iteration-count:1!important;transition-duration:.001ms!important;scroll-behavior:auto!important}}.bclock{margin-top:10px;display:flex;flex-direction:column;align-items:center;gap:6px}.bclock p{margin:0}.bclock__label,.bclock__when{font-family:Georgia,serif;font-size:.72rem;letter-spacing:.22em;text-transform:uppercase;font-weight:700;color:#8a6a1c}.bclock__cells{display:flex;gap:8px}.bclock__cell{min-width:68px;padding:8px 6px 6px;border-radius:14px;background:linear-gradient(160deg,maroon,#5d0a1c);border:1px solid #d4a73a;box-shadow:0 8px 20px #80000040;display:flex;flex-direction:column;align-items:center}.bclock__cell b{font-family:Georgia,serif;font-size:1.7rem;line-height:1.1;color:#f7e3b0;font-variant-numeric:tabular-nums}.bclock__cell i{font-style:normal;font-size:.62rem;letter-spacing:.12em;text-transform:uppercase;color:#e7c98b}.bclock--now{margin:10px 0 0;font-family:Dancing Script,cursive;font-size:clamp(1.5rem,5.5vw,2rem);color:#c1121f;text-align:center}
