.glass{backdrop-filter:blur(10px);background:rgba(16,16,22,.5)}
.cf-dot{width:.5rem;height:.5rem;border-radius:9999px;background:rgba(255,255,255,.22)}
.cf-dot.active{background:rgb(99 102 241);box-shadow:0 0 0 .2rem rgba(99,102,241,.15)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.5rem;padding:.75rem 1rem;border-radius:.75rem;font-weight:700;transition:.2s}
.btn-primary{background:#6d28d9;color:#fff}
.btn-ghost{background:rgba(255,255,255,.05);color:#fff;border:1px solid rgba(255,255,255,.1)}
.pulse{animation:pulse 1.2s ease-in-out infinite}
@keyframes pulse{0%,100%{transform:scale(1)}50%{transform:scale(1.06)}}
.success-pop{animation:successPop .6s ease-out both}
@keyframes successPop{0%{transform:scale(.6);opacity:.3}60%{transform:scale(1.08)}100%{transform:scale(1);opacity:1}}
.shine{background:linear-gradient(120deg,transparent 0%,rgba(255,255,255,.7) 35%,transparent 70%)}
.cap-box{width:22px;height:22px;border-radius:4px}
.cap-spin{animation:capspin 1s linear infinite}
@keyframes capspin{from{transform:rotate(0)}to{transform:rotate(360deg)}}
.cap-press{transform:translateY(0);transition:transform .08s ease}
.cap-press:active{transform:translateY(1px)}
.toast{position:fixed;left:50%;transform:translateX(-50%);bottom:1.5rem}