/* Living orb: the inner gradient slowly flows and swirls.
   Only transform is animated (compositor-only, no repaint), so it runs at 60fps with near-zero CPU.
   Palette: #B9CAF4 -> #7D97C7 with mist #EAF0FE / #E1E8F7 highlights. Never #4E66A0. */
.orb-live { position: relative; display: block; width: 40px; height: 40px; }
body.one .orb-live { width: 48px; height: 48px; }
@media (max-height: 700px) { body.one .orb-live { width: 40px; height: 40px; } }
.orb-live .orb-disc {
  position: absolute; inset: 4%; border-radius: 50%; overflow: hidden;
  background: linear-gradient(135deg, #B9CAF4 0%, #7D97C7 100%);
  isolation: isolate; transform: translateZ(0);
  box-shadow: 0 6px 18px rgba(125, 151, 199, .28);
}
.orb-live .orb-a, .orb-live .orb-b, .orb-live .orb-c { position: absolute; border-radius: 50%; will-change: transform; }
.orb-live .orb-a {
  inset: -45%;
  background:
    radial-gradient(circle at 34% 30%, rgba(234, 240, 254, .95) 0%, rgba(234, 240, 254, 0) 34%),
    radial-gradient(circle at 70% 72%, rgba(125, 151, 199, .95) 0%, rgba(125, 151, 199, 0) 42%);
  animation: orbSwirl 16s linear infinite;
}
.orb-live .orb-b {
  inset: -30%;
  background: conic-gradient(from 0deg, rgba(185, 202, 244, 0), rgba(225, 232, 247, .7), rgba(185, 202, 244, 0) 40%, rgba(125, 151, 199, .55) 70%, rgba(185, 202, 244, 0));
  animation: orbSwirlBack 16s linear infinite;
}
.orb-live .orb-c {
  width: 70%; height: 70%; left: 4%; top: 2%;
  background: radial-gradient(circle, rgba(234, 240, 254, .55) 0%, rgba(234, 240, 254, 0) 65%);
  animation: orbBreath 8s ease-in-out infinite;
}
.orb-live svg { position: absolute; inset: 0; width: 100%; height: 100%; }
@keyframes orbSwirl { from { transform: rotate(0deg); } to { transform: rotate(360deg); } }
@keyframes orbSwirlBack { from { transform: rotate(360deg); } to { transform: rotate(0deg); } }
@keyframes orbBreath { 0%, 100% { transform: translate(0, 0) scale(1); } 50% { transform: translate(22%, 26%) scale(.85); } }
@media (prefers-reduced-motion: reduce) {
  .orb-live .orb-a, .orb-live .orb-b, .orb-live .orb-c { animation: none; }
}

/* Voice mark: white rounded bars + dot; geometry written by orb-live.js every frame */
.orb-live .orb-wave rect, .orb-live .orb-wave circle { fill: #fff; }
