.end-wf-button{display:inline-flex;align-items:center;justify-content:center;gap:8px;width:var(--end-wf-button-size);height:var(--end-wf-button-size);padding:0;border:1px solid var(--end-wf-border);border-radius:var(--end-wf-radius);background:var(--end-wf-bg);color:var(--end-wf-color);cursor:pointer;transition:transform .16s ease,color .16s ease,background .16s ease,border-color .16s ease;position:relative;z-index:var(--end-wf-z);line-height:1;box-sizing:border-box}
.end-wf-button:hover{color:var(--end-wf-hover);background:var(--end-wf-hover-bg);border-color:var(--end-wf-hover-border)}.end-wf-style-text:hover .end-wf-label{color:var(--end-wf-hover-text)!important}.end-wf-button.is-favorite{color:var(--end-wf-active-color);background:var(--end-wf-active-bg);border-color:var(--end-wf-active-border)}
.end-wf-button.is-loading{pointer-events:none;opacity:.72}.end-wf-button.is-loading .end-wf-icon,.end-wf-button.is-loading .end-wf-card-remove-icon{animation:endWfLoadingPulse .62s ease-in-out infinite}.end-wf-button.is-favorite:not(.is-loading){animation:none}
.end-wf-icon{width:var(--end-wf-icon-size);height:var(--end-wf-icon-size);display:block;fill:none;stroke:currentColor;stroke-width:1.8;stroke-linecap:round;stroke-linejoin:round}.end-wf-button.is-favorite .end-wf-icon{fill:currentColor;stroke:currentColor}
.end-wf-style-text{width:auto;min-width:var(--end-wf-button-size);padding:0 14px}.end-wf-style-icon{width:var(--end-wf-icon-size)!important;height:var(--end-wf-icon-size)!important;min-width:var(--end-wf-icon-size)!important;min-height:var(--end-wf-icon-size)!important;padding:0!important;border:0!important;border-radius:0!important;background:transparent!important;box-shadow:none!important;color:var(--end-wf-color)!important;opacity:1!important;visibility:visible!important;appearance:none!important;-webkit-appearance:none!important}.end-wf-style-icon:hover,.end-wf-style-icon.is-favorite,.end-wf-style-icon.is-favorite:hover{border:0!important;background:transparent!important;box-shadow:none!important}.end-wf-style-icon:hover{color:var(--end-wf-hover)!important}.end-wf-style-icon.is-favorite,.end-wf-style-icon.is-favorite:hover{color:var(--end-wf-active-bg)!important}.end-wf-style-minimal.is-favorite{color:var(--end-wf-active-bg)!important}.end-wf-style-minimal{background:transparent!important;border-color:transparent!important;box-shadow:none!important}.end-wf-style-minimal.is-favorite{background:transparent!important;border-color:transparent!important}.end-wf-style-square{border-radius:10px}
.woocommerce ul.products li.product,.wc-block-grid__product{position:relative}.end-wf-loop-wrap{position:absolute;inset-block-start:var(--end-wf-top);inset-inline-end:var(--end-wf-side);z-index:var(--end-wf-z)}
.end-wf-single-wrap{margin:14px 0}.end-wf-page{width:100%}.end-wf-page-head{display:flex;align-items:flex-end;justify-content:space-between;gap:18px;margin-bottom:24px}.end-wf-page-head h2{margin:0 0 4px}.end-wf-page-head p{margin:0;opacity:.68}.end-wf-clear{border:0;background:transparent;text-decoration:underline;cursor:pointer}
.end-wf-grid{display:grid;grid-template-columns:repeat(var(--end-wf-cols-d),minmax(0,var(--end-wf-card-track)));justify-content:var(--end-wf-grid-justify);gap:20px;width:100%}.end-wf-card{border:1px solid #e5e7eb;border-radius:18px;overflow:hidden;background:#fff;min-width:0;width:100%;max-width:var(--end-wf-card-width);justify-self:center;box-sizing:border-box}.end-wf-card-media{position:relative;aspect-ratio:1/1;background:#f8fafc}.end-wf-card-media>a{display:block;width:100%;height:100%}.end-wf-card-media img{width:100%;height:100%;object-fit:contain}.end-wf-card-media .end-wf-button{position:absolute;top:12px;inset-inline-end:12px}.end-wf-sale{position:absolute;top:12px;inset-inline-start:12px;padding:5px 9px;border-radius:999px;background:#111827;color:#fff;font-size:12px}.end-wf-card-body{padding:16px}.end-wf-card h3{font-size:16px;margin:0 0 8px}.end-wf-card h3 a{text-decoration:none;color:inherit}.end-wf-price{font-weight:700;margin-bottom:8px}.end-wf-stock{font-size:13px;margin-bottom:14px}.end-wf-stock.is-out-of-stock{color:#b91c1c}.end-wf-stock.is-in-stock{color:#166534}.end-wf-card-actions .button{width:100%;text-align:center}
.end-wf-card-remove{position:absolute!important;top:12px!important;inset-inline-end:12px!important;z-index:30!important;display:inline-flex!important;visibility:visible!important;opacity:1!important;align-items:center!important;justify-content:center!important;width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important;padding:0!important;margin:0!important;border:1px solid #e5e7eb!important;border-radius:50%!important;background:#fff!important;color:#6b7280!important;box-shadow:0 3px 10px rgba(15,23,42,.08)!important;cursor:pointer;line-height:1!important;box-sizing:border-box!important;transition:color .16s ease,border-color .16s ease,transform .16s ease,box-shadow .16s ease}.end-wf-card-remove:hover{background:#fff!important;border-color:#fecaca!important;color:#dc2626!important;transform:scale(1.05);box-shadow:0 5px 14px rgba(15,23,42,.12)}.end-wf-card-remove.is-loading{pointer-events:none;opacity:.65}.end-wf-card-remove-icon{display:inline-flex!important;align-items:center;justify-content:center;width:16px;height:16px;font-size:24px;font-weight:400;line-height:14px;color:currentColor!important;pointer-events:none}.end-wf-card-remove.is-loading .end-wf-card-remove-icon{animation:endWfLoadingPulse .62s ease-in-out infinite}
.end-wf-empty{text-align:center;padding:56px 20px;border:1px dashed #d1d5db;border-radius:18px}.end-wf-empty-icon{font-size:44px;line-height:1;margin-bottom:12px;opacity:.5}.end-wf-empty h3{margin:0 0 8px}.end-wf-empty p{opacity:.68}
.end-wf-toast{position:fixed;z-index:999999;max-width:min(360px,calc(100vw - 32px));padding:11px 16px;background:#111827;color:#fff;border-radius:12px;box-shadow:0 12px 28px rgba(0,0,0,.18);opacity:0;transform:translateY(8px);transition:.2s ease}.end-wf-toast.is-visible{opacity:1;transform:none}.end-wf-toast-bottom_end{bottom:24px;inset-inline-end:24px}.end-wf-toast-bottom_start{bottom:24px;inset-inline-start:24px}.end-wf-toast-top_end{top:24px;inset-inline-end:24px}.end-wf-toast-top_start{top:24px;inset-inline-start:24px}.end-wf-toast-bottom{bottom:24px;left:50%;transform:translate(-50%,8px)}.end-wf-toast-bottom.is-visible{transform:translate(-50%,0)}.end-wf-toast-top{top:24px;left:50%;transform:translate(-50%,-8px)}.end-wf-toast-top.is-visible{transform:translate(-50%,0)}
@keyframes endWfPop{50%{transform:scale(1.10)}}@keyframes endWfLoadingPulse{50%{transform:scale(.82);opacity:.45}}
@media(max-width:900px){.end-wf-grid{grid-template-columns:repeat(var(--end-wf-cols-t),minmax(0,var(--end-wf-card-track)))}}
@media(max-width:600px){.end-wf-grid{grid-template-columns:repeat(var(--end-wf-cols-m),minmax(0,var(--end-wf-card-track)));gap:14px}.end-wf-page-head{align-items:center}.end-wf-card{border-radius:14px}}

/* v0.1.4 shared favorites renderer */
.end-wf-card-favorite{position:absolute;top:12px;inset-inline-end:12px;z-index:32;display:flex;align-items:center;justify-content:center}
.end-wf-card-favorite .end-wf-button{position:relative!important;top:auto!important;inset:auto!important;margin:0!important}
.end-wf-card-favorite .end-wf-style-icon{filter:drop-shadow(0 1px 2px rgba(15,23,42,.18))}
.end-wf-card-favorite .end-wf-style-icon.is-favorite{color:var(--end-wf-active-bg)!important}
.end-wf-grid-grid{grid-template-columns:repeat(var(--end-wf-cols-d),minmax(0,1fr))}
.end-wf-grid-grid[style*="--end-wf-current-card-width"]{grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--end-wf-current-card-width)),var(--end-wf-current-card-width)));justify-content:center}
.end-wf-grid-list{display:flex;flex-direction:column;gap:14px}
.end-wf-grid-list .end-wf-card{width:100%!important;max-width:none!important;justify-self:stretch;display:grid;grid-template-columns:minmax(140px,220px) minmax(0,1fr);align-items:stretch}
.end-wf-grid-list .end-wf-card-media{aspect-ratio:auto;min-height:170px;height:100%}
.end-wf-grid-list .end-wf-card-body{display:flex;flex-direction:column;justify-content:center;padding:20px 22px}
.end-wf-grid-list .end-wf-card h3{font-size:18px;margin-bottom:10px}
.end-wf-grid-list .end-wf-card-actions{margin-top:4px;max-width:230px}
@media(max-width:900px){.end-wf-grid-grid{grid-template-columns:repeat(var(--end-wf-cols-t),minmax(0,1fr))}.end-wf-grid-grid[style*="--end-wf-current-card-width"]{grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--end-wf-current-card-width)),var(--end-wf-current-card-width)))}}
@media(max-width:600px){.end-wf-grid-grid{grid-template-columns:repeat(var(--end-wf-cols-m),minmax(0,1fr))}.end-wf-grid-list .end-wf-card{grid-template-columns:108px minmax(0,1fr);border-radius:14px}.end-wf-grid-list .end-wf-card-media{min-height:132px}.end-wf-grid-list .end-wf-card-body{padding:14px}.end-wf-grid-list .end-wf-card h3{font-size:15px}.end-wf-grid-list .end-wf-card-actions{max-width:none}.end-wf-grid-list .end-wf-card-actions .button{font-size:12px;padding-inline:8px}}

/* v0.1.5 contextual favorites views */
.end-wf-page{width:100%;box-sizing:border-box}.end-wf-shell{width:min(100%,var(--end-wf-current-max));margin-inline:auto;padding:22px;border:1px solid #e8edf3;border-radius:22px;background:#fff;box-shadow:0 10px 30px rgba(15,23,42,.045);box-sizing:border-box}.end-wf-heading-group{display:flex;align-items:center;gap:12px}.end-wf-title-icon{display:inline-flex;align-items:center;justify-content:center;width:42px;height:42px;border-radius:13px;background:#f6f8fb;color:#dc2626;font-size:25px;line-height:1}.end-wf-page-head{align-items:center;padding-bottom:18px;border-bottom:1px solid #eef1f5;margin-bottom:22px}.end-wf-page-head h2{font-size:24px;line-height:1.2}.end-wf-page-head p{font-size:13px}.end-wf-page-head p strong{color:#111827}.end-wf-clear{padding:8px 11px!important;border:1px solid #e5e7eb!important;border-radius:10px!important;background:#fff!important;color:#6b7280!important;text-decoration:none!important;font-size:13px!important}.end-wf-clear:hover{color:#dc2626!important;border-color:#fecaca!important;background:#fff7f7!important}
.end-wf-grid{gap:var(--end-wf-current-gap)!important}.end-wf-grid-grid{display:grid!important;grid-template-columns:repeat(auto-fit,minmax(min(100%,var(--end-wf-current-grid-width)),var(--end-wf-current-grid-width)))!important;justify-content:center!important}.end-wf-grid-list{display:flex!important;flex-direction:column!important}.end-wf-card{border:1px solid #e7ebf0!important;border-radius:17px!important;background:#fff!important;box-shadow:0 5px 16px rgba(15,23,42,.045)!important;transition:transform .18s ease,box-shadow .18s ease,border-color .18s ease}.end-wf-card:hover{transform:translateY(-2px);box-shadow:0 10px 25px rgba(15,23,42,.075)!important;border-color:#dbe2ea!important}.end-wf-grid-grid .end-wf-card{width:var(--end-wf-current-grid-width)!important;max-width:100%!important}.end-wf-grid-grid .end-wf-card-media{aspect-ratio:auto!important;height:var(--end-wf-current-grid-image)!important}.end-wf-product-image{padding:10px;box-sizing:border-box}.end-wf-card-media{background:#f8fafc!important}.end-wf-card-media img{object-fit:contain!important}.end-wf-card-body{padding:15px!important}.end-wf-card h3{line-height:1.45!important}.end-wf-price{font-size:15px}.end-wf-stock{font-size:12px}.end-wf-sale{top:10px!important;inset-inline-start:10px!important;background:#111827!important;font-size:11px!important;padding:4px 8px!important}
/* Favorites-card heart: intentionally independent of the shop-button style. */
.end-wf-card-favorite{top:10px!important;inset-inline-end:10px!important;z-index:50!important}.end-wf-card-favorite .end-wf-style-favorite_card{display:inline-flex!important;visibility:visible!important;opacity:1!important;width:38px!important;height:38px!important;min-width:38px!important;min-height:38px!important;padding:0!important;border:1px solid rgba(15,23,42,.08)!important;border-radius:999px!important;background:#fff!important;color:#dc2626!important;box-shadow:0 4px 12px rgba(15,23,42,.10)!important}.end-wf-card-favorite .end-wf-style-favorite_card:hover{background:#fff!important;color:#b91c1c!important;border-color:#fecaca!important;transform:scale(1.05)}.end-wf-card-favorite .end-wf-style-favorite_card.is-favorite{background:#fff!important;color:#dc2626!important;border-color:rgba(15,23,42,.08)!important}.end-wf-card-favorite .end-wf-style-favorite_card .end-wf-icon{width:19px!important;height:19px!important;fill:currentColor!important;stroke:currentColor!important}
.end-wf-grid-list .end-wf-card{width:100%!important;max-width:none!important;display:grid!important;grid-template-columns:var(--end-wf-current-list-image) minmax(0,1fr)!important;min-height:var(--end-wf-current-list-height)!important;overflow:hidden}.end-wf-grid-list .end-wf-card-media{height:100%!important;min-height:var(--end-wf-current-list-height)!important;aspect-ratio:auto!important}.end-wf-grid-list .end-wf-card-body{padding:18px 20px!important;justify-content:center!important}.end-wf-grid-list .end-wf-card-actions{max-width:220px}.end-wf-grid-list .end-wf-card h3{font-size:17px!important}
.end-wf-empty{border:0!important;background:#fafbfc!important;padding:58px 20px!important}.end-wf-empty-icon{display:inline-flex;width:64px;height:64px;align-items:center;justify-content:center;border-radius:50%;background:#fff;color:#dc2626;box-shadow:0 7px 20px rgba(15,23,42,.06);opacity:1!important;font-size:34px!important}.end-wf-empty h3{font-size:20px}.end-wf-empty p{max-width:440px;margin:0 auto 18px}.end-wf-shop-button{border-radius:11px!important}
/* Embedded interface view is intentionally denser. */
.end-wf-context-interface .end-wf-shell{padding:14px;border-radius:16px;box-shadow:none}.end-wf-context-interface .end-wf-page-head{margin-bottom:14px;padding-bottom:12px}.end-wf-context-interface .end-wf-title-icon{width:36px;height:36px;border-radius:11px;font-size:21px}.end-wf-context-interface .end-wf-page-head h2{font-size:19px}.end-wf-context-interface .end-wf-card-body{padding:12px!important}.end-wf-context-interface .end-wf-card h3{font-size:14px!important}.end-wf-context-interface .end-wf-card-favorite .end-wf-style-favorite_card{width:34px!important;height:34px!important;min-width:34px!important;min-height:34px!important}.end-wf-context-interface .end-wf-card-favorite .end-wf-style-favorite_card .end-wf-icon{width:17px!important;height:17px!important}
@media(max-width:600px){.end-wf-shell{padding:13px;border-radius:16px}.end-wf-page-head{gap:10px}.end-wf-title-icon{width:36px;height:36px;font-size:21px}.end-wf-page-head h2{font-size:19px}.end-wf-grid-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important}.end-wf-grid-grid .end-wf-card{width:100%!important}.end-wf-grid-grid .end-wf-card-media{height:auto!important;aspect-ratio:1/1!important}.end-wf-grid-list .end-wf-card{grid-template-columns:min(112px,var(--end-wf-current-list-image)) minmax(0,1fr)!important;min-height:120px!important}.end-wf-grid-list .end-wf-card-media{min-height:120px!important}.end-wf-grid-list .end-wf-card-body{padding:12px!important}.end-wf-grid-list .end-wf-card h3{font-size:14px!important}.end-wf-grid-list .end-wf-card-actions .button{font-size:12px!important}.end-wf-clear{font-size:12px!important;padding:6px 8px!important}}

/* v0.2.0: logical alignment, RTL-first support and compact layouts. */
.end-wf-page{direction:inherit;text-align:start}
.end-wf-page[dir="rtl"]{direction:rtl;text-align:right}
.end-wf-page[dir="ltr"]{direction:ltr;text-align:left}
.end-wf-shell{margin-inline:0 auto!important}
.end-wf-grid{justify-content:start!important;justify-items:start!important;text-align:start}
.end-wf-grid-grid,.end-wf-grid-compact_grid{
  grid-template-columns:repeat(auto-fill,minmax(min(100%,var(--end-wf-current-grid-width)),var(--end-wf-current-grid-width)))!important;
  justify-content:start!important;
  justify-items:start!important;
  gap:var(--end-wf-current-gap)!important;
}
.end-wf-grid-grid .end-wf-card,.end-wf-grid-compact_grid .end-wf-card{justify-self:start!important;width:var(--end-wf-current-grid-width)!important;max-width:100%!important}
.end-wf-grid-list,.end-wf-grid-compact_list{display:flex!important;flex-direction:column!important;align-items:stretch!important;gap:var(--end-wf-current-gap)!important}
.end-wf-grid-list .end-wf-card,.end-wf-grid-compact_list .end-wf-card{width:100%!important;max-width:none!important;display:grid!important;grid-template-columns:var(--end-wf-current-list-image) minmax(0,1fr)!important;min-height:var(--end-wf-current-list-height)!important;justify-self:stretch!important}
.end-wf-card-compact_grid .end-wf-card-body{padding:10px!important}.end-wf-card-compact_grid h3{font-size:13px!important;margin-bottom:5px!important}.end-wf-card-compact_grid .end-wf-price{font-size:13px!important;margin-bottom:5px!important}.end-wf-card-compact_grid .end-wf-stock{font-size:11px!important;margin-bottom:8px!important}.end-wf-card-compact_grid .end-wf-card-actions .button{font-size:12px!important;padding:7px 8px!important}
.end-wf-card-compact_list .end-wf-card-body{padding:10px 14px!important}.end-wf-card-compact_list h3{font-size:14px!important;margin-bottom:5px!important}.end-wf-card-compact_list .end-wf-price{font-size:13px!important;margin-bottom:4px!important}.end-wf-card-compact_list .end-wf-stock{font-size:11px!important;margin-bottom:6px!important}.end-wf-card-compact_list .end-wf-card-actions{max-width:180px!important}.end-wf-card-compact_list .end-wf-card-actions .button{font-size:12px!important;padding:7px 8px!important}
.end-wf-page[dir="rtl"] .end-wf-page-head,.end-wf-page[dir="rtl"] .end-wf-heading-group{direction:rtl;text-align:right}
.end-wf-page[dir="rtl"] .end-wf-card-body{text-align:right}
.end-wf-page[dir="ltr"] .end-wf-card-body{text-align:left}
@media(max-width:600px){
 .end-wf-grid-grid,.end-wf-grid-compact_grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;justify-items:stretch!important}
 .end-wf-grid-grid .end-wf-card,.end-wf-grid-compact_grid .end-wf-card{width:100%!important;justify-self:stretch!important}
 .end-wf-grid-list .end-wf-card,.end-wf-grid-compact_list .end-wf-card{grid-template-columns:min(105px,var(--end-wf-current-list-image)) minmax(0,1fr)!important;min-height:112px!important}
}
.end-wf-grid-compact_grid .end-wf-card-media{aspect-ratio:auto!important;height:var(--end-wf-current-grid-image)!important}
.end-wf-grid-compact_list .end-wf-card-media{height:100%!important;min-height:var(--end-wf-current-list-height)!important;aspect-ratio:auto!important}
.end-wf-grid-compact_list .end-wf-card-body{display:flex!important;flex-direction:column!important;justify-content:center!important}


/* v0.3.0: position, shadow and deliberate animations */
.end-wf-button{box-shadow:var(--end-wf-button-shadow)}
.end-wf-style-icon,.end-wf-style-minimal{box-shadow:none!important}
.end-wf-icon-always-filled{fill:currentColor!important;stroke:currentColor!important}
.end-wf-loop-wrap.is-overlay{position:absolute;z-index:var(--end-wf-z);margin:0!important}
.end-wf-loop-wrap.end-wf-position-image_start{inset-block-start:var(--end-wf-top);inset-inline-start:var(--end-wf-side);inset-inline-end:auto}
.end-wf-loop-wrap.end-wf-position-image_end{inset-block-start:var(--end-wf-top);inset-inline-end:var(--end-wf-side);inset-inline-start:auto}
.end-wf-loop-wrap.end-wf-position-image_bottom_start{inset-block-start:auto;inset-block-end:var(--end-wf-top);inset-inline-start:var(--end-wf-side);inset-inline-end:auto}
.end-wf-loop-wrap.end-wf-position-image_bottom_end{inset-block-start:auto;inset-block-end:var(--end-wf-top);inset-inline-end:var(--end-wf-side);inset-inline-start:auto}
.end-wf-loop-wrap.is-inline{position:relative!important;inset:auto!important;display:flex;margin:8px 0!important;z-index:var(--end-wf-z)}
.end-wf-single-position-image_float{position:absolute;inset-block-start:var(--end-wf-top);inset-inline-end:var(--end-wf-side);z-index:var(--end-wf-z);margin:0!important}
.woocommerce div.product div.images{position:relative}
.end-wf-single-position-beside_title,.end-wf-single-position-beside_cart{display:inline-flex;vertical-align:middle;margin:8px 8px 8px 0}
.end-wf-button.is-just-changed.end-wf-animation-pulse{animation:endWfSoftPulse .32s ease}
.end-wf-button.is-just-changed.end-wf-animation-pop{animation:endWfPop .28s ease}
.end-wf-button.is-just-changed.end-wf-animation-scale{animation:endWfScale .28s ease}
.end-wf-button.is-just-changed.end-wf-animation-none{animation:none}
@keyframes endWfSoftPulse{0%{transform:scale(1)}50%{transform:scale(1.1)}100%{transform:scale(1)}}
@keyframes endWfScale{0%{transform:scale(1)}50%{transform:scale(.88)}100%{transform:scale(1)}}
\n/* v0.3.1: Text + icon button customization */
.end-wf-style-text .end-wf-label{color:var(--end-wf-text-label);transition:color .16s ease}
.end-wf-style-text.is-favorite .end-wf-label{color:var(--end-wf-text-active-label)}
.end-wf-style-text.end-wf-text-no-border{border-color:transparent!important;border-width:0!important}
.end-wf-style-text.end-wf-text-colors-reverse.is-favorite{background:var(--end-wf-bg)!important;color:var(--end-wf-active-accent)!important;border-color:var(--end-wf-active-border)!important}
.end-wf-style-text.end-wf-text-colors-reverse.is-favorite .end-wf-label{color:var(--end-wf-active-accent)!important}
.end-wf-style-text.end-wf-text-colors-reverse.is-favorite .end-wf-icon{color:var(--end-wf-active-accent)!important}
.end-wf-style-text.end-wf-text-colors-reverse.end-wf-text-no-border.is-favorite{border-color:transparent!important}
.end-wf-style-text.end-wf-text-order-icon_end{flex-direction:row}

.end-wf-button .end-wf-heart-outline,
.end-wf-favorite-button .end-wf-heart-outline,
.end-wf-button svg .end-wf-heart-outline,
.end-wf-favorite-button svg .end-wf-heart-outline{
  fill:none!important;
  stroke:currentColor!important;
  stroke-width:1.8!important;
  stroke-linecap:round!important;
  stroke-linejoin:round!important;
}

/* Favorite-page cards always represent already-favorited products. */
.end-wf-force-filled svg path,
.end-wf-favorites-wrap .end-wf-favorite-card .end-wf-button.is-favorite svg path,
.end-wf-favorites-interface .end-wf-favorite-card .end-wf-button.is-favorite svg path{
  fill: currentColor !important;
  stroke: currentColor !important;
}

.end-wf-header-link{
  display:inline-flex;align-items:center;gap:8px;text-decoration:none;
  color:inherit;position:relative
}
.end-wf-header-icon{width:22px;height:22px;display:inline-flex}
.end-wf-header-icon svg{width:100%;height:100%}
.end-wf-header-icon svg path{fill:none;stroke:currentColor;stroke-width:1.8}
.end-wf-header-count{
  min-width:18px;height:18px;padding:0 5px;border-radius:999px;
  display:inline-flex;align-items:center;justify-content:center;
  font-size:11px;line-height:1;background:#ef4444;color:#fff
}

/* v0.5.2 — Favorite-card remove heart is always filled in every renderer context,
   including shortcode page, interface/API renderer and guest/AJAX cards. */
.end-wf-favorite-card .end-wf-button.is-favorite svg path,
.end-wf-favorite-card .end-wf-force-filled svg path,
.end-wf-favorites-wrap .end-wf-button.is-favorite svg path,
.end-wf-favorites-interface .end-wf-button.is-favorite svg path,
[data-end-wf-context="interface"] .end-wf-button.is-favorite svg path,
[data-end-wf-context="page"] .end-wf-button.is-favorite svg path{
  fill: currentColor !important;
  stroke: currentColor !important;
}

/* v0.7.0 header settings */
.end-wf-header-icon{
  width:var(--end-wf-header-icon-size,22px)!important;
  height:var(--end-wf-header-icon-size,22px)!important;
}
.end-wf-header-count{
  min-width:var(--end-wf-badge-size,18px)!important;
  height:var(--end-wf-badge-size,18px)!important;
  padding-inline:max(4px,calc(var(--end-wf-badge-size,18px) * .25));
}

.end-wf-icon-heart .end-wf-heart-outline{fill:none!important;stroke:currentColor!important}
.end-wf-icon-always-filled .end-wf-heart-filled{fill:currentColor!important;stroke:currentColor!important}
.end-wf-style-favorite_card .end-wf-icon-heart path{fill:currentColor!important;stroke:currentColor!important}

/* v0.9.3 — Text + icon: truly borderless when its border option is disabled. */
.end-wf-button.end-wf-style-text.end-wf-text-no-border,
.woocommerce .end-wf-button.end-wf-style-text.end-wf-text-no-border,
.single-product .end-wf-button.end-wf-style-text.end-wf-text-no-border {
  border: 0 !important;
  border-width: 0 !important;
  border-style: none !important;
  border-color: transparent !important;
  outline: 0 !important;
  outline-width: 0 !important;
  -webkit-appearance: none !important;
  appearance: none !important;
}

.end-wf-button.end-wf-style-text.end-wf-text-no-border::before,
.end-wf-button.end-wf-style-text.end-wf-text-no-border::after {
  border: 0 !important;
  outline: 0 !important;
}

/* Do not let theme button styles recreate a pill outline on hover/focus. */
.end-wf-button.end-wf-style-text.end-wf-text-no-border:hover,
.end-wf-button.end-wf-style-text.end-wf-text-no-border:focus,
.end-wf-button.end-wf-style-text.end-wf-text-no-border:focus-visible,
.end-wf-button.end-wf-style-text.end-wf-text-no-border.is-favorite,
.end-wf-button.end-wf-style-text.end-wf-text-no-border.is-favorite:hover,
.end-wf-button.end-wf-style-text.end-wf-text-no-border.is-favorite:focus {
  border: 0 !important;
  border-color: transparent !important;
  outline: 0 !important;
}


/* v0.10.0 — Favorite lists */
.end-wf-lists-bar{
  display:flex;
  flex-wrap:wrap;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin:0 0 18px;
  padding:12px;
  border:1px solid #e8edf3;
  border-radius:14px;
  background:#fff;
}
.end-wf-list-tabs{
  display:flex;
  flex-wrap:wrap;
  gap:7px;
  min-width:0;
}
.end-wf-list-tab{
  display:inline-flex;
  align-items:center;
  gap:7px;
  min-height:34px;
  padding:6px 11px;
  border:1px solid #e5e7eb;
  border-radius:999px;
  background:#f8fafc;
  color:#334155;
  text-decoration:none!important;
  font-size:13px;
  transition:.16s ease;
}
.end-wf-list-tab small{
  display:inline-flex;
  align-items:center;
  justify-content:center;
  min-width:20px;
  height:20px;
  padding:0 5px;
  border-radius:999px;
  background:#e9eef5;
  font-size:10px;
}
.end-wf-list-tab:hover{
  border-color:#cbd5e1;
  background:#fff;
}
.end-wf-list-tab.is-active{
  border-color:#cbd5e1;
  background:#eef4ff;
  color:#163a6b;
  font-weight:600;
}
.end-wf-list-tools{display:flex;align-items:center;gap:7px}
.end-wf-new-list-button,
.end-wf-delete-list-button,
.end-wf-new-list-form button{
  min-height:34px;
  padding:6px 11px;
  border:1px solid #dbe2ea;
  border-radius:9px;
  background:#fff;
  color:#334155;
  font-size:12px;
  cursor:pointer;
}
.end-wf-delete-list-button{color:#b42318}
.end-wf-new-list-form{
  flex:1 0 100%;
  display:flex;
  gap:7px;
  align-items:center;
  padding-top:10px;
  border-top:1px solid #eef2f7;
}
.end-wf-new-list-form[hidden]{display:none!important}
.end-wf-new-list-form input{
  width:min(320px,100%);
  height:36px;
  padding:6px 10px;
  border:1px solid #dbe2ea;
  border-radius:9px;
  background:#fff;
}

/* v0.10.0 — Save from cart */
.end-wf-cart-save{
  display:flex;
  align-items:center;
  flex-wrap:wrap;
  gap:7px;
  margin-top:7px;
}
.end-wf-cart-list-select{
  max-width:160px;
  min-height:30px;
  padding:3px 25px 3px 8px;
  border:1px solid #e2e8f0;
  border-radius:8px;
  background:#fff;
  color:#475569;
  font-size:11px;
}
.end-wf-cart-save-button{
  display:inline-flex;
  align-items:center;
  gap:5px;
  min-height:30px;
  padding:4px 9px;
  border:0!important;
  outline:0!important;
  border-radius:8px;
  background:transparent!important;
  color:#64748b!important;
  box-shadow:none!important;
  font-size:11px!important;
  font-weight:500;
  cursor:pointer;
  text-decoration:none!important;
  transition:color .15s ease,background .15s ease;
}
.end-wf-cart-save-button:hover{
  color:#dc2626!important;
  background:#fff6f6!important;
}
.end-wf-cart-save-button.is-saved{
  color:#15803d!important;
  background:#f0fdf4!important;
}
.end-wf-cart-save-button.is-loading{opacity:.55;pointer-events:none}
.end-wf-cart-save-heart{font-size:15px;line-height:1}
@media(max-width:600px){
  .end-wf-lists-bar{align-items:stretch}
  .end-wf-list-tools{width:100%}
  .end-wf-new-list-form{align-items:stretch;flex-wrap:wrap}
  .end-wf-new-list-form input{width:100%}
}


/* v0.10.1 — Simplified cart favorite actions */
.end-wf-cart-save-simple{
  margin-top:4px;
}
.end-wf-cart-save-simple .end-wf-cart-save-button{
  min-height:auto;
  padding:2px 0!important;
  border:0!important;
  background:transparent!important;
  color:#64748b!important;
  font-size:11px!important;
  box-shadow:none!important;
  border-radius:0!important;
}
.end-wf-cart-save-simple .end-wf-cart-save-button:hover{
  background:transparent!important;
  color:#dc2626!important;
}
.end-wf-cart-bulk{
  display:inline-flex;
  align-items:center;
  gap:7px;
  margin-inline-start:8px;
  vertical-align:middle;
}
.end-wf-cart-bulk-list{
  min-height:36px;
  max-width:170px;
  padding:4px 28px 4px 9px;
  border:1px solid #dbe2ea;
  border-radius:8px;
  background:#fff;
  color:#475569;
  font-size:12px;
}
.end-wf-cart-bulk-button{
  display:inline-flex!important;
  align-items:center;
  gap:5px;
}
.end-wf-cart-bulk-button.is-loading{opacity:.6;pointer-events:none}
.end-wf-cart-bulk-button.is-saved{border-color:#bbf7d0!important;color:#15803d!important}
@media(max-width:600px){
  .end-wf-cart-bulk{display:flex;width:100%;margin:10px 0 0;flex-wrap:wrap}
  .end-wf-cart-bulk-list{flex:1;max-width:none}
}

/* v0.10.1 — Independent icon styling inside Favorites cards */
.end-wf-page .end-wf-card-favorite .end-wf-style-favorite_card{
  width:var(--end-wf-favcard-size,38px)!important;
  height:var(--end-wf-favcard-size,38px)!important;
  min-width:var(--end-wf-favcard-size,38px)!important;
  min-height:var(--end-wf-favcard-size,38px)!important;
  color:var(--end-wf-favcard-color,#dc2626)!important;
  background:var(--end-wf-favcard-bg,#fff)!important;
  border-width:var(--end-wf-favcard-border-width,1px)!important;
  border-style:solid!important;
  border-color:var(--end-wf-favcard-border,#e5e7eb)!important;
}
.end-wf-page .end-wf-card-favorite .end-wf-style-favorite_card .end-wf-icon{
  width:var(--end-wf-favcard-icon,19px)!important;
  height:var(--end-wf-favcard-icon,19px)!important;
}
.end-wf-page[data-favcard-style="circle"] .end-wf-card-favorite .end-wf-style-favorite_card{
  border-radius:999px!important;
}
.end-wf-page[data-favcard-style="soft_square"] .end-wf-card-favorite .end-wf-style-favorite_card{
  border-radius:10px!important;
}
.end-wf-page[data-favcard-style="icon_only"] .end-wf-card-favorite .end-wf-style-favorite_card{
  width:var(--end-wf-favcard-icon,19px)!important;
  height:var(--end-wf-favcard-icon,19px)!important;
  min-width:var(--end-wf-favcard-icon,19px)!important;
  min-height:var(--end-wf-favcard-icon,19px)!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.end-wf-page .end-wf-card-favorite .end-wf-icon-always-filled,
.end-wf-page .end-wf-card-favorite .end-wf-icon-always-filled path{
  fill:currentColor!important;
  stroke:currentColor!important;
}
.end-wf-page .end-wf-card-favorite .end-wf-heart-outline{
  fill:none!important;
  stroke:currentColor!important;
}


/* v0.10.2 — Favorites outer shell is a layout wrapper, not a card */
.end-wf-page .end-wf-shell{
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.end-wf-context-interface .end-wf-shell{
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}

.end-wf-page.is-list-loading [data-end-wf-grid]{
  opacity:.55;
  pointer-events:none;
  transition:opacity .14s ease;
}
.end-wf-page.is-list-loading .end-wf-list-tab{
  pointer-events:none;
}


/* v0.10.3 — hard reset of Favorites component outer frame */
.end-wf-page,
.end-wf-page.end-wf-context-page,
.end-wf-page.end-wf-context-interface{
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  background:transparent!important;
  padding:0!important;
}
.end-wf-page::before,
.end-wf-page::after,
.end-wf-shell::before,
.end-wf-shell::after{
  border:0!important;
  outline:0!important;
  box-shadow:none!important;
  content:none!important;
}

/* Favorite-card visual settings are attached to the button itself. */
.end-wf-card-favorite .end-wf-style-favorite_card{
  width:var(--end-wf-favcard-size,38px)!important;
  height:var(--end-wf-favcard-size,38px)!important;
  min-width:var(--end-wf-favcard-size,38px)!important;
  min-height:var(--end-wf-favcard-size,38px)!important;
  padding:0!important;
  color:var(--end-wf-favcard-color,#dc2626)!important;
  background:var(--end-wf-favcard-bg,#fff)!important;
  border-width:var(--end-wf-favcard-border-width,1px)!important;
  border-style:solid!important;
  border-color:var(--end-wf-favcard-border,#e5e7eb)!important;
  box-shadow:0 4px 12px rgba(15,23,42,.10)!important;
}
.end-wf-card-favorite .end-wf-style-favorite_card .end-wf-icon{
  width:var(--end-wf-favcard-icon,19px)!important;
  height:var(--end-wf-favcard-icon,19px)!important;
  color:inherit!important;
}
.end-wf-card-favorite .end-wf-favorite-card-style-circle{
  border-radius:999px!important;
}
.end-wf-card-favorite .end-wf-favorite-card-style-soft_square{
  border-radius:10px!important;
}
.end-wf-card-favorite .end-wf-favorite-card-style-icon_only{
  width:var(--end-wf-favcard-icon,19px)!important;
  height:var(--end-wf-favcard-icon,19px)!important;
  min-width:var(--end-wf-favcard-icon,19px)!important;
  min-height:var(--end-wf-favcard-icon,19px)!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
}
.end-wf-card-favorite .end-wf-icon-always-filled,
.end-wf-card-favorite .end-wf-icon-always-filled path,
.end-wf-card-favorite .end-wf-heart-filled{
  fill:currentColor!important;
  stroke:currentColor!important;
}
.end-wf-card-favorite .end-wf-heart-outline{
  fill:none!important;
  stroke:currentColor!important;
}


/* ==========================================================
   v0.10.4 — Favorites container and card favorite control
   ========================================================== */

/* Main Favorites content is a white rounded card without a visible hard frame. */
.end-wf-page,
.end-wf-page.end-wf-context-page,
.end-wf-page.end-wf-context-interface{
  position:relative;
  box-sizing:border-box!important;
  border:0!important;
  outline:0!important;
  background:#fff!important;
  border-radius:18px!important;
  padding:16px!important;
  box-shadow:0 8px 28px rgba(15,23,42,.055)!important;
}
.end-wf-page > .end-wf-shell,
.end-wf-context-interface > .end-wf-shell{
  border:0!important;
  outline:0!important;
  border-radius:0!important;
  padding:0!important;
  background:transparent!important;
  box-shadow:none!important;
}

/* Every product card/media is an anchor for the favorite control. */
.end-wf-page .end-wf-card,
.end-wf-page .end-wf-card-media{
  position:relative!important;
}

/* Keep the remove-from-favorites control at the VISUAL top-left,
   regardless of RTL/LTR or card dimensions. */
.end-wf-page .end-wf-card-favorite,
.end-wf-page .end-wf-card-favorite.end-wf-card-favorite-top-left{
  position:absolute!important;
  top:10px!important;
  left:10px!important;
  right:auto!important;
  inset-inline-start:auto!important;
  inset-inline-end:auto!important;
  margin:0!important;
  z-index:60!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
}

/* Settings-driven favorite card button; override old interface fixed sizes too. */
.end-wf-page .end-wf-card-favorite .end-wf-style-favorite_card,
.end-wf-page.end-wf-context-interface .end-wf-card-favorite .end-wf-style-favorite_card{
  position:relative!important;
  top:auto!important;
  left:auto!important;
  right:auto!important;
  inset:auto!important;
  width:var(--end-wf-favcard-size,38px)!important;
  height:var(--end-wf-favcard-size,38px)!important;
  min-width:var(--end-wf-favcard-size,38px)!important;
  min-height:var(--end-wf-favcard-size,38px)!important;
  padding:0!important;
  margin:0!important;
  color:var(--end-wf-favcard-color,#dc2626)!important;
  background:var(--end-wf-favcard-bg,#fff)!important;
  border-width:var(--end-wf-favcard-border-width,1px)!important;
  border-style:solid!important;
  border-color:var(--end-wf-favcard-border,#e5e7eb)!important;
  box-shadow:0 3px 10px rgba(15,23,42,.10)!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  visibility:visible!important;
  opacity:1!important;
}

/* Explicit container shapes. */
.end-wf-page .end-wf-card-favorite .end-wf-favorite-card-style-circle{
  border-radius:999px!important;
}
.end-wf-page .end-wf-card-favorite .end-wf-favorite-card-style-soft_square{
  border-radius:10px!important;
}
.end-wf-page .end-wf-card-favorite .end-wf-favorite-card-style-icon_only{
  width:var(--end-wf-favcard-icon,19px)!important;
  height:var(--end-wf-favcard-icon,19px)!important;
  min-width:var(--end-wf-favcard-icon,19px)!important;
  min-height:var(--end-wf-favcard-icon,19px)!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
  border-radius:0!important;
}

/* Icon dimensions and active favorite color. */
.end-wf-page .end-wf-card-favorite .end-wf-style-favorite_card .end-wf-icon,
.end-wf-page.end-wf-context-interface .end-wf-card-favorite .end-wf-style-favorite_card .end-wf-icon{
  width:var(--end-wf-favcard-icon,19px)!important;
  height:var(--end-wf-favcard-icon,19px)!important;
  color:inherit!important;
  display:block!important;
}

/* A product rendered inside Favorites is already active.
   Filled-heart setting therefore renders as a solid red/current-color heart. */
.end-wf-page .end-wf-card-favorite .end-wf-style-favorite_card.is-favorite{
  color:var(--end-wf-favcard-color,#dc2626)!important;
}
.end-wf-page .end-wf-card-favorite .end-wf-icon-always-filled,
.end-wf-page .end-wf-card-favorite .end-wf-icon-always-filled path,
.end-wf-page .end-wf-card-favorite .end-wf-heart-filled{
  fill:currentColor!important;
  stroke:currentColor!important;
  stroke-width:0!important;
}
.end-wf-page .end-wf-card-favorite .end-wf-heart-outline{
  fill:none!important;
  stroke:currentColor!important;
  stroke-width:1.8!important;
}

.end-wf-page .end-wf-card-favorite .end-wf-style-favorite_card:hover{
  color:#b91c1c!important;
  transform:translateY(-1px)!important;
}

@media(max-width:600px){
  .end-wf-page,
  .end-wf-page.end-wf-context-page,
  .end-wf-page.end-wf-context-interface{
    padding:12px!important;
    border-radius:15px!important;
  }
  .end-wf-page .end-wf-card-favorite,
  .end-wf-page .end-wf-card-favorite.end-wf-card-favorite-top-left{
    top:8px!important;
    left:8px!important;
  }
}


/* ==========================================================
   v0.10.5 — Stable favorite control + polished cart button
   ========================================================== */

/* Favorite control is always anchored to the physical top-left corner. */
.end-wf-page .end-wf-card-media{
  position:relative!important;
  overflow:visible!important;
}
.end-wf-page .end-wf-card-favorite,
.end-wf-page .end-wf-card-favorite.end-wf-card-favorite-top-left,
.end-wf-context-interface .end-wf-card-favorite,
.end-wf-context-interface .end-wf-card-favorite.end-wf-card-favorite-top-left{
  position:absolute!important;
  top:10px!important;
  left:10px!important;
  right:auto!important;
  bottom:auto!important;
  inset-inline-start:auto!important;
  inset-inline-end:auto!important;
  z-index:80!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  visibility:visible!important;
  opacity:1!important;
  pointer-events:auto!important;
}

/* Force the active favorite control to remain visible and red/current-color. */
.end-wf-page .end-wf-card-favorite .end-wf-button,
.end-wf-context-interface .end-wf-card-favorite .end-wf-button{
  display:inline-flex!important;
  visibility:visible!important;
  opacity:1!important;
  pointer-events:auto!important;
}
.end-wf-page .end-wf-card-favorite .end-wf-button.is-favorite,
.end-wf-context-interface .end-wf-card-favorite .end-wf-button.is-favorite{
  color:var(--end-wf-favcard-color,#dc2626)!important;
}
.end-wf-page .end-wf-card-favorite svg,
.end-wf-context-interface .end-wf-card-favorite svg{
  display:block!important;
  width:var(--end-wf-favcard-icon,19px)!important;
  height:var(--end-wf-favcard-icon,19px)!important;
  overflow:visible!important;
}
.end-wf-page .end-wf-card-favorite .end-wf-icon-always-filled,
.end-wf-page .end-wf-card-favorite .end-wf-icon-always-filled path,
.end-wf-context-interface .end-wf-card-favorite .end-wf-icon-always-filled,
.end-wf-context-interface .end-wf-card-favorite .end-wf-icon-always-filled path{
  fill:currentColor!important;
  stroke:currentColor!important;
}

/* Dedicated Add to cart button inside Favorites cards. */
.end-wf-card-actions{
  margin-top:10px!important;
}
.end-wf-card-actions .end-wf-add-cart-button{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:7px!important;
  width:100%!important;
  min-height:38px!important;
  padding:8px 12px!important;
  border:1px solid #d9e3ef!important;
  border-radius:10px!important;
  background:#f6f9fd!important;
  color:#173a67!important;
  box-shadow:none!important;
  text-decoration:none!important;
  font-size:12px!important;
  font-weight:600!important;
  line-height:1.3!important;
  transition:background .16s ease,border-color .16s ease,color .16s ease,transform .16s ease!important;
}
.end-wf-card-actions .end-wf-add-cart-button:hover,
.end-wf-card-actions .end-wf-add-cart-button:focus{
  background:#edf4fc!important;
  border-color:#b8cce3!important;
  color:#102e55!important;
  transform:translateY(-1px)!important;
  text-decoration:none!important;
}
.end-wf-card-actions .end-wf-add-cart-button.added{
  background:#f0fdf4!important;
  border-color:#bbf7d0!important;
  color:#15803d!important;
}
.end-wf-add-cart-icon{
  display:inline-flex;
  width:16px;
  height:16px;
  flex:0 0 16px;
}
.end-wf-add-cart-icon svg{
  width:16px;
  height:16px;
  fill:none;
  stroke:currentColor;
  stroke-width:1.8;
  stroke-linecap:round;
  stroke-linejoin:round;
}
.end-wf-add-cart-label{
  display:inline-block;
}
.end-wf-card-actions .added_to_cart{
  display:none!important;
}

@media(max-width:600px){
  .end-wf-page .end-wf-card-favorite,
  .end-wf-context-interface .end-wf-card-favorite{
    top:8px!important;
    left:8px!important;
  }
  .end-wf-card-actions .end-wf-add-cart-button{
    min-height:36px!important;
    padding:7px 9px!important;
    font-size:11px!important;
  }
}


/* ==========================================================
   v0.10.7 — Elegant cart-to-favorites modal
   ========================================================== */
.end-wf-cart-save,
.end-wf-cart-bulk{
  display:none!important;
}

.end-wf-cart-modal-launch{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:7px!important;
  min-height:38px!important;
  padding:7px 14px!important;
  border:1px solid #d6e0ec!important;
  border-radius:9px!important;
  background:#fff!important;
  color:#24496f!important;
  box-shadow:none!important;
  font-size:12px!important;
  font-weight:600!important;
  line-height:1.3!important;
  vertical-align:middle!important;
  transition:background .15s ease,border-color .15s ease,color .15s ease!important;
}
.end-wf-cart-modal-launch:hover{
  background:#f6f9fd!important;
  border-color:#b9ccdf!important;
  color:#173a67!important;
}
.end-wf-cart-modal-launch-icon{
  font-size:17px;
  line-height:1;
}

.end-wf-modal-open{
  overflow:hidden!important;
}
.end-wf-cart-modal[hidden]{
  display:none!important;
}
.end-wf-cart-modal{
  position:fixed;
  inset:0;
  z-index:100000;
  display:flex;
  align-items:center;
  justify-content:center;
  padding:18px;
}
.end-wf-cart-modal-backdrop{
  position:absolute;
  inset:0;
  background:rgba(15,23,42,.42);
  backdrop-filter:blur(2px);
}
.end-wf-cart-modal-dialog{
  position:relative;
  z-index:1;
  width:min(620px,100%);
  max-height:min(760px,calc(100vh - 36px));
  display:flex;
  flex-direction:column;
  overflow:hidden;
  border:1px solid rgba(226,232,240,.9);
  border-radius:18px;
  background:#fff;
  box-shadow:0 24px 70px rgba(15,23,42,.20);
}
.end-wf-cart-modal-head{
  display:flex;
  align-items:flex-start;
  justify-content:space-between;
  gap:18px;
  padding:20px 20px 16px;
  border-bottom:1px solid #edf1f5;
}
.end-wf-cart-modal-head h3{
  margin:0 0 5px;
  color:#172c43;
  font-size:18px;
  line-height:1.35;
}
.end-wf-cart-modal-head p{
  margin:0;
  color:#718096;
  font-size:12px;
  line-height:1.65;
}
.end-wf-cart-modal-x{
  width:32px;
  height:32px;
  flex:0 0 32px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:0;
  border-radius:8px;
  background:#f5f7fa;
  color:#64748b;
  font-size:22px;
  line-height:1;
  cursor:pointer;
}
.end-wf-cart-modal-x:hover{background:#edf2f7;color:#334155}

.end-wf-cart-modal-body{
  overflow:auto;
  padding:18px 20px;
}
.end-wf-cart-modal-section + .end-wf-cart-modal-section{
  margin-top:20px;
  padding-top:18px;
  border-top:1px solid #edf1f5;
}
.end-wf-cart-modal-section-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:12px;
  margin-bottom:10px;
}
.end-wf-cart-modal-section-head strong,
.end-wf-cart-list-heading{
  color:#334155;
  font-size:13px;
}
.end-wf-cart-select-all{
  padding:0;
  border:0;
  background:transparent;
  color:#416b96;
  font-size:11px;
  cursor:pointer;
}
.end-wf-cart-select-all:hover{text-decoration:underline}

.end-wf-cart-product-list{
  display:grid;
  gap:8px;
}
.end-wf-cart-product-row{
  position:relative;
  display:grid;
  grid-template-columns:22px 52px minmax(0,1fr) 24px;
  align-items:center;
  gap:10px;
  min-height:66px;
  padding:7px 10px;
  border:1px solid #e7edf3;
  border-radius:12px;
  background:#fff;
  cursor:pointer;
  transition:border-color .15s ease,background .15s ease;
}
.end-wf-cart-product-row:hover{
  border-color:#cbd8e6;
  background:#fbfdff;
}
.end-wf-cart-product-row input{
  width:17px;
  height:17px;
  margin:0;
  accent-color:#315f8d;
}
.end-wf-cart-product-image{
  width:52px;
  height:52px;
  overflow:hidden;
  border-radius:9px;
  background:#f7f9fb;
}
.end-wf-cart-product-image img{
  width:100%;
  height:100%;
  object-fit:cover;
  display:block;
}
.end-wf-cart-product-info{
  min-width:0;
  display:flex;
  flex-direction:column;
  gap:3px;
}
.end-wf-cart-product-name{
  overflow:hidden;
  color:#263d54;
  font-size:12px;
  font-weight:600;
  line-height:1.45;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.end-wf-cart-product-info small{
  color:#8492a4;
  font-size:10px;
}
.end-wf-cart-product-check{
  width:21px;
  height:21px;
  display:flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  background:#e8f3ee;
  color:#16845b;
  font-size:11px;
  opacity:0;
  transform:scale(.8);
  transition:.15s ease;
}
.end-wf-cart-product-row:has(input:checked) .end-wf-cart-product-check{
  opacity:1;
  transform:scale(1);
}
.end-wf-cart-product-row:has(input:checked){
  border-color:#c7d8e8;
  background:#f8fbfe;
}

.end-wf-cart-list-options{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:8px;
  margin-top:10px;
}
.end-wf-cart-list-option{
  display:flex;
  align-items:center;
  gap:8px;
  min-height:44px;
  padding:8px 10px;
  border:1px solid #e3eaf1;
  border-radius:10px;
  background:#fff;
  cursor:pointer;
}
.end-wf-cart-list-option:hover{border-color:#c8d5e3}
.end-wf-cart-list-option:has(input:checked){
  border-color:#a9c0d8;
  background:#f6faff;
}
.end-wf-cart-list-option input{
  margin:0;
  accent-color:#315f8d;
}
.end-wf-cart-list-option span{
  min-width:0;
  flex:1;
  color:#3d5369;
  font-size:12px;
  overflow:hidden;
  text-overflow:ellipsis;
  white-space:nowrap;
}
.end-wf-cart-list-option small{
  min-width:22px;
  height:22px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border-radius:999px;
  background:#eef3f7;
  color:#64748b;
  font-size:10px;
}
.end-wf-cart-list-new{
  grid-column:1/-1;
  border-style:dashed;
}
.end-wf-cart-new-list{
  margin-top:9px;
}
.end-wf-cart-new-list[hidden]{display:none!important}
.end-wf-cart-new-list input{
  width:100%;
  height:40px;
  padding:7px 11px;
  border:1px solid #dbe4ed;
  border-radius:9px;
  background:#fff;
  color:#334155;
  font-size:12px;
  box-sizing:border-box;
}
.end-wf-cart-guest-note{
  margin-top:10px;
  padding:10px 12px;
  border-radius:10px;
  background:#f8fafc;
  color:#64748b;
  font-size:11px;
  line-height:1.6;
}

.end-wf-cart-modal-foot{
  display:flex;
  align-items:center;
  justify-content:flex-end;
  gap:8px;
  padding:14px 20px 18px;
  border-top:1px solid #edf1f5;
  background:#fbfcfd;
}
.end-wf-cart-modal-cancel,
.end-wf-cart-modal-save{
  min-height:38px!important;
  padding:7px 15px!important;
  border-radius:9px!important;
  font-size:12px!important;
}
.end-wf-cart-modal-save.is-loading{
  opacity:.6;
  pointer-events:none;
}

@media(max-width:600px){
  .end-wf-cart-modal{
    padding:10px;
    align-items:flex-end;
  }
  .end-wf-cart-modal-dialog{
    width:100%;
    max-height:88vh;
    border-radius:18px 18px 12px 12px;
  }
  .end-wf-cart-modal-head{padding:17px 16px 13px}
  .end-wf-cart-modal-body{padding:15px 16px}
  .end-wf-cart-modal-foot{padding:12px 16px 15px}
  .end-wf-cart-list-options{grid-template-columns:1fr}
  .end-wf-cart-list-new{grid-column:auto}
  .end-wf-cart-product-row{
    grid-template-columns:20px 46px minmax(0,1fr) 20px;
  }
  .end-wf-cart-product-image{width:46px;height:46px}
}


/* ==========================================================
   v0.10.8 — Cart modal alignment, RTL and product cards
   ========================================================== */

/* Cart action launcher follows WooCommerce button geometry. */
.woocommerce-cart-form .actions .end-wf-cart-modal-launch{
  box-sizing:border-box!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  vertical-align:middle!important;
  height:40px!important;
  min-height:40px!important;
  padding:0 15px!important;
  margin:0 0 0 8px!important;
  border-radius:var(--theme-button-border-radius, 6px)!important;
  line-height:40px!important;
  font-size:13px!important;
  white-space:nowrap!important;
}
.rtl .woocommerce-cart-form .actions .end-wf-cart-modal-launch{
  margin:0 8px 0 0!important;
}

/* Modal direction and alignment */
.rtl .end-wf-cart-modal-dialog{
  direction:rtl;
  text-align:right;
}
.rtl .end-wf-cart-modal-head,
.rtl .end-wf-cart-modal-section-head,
.rtl .end-wf-cart-modal-foot{
  direction:rtl;
}
.rtl .end-wf-cart-modal-x{
  margin-left:0;
  margin-right:auto;
}
.rtl .end-wf-cart-product-row{
  direction:rtl;
  text-align:right;
}
.rtl .end-wf-cart-list-option{
  direction:rtl;
  text-align:right;
}
.rtl .end-wf-cart-modal-foot{
  justify-content:flex-start;
}

/* Product rows become clean cards */
.end-wf-cart-product-list{
  display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));
  gap:10px;
}
.end-wf-cart-product-row{
  grid-template-columns:22px 72px minmax(0,1fr) 24px!important;
  min-height:92px!important;
  padding:10px!important;
  border:1px solid #e2e8f0!important;
  border-radius:14px!important;
  background:#fff!important;
  box-shadow:0 2px 8px rgba(15,23,42,.035);
}
.end-wf-cart-product-row:hover{
  border-color:#c7d5e3!important;
  background:#fbfdff!important;
}
.end-wf-cart-product-row:has(input:checked){
  border-color:#b8ccdf!important;
  background:#f7fbff!important;
}
.end-wf-cart-product-image{
  width:72px!important;
  height:72px!important;
  border-radius:11px!important;
  background:#f7f9fb!important;
}
.end-wf-cart-product-info{
  gap:4px!important;
  align-self:center;
}
.end-wf-cart-product-name{
  white-space:normal!important;
  display:-webkit-box!important;
  -webkit-line-clamp:2;
  -webkit-box-orient:vertical;
  overflow:hidden!important;
  font-size:12px!important;
  line-height:1.45!important;
}
.end-wf-cart-product-price{
  display:block;
  color:#173a67;
  font-size:12px;
  font-weight:700;
  line-height:1.4;
}
.end-wf-cart-product-price del{
  color:#94a3b8;
  font-weight:400;
  margin-inline-end:4px;
}
.end-wf-cart-product-price ins{
  text-decoration:none;
}

/* Better aligned modal footer buttons */
.end-wf-cart-modal-foot{
  gap:9px!important;
}
.end-wf-cart-modal-foot .button{
  box-sizing:border-box!important;
  min-width:120px!important;
  height:40px!important;
  min-height:40px!important;
  padding:0 16px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  line-height:1!important;
  border-radius:9px!important;
  font-size:12px!important;
}

/* Hide Browse products on custom lists even if another renderer left it in DOM. */
.end-wf-page[data-list-id]:not([data-list-id="default"]) .end-wf-browse-products{
  display:none!important;
}

@media(max-width:720px){
  .end-wf-cart-product-list{
    grid-template-columns:1fr;
  }
  .end-wf-cart-product-row{
    grid-template-columns:20px 64px minmax(0,1fr) 22px!important;
  }
  .end-wf-cart-product-image{
    width:64px!important;
    height:64px!important;
  }
  .woocommerce-cart-form .actions .end-wf-cart-modal-launch{
    width:100%!important;
    margin:8px 0 0!important;
  }
  .end-wf-cart-modal-foot{
    flex-direction:column-reverse;
  }
  .end-wf-cart-modal-foot .button{
    width:100%!important;
  }
}


/* ==========================================================
   v0.10.9 — Cart action placement + larger modal product cards
   ========================================================== */

/* Never show the shop link while a custom favorite list is active. */
.end-wf-page[data-list-id]:not([data-list-id="default"]) .end-wf-shop-button,
.end-wf-page[data-list-id]:not([data-list-id="default"]) [data-end-wf-browse-products]{
  display:none!important;
}

/* Launcher lives inside the same coupon controls group. */
.woocommerce-cart-form .actions .coupon .end-wf-cart-modal-launch{
  float:none!important;
  position:static!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  vertical-align:middle!important;
  width:auto!important;
  max-width:none!important;
  margin-inline-start:8px!important;
  margin-inline-end:0!important;
  white-space:nowrap!important;
}
.rtl .woocommerce-cart-form .actions .coupon .end-wf-cart-modal-launch{
  margin-inline-start:8px!important;
  margin-inline-end:0!important;
}

/* Modal product chooser: proper visual cards with a large image. */
.end-wf-cart-product-list{
  display:grid!important;
  grid-template-columns:repeat(2,minmax(0,1fr))!important;
  gap:12px!important;
}

.end-wf-cart-product-row{
  position:relative!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:stretch!important;
  min-width:0!important;
  min-height:0!important;
  padding:8px!important;
  gap:8px!important;
  border:1px solid #e2e8f0!important;
  border-radius:14px!important;
  background:#fff!important;
  box-shadow:0 2px 10px rgba(15,23,42,.04)!important;
  overflow:hidden!important;
}

.end-wf-cart-product-row > input[data-end-wf-cart-product]{
  position:absolute!important;
  top:12px!important;
  inset-inline-start:12px!important;
  z-index:4!important;
  width:18px!important;
  height:18px!important;
  margin:0!important;
}

.end-wf-cart-product-check{
  position:absolute!important;
  top:11px!important;
  inset-inline-end:11px!important;
  z-index:4!important;
}

.end-wf-cart-product-image{
  display:block!important;
  width:100%!important;
  height:150px!important;
  min-height:150px!important;
  overflow:hidden!important;
  border-radius:11px!important;
  background:#f6f8fb!important;
}

.end-wf-cart-product-image img{
  display:block!important;
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  object-fit:contain!important;
  object-position:center!important;
  margin:0!important;
}

.end-wf-cart-product-info{
  display:flex!important;
  flex-direction:column!important;
  align-items:flex-start!important;
  gap:5px!important;
  padding:2px 4px 4px!important;
  min-width:0!important;
}

.rtl .end-wf-cart-product-info{
  align-items:flex-start!important;
  text-align:right!important;
  width:100%!important;
}

.end-wf-cart-product-name{
  width:100%!important;
  font-size:12.5px!important;
  font-weight:600!important;
  line-height:1.5!important;
  color:#263d54!important;
  white-space:normal!important;
  display:-webkit-box!important;
  -webkit-line-clamp:2!important;
  -webkit-box-orient:vertical!important;
  overflow:hidden!important;
}

.end-wf-cart-product-price{
  width:100%!important;
  font-size:13px!important;
  font-weight:700!important;
  color:#173a67!important;
  line-height:1.4!important;
}

.end-wf-cart-product-info small{
  width:100%!important;
  color:#8492a4!important;
  font-size:10.5px!important;
}

.end-wf-cart-product-row:has(input:checked){
  border-color:#afc7df!important;
  background:#f8fbff!important;
  box-shadow:0 3px 12px rgba(36,73,111,.07)!important;
}

@media(max-width:720px){
  .end-wf-cart-product-list{
    grid-template-columns:1fr!important;
  }
  .end-wf-cart-product-image{
    height:170px!important;
    min-height:170px!important;
  }
  .woocommerce-cart-form .actions .coupon .end-wf-cart-modal-launch{
    width:auto!important;
    margin-top:8px!important;
  }
}


/* ==========================================================
   v0.11.0 — New-list field + exact cart-button geometry
   ========================================================== */
.end-wf-cart-new-list{
  display:block;
  margin-top:10px;
}
.end-wf-cart-new-list[hidden],
.end-wf-cart-new-list[aria-hidden="true"]{
  display:none!important;
}
.end-wf-cart-new-list[aria-hidden="false"]{
  display:block!important;
}

/* Do not impose our own rounding on the cart launcher.
   JS copies the computed radius from the actual coupon button. */
.woocommerce-cart-form .actions .coupon .end-wf-cart-modal-launch{
  border-radius:inherit;
}


/* v0.11.1 — cart launcher corner refinement */
.woocommerce-cart-form .actions .coupon .end-wf-cart-modal-launch{
  border-radius:12px!important;
}


/* ==========================================================
   v0.11.2 — Favorite card layout controls
   ========================================================== */

/* Product image fit is controlled by the plugin setting. */
.end-wf-page .end-wf-card .end-wf-product-image,
.end-wf-context-interface .end-wf-card .end-wf-product-image{
  display:block!important;
  width:100%!important;
  height:100%!important;
  box-sizing:border-box!important;
  overflow:hidden!important;
}
.end-wf-page .end-wf-card .end-wf-product-image img,
.end-wf-context-interface .end-wf-card .end-wf-product-image img{
  display:block!important;
  width:100%!important;
  height:100%!important;
  max-width:none!important;
  max-height:none!important;
  margin:0!important;
  object-fit:var(--end-wf-card-image-fit,contain)!important;
  object-position:center!important;
}

/* Configurable, physical top-left placement.
   It does not move with RTL/LTR and remains stable across card sizes. */
.end-wf-page .end-wf-card-favorite,
.end-wf-context-interface .end-wf-card-favorite,
.end-wf-page .end-wf-card-favorite.end-wf-card-favorite-top-left,
.end-wf-context-interface .end-wf-card-favorite.end-wf-card-favorite-top-left{
  position:absolute!important;
  top:var(--end-wf-fav-offset-top,10px)!important;
  left:var(--end-wf-fav-offset-left,10px)!important;
  right:auto!important;
  bottom:auto!important;
  inset-inline-start:auto!important;
  inset-inline-end:auto!important;
  margin:0!important;
  z-index:80!important;
}

/* Product title is a required card element in every layout.
   Do not let compact/custom dimensions or host-theme rules hide it. */
.end-wf-page .end-wf-card .end-wf-card-title,
.end-wf-context-interface .end-wf-card .end-wf-card-title{
  display:block!important;
  visibility:visible!important;
  opacity:1!important;
  position:relative!important;
  width:100%!important;
  min-width:0!important;
  min-height:2.9em!important;
  max-height:none!important;
  margin:0 0 8px!important;
  padding:0!important;
  overflow:hidden!important;
  font-size:clamp(12px,1.05vw,16px)!important;
  line-height:1.45!important;
  text-align:inherit!important;
}
.end-wf-page .end-wf-card .end-wf-card-title a,
.end-wf-context-interface .end-wf-card .end-wf-card-title a{
  display:-webkit-box!important;
  visibility:visible!important;
  opacity:1!important;
  width:100%!important;
  color:inherit!important;
  text-decoration:none!important;
  white-space:normal!important;
  overflow:hidden!important;
  text-overflow:ellipsis!important;
  -webkit-box-orient:vertical!important;
  -webkit-line-clamp:2!important;
}

/* Keep enough body space for the title even in compact layouts. */
.end-wf-card-compact_grid .end-wf-card-body,
.end-wf-card-compact_list .end-wf-card-body,
.end-wf-context-interface .end-wf-card-body{
  min-width:0!important;
}
.end-wf-card-compact_grid .end-wf-card-title,
.end-wf-card-compact_list .end-wf-card-title{
  display:block!important;
  min-height:2.8em!important;
  font-size:12.5px!important;
}

/* Stock is now a badge on the product image. */
.end-wf-stock-badge{
  position:absolute!important;
  left:auto!important;
  right:10px!important;
  bottom:10px!important;
  z-index:45!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  max-width:calc(100% - 20px)!important;
  min-height:25px!important;
  padding:4px 8px!important;
  border:1px solid transparent!important;
  border-radius:999px!important;
  font-size:10.5px!important;
  font-weight:600!important;
  line-height:1.2!important;
  white-space:nowrap!important;
  box-sizing:border-box!important;
  box-shadow:0 3px 10px rgba(15,23,42,.08)!important;
  backdrop-filter:blur(3px);
}
.end-wf-stock-badge.is-in-stock{
  color:#166534!important;
  background:rgba(240,253,244,.94)!important;
  border-color:#bbf7d0!important;
}
.end-wf-stock-badge.is-out-of-stock{
  color:#b91c1c!important;
  background:rgba(254,242,242,.95)!important;
  border-color:#fecaca!important;
}

/* Old stock text is intentionally retired from cards. */
.end-wf-card-body > .end-wf-stock{
  display:none!important;
}

/* Narrow cards: protect title and badge instead of hiding them. */
@media(max-width:600px){
  .end-wf-page .end-wf-card .end-wf-card-title,
  .end-wf-context-interface .end-wf-card .end-wf-card-title{
    min-height:2.8em!important;
    font-size:12px!important;
  }
  .end-wf-stock-badge{
    right:7px!important;
    bottom:7px!important;
    min-height:23px!important;
    padding:3px 7px!important;
    font-size:9.5px!important;
  }
}


/* ==========================================================
   v0.11.3 — image edge mode, title sizing, stock button,
   and refreshed Favorites heading icon
   ========================================================== */

/* Image spacing mode */
.end-wf-page .end-wf-card.end-wf-image-edge-padded .end-wf-product-image,
.end-wf-context-interface .end-wf-card.end-wf-image-edge-padded .end-wf-product-image{
  padding:10px!important;
}

.end-wf-page .end-wf-card.end-wf-image-edge-edge_to_edge .end-wf-product-image,
.end-wf-context-interface .end-wf-card.end-wf-image-edge-edge_to_edge .end-wf-product-image{
  padding:0!important;
}

.end-wf-page .end-wf-card.end-wf-image-edge-edge_to_edge .end-wf-card-media,
.end-wf-context-interface .end-wf-card.end-wf-image-edge-edge_to_edge .end-wf-card-media{
  overflow:hidden!important;
}

/* In full-edge mode the image is allowed to visually reach the media edges. */
.end-wf-page .end-wf-card.end-wf-image-edge-edge_to_edge .end-wf-product-image img,
.end-wf-context-interface .end-wf-card.end-wf-image-edge-edge_to_edge .end-wf-product-image img{
  width:100%!important;
  height:100%!important;
}

/* Product title size is admin controlled and must remain visible in every layout. */
.end-wf-page .end-wf-card .end-wf-card-title,
.end-wf-context-interface .end-wf-card .end-wf-card-title,
.end-wf-card-compact_grid .end-wf-card-title,
.end-wf-card-compact_list .end-wf-card-title{
  font-size:var(--end-wf-card-title-size,15px)!important;
  min-height:0!important;
  margin:0 0 3px!important;
  line-height:1.4!important;
}

/* Bring price closer to the title. */
.end-wf-page .end-wf-card .end-wf-price,
.end-wf-context-interface .end-wf-card .end-wf-price{
  margin-top:0!important;
  margin-bottom:7px!important;
  line-height:1.35!important;
}

/* Keep cards usable when the product cannot be purchased. */
.end-wf-card-actions .end-wf-add-cart-disabled{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  gap:7px!important;
  width:100%!important;
  min-height:38px!important;
  padding:8px 12px!important;
  border:1px solid #e5e7eb!important;
  border-radius:10px!important;
  background:#f3f4f6!important;
  color:#9ca3af!important;
  box-shadow:none!important;
  cursor:not-allowed!important;
  opacity:.72!important;
  pointer-events:none!important;
  text-decoration:none!important;
}

/* Larger clean SVG icon for the active Favorites/list heading.
   No small square behind it. */
.end-wf-page .end-wf-title-icon,
.end-wf-context-interface .end-wf-title-icon{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:48px!important;
  height:48px!important;
  min-width:48px!important;
  padding:0!important;
  border:0!important;
  border-radius:0!important;
  background:transparent!important;
  box-shadow:none!important;
  color:inherit!important;
  font-size:0!important;
  line-height:1!important;
}
.end-wf-page .end-wf-title-icon svg,
.end-wf-context-interface .end-wf-title-icon svg{
  display:block!important;
  width:32px!important;
  height:32px!important;
  fill:currentColor!important;
  stroke:none!important;
}

@media(max-width:600px){
  .end-wf-page .end-wf-title-icon,
  .end-wf-context-interface .end-wf-title-icon{
    width:42px!important;
    height:42px!important;
    min-width:42px!important;
  }
  .end-wf-page .end-wf-title-icon svg,
  .end-wf-context-interface .end-wf-title-icon svg{
    width:28px!important;
    height:28px!important;
  }
}


/* ==========================================================
   v0.11.4 — unified floating controls inside favorite cards
   ========================================================== */

/* One shared inset from card-image edges for every floating element. */
.end-wf-page .end-wf-card,
.end-wf-context-interface .end-wf-card{
  --end-wf-card-edge-inset:10px;
  --end-wf-card-float-height:30px;
}

/* Favorite control: same edge spacing and comparable visual scale. */
.end-wf-page .end-wf-card-favorite,
.end-wf-context-interface .end-wf-card-favorite,
.end-wf-page .end-wf-card-favorite.end-wf-card-favorite-top-left,
.end-wf-context-interface .end-wf-card-favorite.end-wf-card-favorite-top-left{
  top:var(--end-wf-card-edge-inset)!important;
  left:var(--end-wf-card-edge-inset)!important;
  right:auto!important;
  bottom:auto!important;
  margin:0!important;
}

/* Keep the favorite circle visually proportional to badges. */
.end-wf-page .end-wf-card-favorite .end-wf-style-favorite_card,
.end-wf-context-interface .end-wf-card-favorite .end-wf-style-favorite_card{
  width:var(--end-wf-card-float-height)!important;
  height:var(--end-wf-card-float-height)!important;
  min-width:var(--end-wf-card-float-height)!important;
  min-height:var(--end-wf-card-float-height)!important;
  padding:0!important;
  border-radius:999px!important;
  box-sizing:border-box!important;
}

/* Heart itself scales with the floating-control size. */
.end-wf-page .end-wf-card-favorite .end-wf-icon,
.end-wf-context-interface .end-wf-card-favorite .end-wf-icon,
.end-wf-page .end-wf-card-favorite svg,
.end-wf-context-interface .end-wf-card-favorite svg{
  width:18px!important;
  height:18px!important;
}

/* Sale badge: same top inset and same minimum height. */
.end-wf-page .end-wf-sale,
.end-wf-context-interface .end-wf-sale{
  top:var(--end-wf-card-edge-inset)!important;
  right:var(--end-wf-card-edge-inset)!important;
  left:auto!important;
  min-height:var(--end-wf-card-float-height)!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  padding:4px 9px!important;
  border-radius:999px!important;
  box-sizing:border-box!important;
  line-height:1!important;
}

/* Stock badge: same right/bottom inset and matching vertical proportions. */
.end-wf-page .end-wf-stock-badge,
.end-wf-context-interface .end-wf-stock-badge{
  right:var(--end-wf-card-edge-inset)!important;
  bottom:var(--end-wf-card-edge-inset)!important;
  left:auto!important;
  min-height:var(--end-wf-card-float-height)!important;
  padding:4px 9px!important;
  border-radius:999px!important;
  box-sizing:border-box!important;
  line-height:1!important;
}

/* Remove old offset variables entirely from the active visual result. */
.end-wf-page .end-wf-card-favorite,
.end-wf-context-interface .end-wf-card-favorite{
  inset-inline-start:auto!important;
  inset-inline-end:auto!important;
}

@media(max-width:600px){
  .end-wf-page .end-wf-card,
  .end-wf-context-interface .end-wf-card{
    --end-wf-card-edge-inset:8px;
    --end-wf-card-float-height:28px;
  }

  .end-wf-page .end-wf-card-favorite .end-wf-icon,
  .end-wf-context-interface .end-wf-card-favorite .end-wf-icon,
  .end-wf-page .end-wf-card-favorite svg,
  .end-wf-context-interface .end-wf-card-favorite svg{
    width:17px!important;
    height:17px!important;
  }
}


/* ==========================================================
   v0.11.5 — list icon library, adaptive badge inset,
   and robust single-product favorite placement
   ========================================================== */

/* List tabs with per-list SVG icons */
.end-wf-list-tab{
  gap:7px!important;
}
.end-wf-list-tab-icon{
  width:20px;
  height:20px;
  min-width:20px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  color:#49647e;
}
.end-wf-list-tab.is-active .end-wf-list-tab-icon{
  color:#1f4f82;
}
.end-wf-list-svg{
  display:block;
  width:18px;
  height:18px;
}
.end-wf-title-icon .end-wf-list-svg{
  width:32px!important;
  height:32px!important;
}

.end-wf-change-list-icon,
.end-wf-new-list-icon-button{
  min-height:34px;
  padding:6px 10px;
  border:1px solid #dbe2ea;
  border-radius:9px;
  background:#fff;
  color:#475569;
  font-size:12px;
  cursor:pointer;
}
.end-wf-new-list-icon-button{
  display:inline-flex;
  align-items:center;
  gap:6px;
}
.end-wf-new-list-icon-button [data-end-wf-new-list-icon-preview]{
  display:inline-flex;
  width:20px;
  height:20px;
  align-items:center;
  justify-content:center;
}

.end-wf-list-icon-picker{
  flex:1 0 100%;
  margin-top:10px;
  padding:12px;
  border:1px solid #e3eaf1;
  border-radius:12px;
  background:#fbfdff;
}
.end-wf-list-icon-picker[hidden]{display:none!important}
.end-wf-list-icon-picker-head{
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:10px;
  margin-bottom:10px;
}
.end-wf-list-icon-picker-head strong{
  color:#334155;
  font-size:12px;
}
.end-wf-list-icon-picker-head button{
  width:28px;
  height:28px;
  display:inline-flex;
  align-items:center;
  justify-content:center;
  border:0;
  border-radius:7px;
  background:#eef2f6;
  color:#64748b;
  font-size:18px;
  cursor:pointer;
}
.end-wf-list-icon-grid{
  display:grid;
  grid-template-columns:repeat(10,minmax(34px,1fr));
  gap:7px;
}
.end-wf-list-icon-choice{
  aspect-ratio:1/1;
  min-width:34px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid #e2e8f0;
  border-radius:9px;
  background:#fff;
  color:#4b647d;
  cursor:pointer;
  transition:border-color .15s ease,background .15s ease,color .15s ease,transform .15s ease;
}
.end-wf-list-icon-choice:hover{
  border-color:#a9bfd5;
  background:#f5f9fd;
  color:#173a67;
  transform:translateY(-1px);
}
.end-wf-list-icon-choice .end-wf-list-svg{
  width:21px;
  height:21px;
}

/* All floating elements share the same inset calculated per card.
   Cover/full-edge cards may use a smaller value than padded cards. */
.end-wf-page .end-wf-card-favorite,
.end-wf-context-interface .end-wf-card-favorite{
  top:var(--end-wf-card-edge-inset,10px)!important;
  left:var(--end-wf-card-edge-inset,10px)!important;
}
.end-wf-page .end-wf-sale,
.end-wf-context-interface .end-wf-sale{
  top:var(--end-wf-card-edge-inset,10px)!important;
  right:var(--end-wf-card-edge-inset,10px)!important;
}
.end-wf-page .end-wf-stock-badge,
.end-wf-context-interface .end-wf-stock-badge{
  right:var(--end-wf-card-edge-inset,10px)!important;
  bottom:var(--end-wf-card-edge-inset,10px)!important;
}

/* Put heart and top-right badge on the same visual baseline. */
.end-wf-page .end-wf-card-favorite .end-wf-style-favorite_card,
.end-wf-context-interface .end-wf-card-favorite .end-wf-style-favorite_card,
.end-wf-page .end-wf-sale,
.end-wf-context-interface .end-wf-sale{
  min-height:30px!important;
  height:30px!important;
  box-sizing:border-box!important;
}

/* Inline single-product positions must never inherit floating coordinates. */
.end-wf-single-wrap:not(.end-wf-single-position-image_float){
  position:relative!important;
  inset:auto!important;
  top:auto!important;
  right:auto!important;
  bottom:auto!important;
  left:auto!important;
  z-index:auto!important;
}
.end-wf-single-position-before_title,
.end-wf-single-position-after_title,
.end-wf-single-position-after_price,
.end-wf-single-position-before_cart,
.end-wf-single-position-after_cart{
  display:flex!important;
  width:max-content;
  max-width:100%;
  margin:8px 0!important;
}
.end-wf-single-position-beside_title,
.end-wf-single-position-beside_cart{
  display:inline-flex!important;
  width:auto!important;
  margin:6px 8px!important;
  vertical-align:middle!important;
}
.end-wf-single-position-image_float{
  position:absolute!important;
  top:var(--end-wf-top,12px)!important;
  right:var(--end-wf-side,12px)!important;
  left:auto!important;
  bottom:auto!important;
  z-index:var(--end-wf-z,25)!important;
  margin:0!important;
}

@media(max-width:720px){
  .end-wf-list-icon-grid{
    grid-template-columns:repeat(5,minmax(40px,1fr));
  }
}


/* ==========================================================
   v0.11.6 — authoritative floating-control geometry
   ========================================================== */
.end-wf-page .end-wf-card,
.end-wf-context-interface .end-wf-card,
.end-wf-page.end-wf-context-interface .end-wf-card{
  --end-wf-card-float-size:30px!important;
  --end-wf-card-float-icon:18px!important;
}

/* Same favorite wrapper geometry everywhere. */
.end-wf-page .end-wf-card .end-wf-card-favorite,
.end-wf-context-interface .end-wf-card .end-wf-card-favorite,
.end-wf-page.end-wf-context-interface .end-wf-card .end-wf-card-favorite{
  position:absolute!important;
  top:var(--end-wf-card-edge-inset)!important;
  left:var(--end-wf-card-edge-inset)!important;
  right:auto!important;
  bottom:auto!important;
  inset-inline-start:auto!important;
  inset-inline-end:auto!important;
  margin:0!important;
  padding:0!important;
  width:var(--end-wf-card-float-size)!important;
  height:var(--end-wf-card-float-size)!important;
  min-width:var(--end-wf-card-float-size)!important;
  min-height:var(--end-wf-card-float-size)!important;
  max-width:var(--end-wf-card-float-size)!important;
  max-height:var(--end-wf-card-float-size)!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  box-sizing:border-box!important;
  z-index:80!important;
  visibility:visible!important;
  opacity:1!important;
}

/* Same favorite button size for page/interface and all stock states. */
.end-wf-page .end-wf-card .end-wf-card-favorite .end-wf-button,
.end-wf-context-interface .end-wf-card .end-wf-card-favorite .end-wf-button,
.end-wf-page.end-wf-context-interface .end-wf-card .end-wf-card-favorite .end-wf-button,
.end-wf-page .end-wf-card .end-wf-card-favorite .end-wf-style-favorite_card,
.end-wf-context-interface .end-wf-card .end-wf-card-favorite .end-wf-style-favorite_card{
  position:relative!important;
  inset:auto!important;
  top:auto!important;
  left:auto!important;
  right:auto!important;
  bottom:auto!important;
  width:var(--end-wf-card-float-size)!important;
  height:var(--end-wf-card-float-size)!important;
  min-width:var(--end-wf-card-float-size)!important;
  min-height:var(--end-wf-card-float-size)!important;
  max-width:var(--end-wf-card-float-size)!important;
  max-height:var(--end-wf-card-float-size)!important;
  padding:0!important;
  margin:0!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  box-sizing:border-box!important;
  border-radius:999px!important;
  visibility:visible!important;
  opacity:1!important;
  transform:none!important;
}

/* Same SVG size everywhere, including unavailable products. */
.end-wf-page .end-wf-card .end-wf-card-favorite svg,
.end-wf-context-interface .end-wf-card .end-wf-card-favorite svg,
.end-wf-page.end-wf-context-interface .end-wf-card .end-wf-card-favorite svg,
.end-wf-page .end-wf-card .end-wf-card-favorite .end-wf-icon,
.end-wf-context-interface .end-wf-card .end-wf-card-favorite .end-wf-icon{
  display:block!important;
  width:var(--end-wf-card-float-icon)!important;
  height:var(--end-wf-card-float-icon)!important;
  min-width:var(--end-wf-card-float-icon)!important;
  min-height:var(--end-wf-card-float-icon)!important;
  max-width:var(--end-wf-card-float-icon)!important;
  max-height:var(--end-wf-card-float-icon)!important;
  margin:0!important;
  padding:0!important;
  transform:none!important;
}

/* Favorite icon and sale badge share the exact same TOP baseline. */
.end-wf-page .end-wf-card .end-wf-sale,
.end-wf-context-interface .end-wf-card .end-wf-sale,
.end-wf-page.end-wf-context-interface .end-wf-card .end-wf-sale{
  position:absolute!important;
  top:var(--end-wf-card-edge-inset)!important;
  right:var(--end-wf-card-edge-inset)!important;
  left:auto!important;
  bottom:auto!important;
  margin:0!important;
  min-height:var(--end-wf-card-float-size)!important;
  height:var(--end-wf-card-float-size)!important;
  padding:0 9px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  box-sizing:border-box!important;
  border-radius:999px!important;
  line-height:1!important;
}

/* Stock badge uses the same edge inset and vertical size. */
.end-wf-page .end-wf-card .end-wf-stock-badge,
.end-wf-context-interface .end-wf-card .end-wf-stock-badge,
.end-wf-page.end-wf-context-interface .end-wf-card .end-wf-stock-badge{
  position:absolute!important;
  right:var(--end-wf-card-edge-inset)!important;
  bottom:var(--end-wf-card-edge-inset)!important;
  left:auto!important;
  top:auto!important;
  margin:0!important;
  min-height:var(--end-wf-card-float-size)!important;
  height:var(--end-wf-card-float-size)!important;
  padding:0 9px!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  box-sizing:border-box!important;
  border-radius:999px!important;
  line-height:1!important;
}

/* Stock status must never alter favorite-control dimensions. */
.end-wf-card:has(.end-wf-stock-badge.is-out-of-stock) .end-wf-card-favorite,
.end-wf-card:has(.end-wf-stock-badge.is-out-of-stock) .end-wf-card-favorite .end-wf-button,
.end-wf-card:has(.end-wf-stock-badge.is-in-stock) .end-wf-card-favorite,
.end-wf-card:has(.end-wf-stock-badge.is-in-stock) .end-wf-card-favorite .end-wf-button{
  width:var(--end-wf-card-float-size)!important;
  height:var(--end-wf-card-float-size)!important;
  min-width:var(--end-wf-card-float-size)!important;
  min-height:var(--end-wf-card-float-size)!important;
  max-width:var(--end-wf-card-float-size)!important;
  max-height:var(--end-wf-card-float-size)!important;
  padding:0!important;
  margin:0!important;
}

@media(max-width:600px){
  .end-wf-page .end-wf-card,
  .end-wf-context-interface .end-wf-card,
  .end-wf-page.end-wf-context-interface .end-wf-card{
    --end-wf-card-float-size:28px!important;
    --end-wf-card-float-icon:17px!important;
  }
}


/* ==========================================================
   v0.11.7 — normalize external theme favorite wrapper
   The theme may wrap our button with:
   .eg-theme-favorite > .eg-favorite-glyph + .end-wf-button
   This block makes that wrapper layout-neutral.
   ========================================================== */

/* Do not let the theme wrapper introduce its own box, offset or transform. */
.end-wf-card-favorite > .eg-theme-favorite,
.end-wf-card-favorite .eg-theme-favorite{
  position:static!important;
  inset:auto!important;
  top:auto!important;
  right:auto!important;
  bottom:auto!important;
  left:auto!important;
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:var(--end-wf-card-float-size)!important;
  height:var(--end-wf-card-float-size)!important;
  min-width:var(--end-wf-card-float-size)!important;
  min-height:var(--end-wf-card-float-size)!important;
  max-width:var(--end-wf-card-float-size)!important;
  max-height:var(--end-wf-card-float-size)!important;
  margin:0!important;
  padding:0!important;
  border:0!important;
  background:transparent!important;
  box-shadow:none!important;
  transform:none!important;
  line-height:1!important;
  box-sizing:border-box!important;
}

/* The theme's own glyph is redundant; our real SVG button is the source of truth. */
.end-wf-card-favorite .eg-favorite-glyph{
  display:none!important;
  width:0!important;
  height:0!important;
  margin:0!important;
  padding:0!important;
}

/* One exact geometry for the wrapper and button in every context. */
.end-wf-page .end-wf-card-favorite,
.end-wf-context-interface .end-wf-card-favorite,
.end-wf-card-context-page .end-wf-card-favorite,
.end-wf-card-context-interface .end-wf-card-favorite{
  width:var(--end-wf-card-float-size)!important;
  height:var(--end-wf-card-float-size)!important;
  min-width:var(--end-wf-card-float-size)!important;
  min-height:var(--end-wf-card-float-size)!important;
  max-width:var(--end-wf-card-float-size)!important;
  max-height:var(--end-wf-card-float-size)!important;
  top:var(--end-wf-card-edge-inset)!important;
  left:var(--end-wf-card-edge-inset)!important;
  right:auto!important;
  bottom:auto!important;
  margin:0!important;
  padding:0!important;
  transform:none!important;
}

/* The actual favorite button must match the shared floating-control size exactly.
   This intentionally matches the inline --end-wf-favcard-size to the card variable. */
.end-wf-card-favorite .end-wf-button.end-wf-style-favorite_card{
  --end-wf-favcard-size:var(--end-wf-card-float-size)!important;
  --end-wf-favcard-icon:var(--end-wf-card-float-icon)!important;
  width:var(--end-wf-card-float-size)!important;
  height:var(--end-wf-card-float-size)!important;
  min-width:var(--end-wf-card-float-size)!important;
  min-height:var(--end-wf-card-float-size)!important;
  max-width:var(--end-wf-card-float-size)!important;
  max-height:var(--end-wf-card-float-size)!important;
  margin:0!important;
  padding:0!important;
  transform:none!important;
}

/* SVG gets one exact size too. */
.end-wf-card-favorite .end-wf-button.end-wf-style-favorite_card .end-wf-icon-wrap{
  display:flex!important;
  align-items:center!important;
  justify-content:center!important;
  width:var(--end-wf-card-float-icon)!important;
  height:var(--end-wf-card-float-icon)!important;
  margin:0!important;
  padding:0!important;
  line-height:1!important;
}
.end-wf-card-favorite .end-wf-button.end-wf-style-favorite_card .end-wf-icon{
  width:var(--end-wf-card-float-icon)!important;
  height:var(--end-wf-card-float-icon)!important;
  min-width:var(--end-wf-card-float-icon)!important;
  min-height:var(--end-wf-card-float-icon)!important;
  max-width:var(--end-wf-card-float-icon)!important;
  max-height:var(--end-wf-card-float-icon)!important;
  margin:0!important;
  padding:0!important;
  transform:none!important;
}

/* Badges use the very same float-size and inset variables. */
.end-wf-card .end-wf-sale,
.end-wf-card .end-wf-stock-badge{
  min-height:var(--end-wf-card-float-size)!important;
  height:var(--end-wf-card-float-size)!important;
  box-sizing:border-box!important;
}

.end-wf-card .end-wf-sale{
  top:var(--end-wf-card-edge-inset)!important;
  right:var(--end-wf-card-edge-inset)!important;
  left:auto!important;
}
.end-wf-card .end-wf-stock-badge{
  right:var(--end-wf-card-edge-inset)!important;
  bottom:var(--end-wf-card-edge-inset)!important;
  left:auto!important;
}

/* Available / unavailable status must have zero influence on favorite geometry. */
.end-wf-card:has(.is-in-stock) .end-wf-card-favorite,
.end-wf-card:has(.is-out-of-stock) .end-wf-card-favorite,
.end-wf-card:has(.is-in-stock) .eg-theme-favorite,
.end-wf-card:has(.is-out-of-stock) .eg-theme-favorite,
.end-wf-card:has(.is-in-stock) .end-wf-style-favorite_card,
.end-wf-card:has(.is-out-of-stock) .end-wf-style-favorite_card{
  width:var(--end-wf-card-float-size)!important;
  height:var(--end-wf-card-float-size)!important;
  min-width:var(--end-wf-card-float-size)!important;
  min-height:var(--end-wf-card-float-size)!important;
  max-width:var(--end-wf-card-float-size)!important;
  max-height:var(--end-wf-card-float-size)!important;
  margin:0!important;
  padding:0!important;
  transform:none!important;
}

/* Compact/grid contexts must not alter these dimensions. */
.end-wf-card-compact_grid .end-wf-card-favorite,
.end-wf-card-grid .end-wf-card-favorite,
.end-wf-card-compact_list .end-wf-card-favorite,
.end-wf-card-list .end-wf-card-favorite{
  width:var(--end-wf-card-float-size)!important;
  height:var(--end-wf-card-float-size)!important;
  top:var(--end-wf-card-edge-inset)!important;
  left:var(--end-wf-card-edge-inset)!important;
}


/* ==========================================================
   v0.11.8 — list colors and lighter product badges
   ========================================================== */
.end-wf-list-color-field{
  display:inline-flex;
  align-items:center;
  gap:6px;
  margin-inline-start:auto;
  color:#64748b;
  font-size:11px;
}
.end-wf-list-color-field input[type="color"]{
  width:32px;
  height:28px;
  padding:2px;
  border:1px solid #dbe4ed;
  border-radius:7px;
  background:#fff;
  cursor:pointer;
}
.end-wf-list-tab-icon,
.end-wf-title-icon,
[data-end-wf-new-list-icon-preview]{
  transition:color .15s ease;
}

/* Softer sale / stock badges */
.end-wf-card .end-wf-sale{
  color:#9f1239!important;
  background:rgba(255,241,242,.92)!important;
  border:1px solid #fecdd3!important;
  box-shadow:0 2px 8px rgba(159,18,57,.05)!important;
  font-weight:700!important;
}
.end-wf-card .end-wf-stock-badge.is-in-stock{
  color:#166534!important;
  background:rgba(240,253,244,.90)!important;
  border-color:#dcfce7!important;
  box-shadow:0 2px 8px rgba(22,101,52,.04)!important;
}
.end-wf-card .end-wf-stock-badge.is-out-of-stock{
  color:#991b1b!important;
  background:rgba(254,242,242,.90)!important;
  border-color:#fee2e2!important;
  box-shadow:0 2px 8px rgba(153,27,27,.04)!important;
}

/* Extra badges supplied through end_woo_favorites_product_badges */
.end-wf-extra-badges{
  position:absolute!important;
  top:calc(var(--end-wf-card-edge-inset) + var(--end-wf-card-float-size) + 6px)!important;
  right:var(--end-wf-card-edge-inset)!important;
  left:auto!important;
  z-index:44!important;
  display:flex!important;
  flex-direction:column!important;
  align-items:flex-end!important;
  gap:5px!important;
  max-width:calc(100% - (var(--end-wf-card-edge-inset) * 2))!important;
}
.end-wf-extra-badge{
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  min-height:24px!important;
  padding:4px 8px!important;
  border:1px solid #e2e8f0!important;
  border-radius:999px!important;
  background:rgba(248,250,252,.92)!important;
  color:#475569!important;
  box-shadow:0 2px 7px rgba(15,23,42,.04)!important;
  font-size:10px!important;
  line-height:1.2!important;
}


/* ==========================================================
   v0.11.9 — active list icon follows the list custom color
   ========================================================== */

/* Never force the opened-list icon to red.
   The actual color comes from the list's saved color. */
.end-wf-page .end-wf-title-icon,
.end-wf-context-interface .end-wf-title-icon,
.end-wf-page.end-wf-context-interface .end-wf-title-icon{
  color:var(--end-wf-active-list-color,currentColor)!important;
}

/* List SVGs keep their original fill/stroke structure and inherit only the color. */
.end-wf-page .end-wf-title-icon svg,
.end-wf-context-interface .end-wf-title-icon svg,
.end-wf-page.end-wf-context-interface .end-wf-title-icon svg,
.end-wf-page .end-wf-list-tab-icon svg,
.end-wf-context-interface .end-wf-list-tab-icon svg{
  color:inherit!important;
}

/* Filled icon paths (heart/star/etc.) also inherit the selected color. */
.end-wf-page .end-wf-title-icon svg [fill="currentColor"],
.end-wf-context-interface .end-wf-title-icon svg [fill="currentColor"],
.end-wf-page .end-wf-list-tab-icon svg [fill="currentColor"],
.end-wf-context-interface .end-wf-list-tab-icon svg [fill="currentColor"]{
  fill:currentColor!important;
}


/* ==========================================================
   v0.12.0 — animated empty-state heart
   ========================================================== */

.end-wf-empty-heart{
  --end-wf-empty-heart-color:#dc2626;
  position:relative;
  width:92px;
  height:92px;
  margin:0 auto 16px;
  display:flex;
  align-items:center;
  justify-content:center;
  isolation:isolate;
}

.end-wf-empty-heart-svg{
  position:relative;
  z-index:3;
  width:54px;
  height:54px;
  display:block;
  overflow:visible;
  color:var(--end-wf-empty-heart-color);
  filter:drop-shadow(0 6px 14px rgba(220,38,38,.10));
}

.end-wf-empty-heart-svg path{
  fill:currentColor;
  transform-origin:32px 34px;
}

.end-wf-empty-heart-ring{
  position:absolute;
  inset:50%;
  width:48px;
  height:48px;
  margin:-24px 0 0 -24px;
  border:1px solid rgba(220,38,38,.20);
  border-radius:999px;
  opacity:0;
  transform:scale(.68);
  pointer-events:none;
}

.end-wf-empty-heart.is-animating .end-wf-empty-heart-svg{
  animation:endWfEmptyHeartFloat 7s cubic-bezier(.22,.8,.25,1) both;
}

.end-wf-empty-heart.is-animating .end-wf-empty-heart-svg path{
  animation:endWfEmptyHeartPulse 7s cubic-bezier(.22,.8,.25,1) both;
}

.end-wf-empty-heart.is-animating .end-wf-empty-heart-ring-one{
  animation:endWfEmptyHeartRingOne 7s ease-out both;
}

.end-wf-empty-heart.is-animating .end-wf-empty-heart-ring-two{
  animation:endWfEmptyHeartRingTwo 7s ease-out both;
}

@keyframes endWfEmptyHeartPulse{
  0%   { transform:scale(.88); opacity:.70; }
  8%   { transform:scale(1.12); opacity:1; }
  14%  { transform:scale(.98); }
  22%  { transform:scale(1.08); }
  30%  { transform:scale(1); }
  42%  { transform:scale(1.06); }
  52%  { transform:scale(1); }
  64%  { transform:scale(1.035); }
  76%  { transform:scale(1); }
  88%  { transform:scale(1.02); }
  100% { transform:scale(1); opacity:1; }
}

@keyframes endWfEmptyHeartFloat{
  0%   { transform:translateY(4px); filter:drop-shadow(0 4px 10px rgba(220,38,38,.07)); }
  12%  { transform:translateY(-4px); filter:drop-shadow(0 10px 18px rgba(220,38,38,.16)); }
  28%  { transform:translateY(0); }
  46%  { transform:translateY(-2px); }
  62%  { transform:translateY(0); }
  80%  { transform:translateY(-1px); }
  100% { transform:translateY(0); filter:drop-shadow(0 6px 14px rgba(220,38,38,.10)); }
}

@keyframes endWfEmptyHeartRingOne{
  0%,5% { opacity:0; transform:scale(.62); }
  10%   { opacity:.42; }
  28%   { opacity:0; transform:scale(1.55); }
  42%   { opacity:0; transform:scale(.72); }
  48%   { opacity:.26; }
  66%   { opacity:0; transform:scale(1.35); }
  100%  { opacity:0; transform:scale(1.35); }
}

@keyframes endWfEmptyHeartRingTwo{
  0%,18% { opacity:0; transform:scale(.70); }
  24%    { opacity:.25; }
  44%    { opacity:0; transform:scale(1.72); }
  62%    { opacity:0; transform:scale(.78); }
  68%    { opacity:.18; }
  88%    { opacity:0; transform:scale(1.45); }
  100%   { opacity:0; transform:scale(1.45); }
}

@media(max-width:600px){
  .end-wf-empty-heart{
    width:82px;
    height:82px;
    margin-bottom:14px;
  }
  .end-wf-empty-heart-svg{
    width:48px;
    height:48px;
  }
}

@media(prefers-reduced-motion:reduce){
  .end-wf-empty-heart.is-animating .end-wf-empty-heart-svg,
  .end-wf-empty-heart.is-animating .end-wf-empty-heart-svg path,
  .end-wf-empty-heart.is-animating .end-wf-empty-heart-ring-one,
  .end-wf-empty-heart.is-animating .end-wf-empty-heart-ring-two{
    animation:none!important;
  }
}


/* ==========================================================
   v0.12.1 — preserve list icon artwork exactly
   ========================================================== */
.end-wf-title-icon .end-wf-list-svg,
.end-wf-list-tab-icon .end-wf-list-svg,
.end-wf-new-list-icon-button .end-wf-list-svg,
.end-wf-list-icon-choice .end-wf-list-svg{
  color:inherit!important;
  overflow:visible!important;
}

/* Stroke icons keep their strokes. */
.end-wf-title-icon .end-wf-list-svg path:not([fill="currentColor"]),
.end-wf-title-icon .end-wf-list-svg circle:not([fill="currentColor"]),
.end-wf-title-icon .end-wf-list-svg rect:not([fill="currentColor"]),
.end-wf-list-tab-icon .end-wf-list-svg path:not([fill="currentColor"]),
.end-wf-list-tab-icon .end-wf-list-svg circle:not([fill="currentColor"]),
.end-wf-list-tab-icon .end-wf-list-svg rect:not([fill="currentColor"]),
.end-wf-list-icon-choice .end-wf-list-svg path:not([fill="currentColor"]),
.end-wf-list-icon-choice .end-wf-list-svg circle:not([fill="currentColor"]),
.end-wf-list-icon-choice .end-wf-list-svg rect:not([fill="currentColor"]){
  fill:none!important;
  stroke:currentColor!important;
}

/* Filled shapes such as heart/star keep their intended fill. */
.end-wf-title-icon .end-wf-list-svg [fill="currentColor"],
.end-wf-list-tab-icon .end-wf-list-svg [fill="currentColor"],
.end-wf-list-icon-choice .end-wf-list-svg [fill="currentColor"],
.end-wf-new-list-icon-button .end-wf-list-svg [fill="currentColor"]{
  fill:currentColor!important;
  stroke:none!important;
}


/* v0.12.1 — empty heart must animate even if JS init is delayed */
.end-wf-empty-heart:not(.end-wf-animation-ready) .end-wf-empty-heart-svg{
  animation:endWfEmptyHeartFloat 7s cubic-bezier(.22,.8,.25,1) both;
}
.end-wf-empty-heart:not(.end-wf-animation-ready) .end-wf-empty-heart-svg path{
  animation:endWfEmptyHeartPulse 7s cubic-bezier(.22,.8,.25,1) both;
}
.end-wf-empty-heart:not(.end-wf-animation-ready) .end-wf-empty-heart-ring-one{
  animation:endWfEmptyHeartRingOne 7s ease-out both;
}
.end-wf-empty-heart:not(.end-wf-animation-ready) .end-wf-empty-heart-ring-two{
  animation:endWfEmptyHeartRingTwo 7s ease-out both;
}


/* ==========================================================
   v0.12.2 — empty-state favorite scenario
   ========================================================== */
.end-wf-empty-scene{
  width:150px;
  height:150px;
  margin:0 auto 18px;
  display:flex;
  align-items:center;
  justify-content:center;
  position:relative;
}

.end-wf-scene-card{
  width:112px;
  height:128px;
  position:relative;
  padding:9px;
  border:1px solid #e7edf3;
  border-radius:16px;
  background:#fff;
  box-shadow:0 8px 24px rgba(15,23,42,.055);
  box-sizing:border-box;
  transform-origin:center;
}

.end-wf-scene-image{
  height:72px;
  position:relative;
  overflow:hidden;
  border-radius:11px;
  background:linear-gradient(145deg,#f5f8fb,#eef3f7);
}
.end-wf-scene-image::before{
  content:"";
  position:absolute;
  width:46px;
  height:46px;
  border-radius:50%;
  top:13px;
  left:33px;
  background:rgba(148,163,184,.10);
}
.end-wf-scene-image-line{
  position:absolute;
  height:4px;
  border-radius:999px;
  background:rgba(148,163,184,.18);
}
.end-wf-scene-image-line-one{width:35px;left:18px;bottom:13px}
.end-wf-scene-image-line-two{width:24px;left:59px;bottom:13px}

.end-wf-scene-title-line,
.end-wf-scene-price-line{
  position:absolute;
  display:block;
  left:10px;
  height:5px;
  border-radius:999px;
}
.end-wf-scene-title-line{
  width:60px;
  bottom:24px;
  background:#dce5ed;
}
.end-wf-scene-price-line{
  width:35px;
  bottom:12px;
  background:#bfd2e4;
}

.end-wf-scene-favorite{
  position:absolute;
  top:14px;
  left:14px;
  width:30px;
  height:30px;
  display:flex;
  align-items:center;
  justify-content:center;
  border:1px solid #e3e8ee;
  border-radius:999px;
  background:#fff;
  box-shadow:0 3px 10px rgba(15,23,42,.06);
  z-index:4;
}
.end-wf-scene-favorite svg{
  width:17px;
  height:17px;
  overflow:visible;
}
.end-wf-scene-heart-outline{
  fill:transparent;
  stroke:#94a3b8;
  stroke-width:1.8;
}
.end-wf-scene-heart-fill{
  fill:#dc2626;
  stroke:#dc2626;
  stroke-width:1.1;
  opacity:0;
  transform:scale(.35);
  transform-origin:12px 12px;
}

.end-wf-scene-pointer{
  position:absolute;
  width:22px;
  height:22px;
  left:52px;
  top:74px;
  z-index:7;
  opacity:0;
}
.end-wf-scene-pointer::before{
  content:"";
  position:absolute;
  width:13px;
  height:18px;
  left:3px;
  top:2px;
  border-radius:8px 8px 9px 9px;
  border:1.5px solid #64748b;
  background:rgba(255,255,255,.96);
  transform:rotate(-24deg);
}
.end-wf-scene-pointer-dot{
  position:absolute;
  width:5px;
  height:5px;
  border-radius:50%;
  background:#64748b;
  left:8px;
  top:4px;
}

.end-wf-scene-ripple{
  position:absolute;
  inset:50%;
  width:26px;
  height:26px;
  margin:-13px 0 0 -13px;
  border:1px solid rgba(220,38,38,.34);
  border-radius:50%;
  opacity:0;
  pointer-events:none;
}
.end-wf-scene-spark{
  position:absolute;
  width:4px;
  height:4px;
  border-radius:50%;
  background:#f59e0b;
  opacity:0;
}
.end-wf-scene-spark-one{top:3px;right:0}
.end-wf-scene-spark-two{top:10px;right:-7px}
.end-wf-scene-spark-three{top:-3px;right:8px}

/* One complete scenario = 7 seconds. */
.end-wf-empty-scene.is-animating .end-wf-scene-card{
  animation:endWfSceneCard 7s ease both;
}
.end-wf-empty-scene.is-animating .end-wf-scene-pointer{
  animation:endWfScenePointer 7s cubic-bezier(.2,.75,.25,1) both;
}
.end-wf-empty-scene.is-animating .end-wf-scene-heart-outline{
  animation:endWfSceneOutline 7s ease both;
}
.end-wf-empty-scene.is-animating .end-wf-scene-heart-fill{
  animation:endWfSceneFill 7s cubic-bezier(.2,.9,.25,1) both;
}
.end-wf-empty-scene.is-animating .end-wf-scene-ripple{
  animation:endWfSceneRipple 7s ease-out both;
}
.end-wf-empty-scene.is-animating .end-wf-scene-spark-one{
  animation:endWfSceneSparkOne 7s ease-out both;
}
.end-wf-empty-scene.is-animating .end-wf-scene-spark-two{
  animation:endWfSceneSparkTwo 7s ease-out both;
}
.end-wf-empty-scene.is-animating .end-wf-scene-spark-three{
  animation:endWfSceneSparkThree 7s ease-out both;
}

@keyframes endWfSceneCard{
  0%{transform:translateY(4px) scale(.96);opacity:.72}
  12%{transform:translateY(0) scale(1);opacity:1}
  48%{transform:translateY(0) scale(1)}
  56%{transform:translateY(-2px) scale(1.01)}
  68%{transform:translateY(0) scale(1)}
  100%{transform:translateY(0) scale(1)}
}

@keyframes endWfScenePointer{
  0%,16%{opacity:0;transform:translate(30px,24px)}
  24%{opacity:.85}
  42%{opacity:1;transform:translate(-27px,-55px)}
  48%{opacity:1;transform:translate(-30px,-58px) scale(.9)}
  55%{opacity:.6;transform:translate(-30px,-58px) scale(.94)}
  66%,100%{opacity:0;transform:translate(-22px,-50px)}
}

@keyframes endWfSceneOutline{
  0%,43%{opacity:1;stroke:#94a3b8}
  49%{opacity:.35;stroke:#dc2626}
  55%,100%{opacity:0;stroke:#dc2626}
}

@keyframes endWfSceneFill{
  0%,42%{opacity:0;transform:scale(.35)}
  48%{opacity:1;transform:scale(1.25)}
  54%{opacity:1;transform:scale(.93)}
  60%{opacity:1;transform:scale(1.06)}
  68%,100%{opacity:1;transform:scale(1)}
}

@keyframes endWfSceneRipple{
  0%,43%{opacity:0;transform:scale(.6)}
  47%{opacity:.55}
  59%{opacity:0;transform:scale(1.8)}
  100%{opacity:0}
}

@keyframes endWfSceneSparkOne{
  0%,46%{opacity:0;transform:translate(0,0) scale(.5)}
  50%{opacity:1}
  59%{opacity:0;transform:translate(7px,-8px) scale(1.2)}
  100%{opacity:0}
}
@keyframes endWfSceneSparkTwo{
  0%,48%{opacity:0;transform:translate(0,0) scale(.5)}
  52%{opacity:.9}
  61%{opacity:0;transform:translate(10px,2px) scale(1.1)}
  100%{opacity:0}
}
@keyframes endWfSceneSparkThree{
  0%,47%{opacity:0;transform:translate(0,0) scale(.5)}
  51%{opacity:.8}
  60%{opacity:0;transform:translate(3px,-10px) scale(1.05)}
  100%{opacity:0}
}

@media(max-width:600px){
  .end-wf-empty-scene{
    width:138px;
    height:138px;
  }
  .end-wf-scene-card{
    transform:scale(.94);
  }
}

@media(prefers-reduced-motion:reduce){
  .end-wf-empty-scene.is-animating *{
    animation:none!important;
  }
  .end-wf-scene-heart-outline{opacity:0!important}
  .end-wf-scene-heart-fill{opacity:1!important;transform:scale(1)!important}
}


/* ==========================================================
   v0.12.4 — single product floating favorite placement
   ========================================================== */

.end-wf-single-position-image_float{
  position:absolute!important;
  z-index:25!important;
  margin:0!important;
  top:auto!important;
  right:auto!important;
  bottom:auto!important;
  left:auto!important;
}

/* Physical image corners; intentionally not mirrored by RTL. */
.end-wf-single-position-image_float.end-wf-single-float-top_left{
  top:var(--end-wf-single-image-inset,12px)!important;
  left:var(--end-wf-single-image-inset,12px)!important;
}
.end-wf-single-position-image_float.end-wf-single-float-top_right{
  top:var(--end-wf-single-image-inset,12px)!important;
  right:var(--end-wf-single-image-inset,12px)!important;
}
.end-wf-single-position-image_float.end-wf-single-float-bottom_left{
  bottom:var(--end-wf-single-image-inset,12px)!important;
  left:var(--end-wf-single-image-inset,12px)!important;
}
.end-wf-single-position-image_float.end-wf-single-float-bottom_right{
  bottom:var(--end-wf-single-image-inset,12px)!important;
  right:var(--end-wf-single-image-inset,12px)!important;
}

/* Custom size affects the floating favorite button only. */
.end-wf-single-position-image_float.end-wf-single-float-custom-size .end-wf-button{
  width:var(--end-wf-single-image-size)!important;
  height:var(--end-wf-single-image-size)!important;
  min-width:var(--end-wf-single-image-size)!important;
  min-height:var(--end-wf-single-image-size)!important;
  max-width:var(--end-wf-single-image-size)!important;
  max-height:var(--end-wf-single-image-size)!important;
  padding:0!important;
  display:inline-flex!important;
  align-items:center!important;
  justify-content:center!important;
  border-radius:999px!important;
}

/* Scale the SVG proportionally while preserving a sensible visual limit. */
.end-wf-single-position-image_float.end-wf-single-float-custom-size .end-wf-icon{
  width:calc(var(--end-wf-single-image-size) * .48)!important;
  height:calc(var(--end-wf-single-image-size) * .48)!important;
  max-width:none!important;
  max-height:none!important;
}


/* ==========================================================
   v0.12.5 — physical product-card positions
   ========================================================== */

/* Shop/product-loop favorite button: physical corners, never RTL-mirrored. */
.end-wf-loop-wrap.end-wf-position-image_top_left{
  top:var(--end-wf-top)!important;
  left:var(--end-wf-side)!important;
  right:auto!important;
  bottom:auto!important;
  inset-inline-start:auto!important;
  inset-inline-end:auto!important;
}
.end-wf-loop-wrap.end-wf-position-image_top_right{
  top:var(--end-wf-top)!important;
  right:var(--end-wf-side)!important;
  left:auto!important;
  bottom:auto!important;
  inset-inline-start:auto!important;
  inset-inline-end:auto!important;
}
.end-wf-loop-wrap.end-wf-position-image_bottom_left{
  bottom:var(--end-wf-top)!important;
  left:var(--end-wf-side)!important;
  top:auto!important;
  right:auto!important;
  inset-inline-start:auto!important;
  inset-inline-end:auto!important;
}
.end-wf-loop-wrap.end-wf-position-image_bottom_right{
  bottom:var(--end-wf-top)!important;
  right:var(--end-wf-side)!important;
  top:auto!important;
  left:auto!important;
  inset-inline-start:auto!important;
  inset-inline-end:auto!important;
}

/* Favorite-page/interface card icon: same physical meaning as single product. */
.end-wf-card.end-wf-favorite-pos-top_left .end-wf-card-favorite{
  top:var(--end-wf-card-edge-inset)!important;
  left:var(--end-wf-card-edge-inset)!important;
  right:auto!important;
  bottom:auto!important;
}
.end-wf-card.end-wf-favorite-pos-top_right .end-wf-card-favorite{
  top:var(--end-wf-card-edge-inset)!important;
  right:var(--end-wf-card-edge-inset)!important;
  left:auto!important;
  bottom:auto!important;
}
.end-wf-card.end-wf-favorite-pos-bottom_left .end-wf-card-favorite{
  bottom:var(--end-wf-card-edge-inset)!important;
  left:var(--end-wf-card-edge-inset)!important;
  top:auto!important;
  right:auto!important;
}
.end-wf-card.end-wf-favorite-pos-bottom_right .end-wf-card-favorite{
  bottom:var(--end-wf-card-edge-inset)!important;
  right:var(--end-wf-card-edge-inset)!important;
  top:auto!important;
  left:auto!important;
}

/* Move badges to the opposite side when the favorite icon would overlap them. */
.end-wf-card.end-wf-favorite-pos-top_right .end-wf-sale{
  right:auto!important;
  left:var(--end-wf-card-edge-inset)!important;
}
.end-wf-card.end-wf-favorite-pos-bottom_right .end-wf-stock-badge{
  right:auto!important;
  left:var(--end-wf-card-edge-inset)!important;
}
.end-wf-card.end-wf-favorite-pos-bottom_left .end-wf-stock-badge{
  right:var(--end-wf-card-edge-inset)!important;
  left:auto!important;
}


/* ==========================================================
   v0.12.8 — RTL/LTR compatibility layer
   ========================================================== */
html[dir="ltr"] .end-wf-page,
body:not(.rtl) .end-wf-page{direction:ltr;text-align:left}
html[dir="rtl"] .end-wf-page,
body.rtl .end-wf-page{direction:rtl;text-align:right}

html[dir="ltr"] .end-wf-title-row,
html[dir="ltr"] .end-wf-lists-nav,
html[dir="ltr"] .end-wf-list-tab,
html[dir="ltr"] .end-wf-page-head,
body:not(.rtl) .end-wf-title-row,
body:not(.rtl) .end-wf-lists-nav,
body:not(.rtl) .end-wf-list-tab,
body:not(.rtl) .end-wf-page-head{direction:ltr}
html[dir="rtl"] .end-wf-title-row,
html[dir="rtl"] .end-wf-lists-nav,
html[dir="rtl"] .end-wf-list-tab,
html[dir="rtl"] .end-wf-page-head,
body.rtl .end-wf-title-row,
body.rtl .end-wf-lists-nav,
body.rtl .end-wf-list-tab,
body.rtl .end-wf-page-head{direction:rtl}

html[dir="ltr"] .end-wf-button,
body:not(.rtl) .end-wf-button{direction:ltr}
html[dir="rtl"] .end-wf-button,
body.rtl .end-wf-button{direction:rtl}

html[dir="ltr"] .end-wf-modal,
html[dir="ltr"] .end-wf-list-icon-picker,
html[dir="ltr"] .end-wf-cart-modal,
body:not(.rtl) .end-wf-modal,
body:not(.rtl) .end-wf-list-icon-picker,
body:not(.rtl) .end-wf-cart-modal{direction:ltr;text-align:left}
html[dir="rtl"] .end-wf-modal,
html[dir="rtl"] .end-wf-list-icon-picker,
html[dir="rtl"] .end-wf-cart-modal,
body.rtl .end-wf-modal,
body.rtl .end-wf-list-icon-picker,
body.rtl .end-wf-cart-modal{direction:rtl;text-align:right}

html[dir="ltr"] .end-wf-page input,
html[dir="ltr"] .end-wf-page select,
html[dir="ltr"] .end-wf-page textarea,
body:not(.rtl) .end-wf-page input,
body:not(.rtl) .end-wf-page select,
body:not(.rtl) .end-wf-page textarea{direction:ltr;text-align:left}
html[dir="rtl"] .end-wf-page input,
html[dir="rtl"] .end-wf-page select,
html[dir="rtl"] .end-wf-page textarea,
body.rtl .end-wf-page input,
body.rtl .end-wf-page select,
body.rtl .end-wf-page textarea{direction:rtl;text-align:right}

html[dir="ltr"] .end-wf-grid,
body:not(.rtl) .end-wf-grid{direction:ltr}
html[dir="rtl"] .end-wf-grid,
body.rtl .end-wf-grid{direction:rtl}

html[dir="ltr"] .end-wf-toast,
body:not(.rtl) .end-wf-toast{direction:ltr;text-align:left}
html[dir="rtl"] .end-wf-toast,
body.rtl .end-wf-toast{direction:rtl;text-align:right}

html[dir="ltr"] .end-wf-empty,
html[dir="ltr"] .end-wf-empty-state,
body:not(.rtl) .end-wf-empty,
body:not(.rtl) .end-wf-empty-state{direction:ltr}
html[dir="rtl"] .end-wf-empty,
html[dir="rtl"] .end-wf-empty-state,
body.rtl .end-wf-empty,
body.rtl .end-wf-empty-state{direction:rtl}

html[dir="ltr"] .end-wf-single-wrap:not(.end-wf-single-position-image_float),
body:not(.rtl) .end-wf-single-wrap:not(.end-wf-single-position-image_float){direction:ltr}
html[dir="rtl"] .end-wf-single-wrap:not(.end-wf-single-position-image_float),
body.rtl .end-wf-single-wrap:not(.end-wf-single-position-image_float){direction:rtl}

html[dir="ltr"] .end-wf-card,
body:not(.rtl) .end-wf-card{direction:ltr;text-align:left}
html[dir="rtl"] .end-wf-card,
body.rtl .end-wf-card{direction:rtl;text-align:right}

/* Physical corner selections stay physical in both directions. */
.end-wf-position-image_top_left,
.end-wf-position-image_top_right,
.end-wf-position-image_bottom_left,
.end-wf-position-image_bottom_right,
.end-wf-single-float-top_left,
.end-wf-single-float-top_right,
.end-wf-single-float-bottom_left,
.end-wf-single-float-bottom_right,
.end-wf-favorite-pos-top_left,
.end-wf-favorite-pos-top_right,
.end-wf-favorite-pos-bottom_left,
.end-wf-favorite-pos-bottom_right{direction:inherit}
