@import "https://fonts.googleapis.com/css2?family=Cormorant+Garamond:wght@500;700&family=Manrope:wght@400;600;700;800&display=swap";:root{color:#f8eccc;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Manrope,sans-serif;line-height:1.5}*{box-sizing:border-box}html,body,#root{min-height:100%}body{background:radial-gradient(circle at 12% 18%,#e4a23326,#0000 34%),radial-gradient(circle at 88% 8%,#ffd37829,#0000 30%),radial-gradient(circle at 50% 82%,#a2671047,#0000 42%),linear-gradient(160deg,#1a1206 8%,#2f210d 45%,#110b03 100%);margin:0}h1,h2,p{margin:0}.cake-image-wrap.interactive-cake{cursor:default;outline:none}.cake-sparkles{pointer-events:none;position:absolute;inset:0}.cake-twinkle{left:var(--x);top:var(--y);width:calc(13px * var(--size));height:calc(13px * var(--size));opacity:.32;animation:2.9s cubic-bezier(.45,.05,.55,.95) infinite cake-twinkle;animation-delay:var(--delay);background:linear-gradient(#fff1b8fa,#e8af3af5);border-radius:2px;position:absolute;transform:translate(-50%,-50%)rotate(45deg);box-shadow:0 0 10px #f4c45ed1,0 0 26px #b87f1970}.cake-twinkle:before,.cake-twinkle:after{content:"";background:#ffdf8ef2;border-radius:999px;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}.cake-twinkle:before{width:2px;height:calc(18px * var(--size))}.cake-twinkle:after{width:calc(18px * var(--size));height:2px}@keyframes cake-twinkle{0%,to{opacity:.3;transform:translate(-50%,-50%)rotate(45deg)scale(.66)}38%{opacity:.74;transform:translate(-50%,-50%)rotate(45deg)scale(.88)}50%{opacity:1;transform:translate(-50%,-50%)rotate(45deg)scale(1.04)}76%{opacity:.58;transform:translate(-50%,-50%)rotate(45deg)scale(.8)}}@media (width<=480px){.cake-twinkle{width:calc(10px * var(--size));height:calc(10px * var(--size))}}.cake-stage{width:100%;min-height:100dvh;padding:clamp(1rem,2.6vw,2.5rem);padding-left:max(clamp(1rem, 2.6vw, 2.5rem), env(safe-area-inset-left));padding-right:max(clamp(1rem, 2.6vw, 2.5rem), env(safe-area-inset-right));padding-top:max(clamp(1rem, 2.6vw, 2.5rem), env(safe-area-inset-top));padding-bottom:max(clamp(1rem, 2.6vw, 2.5rem), env(safe-area-inset-bottom));background:radial-gradient(circle at 20% 14%,#ecd2ff57,#0000 44%),radial-gradient(circle at 84% 88%,#bd98ff4d,#0000 46%),radial-gradient(circle at 50% 30%,#aa86dd 0%,#8d66c6 48%,#704ea8 100%);place-items:center;display:grid;position:relative;overflow:hidden}.landing-overlay{z-index:40;pointer-events:none;position:absolute;inset:0;overflow:hidden}.burst{opacity:0;width:10px;height:10px;position:absolute}.burst.active{opacity:1}.burst-one{top:34%;left:20%}.burst-two{top:34%;right:20%}.confetti{width:var(--size);height:calc(var(--size) * .58);background:hsl(var(--hue) 100% 60%);opacity:0;border-radius:999px;position:absolute;top:0;left:0;transform:translate(-50%,-50%);box-shadow:0 0 10px #ffe298eb,0 0 22px #ffac4873}.burst.active .confetti{animation:confetti-burst var(--dur) ease-out forwards;animation-delay:var(--delay)}.cake-entry-blast{z-index:3;pointer-events:none;position:absolute;inset:0;overflow:hidden}.cake-entry-blast .confetti{animation-iteration-count:1}.intro-title{text-align:center;opacity:0;filter:blur(5px);flex-wrap:wrap;justify-content:center;align-items:center;gap:.18rem;width:min(96vw,1080px);max-width:96vw;display:inline-flex;position:absolute;top:42%;left:50%;transform:translate(-50%,-50%)scale(.8)}.intro-title .type-line{color:#fff2d1;text-shadow:0 5px 14px #5a340a99,0 0 26px #ffc45494;letter-spacing:.02em;white-space:normal;text-wrap:balance;overflow-wrap:anywhere;max-width:100%;font-family:Cormorant Garamond,serif;font-size:clamp(1.6rem,5vw,3.4rem);font-weight:700;line-height:1.05}.intro-title .type-caret{background:linear-gradient(#fff7dc 0%,#ffd07a 100%);border-radius:999px;flex-shrink:0;align-self:flex-end;width:clamp(2px,.35vw,4px);height:clamp(2.05rem,5.8vw,4.2rem);animation:1.2s step-end infinite caret-blink;box-shadow:0 0 10px #ffc96d8c}.intro-title.show{animation:6.2s forwards intro-title-seq}.balloon-layer{pointer-events:none;opacity:0;position:absolute;inset:0}.balloon-layer.show{opacity:1}.balloon{left:var(--x);width:calc(52px * var(--scale));height:calc(68px * var(--scale));background:radial-gradient(circle at 32% 24%, #ffffffe6 0 11%, hsla(var(--hue), 100%, 88%, .48) 22%, hsl(var(--hue), 82%, 62%) 62%, hsl(var(--hue), 75%, 45%) 100%);opacity:0;border-radius:54% 54% 48% 48%/58% 58% 42% 42%;position:absolute;bottom:-170px;transform:translate(-50%)rotate(-3deg);box-shadow:inset -8px -10px 14px #24110438,inset 6px 8px 10px #ffffff59,0 10px 16px #301e0e4d}.balloon-layer.show .balloon{animation:balloon-rise var(--dur) cubic-bezier(.2, .8, .25, 1) forwards;animation-delay:var(--delay)}.balloon-knot{background:hsl(var(--hue), 70%, 40%);clip-path:polygon(50% 100%,0 0,100% 0);width:10px;height:9px;position:absolute;bottom:-6px;left:50%;transform:translate(-50%)}.balloon-string{width:2px;height:calc(120px + (50px * var(--scale)));background:linear-gradient(#8a561e94,#8a561e1a);border-radius:999px;position:absolute;top:calc(100% + 1px);left:50%;transform:translate(-50%)}.balloon-pop{pointer-events:none;width:1px;height:1px;position:absolute;top:22%;left:50%;transform:translate(-50%,-50%)}.balloon-pop i{width:var(--pop-size);height:var(--pop-size);background:hsl(var(--hue), 95%, 66%);opacity:0;border-radius:50%;position:absolute;top:0;left:0;box-shadow:0 0 8px #ffce86b3}.balloon-layer.show .balloon-pop i{animation:balloon-pop-particle var(--pop-dur) ease-out forwards;animation-delay:var(--pop-delay)}.atmosphere{pointer-events:none;position:absolute;inset:0}.intro-atmosphere{z-index:1}.intro-atmosphere .glow-dot{filter:blur(.25px)}.glow-dot{left:var(--x);width:var(--size,14px);aspect-ratio:1;filter:blur(.15px);opacity:0;animation:float-up var(--duration) ease-in-out infinite;animation-delay:var(--delay);background:radial-gradient(circle at 35% 35%,#fff7df 0 24%,#ffd27a 62%,#ffc75c1f 100%);border-radius:50%;position:absolute;bottom:-40px}.glow-dot:after{content:"";filter:blur(1.2px);background:radial-gradient(circle,#ffd6756b,#0000 68%);border-radius:50%;position:absolute;inset:-45%}.cake-showcase{z-index:2;text-align:center;-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);background:linear-gradient(#f9ecff6b,#ecd5ff29);border-radius:30px;width:min(900px,96vw);padding:clamp(1.1rem,2.2vw,1.8rem);position:relative;box-shadow:0 22px 48px #311a4e4d,inset 0 0 0 1px #fff4ff59}.cake-scene{perspective:1200px;width:min(640px,98%);height:clamp(280px,56vw,460px);margin:.4rem auto 1rem;position:relative}.soft-light{background:radial-gradient(at 50% 24%,#fff1ffd9,#ffd4f647 42%,#0000 74%);width:100%;height:100%;position:absolute;top:0;left:0}.cake-shadow{filter:blur(12px);background:radial-gradient(circle,#2a144a85,#0000 72%);border-radius:50%;width:62%;height:48px;position:absolute;bottom:18px;left:50%;transform:translate(-50%)}.cake-image-wrap{filter:drop-shadow(0 18px 30px #28124e61);width:min(500px,90%);transform-style:preserve-3d;position:absolute;bottom:20px;left:50%;transform:translate(-50%)perspective(1200px)}.cake-image-wrap:before{content:"";filter:blur(5px);z-index:-1;background:radial-gradient(#1f0c3a7a,#0000 72%);border-radius:50%;height:24px;position:absolute;bottom:-18px;left:6%;right:6%}.cake-image{image-rendering:auto;transform-origin:50%;backface-visibility:hidden;filter:saturate(1.08)contrast(1.07)brightness(1.02);-webkit-user-select:none;user-select:none;pointer-events:none;border-radius:24px;width:100%;height:auto;animation:11.5s ease-in-out infinite alternate cake-spin-earth;display:block;transform:translateZ(30px)rotateY(0)}.cake{width:min(560px,94%);height:88%;transform-style:preserve-3d;flex-direction:column;justify-content:flex-end;align-items:center;display:flex;position:absolute;bottom:36px;left:50%;transform:translate(-50%)rotateX(9deg)}.candle{z-index:8;background:linear-gradient(#ffe595 0%,#f8be29 46%,#dc8e04 100%);border-radius:10px;width:16px;height:62px;position:absolute;bottom:calc(100% - 6px);left:50%;transform:translate(-50%);box-shadow:inset -2px 0 2px #7a4a0c4d,0 8px 14px #69491c33}.candle:before{content:"";background:linear-gradient(#6f4f2f 0%,#2a1b11 100%);border-radius:2px;width:2px;height:10px;position:absolute;top:-8px;left:50%;transform:translate(-50%)}.flame{transform-origin:bottom;background:radial-gradient(circle at 50% 62%,#fff4d0 0 30%,#ffc535 58%,#ef8d08 100%);border-radius:60%/75% 75% 35% 35%;width:14px;height:24px;animation:1.1s ease-in-out infinite flame-flicker;position:absolute;bottom:calc(100% + 4px);left:50%;transform:translate(-50%);box-shadow:0 0 16px #ffb228d9,0 0 34px #f5a51466}.tier{background:linear-gradient(90deg,#9b671c 0%,#d79d3d 14%,#fbe2a6 44%,#dca64f 68%,#935f1a 100%),linear-gradient(#fff5cf8c,#955d1238);border:1px solid #ffe8ab8c;border-radius:999px/34px;position:relative;overflow:visible;box-shadow:inset 0 -18px 20px #6e420859,inset 0 10px 12px #fff2cc80,0 12px 20px #51310a38}.tier:before{content:"";background:radial-gradient(at 50% 35%,#fff7de 0%,#f4cc7d 45%,#c08022 100%);border-radius:50%;height:30px;position:absolute;top:-14px;left:1.5%;right:1.5%;box-shadow:inset 0 6px 8px #fff6dbbf,0 4px 8px #7c4f1438}.tier:after{content:"";background:radial-gradient(at 50% 45%,#74460f59,#0000 72%);border-radius:50%;height:20px;position:absolute;bottom:8px;left:6%;right:6%}.tier-rim{z-index:3;background:linear-gradient(#fff9e5f2,#f6cb74d1);border-radius:50%;height:18px;position:absolute;top:-8px;left:2%;right:2%;box-shadow:inset 0 3px 5px #fffff1bf,0 2px 4px #7e4f1340}.tier-band{filter:blur(.4px);z-index:1;background:radial-gradient(#8c551061,#8c551000 72%);border-radius:50%;height:26px;position:absolute;bottom:16px;left:4%;right:4%}.tier-top{z-index:4;width:38%;height:92px;transform:translateZ(24px)}.tier-mid{z-index:3;width:58%;height:112px;margin-top:-7px;transform:translateZ(14px)}.tier-bottom{z-index:2;width:78%;height:128px;margin-top:-8px;transform:translateZ(4px)}.tier-top,.tier-mid,.tier-bottom{transform-style:preserve-3d}.tier-mid{box-shadow:inset 0 -20px 22px #633d0c5c,inset 0 8px 12px #fff1cd7a,0 14px 24px #5a380f42}.tier-bottom{box-shadow:inset 0 -22px 24px #5d380a66,inset 0 8px 13px #ffeec670,0 16px 26px #53300a4d}.swirl{opacity:.95;z-index:4;border-top:3px solid #7de4f0;border-radius:50%;height:22px;position:absolute;top:34%;left:8%;right:8%}.swirl:after{content:"";border:3px solid #7de4f0;border-color:#7de4f0 #7de4f0 #0000 #0000;border-radius:50%;width:18px;height:18px;position:absolute;top:-7px;right:12%;transform:rotate(20deg)}.swirl-top{top:42%}.swirl-mid{top:30%}.swirl-bottom{top:28%}.tier-flowers,.plate-flowers{z-index:5;position:absolute;inset:0}.flower{left:var(--x);top:var(--y);transform:translate(-50%, -50%) rotate(var(--r));filter:drop-shadow(0 2px 2px #462d0f40);transform-style:preserve-3d;position:absolute}.flower:before,.flower:after{content:"";border-radius:999px;position:absolute;top:50%;left:50%}.flower:before{background:linear-gradient(180deg, var(--petal-light) 0%, var(--petal-mid) 70%, var(--petal-dark) 100%);width:34%;height:58%;box-shadow:0 -17px 0 0 var(--petal-mid), 0 17px 0 0 var(--petal-mid), -17px 0 0 0 var(--petal-mid), 17px 0 0 0 var(--petal-mid), -12px -12px 0 0 var(--petal-mid), 12px -12px 0 0 var(--petal-mid), -12px 12px 0 0 var(--petal-mid), 12px 12px 0 0 var(--petal-mid);transform:translate(-50%,-50%)}.flower:after{background:linear-gradient(180deg, #fffffff2, var(--petal-light) 58%, var(--petal-mid) 100%);width:26%;height:42%;box-shadow:0 -11px 0 0 var(--petal-light), 0 11px 0 0 var(--petal-light), -11px 0 0 0 var(--petal-light), 11px 0 0 0 var(--petal-light), -8px -8px 0 0 var(--petal-light), 8px -8px 0 0 var(--petal-light), -8px 8px 0 0 var(--petal-light), 8px 8px 0 0 var(--petal-light);transform:translate(-50%,-50%)rotate(24deg)}.flower-core{z-index:2;background:radial-gradient(circle at 35% 35%,#fff0a9 0%,#fbb731 62%,#cf6f07 100%);border-radius:50%;width:34%;height:34%;position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)translateZ(4px);box-shadow:0 0 8px #e48f1266,inset 0 -2px 3px #8d4c0859}.flower.s{width:30px;height:30px}.flower.m{width:40px;height:40px}.flower.l{width:52px;height:52px}.flower.blue{--petal-light:#dbf5ff;--petal-mid:#77cfef;--petal-dark:#3c98bf}.flower.orange{--petal-light:#ffe7bf;--petal-mid:#ffad64;--petal-dark:#d2782d}.flower.pink{--petal-light:#ffeaf7;--petal-mid:#efc9f9;--petal-dark:#b78bc5}.cake-join{filter:blur(.25px);z-index:2;background:radial-gradient(#76480f7a,#76480f0f 72%);border-radius:50%;width:78%;height:11px;margin-top:-6px}.cake-plate{z-index:1;background:linear-gradient(#f3cb88 0%,#d0933f 100%);border-radius:50%/44%;width:94%;height:64px;margin-top:-6px;position:relative;transform:translateZ(-6px);box-shadow:inset 0 4px 6px #ffe9c68c,inset 0 -8px 10px #814e1c57,0 10px 18px #3a291a4d}.plate-flowers{transform:translateY(-6px)}.plate-rim{background:linear-gradient(#fff2d6eb,#efb6598c);border-radius:50%;height:12px;position:absolute;top:8px;left:4%;right:4%}.cake-plate:after{content:"";background:radial-gradient(at 50% 42%,#6840165c,#0000 74%);border-radius:50%;height:20px;position:absolute;bottom:6px;left:6%;right:6%}.wish-card{text-align:center;margin-top:.5rem;width:min(100%,66ch);margin-inline:auto}.wish-card p{opacity:.95;color:#fef0ff;letter-spacing:.03em;text-wrap:balance;text-shadow:0 3px 12px #3313548c;margin:0;font-family:Cormorant Garamond,serif;font-size:clamp(1.1rem,2.4vw,1.35rem);line-height:1.6}.wish-card p+p{opacity:.9;letter-spacing:.08em;text-transform:uppercase;color:#ffd8fa;margin-top:.5rem;font-size:clamp(1rem,2vw,1.15rem)}@keyframes flame-flicker{0%,to{transform:translate(-50%)scale(1)rotate(-2deg)}50%{transform:translate(-50%)scale(1.08)rotate(2deg)}}@keyframes confetti-burst{0%{opacity:0;transform:translate(-50%,-50%)rotate(0)scale(.5)}8%{opacity:1}82%{opacity:.96}to{opacity:0;transform:translate(calc(var(--dx) - 50%), calc(var(--dy) - 50%)) rotate(var(--spin)) scale(1)}}@keyframes intro-title-seq{0%{opacity:0;filter:blur(5px);transform:translate(-50%,-50%)scale(.78)}30%{opacity:1;filter:blur();transform:translate(-50%,-50%)scale(1.04)}78%{opacity:1;filter:blur();transform:translate(-50%,-50%)scale(1)}to{opacity:0;filter:blur(3px);transform:translate(-50%,-64%)scale(.93)}}@keyframes balloon-rise{0%{opacity:0;transform:translate(-50%)rotate(-5deg)}8%{opacity:1}63%{opacity:1;transform:translate(-48%,-74vh)rotate(4deg)}84%{opacity:1;transform:translate(calc(-50% + var(--center-shift)), -92vh) rotate(0deg) scale(1.02)}94%{opacity:1;transform:translate(calc(-50% + var(--center-shift)), -94vh) scale(.18)}to{opacity:0;transform:translate(calc(-50% + var(--center-shift)), -95vh) scale(.02)}}@keyframes balloon-pop-particle{0%{opacity:0;transform:translate(-50%, -50%) rotate(var(--pop-angle)) translateX(0) scale(.4)}20%{opacity:1}to{opacity:0;transform:translate(-50%, -50%) rotate(var(--pop-angle)) translateX(var(--pop-distance)) scale(1)}}@keyframes float-up{0%{opacity:0;transform:translate(0,0)scale(.42)}16%{opacity:calc(var(--alpha) + .1)}52%{opacity:calc(var(--alpha) + .26);transform:translate3d(var(--drift), -66vh, 0) scale(1.04)}82%{opacity:.44}to{opacity:0;transform:translate3d(calc(var(--drift) * -.35), -136vh, 0) scale(1.32)}}@keyframes caret-blink{0%,48%{opacity:1}50%,to{opacity:.15}}@keyframes cake-spin-earth{0%{transform:translateZ(30px)rotateX(1.2deg)rotateY(-28deg)scale(.99)}50%{transform:translateZ(30px)rotateX(0)rotateY(0)scale(1)}to{transform:translateZ(30px)rotateX(1.2deg)rotateY(28deg)scale(.99)}}@media (width<=768px){.cake-showcase{border-radius:20px;padding:1rem}.burst-one{top:30%;left:16%}.burst-two{top:30%;right:16%}.intro-title{width:min(96vw,680px);top:39%}.intro-title .type-line{letter-spacing:.01em;font-size:clamp(1.3rem,6.4vw,2.35rem)}.intro-title .type-caret{height:clamp(1.5rem,7vw,2.6rem)}.cake-scene{height:clamp(270px,70vw,356px);margin-top:1rem}.cake-image-wrap{width:min(390px,94%);bottom:16px;transform:translate(-50%)perspective(1100px)}.tier-top{height:78px}.tier-mid{height:94px}.tier-bottom{height:112px}.cake-plate{height:56px;margin-top:-4px}.cake-join{height:9px;margin-top:-4px}.plate-flowers{transform:translateY(-5px)}.candle{width:14px;height:54px}.flame{width:12px;height:20px}.flower.s{width:24px;height:24px}.flower.m{width:32px;height:32px}.flower.l{width:42px;height:42px}.flower:before{box-shadow:0 -13px 0 0 var(--petal-mid), 0 13px 0 0 var(--petal-mid), -13px 0 0 0 var(--petal-mid), 13px 0 0 0 var(--petal-mid), -9px -9px 0 0 var(--petal-mid), 9px -9px 0 0 var(--petal-mid), -9px 9px 0 0 var(--petal-mid), 9px 9px 0 0 var(--petal-mid)}.flower:after{box-shadow:0 -9px 0 0 var(--petal-light), 0 9px 0 0 var(--petal-light), -9px 0 0 0 var(--petal-light), 9px 0 0 0 var(--petal-light), -6px -6px 0 0 var(--petal-light), 6px -6px 0 0 var(--petal-light), -6px 6px 0 0 var(--petal-light), 6px 6px 0 0 var(--petal-light)}}@media (width<=480px){.cake-stage{padding:.75rem;padding-left:max(.75rem, env(safe-area-inset-left));padding-right:max(.75rem, env(safe-area-inset-right));padding-top:max(.75rem, env(safe-area-inset-top));padding-bottom:max(.75rem, env(safe-area-inset-bottom))}.cake-showcase{border-radius:16px;padding:.75rem}.cake-scene{height:clamp(232px,76vw,300px)}.cake-image-wrap{width:min(98%,350px);bottom:12px;transform:translate(-50%)perspective(900px)}.intro-title{row-gap:.18rem;top:34%}.intro-title .type-line{max-width:94vw;font-size:clamp(1.06rem,8.2vw,1.7rem);line-height:1.08}.intro-title .type-caret{width:2px;height:clamp(1.15rem,7vw,1.95rem);margin-left:.08rem}.wish-card p{font-size:clamp(.95rem,4.2vw,1.08rem);line-height:1.5}.wish-card p+p{font-size:clamp(.86rem,3.7vw,.98rem)}}@media (width<=360px){.intro-title{top:33%}.intro-title .type-line{font-size:clamp(.96rem,7.4vw,1.25rem)}.burst-one{left:12%}.burst-two{right:12%}}@media (width>=1280px){.cake-scene{height:clamp(420px,34vw,520px)}.intro-title .type-line{font-size:clamp(2.25rem,3.35vw,3.75rem)}}
