.fav-btn{display:inline-flex;align-items:center;gap:8px;cursor:pointer;font-size:14px;font-weight:500;transition:all 0.3s ease;user-select:none}.fav-btn .has-fav{display:none}.fav-btn:active:not(:disabled){transform:translateY(0)}.fav-btn:focus{outline:none}.fav-btn.is-favorited{color:#ef4444}.fav-btn.is-favorited .favorite-icon path{fill:currentColor}.fav-btn.is-favorited .no-fav{display:none}.fav-btn.is-favorited .has-fav{display:inline}.fav-btn.is-favorited:hover:not(:disabled){color:#dc2626}.fav-btn.is-loading{opacity:.6;cursor:not-allowed;pointer-events:none}.fav-btn.is-loading .favorite-icon{animation:pulse 1.5s ease-in-out infinite}.fav-btn.is-animating .favorite-icon{animation:heartbeat 0.3s ease-in-out}.fav-btn:disabled{opacity:.5;cursor:not-allowed}.favorite-icon{display:inline-flex;align-items:center;justify-content:center;width:20px;height:20px;transition:all 0.2s ease}.favorite-icon svg{width:100%;height:100%}.favorite-icon svg path{transition:all 0.3s ease}.favorite-text{line-height:1}.favorite-count{display:inline-flex;align-items:center;justify-content:center;min-width:18px;height:18px;padding:0 6px;background-color:rgb(0 0 0 / .1);border-radius:9px;font-size:12px;font-weight:600;line-height:1}.favorite-notification{position:fixed;top:20px;right:20px;padding:12px 20px;background-color:#10b981;color:#fff;border-radius:6px;font-size:14px;font-weight:500;box-shadow:0 10px 15px -3px rgb(0 0 0 / .1),0 4px 6px -2px rgb(0 0 0 / .05);z-index:9999;opacity:0;transform:translateX(100%);transition:all 0.3s ease}.favorite-notification.is-visible{opacity:1;transform:translateX(0)}.favorite-notification.is-error{background-color:#ef4444}.favorite-notification.is-success{background-color:#10b981}@keyframes heartbeat{0%,100%{transform:scale(1)}25%{transform:scale(1.2)}50%{transform:scale(.95)}75%{transform:scale(1.1)}}@keyframes pulse{0%,100%{opacity:1}50%{opacity:.5}}@media (max-width:768px){.favorite-btn{padding:6px 12px;font-size:13px}.favorite-btn .favorite-icon{width:18px;height:18px}.favorite-btn .favorite-count{min-width:16px;height:16px;font-size:11px}.favorite-notification{top:10px;right:10px;left:10px;padding:10px 16px;font-size:13px}}@media (max-width:480px){.favorite-btn{padding:8px}.favorite-btn .favorite-text{display:none}}@media (prefers-contrast:high){.favorite-btn{border:2px solid currentColor}.favorite-btn.is-favorited{border-color:#ef4444}}@media (prefers-reduced-motion:reduce){.favorite-btn,.favorite-icon,.favorite-notification{transition:none;animation:none}.favorite-btn:hover:not(:disabled){transform:none}}@media (prefers-color-scheme:dark){.favorite-btn{background-color:rgb(255 255 255 / .1);color:#9ca3af}.favorite-btn:hover:not(:disabled){background-color:rgb(255 255 255 / .15)}.favorite-btn.is-favorited{background-color:rgb(239 68 68 / .2);color:#f87171}.favorite-btn.is-favorited:hover:not(:disabled){background-color:rgb(239 68 68 / .3)}}