.bubble {
  display: inline-flex;
  align-items: flex-start;
  gap: var(--spacing-sm, 10px);
  width: fit-content;
  max-width: min(72vw, 280px);
  padding: var(--spacing-md, 12px) clamp(12px, 2.593vw, 14px);
  border-radius: var(--responsive-card-radius-sm, 20px);
  box-shadow: var(--shadow-input-box, 0 1px 2px rgba(0, 0, 0, 0.1));
}

.bubbleAi {
  border-top-left-radius: 0;
  background: #ffffff;
  color: var(--color-text-foreground, #171717);
}

.bubbleUser {
  border-top-right-radius: 0;
  background: linear-gradient(
    to right,
    var(--color-button-gradient-start, #ff67e0),
    var(--color-button-gradient-end, #ff52a2)
  );
  color: #ffffff;
}

.locked {
  width: min(72vw, 280px);
  border: 1px solid rgba(246, 87, 160, 0.2);
  background:
    linear-gradient(180deg, rgba(255, 244, 248, 0.95), rgba(255, 255, 255, 0.95)),
    #ffffff;
  color: #3c3b3b;
}

.playButton {
  display: inline-flex;
  flex: 0 0 auto;
  align-items: center;
  justify-content: center;
  width: clamp(32px, 6.296vw, 34px);
  height: clamp(32px, 6.296vw, 34px);
  border: 0;
  border-radius: 50%;
  background: rgba(246, 87, 160, 0.14);
  color: #f657a0;
  cursor: pointer;
}

.bubbleUser .playButton {
  background: rgba(255, 255, 255, 0.22);
  color: #ffffff;
}

.locked .playButton {
  background: linear-gradient(135deg, #ff8fc7 0%, #f657a0 100%);
  color: #ffffff;
}

.playButton:disabled {
  cursor: not-allowed;
  opacity: 0.6;
}

.playButton:focus-visible {
  outline: 2px solid currentColor;
  outline-offset: 2px;
}

.body {
  display: flex;
  min-width: 0;
  flex: 0 1 auto;
  flex-direction: column;
  gap: var(--spacing-sm, 8px);
}

.locked .body {
  flex: 1 1 auto;
}

.wave {
  display: flex;
  align-items: center;
  gap: var(--responsive-inline-gap-xs, 4px);
  height: clamp(32px, 6.296vw, 34px);
}

.wave span {
  display: block;
  width: clamp(3px, 0.741vw, 4px);
  border-radius: 999px;
  background: currentColor;
  opacity: 0.72;
}

.wave span:nth-child(1) {
  height: clamp(10px, 2.222vw, 12px);
}

.wave span:nth-child(2) {
  height: clamp(18px, 4.074vw, 22px);
}

.wave span:nth-child(3) {
  height: clamp(24px, 5.556vw, 30px);
}

.wave span:nth-child(4) {
  height: clamp(15px, 3.333vw, 18px);
}

.wave span:nth-child(5) {
  height: clamp(21px, 4.815vw, 26px);
}

.error {
  margin: 0;
  color: var(--color-error, #ff4d4f);
  font-size: var(--responsive-micro, var(--font-size-sm, 12px));
  line-height: 1.4;
}

.bubbleUser .error {
  color: #ffffff;
}

.hint {
  margin: 0;
  color: #3c3b3b;
  font-size: var(--responsive-body, 14px);
  line-height: 1.4;
}

.unlockButton {
  align-self: flex-start;
  margin-top: 2px;
  padding:
    clamp(8px, 1.667vw, 9px)
    clamp(12px, 2.593vw, 14px);
  border: 0;
  border-radius: 999px;
  background: linear-gradient(90deg, #ff67e0, #ff52a2);
  color: #ffffff;
  cursor: pointer;
  font-size: var(--responsive-body, 14px);
  font-weight: 700;
}

.unlockButton:disabled {
  cursor: not-allowed;
  opacity: 0.65;
}

.unlockButton:focus-visible {
  outline: 2px solid #f657a0;
  outline-offset: 3px;
}
