/* ── VIVIAN — DICTATION ── */
/* © 2026 Vivere. Proprietary and confidential. */

.vivian-mic-btn {
  position: fixed; bottom: 26px; right: 26px; z-index: 900;
  width: 52px; height: 52px; border-radius: 50%;
  background: var(--card); border: 1px solid var(--border-b);
  box-shadow: 0 6px 20px rgba(0,0,0,0.4);
  display: flex; align-items: center; justify-content: center;
  font-size: 20px; cursor: pointer; transition: all 0.15s;
}
.vivian-mic-btn:hover { border-color: var(--purple-b); transform: scale(1.05); }
.vivian-mic-btn.listening {
  background: var(--red-bg); border-color: rgba(224,82,82,0.5);
  animation: mic-pulse 1.4s infinite;
}
.vivian-mic-btn.unsupported { opacity: 0.4; cursor: not-allowed; }
@keyframes mic-pulse {
  0%   { box-shadow: 0 6px 20px rgba(0,0,0,0.4), 0 0 0 0 rgba(224,82,82,0.4); }
  70%  { box-shadow: 0 6px 20px rgba(0,0,0,0.4), 0 0 0 14px rgba(224,82,82,0); }
  100% { box-shadow: 0 6px 20px rgba(0,0,0,0.4), 0 0 0 0 rgba(224,82,82,0); }
}

.vivian-mic-status {
  position: fixed; bottom: 88px; right: 26px; z-index: 900;
  background: var(--card); border: 1px solid var(--border-b); border-radius: 8px;
  padding: 8px 14px; font-size: 12px; color: var(--text-m);
  box-shadow: 0 6px 20px rgba(0,0,0,0.4);
  display: flex; align-items: center; gap: 8px;
}
.vivian-mic-status .dot { width: 7px; height: 7px; border-radius: 50%; background: var(--red); animation: chatpulse 1s infinite ease-in-out; }
