/* ═══════════════════════════════════════════
   ASM BOUTON SOLO v4 — 100% Elementor safe
   ═══════════════════════════════════════════ */

/* ── BASE ── */
.asbs-wrap{line-height:1;}
.asbs-wrap[data-align="stretch"] .asbs{width:100%;justify-content:center;}
.asbs{
    display:inline-flex;align-items:center;justify-content:center;gap:8px;
    text-decoration:none!important;cursor:pointer;position:relative;overflow:hidden;
    transition:all .35s cubic-bezier(.4,0,.2,1);box-sizing:border-box;line-height:1.4;
    font-weight:700;border:none;
}
.asbs:visited,.asbs:active,.asbs:focus{color:inherit;}
.asbs.asbs-col{flex-direction:column;}
.asbs-icon{transition:all .35s cubic-bezier(.4,0,.2,1);flex-shrink:0;position:relative;z-index:2;}
.asbs-text{position:relative;z-index:2;white-space:nowrap;}
.asbs-txt-wrap{display:flex;flex-direction:column;align-items:center;gap:2px;z-index:2;position:relative;}
.asbs-sub{font-size:.75em;opacity:.8;font-weight:500;}
.asbs-fx{position:absolute;inset:0;z-index:0;pointer-events:none;transition:all .4s cubic-bezier(.4,0,.2,1);border-radius:inherit;}

/* ── SIZES ── */
.asbs-size-xs{padding:6px 14px;font-size:12px;}
.asbs-size-small{padding:9px 20px;font-size:13px;}
.asbs-size-medium{padding:14px 32px;font-size:15px;}
.asbs-size-large{padding:18px 42px;font-size:17px;}
.asbs-size-xl{padding:22px 52px;font-size:20px;}

/* ═══ MODES — styles de base appliqués via inline style dans le PHP ═══ */
.asbs-mode-filled{border-radius:50px;}
.asbs-mode-filled:hover{filter:brightness(1.1);transform:translateY(-2px);}
.asbs-mode-outline{border-radius:50px;}
.asbs-mode-outline:hover .asbs-icon{color:inherit!important;}
.asbs-mode-ghost{border-radius:50px;}
.asbs-mode-link{border-radius:0;padding-left:0!important;padding-right:0!important;}
.asbs-mode-link::after{content:'';position:absolute;bottom:0;left:0;width:0;height:2px;background:currentColor;transition:width .3s;}
.asbs-mode-link:hover::after{width:100%;}
.asbs-mode-link:hover{opacity:.85;}
.asbs-mode-gradient{border-radius:50px;background-size:150% 150%;}
.asbs-mode-gradient:hover{background-position:100% 100%;transform:translateY(-2px);}
.asbs-mode-neon{border-radius:50px;}
.asbs-mode-neon:hover .asbs-icon{color:inherit!important;}
.asbs-mode-glass{border-radius:50px;backdrop-filter:blur(12px);-webkit-backdrop-filter:blur(12px);}
.asbs-mode-glass:hover{background:rgba(255,255,255,.22)!important;border-color:rgba(255,255,255,.4)!important;}
.asbs-mode-custom{border-radius:50px;}

/* ═══ HOVER EFFECTS ═══ */
.asbs-hv-lift:hover{transform:translateY(-3px);}
.asbs-hv-grow:hover{transform:scale(1.06);}
.asbs-hv-shrink:hover{transform:scale(.95);}
.asbs-hv-pulse:hover{animation:asbs-pulse .6s;}
@keyframes asbs-pulse{0%{transform:scale(1)}50%{transform:scale(1.08)}100%{transform:scale(1)}}
.asbs-hv-shake:hover{animation:asbs-shake .5s;}
@keyframes asbs-shake{0%,100%{transform:translateX(0)}20%{transform:translateX(-4px)}40%{transform:translateX(4px)}60%{transform:translateX(-3px)}80%{transform:translateX(3px)}}
.asbs-hv-wobble:hover{animation:asbs-wobble .6s;}
@keyframes asbs-wobble{0%{transform:rotate(0)}15%{transform:rotate(-3deg)}30%{transform:rotate(3deg)}45%{transform:rotate(-2deg)}60%{transform:rotate(2deg)}75%{transform:rotate(-1deg)}100%{transform:rotate(0)}}
.asbs-hv-slide-right .asbs-fx{background:currentColor;opacity:.12;transform:translateX(-101%);}
.asbs-hv-slide-right:hover .asbs-fx{transform:translateX(0);}
.asbs-hv-slide-up .asbs-fx{background:currentColor;opacity:.12;transform:translateY(101%);}
.asbs-hv-slide-up:hover .asbs-fx{transform:translateY(0);}
.asbs-hv-sweep .asbs-fx{background:currentColor;opacity:.12;transform:translateX(-101%) skewX(-15deg);}
.asbs-hv-sweep:hover .asbs-fx{transform:translateX(0) skewX(-15deg) scaleX(1.3);}
.asbs-hv-shine::after{content:'';position:absolute;top:-50%;left:-60%;width:40%;height:200%;background:linear-gradient(90deg,transparent,rgba(255,255,255,.25),transparent);transform:skewX(-20deg);transition:left .6s;z-index:3;pointer-events:none;}
.asbs-hv-shine:hover::after{left:120%;}
.asbs-hv-border-pulse:hover{animation:asbs-bp .8s;}
@keyframes asbs-bp{0%{box-shadow:0 0 0 0 currentColor}50%{box-shadow:0 0 0 10px transparent}100%{box-shadow:0 0 0 0 transparent}}
.asbs-hv-glow:hover{filter:brightness(1.2);}
.asbs-hv-rotate-icon:hover .asbs-icon{transform:rotate(360deg);}
.asbs-hv-bounce-icon:hover .asbs-icon{animation:asbs-ib .5s;}
@keyframes asbs-ib{0%,100%{transform:translateY(0)}30%{transform:translateY(-8px)}50%{transform:translateY(0)}70%{transform:translateY(-4px)}}
.asbs-hv-slide-icon:hover .asbs-icon{transform:translateX(4px);}
.asbs-hv-underline::after{content:'';position:absolute;bottom:4px;left:50%;width:0;height:2px;background:currentColor;transition:all .3s;transform:translateX(-50%);}
.asbs-hv-underline:hover::after{width:60%;}
.asbs-hv-none:hover{}

/* ═══ ICON ANIMATIONS ═══ */
.asbs-ia-spin{animation:asbs-spin 2s linear infinite;}@keyframes asbs-spin{to{transform:rotate(360deg)}}
.asbs-ia-pulse{animation:asbs-ip 1.5s ease-in-out infinite;}@keyframes asbs-ip{0%,100%{transform:scale(1)}50%{transform:scale(1.25)}}
.asbs-ia-bounce{animation:asbs-ibn 1.2s ease infinite;}@keyframes asbs-ibn{0%,100%{transform:translateY(0)}40%{transform:translateY(-6px)}60%{transform:translateY(-3px)}}
.asbs-ia-shake{animation:asbs-ish 1.5s ease infinite;}@keyframes asbs-ish{0%,100%{transform:rotate(0)}10%{transform:rotate(10deg)}20%{transform:rotate(-10deg)}30%{transform:rotate(8deg)}40%{transform:rotate(-8deg)}50%{transform:rotate(0)}}
.asbs-ia-float{animation:asbs-if 2.5s ease-in-out infinite;}@keyframes asbs-if{0%,100%{transform:translateY(0)}50%{transform:translateY(-5px)}}
.asbs-ia-ring{animation:asbs-ir 2s ease infinite;}@keyframes asbs-ir{0%{transform:rotate(0)}5%{transform:rotate(15deg)}10%{transform:rotate(-12deg)}15%{transform:rotate(10deg)}20%{transform:rotate(-8deg)}25%{transform:rotate(0)}100%{transform:rotate(0)}}
.asbs-ia-tada{animation:asbs-it 2s ease infinite;}@keyframes asbs-it{0%{transform:scale(1) rotate(0)}8%{transform:scale(.9) rotate(-3deg)}16%{transform:scale(1.1) rotate(3deg)}24%{transform:scale(1.1) rotate(-3deg)}32%{transform:scale(1.1) rotate(3deg)}40%{transform:scale(1) rotate(0)}100%{transform:scale(1) rotate(0)}}
.asbs-ia-swing{animation:asbs-sw 1.5s ease-in-out infinite;transform-origin:top center;}@keyframes asbs-sw{0%,100%{transform:rotate(0)}20%{transform:rotate(12deg)}40%{transform:rotate(-8deg)}60%{transform:rotate(5deg)}80%{transform:rotate(-3deg)}}
.asbs-ia-rubber{animation:asbs-rb 1.5s ease infinite;}@keyframes asbs-rb{0%{transform:scale(1,1)}30%{transform:scale(1.25,.75)}40%{transform:scale(.75,1.25)}50%{transform:scale(1.15,.85)}65%{transform:scale(.95,1.05)}75%{transform:scale(1.05,.95)}100%{transform:scale(1,1)}}
.asbs-ia-jello{animation:asbs-jl 2s ease infinite;}@keyframes asbs-jl{0%,100%{transform:skew(0)}11%{transform:skew(-8deg)}22%{transform:skew(6deg)}33%{transform:skew(-4deg)}44%{transform:skew(3deg)}55%{transform:skew(-1deg)}66%{transform:skew(0)}}
.asbs-ia-heartbeat{animation:asbs-hb 1.4s ease-in-out infinite;}@keyframes asbs-hb{0%,100%{transform:scale(1)}14%{transform:scale(1.3)}28%{transform:scale(1)}42%{transform:scale(1.3)}70%{transform:scale(1)}}
.asbs-ia-flash{animation:asbs-fl 2s ease infinite;}@keyframes asbs-fl{0%,50%,100%{opacity:1}25%,75%{opacity:0}}
.asbs-ia-flip-h{animation:asbs-fh 2s ease infinite;}@keyframes asbs-fh{0%{transform:perspective(400px) rotateY(0)}50%{transform:perspective(400px) rotateY(180deg)}100%{transform:perspective(400px) rotateY(360deg)}}
.asbs-ia-flip-v{animation:asbs-fv 2s ease infinite;}@keyframes asbs-fv{0%{transform:perspective(400px) rotateX(0)}50%{transform:perspective(400px) rotateX(180deg)}100%{transform:perspective(400px) rotateX(360deg)}}
.asbs-ia-grow-shrink{animation:asbs-gs 2s ease-in-out infinite;}@keyframes asbs-gs{0%,100%{transform:scale(1)}50%{transform:scale(1.4)}}
.asbs-ia-none{}

/* ═══ ENTRANCE ═══ */
.asbs-ent-fade-up{opacity:0;transform:translateY(24px);}
.asbs-ent-fade-down{opacity:0;transform:translateY(-24px);}
.asbs-ent-fade-left{opacity:0;transform:translateX(-30px);}
.asbs-ent-fade-right{opacity:0;transform:translateX(30px);}
.asbs-ent-zoom-in{opacity:0;transform:scale(.6);}
.asbs-ent-flip{opacity:0;transform:perspective(600px) rotateY(-90deg);}
.asbs-ent-bounce{opacity:0;transform:translateY(40px);}
.asbs.asbs-visible{opacity:1!important;transform:none!important;transition:opacity var(--asbs-dur,.6s) ease,transform var(--asbs-dur,.6s) cubic-bezier(.34,1.56,.64,1);}

/* ═══ RESPONSIVE ═══ */
@media(max-width:768px){.asbs{font-size:14px!important;}}
@media(max-width:480px){.asbs-size-large,.asbs-size-xl{padding:14px 28px!important;font-size:15px!important;}}
