.spinner-wrapper{display:inline-flex;align-items:center;justify-content:center;width:24px;height:24px}.spinner-ring{width:20px;height:20px;border:2px solid var(--button-text-color,#fff);border-top:2px solid transparent;border-radius:50%;animation:spin .8s linear infinite}.custom-button{position:relative;border-radius:30px;border:2px solid var(--button-bg-color,#333);background-color:var(--button-bg-color,#333);color:var(--button-text-color,#fff);font-size:.789rem;font-weight:400;cursor:pointer;transition:all .3s ease;display:flex;align-items:center;justify-content:center;box-shadow:0 2px 4px rgba(0,0,0,.1);overflow:hidden}.custom-button[data-tooltip]:before{content:attr(data-tooltip);bottom:calc(100% + 5px);padding:5px 10px;border-radius:6px;background-color:var(--tooltip-bg-color,rgba(0,0,0,.8));color:#fff;font-size:.75rem;white-space:nowrap}.custom-button[data-tooltip]:after,.custom-button[data-tooltip]:before{position:absolute;left:50%;transform:translateX(-50%) scale(.8);opacity:0;visibility:hidden;transition:all .2s ease;z-index:1000}.custom-button[data-tooltip]:after{content:"";bottom:calc(100% - 3px);border-width:5px;border-style:solid;border-color:var(--tooltip-bg-color,rgba(0,0,0,.8)) transparent transparent transparent}.custom-button[data-tooltip]:hover:after,.custom-button[data-tooltip]:hover:before{opacity:1;visibility:visible;transform:translateX(-50%) scale(1)}.custom-button:not(:disabled):hover{background-color:var(--button-text-color,#fff);color:var(--button-bg-color,#333);transform:translateY(-1px);box-shadow:0 4px 8px rgba(0,0,0,.15)}.custom-button:not(:disabled):hover .button-icon{color:var(--button-bg-color,#333)}.custom-button:not(:disabled):hover .spinner-container .spinner-ring{border-color:var(--button-bg-color,#333);border-top-color:transparent}.custom-button:disabled{background-color:var(--button-disabled-bg-color,#e0e0e0);border-color:var(--button-disabled-bg-color,#e0e0e0);color:var(--text-muted-color,#999);cursor:not-allowed;box-shadow:none}.custom-button .button-content{width:100%;height:100%;display:flex;align-items:center;justify-content:center;padding:0 1rem;gap:8px;min-height:24px;transition:all .3s ease}.custom-button .button-text{white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.custom-button .button-icon{transition:color .3s ease}.custom-button .button-icon,.custom-button .spinner-container{display:flex;align-items:center;justify-content:center}.custom-button.loading{cursor:wait}@keyframes spin{to{transform:rotate(1turn)}}@keyframes dash{0%{stroke-dasharray:1,150;stroke-dashoffset:0}50%{stroke-dasharray:90,150;stroke-dashoffset:-35}to{stroke-dasharray:90,150;stroke-dashoffset:-124}}