:root{color:#4f1830;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background:#fff0f5;font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,Segoe UI,sans-serif}*{box-sizing:border-box}html,body,#root{width:100%;min-width:320px;min-height:100%;margin:0}body{overflow:hidden}button{font:inherit}h1,p{margin:0}.birthday-scene{background:radial-gradient(circle at 18% 16%,#ffffffe6,#0000 19rem),radial-gradient(circle at 84% 78%,#ffcbdab8,#0000 22rem),linear-gradient(135deg,#fff8dd 0%,#ffe9f1 44%,#f7d9ff 100%);place-items:center;min-height:100svh;padding:clamp(16px,4vw,46px);display:grid;position:relative;overflow:hidden}.glow{aspect-ratio:1;pointer-events:none;filter:blur(8px);opacity:.62;border-radius:999px;width:min(46vw,480px);animation:9s ease-in-out infinite alternate glowDrift;position:absolute}.glow-one{background:radial-gradient(circle,#ff84ab6b,#0000 66%);top:8%;left:-10%}.glow-two{background:radial-gradient(circle,#ffd36480,#0000 64%);animation-delay:-3s;bottom:-10%;right:-12%}.sparkle-field{pointer-events:none;position:absolute;inset:0}.sparkle-field span{left:var(--x);top:var(--y);width:var(--size);aspect-ratio:1;opacity:.72;animation:3.8s ease-in-out infinite twinkle;animation-delay:var(--delay);background:#fff;border-radius:38% 62% 48% 52%;position:absolute;transform:rotate(45deg);box-shadow:0 0 18px #ff759e52}.gift-card{z-index:1;-webkit-backdrop-filter:blur(24px);backdrop-filter:blur(24px);background:linear-gradient(135deg,#ffffffb8,#fff6de8c),radial-gradient(circle at 72% 24%,#ff759e2e,#0000 20rem);border:1px solid #ffffffdb;border-radius:clamp(26px,4vw,44px);grid-template-columns:minmax(280px,.94fr) minmax(300px,1.06fr);align-items:center;gap:clamp(24px,4vw,58px);width:min(100%,1040px);min-height:min(88svh,740px);padding:clamp(22px,5vw,64px);display:grid;position:relative;overflow:hidden;box-shadow:0 30px 90px #7e2d4c2e}.gift-card:before,.gift-card:after{content:"";pointer-events:none;border-radius:999px;position:absolute}.gift-card:before{aspect-ratio:1;background:#ff8fb43d;width:clamp(160px,22vw,300px);top:-96px;right:-90px}.gift-card:after{aspect-ratio:1;background:#ffd66647;width:clamp(180px,25vw,330px);bottom:-130px;left:-120px}.message{z-index:2;justify-items:start;gap:clamp(12px,2vw,18px);max-width:620px;display:grid;position:relative}.eyebrow{color:#8a254f;letter-spacing:.08em;text-transform:uppercase;background:#ffffff9e;border:1px solid #972d5633;border-radius:999px;align-items:center;min-height:34px;padding:0 14px;font-size:clamp(.72rem,1.4vw,.82rem);font-weight:900;display:inline-flex}.message h1{color:#651936;letter-spacing:0;max-width:12ch;font-size:clamp(2.45rem,6.3vw,5.75rem);font-weight:950;line-height:.98}.message .note{color:#6f2a43;max-width:590px;font-size:clamp(1.02rem,2.1vw,1.24rem);font-weight:650;line-height:1.62}.visual-stage{z-index:2;place-items:center;min-height:clamp(310px,48vw,520px);display:grid;position:relative}.visual-wrap{place-items:center;width:min(100%,470px);display:grid}.envelope-gift{aspect-ratio:1.2;filter:drop-shadow(0 26px 36px #822f4e2e);width:clamp(220px,34vw,400px);animation:3.8s ease-in-out infinite alternate softFloat;position:relative}.envelope-paper,.envelope-flap{border-radius:clamp(20px,3vw,34px);position:absolute}.envelope-paper{background:linear-gradient(135deg,#0000 49.4%,#8e375824 50%,#0000 50.8%),linear-gradient(225deg,#0000 49.4%,#8e37581f 50%,#0000 50.8%),linear-gradient(145deg,#fffdf4,#ffdce9);inset:25% 4% 8%}.envelope-flap{clip-path:polygon(0 0,100% 0,50% 100%);transform-origin:50% 0;background:linear-gradient(145deg,#fff,#ffc9db);animation:2.8s ease-in-out infinite alternate flapHello;inset:8% 8% 36%}.heart-seal{aspect-ratio:1;color:#4f1029;background:linear-gradient(135deg,#ff5f98,#ffbe55);border-radius:999px;place-items:center;width:clamp(58px,8vw,84px);display:grid;position:absolute;top:50%;left:50%;transform:translate(-50%,-15%);box-shadow:0 18px 34px #ff5f9852}.ribbon{border:8px solid #ff79a8;border-radius:999px 999px 999px 12px;width:32%;height:16%;position:absolute;top:6%}.ribbon-left{left:27%;transform:rotate(-24deg)}.ribbon-right{right:27%;transform:scaleX(-1)rotate(-24deg)}.cake{aspect-ratio:1.05;cursor:pointer;color:#ff4f8d;filter:drop-shadow(0 30px 38px #79294633);background:0 0;border:0;width:clamp(230px,37vw,430px);padding:0;animation:3.4s ease-in-out infinite alternate softFloat;position:relative}.cake:focus-visible,.main-action:focus-visible{outline-offset:5px;outline:4px solid #62193657}.plate{background:linear-gradient(90deg,#ffd5e4,#fff,#ffd5e4);border-radius:999px;height:12%;position:absolute;bottom:7%;left:7%;right:7%}.cake-layer{border-radius:26px 26px 36px 36px;position:absolute;left:17%;right:17%}.cake-bottom{background:linear-gradient(#ff8ab5,#f05f98);height:31%;bottom:18%}.cake-top{background:linear-gradient(#fff4c2,#ffc46b);height:24%;bottom:44%}.cream{background:#fffdf3;border-radius:999px;height:9%;position:absolute;left:14%;right:14%;box-shadow:inset 0 -7px #ffa7c447}.cream-one{bottom:40%}.cream-two{bottom:63%}.candle{left:var(--candle-left);background:repeating-linear-gradient(135deg,#fff 0 8px,#ff78a8 8px 15px);border-radius:999px;width:5.5%;height:22%;position:absolute;bottom:68%}.candle i{aspect-ratio:.72;transform-origin:50% 100%;background:radial-gradient(circle at 50% 70%,#fff7a2 0 18%,#ffb545 45%,#ff6a72 75%);border-radius:70% 70% 62% 62%;width:96%;animation:.86s ease-in-out infinite alternate flame;position:absolute;top:-29%;left:50%;transform:translate(-50%)}.cake.is-blown .candle i{opacity:0;transition:opacity .32s,transform .32s;transform:translate(-50%)translateY(-12px)scale(.2)}.cake-heart{aspect-ratio:1;background:#ffffffdb;border-radius:999px;place-items:center;width:48px;display:grid;position:absolute;bottom:27%;left:50%;transform:translate(-50%)}.confetti-pop{pointer-events:none;position:absolute;inset:50%}.confetti-pop span{background:hsl(var(--hue), 86%, 58%);width:10px;height:16px;animation:.9s cubic-bezier(.16,1,.3,1) both confettiFly;animation-delay:var(--delay);border-radius:5px;position:absolute}.wish-bloom,.final-bloom{aspect-ratio:1;place-items:center;width:clamp(245px,39vw,440px);display:grid;position:relative}.center-heart{aspect-ratio:1;color:#4f1029;background:linear-gradient(135deg,#ff5f98,#ffbd59);border-radius:999px;place-items:center;width:34%;display:grid;box-shadow:0 22px 52px #ff5f9847}.wish-petal{color:#7a2147;min-width:clamp(82px,10vw,112px);min-height:46px;transform:translate(-50%, -50%) rotate(var(--petal-angle)) translateY(clamp(-126px, -13vw, -92px)) rotate(var(--petal-angle-back));background:#ffffffd1;border-radius:999px 999px 999px 24px;justify-content:center;align-items:center;padding:0 16px;font-size:clamp(.88rem,1.6vw,1rem);font-weight:900;transition:transform .2s;display:inline-flex;position:absolute;top:50%;left:50%;box-shadow:0 16px 30px #7d2b4a24}.wish-petal:hover{transform:translate(-50%, -50%) rotate(var(--petal-angle)) translateY(clamp(-136px, -14vw, -102px)) rotate(var(--petal-angle-back)) scale(1.04)}.halo{background:radial-gradient(circle,#ffffffeb,#0000 36%),conic-gradient(from 20deg,#ff6fa2,#ffd66f,#fff,#ff9dc0,#ff6fa2);border-radius:999px;animation:13s linear infinite haloSpin;position:absolute;inset:9%}.mini-cake{aspect-ratio:1;color:#4f1029;place-items:center;width:48%;display:grid;position:relative}.mini-cake span{border-radius:26px;position:absolute;left:8%;right:8%}.mini-cake span:first-child{background:#ff659b;height:34%;bottom:18%}.mini-cake span:nth-child(2){background:#ffc45e;height:24%;bottom:47%}.mini-cake svg{z-index:2;filter:drop-shadow(0 8px 12px #73233e2e);position:relative}.final-stars i{aspect-ratio:1;width:12px;transform:translate(-50%, -50%) rotate(var(--star-angle)) translateY(-48%) translateY(clamp(-130px, -16vw, -92px));animation:2.6s ease-in-out infinite starPulse;animation-delay:var(--star-delay);background:#fff;border-radius:4px;position:absolute;top:50%;left:50%}.main-action{z-index:3;color:#fff;cursor:pointer;background:linear-gradient(135deg,#641936,#9b2454);border:0;border-radius:999px;justify-content:center;align-items:center;gap:10px;max-width:calc(100% - clamp(44px,10vw,128px));min-height:56px;padding:0 24px;font-weight:900;transition:transform .2s,box-shadow .2s,filter .2s;display:inline-flex;position:absolute;bottom:clamp(22px,5vw,56px);left:clamp(22px,5vw,64px);box-shadow:0 20px 42px #7d1e493d}.main-action:hover{filter:brightness(1.04);transform:translateY(-3px);box-shadow:0 24px 54px #7d1e494d}@keyframes glowDrift{0%{transform:translate(0,0)scale(.96)}to{transform:translate(22px,-18px)scale(1.05)}}@keyframes twinkle{0%,to{opacity:.38;transform:scale(.78)rotate(45deg)}50%{opacity:.9;transform:scale(1.1)rotate(45deg)}}@keyframes starPulse{0%,to{opacity:.42}50%{opacity:.94}}@keyframes softFloat{0%{transform:translateY(0)rotate(-1deg)}to{transform:translateY(-12px)rotate(1deg)}}@keyframes flapHello{0%{transform:rotateX(0)}to{transform:rotateX(18deg)translateY(-3%)}}@keyframes flame{0%{transform:translate(-50%)rotate(-5deg)scaleY(.92)}to{transform:translate(-50%)rotate(5deg)scaleY(1.08)}}@keyframes confettiFly{0%{opacity:1;transform:rotate(var(--angle)) translateY(0) scale(.8)}to{opacity:0;transform:rotate(var(--angle)) translateY(calc(var(--distance) * -1)) translateX(34px) scale(1)}}@keyframes haloSpin{to{transform:rotate(360deg)}}@media (width<=760px){.gift-card{border-radius:28px;grid-template-rows:auto minmax(260px,1fr) auto;grid-template-columns:1fr;justify-items:center;gap:12px;min-height:calc(100svh - 28px);padding:26px 18px 92px}.message{text-align:center;justify-items:center}.message h1{max-width:13ch;font-size:clamp(2.1rem,11vw,3.8rem);line-height:1.03}.message .note{max-width:34rem;font-size:clamp(.98rem,4vw,1.1rem);line-height:1.5}.visual-stage{width:100%;min-height:min(42svh,360px)}.envelope-gift,.cake,.wish-bloom,.final-bloom{width:min(78vw,330px)}.main-action{width:min(100% - 36px,360px);padding:0 18px;bottom:22px;left:50%;transform:translate(-50%)}.main-action:hover{transform:translate(-50%)translateY(-3px)}}@media (width<=420px){.birthday-scene{padding:12px}.gift-card{padding:22px 14px 88px}.eyebrow{text-align:center;max-width:100%}.wish-petal{min-width:76px;min-height:40px;padding:0 12px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}
