*{margin:0;padding:0;box-sizing:border-box}html,body,#root{height:100%}body{font-family:Inter,system-ui,sans-serif;overflow:hidden;background:#1a0409;-webkit-font-smoothing:antialiased}.app{position:fixed;top:0;right:0;bottom:0;left:0;overflow:hidden;background:radial-gradient(120% 90% at 50% 42%,#3a0a15,#23060d 45%,#120307);display:flex;flex-direction:column;align-items:center;justify-content:center}.glow{position:absolute;top:40%;left:50%;width:90vmin;height:90vmin;translate:-50% -50%;border-radius:50%;background:radial-gradient(circle,rgba(214,31,44,.22) 0%,rgba(214,31,44,.08) 45%,transparent 70%);animation:glow-breathe 7s ease-in-out infinite;pointer-events:none}@keyframes glow-breathe{0%,to{opacity:.75;transform:translate(-50%,-50%) scale(1)}50%{opacity:1;transform:translate(-50%,-50%) scale(1.08)}}.vignette{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:40;background:radial-gradient(115% 80% at 50% 42%,transparent 52%,rgba(6,1,4,.72) 100%)}.dust{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none}.dust span{position:absolute;border-radius:50%;background:#ffd9a8;box-shadow:0 0 6px 1px #ffd9a899;animation:twinkle ease-in-out infinite}@keyframes twinkle{0%,to{opacity:.08;transform:scale(.7)}50%{opacity:.7;transform:scale(1.15)}}.falling{position:absolute;top:0;right:0;bottom:0;left:0;pointer-events:none;z-index:5}.fp{position:absolute;top:-6vh;border-radius:150% 0;background:linear-gradient(135deg,#ff6b74,#b81823);opacity:.7;animation:fall linear infinite}@keyframes fall{0%{transform:translateY(-8vh) rotate(0);opacity:0}12%{opacity:.7}to{transform:translate(var(--drift),112vh) rotate(560deg);opacity:.7}}.rose-wrap{position:relative;z-index:10;background:none;border:none;padding:0;cursor:pointer;filter:drop-shadow(0 18px 34px rgba(0,0,0,.55));animation:sway 6.5s ease-in-out 1.4s infinite;transform-origin:50% 92%;-webkit-tap-highlight-color:transparent}.rose-wrap.single{width:min(86vw,62vh,460px)}.rose-wrap.bouquet{width:min(92vw,52vh,520px)}.rose-wrap:active{scale:.98}@keyframes sway{0%,to{rotate:-1.4deg}50%{rotate:1.4deg}}.rose-svg{display:block;width:100%;height:auto;overflow:visible}.head{transform-box:fill-box;transform-origin:center;animation:bloom 1.3s cubic-bezier(.2,.8,.3,1.08) both}@keyframes bloom{0%{opacity:0;transform:scale(.14) rotate(-45deg)}55%{opacity:1}to{opacity:1;transform:scale(1) rotate(0)}}.wrap,.ribbon{animation:dew-in .7s .15s both}.stem{transform-box:view-box;transform-origin:150px 366px;animation:bloom-stem 1s ease-out both}@keyframes bloom-stem{0%{opacity:0;transform:scaleY(.4)}to{opacity:1;transform:scaleY(1)}}.rim{stroke:#ffbec6a6;stroke-width:2.2;stroke-linecap:round;animation:dew-in 1s .9s both}.dew{animation:dew-in 1s 1.5s both}@keyframes dew-in{0%{opacity:0}to{opacity:1}}.burst path{animation:petal-fly .75s ease-out both}@keyframes petal-fly{0%{opacity:1;transform:translate(150px,150px) scale(1)}to{opacity:0;transform:translate(calc(150px + var(--tx)),calc(150px + var(--ty))) rotate(var(--rot)) scale(1.3)}}.message{position:relative;z-index:20;text-align:center;padding:0 26px;margin-top:1vh}.message p{font-family:Cormorant Garamond,Georgia,serif;font-style:italic;font-weight:600;font-size:clamp(1.35rem,5.6vw,2.1rem);line-height:1.35;color:#fff;text-shadow:0 0 26px rgba(255,107,116,.55),0 2px 14px rgba(0,0,0,.6);animation:line-in 1s ease-out both}.message .sign{margin-top:6px;font-size:clamp(.85rem,3vw,1.1rem);font-style:italic;color:#ffd7c8d1;text-shadow:0 1px 10px rgba(0,0,0,.6);animation:line-in 1s .85s both}@keyframes line-in{0%{opacity:0;transform:translateY(10px);filter:blur(5px)}to{opacity:1;transform:none;filter:none}}.back-link{position:fixed;top:12px;left:12px;z-index:60;width:38px;height:38px;display:grid;place-items:center;font:600 1.15rem Inter,sans-serif;color:#fff;text-decoration:none;background:#3c0c1680;border:1px solid rgba(255,255,255,.28);border-radius:50%;backdrop-filter:blur(8px);-webkit-backdrop-filter:blur(8px)}.page-footer{position:fixed;left:14px;bottom:12px;z-index:60;font-size:.62rem;letter-spacing:.14em;text-transform:uppercase;color:#fff6}
