.nubi-voice-btn{
    position:fixed; right:20px; bottom:20px;
    width:64px; height:64px; border-radius:999px;
    border:none; cursor:pointer;
    background:#0b1220;
    box-shadow:0 10px 30px rgba(0,0,0,.25);
    display:grid; place-items:center;
    overflow:hidden;
}

.nubi-core{
    width:14px; height:14px; border-radius:999px;
    background:rgba(255,255,255,.9);
    position:relative; z-index:3;
}

.nubi-ring{
    position:absolute; inset:-10px;
    border-radius:999px;
    border:2px solid rgba(255,255,255,.35);
    animation: nubiPulse 1.8s ease-in-out infinite;
    z-index:1;
}
.nubi-ring2{ inset:-18px; animation-delay:.3s; opacity:.7; }

.is-idle .nubi-ring, .is-idle .nubi-ring2{ animation:none; opacity:.25; }

.is-listening .nubi-ring{ border-color: rgba(0,255,180,.55); }
.is-thinking  .nubi-ring{ border-color: rgba(255,200,0,.55); animation-duration:1.1s; }
.is-speaking  .nubi-ring{ border-color: rgba(120,160,255,.65); animation-duration:.9s; }

@keyframes nubiPulse{
    0%   { transform:scale(.90); opacity:.15; }
    50%  { transform:scale(1.05); opacity:.55; }
    100% { transform:scale(.90); opacity:.15; }
}