/* Button Hover Effects – 2025 v2.0.1 */
.btnfx-target,
.elementor-button,
.wp-block-button__link,
button,
input[type="submit"],
input[type="button"],
a.button,
.button,
a.btn,
.btn {
  transition: transform .18s ease, filter .18s ease, box-shadow .18s ease, background-position .35s ease;
  transform: translateZ(0);
  will-change: transform, filter;
  position: relative;
}

/* Base hover: lift + lighten */
.btnfx-target:hover,
.btnfx-target:focus-visible,
.elementor-button:hover,
.elementor-button:focus-visible,
.wp-block-button__link:hover,
.wp-block-button__link:focus-visible,
button:hover,
button:focus-visible,
input[type="submit"]:hover,
input[type="submit"]:focus-visible,
input[type="button"]:hover,
input[type="button"]:focus-visible,
a.button:hover,
a.button:focus-visible,
.button:hover,
.button:focus-visible,
a.btn:hover,
a.btn:focus-visible,
.btn:hover,
.btn:focus-visible {
  transform: translateY(calc(var(--btnfx-raise, 3px) * -1));
  filter: brightness(var(--btnfx-bright, 1.06));
}

/* Styles optionnels */
.btnfx-style-gradient .btnfx-target,
.btnfx-style-gradient .elementor-button,
.btnfx-style-gradient .wp-block-button__link,
.btnfx-style-gradient button,
.btnfx-style-gradient input[type="submit"],
.btnfx-style-gradient input[type="button"],
.btnfx-style-gradient a.button,
.btnfx-style-gradient .button,
.btnfx-style-gradient a.btn,
.btnfx-style-gradient .btn { overflow:hidden; }
.btnfx-style-gradient .btnfx-target::before,
.btnfx-style-gradient .elementor-button::before,
.btnfx-style-gradient .wp-block-button__link::before,
.btnfx-style-gradient button::before,
.btnfx-style-gradient input[type="submit"]::before,
.btnfx-style-gradient input[type="button"]::before,
.btnfx-style-gradient a.button::before,
.btnfx-style-gradient .button::before,
.btnfx-style-gradient a.btn::before,
.btnfx-style-gradient .btn::before{
  content:""; position:absolute; inset:0;
  background: linear-gradient(90deg, rgba(255,255,255,.0) 0%, rgba(255,255,255,.12) 18%, rgba(255,255,255,.0) 36%),
              linear-gradient(90deg, var(--btnfx-grad1,#1c8a4d), var(--btnfx-grad2,#30AF5E));
  background-size: 220% 100%;
  background-position: 120% 0;
  opacity: 0; transition: background-position .5s ease, opacity .25s ease;
  pointer-events:none; mix-blend-mode: overlay;
}
.btnfx-style-gradient .btnfx-target:hover::before,
.btnfx-style-gradient .btnfx-target:focus-visible::before,
.btnfx-style-gradient .elementor-button:hover::before,
.btnfx-style-gradient .elementor-button:focus-visible::before,
.btnfx-style-gradient .wp-block-button__link:hover::before,
.btnfx-style-gradient .wp-block-button__link:focus-visible::before,
.btnfx-style-gradient button:hover::before,
.btnfx-style-gradient button:focus-visible::before,
.btnfx-style-gradient input[type="submit"]:hover::before,
.btnfx-style-gradient input[type="submit"]:focus-visible::before,
.btnfx-style-gradient input[type="button"]:hover::before,
.btnfx-style-gradient input[type="button"]:focus-visible::before,
.btnfx-style-gradient a.button:hover::before,
.btnfx-style-gradient a.button:focus-visible::before,
.btnfx-style-gradient .button:hover::before,
.btnfx-style-gradient .button:focus-visible::before,
.btnfx-style-gradient a.btn:hover::before,
.btnfx-style-gradient a.btn:focus-visible::before,
.btnfx-style-gradient .btn:hover::before,
.btnfx-style-gradient .btn:focus-visible::before{
  background-position: 0 0;
  opacity: 1;
}

.btnfx-style-shine .btnfx-target,
.btnfx-style-shine .elementor-button,
.btnfx-style-shine .wp-block-button__link,
.btnfx-style-shine button,
.btnfx-style-shine input[type="submit"],
.btnfx-style-shine input[type="button"],
.btnfx-style-shine a.button,
.btnfx-style-shine .button,
.btnfx-style-shine a.btn,
.btnfx-style-shine .btn { overflow:hidden; }
.btnfx-style-shine .btnfx-target::after,
.btnfx-style-shine .elementor-button::after,
.btnfx-style-shine .wp-block-button__link::after,
.btnfx-style-shine button::after,
.btnfx-style-shine input[type="submit"]::after,
.btnfx-style-shine input[type="button"]::after,
.btnfx-style-shine a.button::after,
.btnfx-style-shine .button::after,
.btnfx-style-shine a.btn::after,
.btnfx-style-shine .btn::after{
  content:""; position:absolute; inset:-40% -80%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.4), transparent);
  transform: translateX(-120%) skewX(-20deg);
  transition: transform .6s ease; pointer-events:none; mix-blend-mode: screen;
}
.btnfx-style-shine .btnfx-target:hover::after,
.btnfx-style-shine .btnfx-target:focus-visible::after,
.btnfx-style-shine .elementor-button:hover::after,
.btnfx-style-shine .elementor-button:focus-visible::after,
.btnfx-style-shine .wp-block-button__link:hover::after,
.btnfx-style-shine .wp-block-button__link:focus-visible::after,
.btnfx-style-shine button:hover::after,
.btnfx-style-shine button:focus-visible::after,
.btnfx-style-shine input[type="submit"]:hover::after,
.btnfx-style-shine input[type="submit"]:focus-visible::after,
.btnfx-style-shine input[type="button"]:hover::after,
.btnfx-style-shine input[type="button"]:focus-visible::after,
.btnfx-style-shine a.button:hover::after,
.btnfx-style-shine a.button:focus-visible::after,
.btnfx-style-shine .button:hover::after,
.btnfx-style-shine .button:focus-visible::after,
.btnfx-style-shine a.btn:hover::after,
.btnfx-style-shine a.btn:focus-visible::after,
.btnfx-style-shine .btn:hover::after,
.btnfx-style-shine .btn:focus-visible::after{
  transform: translateX(120%) skewX(-20deg);
}

.btnfx-style-glow .btnfx-target:hover,
.btnfx-style-glow .btnfx-target:focus-visible,
.btnfx-style-glow .elementor-button:hover,
.btnfx-style-glow .elementor-button:focus-visible,
.btnfx-style-glow .wp-block-button__link:hover,
.btnfx-style-glow .wp-block-button__link:focus-visible,
.btnfx-style-glow button:hover,
.btnfx-style-glow button:focus-visible,
.btnfx-style-glow input[type="submit"]:hover,
.btnfx-style-glow input[type="submit"]:focus-visible,
.btnfx-style-glow input[type="button"]:hover,
.btnfx-style-glow input[type="button"]:focus-visible,
.btnfx-style-glow a.button:hover,
.btnfx-style-glow a.button:focus-visible,
.btnfx-style-glow .button:hover,
.btnfx-style-glow .button:focus-visible,
.btnfx-style-glow a.btn:hover,
.btnfx-style-glow a.btn:focus-visible,
.btnfx-style-glow .btn:hover,
.btnfx-style-glow .btn:focus-visible{
  box-shadow: 0 10px 30px rgba(48,175,94,.35);
}

.btnfx-style-outline .btnfx-target,
.btnfx-style-outline .elementor-button,
.btnfx-style-outline .wp-block-button__link,
.btnfx-style-outline button,
.btnfx-style-outline input[type="submit"],
.btnfx-style-outline input[type="button"],
.btnfx-style-outline a.button,
.btnfx-style-outline .button,
.btnfx-style-outline a.btn,
.btnfx-style-outline .btn { box-shadow: inset 0 0 0 1px rgba(255,255,255,.18); }
.btnfx-style-outline .btnfx-target:hover,
.btnfx-style-outline .btnfx-target:focus-visible,
.btnfx-style-outline .elementor-button:hover,
.btnfx-style-outline .elementor-button:focus-visible,
.btnfx-style-outline .wp-block-button__link:hover,
.btnfx-style-outline .wp-block-button__link:focus-visible,
.btnfx-style-outline button:hover,
.btnfx-style-outline button:focus-visible,
.btnfx-style-outline input[type="submit"]:hover,
.btnfx-style-outline input[type="submit"]:focus-visible,
.btnfx-style-outline input[type="button"]:hover,
.btnfx-style-outline input[type="button"]:focus-visible,
.btnfx-style-outline a.button:hover,
.btnfx-style-outline a.button:focus-visible,
.btnfx-style-outline .button:hover,
.btnfx-style-outline .button:focus-visible,
.btnfx-style-outline a.btn:hover,
.btnfx-style-outline a.btn:focus-visible,
.btnfx-style-outline .btn:hover,
.btnfx-style-outline .btn:focus-visible{
  box-shadow: inset 0 0 0 3px rgba(255,255,255,.42);
}

.btnfx-style-ripple .btnfx-target,
.btnfx-style-ripple .elementor-button,
.btnfx-style-ripple .wp-block-button__link,
.btnfx-style-ripple button,
.btnfx-style-ripple input[type="submit"],
.btnfx-style-ripple input[type="button"],
.btnfx-style-ripple a.button,
.btnfx-style-ripple .button,
.btnfx-style-ripple a.btn,
.btnfx-style-ripple .btn { overflow:hidden; }
.btnfx-style-ripple .btnfx-target::before,
.btnfx-style-ripple .elementor-button::before,
.btnfx-style-ripple .wp-block-button__link::before,
.btnfx-style-ripple button::before,
.btnfx-style-ripple input[type="submit"]::before,
.btnfx-style-ripple input[type="button"]::before,
.btnfx-style-ripple a.button::before,
.btnfx-style-ripple .button::before,
.btnfx-style-ripple a.btn::before,
.btnfx-style-ripple .btn::before {
  content:""; position:absolute; inset:0;
  background: radial-gradient(180px circle at calc(var(--px, .5)*100%) calc(var(--py, .5)*100%), rgba(255,255,255,.18), transparent 45%);
  opacity:0; transition: opacity .25s ease;
  pointer-events:none;
}
.btnfx-style-ripple .btnfx-target:hover::before,
.btnfx-style-ripple .btnfx-target:focus-visible::before,
.btnfx-style-ripple .elementor-button:hover::before,
.btnfx-style-ripple .elementor-button:focus-visible::before,
.btnfx-style-ripple .wp-block-button__link:hover::before,
.btnfx-style-ripple .wp-block-button__link:focus-visible::before,
.btnfx-style-ripple button:hover::before,
.btnfx-style-ripple button:focus-visible::before,
.btnfx-style-ripple input[type="submit"]:hover::before,
.btnfx-style-ripple input[type="submit"]:focus-visible::before,
.btnfx-style-ripple input[type="button"]:hover::before,
.btnfx-style-ripple input[type="button"]:focus-visible::before,
.btnfx-style-ripple a.button:hover::before,
.btnfx-style-ripple a.button:focus-visible::before,
.btnfx-style-ripple .button:hover::before,
.btnfx-style-ripple .button:focus-visible::before,
.btnfx-style-ripple a.btn:hover::before,
.btnfx-style-ripple a.btn:focus-visible::before,
.btnfx-style-ripple .btn:hover::before,
.btnfx-style-ripple .btn:focus-visible::before {
  opacity:1;
}

@media (prefers-reduced-motion: reduce){
  .btnfx-target,
  .elementor-button,
  .wp-block-button__link,
  button,
  input[type="submit"],
  input[type="button"],
  a.button, .button, a.btn, .btn {
    transition: none !important;
  }
}
