:root{--bg-dark:#000;--card-bg:#121016e6;--primary-pink:#ff758f;--primary-gold:#ffd166;--text-main:#f8f9fa;--text-muted:#f8f9fac7;--border-subtle:#ffffff1f;--border-pink:#ff758f66;--font-main:"Plus Jakarta Sans", -apple-system, BlinkMacSystemFont, sans-serif}*{box-sizing:border-box;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;margin:0;padding:0}html,body{width:100%;height:100%;overflow-x:hidden}body{font-family:var(--font-main);background-color:var(--bg-dark);color:var(--text-main);touch-action:none;min-height:100vh;position:relative}#webglCanvas{z-index:1;touch-action:none;background-color:#000005;width:100vw;height:100vh;position:fixed;top:0;left:0}.heart-stage{z-index:20;pointer-events:none;touch-action:none;justify-content:center;align-items:center;width:100vw;height:100vh;display:flex;position:fixed;top:0;left:0}.heart-stage.active{pointer-events:none}.heart-center-container{z-index:30;pointer-events:none;flex-direction:column;justify-content:center;align-items:center;display:flex;transform:translateY(130px)}@media (width<=480px){.heart-center-container{transform:translateY(115px)}}.heart-trigger-btn{pointer-events:auto;-webkit-backdrop-filter:blur(15px);border:1.5px solid var(--primary-pink);color:#fff;font-family:var(--font-main);letter-spacing:.5px;cursor:pointer;background:#121016e0;border-radius:50px;align-items:center;gap:.5rem;padding:.85rem 2rem;font-size:.9rem;font-weight:700;transition:transform .3s,box-shadow .3s;animation:2s infinite alternate pulseGlow;display:inline-flex;box-shadow:0 0 35px #ff758f80}.heart-trigger-btn:hover,.heart-trigger-btn:active{background:#ff758f4d;transform:scale(1.06);box-shadow:0 0 50px #ff758fd9}.greeting-stage{z-index:30;touch-action:auto;width:100%;max-width:480px;margin:40px auto 30px;padding:0 1rem;position:relative}.neat-card{background:var(--card-bg);-webkit-backdrop-filter:blur(25px);border:1px solid var(--border-pink);border-radius:20px;padding:2.2rem 1.4rem;position:relative;box-shadow:0 25px 60px #000000e6,0 0 30px #ff758f26}@media (width<=480px){.greeting-stage{margin-top:25px;padding:0 .75rem}.neat-card{border-radius:16px;padding:1.8rem 1.1rem}}.avatar-wrapper{border:1.5px solid var(--primary-pink);border-radius:50%;width:84px;height:84px;margin:0 auto 1rem;padding:3px}.avatar-wrapper img{object-fit:cover;border-radius:50%;width:100%;height:100%}.card-badge{letter-spacing:2px;color:var(--primary-pink);margin-bottom:.5rem;font-size:.65rem;font-weight:700;display:inline-block}.main-title{color:#fff;margin-bottom:1rem;font-size:1.6rem;font-weight:700;line-height:1.3}@media (width<=480px){.main-title{font-size:1.4rem}}.highlight-text{color:var(--primary-pink)}.divider-line{background:var(--primary-pink);opacity:.6;width:36px;height:1px;margin:0 auto 1.2rem}.wish-text{color:var(--text-muted);text-align:justify;text-align-last:center;margin-bottom:1.5rem;font-size:.92rem;font-weight:400;line-height:1.7}.sender-box{border-top:1px solid var(--border-subtle);margin-bottom:1.5rem;padding-top:1rem}.sender-label{color:var(--text-muted);font-size:.72rem}.sender-name{color:var(--primary-pink);margin-top:.2rem;font-size:1.1rem;font-weight:700}.card-action-bar{flex-wrap:wrap;justify-content:center;gap:.5rem;display:flex}.action-btn{border:1px solid var(--border-subtle);color:var(--text-main);font-family:var(--font-main);cursor:pointer;background:#ffffff0d;border-radius:8px;align-items:center;gap:.35rem;padding:.6rem 1.1rem;font-size:.8rem;font-weight:600;transition:all .3s;display:inline-flex}.action-btn:hover,.action-btn:active{background:#ffffff1f}.action-btn.primary{color:#fff;background:linear-gradient(135deg,#ff758f 0%,#ff4d6d 100%);border:none}.text-center{text-align:center}.hidden{display:none!important}.toast{background:var(--primary-pink);color:#000;z-index:300;border-radius:8px;padding:.65rem 1.3rem;font-size:.82rem;font-weight:700;position:fixed;bottom:25px;left:50%;transform:translate(-50%);box-shadow:0 10px 25px #00000080}@keyframes fadeIn{0%{opacity:0;transform:translateY(10px)}to{opacity:1;transform:translateY(0)}}.animate-fade{animation:.8s forwards fadeIn}@keyframes pulseGlow{0%{box-shadow:0 0 25px #ff758f66}to{box-shadow:0 0 45px #ff758fd9}}
