.button-content{display:inline-flex;align-items:center;gap:.5rem;transition:all .2s ease-out}.ripple{position:absolute;border-radius:50%;background:rgba(255,255,255,.5);transform:scale(0);animation:ripple-burst .6s ease-out forwards;pointer-events:none;width:40px;height:40px;margin-left:-20px;margin-top:-20px}@keyframes ripple-burst{to{transform:scale(4);opacity:0}}button.is-loading{min-width:120px}button.is-loading .button-content{justify-content:center;gap:4px}.spinner-dot{width:4px;height:4px;border-radius:50%;background:currentColor;animation:dot-pulse 1.4s infinite}.spinner-dot:nth-child(2){animation-delay:.2s}.spinner-dot:nth-child(3){animation-delay:.4s}@keyframes dot-pulse{0%,60%,to{opacity:.3;transform:scale(.8)}30%{opacity:1;transform:scale(1)}}button.is-success{background-color:#10b981}button.is-success .success-icon{animation:icon-bounce .5s cubic-bezier(.34,1.56,.64,1) forwards;margin-right:.25rem}@keyframes icon-bounce{0%{transform:scale(.5) rotate(-45deg);opacity:0}50%{transform:scale(1.2)}to{transform:scale(1) rotate(0deg);opacity:1}}button.is-error{background-color:#ef4444}button.is-error .error-icon{animation:icon-shake .5s cubic-bezier(.36,0,.66,-.56) forwards;margin-right:.25rem}@keyframes icon-shake{0%{transform:scale(.5) rotate(0deg);opacity:0}10%{transform:rotate(-5deg)}20%{transform:rotate(5deg)}30%{transform:rotate(-5deg)}40%{transform:rotate(5deg)}50%{transform:rotate(0deg)}to{transform:scale(1) rotate(0deg);opacity:1}}button.is-error .button-content,button.is-success .button-content{animation:fade-in .3s ease-out}.spinner{position:relative;display:inline-flex;align-items:center;justify-content:center}.spinner-inner{position:absolute;border:2px solid transparent;border-radius:50%;animation:spinner-rotate 1.2s linear infinite}.spinner-default .spinner-inner{border-right-color:var(--accent);border-top-color:var(--accent);opacity:.8;animation:spinner-rotate 1.2s linear infinite}.spinner-default .spinner-inner:after{content:"";position:absolute;top:50%;left:50%;width:100%;height:100%;border-radius:50%;border:2px solid transparent;border-top:2px solid var(--accent-light);transform:translate(-50%,-50%);opacity:.4;animation:spinner-rotate 1.8s linear infinite reverse}.spinner-accent .spinner-inner{border-left:2px solid var(--accent-muted);border-bottom:2px solid var(--accent-muted);border-right-color:var(--accent-muted);border-top-color:var(--accent-muted);border-right:2px solid var(--accent);border-top:2px solid var(--accent);animation:spinner-rotate 1s cubic-bezier(.68,-.55,.265,1.55) infinite}.spinner-minimal .spinner-inner{border-left:1.5px solid var(--border-subtle);border-bottom:1.5px solid var(--border-subtle);border-right-color:var(--border-subtle);border-top-color:var(--border-subtle);border-right:1.5px solid var(--text-secondary);border-top:1.5px solid var(--text-secondary);opacity:.6;animation:spinner-rotate 1.5s linear infinite}.spinner+p{animation:fade-in .4s ease-out}@keyframes backdrop-fade{0%{opacity:0;backdrop-filter:blur(0)}to{opacity:1;backdrop-filter:blur(4px)}}.btn-loading{position:relative;color:transparent;pointer-events:none}.btn-loading:after{content:"";position:absolute;left:50%;top:50%;width:1em;height:1em;margin-left:-.5em;margin-top:-.5em;border-radius:50%;border-color:transparent transparent currentcolor currentcolor;border-style:solid;border-width:2px;animation:spinner-rotate .6s linear infinite}@keyframes page-fade-exit{0%{opacity:0}to{opacity:1}}@keyframes page-fade-enter{0%{opacity:1}to{opacity:0}}@keyframes page-slide-exit{0%{transform:translateX(0);opacity:0}to{transform:translateX(100%);opacity:1}}@keyframes page-slide-enter{0%{transform:translateX(-100%);opacity:1}to{transform:translateX(0);opacity:0}}.animate-page-fade-exit{animation:page-fade-exit forwards}.animate-page-fade-enter{animation:page-fade-enter forwards}.animate-page-slide-exit{animation:page-slide-exit forwards}.animate-page-slide-enter{animation:page-slide-enter forwards}