/* ---- Bo Robot Animations ---- */

/* Container sizing */
.bo-avatar {
  width: 140px;
  height: 140px;
  flex-shrink: 0;
  overflow: visible;
  position: relative;
}

.bo-avatar.bo-mini {
  width: 80px;
  height: 80px;
}

.bo-avatar.bo-full {
  width: 180px;
  height: 234px;
}

/* ---- Expression cross-fade (targets children inside inline SVG) ---- */
.bo-avatar .expr-face,
.bo-avatar .expr-arms,
.bo-avatar .expr-deco {
  opacity: 0;
  transition: opacity 0.35s cubic-bezier(0.4, 0, 0.2, 1);
}

.bo-avatar[data-expression="neutral"] .expr-neutral { opacity: 1; }
.bo-avatar[data-expression="happy"] .expr-happy { opacity: 1; }
.bo-avatar[data-expression="confused"] .expr-confused { opacity: 1; }
.bo-avatar[data-expression="thinking"] .expr-thinking { opacity: 1; }
.bo-avatar[data-expression="surprised"] .expr-surprised { opacity: 1; }
.bo-avatar[data-expression="sad"] .expr-sad { opacity: 1; }

/* ---- Animations (target SVG child) ---- */
/* Float (idle bobbing) */
.bo-avatar.float > svg {
  animation: bo-float 3s ease-in-out infinite;
}

@keyframes bo-float {
  0%, 100% { transform: translateY(0); }
  50% { transform: translateY(-8px); }
}

/* Celebrate bounce */
.bo-avatar.bounce > svg {
  animation: bo-bounce 0.5s ease-in-out infinite alternate;
}

@keyframes bo-bounce {
  from { transform: translateY(0) scale(1); }
  to { transform: translateY(-15px) scale(1.06); }
}

/* Talking — gentle pulse on speech */
.bo-avatar.talking > svg {
  animation: bo-talk 0.4s ease-in-out infinite alternate;
}

@keyframes bo-talk {
  from { transform: scale(1); }
  to { transform: scale(1.03); }
}


