.assistant-orb {
  --orb-radius: 6px;
  --orb-dot-size: 4.4px;
  --orb-scale: 1;
  --orb-flow-duration: 1.72s;
  position: relative;
  width: 34px;
  height: 34px;
  display: block;
  transform: translate3d(0, 0, 0) scale(var(--orb-scale));
  transform-origin: 50% 50%;
  transition: transform 180ms ease, filter 180ms ease;
  backface-visibility: hidden;
  overflow: visible;
  will-change: transform;
}

.assistant-message-ai.is-past-context .assistant-orb {
  --orb-scale: 0.88;
  opacity: 0.48;
}

.assistant-orb::before {
  content: "";
  position: absolute;
  inset: 3px;
  border-radius: 999px;
  background:
    radial-gradient(circle, rgba(255, 255, 255, 0.18) 0 16%, rgba(226, 232, 240, 0.08) 42%, transparent 68%);
  filter: blur(6px);
  opacity: 0.58;
  transform: scale(0.86);
  transition: opacity 180ms ease, transform 180ms ease;
}

.assistant-message-ai.is-past-context .assistant-orb::before {
  background:
    radial-gradient(circle, rgba(148, 163, 184, 0.12) 0 24%, rgba(148, 163, 184, 0.04) 46%, transparent 72%);
  opacity: 0.24;
  filter: blur(4px);
  transform: scale(0.78);
}

.assistant-orb span {
  position: absolute;
  left: 50%;
  top: 50%;
  width: var(--orb-dot-size);
  height: var(--orb-dot-size);
  border-radius: 999px;
  background:
    radial-gradient(circle at 32% 28%, rgba(255, 255, 255, 1) 0 24%, rgba(248, 250, 252, 0.96) 42%, rgba(226, 232, 240, 0.9) 100%);
  box-shadow:
    0 0 5px rgba(255, 255, 255, 0.28),
    0 0 8px rgba(226, 232, 240, 0.12);
  transform: translate3d(-50%, -50%, 0) translate3d(var(--x), var(--y), 0);
  transform-origin: 50% 50%;
  transition:
    opacity 180ms ease,
    transform 180ms ease,
    box-shadow 180ms ease;
  backface-visibility: hidden;
  will-change: transform, opacity;
}

.assistant-message-ai.is-past-context .assistant-orb span {
  background: rgba(148, 163, 184, 0.64);
  box-shadow: 0 0 4px rgba(148, 163, 184, 0.14);
  opacity: 0.62;
}

.assistant-orb span:nth-child(1) {
  --x: 0px;
  --y: calc(var(--orb-radius) * -1);
  --x-a: 0px;
  --y-a: calc(var(--orb-radius) * -1);
  --x-b: calc(var(--orb-radius) * 0.8660254);
  --y-b: calc(var(--orb-radius) * 0.5);
  --x-c: calc(var(--orb-radius) * -0.8660254);
  --y-c: calc(var(--orb-radius) * 0.5);
}

.assistant-orb span:nth-child(2) {
  --x: calc(var(--orb-radius) * 0.8660254);
  --y: calc(var(--orb-radius) * 0.5);
  --x-a: calc(var(--orb-radius) * 0.8660254);
  --y-a: calc(var(--orb-radius) * 0.5);
  --x-b: calc(var(--orb-radius) * -0.8660254);
  --y-b: calc(var(--orb-radius) * 0.5);
  --x-c: 0px;
  --y-c: calc(var(--orb-radius) * -1);
}

.assistant-orb span:nth-child(3) {
  --x: calc(var(--orb-radius) * -0.8660254);
  --y: calc(var(--orb-radius) * 0.5);
  --x-a: calc(var(--orb-radius) * -0.8660254);
  --y-a: calc(var(--orb-radius) * 0.5);
  --x-b: 0px;
  --y-b: calc(var(--orb-radius) * -1);
  --x-c: calc(var(--orb-radius) * 0.8660254);
  --y-c: calc(var(--orb-radius) * 0.5);
}

.assistant-message-ai.is-past-context .assistant-orb span:nth-child(1),
.assistant-message-ai.is-past-context .assistant-orb span:nth-child(2),
.assistant-message-ai.is-past-context .assistant-orb span:nth-child(3) {
  background: rgba(148, 163, 184, 0.66);
}

.assistant-message.is-loading .assistant-orb {
  --orb-radius: 8px;
  --orb-scale: 1.06;
}

.assistant-message-ai.is-loading .assistant-orb {
  opacity: 1;
}

.assistant-message.is-loading .assistant-orb::before {
  opacity: 0.92;
  transform: scale(1.08);
  animation: assistant-orb-field var(--orb-flow-duration) cubic-bezier(0.76, 0, 0.24, 1) infinite;
}

.assistant-message.is-loading .assistant-orb span,
.assistant-orb.is-loading span,
.assistant-inline-loading .assistant-orb span {
  animation: assistant-orb-flow var(--orb-flow-duration) cubic-bezier(0.76, 0, 0.24, 1) infinite;
  box-shadow:
    0 0 7px rgba(255, 255, 255, 0.48),
    0 0 11px rgba(226, 232, 240, 0.2);
}

.assistant-orb.is-loading::before,
.assistant-inline-loading .assistant-orb::before {
  opacity: 0.9;
  transform: scale(1.04);
  animation: assistant-orb-field var(--orb-flow-duration) cubic-bezier(0.76, 0, 0.24, 1) infinite;
}

.assistant-message-ai.is-current-context:not(.is-loading) .assistant-orb[data-orb-state="idle"]:not(.is-loading) {
  animation: assistant-orb-idle-drift 4.2s ease-in-out infinite;
  filter: saturate(1.04) brightness(1.03);
}

.assistant-message-ai.is-current-context:not(.is-loading) .assistant-orb[data-orb-state="idle"]:not(.is-loading)::before {
  animation: assistant-orb-idle-field 3.8s ease-in-out infinite;
}

.assistant-message-ai.is-current-context:not(.is-loading) .assistant-orb[data-orb-state="idle"]:not(.is-loading) span {
  animation: assistant-orb-idle-dot 3.1s ease-in-out infinite;
}

.assistant-message-ai.is-current-context:not(.is-loading) .assistant-orb[data-orb-state="idle"]:not(.is-loading) span:nth-child(2) {
  animation-delay: 220ms;
}

.assistant-message-ai.is-current-context:not(.is-loading) .assistant-orb[data-orb-state="idle"]:not(.is-loading) span:nth-child(3) {
  animation-delay: 440ms;
}

.assistant-orb--inline {
  --orb-radius: 5px;
  --orb-dot-size: 3.1px;
  --orb-scale: 1;
  width: 22px;
  height: 22px;
}

.assistant-orb[data-orb-pulse="1"] span {
  animation: assistant-orb-pulse 520ms cubic-bezier(0.16, 1, 0.3, 1);
}

.assistant-message-ai.is-past-context .assistant-orb[data-orb-pulse="1"] span {
  animation: none;
}

@keyframes assistant-orb-spin {
  0% {
    transform: translate3d(0, 0, 0) scale(var(--orb-scale)) rotate(0deg);
  }
  100% {
    transform: translate3d(0, 0, 0) scale(var(--orb-scale)) rotate(360deg);
  }
}

@keyframes assistant-orb-field {
  0%, 100% {
    opacity: 0.54;
    transform: scale(0.82);
    filter: blur(6px);
  }
  14%, 47%, 80% {
    opacity: 0.96;
    transform: scale(1.1);
    filter: blur(7px);
  }
}

@keyframes assistant-orb-flow {
  0%, 100% {
    transform: translate3d(-50%, -50%, 0) translate3d(var(--x-a), var(--y-a), 0);
    opacity: 0.78;
  }
  14%, 19% {
    transform: translate3d(-50%, -50%, 0) translate3d(0, 0, 0);
    opacity: 1;
  }
  33% {
    transform: translate3d(-50%, -50%, 0) translate3d(var(--x-b), var(--y-b), 0);
    opacity: 0.9;
  }
  47%, 52% {
    transform: translate3d(-50%, -50%, 0) translate3d(0, 0, 0);
    opacity: 1;
  }
  66% {
    transform: translate3d(-50%, -50%, 0) translate3d(var(--x-c), var(--y-c), 0);
    opacity: 0.9;
  }
  80%, 85% {
    transform: translate3d(-50%, -50%, 0) translate3d(0, 0, 0);
    opacity: 1;
  }
}

@keyframes assistant-orb-pulse {
  0% {
    transform: translate3d(-50%, -50%, 0) translate3d(calc(var(--x) * 0.72), calc(var(--y) * 0.72), 0);
  }
  58% {
    transform: translate3d(-50%, -50%, 0) translate3d(calc(var(--x) * 1.18), calc(var(--y) * 1.18), 0);
  }
  100% {
    transform: translate3d(-50%, -50%, 0) translate3d(var(--x), var(--y), 0);
  }
}

@keyframes assistant-orb-idle-drift {
  0%, 100% {
    transform: translate3d(0, 0, 0) scale(var(--orb-scale)) rotate(0deg);
  }
  35% {
    transform: translate3d(0, -0.8px, 0) scale(calc(var(--orb-scale) * 1.015)) rotate(1.1deg);
  }
  70% {
    transform: translate3d(0, 0.6px, 0) scale(calc(var(--orb-scale) * 0.99)) rotate(-0.9deg);
  }
}

@keyframes assistant-orb-idle-field {
  0%, 100% {
    opacity: 0.56;
    transform: scale(0.84);
    filter: blur(6px);
  }
  50% {
    opacity: 0.78;
    transform: scale(0.96);
    filter: blur(6.8px);
  }
}

@keyframes assistant-orb-idle-dot {
  0%, 100% {
    opacity: 0.84;
    box-shadow:
      0 0 6px rgba(255, 255, 255, 0.34),
      0 0 10px rgba(226, 232, 240, 0.16);
    transform: translate3d(-50%, -50%, 0) translate3d(var(--x), var(--y), 0) scale(0.96);
  }
  50% {
    opacity: 1;
    box-shadow:
      0 0 7px rgba(255, 255, 255, 0.46),
      0 0 11px rgba(226, 232, 240, 0.22);
    transform: translate3d(-50%, -50%, 0) translate3d(var(--x), var(--y), 0) scale(1.03);
  }
}

@media (prefers-reduced-motion: reduce) {
  .assistant-orb,
  .assistant-orb::before,
  .assistant-orb span {
    animation-duration: 0.001ms;
    animation-iteration-count: 1;
  }
}
