Files
cozsweet-frontend-nextjs/src/app/chat/components/voice-bubble.module.css
T

154 lines
2.9 KiB
CSS

.bubble {
display: flex;
align-items: flex-start;
gap: var(--spacing-sm, 10px);
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 {
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: 1 1 auto;
flex-direction: column;
gap: var(--spacing-sm, 8px);
}
.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;
}