/* Favorites only: preserve product dimensions, grid, content and all other actions. */
.products .heart{overflow:visible;isolation:isolate;touch-action:manipulation}
.products .heart svg{transform-origin:center;transition:fill .16s ease,color .16s ease,transform .16s ease}
.products .heart.on{color:#b63e65}
.products .heart.on svg{fill:#f5cfdb;stroke:#b63e65}
.products .heart:active svg{transform:scale(.78)}
.products .heart:disabled{opacity:1;cursor:wait}
.products .heart.favorite-pending svg{animation:favorite-pending .8s ease-in-out infinite}
.products .heart.favorite-added svg{animation:favorite-heart-pop .52s ease-out both}
.products .heart.favorite-removed svg{animation:favorite-heart-remove .24s ease-out both}
.products .heart.favorite-added::before{content:"";position:absolute;inset:4px;border:2px solid #db678a;border-radius:50%;pointer-events:none;animation:favorite-ring .55s ease-out both}
.products .heart.favorite-added::after{content:"";position:absolute;left:50%;top:50%;width:4px;height:4px;margin:-2px;border-radius:50%;background:transparent;pointer-events:none;box-shadow:0 -22px #ce557e,19px -11px #e7a2b9,19px 11px #ce557e,0 22px #e7a2b9,-19px 11px #ce557e,-19px -11px #e7a2b9;animation:favorite-dots .55s ease-out both}
.header-actions .mobile-saved .favorite-count{left:calc(50% + 6px);min-width:18px;width:auto;height:18px;padding:0 4px;box-sizing:border-box;display:flex;align-items:center;justify-content:center;line-height:1;font-size:11px;background:#c3456b;color:#fff;border-radius:999px;font-variant-numeric:tabular-nums}
.cn-saved-count{display:inline-flex;align-items:center;justify-content:center;vertical-align:middle;min-width:22px;height:22px;margin-left:4px;padding:0 6px;box-sizing:border-box;border-radius:999px;background:#f8e7ee;color:#a92d56;font-size:12px;line-height:1;font-variant-numeric:tabular-nums}
.favorite-count-pop{animation:favorite-count-pop .42s ease-out}
.favorite-toast{position:fixed;bottom:35px;left:50%;transform:translateX(-50%);z-index:101;display:flex;align-items:center;gap:10px;max-width:calc(100vw - 32px);width:max-content;box-sizing:border-box;padding:8px 16px;min-height:48px;border-radius:10px;background:#352f2b;color:#fff;box-shadow:0 6px 24px #0002;font-size:14px;animation:favorite-toast-in .18s ease-out}
.favorite-toast>svg{flex:0 0 20px;width:20px;height:20px;stroke:#f1adc4;fill:#a94b69}
.favorite-toast>span{line-height:1.5}
.favorite-toast>button{flex-shrink:0;min-height:40px;padding:0 8px;background:none;color:#ffd0e0;text-decoration:underline;text-underline-offset:4px;border:0;font:inherit;font-weight:600}
.favorite-toast>button:focus-visible,.products .heart:focus-visible{outline:2px solid #c3456b;outline-offset:3px}
@keyframes favorite-pending{50%{transform:scale(.86)}}
@keyframes favorite-heart-pop{0%{transform:scale(.78)}40%{transform:scale(1.34)}70%{transform:scale(.94)}100%{transform:scale(1)}}
@keyframes favorite-heart-remove{50%{transform:scale(.8)}100%{transform:scale(1)}}
@keyframes favorite-ring{0%{transform:scale(.55);opacity:.8}100%{transform:scale(1.4);opacity:0}}
@keyframes favorite-dots{0%{transform:scale(.4);opacity:0}25%{opacity:1}100%{transform:scale(1.3);opacity:0}}
@keyframes favorite-count-pop{0%,100%{transform:scale(1)}40%{transform:scale(1.25)}70%{transform:scale(.95)}}
@keyframes favorite-toast-in{from{opacity:0;translate:0 6px}to{opacity:1;translate:0 0}}
@media(max-width:760px){.favorite-toast{bottom:calc(88px + env(safe-area-inset-bottom,0px));left:12px;transform:none;max-width:calc(100vw - 108px);font-size:12px;gap:6px;padding:6px 10px}.category-entry .cn-saved{white-space:nowrap}}
@media(prefers-reduced-motion:reduce){.products .heart svg,.favorite-count-pop,.favorite-toast{animation:none!important;transition:none!important}.products .heart:active svg{transform:none}.products .heart.favorite-added::before,.products .heart.favorite-added::after{display:none}}

/* Desktop favorites entry uses the existing saved-items action and count. */
@media(min-width:761px){.header-actions .head-action.mobile-saved{display:flex;flex-shrink:0;gap:7px;white-space:nowrap;min-height:44px}.header-actions .mobile-saved span{display:block}.header-actions .mobile-saved .favorite-count{position:static;left:auto;top:auto;flex-shrink:0}.header-actions .mobile-saved.active{color:#b53255}}
