.assistant-launcher {
  position: relative;
  isolation: isolate;
  animation: assistantFloat 3.4s ease-in-out infinite;
}

.assistant-launcher::before,
.assistant-launcher::after {
  content: "";
  position: absolute;
  inset: -1px;
  border: 1px solid var(--lime);
  border-radius: 99px;
  z-index: -1;
  pointer-events: none;
  animation: assistantRing 2.6s ease-out infinite;
}

.assistant-launcher::after { animation-delay: 1.3s; }
.assistant-launcher > span {
  animation: assistantSpark 2.2s ease-in-out infinite;
}

.assistant-launcher b { position: relative; overflow: hidden; }
.assistant-launcher b::after {
  content: "";
  position: absolute;
  inset: -4px -20px;
  background: linear-gradient(105deg, transparent 20%, rgba(255,255,255,.75) 48%, transparent 74%);
  transform: translateX(-140%);
  animation: assistantShimmer 3.8s ease-in-out infinite;
}

.assistant-panel:not([hidden]) { animation: assistantOpen .32s cubic-bezier(.2,.8,.2,1); transform-origin: left bottom; }
html[dir="rtl"] .assistant-panel:not([hidden]) { transform-origin: right bottom; }

@keyframes assistantFloat { 50% { transform: translateY(-6px); } }
@keyframes assistantRing { 0% { opacity:.65; transform:scale(1); } 80%,100% { opacity:0; transform:scale(1.3,1.55); } }
@keyframes assistantSpark { 50% { transform:rotate(22deg) scale(1.25); filter:drop-shadow(0 0 6px currentColor); } }
@keyframes assistantShimmer { 45%,100% { transform:translateX(160%); } }
@keyframes assistantOpen { from { opacity:0; transform:translateY(14px) scale(.94); } to { opacity:1; transform:none; } }

html[data-theme="light"] .assistant-launcher::before,
html[data-theme="light"] .assistant-launcher::after { border-color:#1c211d; }

@media (prefers-reduced-motion: reduce) {
  .assistant-launcher,
  .assistant-launcher::before,
  .assistant-launcher::after,
  .assistant-launcher > span,
  .assistant-launcher b::after,
  .assistant-panel:not([hidden]) { animation:none; }
}
