
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Georgia,'Times New Roman',serif;color:#fff}body{background:radial-gradient(ellipse at 50% 85%,#50305e 0%,#211537 42%,#0d1025 100%);overflow-x:hidden}.sky{position:fixed;inset:0;pointer-events:none;overflow:hidden}.star{position:absolute;width:3px;height:3px;background:#fff6da;border-radius:50%;box-shadow:none;animation:twinkle var(--dur) ease-in-out infinite alternate;opacity:.75}@keyframes twinkle{to{opacity:.15;transform:scale(.45)}}.firefly{position:absolute;width:5px;height:5px;border-radius:50%;background:#ffe99d;box-shadow:none;animation:float var(--dur) ease-in-out infinite alternate;opacity:.8}@keyframes float{to{transform:translate(var(--dx),var(--dy));opacity:.2}}.petal{position:fixed;top:-40px;width:17px;height:24px;border-radius:85% 0 85% 0;background:linear-gradient(135deg,#ff8fab,#b82965);opacity:.8;pointer-events:none;animation:fall var(--dur) linear forwards;z-index:8}@keyframes fall{to{transform:translate(var(--dx),110vh) rotate(720deg);opacity:0}}main{position:relative;z-index:2;min-height:100svh;display:flex;align-items:center;justify-content:center;padding:32px 18px 55px}.card{text-align:center;width:min(640px,100%);padding:35px 22px;border:1px solid #ffffff24;border-radius:32px;background:linear-gradient(145deg,#ffffff13,#ffffff04);box-shadow:0 12px 35px #0004;}.eyebrow{letter-spacing:.32em;text-transform:uppercase;font:12px system-ui,sans-serif;color:#ead1b3}.rose{position:relative;display:block;margin:18px auto 24px;width:180px;height:205px;border:0;background:transparent;cursor:pointer;transition:transform .5s}.rose:hover{transform:scale(1.08);}.flower{position:absolute;top:18px;left:32px;width:116px;height:116px;transform:scale(.75);transition:transform 1.8s cubic-bezier(.2,1.3,.3,1)}.opened .flower{transform:scale(1.1)}.flower span{position:absolute;left:50%;top:50%;width:65px;height:90px;border-radius:65% 65% 45% 45%;background:linear-gradient(145deg,#ffadc3 0%,#e94a83 42%,#9b174e 100%);transform-origin:50% 90%;box-shadow:inset -5px -5px 9px #6b123c44}.flower span:nth-child(1){transform:translate(-50%,-60%) rotate(0)}.flower span:nth-child(2){transform:translate(-50%,-60%) rotate(72deg)}.flower span:nth-child(3){transform:translate(-50%,-60%) rotate(144deg)}.flower span:nth-child(4){transform:translate(-50%,-60%) rotate(216deg)}.flower span:nth-child(5){transform:translate(-50%,-60%) rotate(288deg)}.flower span:nth-child(6){width:48px;height:65px;transform:translate(-50%,-60%);background:linear-gradient(#ffb7cd,#ba225c)}.opened .flower span:nth-child(1){transform:translate(-50%,-73%) rotate(0)}.opened .flower span:nth-child(2){transform:translate(-50%,-73%) rotate(72deg)}.opened .flower span:nth-child(3){transform:translate(-50%,-73%) rotate(144deg)}.opened .flower span:nth-child(4){transform:translate(-50%,-73%) rotate(216deg)}.opened .flower span:nth-child(5){transform:translate(-50%,-73%) rotate(288deg)}.stem{position:absolute;left:88px;top:120px;width:7px;height:79px;background:linear-gradient(90deg,#244e3a,#69aa66,#224a37);border-radius:6px;transform:rotate(5deg)}.leaf{position:absolute;top:147px;width:44px;height:24px;background:linear-gradient(45deg,#2d6b49,#79ae65);border-radius:100% 0 100% 0}.leaf.left{left:49px;transform:rotate(25deg)}.leaf.right{left:90px;transform:rotate(75deg) scaleX(-1)}h1{font-weight:normal;font-size:clamp(33px,7vw,56px);line-height:1.14;margin:12px 0 15px;text-shadow:0 0 35px #ff91bd77}.hint{font:14px/1.7 system-ui,sans-serif;color:#e9d8ec}.message{max-height:0;opacity:0;overflow:hidden;transform:translateY(16px);transition:opacity .6s,transform .6s}.opened .message{max-height:none;overflow:visible;opacity:1;transform:translateY(0)}.message p{font-size:clamp(18px,3.5vw,23px);line-height:1.8;color:#fff1f3;margin:18px auto;max-width:510px}.age{font:500 13px system-ui,sans-serif;letter-spacing:.17em;color:#f7c6db}.signature{font-size:23px;color:#ffcadc;margin-top:28px}.button{border:1px solid #ffc8dc70;color:#fff;background:#ffffff14;border-radius:99px;padding:13px 22px;font:14px system-ui,sans-serif;cursor:pointer;margin-top:16px;transition:background .2s}.button:hover{background:#ffffff30}.bottom{position:relative;z-index:2;text-align:center;color:#ddc3d4;font:12px system-ui,sans-serif;padding-bottom:18px}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation-duration:.01ms!important;transition-duration:.01ms!important}}
@media(max-width:600px){.card{padding:28px 17px;border-radius:24px}.star:nth-child(n+23),.firefly:nth-of-type(n+7){display:none}}.star,.firefly,.petal{will-change:transform,opacity}
/* light, compositor-friendly glow: static halos, only transforms/opacity animate */
.star,.firefly{contain:layout style paint;transform:translateZ(0);backface-visibility:hidden}
.star{width:2px;height:2px;background:#fff9ed}
.firefly{width:4px;height:4px;background:#ffe4a0}
.star::after,.firefly::after{content:"";position:absolute;inset:-5px;border-radius:50%;background:radial-gradient(circle,#ffe5a077,transparent 70%);pointer-events:none}
.firefly::after{inset:-9px;background:radial-gradient(circle,#ffcf7677,transparent 70%)}
@media(max-width:600px){.star:nth-child(n+19),.firefly:nth-of-type(n+6){display:none}}
 .sky canvas{display:block;position:absolute;inset:0;pointer-events:none}