.orbyte-si {
  --orbyte-avatar-size: 60px;
  --orbyte-flow-speed: 12s;
  --orbyte-flow-inset: -8px;
  --orbyte-color-1: #70e9ff;
  --orbyte-color-2: #3f8cff;
  --orbyte-color-3: #5865ff;
  --orbyte-color-4: #8b5cff;
  --orbyte-feature-color: #70e9ff;
  --orbyte-core-color: #ffffff;
  --orbyte-inner-circle-color-1: #f1f6ff;
  --orbyte-inner-circle-color-2: #728ab0;
  --orbyte-inner-circle-color-3: #17243a;
  --orbyte-inner-circle-color-4: #8091b3;
  --orbyte-face-depth-shade: 3.5%;
  --orbyte-face-depth-shadow: 7.7%;
  --orbyte-face-reflection-soft: 14.4%;
  --orbyte-face-reflection-strong: 32.4%;
  --orbyte-face-reflection-inset: 11.7%;
  --orbyte-face-reflection-opacity: .45;
  --orbyte-mouth-width: 10.5px;
  --orbyte-mouth-curve: 3.75px;
  --orbyte-mouth-thickness: 1.125px;
  --orbyte-mouth-opacity: .78;
  --orbyte-eye-width: 3.75px;
  --orbyte-eye-height: 11.25px;
  --orbyte-eye-radius: 999px;
  --orbyte-glow-opacity: .5;
  --orbyte-ring-glow: .45;
  --orbyte-offset-side: 25px;
  --orbyte-offset-bottom: 25px;
  position: fixed;
  bottom: var(--orbyte-offset-bottom);
  z-index: 2147483001;
}
.orbyte-si--left { left: var(--orbyte-offset-side); }
.orbyte-si--right { right: var(--orbyte-offset-side); }

.orbyte-flow {
  position: relative;
  display: block;
  width: var(--orbyte-avatar-size);
  height: var(--orbyte-avatar-size);
  padding: 0;
  border: 0;
  border-radius: 50%;
  background: transparent;
  cursor: pointer;
  filter: drop-shadow(0 7px 12px rgba(45, 71, 120, .22));
  isolation: isolate;
}
.orbyte-flow:focus-visible {
  outline: 2px solid var(--orbyte-color-1);
  outline-offset: 10px;
}
.orbyte-flow__animation {
  position: absolute;
  inset: var(--orbyte-flow-inset);
  border-radius: 50%;
  animation: orbyte-flow-rotate var(--orbyte-flow-speed) linear infinite;
  will-change: transform;
  pointer-events: none;
}
.orbyte-flow__glow,
.orbyte-flow__ring {
  position: absolute;
  border-radius: 50%;
  background: conic-gradient(from -35deg, var(--orbyte-color-1) 0deg, var(--orbyte-color-2) 85deg, var(--orbyte-color-3) 155deg, var(--orbyte-color-4) 235deg, var(--orbyte-color-2) 305deg, var(--orbyte-color-1) 360deg);
}
.orbyte-flow__glow {
  inset: -2px;
  -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 10px), #000 calc(100% - 9px), #000 calc(100% - 2px), transparent 100%);
  mask: radial-gradient(farthest-side, transparent calc(100% - 10px), #000 calc(100% - 9px), #000 calc(100% - 2px), transparent 100%);
  filter: blur(5px);
  opacity: var(--orbyte-glow-opacity);
}
.orbyte-flow__ring {
  filter: drop-shadow(0 0 2px color-mix(in srgb, var(--orbyte-color-1) calc(var(--orbyte-ring-glow) * 100%), transparent)) drop-shadow(0 0 4px color-mix(in srgb, var(--orbyte-color-3) 25%, transparent));
}
.orbyte-flow__ring::after {
  content: "";
  position: absolute;
  inset: 0;
  border-radius: inherit;
  background: linear-gradient(135deg, rgba(255,255,255,.75), transparent 27%, transparent 68%, rgba(255,255,255,.18));
  mix-blend-mode: screen;
  opacity: .48;
}
.orbyte-flow__ring--outer { inset: 0; opacity: .95; transform: scaleX(.98) rotate(-8deg); -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 3px)); mask: radial-gradient(farthest-side, transparent calc(100% - 4px), #000 calc(100% - 3px)); }
.orbyte-flow__ring--middle { inset: 5px; opacity: .78; transform: scaleX(1.04) rotate(16deg); -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 2px)); mask: radial-gradient(farthest-side, transparent calc(100% - 3px), #000 calc(100% - 2px)); }
.orbyte-flow__ring--inner { inset: 10px; opacity: .54; transform: scaleX(.96) rotate(33deg); -webkit-mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #000 calc(100% - 1px)); mask: radial-gradient(farthest-side, transparent calc(100% - 2px), #000 calc(100% - 1px)); }
.orbyte-flow__metal {
  position: absolute;
  inset: -3px;
  border-radius: 50%;
  background:
    radial-gradient(circle at 28% 20%, rgba(255,255,255,.55), transparent 11%),
    linear-gradient(
      135deg,
      var(--orbyte-inner-circle-color-1),
      var(--orbyte-inner-circle-color-2) 28%,
      var(--orbyte-inner-circle-color-3) 66%,
      var(--orbyte-inner-circle-color-4)
    );
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.28), 0 0 10px rgba(80,132,255,.18);
}
.orbyte-flow__core {
  position: absolute;
  inset: 3px;
  display: grid;
  place-items: center;
  overflow: hidden;
  border-radius: 50%;
  background:
    radial-gradient(
      circle at 28% 20%,
      color-mix(in srgb, white var(--orbyte-face-reflection-strong), transparent) 0%,
      color-mix(in srgb, white var(--orbyte-face-reflection-soft), transparent) 18%,
      transparent 42%
    ),
    radial-gradient(
      circle at 68% 82%,
      color-mix(in srgb, black var(--orbyte-face-depth-shade), transparent) 0%,
      transparent 48%
    ),
    linear-gradient(
      155deg,
      color-mix(in srgb, var(--orbyte-core-color) 100%, white 0%) 0%,
      var(--orbyte-core-color) 48%,
      color-mix(in srgb, var(--orbyte-core-color), black var(--orbyte-face-depth-shade)) 100%
    );
  box-shadow:
    inset 0 0 0 1px color-mix(in srgb, white 30%, transparent),
    inset 0 -5px 12px color-mix(in srgb, black var(--orbyte-face-depth-shadow), transparent),
    inset 0 3px 7px color-mix(in srgb, white var(--orbyte-face-reflection-inset), transparent);
}
.orbyte-flow__core::before {
  content: "";
  position: absolute;
  inset: 5%;
  border-radius: 50%;
  pointer-events: none;
  background: linear-gradient(135deg, color-mix(in srgb, white var(--orbyte-face-reflection-strong), transparent), transparent 36%);
  opacity: var(--orbyte-face-reflection-opacity);
  mix-blend-mode: screen;
}

.orbyte-flow__eyes { position: relative; z-index: 2; display: flex; gap: calc(var(--orbyte-avatar-size) * .175); transform: translateY(calc(var(--orbyte-avatar-size) * -.03)); }
.orbyte-flow__eye {
  width: var(--orbyte-eye-width);
  height: var(--orbyte-eye-height);
  border-radius: var(--orbyte-eye-radius);
  background: var(--orbyte-feature-color);
  box-shadow: none;
}
.orbyte-flow__mouth {
  position: absolute;
  z-index: 2;
  top: calc(50% + var(--orbyte-avatar-size) * .095);
  left: 50%;
  width: var(--orbyte-mouth-width);
  height: var(--orbyte-mouth-curve);
  overflow: visible;
  transform: translateX(-50%);
  opacity: var(--orbyte-mouth-opacity);
  filter:
    drop-shadow(0 0 2px var(--orbyte-feature-color))
    drop-shadow(0 0 4px color-mix(in srgb, var(--orbyte-feature-color) 28%, transparent));
}
.orbyte-flow__mouth-path {
  fill: none;
  stroke: var(--orbyte-feature-color);
  stroke-width: var(--orbyte-mouth-thickness);
  stroke-linecap: round;
  stroke-linejoin: round;
  vector-effect: non-scaling-stroke;
}


.orbyte-si--light .orbyte-flow { filter: drop-shadow(0 7px 12px rgba(18, 35, 55, .25)); }
.orbyte-si--dark .orbyte-flow { filter: drop-shadow(0 7px 14px rgba(0, 0, 0, .55)); }

/* The real Social Intents button remains available for click forwarding. */
#silc-btn { opacity: 0 !important; pointer-events: none !important; }

@keyframes orbyte-flow-rotate { to { transform: rotate(360deg); } }
@media (prefers-reduced-motion: reduce) { .orbyte-flow__animation { animation: none; } }

/* Hide the Social Intents chat while it is being preloaded in the background. */
body.orbyte-si-warming #siWidget-chat {
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}

/* Pair with social-intents/invite-layout.css. Geometry only: provider keeps
 * display, opacity, transform, visibility, open/close and invite timing. */
#siWidget-chat.siInvite[data-orbyte-si-invite] {
  width: var(--orbyte-invite-width) !important;
  max-width: calc(100% - 16px) !important;
  bottom: var(--orbyte-invite-bottom) !important;
  box-sizing: border-box !important;
  border-radius: 0 !important;
}

/* Keep the avatar and invite available while the full chat is loading.
 * visibility/opacity preserve the provider's geometry and display checks.
 * A provider error document never receives data-orbyte-si-ready. */
body.orbyte-si-loading-guard #siWidget-chat:not(.siInvite):not([data-orbyte-si-ready]),
body.orbyte-si-loading-guard #siWidget-chat:has(> #panel-loading-presales) {
  visibility: hidden !important;
  opacity: 0 !important;
  pointer-events: none !important;
}
