@import "https://fonts.googleapis.com/css2?family=ZCOOL+KuaiLe&display=swap";.tab-bar[data-v-171bb677]{z-index:100;-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);border-top:1px solid var(--color-border);padding-bottom:env(safe-area-inset-bottom);background:#fff5f7f5;display:flex;position:fixed;bottom:0;left:0;right:0}.tab-item[data-v-171bb677]{color:var(--color-text-muted);cursor:pointer;flex-direction:column;flex:1;justify-content:center;align-items:center;gap:3px;padding:8px 4px;text-decoration:none;transition:color .2s;display:flex}.tab-item.active[data-v-171bb677]{color:var(--color-primary)}.tab-auth[data-v-171bb677]{color:var(--color-text-muted)}.tab-auth.is-logged-in[data-v-171bb677]{color:#52c41a}.tab-icon[data-v-171bb677]{font-size:1.4rem;line-height:1}.tab-label[data-v-171bb677]{font-size:.68rem;font-weight:500}.app-footer[data-v-f7f0d137]{text-align:center;border-top:1px solid var(--color-border);margin-top:60px;padding:32px 20px}.footer-hearts[data-v-f7f0d137]{justify-content:center;gap:12px;margin-bottom:8px;display:flex}.footer-heart[data-v-f7f0d137]{color:var(--color-primary-light);font-size:1.1rem;animation:3s ease-in-out infinite float;display:inline-block}.footer-text[data-v-f7f0d137]{color:var(--color-text-muted);font-size:.85rem}.login-body[data-v-6792d5ce]{flex-direction:column;align-items:center;gap:12px;padding:8px 0 4px;display:flex}.login-icon[data-v-6792d5ce]{color:var(--color-primary);font-size:2.5rem}.login-hint[data-v-6792d5ce]{color:var(--color-text-muted);margin-bottom:4px;font-size:.88rem}#app-layout[data-v-cc0f7ea0]{flex-direction:column;min-height:100vh;display:flex}.main-content[data-v-cc0f7ea0]{flex:1}:root{--color-primary:#ff85a1;--color-primary-light:#ffb3c6;--color-primary-lighter:#ffe4ec;--color-secondary:#ff6b9d;--color-accent:#ffc2d1;--color-author-a:#ff85a1;--color-author-a-bg:#fff0f4;--color-author-b:#a78bfa;--color-author-b-bg:#f5f0ff;--color-text-primary:#5c3d4e;--color-text-secondary:#9b7b8a;--color-text-muted:#c4a8b4;--color-bg:#fff5f7;--color-card-bg:#fff;--color-border:#ffd6e0;--radius-sm:12px;--radius-md:20px;--radius-lg:28px;--radius-full:9999px;--shadow-sm:0 2px 12px #ff85a126;--shadow-md:0 4px 24px #ff85a133;--shadow-lg:0 8px 40px #ff85a140;--font-display:"ZCOOL KuaiLe", "Ma Shan Zheng", "PingFang SC", cursive;--font-body:"PingFang SC", "Microsoft YaHei", "Hiragino Sans GB", sans-serif}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{scroll-behavior:smooth;font-size:16px}body{font-family:var(--font-body);background-color:var(--color-bg);color:var(--color-text-primary);min-height:100vh;line-height:1.6}#app{flex-direction:column;min-height:100vh;display:flex}a{color:var(--color-primary);text-decoration:none}img{max-width:100%;display:block}.page-container{max-width:1100px;margin:0 auto;padding:0 20px}.page-title{font-family:var(--font-display);color:var(--color-text-primary);align-items:center;gap:10px;margin-bottom:24px;font-size:2rem;display:flex}.card{background:var(--color-card-bg);border-radius:var(--radius-md);box-shadow:var(--shadow-sm);padding:20px;transition:box-shadow .2s,transform .2s}.card:hover{box-shadow:var(--shadow-md);transform:translateY(-2px)}.fade-enter-active,.fade-leave-active{transition:opacity .25s}.fade-enter-from,.fade-leave-to{opacity:0}.has-tab-bar{padding-bottom:calc(70px + env(safe-area-inset-bottom))}@media (width<=600px){.page-container{padding:0 14px}.page-title{font-size:1.5rem}}@keyframes heartbeat{0%,to{transform:scale(1)}14%{transform:scale(1.15)}28%{transform:scale(1)}42%{transform:scale(1.1)}70%{transform:scale(1)}}@keyframes float{0%,to{transform:translateY(0)}50%{transform:translateY(-8px)}}@keyframes fadeInUp{0%{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes wishComplete{0%{transform:scale(1)}50%{transform:scale(1.1)}to{transform:scale(1)}}@keyframes particleFall{0%{opacity:1;transform:translateY(-20px)rotate(0)}to{opacity:0;transform:translateY(100vh)rotate(720deg)}}@keyframes clickHeart{0%{opacity:1;transform:translate(-50%,-50%)scale(.4)}60%{opacity:.9;transform:translate(-50%,-120%)scale(1.2)}to{opacity:0;transform:translate(-50%,-200%)scale(.8)}}@keyframes rollIn{0%{opacity:0;transform:translateY(60%)}to{opacity:1;transform:translateY(0)}}@keyframes ripple{0%{opacity:.5;transform:scale(0)}to{opacity:0;transform:scale(4)}}.animate-heartbeat{animation:1.5s ease-in-out infinite heartbeat}.animate-float{animation:3s ease-in-out infinite float}.animate-fade-in-up{animation:.4s ease-out forwards fadeInUp}
