:root{color:#fff8fb;font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;background:#3b1025;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-x:hidden}button{font:inherit}button:focus-visible{outline-offset:4px;outline:3px solid #ffe066}h1,p{margin:0}.birthday-gift{background:radial-gradient(circle at 18% 18%,#ffe0663d,#0000 24rem),radial-gradient(circle at 78% 72%,#ff7eb647,#0000 28rem),linear-gradient(140deg,#3b1025 0%,#641a39 46%,#2a0c21 100%);place-items:center;min-height:100svh;padding:clamp(16px,4vw,48px);display:grid;position:relative;overflow:hidden}.glow-field{pointer-events:none;background:radial-gradient(circle at 50% 42%,#fff8fb29,#0000 20rem),radial-gradient(circle at 58% 66%,#ffd37824,#0000 17rem);animation:7s ease-in-out infinite alternate glowBreath;position:absolute;inset:-10%}.petals{pointer-events:none;position:absolute;inset:0;overflow:hidden}.petals span{--delay:calc(var(--i) * -.62s);--left:calc((var(--i) * 13%) - 12%);left:var(--left);opacity:.64;width:clamp(10px,1.5vw,18px);height:clamp(16px,2.4vw,30px);transform:rotate(calc(var(--i) * 19deg));animation:9s linear infinite petalFall;animation-delay:var(--delay);background:linear-gradient(145deg,#ffd9e7,#ff7eb6);border-radius:999px 999px 999px 0;position:absolute;top:-12%}.petals span:nth-child(3n){background:linear-gradient(145deg,#fff0a6,#ffb94d)}.petals span:nth-child(4n){opacity:.42;animation-duration:12s}.gift-stage{z-index:1;text-align:center;grid-template-rows:auto minmax(290px,1fr) auto;place-items:center;gap:clamp(14px,2.4vw,24px);width:min(100%,760px);min-height:min(91svh,780px);display:grid;position:relative}.stage-copy{justify-items:center;gap:clamp(8px,1.6vw,13px);width:min(100%,650px);display:grid}.eyebrow{color:#ffe8f1;letter-spacing:.08em;text-transform:uppercase;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#2a0c218f;border:1px solid #fff8fb42;border-radius:999px;align-items:center;min-height:32px;padding:0 14px;font-size:clamp(.76rem,1.4vw,.88rem);font-weight:850;display:inline-flex}.stage-copy h1{color:#fff8fb;letter-spacing:0;text-wrap:balance;text-shadow:0 3px 24px #2a0c219e;max-width:12.8em;font-size:clamp(2.15rem,6.5vw,5.2rem);font-weight:950;line-height:.98}.note{color:#fff8fbe0;text-wrap:pretty;max-width:34rem;font-size:clamp(1rem,2vw,1.22rem);font-weight:560;line-height:1.62}.gift-object-zone{perspective:1100px;place-items:end center;width:min(92vw,620px);min-height:clamp(278px,44svh,430px);display:grid;position:relative}.gift-box{filter:drop-shadow(0 34px 60px #15040f57);width:min(76vw,430px);height:clamp(142px,22vw,198px);position:absolute;bottom:clamp(8px,2svh,22px)}.box-base,.box-lid{border-radius:26px;position:absolute;left:50%;transform:translate(-50%)}.box-base{background:linear-gradient(90deg,#0000 45%,#ffeef794 45% 55%,#0000 55%),linear-gradient(145deg,#ed4f91 0%,#ad275f 58%,#7b1947 100%);width:92%;height:70%;bottom:0;overflow:hidden;box-shadow:inset 0 0 0 1px #fff8fb33,inset 0 -24px 46px #530d3052}.box-lid{z-index:4;transform-origin:50% 100%;background:linear-gradient(90deg,#0000 45%,#ffeef7ad 45% 55%,#0000 55%),linear-gradient(145deg,#ff86ba 0%,#e9488c 56%,#a8205d 100%);width:100%;height:34%;top:10%;box-shadow:0 18px 28px #22051733}.gift-stage-closed .box-lid{animation:2.8s ease-in-out infinite alternate lidGlow}.vertical-ribbon,.box-shine{pointer-events:none;position:absolute}.vertical-ribbon{background:linear-gradient(#fff6fab8,#fff6fa5c);inset:0 45%}.box-shine{filter:blur(1px);background:#fff8fb33;border-radius:999px;width:26%;height:20%;inset:14% 7% auto auto}.ribbon-loop,.ribbon-knot{z-index:5;background:linear-gradient(145deg,#fff0a6,#ffb94d);position:absolute;top:-74%;left:50%;box-shadow:inset 0 0 0 1px #5b290c14}.ribbon-loop{border-radius:999px 999px 999px 20px;width:clamp(52px,12vw,92px);height:clamp(38px,8vw,66px)}.loop-left{transform:translate(-96%)rotate(-18deg)}.loop-right{transform:translate(-4%)scaleX(-1)rotate(-18deg)}.ribbon-knot{aspect-ratio:1;border-radius:16px;width:clamp(34px,7vw,54px);top:-31%;transform:translate(-50%)rotate(45deg)}.cake-garden{z-index:3;aspect-ratio:1.2;place-items:end center;width:min(70vw,350px);animation:3.2s ease-in-out infinite alternate cakeBreath;display:grid;position:absolute;bottom:clamp(74px,13svh,112px)}.cake-layer{border-radius:28px 28px 38px 38px;position:absolute;left:50%;transform:translate(-50%);box-shadow:inset 0 0 0 1px #6b2d4614,0 18px 36px #33091f29}.layer-one{background:radial-gradient(circle at 22% 20%,#ff7eb6 0 7px,#0000 8px),radial-gradient(circle at 50% 20%,#ffbf58 0 7px,#0000 8px),radial-gradient(circle at 78% 20%,#ff7eb6 0 7px,#0000 8px),linear-gradient(#fff4f8 0 30%,#ffd1e3 31% 100%);width:78%;height:28%;bottom:20%}.layer-two{background:radial-gradient(circle at 17% 26%,#ffbf58 0 8px,#0000 9px),radial-gradient(circle at 38% 26%,#ed4f91 0 8px,#0000 9px),radial-gradient(circle at 62% 26%,#ffbf58 0 8px,#0000 9px),radial-gradient(circle at 83% 26%,#ed4f91 0 8px,#0000 9px),linear-gradient(#fff8fb 0 34%,#f6b9d1 35% 100%);width:94%;height:30%;bottom:0}.cake-top{background:linear-gradient(#fff8fb,#ffd8e7);border-radius:50%;width:56%;height:18%;position:absolute;bottom:48%;box-shadow:0 18px 24px #5611321f}.cake-face{z-index:2;gap:46px;display:flex;position:absolute;bottom:23%}.cake-face span{background:#6b173d;border-radius:999px;width:11px;height:15px;box-shadow:0 20px 0 -5px #f179a9}.candle-row{z-index:3;gap:clamp(22px,5vw,44px);display:flex;position:absolute;bottom:62%}.candle{cursor:pointer;background:repeating-linear-gradient(45deg,#fffafc 0 8px,#ff7eb6 9px 15px);border:0;border-radius:999px;width:20px;height:62px;transition:transform .24s,filter .24s;position:relative;box-shadow:0 10px 20px #4e102f24}.candle:not(:disabled):hover{filter:brightness(1.08);transform:translateY(-5px)}.candle:disabled{cursor:default}.flame{opacity:0;background:linear-gradient(#fff4a8,#ffb02e 70%,#ff6b79);border-radius:999px 999px 999px 0;width:18px;height:26px;transition:opacity .24s,transform .3s,box-shadow .3s;position:absolute;top:-27px;left:50%;transform:translate(-50%)rotate(45deg)scale(.45);box-shadow:0 0 24px #ffcc4600}.candle.is-lit .flame{opacity:1;animation:.76s ease-in-out infinite alternate flameFlicker;transform:translate(-50%)rotate(45deg)scale(1);box-shadow:0 0 26px #ffcc46c7}.wish-orbit{z-index:5;pointer-events:none;position:absolute;inset:2% 0 20%}.wish-star{color:#4a102f;cursor:pointer;pointer-events:auto;background:linear-gradient(145deg,#fff8cf,#ffbf58);border:1px solid #fff8fb6b;border-radius:999px;justify-content:center;align-items:center;gap:7px;min-width:98px;min-height:48px;padding:0 14px;transition:transform .24s,box-shadow .24s,background .24s;animation:3.4s ease-in-out infinite alternate starFloat;display:inline-flex;position:absolute;box-shadow:0 16px 30px #2a0c213d}.wish-star span{font-size:.9rem;font-weight:900}.wish-star:hover,.wish-star.is-open{background:linear-gradient(145deg,#fffdf0,#ffe066);transform:translateY(-4px)scale(1.05);box-shadow:0 20px 42px #ffbe5452}.wish-star-0{top:12%;left:4%}.wish-star-1{animation-delay:-.8s;top:20%;right:3%}.wish-star-2{animation-delay:-1.5s;top:0;left:calc(50% - 49px)}.final-card{z-index:6;color:#4a102f;transform-origin:50% 100%;background:radial-gradient(circle at 15% 18%,#ff7eb633,#0000 9rem),linear-gradient(145deg,#fff8fb,#ffe1ec);border:1px solid #6b173d21;border-radius:28px;align-content:center;justify-items:center;gap:14px;width:min(88vw,440px);min-height:250px;padding:clamp(24px,5vw,42px);display:grid;position:absolute;top:clamp(8px,3svh,28px);box-shadow:0 26px 70px #15040f47}.card-seal{aspect-ratio:1;color:#fff8fb;background:linear-gradient(145deg,#b51f62,#ed4f91);border-radius:999px;place-items:center;width:64px;animation:1.6s ease-in-out infinite alternate heartPulse;display:grid;box-shadow:0 14px 30px #b51f624d}.final-card p{color:#4a102fc2;letter-spacing:.08em;text-transform:uppercase;font-size:.9rem;font-weight:850}.final-card strong{color:#4a102f;text-wrap:balance;max-width:11em;font-size:clamp(2rem,5vw,3.2rem);line-height:1.02}.stage-actions{justify-items:center;gap:12px;width:min(100%,560px);min-height:74px;display:grid}.primary-action,.secondary-action{cursor:pointer;border-radius:999px;justify-content:center;align-items:center;gap:10px;min-height:54px;padding:0 22px;font-weight:900;transition:transform .22s,box-shadow .22s,background .22s;display:inline-flex}.primary-action{color:#3b1025;background:linear-gradient(145deg,#fff8cf,#ffbf58);border:1px solid #fff8fb4d;box-shadow:0 18px 40px #ffb94d47}.secondary-action{color:#fff8fb;background:#2a0c219e;border:1px solid #fff8fb57;box-shadow:0 18px 36px #15040f2e}.primary-action:hover,.secondary-action:hover{transform:translateY(-2px)}.primary-action:active,.secondary-action:active{transform:scale(.98)}.soft-hint{color:#fff8fb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#2a0c218f;border-radius:999px;align-items:center;min-height:42px;padding:0 16px;font-weight:780;display:inline-flex}.wish-texts{gap:8px;width:min(100%,520px);display:grid}.wish-texts p{color:#fff8fb;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:#2a0c2194;border:1px solid #fff8fb2e;border-radius:18px;padding:10px 14px;font-size:clamp(.94rem,1.8vw,1.05rem);line-height:1.45}@media (width<=620px){.birthday-gift{padding:14px}.gift-stage{grid-template-rows:auto minmax(260px,1fr) auto;gap:10px;min-height:94svh}.stage-copy h1{max-width:10.8em;font-size:clamp(2rem,10vw,3.35rem)}.note{max-width:22rem;font-size:.98rem;line-height:1.5}.gift-object-zone{min-height:clamp(258px,42svh,360px)}.gift-box{width:min(86vw,360px);height:clamp(132px,34vw,172px)}.cake-garden{width:min(76vw,300px);bottom:clamp(64px,12svh,92px)}.wish-orbit{inset:0 0 22%}.wish-star{min-width:84px;min-height:44px;padding:0 11px}.wish-star-0{top:19%;left:0}.wish-star-1{top:28%;right:0}.wish-star-2{top:2%;left:calc(50% - 42px)}.final-card{border-radius:22px;min-height:228px;top:0}.final-card strong{font-size:clamp(1.8rem,8vw,2.5rem)}.stage-actions{min-height:66px}}@media (height<=690px){.gift-stage{grid-template-rows:auto minmax(220px,1fr) auto;min-height:95svh}.eyebrow{min-height:28px;font-size:.7rem}.stage-copy h1{font-size:clamp(1.85rem,7.4vw,3.6rem)}.note{font-size:.92rem;line-height:1.42}.gift-object-zone{min-height:230px}.gift-box{height:126px}.cake-garden{width:min(66vw,280px);bottom:64px}.final-card{min-height:204px;padding:20px}}@media (prefers-reduced-motion:reduce){*,:before,:after{scroll-behavior:auto!important;transition-duration:.001ms!important;animation-duration:.001ms!important;animation-iteration-count:1!important}}@keyframes glowBreath{0%{opacity:.72;transform:scale(1)}to{opacity:1;transform:scale(1.05)}}@keyframes petalFall{0%{transform:translateY(-10%)rotate(0)}to{transform:translate(22vw,120svh)rotate(250deg)}}@keyframes lidGlow{0%{filter:brightness()}to{filter:brightness(1.08)}}@keyframes cakeBreath{0%{transform:translateY(0)}to{transform:translateY(-5px)}}@keyframes flameFlicker{0%{filter:hue-rotate(-4deg);transform:translate(-50%)rotate(41deg)scale(.96)}to{filter:hue-rotate(5deg);transform:translate(-50%)rotate(48deg)scale(1.06)}}@keyframes starFloat{0%{translate:0}to{translate:0 -9px}}@keyframes heartPulse{0%{transform:scale(1)}to{transform:scale(1.08)}}
