:root {
    --zuf-ink: #172033;
    --zuf-muted: #667085;
    --zuf-surface: #fff;
    --zuf-soft: #f7f8fb;
    --zuf-accent: #d92d4b;
    --zuf-line: #e8eaf0;
    --zuf-radius: 18px;
}

.zuf-favorite-loading { cursor: wait !important; opacity: .58 !important; pointer-events: none !important; }
.zuf-favorite-loading i { animation: zuf-heart-pulse .7s ease-in-out infinite alternate; }
.zuf-favorite-toast { position: fixed; right: 1rem; bottom: 5.5rem; z-index: 99999; max-width: min(360px,calc(100vw - 2rem)); padding: .85rem 1rem; border-radius: 12px; color: #fff; background: #172033; box-shadow: 0 14px 40px rgba(16,24,40,.22); opacity: 0; transform: translateY(10px); pointer-events: none; transition: opacity .2s ease,transform .2s ease; }
.zuf-favorite-toast.is-visible { opacity: 1; transform: translateY(0); }
.zuf-favorite-toast--error { background: #b42318; }

.zuf-favorites { color: var(--zuf-ink); margin: 1.5rem 0; }
.zuf-favorites__header { display: flex; align-items: center; justify-content: space-between; gap: 1rem; padding: 1.2rem 1.35rem; margin-bottom: 1.25rem; border: 1px solid var(--zuf-line); border-radius: var(--zuf-radius); background: linear-gradient(135deg,#fff 40%,#fff2f4); }
.zuf-favorites__title { display: flex; align-items: center; gap: .65rem; margin: 0; font-size: clamp(1.15rem,2vw,1.55rem); }
.zuf-favorites__title i { color: var(--zuf-accent); }
.zuf-favorites__grid { display: grid; grid-template-columns: repeat(auto-fill,minmax(170px,1fr)); gap: 1rem; }
.zuf-favorites__item { position: relative; min-width: 0; border: 1px solid var(--zuf-line); border-radius: var(--zuf-radius); overflow: hidden; background: var(--zuf-surface); box-shadow: 0 7px 22px rgba(16,24,40,.06); transition: transform .2s ease,box-shadow .2s ease; }
.zuf-favorites__item:hover { transform: translateY(-3px); box-shadow: 0 13px 30px rgba(16,24,40,.1); }
.zuf-favorites__link { display: block; color: inherit; text-decoration: none; }
.zuf-favorites__image { display: block; width: 100%; aspect-ratio: 1/1; object-fit: cover; background: var(--zuf-soft); }
.zuf-favorites__name { margin: 0; padding: .85rem 3rem .95rem .85rem; font-size: .9rem; line-height: 1.7; }
.zuf-favorites__remove { position: absolute; right: .65rem; bottom: .7rem; width: 34px; height: 34px; display: grid; place-items: center; padding: 0; border: 0; border-radius: 50%; color: #fff; background: var(--zuf-accent); cursor: pointer; box-shadow: 0 5px 12px rgba(217,45,75,.25); }
.zuf-favorites__remove:focus-visible { outline: 3px solid rgba(217,45,75,.25); outline-offset: 3px; }
.zuf-favorites__empty { padding: 2rem 1rem; border: 1px dashed #cfd4dc; border-radius: var(--zuf-radius); text-align: center; color: var(--zuf-muted); background: var(--zuf-soft); }

@keyframes zuf-heart-pulse { to { transform: scale(1.2); } }
@media (max-width: 520px) { .zuf-favorites__grid { grid-template-columns: repeat(2,minmax(0,1fr)); gap: .7rem; } }
@media (prefers-reduced-motion: reduce) { .zuf-favorite-loading i { animation: none; } .zuf-favorites__item,.zuf-favorite-toast { transition: none; } }
