.app{width:100%;min-height:100vh;display:flex;align-items:center;justify-content:center;position:relative;padding:24px}.hearts-layer{position:fixed;top:0;right:0;bottom:0;left:0;pointer-events:none;overflow:hidden;z-index:0}.floating-heart{position:absolute;bottom:-40px;color:var(--pink);animation-name:floatUp;animation-timing-function:linear;animation-iteration-count:infinite}@keyframes floatUp{0%{transform:translateY(0) rotate(0)}to{transform:translateY(-110vh) rotate(360deg)}}.music-btn{position:fixed;top:18px;right:18px;z-index:100;display:flex;align-items:center;gap:8px;background:#ff7eb32e;border:1px solid rgba(255,179,209,.5);color:var(--cream);padding:10px 16px;border-radius:30px;font-family:inherit;font-size:14px;cursor:pointer;-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);transition:background .25s,transform .2s}.music-btn:hover{background:#ff7eb352;transform:scale(1.05)}.music-note{font-size:12px;opacity:.85}.stage{position:relative;z-index:2;text-align:center;max-width:760px}.fade-in{animation:fadeIn 1s ease both}@keyframes fadeIn{0%{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}.kicker{color:var(--pink-soft);letter-spacing:2px;text-transform:uppercase;font-size:13px;margin-bottom:14px}.ask-title{font-size:clamp(28px,6vw,50px);line-height:1.25;margin-bottom:18px;color:var(--cream)}.ask-sub{color:var(--pink-soft);font-size:clamp(15px,3vw,19px);margin-bottom:40px;font-style:italic}.btn-row{display:flex;gap:20px;justify-content:center;flex-wrap:wrap}.btn-yes{background:linear-gradient(135deg,var(--pink),#ff5e9a);color:#fff;border:none;padding:16px 38px;font-size:18px;font-family:inherit;border-radius:40px;cursor:pointer;box-shadow:0 8px 24px #ff5e9a66;transition:transform .2s,box-shadow .2s}.btn-yes:hover{transform:translateY(-3px) scale(1.04);box-shadow:0 12px 30px #ff5e9a8c}.btn-no{background:#ffffff1a;color:var(--cream);border:1px solid rgba(255,255,255,.3);padding:16px 38px;font-size:18px;font-family:inherit;border-radius:40px;cursor:pointer;transition:left .18s ease,top .18s ease}.hint{margin-top:26px;color:var(--gold);font-style:italic;font-size:14px}.words-line{font-size:clamp(18px,3.4vw,26px);font-weight:400;line-height:1.5;margin:14px 0;opacity:0;animation:fadeIn .9s ease forwards}.l1{animation-delay:.2s}.l2{animation-delay:1.1s}.l3{animation-delay:2s}.l4{animation-delay:2.9s;color:var(--pink-soft)}.l5{opacity:0;animation:fadeIn .9s ease forwards;animation-delay:3.9s;margin-top:30px}.slideshow{position:relative;width:min(380px,86vw);height:min(520px,70vh);margin:0 auto 36px;border-radius:20px;overflow:hidden;box-shadow:0 18px 50px #00000080;border:1px solid rgba(255,179,209,.3)}.slide{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;object-fit:cover;opacity:0;transform:scale(1.06);transition:opacity 1.4s ease,transform 6s ease}.slide-active{opacity:1;transform:scale(1)}.slide-dots{position:absolute;bottom:16px;left:0;right:0;display:flex;gap:8px;justify-content:center;z-index:3}.dot{width:8px;height:8px;border-radius:50%;background:#fff6;transition:all .4s ease}.dot-active{background:var(--pink);width:22px;border-radius:6px}.next-after-slide{margin-top:6px}.promise-wrap{max-width:680px}.promise-text{font-size:clamp(18px,3.2vw,26px);line-height:1.7;margin:24px 0 30px;color:var(--cream)}.promise-sign{font-size:clamp(16px,3vw,22px);color:var(--pink-soft);font-style:italic}@media (max-width: 520px){.slideshow{width:90vw;height:64vh}}.after-photos{margin-top:6px}.after-line{font-size:clamp(16px,3vw,21px);line-height:1.6;margin:10px 0;color:var(--cream);opacity:0;animation:fadeIn .9s ease forwards}.after-line:last-of-type{color:var(--pink-soft)}.after-btn{margin-top:22px;opacity:0;animation:fadeIn .9s ease forwards}.waiting-hint{margin-top:18px;color:var(--gold);font-style:italic;font-size:14px;opacity:.8}*{margin:0;padding:0;box-sizing:border-box}:root{--bg-1: #1a0e1f;--bg-2: #2d1830;--bg-3: #3d1f3a;--pink: #ff7eb3;--pink-soft: #ffb3d1;--cream: #fff0f5;--gold: #f7d9a0}html,body,#root{height:100%}body{font-family:Georgia,Times New Roman,serif;background:linear-gradient(160deg,var(--bg-1),var(--bg-2),var(--bg-3));background-size:300% 300%;animation:gradientShift 18s ease infinite;color:var(--cream);overflow-x:hidden;-webkit-font-smoothing:antialiased}@keyframes gradientShift{0%{background-position:0% 50%}50%{background-position:100% 50%}to{background-position:0% 50%}}#root{display:flex;align-items:center;justify-content:center;position:relative}
