:root{--bg:#000;--fg:#f4f1ec;--muted:rgba(244,241,236,0.55);--faint:rgba(244,241,236,0.12);--rose:#ff2d55;--rose-soft:#ff8fa3;--gold:#e8c27a;--serif:var(--font-serif),"Cormorant Garamond",Georgia,serif;--sans:var(--font-sans),system-ui,-apple-system,sans-serif}*{box-sizing:border-box;margin:0;padding:0}body,html{height:100%;background:var(--bg);color:var(--fg);font-family:var(--sans);-webkit-font-smoothing:antialiased;overflow:hidden}::selection{background:var(--rose);color:#000}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer;-webkit-tap-highlight-color:transparent}.stage{position:fixed;inset:0;background:radial-gradient(ellipse 80% 60% at 50% 120%,rgba(255,45,85,.1),transparent 70%),radial-gradient(ellipse 60% 50% at 50% -10%,rgba(255,255,255,.04),transparent 70%),#000}.stage:after{content:"";background:radial-gradient(ellipse at center,transparent 50%,rgba(0,0,0,.75) 100%);z-index:3}.layer,.stage:after{position:absolute;inset:0;pointer-events:none}.stars{z-index:0}.fx{z-index:5}.glow{position:fixed;left:-300px;top:-300px;width:600px;height:600px;border-radius:50%;pointer-events:none;background:radial-gradient(circle,rgba(255,45,85,.09),transparent 60%);opacity:0;transition:opacity 1s;z-index:1}@media (hover:none){.glow{display:none}}.scene{position:absolute;inset:0;z-index:4;display:flex;animation:sceneIn 1.4s cubic-bezier(.2,.7,.2,1) both}@keyframes sceneIn{0%{opacity:0;filter:blur(12px);transform:scale(1.03)}to{opacity:1;filter:none;transform:none}}.center{margin:auto;width:100%;max-width:760px;padding:max(32px,env(safe-area-inset-top)) 22px max(56px,env(safe-area-inset-bottom));display:flex;flex-direction:column;align-items:center;text-align:center;gap:22px}.center.scroll{max-height:100%;overflow-y:auto;scrollbar-width:none;margin:0 auto;padding-top:max(64px,env(safe-area-inset-top))}.center.scroll::-webkit-scrollbar{display:none}.serif{font-family:var(--serif);font-weight:300;letter-spacing:-.01em}em{font-style:italic;color:var(--rose-soft)}.hero{font-size:clamp(44px,9vw,92px);line-height:1}.big{font-size:clamp(36px,7vw,64px);line-height:1.05}.line{font-size:clamp(28px,5.5vw,52px);line-height:1.2;min-height:2.4em;display:flex;align-items:center}.name{font-size:clamp(22px,4vw,32px);font-style:italic;color:var(--muted)}.lead{font-size:clamp(17px,2.6vw,21px);max-width:30ch;line-height:1.5}.eyebrow{font-size:11px;letter-spacing:.35em;text-transform:uppercase;color:var(--gold)}.muted{color:var(--muted);font-size:clamp(15px,2.2vw,17px);line-height:1.6}.narrow{max-width:34ch;margin:0 auto 22px}.hint{color:rgba(244,241,236,.35);font-size:13px;letter-spacing:.04em}.caret{display:inline-block;width:2px;height:.9em;margin-left:4px;background:var(--rose);vertical-align:-.08em;animation:blink 1s steps(1) infinite}@keyframes blink{50%{opacity:0}}.fade{animation:up 1.1s cubic-bezier(.2,.7,.2,1) both}.d1{animation-delay:.3s}.d2{animation-delay:.7s}.d3{animation-delay:1.1s}.d4{animation-delay:1.5s}.d5{animation-delay:2.1s}@keyframes up{0%{opacity:0;transform:translateY(14px);filter:blur(6px)}to{opacity:1;transform:none;filter:none}}.btn{position:relative;display:inline-flex;align-items:center;justify-content:center;gap:10px;padding:15px 32px;border-radius:999px;border:1px solid rgba(255,255,255,.85);background:var(--fg);color:#000;font-size:14px;font-weight:500;letter-spacing:.08em;transition:transform .35s cubic-bezier(.2,.7,.2,1),box-shadow .35s,background .35s,color .35s;box-shadow:0 0 0 0 rgba(255,45,85,0)}.btn:hover{box-shadow:0 0 40px 2px rgba(255,45,85,.35)}.btn:active{transform:scale(.97)}.btn .heart-ico{width:15px;height:15px;fill:var(--rose)}.btn.ghost{background:rgba(255,255,255,.03);color:var(--fg);border-color:var(--faint);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}.btn.ghost:hover{border-color:rgba(255,255,255,.4);box-shadow:none}.btn:disabled{opacity:.6;cursor:default}.row{display:flex;flex-wrap:wrap;gap:12px;justify-content:center;margin-top:18px}.skip{position:fixed;bottom:max(28px,env(safe-area-inset-bottom));right:28px;font-size:12px;letter-spacing:.15em;color:rgba(255,255,255,.3);transition:color .3s}.skip:hover{color:var(--fg)}.heart-ico{width:1em;height:1em;fill:currentColor;display:inline-block;vertical-align:-.12em}.progress{position:fixed;z-index:6;top:max(22px,env(safe-area-inset-top));left:50%;transform:translateX(-50%);display:flex;gap:6px}.progress span{width:18px;height:2px;border-radius:2px;background:var(--faint);transition:background .8s}.progress span.on{background:var(--rose)}.mute{position:fixed;z-index:6;top:max(16px,env(safe-area-inset-top));right:16px;height:40px;min-width:40px;padding:0 14px;border-radius:999px;border:1px solid var(--faint);background:rgba(0,0,0,.4);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;align-items:center;justify-content:center;gap:10px;animation:up 1.2s cubic-bezier(.2,.7,.2,1) 1s both}.track{font-family:var(--serif);font-style:italic;font-size:15px;color:var(--muted);white-space:nowrap;max-width:46vw;overflow:hidden;text-overflow:ellipsis}.eq{display:flex;align-items:flex-end;gap:2px;height:14px}.eq i{width:2px;height:3px;background:var(--fg);border-radius:1px}.eq.playing i{animation:eq .9s ease-in-out infinite}.eq.playing i:nth-child(2){animation-delay:-.3s}.eq.playing i:nth-child(3){animation-delay:-.6s}.eq.playing i:nth-child(4){animation-delay:-.15s}@keyframes eq{50%{height:14px}}.twin{position:relative;width:100vw;height:clamp(300px,50vh,440px);margin-bottom:-10px}.tcanvas{inset:0;width:100%;height:100%;pointer-events:none}.tcanvas,.tstar{position:absolute}.tstar{--c:232,194,122;--tw:1;left:0;top:0;width:0;height:0;opacity:0;will-change:transform,opacity}.tstar.b{--c:255,45,85}.spark,.spark i{position:absolute;left:0;top:0}.spark i{display:block}.spark .core{width:12px;height:12px;margin:-6px;border-radius:50%;background:radial-gradient(circle,#fff 35%,rgba(255,255,255,.9) 55%,rgba(var(--c),.9) 100%);box-shadow:0 0 6px 2px #fff,0 0 18px 6px rgba(255,255,255,.55),0 0 40px 14px rgba(var(--c),.55),0 0 110px 40px rgba(var(--c),.22);transform:scale(calc(.85 + var(--tw) * .2))}.spark .airy{width:64px;height:64px;margin:-32px;border-radius:50%;background:radial-gradient(circle,transparent 44%,rgba(var(--c),.16) 52%,rgba(255,255,255,.06) 57%,transparent 66%);opacity:calc(var(--tw) * .9)}.spark .nebula{width:300px;height:300px;margin:-150px;border-radius:50%;background:radial-gradient(circle,rgba(var(--c),.22),rgba(var(--c),.06) 38%,transparent 68%);opacity:calc(.7 + var(--tw) * .3)}.spark .spike{width:300px;height:1.5px;margin:-.75px 0 0 -150px;background:linear-gradient(90deg,transparent,rgba(var(--c),.15) 22%,rgba(255,255,255,.55) 42%,#fff 50%,rgba(255,255,255,.55) 58%,rgba(var(--c),.15) 78%,transparent);filter:blur(.3px)}.spark .spike.s0{transform:scaleX(calc(.75 + var(--tw) * .35))}.spark .spike.s90{transform:rotate(90deg) scaleX(calc(.7 + var(--tw) * .35))}.spark .spike.s135,.spark .spike.s45{width:90px;margin-left:-45px;opacity:.35}.spark .spike.s45{transform:rotate(45deg) scaleX(var(--tw))}.spark .spike.s135{transform:rotate(-45deg) scaleX(var(--tw))}.tname{position:absolute;top:46px;left:-180px;width:360px;display:flex;flex-direction:column;align-items:center;gap:4px;white-space:nowrap;font-family:var(--serif);font-style:italic;font-weight:500;font-size:clamp(20px,4.4vw,38px);letter-spacing:.04em;color:#fff;text-shadow:0 0 18px rgba(var(--c),.9),0 0 40px rgba(var(--c),.5);opacity:0}.tname small{font-family:var(--sans);font-style:normal;font-size:10px;letter-spacing:.4em;text-transform:uppercase;color:rgb(var(--c));text-shadow:none}.union{position:absolute;left:50%;top:50%;width:0;height:0}.union:before{content:"";position:absolute;width:40px;height:40px;margin:-20px;border-radius:50%;background:radial-gradient(circle,#fff,rgba(255,45,85,.6) 40%,transparent 70%);opacity:0}.twin.merged .union:before{animation:bigFlash 1.6s ease-out forwards}@keyframes bigFlash{0%{opacity:1;transform:scale(.5)}25%{opacity:1;transform:scale(14)}to{opacity:0;transform:scale(22)}}.union .heart-ico{position:absolute;width:110px;height:110px;margin:-55px;fill:var(--rose);filter:drop-shadow(0 0 14px rgba(255,45,85,.95)) drop-shadow(0 0 40px rgba(255,45,85,.6)) drop-shadow(0 0 90px rgba(255,45,85,.35));transform:scale(0);opacity:0}.twin.merged .union .heart-ico{animation:heartPop 1.1s cubic-bezier(.2,1.4,.3,1) .15s forwards,beat 1.3s ease-in-out 1.4s infinite}@keyframes heartPop{0%{opacity:0;transform:scale(0) rotate(-20deg)}to{opacity:1;transform:scale(1) rotate(0)}}.union .ring{position:absolute;width:100px;height:100px;margin:-50px;border-radius:50%;border:1px solid rgba(255,255,255,.7);box-shadow:0 0 20px rgba(255,45,85,.5),inset 0 0 20px rgba(255,45,85,.3);opacity:0}.twin.merged .union .ring{animation:ripple 3s ease-out infinite}.twin.merged .union .ring:nth-child(2){animation-delay:1s}.twin.merged .union .ring:nth-child(3){animation-delay:2s}@keyframes ripple{0%{opacity:.9;transform:scale(.6)}to{opacity:0;transform:scale(4.2)}}.reveal{display:flex;flex-direction:column;align-items:center;gap:16px;opacity:0;pointer-events:none;position:relative;z-index:1}.reveal.on{animation:up 1.4s cubic-bezier(.2,.7,.2,1) .9s both;pointer-events:auto}.reveal .muted{max-width:34ch}.pair{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;gap:14px;font-family:var(--serif);font-style:italic;font-size:clamp(20px,3.6vw,30px);letter-spacing:.06em}.pair span:first-child{color:var(--gold);text-shadow:0 0 20px rgba(232,194,122,.6)}.pair span:last-child{color:var(--rose-soft);text-shadow:0 0 20px rgba(255,45,85,.6)}.pair .heart-ico{color:var(--rose);width:18px;height:18px;filter:drop-shadow(0 0 8px var(--rose))}.cake{position:relative;display:flex;flex-direction:column;align-items:center;margin-top:40px}.halo{position:absolute;top:-70px;width:260px;height:260px;border-radius:50%;background:radial-gradient(circle,rgba(255,190,110,.22),transparent 65%);animation:halo 2.4s ease-in-out infinite;transition:opacity 1.2s;pointer-events:none}.cake.blown .halo{opacity:0}.cake .halo{opacity:calc(1 - var(--blow, 0) * .6)}.mic-error{color:var(--rose-soft);max-width:36ch;margin:12px auto 0;line-height:1.5}@keyframes halo{50%{transform:scale(1.08);opacity:.8}}.candle{position:relative;width:12px;height:54px;border-radius:3px 3px 0 0;background:repeating-linear-gradient(-45deg,#f4f1ec 0 6px,var(--rose) 6px 12px);z-index:2;margin-bottom:-2px}.candle:before{content:"";position:absolute;left:50%;top:-8px;width:2px;height:9px;margin-left:-1px;background:#222}.flame-wrap{--b:var(--blow,0);position:absolute;left:50%;bottom:calc(100% + 4px);width:0;height:0;transform:skewX(calc(var(--b) * -32deg)) scaleY(calc(1 - var(--b) * .5)) scaleX(calc(1 + var(--b) * .25));transition:transform .08s linear}.flame{position:absolute;left:0;bottom:0;width:18px;height:34px;margin-left:-9px;border-radius:50% 50% 50% 50%/62% 62% 38% 38%;background:radial-gradient(ellipse at 50% 80%,#fff 0 18%,#ffe08a 35%,#ff9b3d 65%,rgba(255,60,40,0) 100%);box-shadow:0 0 22px 6px rgba(255,170,80,.55),0 0 60px 20px rgba(255,120,60,.2);transform-origin:50% 90%;animation:flicker .12s ease-in-out infinite alternate,sway 2.2s ease-in-out infinite;transition:opacity .35s,transform .35s}.flame:after{content:"";position:absolute;inset:-40px}@keyframes flicker{to{opacity:.88;filter:brightness(1.1)}}@keyframes sway{0%,to{transform:rotate(-3deg) scaleY(1)}50%{transform:rotate(3deg) scaleY(1.08)}}.cake.blown .flame{opacity:0;transform:scale(.2) translateY(10px);animation:none}.smoke{left:50%;bottom:calc(100% + 6px);pointer-events:none}.smoke,.smoke i{position:absolute}.smoke i{left:-6px;width:12px;height:12px;border-radius:50%;background:rgba(200,200,200,.35);filter:blur(4px);opacity:0}.cake.blown .smoke i{animation:smoke 4.2s cubic-bezier(.25,.6,.3,1) forwards}.cake.blown .smoke i:nth-child(2){animation-delay:.18s;animation-name:smoke2}.cake.blown .smoke i:nth-child(3){animation-delay:.4s}.cake.blown .smoke i:nth-child(4){animation-delay:.65s;animation-name:smoke2}.cake.blown .smoke i:nth-child(5){animation-delay:.95s}@keyframes smoke{0%{opacity:.9;transform:translate(0) scale(.5)}30%{opacity:.7;transform:translate(-8px,-50px) scale(1.4)}60%{opacity:.4;transform:translate(10px,-110px) scale(2.6)}to{opacity:0;transform:translate(-6px,-190px) scale(4.4)}}@keyframes smoke2{0%{opacity:.85;transform:translate(0) scale(.5)}35%{opacity:.65;transform:translate(9px,-55px) scale(1.5)}65%{opacity:.35;transform:translate(-10px,-120px) scale(2.8)}to{opacity:0;transform:translate(8px,-200px) scale(4.6)}}.tier{position:relative;background:linear-gradient(180deg,#161616,#070707);border:1px solid rgba(255,255,255,.1);overflow:hidden}.tier.top{width:150px;height:66px;border-radius:12px 12px 4px 4px;z-index:1}.tier.bottom{width:230px;height:88px;border-radius:14px 14px 6px 6px;margin-top:-1px}.frost{inset:0 0 auto 0;height:22px;background:radial-gradient(circle at 10px 0,#f4f1ec 9px,transparent 10px) 0 6px /20px 20px repeat-x,linear-gradient(#f4f1ec,#f4f1ec) 0 0 /100% 8px no-repeat}.dots,.frost{position:absolute}.dots{left:0;right:0;bottom:22px;height:6px;background:radial-gradient(circle,var(--rose) 2.5px,transparent 3px) 0 0 /22px 6px repeat-x;opacity:.85}.plate{width:290px;height:14px;margin-top:-2px;border-radius:50%;background:radial-gradient(ellipse,rgba(255,255,255,.18),rgba(255,255,255,.03) 70%)}.env{--envW:min(80vw,360px);--envH:calc(var(--envW) / 1.5);position:relative;width:var(--envW);aspect-ratio:1.5;perspective:1200px;animation:float 4.5s ease-in-out infinite;filter:drop-shadow(0 30px 60px rgba(0,0,0,.9)) drop-shadow(0 0 50px rgba(255,45,85,.1));transition:transform 1s cubic-bezier(.5,0,.2,1) 1.9s,opacity .9s ease 2s}.env:disabled{cursor:default}.env:not(:disabled):hover .env-flap{transform:rotateX(14deg)}.env.opening{animation:none;transform:translateY(60px) scale(.92);opacity:0}@keyframes float{50%{translate:0 -10px}}.env>span{position:absolute;display:block}.env-back{inset:0;border-radius:6px;background:linear-gradient(160deg,#1b1b1b,#0a0a0a);border:1px solid rgba(232,194,122,.35)}.env-letter{left:7%;right:7%;top:7%;bottom:6%;z-index:2;border-radius:4px;background:linear-gradient(170deg,#fffdfa,#fbece9);padding:14% 12%;display:flex!important;flex-direction:column;gap:12%;transition:transform 1.3s cubic-bezier(.2,.8,.2,1) .95s}.env-letter i{display:block;height:2px;border-radius:2px;background:rgba(139,30,63,.25)}.env-letter i:first-child{width:45%;background:rgba(139,30,63,.45)}.env-letter i:nth-child(4){width:60%}.env.opening .env-letter{transform:translateY(-70%)}.env-front{inset:0;z-index:3;border-radius:6px;background:linear-gradient(170deg,#161616,#0b0b0b 70%);-webkit-clip-path:polygon(0 0,50% 52%,100% 0,100% 100%,0 100%);clip-path:polygon(0 0,50% 52%,100% 0,100% 100%,0 100%)}.env-flap svg,.env-front svg{position:absolute;inset:0;width:100%;height:100%}.env-flap path,.env-front path{fill:none;stroke:rgba(232,194,122,.55);stroke-width:1.2;vector-effect:non-scaling-stroke}.env-flap{left:0;right:0;top:0;height:58%;z-index:4;transform-origin:top;background:linear-gradient(180deg,#222,#121212);-webkit-clip-path:polygon(0 0,100% 0,50% 100%);clip-path:polygon(0 0,100% 0,50% 100%);transition:transform .9s cubic-bezier(.4,0,.2,1) .4s,z-index 0s linear .75s}.env.opening .env-flap{transform:rotateX(180deg);z-index:1}.env-seal{left:50%;top:58%;z-index:5;width:58px;height:58px;margin:-29px;display:grid!important;place-items:center;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ff5c7c,#a3102f 68%,#6e0a20);box-shadow:0 4px 14px rgba(0,0,0,.6),inset 0 -3px 6px rgba(0,0,0,.35);-webkit-backface-visibility:hidden;backface-visibility:hidden;transform-origin:50% calc(29px - var(--envH) * .58);transition:transform .9s cubic-bezier(.4,0,.2,1) .4s,z-index 0s linear .75s;animation:pulse 1.8s ease-in-out infinite}.env-seal .heart-ico{width:20px;height:20px;fill:rgba(0,0,0,.45)}.env:not(:disabled):hover .env-seal{transform:rotateX(14deg)}.env.opening .env-seal{animation:sealGlow .5s ease-out both;transform:rotateX(180deg);z-index:1}@keyframes pulse{50%{scale:1.08}}@keyframes sealGlow{50%{box-shadow:0 0 30px 10px rgba(255,90,130,.8),inset 0 -3px 6px rgba(0,0,0,.35)}}.env-glow{left:5%;right:5%;top:-45%;bottom:35%;z-index:1;border-radius:50%;background:radial-gradient(ellipse at 50% 75%,rgba(255,220,160,.75),rgba(255,140,170,.3) 40%,transparent 70%);filter:blur(14px);opacity:0;transform:scale(.6);transition:opacity 1.1s ease .7s,transform 1.4s cubic-bezier(.2,.8,.2,1) .7s}.env.opening .env-glow{opacity:1;transform:scale(1.15)}.env-hint{transition:opacity .5s}.env-hint.gone{opacity:0}.petals{position:fixed;inset:0;pointer-events:none;z-index:0;overflow:hidden}.petals i{position:absolute;top:-40px;width:var(--s);height:calc(var(--s) * .8);border-radius:80% 0 80% 0;background:radial-gradient(ellipse at 30% 30%,#ff8fa3,#d6224a 60%,#8e0f2e);opacity:0;box-shadow:inset -2px -2px 4px rgba(0,0,0,.25);animation-name:petalFall;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes petalFall{0%{opacity:0;transform:translate(0) rotate(var(--r)) rotateX(0deg)}8%{opacity:.85}25%{transform:translate(calc(var(--dx) * .6),25vh) rotate(calc(var(--r) + 90deg)) rotateX(60deg)}50%{transform:translate(calc(var(--dx) * -.4),52vh) rotate(calc(var(--r) + 180deg)) rotateX(0deg)}75%{transform:translate(var(--dx),78vh) rotate(calc(var(--r) + 260deg)) rotateX(70deg)}92%{opacity:.7}to{opacity:0;transform:translate(calc(var(--dx) * .3),108vh) rotate(calc(var(--r) + 1turn)) rotateX(0deg)}}.center.letter-wrap{position:relative;z-index:1;height:100%;justify-content:center;gap:14px;padding:max(16px,env(safe-area-inset-top)) 16px max(18px,env(safe-area-inset-bottom));perspective:1400px}.tilt{width:100%;max-width:580px;transform-style:preserve-3d;will-change:transform}.paper3{position:relative;display:block;padding:3.2em 2.6em 3.4em;border-radius:16px;color:#3b1d2a;font-family:var(--font-hand),var(--font-mont),cursive;font-size:20px;line-height:1.6;text-align:left;background:url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='160' height='160'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='2'/><feColorMatrix values='0 0 0 0 0.5  0 0 0 0 0.35  0 0 0 0 0.35  0 0 0 0.05 0'/></filter><rect width='100%' height='100%' filter='url(%23n)'/></svg>"),radial-gradient(70% 45% at 100% 0,rgba(255,170,190,.45),transparent 70%),radial-gradient(60% 40% at 0 100%,rgba(255,160,185,.32),transparent 70%),radial-gradient(40% 25% at 8% 6%,rgba(255,215,170,.35),transparent 70%),linear-gradient(170deg,#fffdfa,#fdf3ef 60%,#fbece9);box-shadow:0 40px 90px rgba(0,0,0,.75),0 0 70px rgba(255,120,160,.12),inset 0 0 0 1px rgba(255,255,255,.7);animation:paperIn 1.6s cubic-bezier(.2,.8,.2,1) both;cursor:default}.paper3:before{content:"";position:absolute;inset:.75em;border-radius:10px;border:1px solid rgba(196,150,72,.6);box-shadow:inset 0 0 0 3px rgba(255,255,255,.5),inset 0 0 0 4px rgba(196,150,72,.25);pointer-events:none}@keyframes paperIn{0%{opacity:0;transform:translateY(-70px) scale(.55) rotateX(25deg) rotate(-3deg)}to{opacity:1;transform:rotate(-.5deg)}}.letterhead{position:absolute;top:1.35em;left:0;right:0;display:flex;align-items:center;justify-content:center;gap:10px;font-family:var(--font-mont),var(--sans);font-size:.42em;letter-spacing:.45em;text-transform:uppercase;color:#b88a3e}.letterhead i{display:block;width:2.6em;height:1px;background:linear-gradient(90deg,transparent,#c4964a)}.letterhead i:last-child{background:linear-gradient(270deg,transparent,#c4964a)}.sheen{position:absolute;inset:0;z-index:2;border-radius:16px;pointer-events:none;background:radial-gradient(circle at var(--lx,50%) var(--ly,30%),rgba(255,255,255,.55),transparent 50%);mix-blend-mode:soft-light}.paper-content{position:relative;z-index:1}.greet3{font-size:1.45em;line-height:1.25;color:#b0244a;margin-bottom:.15em}.para3{margin-top:.75em;text-indent:1.4em}.paper3 .w{display:inline-block;padding:.45em .22em .4em .35em;margin:-.45em -.22em -.4em -.35em;-webkit-clip-path:inset(0 100% 0 0);clip-path:inset(0 100% 0 0);text-shadow:0 0 .6px rgba(59,29,42,.5)}.sign3{margin-top:1em;display:flex;flex-direction:column;align-items:flex-end;color:#b0244a;font-size:1.3em}.sign3 svg{width:8em;height:1.2em;margin-top:-2px;overflow:visible}.sign3 path{fill:none;stroke:#b0244a;stroke-width:1.6;stroke-linecap:round;stroke-dasharray:300;stroke-dashoffset:300}.quill{position:absolute;left:0;top:0;width:0;height:0;z-index:3;opacity:0;pointer-events:none;transition:opacity .5s}.quill svg{position:absolute;left:-8px;top:-93px;width:16px;height:93px;transform-origin:8px 93px;transform:rotate(28deg);filter:drop-shadow(-6px 8px 5px rgba(60,20,30,.3))}.stamp3{position:absolute;z-index:2;left:2.2em;bottom:1.7em;width:2.3em;height:2.3em;border-radius:50%;display:grid;place-items:center;opacity:0;background:radial-gradient(circle at 35% 30%,#ff6f8f,#c21f4a 65%,#8a0f30);box-shadow:0 3px 8px rgba(90,0,20,.35),inset 0 -3px 6px rgba(0,0,0,.25),0 0 0 3px rgba(194,31,74,.15)}.stamp3 .heart-ico{width:.8em;height:.8em;fill:rgba(255,255,255,.85)}.letter-foot{min-height:52px;display:flex;align-items:center;justify-content:center}.cards{width:100%;display:grid;grid-template-columns:repeat(3,1fr);grid-gap:12px;gap:12px;margin-top:8px}@media (max-width:560px){.cards{grid-template-columns:repeat(2,1fr)}}.rcard{perspective:900px;aspect-ratio:.82}.rcard .inner{position:relative;display:block;width:100%;height:100%;transform-style:preserve-3d;transition:transform .9s cubic-bezier(.3,.7,.2,1)}.rcard.flipped .inner{transform:rotateY(180deg)}.rcard .back,.rcard .front{position:absolute;inset:0;backface-visibility:hidden;-webkit-backface-visibility:hidden;border-radius:14px;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:12px;padding:16px}.rcard .front{background:linear-gradient(160deg,#121212,#050505);border:1px solid rgba(255,255,255,.09);transition:border-color .3s,box-shadow .3s}.rcard:hover .front{border-color:rgba(255,45,85,.5);box-shadow:0 0 30px rgba(255,45,85,.15)}.rcard .front .num{font-family:var(--serif);font-size:34px;font-weight:300;color:var(--muted)}.rcard .front .heart-ico{color:var(--rose);width:14px;height:14px}.rcard .back{transform:rotateY(180deg);background:linear-gradient(160deg,#f4f1ec,#d9d4cc);color:#0a0a0a;font-family:var(--serif);font-size:clamp(17px,2.6vw,21px);font-style:italic;line-height:1.3}.beat{color:var(--rose);font-size:34px;animation:beat 1.2s ease-in-out infinite;filter:drop-shadow(0 0 18px rgba(255,45,85,.7))}.beat.big{font-size:64px}@keyframes beat{0%,to{transform:scale(1)}15%{transform:scale(1.18)}30%{transform:scale(1)}45%{transform:scale(1.12)}}.answers{margin-top:36px;gap:22px;align-items:center}.btn.yes{background:var(--rose);border-color:var(--rose);color:#000;font-weight:600;box-shadow:0 0 40px rgba(255,45,85,.45)}.btn.yes:hover{box-shadow:0 0 70px rgba(255,45,85,.7)}.btn.no{z-index:50;white-space:nowrap;transition:left .35s cubic-bezier(.2,.8,.2,1.2),top .35s cubic-bezier(.2,.8,.2,1.2)}.stamp{margin-top:14px;padding:22px 34px;border:1px solid rgba(255,255,255,.12);border-radius:14px;background:rgba(255,255,255,.025);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);display:flex;flex-direction:column;gap:8px;align-items:center}.stamp .serif{font-size:clamp(24px,4vw,32px)}.stamp .names{font-family:var(--serif);font-style:italic;color:var(--muted);font-size:18px;display:flex;gap:10px;align-items:center}.stamp .names .heart-ico{color:var(--rose);width:14px}@media (prefers-reduced-motion:reduce){*,:after,:before{animation-duration:.01s!important;transition-duration:.01s!important}}@media (max-width:520px){.track{max-width:26vw;font-size:13px}.progress{top:auto;bottom:max(18px,env(safe-area-inset-bottom))}}.wish{display:flex;flex-direction:column;align-items:center;gap:.15em;margin-top:18px;font-size:clamp(28px,5.4vw,48px);font-style:italic;font-weight:400;line-height:1.15}.wish span{color:var(--fg);text-shadow:0 0 24px rgba(255,255,255,.25);animation:wishIn 1.6s cubic-bezier(.2,.7,.2,1) both}.wish span.last{font-size:1.12em;font-weight:500;color:#ffd9a0;text-shadow:0 0 12px rgba(255,190,110,.75),0 0 40px rgba(255,150,70,.45),0 0 90px rgba(255,120,60,.25);animation:wishIn 1.6s cubic-bezier(.2,.7,.2,1) both,candleGlow 2.4s ease-in-out 2s infinite}@keyframes wishIn{0%{opacity:0;transform:translateY(10px);filter:blur(10px);letter-spacing:.08em}to{opacity:1;transform:none;filter:none}}@keyframes candleGlow{50%{text-shadow:0 0 16px rgba(255,200,120,.9),0 0 54px rgba(255,150,70,.6),0 0 120px rgba(255,120,60,.35)}}.wish-actions{margin-top:34px}.wish-actions .btn{padding:11px 20px;font-size:12px;letter-spacing:.05em;color:var(--muted)}.wish-actions .btn:hover{color:var(--fg)}.lightsout{position:fixed;inset:0;z-index:0;pointer-events:none;background:radial-gradient(ellipse at 50% 45%,rgba(0,0,0,.82),#000 75%);opacity:0;transition:opacity 1.8s ease}.lightsout.dark{opacity:.94}.lightsout.show{opacity:.8}.cake-stage{position:relative;z-index:1;transition:opacity 1.6s ease,transform 2s cubic-bezier(.2,.7,.2,1),filter 1.6s ease}.cake-stage.away{opacity:0;transform:scale(.9) translateY(30px);filter:blur(8px);pointer-events:none}.celebrate{position:fixed;inset:0;z-index:3;display:flex;flex-direction:column;align-items:center;justify-content:center;gap:14px;padding:24px;text-align:center;overflow-y:auto}.dear{font-family:var(--serif);font-style:italic;font-size:clamp(24px,4.2vw,38px);color:var(--rose-soft);text-shadow:0 0 24px rgba(255,45,85,.55);animation:dearIn 2s cubic-bezier(.2,.7,.2,1) .3s both}@keyframes dearIn{0%{opacity:0;letter-spacing:.5em;filter:blur(10px)}to{opacity:1;letter-spacing:.06em;filter:none}}.hb{position:relative;max-width:15ch;font-size:clamp(44px,9vw,112px);font-weight:400;line-height:1.02;letter-spacing:-.01em}.hb .word{white-space:nowrap;margin:0 .12em}.hb .ch,.hb .word{display:inline-block}.hb .ch{color:#ffe3ea;background:linear-gradient(180deg,#ffffff 10%,#ffe1e8 50%,#ff9fb4);-webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;filter:drop-shadow(0 2px 14px rgba(255,60,110,.35));animation:petal 1.8s cubic-bezier(.25,.8,.3,1) both}@keyframes petal{0%{opacity:0;transform:translate(var(--rx),-1.3em) rotate(var(--rr)) scale(.85)}35%{opacity:1;transform:translate(calc(var(--rx) * -.6),-.55em) rotate(calc(var(--rr) * -.5))}70%{transform:translate(calc(var(--rx) * .2),-.1em) rotate(calc(var(--rr) * .15))}to{opacity:1;transform:none}}.hb{animation:hbBeat 2.8s var(--beat-at,3s) ease-in-out infinite}@keyframes hbBeat{0%,40%,to{transform:scale(1)}10%{transform:scale(1.03)}20%{transform:scale(1)}28%{transform:scale(1.018)}}.hb-hearts{position:absolute;inset:0;pointer-events:none}.hb-hearts i{position:absolute;bottom:10%;width:var(--s);height:var(--s);color:#ff6f8f;opacity:0;filter:drop-shadow(0 0 6px rgba(255,60,110,.7));animation-name:floatUp;animation-timing-function:ease-out;animation-iteration-count:infinite;animation-fill-mode:both}.hb-hearts i .heart-ico{width:100%;height:100%;display:block}@keyframes floatUp{0%{opacity:0;transform:translate(0) scale(.4) rotate(-10deg)}15%{opacity:.9}60%{opacity:.6;transform:translate(calc(var(--dx) * .6),-90px) scale(1) rotate(8deg)}to{opacity:0;transform:translate(var(--dx),-170px) scale(.8) rotate(-6deg)}}.ornament{display:flex;align-items:center;gap:14px;color:var(--rose);animation:up 1s cubic-bezier(.2,.7,.2,1) both}.ornament i{display:block;height:1px;width:clamp(50px,12vw,120px);background:linear-gradient(90deg,transparent,var(--gold));transform-origin:right;animation:grow 1.4s var(--d,0s) cubic-bezier(.2,.7,.2,1) both}.ornament i:last-child{background:linear-gradient(270deg,transparent,var(--gold));transform-origin:left}.ornament .heart-ico{width:16px;height:16px;filter:drop-shadow(0 0 8px var(--rose));animation:beat 1.3s ease-in-out infinite}@keyframes grow{0%{transform:scaleX(0)}}.crush{padding:.05em .25em;font-size:clamp(32px,6vw,60px);font-style:italic;font-weight:500;letter-spacing:.08em;background:linear-gradient(90deg,#c99a4a,#fff1cf 45%,#e8c27a 60%,#c99a4a);background-size:200% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;filter:drop-shadow(0 0 18px rgba(232,194,122,.45));animation:crushIn 1.6s cubic-bezier(.2,.7,.2,1) both,goldFlow 5s linear infinite}@keyframes crushIn{0%{opacity:0;transform:translateY(14px);filter:blur(8px) drop-shadow(0 0 0 rgba(232,194,122,0))}to{opacity:1;transform:none;filter:blur(0) drop-shadow(0 0 18px rgba(232,194,122,.45))}}@keyframes goldFlow{to{background-position:-200% 0}}.celebrate .btn{margin-top:10px}.lock{gap:18px}.lock .big{max-width:16ch}.lock-heart{position:relative;width:74px;height:74px;color:var(--rose);filter:drop-shadow(0 0 24px rgba(255,45,85,.6));animation:up 1.1s cubic-bezier(.2,.7,.2,1) both,beat 1.6s ease-in-out 1.2s infinite}.lock-heart svg{width:100%;height:100%;fill:currentColor}.keyhole{left:50%;top:40%;width:12px;height:12px;margin-left:-6px;border-radius:50%;transition:transform .6s,opacity .6s}.keyhole,.keyhole:after{position:absolute;background:#000}.keyhole:after{content:"";left:3px;top:8px;width:6px;height:14px;-webkit-clip-path:polygon(30% 0,70% 0,100% 100%,0 100%);clip-path:polygon(30% 0,70% 0,100% 100%,0 100%)}.lock.ok .keyhole{transform:scale(0);opacity:0}.lock.ok .lock-heart{animation:unlockPop 1.2s cubic-bezier(.2,1.4,.3,1) forwards}@keyframes unlockPop{40%{transform:scale(1.35);filter:drop-shadow(0 0 50px rgba(255,45,85,1))}to{transform:scale(1.15);filter:drop-shadow(0 0 40px rgba(255,45,85,.9))}}.lock.ok>:not(.lock-heart):not(.lock-msg){transition:opacity 1s .3s;opacity:.15}.lock-field{position:relative;width:min(100%,340px);margin-top:10px}.lock-field input{width:100%;padding:12px 44px;background:transparent;border:0;border-bottom:1px solid rgba(255,255,255,.25);color:var(--fg);font-family:var(--serif);font-style:italic;font-size:26px;text-align:center;letter-spacing:.08em;outline:none;transition:border-color .4s,box-shadow .4s}.lock-field input::placeholder{color:rgba(255,255,255,.25)}.lock-field input:focus{border-color:var(--rose);box-shadow:0 12px 30px -18px rgba(255,45,85,.8)}.lock-field .eye{position:absolute;right:4px;top:50%;transform:translateY(-50%);font-size:16px;opacity:.5;padding:6px}.lock-field .eye:hover{opacity:1}.lock.wrong .lock-field{animation:shake .5s cubic-bezier(.36,.07,.19,.97) both}.lock.wrong .lock-field input{border-color:var(--rose)}.lock-msg{min-height:1.4em;color:var(--rose-soft);font-size:14px}.eyebrow.date-label{font-size:clamp(15px,2.4vw,19px);letter-spacing:.3em;text-shadow:0 0 18px rgba(232,194,122,.45)}.forever{display:flex;flex-direction:column;align-items:center;margin-top:6px}.infinity{width:min(250px,58vw);height:auto;overflow:visible;filter:drop-shadow(0 0 6px rgba(255,45,85,.7)) drop-shadow(0 0 18px rgba(255,45,85,.35))}.infinity path{fill:none;stroke-linecap:round;stroke-linejoin:round}.inf-base{stroke:rgba(255,143,163,.18);stroke-width:1;opacity:0;animation:infFade 1s var(--fs) ease forwards}.inf-draw{stroke:#ff8fa3;stroke-width:1.8;stroke-dasharray:100;stroke-dashoffset:100;animation:infDraw 2.4s var(--fs) cubic-bezier(.6,0,.3,1) forwards,infBreath 3.2s calc(var(--fs) + 2.4s) ease-in-out infinite}.inf-comet{stroke:#fff;stroke-width:3;stroke-dasharray:5 95;opacity:0;filter:drop-shadow(0 0 4px #fff);animation:comet 3.6s calc(var(--fs) + 2.3s) linear infinite}.inf-comet.two{stroke:#ffd27a;stroke-width:2.4;stroke-dasharray:3 97;filter:drop-shadow(0 0 4px #ffd27a);animation-delay:calc(var(--fs) + 4.1s)}@keyframes infFade{to{opacity:1}}@keyframes infDraw{to{stroke-dashoffset:0}}@keyframes infBreath{50%{stroke:#ffb3c2;stroke-width:2.3}}@keyframes comet{0%{stroke-dashoffset:100;opacity:1}to{stroke-dashoffset:0;opacity:1}}.forever-text{margin-top:10px;font-family:var(--serif);font-style:italic;font-weight:300;font-size:clamp(22px,3.4vw,32px);letter-spacing:.02em;line-height:1.4;color:rgba(244,241,236,.92);text-shadow:0 0 24px rgba(255,120,150,.18)}.fw{display:inline-block;margin:-.35em -.05em;padding:.35em .2em;-webkit-mask-image:linear-gradient(90deg,#000 42%,transparent 58%);mask-image:linear-gradient(90deg,#000 42%,transparent 58%);-webkit-mask-size:260% 100%;mask-size:260% 100%;-webkit-mask-position:100% 0;mask-position:100% 0;animation:write .75s ease-out forwards}@keyframes write{to{-webkit-mask-position:0 0;mask-position:0 0}}.kiss{display:inline-block;margin-left:.2em;font-style:normal;font-size:.82em;opacity:0;animation:kissIn 1.4s ease forwards}@keyframes kissIn{0%{opacity:0;transform:translateY(4px)}to{opacity:1;transform:none}}.yes-wrap{gap:16px}@media (max-height:780px){.yes-wrap{gap:10px;padding-top:20px;padding-bottom:20px}.yes-wrap .beat.big{font-size:44px}.yes-wrap .hero{font-size:clamp(34px,7vw,64px)}.yes-wrap .anniv-date{font-size:clamp(28px,4.6vw,40px)}.yes-wrap .infinity{width:min(190px,50vw)}.yes-wrap .forever-text{font-size:clamp(20px,3.2vw,28px)}}.letterbox{position:fixed;left:0;right:0;height:11vh;z-index:6;background:#000;pointer-events:none;transform:scaleY(0);animation-name:letterbox;animation-timing-function:cubic-bezier(.7,0,.2,1);animation-fill-mode:both}.letterbox.top{top:0;transform-origin:top;box-shadow:0 10px 30px rgba(0,0,0,.6)}.letterbox.bottom{bottom:0;transform-origin:bottom;box-shadow:0 -10px 30px rgba(0,0,0,.6)}@keyframes letterbox{0%{transform:scaleY(0)}8%,82%{transform:scaleY(1)}to{transform:scaleY(0)}}.flashbang{position:fixed;inset:0;z-index:7;pointer-events:none;background:radial-gradient(circle,#fff,rgba(255,220,230,.9) 50%,rgba(255,180,200,.6));opacity:0;animation:flashbang .9s ease-out both}@keyframes flashbang{0%{opacity:0}8%{opacity:.85}to{opacity:0}}@keyframes shake{0%,to{transform:translate(0)}20%{transform:translate(-6px,4px) rotate(-.4deg)}40%{transform:translate(5px,-5px) rotate(.3deg)}60%{transform:translate(-4px,2px)}80%{transform:translate(2px,-1px)}}@keyframes bigShake{0%,to{transform:translate(0)}10%{transform:translate(-14px,8px) rotate(-1deg) scale(1.02)}25%{transform:translate(12px,-10px) rotate(.8deg)}40%{transform:translate(-9px,6px) rotate(-.5deg)}55%{transform:translate(7px,-4px)}70%{transform:translate(-4px,2px)}85%{transform:translate(2px,-1px)}}.slam-title{white-space:normal}.slam-title em{display:inline}.slam-title .slam{display:inline-block;opacity:0;animation:slam .42s cubic-bezier(.25,.9,.35,1.25) both}@keyframes slam{0%{opacity:0;transform:scale(3.4) translateY(-.15em);filter:blur(10px)}60%{opacity:1;transform:scale(.9);filter:none}to{opacity:1;transform:scale(1)}}.slam-title .stretch{display:inline-block;font-size:calc(var(--grow, 1) * 1em);line-height:.8;transform-origin:50% 85%;opacity:0;animation:pop .28s cubic-bezier(.2,1.8,.4,1) both,rubber .75s ease-in-out,jelly 2.6s ease-in-out infinite}@keyframes pop{0%{opacity:0;transform:scale(0,.2) rotate(-20deg)}to{opacity:1;transform:none}}@keyframes rubber{0%{transform:none}30%{transform:scale(1.4,.7)}50%{transform:scale(.8,1.25)}70%{transform:scale(1.12,.92)}to{transform:none}}@keyframes jelly{0%,70%,to{transform:none}78%{transform:scale(1.12,.88) translateY(.04em)}86%{transform:scale(.94,1.08) translateY(-.06em)}}.slam-title .final{display:inline-block;opacity:0;animation:slamFinal .6s cubic-bezier(.2,.9,.3,1.3) both}@keyframes slamFinal{0%{opacity:0;transform:scale(5) rotate(-12deg);filter:blur(14px)}45%{opacity:1;transform:scale(.82) rotate(3deg);filter:none}70%{transform:scale(1.12) rotate(-1deg)}to{opacity:1;transform:none}}.anniv{position:relative;display:flex;flex-direction:column;align-items:center;gap:10px;margin-top:6px}.anniv:before{content:"";position:absolute;inset:-20% -10%;z-index:-1;background:radial-gradient(ellipse,rgba(232,194,122,.1),transparent 65%);pointer-events:none}.anniv-label{display:flex;align-items:center;gap:14px;font-size:10px;letter-spacing:.42em;text-transform:uppercase;color:var(--gold)}.anniv-label span{margin-right:-.42em}.anniv-label i{display:block;width:clamp(28px,6vw,56px);height:1px;background:linear-gradient(90deg,transparent,rgba(232,194,122,.8))}.anniv-label i:last-child{background:linear-gradient(270deg,transparent,rgba(232,194,122,.8))}.anniv-date{font-family:var(--font-mont),var(--sans);font-size:clamp(32px,5.6vw,52px);font-weight:300;line-height:1;letter-spacing:.08em;font-feature-settings:lining-nums tabular-nums;font-variant-numeric:lining-nums tabular-nums;background:linear-gradient(90deg,#c99a4a,#fff1cf 40%,#e8c27a 60%,#c99a4a);background-size:220% 100%;-webkit-background-clip:text;background-clip:text;color:transparent;animation:goldFlow 7s linear infinite}.anniv-date b{font-weight:300;margin:0 .18em;color:var(--rose);-webkit-text-fill-color:var(--rose)}.anniv-names{display:flex;align-items:center;gap:12px;font-size:11px;letter-spacing:.32em;text-transform:uppercase;color:var(--muted)}.anniv-names span:last-child{margin-right:-.32em}.anniv-names .heart-ico{width:11px;height:11px;color:var(--rose)}