:root{--yellow:#ffd83d;--yellow2:#ffed7a;--orange:#f6a623;--green:#567a32;--dark:#5f4a20;--cream:#fffdf0}
*{box-sizing:border-box}html,body{margin:0;min-height:100%;font-family:Montserrat,system-ui,sans-serif}body{min-height:100vh;overflow:hidden;background:linear-gradient(160deg,#fffef2 0%,#fff8c9 45%,#ffe991 100%);color:var(--dark)}
.scene{position:relative;z-index:3;min-height:100vh;display:grid;place-items:center;padding:24px}.card{position:relative;width:min(680px,94vw);min-height:min(820px,92vh);padding:40px 28px 20px;text-align:center;border:1px solid rgba(255,255,255,.7);border-radius:38px;background:rgba(255,255,255,.38);box-shadow:0 30px 80px rgba(133,102,0,.18),inset 0 1px 0 #fff;backdrop-filter:blur(12px)}
.mini-label{display:inline-block;padding:8px 14px;border-radius:999px;background:rgba(255,255,255,.62);font-size:11px;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.heart{margin-top:14px;color:#e8a400;font-size:20px;animation:pulse 1.8s infinite}h1{margin:2px 0 -8px;font:700 clamp(46px,9vw,76px)/1 Caveat,cursive;color:#7a5a0b}.message{margin:0;font:600 clamp(25px,5vw,38px)/1.18 Caveat,cursive;color:#79622a}.message strong{font-size:1.25em;color:#d59400;text-shadow:0 2px 0 #fff}.dedication{max-width:430px;margin:15px auto 0;font-size:13px;line-height:1.6;color:#7b6b43}
.bouquet{position:relative;width:min(480px,86vw);height:390px;margin:5px auto -12px}.flower{position:absolute;bottom:45px;left:50%;width:80px;height:300px;transform-origin:50% 100%;animation:grow 1.4s cubic-bezier(.2,.8,.2,1) both}.stem{position:absolute;left:38px;bottom:0;width:5px;height:230px;border-radius:5px;background:linear-gradient(#759746,#3f682d);transform-origin:bottom}.leaf{position:absolute;width:55px;height:24px;background:linear-gradient(135deg,#7da34b,#4f7935);border-radius:100% 0 100% 0}.l1{bottom:85px;left:37px;transform:rotate(-20deg)}.l2{bottom:135px;left:-10px;transform:scaleX(-1) rotate(-18deg)}.bloom{position:absolute;left:0;top:0;width:80px;height:80px;animation:sway 3.8s ease-in-out infinite}.bloom i{position:absolute;left:27px;top:4px;width:26px;height:42px;border-radius:60% 60% 48% 48%;background:linear-gradient(#ffec67,#ffc928);transform-origin:13px 36px;box-shadow:inset 0 -5px 7px rgba(232,151,0,.12)}.bloom i:nth-child(1){transform:rotate(0deg)}.bloom i:nth-child(2){transform:rotate(45deg)}.bloom i:nth-child(3){transform:rotate(90deg)}.bloom i:nth-child(4){transform:rotate(135deg)}.bloom i:nth-child(5){transform:rotate(180deg)}.bloom i:nth-child(6){transform:rotate(225deg)}.bloom i:nth-child(7){transform:rotate(270deg)}.bloom i:nth-child(8){transform:rotate(315deg)}.bloom b{position:absolute;left:26px;top:26px;width:29px;height:29px;border-radius:50%;background:radial-gradient(circle at 40% 35%,#9c7132,#5f401c 70%);box-shadow:0 0 0 4px rgba(255,194,35,.22)}
.f1{margin-left:-42px;transform:rotate(-2deg);z-index:6}.f2{margin-left:-135px;bottom:30px;transform:rotate(-17deg) scale(.92);z-index:4;animation-delay:.12s}.f3{margin-left:58px;bottom:30px;transform:rotate(17deg) scale(.92);z-index:4;animation-delay:.2s}.f4{margin-left:-205px;bottom:12px;transform:rotate(-29deg) scale(.78);z-index:2;animation-delay:.32s}.f5{margin-left:125px;bottom:12px;transform:rotate(29deg) scale(.78);z-index:2;animation-delay:.4s}.f6{margin-left:4px;bottom:5px;transform:rotate(8deg) scale(.72);z-index:3;animation-delay:.48s}.ribbon{position:absolute;left:50%;bottom:40px;z-index:9;transform:translateX(-50%) rotate(-2deg);padding:7px 35px;background:#f2b526;color:white;font:600 22px Caveat,cursive;box-shadow:0 5px 15px rgba(120,80,0,.15)}
.music-button{position:relative;z-index:10;display:inline-flex;align-items:center;gap:9px;border:0;border-radius:999px;padding:11px 18px;background:#725514;color:white;font:600 12px Montserrat;cursor:pointer;box-shadow:0 8px 20px rgba(91,65,0,.2);transition:.25s}.music-button:hover{transform:translateY(-2px);background:#8b6817}.song-name{margin:9px 0 0;font-size:10px;letter-spacing:.08em;color:#8c7746}
.sky-glow{position:fixed;border-radius:50%;filter:blur(10px);opacity:.5}.sky-glow--one{width:430px;height:430px;top:-150px;left:-120px;background:#fff}.sky-glow--two{width:380px;height:380px;right:-130px;bottom:-130px;background:#ffc62d}.petal{position:fixed;z-index:2;top:-40px;width:15px;height:22px;border-radius:80% 0 80% 0;background:#ffd535;animation:fall linear forwards;filter:drop-shadow(0 2px 2px rgba(120,80,0,.1))}.spark{position:fixed;z-index:1;width:4px;height:4px;border-radius:50%;background:white;box-shadow:0 0 12px #fff;animation:twinkle 2s infinite alternate}
.welcome{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:20px;background:radial-gradient(circle,#fff9c9,#f8d952);transition:opacity .8s,visibility .8s}.welcome.hidden{opacity:0;visibility:hidden}.gift-button{display:flex;flex-direction:column;align-items:center;border:0;background:transparent;color:#6e5314;cursor:pointer;animation:float 2.5s ease-in-out infinite}.gift-flower{font-size:90px;filter:drop-shadow(0 15px 18px rgba(107,76,0,.18))}.gift-title{margin-top:12px;font:700 44px Caveat,cursive}.gift-subtitle{margin-top:5px;padding:10px 16px;border-radius:999px;background:rgba(255,255,255,.5);font-size:11px;font-weight:600}
@keyframes grow{from{opacity:0;transform:translateY(120px) scale(.2)}to{opacity:1}}@keyframes sway{50%{transform:rotate(4deg) translateY(-4px)}}@keyframes pulse{50%{transform:scale(1.3)}}@keyframes float{50%{transform:translateY(-10px)}}@keyframes fall{to{transform:translate3d(var(--drift),110vh,0) rotate(720deg);opacity:.2}}@keyframes twinkle{to{opacity:.15;transform:scale(.4)}}
@media(max-height:760px){.card{min-height:auto;padding-top:22px}.bouquet{height:330px;transform:scale(.86);transform-origin:top center;margin-bottom:-55px}.dedication{margin-top:8px}}@media(max-width:520px){.scene{padding:12px}.card{border-radius:28px;padding-inline:14px}.bouquet{transform:scale(.78);transform-origin:top center;margin-bottom:-80px}.gift-title{font-size:38px}.gift-subtitle{font-size:10px}}
