/* Voice interaction states for the tutor orb */

/* Listening — green-tinted glow, gentle scale */
.orb-voice-listening .orb-glow {
  background: radial-gradient(circle,
    rgba(52, 211, 153, 0.3) 0%,
    rgba(52, 211, 153, 0.1) 50%,
    transparent 70%);
  animation: orbListenPulse 1.5s ease-in-out infinite;
}
.orb-voice-listening .orb-sphere {
  animation: orbListenScale 2s ease-in-out infinite;
  box-shadow:
    inset 0 -8px 20px rgba(0, 0, 0, 0.25),
    inset 0 4px 12px rgba(255, 255, 255, 0.1),
    0 0 0 1px rgba(52, 211, 153, 0.4),
    0 8px 32px rgba(52, 211, 153, 0.3),
    0 20px 60px rgba(52, 211, 153, 0.15);
}

/* Processing — rotating glow while LLM thinks */
.orb-voice-processing .orb-glow {
  background: radial-gradient(circle,
    rgba(59, 130, 246, 0.35) 0%,
    rgba(59, 130, 246, 0.1) 50%,
    transparent 70%);
  animation: orbProcessSpin 1.2s linear infinite;
}
.orb-voice-processing .orb-sphere {
  animation: orbProcessPulse 0.8s ease-in-out infinite;
}

/* Speaking — rhythmic pulse */
.orb-voice-speaking .orb-glow {
  background: radial-gradient(circle,
    rgba(96, 165, 250, 0.4) 0%,
    rgba(96, 165, 250, 0.12) 50%,
    transparent 70%);
  animation: orbSpeakPulse 0.6s ease-in-out infinite;
}
.orb-voice-speaking .orb-sphere {
  animation: orbSpeakScale 0.6s ease-in-out infinite;
}

/* Connecting — subtle breathe */
.orb-voice-connecting .orb-sphere {
  animation: orbProcessPulse 1.2s ease-in-out infinite;
}

@keyframes orbListenPulse {
  0%, 100% { opacity: 0.7; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.1); }
}
@keyframes orbListenScale {
  0%, 100% { transform: scale(1.02); }
  50% { transform: scale(1.06); }
}
@keyframes orbProcessSpin {
  0% { transform: rotate(0deg) scale(1.05); opacity: 0.8; }
  50% { opacity: 1; }
  100% { transform: rotate(360deg) scale(1.05); opacity: 0.8; }
}
@keyframes orbProcessPulse {
  0%, 100% { transform: scale(1); opacity: 0.85; }
  50% { transform: scale(1.04); opacity: 1; }
}
@keyframes orbSpeakPulse {
  0%, 100% { opacity: 0.8; transform: scale(1); }
  50% { opacity: 1; transform: scale(1.15); }
}
@keyframes orbSpeakScale {
  0%, 100% { transform: scale(1); }
  50% { transform: scale(1.04); }
}

/* Voice transcript below orb */
.voice-transcript {
  font-family: 'DM Sans', sans-serif;
  font-size: 0.875rem;
  color: var(--text-secondary);
  text-align: center;
  max-width: 320px;
  min-height: 1.5em;
  transition: opacity 0.3s ease;
  margin-top: 0.25rem;
}
