.cp-ftc-fly{position:fixed;z-index:100000;pointer-events:none;object-fit:contain;background:#fff;border-radius:50%;box-shadow:0 6px 18px rgba(0,0,0,.25);will-change:transform,opacity}
/* button: loading -> done (cart dips, tick drops in, "Adicionado") */
/* listing buttons: keep overflow clip on all sizes.
   mobile listing (max-width:991px) sets .products .add-to-cart-form button{position:static!important};
   overlay is position:absolute so on mobile the button MUST be the containing block.
   desktop uses theme inline position:absolute — do not force relative there. */
html.cp-ftc body .products .add-to-cart-form button[data-button-action="add-to-cart"],
html.cp-ftc body button[data-button-action="add-to-cart"]{overflow:hidden!important;transition:background-color .3s,border-color .3s}
@media (max-width: 991px) {
  html.cp-ftc body .products .add-to-cart-form button[data-button-action="add-to-cart"],
  html.cp-ftc body button[data-button-action="add-to-cart"]{position:relative!important}
}
/* 2026-11-09 animmob: product page / quick-view button is never absolutely positioned by the theme,
   so it is always the containing block of the overlay (desktop had the overlay anchored to .col-md-6). */
html.cp-ftc body #add-to-cart-or-refresh .product-add-to-cart button[data-button-action="add-to-cart"]{position:relative!important}
.cp-ftc [data-button-action="add-to-cart"].cp-atc--loading{color:transparent!important;pointer-events:none}
.cp-ftc [data-button-action="add-to-cart"].cp-atc--loading::after{content:"";position:absolute;left:50%;top:50%;width:18px;height:18px;margin:-9px 0 0 -9px;border:2px solid rgba(255,255,255,.45);border-top-color:#fff;border-radius:50%;animation:cp-spin .7s linear infinite}
.cp-ftc [data-button-action="add-to-cart"].cp-atc--done{background-color:var(--cp-success,#2e9d4a)!important;border-color:var(--cp-success,#2e9d4a)!important;color:transparent!important;-webkit-text-fill-color:transparent!important}
/* 2026-11-09 animmob: the label "Adicionar ao carrinho" is a bare text node (visibility rule above cannot reach it),
   so it stayed visible under the cart + "Adicionado". Transparent text on the button; the overlay keeps its own white. */
.cp-atc__fx{display:none}
.cp-ftc [data-button-action="add-to-cart"].cp-atc--done > :not(.cp-atc__fx),
.cp-ftc [data-button-action="add-to-cart"].cp-atc--loading > :not(.cp-atc__fx){visibility:hidden}
.cp-atc--done .cp-atc__fx{display:flex!important;position:absolute!important;left:0!important;top:0!important;right:0!important;bottom:0!important;align-items:center;justify-content:center;gap:6px;color:#fff!important;-webkit-text-fill-color:#fff!important;font-size:13px;font-weight:600;text-transform:none;white-space:nowrap;overflow:hidden;padding:0 4px;box-sizing:border-box;z-index:2;pointer-events:none}
.cp-atc__cart{position:relative;flex:0 0 auto;width:18px;height:13px;border:2px solid #fff;border-top:0;border-radius:0 0 3px 3px;animation:cp-cart-dip .9s ease-out;overflow:visible}
.cp-atc__cart::before,.cp-atc__cart::after{content:"";position:absolute;bottom:-3px;width:3px;height:3px;border-radius:50%;background:#fff}
.cp-atc__cart::before{left:1px}.cp-atc__cart::after{right:1px}
/* tick stays inside the button: drop via transform (not top:-22px which escapes short buttons) */
.cp-atc__tick{position:absolute;left:5px;top:0;width:5px;height:9px;border:solid #fff;border-width:0 2px 2px 0;transform:rotate(45deg);animation:cp-tick-drop .9s ease-out both;opacity:1;display:block;font-size:0;line-height:0;font-style:normal;background:transparent;box-sizing:content-box}
.cp-atc__txt{animation:cp-fade-in .9s ease-out both;color:#fff!important;-webkit-text-fill-color:#fff!important}
@keyframes cp-spin{to{transform:rotate(360deg)}}
@keyframes cp-tick-drop{
  0%{transform:rotate(45deg) translate(0,-8px);opacity:0}
  28%{transform:rotate(45deg) translate(0,-8px);opacity:1}
  55%{transform:rotate(45deg) translate(0,0);opacity:1}
  100%{transform:rotate(45deg) translate(0,0);opacity:1}
}
@keyframes cp-cart-dip{0%,45%{transform:translateY(0)}60%{transform:translateY(2px)}80%,100%{transform:translateY(0)}}
@keyframes cp-fade-in{0%,50%{opacity:0}100%{opacity:1}}
@keyframes cp-bubble-in{from{opacity:0;transform:translateY(-10px)}to{opacity:1}}
.cp-atc--compact .cp-atc__txt{display:none}
.cp-atc--done{opacity:1!important}
/* tighter graphic on narrow phones so wheels+tick never leave the button */
@media (max-width:430px){
  .cp-atc--done .cp-atc__fx{gap:4px;font-size:12px}
  .cp-atc__cart{width:16px;height:11px}
  .cp-atc__cart::before,.cp-atc__cart::after{bottom:-2px;width:3px;height:3px}
  .cp-atc__tick{left:4px;width:4px;height:8px}
  @keyframes cp-tick-drop{
    0%{transform:rotate(45deg) translate(0,-6px);opacity:0}
    28%{transform:rotate(45deg) translate(0,-6px);opacity:1}
    55%,100%{transform:rotate(45deg) translate(0,0);opacity:1}
  }
}
/* header cart bounce */
.blockcart.cp-cart-bounce{animation:cp-bounce .6s cubic-bezier(.3,1.6,.5,1)}
.blockcart.cp-cart-bounce .cart-products-count{display:inline-block;animation:cp-pop .6s ease-out;font-weight:700}
/* count white only on the active (cyan) cart block; inactive gray #ebebeb must keep theme color so (0) stays visible */
#header .blockcart.cart-preview.active .cart-products-count,
#_desktop_cart .cart-preview.active .cart-products-count,
#_mobile_cart .cart-preview.active .cart-products-count{color:#fff}
@keyframes cp-bounce{0%{transform:scale(1)}30%{transform:scale(1.25) translateY(-3px)}60%{transform:scale(.95)}100%{transform:scale(1)}}
@keyframes cp-pop{0%{transform:scale(1)}40%{transform:scale(1.6)}100%{transform:scale(1)}}
/* floating cart when the header cart is off screen */
#cp-ftc-bubble{position:fixed;top:14px;right:14px;z-index:100000;display:flex;align-items:center;gap:4px;padding:10px 14px;border-radius:30px;background:#fff;color:#232323;box-shadow:0 6px 20px rgba(0,0,0,.25);text-decoration:none;animation:cp-bubble-in .25s;transition:opacity .3s,transform .3s;cursor:pointer}
#cp-ftc-bubble .cart-products-count{font-weight:700}
#cp-ftc-bubble.is-out{opacity:0;transform:translateY(-10px)}
/* toast fallback */
#cp-ftc-toast{position:fixed;left:50%;bottom:20px;z-index:100001;transform:translate(-50%,30px);opacity:0;transition:all .3s;background:#222;color:#fff;padding:12px 18px;border-radius:8px;box-shadow:0 6px 20px rgba(0,0,0,.3);font-size:14px;display:flex;align-items:center;gap:8px;max-width:92vw}
#cp-ftc-toast.is-in{transform:translate(-50%,0);opacity:1}
#cp-ftc-toast a{color:#7fd38f;font-weight:700;text-decoration:underline;margin-left:6px}
.cp-ftc-toast__ok{width:8px;height:14px;border:solid #7fd38f;border-width:0 2px 2px 0;transform:rotate(45deg);margin:0 4px 4px 0}

/* ---------- mini-cart ---------- */
.cp-minicart{position:fixed;z-index:100050;display:flex;flex-direction:column;background:#fff;color:#232323;box-shadow:0 10px 32px rgba(0,0,0,.22);border-radius:10px;max-height:min(70vh,520px);width:min(360px,calc(100vw - 16px));opacity:0;visibility:hidden;pointer-events:none;transform:translateY(-6px);transition:opacity .18s ease,transform .18s ease,visibility .18s;font-size:14px;line-height:1.35}
.cp-minicart.is-open{opacity:1;visibility:visible;pointer-events:auto;transform:translateY(0)}
.cp-minicart--drawer{top:0;right:0;bottom:0;left:auto;width:min(360px,92vw);max-height:100vh;border-radius:10px 0 0 10px;transform:translateX(12px)}
.cp-minicart--drawer.is-open{transform:translateX(0)}
.cp-minicart__head{display:flex;align-items:center;justify-content:space-between;padding:12px 14px;border-bottom:1px solid #eee;flex:0 0 auto}
.cp-minicart__title{font-size:15px;font-weight:700;margin:0}
.cp-minicart__x{appearance:none;border:0;background:transparent;font-size:22px;line-height:1;cursor:pointer;color:#666;padding:2px 6px;border-radius:4px}
.cp-minicart__x:hover{background:#f3f3f3;color:#111}
.cp-minicart__body{overflow:auto;flex:1 1 auto;padding:8px 0;min-height:64px}
.cp-minicart__empty{margin:24px 16px;text-align:center;color:#666}
.cp-minicart__list{list-style:none;margin:0;padding:0}
.cp-minicart__item{display:flex;gap:10px;padding:10px 14px;align-items:flex-start}
.cp-minicart__item + .cp-minicart__item{border-top:1px solid #f0f0f0}
.cp-minicart__thumb{flex:0 0 56px;width:56px;height:56px;border-radius:6px;overflow:hidden;background:#f6f6f6;display:block}
.cp-minicart__thumb img{width:100%;height:100%;object-fit:contain;display:block}
.cp-minicart__thumb--empty{background:#eee}
.cp-minicart__meta{flex:1 1 auto;min-width:0}
.cp-minicart__name{display:block;color:#232323;font-weight:600;text-decoration:none;font-size:13px;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.cp-minicart__name:hover{color:var(--cp-success,#2e9d4a);text-decoration:underline}
.cp-minicart__row{display:flex;justify-content:space-between;gap:8px;margin-top:4px;font-size:13px;color:#555}
.cp-minicart__price{font-weight:700;color:#232323}
.cp-minicart__foot{flex:0 0 auto;border-top:1px solid #eee;padding:12px 14px;background:#fafafa;border-radius:0 0 10px 10px}
.cp-minicart--drawer .cp-minicart__foot{border-radius:0}
.cp-minicart__total{display:flex;justify-content:space-between;align-items:center;margin-bottom:10px;font-size:14px}
.cp-minicart__total-val{font-size:16px}
.cp-minicart__actions{display:flex;gap:8px}
.cp-minicart__actions .btn,.cp-minicart__view,.cp-minicart__pay{flex:1 1 0;text-align:center;padding:10px 8px;border-radius:6px;font-weight:700;font-size:13px;text-decoration:none;display:inline-block}
.cp-minicart__view{background:#fff;border:1px solid #ccc;color:#232323}
.cp-minicart__view:hover{border-color:#999;color:#111}
.blockcart[aria-expanded="true"]{outline:none}
@media (prefers-reduced-motion:reduce){
  .cp-atc__cart,.cp-atc__tick,.cp-atc__txt,.blockcart.cp-cart-bounce,.blockcart.cp-cart-bounce .cart-products-count,.cp-minicart{animation:none!important;transition:none!important}
  #cp-ftc-toast{transition:none}
}
