.astt-btn{position:fixed;margin:0;display:none;align-items:center;justify-content:center;cursor:pointer;transition:transform .2s,opacity .2s,background .2s,border-color .2s;color:inherit;will-change:transform,opacity}
.astt-btn.astt-show{display:flex;opacity:1}
.astt-btn.astt-hide{opacity:0}
.astt--solid{border:0}
.astt--outline{background:transparent;border:2px solid currentColor}
.astt--ghost{background:transparent;border:0}
.astt--glass{backdrop-filter:blur(6px);border:1px solid rgba(255,255,255,.4)}
.astt-shadow{box-shadow:0 10px 20px rgba(0,0,0,.15)}
.astt-anim-fade{animation:astt-fade .3s ease both}
@keyframes astt-fade{from{opacity:0}to{opacity:1}}
.astt-anim-slide{animation:astt-slide .25s ease both}
@keyframes astt-slide{from{transform:translateY(8px);opacity:0}to{transform:none;opacity:1}}
.astt-anim-zoom{animation:astt-zoom .2s ease both}
@keyframes astt-zoom{from{transform:scale(.9);opacity:0}to{transform:scale(1);opacity:1}}
.astt-anim-bounce{animation:astt-bounce 1.2s ease infinite}
@keyframes astt-bounce{0%,100%{transform:translateY(0)}50%{transform:translateY(-4px)}}
.astt-anim-pulse{animation:astt-pulse 1.2s ease infinite}
@keyframes astt-pulse{0%,100%{box-shadow:0 0 0 0 rgba(0,0,0,.15)}50%{box-shadow:0 0 0 10px rgba(0,0,0,0)}}
.astt-spin:hover{transform:rotate(180deg)}
/* progress ring using conic-gradient */
.astt-progress{position:relative}
.astt-progress::before{content:"";position:absolute;inset:-4px;border-radius:inherit;background:conic-gradient(currentColor var(--p,0%),rgba(0,0,0,0) 0);z-index:-1}
/* admin preview positions */
.astt-preview .astt-btn{position:absolute}
