.ibe-button{position:relative;line-height:1;cursor:pointer;text-decoration:none;border:1px solid transparent;display:inline-flex;align-items:center;justify-content:center;overflow:hidden}
.ibe-button__text{display:inline-block;position:relative}
.ibe-button__image{display:inline-block;transition:transform .25s ease}
.ibe-button-wrapper{text-align:left}

/* Position stretch support handled inline via width:100% and justify-content */

/* Variants */
.ibe-button.ibe-variant-solid{}
.ibe-button.ibe-variant-outline{background:transparent;border-color:currentColor}
.ibe-button.ibe-variant-gradient{color:#fff;border-color:transparent}
.ibe-button.ibe-variant-glass{backdrop-filter:saturate(180%) blur(10px);background:rgba(255,255,255,.12);border-color:rgba(255,255,255,.25);box-shadow:inset 0 1px 0 rgba(255,255,255,.15)}
.ibe-button.ibe-variant-ghost{background:transparent;border-color:transparent}
.ibe-button.ibe-variant-neumorphic{background:#f2f2f2;border:0;box-shadow:8px 8px 16px #cecece,-8px -8px 16px #ffffff}
.ibe-button.ibe-variant-three-d{box-shadow:0 6px 0 rgba(0,0,0,.2)}
.ibe-button.ibe-variant-three-d:active{transform:translateY(2px);box-shadow:0 4px 0 rgba(0,0,0,.2)}
.ibe-button.ibe-variant-gradient-border{background:linear-gradient(#fff,#fff) padding-box,linear-gradient(135deg,rgba(0,0,0,.2),rgba(0,0,0,0)) border-box;border:1px solid transparent}
.ibe-button.ibe-variant-soft{background:rgba(0,0,0,.04)}

/* Animated gradient border */
.ibe-button.ibe-variant-gradient-border-animated{background:linear-gradient(#fff,#fff) padding-box,conic-gradient(from 0deg, #ff6a00, #ee0979, #00c6ff, #ad5389, #ff6a00) border-box;border:2px solid transparent;animation:ibe-rot 4s linear infinite}
@keyframes ibe-rot{to{background:linear-gradient(#fff,#fff) padding-box,conic-gradient(from 360deg, #ff6a00, #ee0979, #00c6ff, #ad5389, #ff6a00) border-box}}
.ibe-button.ibe-variant-gradient-border-animated .ibe-button__image{filter:none !important}

/* Hovers */
.ibe-button.ibe-hover-scale:hover{transform:scale(1.04)}
.ibe-button.ibe-hover-slide:hover{transform:translateY(-2px)}
.ibe-button.ibe-hover-pulse{animation:ibe-pulse 2s infinite}
@keyframes ibe-pulse{0%{box-shadow:0 0 0 0 rgba(0,0,0,.2)}70%{box-shadow:0 0 0 12px rgba(0,0,0,0)}100%{box-shadow:0 0 0 0 rgba(0,0,0,0)}}
.ibe-button.ibe-hover-fade:hover{opacity:.85}
.ibe-button.ibe-hover-glow:hover{box-shadow:0 8px 30px rgba(0,0,0,.2)}
.ibe-button.ibe-hover-underline{position:relative}
.ibe-button.ibe-hover-underline:after{content:"";position:absolute;left:10%;right:10%;bottom:8px;height:2px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .25s ease}
.ibe-button.ibe-hover-underline:hover:after{transform:scaleX(1)}

/* New hover effects */
.ibe-button.ibe-hover-ripple{overflow:hidden}
.ibe-button.ibe-hover-ripple:after{content:"";position:absolute;inset:0;background:radial-gradient(circle,rgba(255,255,255,.35) 10%,rgba(255,255,255,0) 11%) center/0 0 no-repeat;transition:background-size .45s ease}
.ibe-button.ibe-hover-ripple:hover:after{background-size:250% 250%}
.ibe-button.ibe-hover-shine{position:relative;overflow:hidden}
.ibe-button.ibe-hover-shine:before{content:"";position:absolute;top:-50%;left:-75%;width:50%;height:200%;background:linear-gradient(120deg,rgba(255,255,255,0) 0,rgba(255,255,255,.4) 50%,rgba(255,255,255,0) 100%);transform:skewX(-20deg)}
.ibe-button.ibe-hover-shine:hover:before{animation:ibe-shine .8s}
@keyframes ibe-shine{to{left:125%}}
.ibe-button.ibe-hover-tilt:hover{transform:rotateX(2deg) rotateY(-2deg)}
.ibe-button.ibe-hover-bounce:hover{animation:ibe-bounce .6s}
@keyframes ibe-bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-6px)}}

/* Active effects */
.ibe-button.ibe-active-press:active{transform:scale(.96)}
.ibe-button.ibe-active-pop:active{transform:scale(1.04)}

/* Entrance animations */
.ibe-entrance{opacity:0;transform:translateY(10px)}
.ibe-entrance.is-in{opacity:1;transform:none;transition:opacity .6s ease, transform .6s ease}
.ibe-entrance[data-entrance="fade-in"]{transform:none}
.ibe-entrance[data-entrance="slide-up"]{transform:translateY(16px)}
.ibe-entrance[data-entrance="zoom-in"]{transform:scale(.94)}

/* Magnetic (needs JS to move slightly) */
.ibe-button.ibe-hover-magnetic{will-change:transform}

/* Liquid/Blob (soft wavy outline) */
.ibe-button.ibe-hover-blob:before{content:"";position:absolute;inset:-6px;border-radius:30px;background:radial-gradient(120px 60px at 20% 20%, rgba(255,255,255,.15), transparent 60%), radial-gradient(120px 60px at 80% 40%, rgba(255,255,255,.15), transparent 60%), radial-gradient(120px 60px at 40% 80%, rgba(255,255,255,.15), transparent 60%);filter:blur(6px);opacity:.6;transition:transform .5s ease}
.ibe-button.ibe-hover-blob:hover:before{transform:scale(1.03)}

/* Click ripple at click point (requires JS to position) */
.ibe-button[data-click-ripple] {--ibe-rx:50%;--ibe-ry:50%}
.ibe-button[data-click-ripple]:after{content:"";position:absolute;width:10px;height:10px;border-radius:50%;left:var(--ibe-rx);top:var(--ibe-ry);transform:translate(-50%,-50%) scale(0);background:currentColor;opacity:.25;pointer-events:none}
.ibe-button[data-click-ripple].is-rippling:after{animation:ibe-click-ripple .6s ease-out}
@keyframes ibe-click-ripple{to{transform:translate(-50%,-50%) scale(18);opacity:0}}

/* Split text reveal */
.ibe-button__text.ibe-text-split{overflow:hidden}
.ibe-button__text.ibe-text-split span{display:inline-block;transform:translateY(100%);opacity:0}
.ibe-button:hover .ibe-button__text.ibe-text-split span{animation:ibe-split .45s cubic-bezier(.2,.7,.2,1) forwards}
.ibe-button:hover .ibe-button__text.ibe-text-split span:nth-child(2){animation-delay:.03s}
.ibe-button:hover .ibe-button__text.ibe-text-split span:nth-child(3){animation-delay:.06s}
.ibe-button:hover .ibe-button__text.ibe-text-split span:nth-child(4){animation-delay:.09s}
@keyframes ibe-split{to{transform:none;opacity:1}}

/* Image-only hover */
.ibe-button.img-scale:hover .ibe-button__image{transform:scale(1.06)}
.ibe-button.img-rotate:hover .ibe-button__image{transform:rotate(6deg)}
.ibe-button.img-tilt:hover .ibe-button__image{transform:rotateX(6deg) rotateY(-6deg)}
.ibe-button.img-wave:hover .ibe-button__image{animation:ibe-wave .9s ease}
@keyframes ibe-wave{0%{transform:rotate(0)}25%{transform:rotate(8deg)}50%{transform:rotate(-6deg)}75%{transform:rotate(4deg)}100%{transform:rotate(0)}}
