:root{--bg:#0d0522;--pink:#ff7eb6;--lilac:#b79cff;--fg:#fdeff7}*{box-sizing:border-box;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html{scroll-behavior:smooth}body{color:var(--fg);background:radial-gradient(120% 90% at 50% 0,#2a0f55 0%,#140636 45%,#0a0420 100%);min-height:100dvh;font-family:Quicksand,sans-serif;font-weight:300;overflow-x:hidden}body.locked{height:100dvh;overflow:hidden}#galaxy{z-index:0;width:100%;height:100%;position:fixed;inset:0}#hearts{z-index:1;pointer-events:none;position:fixed;inset:0;overflow:hidden}.fheart{opacity:0;filter:drop-shadow(0 0 6px #ff7eb6aa);animation:linear forwards floatUp;position:absolute;bottom:-30px}@keyframes floatUp{0%{opacity:0;transform:translateY(0)scale(.6)}15%{opacity:.8}to{transform:translateY(-110dvh) translateX(var(--dx)) scale(1.1);opacity:0}}.script{color:#ffd1e8;text-shadow:0 0 22px #ff7eb677,0 0 50px #b79cff55;font-family:Great Vibes,cursive;font-weight:400;line-height:1.15}.script.mid{font-size:clamp(34px,9vw,54px)}.big-script{font-size:clamp(36px,9.5vw,60px)}.tiny{letter-spacing:.35em;text-transform:uppercase;color:var(--lilac);margin-bottom:18px;font-size:12px}.text{color:#fff;text-shadow:0 1px 10px #0d0522,0 0 22px #0d0522cc;max-width:34ch;font-family:Cormorant Garamond,serif;font-size:clamp(19px,5vw,24px);font-weight:500;line-height:1.65}.text.big{font-size:clamp(20px,5.2vw,26px)}.screen{z-index:5;text-align:center;padding:max(28px,env(safe-area-inset-top)) 26px max(28px,env(safe-area-inset-bottom));opacity:0;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;gap:24px;transition:opacity 1.2s,transform 1.2s;display:flex;position:fixed;inset:0;transform:scale(.96)}.screen.show{opacity:1;pointer-events:auto;transform:none}.screen h1{font-size:clamp(42px,12vw,76px)}.btn{font:inherit;color:#fff;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);background:linear-gradient(135deg,#ff7eb6cc,#9b6bffcc);border:1px solid #fff5;border-radius:999px;padding:14px 34px;font-size:17px;font-weight:600;transition:transform .2s,box-shadow .2s;box-shadow:0 0 24px #ff7eb677}.btn:active{transform:scale(.95)}.btn:hover{box-shadow:0 0 38px #ff7eb6bb}.btn.ghost{box-shadow:none;background:0 0}#main{z-index:3;opacity:0;visibility:hidden;transition:opacity 1.5s;position:relative}#main.show{opacity:1;visibility:visible}.block{text-align:center;flex-direction:column;justify-content:center;align-items:center;gap:34px;min-height:100dvh;padding:70px 26px;display:flex}.block.hero{gap:30px}.hero .script.title{font-size:clamp(46px,13vw,96px)}.btn.ghost.run{z-index:30;background:#1a0838;transition:left .25s,top .25s;position:fixed}.kitty{z-index:40;pointer-events:none;width:46px;height:46px;animation:2.4s ease-out forwards cry;position:fixed}@keyframes cry{0%{opacity:0;transform:translateY(0)scale(.3)}15%{opacity:1;transform:translateY(-6px)scale(1)}to{opacity:0;transform:translateY(60px)scale(1)}}.scroll-hint{letter-spacing:.3em;color:var(--lilac);margin-top:10px;font-size:12px;animation:2s ease-in-out infinite bob}@keyframes bob{50%{transform:translateY(8px)}}.reveal{opacity:0;filter:blur(6px);transition:all 1.3s cubic-bezier(.2,.7,.2,1);transform:translateY(36px)}.reveal.in{opacity:1;filter:none;transform:none}.photo{aspect-ratio:3/4;width:min(86vw,420px);transform:perspective(900px) rotateY(var(--ry,0deg)) rotateX(var(--rx,0deg));border:1px solid #fff3;border-radius:28px;transition:transform .2s;overflow:hidden;box-shadow:0 0 60px #ff7eb655,0 30px 80px #0008}.photo img{object-fit:cover;width:100%;height:100%;display:block}.photo.empty{background:radial-gradient(circle at 50% 35%,#ff7eb655,#4b1d8f55 60%,#12062e);justify-content:center;align-items:center;display:flex}.photo.empty:after{content:"💞";font-size:70px}.photo.empty img{display:none}.stage{flex-direction:column;justify-content:flex-end;align-items:center;width:min(88vw,380px);height:340px;display:flex;position:relative}.bubble{color:#4b1d8f;background:#fff;border-radius:20px;padding:10px 20px;font-size:18px;font-weight:600;transition:opacity .3s;animation:1.4s ease-in-out infinite pulse;position:absolute;top:0;box-shadow:0 0 24px #ff7eb677}.bubble:after{content:"";background:#fff;border-radius:3px;width:18px;height:18px;position:absolute;bottom:-9px;left:50%;transform:translate(-50%)rotate(45deg)}.bubble.off{opacity:0}@keyframes pulse{50%{transform:scale(1.08)}}.bears{cursor:pointer;-webkit-user-select:none;user-select:none;justify-content:center;align-items:flex-end;gap:6px;display:flex}.bear{transform-origin:50% 100%;filter:drop-shadow(0 10px 18px #0007);font-size:clamp(70px,21vw,104px);line-height:1;transition:transform .5s cubic-bezier(.3,1.6,.5,1),opacity .5s;position:relative}.bear i,.bear span{font-style:normal}.bear.she i{font-size:40px;position:absolute;top:6px;right:6px}.bear.baby{font-size:clamp(40px,12vw,58px)}.bear.baby i{font-size:24px;position:absolute;top:-18px;right:-10px}.bear.hidden{opacity:0;width:0;transform:scale(0)}.bear.fall{transform:rotate(-82deg)translate(-10px)}.bear.she.fall{transform:rotate(82deg)translate(10px)}.bear.wobble{animation:.5s wob}@keyframes wob{25%{transform:rotate(-8deg)}75%{transform:rotate(8deg)}}.caption{color:#ffd1e8;max-width:28ch;min-height:80px;font-family:Cormorant Garamond,serif;font-size:clamp(20px,5.4vw,26px);font-style:italic;transition:opacity .4s}.answers{flex-wrap:wrap;justify-content:center;gap:16px;display:flex}.btn.yes{padding:16px 44px;font-size:22px;animation:1.6s ease-in-out infinite pulse}#reply{color:#ffd1e8;min-height:80px}@media (prefers-reduced-motion:reduce){*{transition-duration:10ms!important;animation:none!important}}
